From fa60b5310ef78433162ef193af9cc6aa5df385e6 Mon Sep 17 00:00:00 2001
From: Karim El Jazzar <122301442+JazzarKarim@users.noreply.github.com>
Date: Mon, 26 Feb 2024 13:26:10 -0800
Subject: [PATCH] 18123 rebased legal name FB with main (#626)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* 18027 AGM Location change (#551)

* 18027-agm location details 1

* 18027-agm location details 2

* 18027-agm location details 3

* 18027-update package version

* 18027-agm location details 4

* 18027-agm location details 5

* 18027-agm location details 6

* 18027-agm location details 7

* 18027-agm location details 8

* 18027-agm location details 9

* AGM Location Change First PR (#553)

* AGM Location Change First PR

* small adjustment

* small fixes in response to Sev's comments

* Fixed in response to Sev's comments

* AGM Location Change second PR (#554)

* AGM Location Change second PR

* Fixed unit tests

* fixed in response to Sev's comments

* fixed error text

* AGM Location Change Third PR (#555)

* Created + updated unit tests

* Fixed EntityMenu test from ticket part 1

* Fixed lint errors

* Fixes in response to Sev's comments

* fixed lint issues

* Fixed in reponse to Sev's comments

* removed unnecessary test code

* AGM Location Change 4th and final PR (#556)

* AGM Location Change 4th and final PR

* changed method name

* changed comment

* fixed lint error

* removed unnecessary line

* Fix in response to Sev's comment

* Fixed in response to Sev's comment + simplified logic

* Removed staff payment dialog

* update agm location variable

* AGM Location Change 5th PR for styling issues (#559)

* AGM Location Change 5th PR for styling issues

* fixed left spacing of ripple

* fixed small lint issue

* fixed in response to Sev's comments

* Pre-populate the certify block when logged in user is not staff

* Moved user's full name to store to minimize API calls

* Fixed in response to Sev's comments

* Added optional chaining

* 16764 - Fixed end user certify block

* Reverted currentuser interface + fixed accordingly

* Prevent from showing undefined in certified block

* Prevented undefined from showing in certify block in agm location change

* 18024 Incremental AGM extension work (#558)

- app version = 6.9.5
- imported shared DatePicker component
- renamed a base class
- added a base class
- saved user info into store
- added initial AboutTheBusiness sub-component
- added initial AgmExtensionEvaluation sub-component
- added AgmExtensionHelp sub-component
- added initial ExtensionRequest sub-component
- added VcardTemplate
- updated tooltip text
- updated FF
- added AgmExtEval interface
- renamed RootStateIF -> AuthenticationStateIF
- renamed StateIF -> RootStateIF
- added DateMixin function for DatePicker component
- updated fetchUserInfo to return object (not Axios response)
- added missing default FF
- deleted obsolete dialog, transition, buttons, methods, CSS from AGM Extension
- added help section
- added initial sub-components to AGM Extension
- updated intro text
- updated some whitespace
- updated filing code
- removed delay in mounted() in AGM Extension
- updated onHaveChanges() watcher in AGM Extension
- pre-populated CertifiedBy
- deleted obsolete transition, methods, CSS from AGM Extension
- removed delay in mounted() in AGM Location Chg
- updated onHaveChanges() watcher in AGM Location Chg
- updated unit tests
- misc cleanup

* Make Certify block non-editable if non-staff user (AGM Filings) (#564)

Make certify block non-editable if non-staff user

* feat: digital business card (#566)

* refactor: CredentialsLanding component: add heading card

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add supplemental cards

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add image and word wrapping

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: link styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsStepper component: deprecate routes

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: CredentialsStepper component: function naming

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: split into sub components

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add web socket component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: re-add credential table

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: update types and imports

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add revocation dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add replacement dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: devcontainer config

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: bump version number

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: rename route for specificity

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: ran linter and fixed linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: make interface field optional

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert auto-formatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: contain dialogs for DigitalCredentials component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix code smells

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: address code review comments

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert autoformatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: update wording and styling to align with UX

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: feature flag credentials feature with mixin

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add TOU dialog

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix test failiures and code comments

* chore: cleaup

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: mixin to access digital credential feature

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: entity menu styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add loading indicators to digital credential route pages

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: reset dialog and functions

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: returl null if undefined

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: beef up conditional checks

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* 18284: digital business card (#552)

* refactor: CredentialsLanding component: add heading card

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add supplemental cards

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add image and word wrapping

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: link styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsStepper component: deprecate routes

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: CredentialsStepper component: function naming

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: split into sub components

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add web socket component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: re-add credential table

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: update types and imports

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add revocation dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add replacement dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: devcontainer config

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: bump version number

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: rename route for specificity

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: ran linter and fixed linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: make interface field optional

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert auto-formatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: contain dialogs for DigitalCredentials component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix code smells

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: address code review comments

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert autoformatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: update wording and styling to align with UX

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: feature flag credentials feature with mixin

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add TOU dialog

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix test failiures and code comments

* chore: cleaup

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: mixin to access digital credential feature

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: entity menu styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add loading indicators to digital credential route pages

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: reset dialog and functions

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: returl null if undefined

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: beef up conditional checks

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

---------

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: cleanup spelling and handle edge cases

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: failing tests

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: entity menu logic

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* 18284 Updated CSP (#561)

- added wss://*.gov.bc.ca to connect-src

* refactor: remove websocket support in favour of interval polling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: remove console log

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: address PR comments

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: remove unused import

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: build and test failures

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: digital business card (#562)

* refactor: CredentialsLanding component: add heading card

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add supplemental cards

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add image and word wrapping

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: link styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsStepper component: deprecate routes

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: CredentialsStepper component: function naming

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: split into sub components

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add web socket component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: re-add credential table

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: update types and imports

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add revocation dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add replacement dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: devcontainer config

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: bump version number

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: rename route for specificity

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: ran linter and fixed linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: make interface field optional

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert auto-formatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: contain dialogs for DigitalCredentials component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix code smells

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: address code review comments

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert autoformatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: update wording and styling to align with UX

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: feature flag credentials feature with mixin

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add TOU dialog

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix test failiures and code comments

* chore: cleaup

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: mixin to access digital credential feature

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: entity menu styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add loading indicators to digital credential route pages

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: reset dialog and functions

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: returl null if undefined

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: beef up conditional checks

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: cleanup spelling and handle edge cases

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: failing tests

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: entity menu logic

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: remove websocket support in favour of interval polling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: remove console log

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: address PR comments

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: remove unused import

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: build and test failures

Signed-off-by: Akiff Manji <amanji@petridish.dev>

---------

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* Update EntityMenu.spec.ts

* chore: remove web socket references

Signed-off-by: Akiff Manji <amanji@petridish.dev>

---------

Signed-off-by: Akiff Manji <amanji@petridish.dev>
Co-authored-by: Séverin Beauvais <severinbeauvais@users.noreply.github.com>

* 18161 Updated in response to UXA notes (#567)

* Updated in response to UXA notes

* package version update after rebasing

* 16733 undefined placeholder for federal (#569)

* For PR. Added Federal keyword

* Restored changes

* For PR. Added federal placeholder

* Updated package.json

* Fixed eslindt errors

* Restored space for separation of function

* 18024 Incremental AGM Extension changes (#568)

- app version = 7.0.3
- removed obsolete dialogs + code
- stopped watching changes to certify data
- indent cleanup
- added initial message box + CSS
- app version = 7.0.2
- added NotEligibleExtension dialog
- removed waiveFees=true from AGM Extension
- removed waiveFees=true from AGM Location Chg
- added some unit test suites
- worked on unit tests
- misc cleanup
- used allowable actions value from Legal API
- show alert on error starting app
- fixed some comments
- added showErrors prop to ExtensionRequest component

* 18272 Add unit test for AboutTheBusiness component (#570)

* Add unit test for AboutTheBusiness

* Update AboutTheBusiness tests

* Incorporate Sev's test for AboutTheBusiness

* Check long string date in test

* 17917 Added placeholder for null values (#572)

Updated Version

* 18024 Incremental AGM Extension changes (#571)

* - app version = 7.0.6

- updated ExtensionRequest validation styling

- misc small fixes
- updated unit tests

- added isEligible to interface
- show dialog if not eligible
- expanded unit tests

* wip

* 18513 Fixed jerky expandable help transition (#576)

- app version = 7.0.7
- imported latest ExpandableHelp component (to fix jerky transition)

* Extension Request Scenario 1 (#577)

* Extension Request Scenario 1

* Lots of updates after rebasing

* package version update after rebasing

* cleanup

* Fixed unit test

* Updated in response to Sev's PR comments

* Removed fallback logic from subtractDates in dateutilities

* lint fix

* 17159 Update fetchNameRequest (#579)

update fetchNameRequest

* 18273 Extension Request Scenario 2 (#580)

* Extension Request Scenario 2

* Fix lint issue

* Fix min expiry date

* Restore comment on isFirstAgm

* Move currentDate to data object

* Fix agm year not clearing on firstAgm change

* Update watcher comment

* Update version to 7.0.10 and fix unit tests

* 18469 Capitalize AGM in output titles (#581)

- app version = 7.0.11
- added missing cases for AGM filings
- added special case to convert "Agm" to "AGM"
- fixed a lint warning

* 18274 Updated To Do List and Recent Filing History (#584)

* - app version = 7.0.12

* - added AGM Extension as a filing in Filing History List
- added AGM Extension as cancellable Todo Item
- added AGM Extension filing component
- fixed wrong enum in Entity Menu
- added AGM Extension to Enum Utilities
- fixed misc type warnings

* - added agmExtension fields to ApiFilingIF
- updated AGM Extension filing JSON per schema

* - fixed unit test

* - added FHL unit tests

* 18369 changed the duration of extension messages in accordance with U… (#582)

* 18369 changed the duration of extension messages in accordance with UX design

* fixed tests for new evaluation messages.

* fixed date getters and added expiry date

* fixed getters and fixed typo

* fixed reactive expiry date

* update package json

* 18204 disable restore based on ff (#583)

* For PR added FF parameters

* Fixed && added test cases for historical

* Updated package version

* chore: update content and images (#586)

* refactor: CredentialsLanding component: add heading card

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add supplemental cards

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add image and word wrapping

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: link styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsStepper component: deprecate routes

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: CredentialsStepper component: function naming

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: split into sub components

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add web socket component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: re-add credential table

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: update types and imports

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add revocation dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add replacement dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: devcontainer config

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: bump version number

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: rename route for specificity

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: ran linter and fixed linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: make interface field optional

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert auto-formatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: contain dialogs for DigitalCredentials component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix code smells

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: address code review comments

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert autoformatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: update wording and styling to align with UX

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: feature flag credentials feature with mixin

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add TOU dialog

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix test failiures and code comments

* chore: cleaup

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: mixin to access digital credential feature

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: entity menu styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add loading indicators to digital credential route pages

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: reset dialog and functions

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: returl null if undefined

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: beef up conditional checks

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* 18284: digital business card (#552)

* refactor: CredentialsLanding component: add heading card

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add supplemental cards

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add image and word wrapping

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: link styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsStepper component: deprecate routes

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: CredentialsStepper component: function naming

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: split into sub components

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add web socket component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: re-add credential table

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: update types and imports

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add revocation dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add replacement dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: devcontainer config

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: bump version number

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: rename route for specificity

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: ran linter and fixed linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: make interface field optional

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert auto-formatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: contain dialogs for DigitalCredentials component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix code smells

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: address code review comments

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert autoformatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: update wording and styling to align with UX

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: feature flag credentials feature with mixin

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add TOU dialog

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix test failiures and code comments

* chore: cleaup

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: mixin to access digital credential feature

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: entity menu styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add loading indicators to digital credential route pages

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: reset dialog and functions

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: returl null if undefined

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: beef up conditional checks

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

---------

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: cleanup spelling and handle edge cases

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: failing tests

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: entity menu logic

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* 18284 Updated CSP (#561)

- added wss://*.gov.bc.ca to connect-src

* refactor: remove websocket support in favour of interval polling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: remove console log

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: address PR comments

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: remove unused import

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: build and test failures

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: digital business card (#562)

* refactor: CredentialsLanding component: add heading card

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add supplemental cards

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add image and word wrapping

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: link styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsStepper component: deprecate routes

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: CredentialsStepper component: function naming

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: split into sub components

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add web socket component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: re-add credential table

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: update types and imports

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add revocation dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add replacement dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: devcontainer config

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: bump version number

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: rename route for specificity

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: ran linter and fixed linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: make interface field optional

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert auto-formatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: contain dialogs for DigitalCredentials component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix code smells

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: address code review comments

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert autoformatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: update wording and styling to align with UX

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: feature flag credentials feature with mixin

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add TOU dialog

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix test failiures and code comments

* chore: cleaup

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: mixin to access digital credential feature

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: entity menu styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add loading indicators to digital credential route pages

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: reset dialog and functions

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: returl null if undefined

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: beef up conditional checks

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: cleanup spelling and handle edge cases

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: failing tests

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: entity menu logic

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: remove websocket support in favour of interval polling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: remove console log

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: address PR comments

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: remove unused import

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: build and test failures

Signed-off-by: Akiff Manji <amanji@petridish.dev>

---------

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* Update EntityMenu.spec.ts

* chore: remove web socket references

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix spacing

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: some cleanup

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: credential detailed instructions

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: add tags to components

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: minor content updates

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: update package version

Signed-off-by: Akiff Manji <amanji@petridish.dev>

---------

Signed-off-by: Akiff Manji <amanji@petridish.dev>
Co-authored-by: Séverin Beauvais <severinbeauvais@users.noreply.github.com>

* fix: DBC feature should be available for historical companies (#587)

* refactor: CredentialsLanding component: add heading card

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add supplemental cards

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add image and word wrapping

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: link styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsStepper component: deprecate routes

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: CredentialsStepper component: function naming

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: split into sub components

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add web socket component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: re-add credential table

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: update types and imports

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add revocation dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add replacement dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: devcontainer config

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: bump version number

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: rename route for specificity

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: ran linter and fixed linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: make interface field optional

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert auto-formatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: contain dialogs for DigitalCredentials component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix code smells

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: address code review comments

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert autoformatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: update wording and styling to align with UX

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: feature flag credentials feature with mixin

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add TOU dialog

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix test failiures and code comments

* chore: cleaup

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: mixin to access digital credential feature

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: entity menu styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add loading indicators to digital credential route pages

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: reset dialog and functions

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: returl null if undefined

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: beef up conditional checks

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* 18284: digital business card (#552)

* refactor: CredentialsLanding component: add heading card

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add supplemental cards

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add image and word wrapping

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: link styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsStepper component: deprecate routes

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: CredentialsStepper component: function naming

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: split into sub components

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add web socket component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: re-add credential table

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: update types and imports

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add revocation dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add replacement dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: devcontainer config

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: bump version number

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: rename route for specificity

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: ran linter and fixed linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: make interface field optional

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert auto-formatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: contain dialogs for DigitalCredentials component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix code smells

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: address code review comments

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert autoformatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: update wording and styling to align with UX

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: feature flag credentials feature with mixin

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add TOU dialog

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix test failiures and code comments

* chore: cleaup

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: mixin to access digital credential feature

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: entity menu styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add loading indicators to digital credential route pages

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: reset dialog and functions

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: returl null if undefined

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: beef up conditional checks

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

---------

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: cleanup spelling and handle edge cases

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: failing tests

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: entity menu logic

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* 18284 Updated CSP (#561)

- added wss://*.gov.bc.ca to connect-src

* refactor: remove websocket support in favour of interval polling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: remove console log

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: address PR comments

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: remove unused import

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: build and test failures

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: digital business card (#562)

* refactor: CredentialsLanding component: add heading card

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add supplemental cards

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add image and word wrapping

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: link styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsStepper component: deprecate routes

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: CredentialsStepper component: function naming

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: split into sub components

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add web socket component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: re-add credential table

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: update types and imports

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add revocation dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add replacement dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: devcontainer config

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: bump version number

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: rename route for specificity

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: ran linter and fixed linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: make interface field optional

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert auto-formatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: contain dialogs for DigitalCredentials component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix code smells

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: address code review comments

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert autoformatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: update wording and styling to align with UX

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: feature flag credentials feature with mixin

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add TOU dialog

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix test failiures and code comments

* chore: cleaup

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: mixin to access digital credential feature

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: entity menu styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add loading indicators to digital credential route pages

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: reset dialog and functions

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: returl null if undefined

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: beef up conditional checks

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: cleanup spelling and handle edge cases

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: failing tests

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: entity menu logic

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: remove websocket support in favour of interval polling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: remove console log

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: address PR comments

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: remove unused import

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: build and test failures

Signed-off-by: Akiff Manji <amanji@petridish.dev>

---------

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* Update EntityMenu.spec.ts

* chore: remove web socket references

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix spacing

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: some cleanup

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: credential detailed instructions

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: add tags to components

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: minor content updates

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: update package version

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: DBC feature should be available for historical organization

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: move logic into getter

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: DBC feature should only be available to BCSC user

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: update package version

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: update package lock file

Signed-off-by: Akiff Manji <amanji@petridish.dev>

---------

Signed-off-by: Akiff Manji <amanji@petridish.dev>
Co-authored-by: Séverin Beauvais <severinbeauvais@users.noreply.github.com>

* 18273+18558 Extension Request Cleanup and Tests (#585)

* Restore comment on isFirstAgm

* Extension Request Cleanup and Tests

* Update comment

* Use isFirstAgm from data for validity

* Remove debugging code

* Fix initial state on agm extension evaluation

* Fix typo

* Set missing values for EmptyAgmExtEval

* Add better validation for AGM extension request

* Prevent future year for agm year

* Update version to 7.0.17

* Fix some of the unit tests

* Removed impossible test scenario

* Add overflow-auto class

* Update date-picker version to 1.2.38

* Remove optional from agm extension interface

* Remove console.log

* 18024 - Fixed AGM Extensions in TODO List (#591)

* 18273+18558 Update Extension Request component UI (#592)

* Extension Request Cleanup and Tests

* Remove debugging code

* Remove optional from agm extension interface

* Remove console.log

* Update Extension Request component UI

* 18534 Changes to support amalgamation applications (#590)

* - app version = 7.0.20
- updated some shared imports
- added amalgamation as supported filing type
- added amalgamation template to Filing History List
- added amalgamation application to Todo List
- added amalgamation sub-types to enum
- added amalgamation to API Filing interface
- added amalgamation to Task Todo interface
- added an enum mixin method
- added enum utilities methods
- updated filingTypeToName()
- replaced overly complex "currentFilingStatus" with filing id check
- refactored entityStatus to identify the application type (amal/IA/reg)
- updated unit tests

* - applied fix for #18736

* - added displayName to draft app code
- used displayName in TodoList.vue
- used displayName in EntityHeader.vue

* - added check for amalgamation type

* 18024 Finish AGM Extension UI implementation  (#594)

* Fix AGM extension api payload

* Update version to 7.0.21

* Fix unit test

* feat: digital credentials gate (#595)

* feat: gate digital credentials from API

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: bump package version

Signed-off-by: Akiff Manji <amanji@petridish.dev>

---------

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* 18534 Amalg unit tests + small fixes + more typing (#596)

* - app version = 7.0.23
- enabled strict typing
- misc small fixes/cleanup
- fixed filed IA blurb
- added amalgamation allowable action
- added unit tests
- added some typing to unit tests

* wip

* 18782 fix error in wrong agm due date (#598)

fix error in wrong agm due date

* 17869 - Adding CFS account number BUSINESS-FILINGS-UI (#565)

* 17869 - Adding CFS account number BUSINESS-FILINGS-UI

Signed-off-by: AbrahamRostampoor <Mohammadebrahim.Rostampoor@gov.bc.ca>

* cfs Update

* Latest Updates

* Formatting

* Updated package.json and package-lock.json version number

---------

Signed-off-by: AbrahamRostampoor <Mohammadebrahim.Rostampoor@gov.bc.ca>

* 18833 agm ext calc (#599)

* 18833-AGM-extension-calculation

* Updated package.json

* Added getter that takes argument for AGM year. Working test case for getTotalAgmExtension method

* 18805+18979 Amalgamate Button + Moved to amalgamationApplication + Selection Panel (#600)

* Implemented Amalgamate button + changed amalgamation to amalgamationApplication

* Implemented Amalgamation Selection Panel

* Updated package version after rebase

* Added safe value + deleted unnecessary comment

* Updated in response to Sev's comments

* another small update in response to Sev's comment

* missing import

* small updates in response to Sev's comment

* removed unused imports

* changed disabled condition

* Create draft amalgamation + redirect + misc. fixes/updates (#601)

* Create draft amalgamation + redirect + misc. fixes/updates

* Fixed comments

* Fixed in response to Sev's comments + added unit tests

* fixed typos

* Updated Amalgamation Selection in response to UXA notes (#602)

* Updated in response to Yui's observations

* Updated in response to Sev's comments

* 19005 Implemented historical - amalgamation reason text (#604)

- app version = 7.0.30
- updated some code comments
- added AmalgamatedInto interface object
- added enum mixin and utility functions
- added some business store getters
- refactored getReasonText() and added case for amalgamation
- cast some parameters to pre-empt code errors
- added/updated unit tests

Co-authored-by: Severin Beauvais <severin.beauvais@gov.bc.ca>

* 16967 Admin Freeze should not show on ledger (#603)

* hide admin_freeze filing

* update feature

* fix small

* fix lint issue

* update feature

* update test and app version

* fix lint issue

* update app version

* 16967 Set missing `displayLedger` property for draft apps (#605)

- app version = 7.0.32
- set missing draft app property
- updated some interface comments

Co-authored-by: Severin Beauvais <severin.beauvais@gov.bc.ca>

* 19190 Fixed "return to MBR" issues (#607)

- app version = 7.0.33
- only show "return to MBR" for temp amalgamations
- only show "return to MBR" for temp incorporation applications
- only show "return to MBR" for temp registrations

Co-authored-by: Severin Beauvais <severin.beauvais@gov.bc.ca>

* 19291 Implemented "future effective amalgamation" alert (#608)

* - app version = 7.0.34
- moved some "unknown" from script to template
- added amalgamation alert component
- added optional data object to business warnings interface
- added getter for future effective amalgamation warning
- added alert to dashboard
- fixed some route type errors
- added test suite
- updated unit tests

* - updated [Unknown] -> [unknown]

---------

Co-authored-by: Severin Beauvais <severin.beauvais@gov.bc.ca>

* Added amalgamation FF check (#610)

* Added amalgamation FF check

* Fixed unit tests

* typo

* 19209 Pre-populate TING business + error handling (#609)

- app version = 7.0.36
- fixed some getLegalType types
- added generic Technical Error Dialog (per Yui)
- added amalgamation enums
- refactored Legal Service function for better result and error handling
- added dialog to Amalgamation Selection component
- refactored Amalgamation Selection for error handling and to pre-populate TING business
- added test suite for new dialog

Co-authored-by: Severin Beauvais <severin.beauvais@gov.bc.ca>

* 19204 Fixed whitespace between sub-title and body (#612)

- app version = 7.0.37
- removed min-height (which simulated padding when it's a single line)
- added top margin (whitespace whether it's a single or wrapped line)
- added top padding to body for all filings

Co-authored-by: Severin Beauvais <severin.beauvais@gov.bc.ca>

* Bump vite from 4.3.9 to 4.5.2 (#613)

Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 4.3.9 to 4.5.2.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v4.5.2/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v4.5.2/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* 19085 - enable horizontal and vertical amalgamation launch (#614)

* 19085-enable horizontal and vertical amal

* 19085-update package version

* 19085-fix lint issues

* 19085-add comments

* 19085-updates based on review

* Update .eslintrc.js

- added eslint rule

* 19038 - unit tests for short form amalgamations (#616)

* 19038 - add unit tests for short form

* 19038 - more tests for short form amalgamations

* 19038 - update package version

* 19038 - fix lint issues

* 19038 - more unit tests

* 19038 - fix lint warning

* 19038 - fix unit test

* 19038 - revert fix

* 19038 - updates based on review

* 19038 - add comment

* Added correctNameOption to draft filing. (#617)

* Added correctNameOption to draft filing.

* Added legalName to amalgamationApplication.nameRequest

* Added correct route to short-form and regular amalgamation

* Updated enums to v1.1.7

* 19047 Updated unit tests (#618)

- app version = 7.0.41
- added tests to check alerts
- added test to check historical badge and reason for amalgamation
- fixed involuntary dissolution test
- misc cleanup

Co-authored-by: Severin Beauvais <severin.beauvais@gov.bc.ca>

* 19781 Updated draft amalgamation task/filing display name (#620)

* - app version = 7.0.42
- refactored aboutText into aboutApp and aboutSbc
- added special cases for displaying draft amalgamation task/filing name
- now display aboutApp in console
- updated filingTypeToName()
- updated unit tests

* - deleted local font preload

---------

Co-authored-by: Severin Beauvais <severin.beauvais@gov.bc.ca>

* 19714-ff-put-back-on (#621)

* 19714-ff-put-back-on

* 19714-ff-put-back-on

* Rebased. Fixed indentations, restored unit tests

* Updated allowable actions

* Fixed typo and restored united test menu item

* Restored order for menu items

* Restored whitespaces

* 19823 and 19843 - added support for amalg correction + preset numbered option for reg amalg (#622)

- app version = 7.0.44
- added conditional disable for amalgamation correction
- redirect to Edit UI for amalgamation correction
- cleaned up AmalgamationSelection.vue
- pre-set numbered option for regular amalgamation draft
- updated (but did not fix) unit test

Co-authored-by: Severin Beauvais <severin.beauvais@gov.bc.ca>

* 19823 Revert pre-set numbered option for regular amalgamation (#623)

- app version = 7.0.45
- removed numbered option for non-short-form (ie, regular) amalgamation

Co-authored-by: Severin Beauvais <severin.beauvais@gov.bc.ca>

* 19921 Update LegalObligation logic (#625)

- app version = 7.0.46
- don't show LegalObligation if business is not Active
- show LegalObligation for new business
- updated unit tests

Co-authored-by: Severin Beauvais <severin.beauvais@gov.bc.ca>

* 15600 display correct name for SP/GP (#548)

* 15600 display correct name for SP/GP

* Updated package.json

* Fixed ES lindt errors

* Updated for PR. Removed operatingName object

* Updated to use getEntityName

* Added  operatingName as a new store property

* Updated EntityHeader.spec to pass test.

* Added unit test

* Added changes for PR

* For PR. Removed operatingName property

* Removed trailing spaces

* Updated for PR - Added test cases

* Changed to valid business ID

* 19034 rebase legal name branch (#615)

* 17347 - Move COA and COD corrections for COOPS into the generic correction wo… (#549)

Move COA and COD corrections for COOPS into the generic correction workflow.

* 17347 - Add in isCoop check for resume button. (#550)

* Add in isCoop check for resume button.

* Fix code complexity issues

* Fix code complexity

* 18027 AGM Location change (#551)

* 18027-agm location details 1

* 18027-agm location details 2

* 18027-agm location details 3

* 18027-update package version

* 18027-agm location details 4

* 18027-agm location details 5

* 18027-agm location details 6

* 18027-agm location details 7

* 18027-agm location details 8

* 18027-agm location details 9

* AGM Location Change First PR (#553)

* AGM Location Change First PR

* small adjustment

* small fixes in response to Sev's comments

* Fixed in response to Sev's comments

* AGM Location Change second PR (#554)

* AGM Location Change second PR

* Fixed unit tests

* fixed in response to Sev's comments

* fixed error text

* AGM Location Change Third PR (#555)

* Created + updated unit tests

* Fixed EntityMenu test from ticket part 1

* Fixed lint errors

* Fixes in response to Sev's comments

* fixed lint issues

* Fixed in reponse to Sev's comments

* removed unnecessary test code

* AGM Location Change 4th and final PR (#556)

* AGM Location Change 4th and final PR

* changed method name

* changed comment

* fixed lint error

* removed unnecessary line

* Fix in response to Sev's comment

* Fixed in response to Sev's comment + simplified logic

* Removed staff payment dialog

* update agm location variable

* AGM Location Change 5th PR for styling issues (#559)

* AGM Location Change 5th PR for styling issues

* fixed left spacing of ripple

* fixed small lint issue

* fixed in response to Sev's comments

* Pre-populate the certify block when logged in user is not staff

* Moved user's full name to store to minimize API calls

* Fixed in response to Sev's comments

* Added optional chaining

* 16764 - Fixed end user certify block

* Reverted currentuser interface + fixed accordingly

* Prevent from showing undefined in certified block

* Prevented undefined from showing in certify block in agm location change

* 18024 Incremental AGM extension work (#558)

- app version = 6.9.5
- imported shared DatePicker component
- renamed a base class
- added a base class
- saved user info into store
- added initial AboutTheBusiness sub-component
- added initial AgmExtensionEvaluation sub-component
- added AgmExtensionHelp sub-component
- added initial ExtensionRequest sub-component
- added VcardTemplate
- updated tooltip text
- updated FF
- added AgmExtEval interface
- renamed RootStateIF -> AuthenticationStateIF
- renamed StateIF -> RootStateIF
- added DateMixin function for DatePicker component
- updated fetchUserInfo to return object (not Axios response)
- added missing default FF
- deleted obsolete dialog, transition, buttons, methods, CSS from AGM Extension
- added help section
- added initial sub-components to AGM Extension
- updated intro text
- updated some whitespace
- updated filing code
- removed delay in mounted() in AGM Extension
- updated onHaveChanges() watcher in AGM Extension
- pre-populated CertifiedBy
- deleted obsolete transition, methods, CSS from AGM Extension
- removed delay in mounted() in AGM Location Chg
- updated onHaveChanges() watcher in AGM Location Chg
- updated unit tests
- misc cleanup

* Make Certify block non-editable if non-staff user (AGM Filings) (#564)

Make certify block non-editable if non-staff user

* feat: digital business card (#566)

* refactor: CredentialsLanding component: add heading card

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add supplemental cards

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add image and word wrapping

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: link styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsStepper component: deprecate routes

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: CredentialsStepper component: function naming

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: split into sub components

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add web socket component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: re-add credential table

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: update types and imports

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add revocation dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add replacement dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: devcontainer config

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: bump version number

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: rename route for specificity

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: ran linter and fixed linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: make interface field optional

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert auto-formatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: contain dialogs for DigitalCredentials component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix code smells

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: address code review comments

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert autoformatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: update wording and styling to align with UX

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: feature flag credentials feature with mixin

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add TOU dialog

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix test failiures and code comments

* chore: cleaup

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: mixin to access digital credential feature

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: entity menu styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add loading indicators to digital credential route pages

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: reset dialog and functions

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: returl null if undefined

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: beef up conditional checks

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* 18284: digital business card (#552)

* refactor: CredentialsLanding component: add heading card

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add supplemental cards

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add image and word wrapping

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: link styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsStepper component: deprecate routes

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: CredentialsStepper component: function naming

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: split into sub components

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add web socket component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: re-add credential table

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: update types and imports

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add revocation dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add replacement dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: devcontainer config

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: bump version number

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: rename route for specificity

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: ran linter and fixed linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: make interface field optional

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert auto-formatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: contain dialogs for DigitalCredentials component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix code smells

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: address code review comments

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert autoformatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: update wording and styling to align with UX

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: feature flag credentials feature with mixin

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add TOU dialog

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix test failiures and code comments

* chore: cleaup

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: mixin to access digital credential feature

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: entity menu styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add loading indicators to digital credential route pages

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: reset dialog and functions

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: returl null if undefined

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: beef up conditional checks

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

---------

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: cleanup spelling and handle edge cases

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: failing tests

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: entity menu logic

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* 18284 Updated CSP (#561)

- added wss://*.gov.bc.ca to connect-src

* refactor: remove websocket support in favour of interval polling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: remove console log

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: address PR comments

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: remove unused import

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: build and test failures

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: digital business card (#562)

* refactor: CredentialsLanding component: add heading card

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add supplemental cards

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add image and word wrapping

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: link styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsStepper component: deprecate routes

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: CredentialsStepper component: function naming

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: split into sub components

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add web socket component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: re-add credential table

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: update types and imports

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add revocation dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add replacement dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: devcontainer config

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: bump version number

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: rename route for specificity

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: ran linter and fixed linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: make interface field optional

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert auto-formatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: contain dialogs for DigitalCredentials component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix code smells

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: address code review comments

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert autoformatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: update wording and styling to align with UX

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: feature flag credentials feature with mixin

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add TOU dialog

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix test failiures and code comments

* chore: cleaup

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: mixin to access digital credential feature

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: entity menu styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add loading indicators to digital credential route pages

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: reset dialog and functions

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: returl null if undefined

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: beef up conditional checks

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: cleanup spelling and handle edge cases

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: failing tests

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: entity menu logic

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: remove websocket support in favour of interval polling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: remove console log

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: address PR comments

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: remove unused import

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: build and test failures

Signed-off-by: Akiff Manji <amanji@petridish.dev>

---------

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* Update EntityMenu.spec.ts

* chore: remove web socket references

Signed-off-by: Akiff Manji <amanji@petridish.dev>

---------

Signed-off-by: Akiff Manji <amanji@petridish.dev>
Co-authored-by: Séverin Beauvais <severinbeauvais@users.noreply.github.com>

* 18161 Updated in response to UXA notes (#567)

* Updated in response to UXA notes

* package version update after rebasing

* 16733 undefined placeholder for federal (#569)

* For PR. Added Federal keyword

* Restored changes

* For PR. Added federal placeholder

* Updated package.json

* Fixed eslindt errors

* Restored space for separation of function

* 18024 Incremental AGM Extension changes (#568)

- app version = 7.0.3
- removed obsolete dialogs + code
- stopped watching changes to certify data
- indent cleanup
- added initial message box + CSS
- app version = 7.0.2
- added NotEligibleExtension dialog
- removed waiveFees=true from AGM Extension
- removed waiveFees=true from AGM Location Chg
- added some unit test suites
- worked on unit tests
- misc cleanup
- used allowable actions value from Legal API
- show alert on error starting app
- fixed some comments
- added showErrors prop to ExtensionRequest component

* 18272 Add unit test for AboutTheBusiness component (#570)

* Add unit test for AboutTheBusiness

* Update AboutTheBusiness tests

* Incorporate Sev's test for AboutTheBusiness

* Check long string date in test

* 17917 Added placeholder for null values (#572)

Updated Version

* 18024 Incremental AGM Extension changes (#571)

* - app version = 7.0.6

- updated ExtensionRequest validation styling

- misc small fixes
- updated unit tests

- added isEligible to interface
- show dialog if not eligible
- expanded unit tests

* wip

* feat: digital credentials detailed instructions (#575)

* refactor: CredentialsLanding component: add heading card

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add supplemental cards

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add image and word wrapping

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: link styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsStepper component: deprecate routes

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: CredentialsStepper component: function naming

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: split into sub components

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add web socket component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: re-add credential table

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: update types and imports

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add revocation dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add replacement dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: devcontainer config

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: bump version number

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: rename route for specificity

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: ran linter and fixed linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: make interface field optional

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert auto-formatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: contain dialogs for DigitalCredentials component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix code smells

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: address code review comments

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert autoformatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: update wording and styling to align with UX

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: feature flag credentials feature with mixin

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add TOU dialog

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix test failiures and code comments

* chore: cleaup

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: mixin to access digital credential feature

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: entity menu styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add loading indicators to digital credential route pages

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: reset dialog and functions

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: returl null if undefined

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: beef up conditional checks

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* 18284: digital business card (#552)

* refactor: CredentialsLanding component: add heading card

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add supplemental cards

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add image and word wrapping

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: link styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsStepper component: deprecate routes

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: CredentialsStepper component: function naming

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: split into sub components

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add web socket component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: re-add credential table

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: update types and imports

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add revocation dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add replacement dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: devcontainer config

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: bump version number

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: rename route for specificity

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: ran linter and fixed linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: make interface field optional

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert auto-formatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: contain dialogs for DigitalCredentials component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix code smells

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: address code review comments

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert autoformatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: update wording and styling to align with UX

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: feature flag credentials feature with mixin

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add TOU dialog

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix test failiures and code comments

* chore: cleaup

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: mixin to access digital credential feature

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: entity menu styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add loading indicators to digital credential route pages

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: reset dialog and functions

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: returl null if undefined

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: beef up conditional checks

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

---------

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: cleanup spelling and handle edge cases

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: failing tests

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: entity menu logic

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* 18284 Updated CSP (#561)

- added wss://*.gov.bc.ca to connect-src

* refactor: remove websocket support in favour of interval polling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: remove console log

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: address PR comments

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: remove unused import

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: build and test failures

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: digital business card (#562)

* refactor: CredentialsLanding component: add heading card

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add supplemental cards

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add image and word wrapping

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: link styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsStepper component: deprecate routes

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: CredentialsStepper component: function naming

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: split into sub components

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add web socket component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: re-add credential table

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: update types and imports

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add revocation dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add replacement dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: devcontainer config

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: bump version number

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: rename route for specificity

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: ran linter and fixed linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: make interface field optional

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert auto-formatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: contain dialogs for DigitalCredentials component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix code smells

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: address code review comments

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert autoformatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: update wording and styling to align with UX

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: feature flag credentials feature with mixin

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add TOU dialog

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix test failiures and code comments

* chore: cleaup

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: mixin to access digital credential feature

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: entity menu styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add loading indicators to digital credential route pages

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: reset dialog and functions

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: returl null if undefined

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: beef up conditional checks

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: cleanup spelling and handle edge cases

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: failing tests

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: entity menu logic

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: remove websocket support in favour of interval polling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: remove console log

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: address PR comments

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: remove unused import

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: build and test failures

Signed-off-by: Akiff Manji <amanji@petridish.dev>

---------

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* Update EntityMenu.spec.ts

* chore: remove web socket references

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix spacing

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: some cleanup

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: credential detailed instructions

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: add tags to components

Signed-off-by: Akiff Manji <amanji@petridish.dev>

---------

Signed-off-by: Akiff Manji <amanji@petridish.dev>
Co-authored-by: Séverin Beauvais <severinbeauvais@users.noreply.github.com>

* 18513 Fixed jerky expandable help transition (#576)

- app version = 7.0.7
- imported latest ExpandableHelp component (to fix jerky transition)

* Extension Request Scenario 1 (#577)

* Extension Request Scenario 1

* Lots of updates after rebasing

* package version update after rebasing

* cleanup

* Fixed unit test

* Updated in response to Sev's PR comments

* Removed fallback logic from subtractDates in dateutilities

* lint fix

* 18369 agm extension evaluation (#573)

* 18369 agm evaluation component setup

* 18369 agm evaluation component setup

* 18369 added logic to agm extension evaluation component and unit testing

* removed unnecessary data from agmExtensionEvaluation

* removed rootStore values since unused

* removed unused pinia

* misc edit

* added yellow evaluation box unit test

* fixed expected value

* removed redundant testing in yellow-box verification

* added idea for template conditionals in the component

* rearranged data variables in the conditionals

* removed now unused props

* misc fix

* added new testing for agm extension evaluation

* removed Text string variables from AgmExtension.vue

* fized testing error

* fixed silly typo

* 17159 Update fetchNameRequest (#579)

update fetchNameRequest

* 18273 Extension Request Scenario 2 (#580)

* Extension Request Scenario 2

* Fix lint issue

* Fix min expiry date

* Restore comment on isFirstAgm

* Move currentDate to data object

* Fix agm year not clearing on firstAgm change

* Update watcher comment

* Update version to 7.0.10 and fix unit tests

* 18469 Capitalize AGM in output titles (#581)

- app version = 7.0.11
- added missing cases for AGM filings
- added special case to convert "Agm" to "AGM"
- fixed a lint warning

* 18274 Updated To Do List and Recent Filing History (#584)

* - app version = 7.0.12

* - added AGM Extension as a filing in Filing History List
- added AGM Extension as cancellable Todo Item
- added AGM Extension filing component
- fixed wrong enum in Entity Menu
- added AGM Extension to Enum Utilities
- fixed misc type warnings

* - added agmExtension fields to ApiFilingIF
- updated AGM Extension filing JSON per schema

* - fixed unit test

* - added FHL unit tests

* Update FilingHistoryList1.spec.ts

- updated displayName for AGM filings in unit tests (no functional impact, no dependencies)

* 18369 changed the duration of extension messages in accordance with U… (#582)

* 18369 changed the duration of extension messages in accordance with UX design

* fixed tests for new evaluation messages.

* fixed date getters and added expiry date

* fixed getters and fixed typo

* fixed reactive expiry date

* update package json

* 18204 disable restore based on ff (#583)

* For PR added FF parameters

* Fixed && added test cases for historical

* Updated package version

* chore: update content and images (#586)

* refactor: CredentialsLanding component: add heading card

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add supplemental cards

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add image and word wrapping

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: link styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsStepper component: deprecate routes

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: CredentialsStepper component: function naming

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: split into sub components

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add web socket component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: re-add credential table

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: update types and imports

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add revocation dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add replacement dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: devcontainer config

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: bump version number

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: rename route for specificity

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: ran linter and fixed linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: make interface field optional

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert auto-formatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: contain dialogs for DigitalCredentials component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix code smells

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: address code review comments

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert autoformatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: update wording and styling to align with UX

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: feature flag credentials feature with mixin

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add TOU dialog

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix test failiures and code comments

* chore: cleaup

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: mixin to access digital credential feature

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: entity menu styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add loading indicators to digital credential route pages

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: reset dialog and functions

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: returl null if undefined

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: beef up conditional checks

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* 18284: digital business card (#552)

* refactor: CredentialsLanding component: add heading card

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add supplemental cards

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add image and word wrapping

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: link styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsStepper component: deprecate routes

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: CredentialsStepper component: function naming

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: split into sub components

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add web socket component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: re-add credential table

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: update types and imports

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add revocation dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add replacement dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: devcontainer config

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: bump version number

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: rename route for specificity

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: ran linter and fixed linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: make interface field optional

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert auto-formatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: contain dialogs for DigitalCredentials component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix code smells

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: address code review comments

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert autoformatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: update wording and styling to align with UX

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: feature flag credentials feature with mixin

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add TOU dialog

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix test failiures and code comments

* chore: cleaup

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: mixin to access digital credential feature

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: entity menu styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add loading indicators to digital credential route pages

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: reset dialog and functions

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: returl null if undefined

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: beef up conditional checks

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

---------

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: cleanup spelling and handle edge cases

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: failing tests

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: entity menu logic

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* 18284 Updated CSP (#561)

- added wss://*.gov.bc.ca to connect-src

* refactor: remove websocket support in favour of interval polling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: remove console log

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: address PR comments

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: remove unused import

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: build and test failures

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: digital business card (#562)

* refactor: CredentialsLanding component: add heading card

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add supplemental cards

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add image and word wrapping

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: link styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsStepper component: deprecate routes

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: CredentialsStepper component: function naming

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: split into sub components

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add web socket component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: re-add credential table

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: update types and imports

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add revocation dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add replacement dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: devcontainer config

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: bump version number

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: rename route for specificity

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: ran linter and fixed linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: make interface field optional

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert auto-formatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: contain dialogs for DigitalCredentials component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix code smells

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: address code review comments

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert autoformatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: update wording and styling to align with UX

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: feature flag credentials feature with mixin

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add TOU dialog

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix test failiures and code comments

* chore: cleaup

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: mixin to access digital credential feature

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: entity menu styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add loading indicators to digital credential route pages

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: reset dialog and functions

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: returl null if undefined

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: beef up conditional checks

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: cleanup spelling and handle edge cases

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: failing tests

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: entity menu logic

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: remove websocket support in favour of interval polling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: remove console log

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: address PR comments

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: remove unused import

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: build and test failures

Signed-off-by: Akiff Manji <amanji@petridish.dev>

---------

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* Update EntityMenu.spec.ts

* chore: remove web socket references

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix spacing

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: some cleanup

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: credential detailed instructions

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: add tags to components

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: minor content updates

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: update package version

Signed-off-by: Akiff Manji <amanji@petridish.dev>

---------

Signed-off-by: Akiff Manji <amanji@petridish.dev>
Co-authored-by: Séverin Beauvais <severinbeauvais@users.noreply.github.com>

* fix: DBC feature should be available for historical companies (#587)

* refactor: CredentialsLanding component: add heading card

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add supplemental cards

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add image and word wrapping

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: link styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsStepper component: deprecate routes

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: CredentialsStepper component: function naming

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: split into sub components

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add web socket component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: re-add credential table

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: update types and imports

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add revocation dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add replacement dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: devcontainer config

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: bump version number

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: rename route for specificity

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: ran linter and fixed linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: make interface field optional

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert auto-formatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: contain dialogs for DigitalCredentials component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix code smells

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: address code review comments

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert autoformatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: update wording and styling to align with UX

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: feature flag credentials feature with mixin

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add TOU dialog

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix test failiures and code comments

* chore: cleaup

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: mixin to access digital credential feature

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: entity menu styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add loading indicators to digital credential route pages

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: reset dialog and functions

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: returl null if undefined

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: beef up conditional checks

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* 18284: digital business card (#552)

* refactor: CredentialsLanding component: add heading card

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add supplemental cards

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add image and word wrapping

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: link styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsStepper component: deprecate routes

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: CredentialsStepper component: function naming

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: split into sub components

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add web socket component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: re-add credential table

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: update types and imports

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add revocation dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add replacement dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: devcontainer config

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: bump version number

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: rename route for specificity

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: ran linter and fixed linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: make interface field optional

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert auto-formatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: contain dialogs for DigitalCredentials component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix code smells

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: address code review comments

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert autoformatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: update wording and styling to align with UX

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: feature flag credentials feature with mixin

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add TOU dialog

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix test failiures and code comments

* chore: cleaup

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: mixin to access digital credential feature

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: entity menu styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add loading indicators to digital credential route pages

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: reset dialog and functions

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: returl null if undefined

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: beef up conditional checks

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

---------

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: cleanup spelling and handle edge cases

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: failing tests

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: entity menu logic

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* 18284 Updated CSP (#561)

- added wss://*.gov.bc.ca to connect-src

* refactor: remove websocket support in favour of interval polling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: remove console log

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: address PR comments

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: remove unused import

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: build and test failures

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: digital business card (#562)

* refactor: CredentialsLanding component: add heading card

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add supplemental cards

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: add image and word wrapping

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsLanding component: link styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: CredentialsStepper component: deprecate routes

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: CredentialsStepper component: function naming

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: split into sub components

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add web socket component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: re-add credential table

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: DigitalCredentials component: update types and imports

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add revocation dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: DigitalCredentials component: add replacement dialogs

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: devcontainer config

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: bump version number

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: rename route for specificity

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: ran linter and fixed linting errors

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: make interface field optional

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert auto-formatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: contain dialogs for DigitalCredentials component

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix code smells

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: address code review comments

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: revert autoformatting

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: update wording and styling to align with UX

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: feature flag credentials feature with mixin

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add TOU dialog

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix test failiures and code comments

* chore: cleaup

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: mixin to access digital credential feature

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: entity menu styling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: add loading indicators to digital credential route pages

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: reset dialog and functions

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: returl null if undefined

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: beef up conditional checks

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: spelling error

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: cleanup spelling and handle edge cases

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: failing tests

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: entity menu logic

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: remove websocket support in favour of interval polling

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: remove console log

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: address PR comments

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: remove unused import

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: build and test failures

Signed-off-by: Akiff Manji <amanji@petridish.dev>

---------

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* Update EntityMenu.spec.ts

* chore: remove web socket references

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: fix spacing

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: some cleanup

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* feat: credential detailed instructions

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: add tags to components

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: minor content updates

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: update package version

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: DBC feature should be available for historical organization

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* refactor: move logic into getter

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* fix: DBC feature should only be available to BCSC user

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: update package version

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: update package lock file

Signed-off-by: Akiff Manji <amanji@petridish.dev>

---------

Signed-off-by: Akiff Manji <amanji@petridish.dev>
Co-authored-by: Séverin Beauvais <severinbeauvais@users.noreply.github.com>

* 18273+18558 Extension Request Cleanup and Tests (#585)

* Restore comment on isFirstAgm

* Extension Request Cleanup and Tests

* Update comment

* Use isFirstAgm from data for validity

* Remove debugging code

* Fix initial state on agm extension evaluation

* Fix typo

* Set missing values for EmptyAgmExtEval

* Add better validation for AGM extension request

* Prevent future year for agm year

* Update version to 7.0.17

* Fix some of the unit tests

* Removed impossible test scenario

* Add overflow-auto class

* Update date-picker version to 1.2.38

* Remove optional from agm extension interface

* Remove console.log

* 18024 - Fixed AGM Extensions in TODO List (#591)

* 18273+18558 Update Extension Request component UI (#592)

* Extension Request Cleanup and Tests

* Remove debugging code

* Remove optional from agm extension interface

* Remove console.log

* Update Extension Request component UI

* 18534 Changes to support amalgamation applications (#590)

* - app version = 7.0.20
- updated some shared imports
- added amalgamation as supported filing type
- added amalgamation template to Filing History List
- added amalgamation application to Todo List
- added amalgamation sub-types to enum
- added amalgamation to API Filing interface
- added amalgamation to Task Todo interface
- added an enum mixin method
- added enum utilities methods
- updated filingTypeToName()
- replaced overly complex "currentFilingStatus" with filing id check
- refactored entityStatus to identify the application type (amal/IA/reg)
- updated unit tests

* - applied fix for #18736

* - added displayName to draft app code
- used displayName in TodoList.vue
- used displayName in EntityHeader.vue

* - added check for amalgamation type

* 18024 Finish AGM Extension UI implementation  (#594)

* Fix AGM extension api payload

* Update version to 7.0.21

* Fix unit test

* feat: digital credentials gate (#595)

* feat: gate digital credentials from API

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: bump package version

Signed-off-by: Akiff Manji <amanji@petridish.dev>

---------

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* 18534 Amalg unit tests + small fixes + more typing (#596)

* - app version = 7.0.23
- enabled strict typing
- misc small fixes/cleanup
- fixed filed IA blurb
- added amalgamation allowable action
- added unit tests
- added some typing to unit tests

* wip

* feat: digital credentials TOU (#597)

* feat: Terms of Use for digital credentials

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: address code review comments and bump package version

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: address code review comments

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: address code review comments

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* chore: address code review comments

Signed-off-by: Akiff Manji <amanji@petridish.dev>

---------

Signed-off-by: Akiff Manji <amanji@petridish.dev>

* 18782 fix error in wrong agm due date (#598)

fix error in wrong agm due date

* 17869 - Adding CFS account number BUSINESS-FILINGS-UI (#565)

* 17869 - Adding CFS account number BUSINESS-FILINGS-UI

Signed-off-by: AbrahamRostampoor <Mohammadebrahim.Rostampoor@gov.bc.ca>

* cfs Update

* Latest Updates

* Formatting

* Updated package.json and package-lock.json version number

---------

Signed-off-by: AbrahamRostampoor <Mohammadebrahim.Rostampoor@gov.bc.ca>

* 18833 agm ext calc (#599)

* 18833-AGM-extension-calculation

* Updated package.json

* Added getter that takes argument for AGM year. Working test case for getTotalAgmExtension method

* 18805+18979 Amalgamate Button + Moved to amalgamationApplication + Selection Panel (#600)

* Implemented Amalgamate button + changed amalgamation to amalgamationApplication

* Implemented Amalgamation Selection Panel

* Updated package version after rebase

* Added safe value + deleted unnecessary comment

* Updated in response to Sev's comments

* another small update in response to Sev's comment

* missing import

* small updates in response to Sev's comment

* removed unused imports

* changed disabled condition

* Create draft amalgamation + redirect + misc. fixes/updates (#601)

* Create draft amalgamation + redirect + misc. fixes/updates

* Fixed comments

* Fixed in response to Sev's comments + added unit tests

* fixed typos

* Updated Amalgamation Selection in response to UXA notes (#602)

* Updated in response to Yui's observations

* Updated in response to Sev's comments

* 19005 Implemented historical - amalgamation reason text (#604)

- app version = 7.0.30
- updated some code comments
- added AmalgamatedInto interface object
- added enum mixin and utility functions
- added some business store getters
- refactored getReasonText() and added case for amalgamation
- cast some parameters to pre-empt code errors
- added/updated unit tests

Co-authored-by: Severin Beauvais <severin.beauvais@gov.bc.ca>

* 16967 Admin Freeze should not show on ledger (#603)

* hide admin_freeze filing

* update feature

* fix small

* fix lint issue

* update feature

* update test and app version

* fix lint issue

* update app version

* Update filingHistoryListStore.ts

- changed "displayLedger" check from falsy to False

* 16967 Set missing `displayLedger` property for draft apps (#605)

- app version = 7.0.32
- set missing draft app property
- updated some interface comments

Co-authored-by: Severin Beauvais <severin.beauvais@gov.bc.ca>

* 19190 Fixed "return to MBR" issues (#607)

- app version = 7.0.33
- only show "return to MBR" for temp amalgamations
- only show "return to MBR" for temp incorporation applications
- only show "return to MBR" for temp registrations

Co-authored-by: Severin Beauvais <severin.beauvais@gov.bc.ca>

* 19291 Implemented "future effective amalgamation" alert (#608)

* - app v…

* npm i after rebase

* Fixed rebase issues

* Fixed in response to Sev's comment

* Fixed amalgamation filings titles in response to Sev's comment

---------

Signed-off-by: Akiff Manji <amanji@petridish.dev>
Signed-off-by: AbrahamRostampoor <Mohammadebrahim.Rostampoor@gov.bc.ca>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: ketaki-deodhar <116035339+ketaki-deodhar@users.noreply.github.com>
Co-authored-by: Séverin Beauvais <severinbeauvais@users.noreply.github.com>
Co-authored-by: Akiff Manji <akiff.manji@gmail.com>
Co-authored-by: jamespaologarcia <james.paolo.p.garcia@gmail.com>
Co-authored-by: leodube-aot <122323255+leodube-aot@users.noreply.github.com>
Co-authored-by: Kevin Zhang <54437031+kzdev420@users.noreply.github.com>
Co-authored-by: Paul <144158015+PaulGarewal@users.noreply.github.com>
Co-authored-by: Akiff Manji <amanji@petridish.dev>
Co-authored-by: Shaoyun Tong <144159934+tshyun24@users.noreply.github.com>
Co-authored-by: AbrahamRostampoor <144154569+AbrahamRostampoor@users.noreply.github.com>
Co-authored-by: Severin Beauvais <severin.beauvais@gov.bc.ca>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Travis Semple <travis8814@gmail.com>
---
 .eslintrc.js                                  |   1 +
 index.html                                    |   1 -
 package-lock.json                             |  27 +-
 package.json                                  |   2 +-
 src/App.vue                                   |  13 +-
 .../FilingHistoryList/FilingTemplate.vue      |   5 +-
 .../FilingHistoryList/HeaderActions.vue       |   7 +-
 src/components/Dashboard/LegalObligation.vue  |  13 +-
 src/enums/amalgamationEnums.ts                |   3 +-
 src/main.ts                                   |   3 +-
 src/mixins/allowable-actions-mixin.ts         |   7 +-
 src/services/enum-utilities.ts                |   6 +-
 src/stores/rootStore.ts                       |   5 +-
 src/utils/feature-flags.ts                    |   1 +
 src/views/AmalgamationSelection.vue           |  77 +++-
 src/views/Dashboard.vue                       |   2 +-
 tests/unit/AmalgamationFiling.spec.ts         |  69 ++-
 tests/unit/AmalgamationSelection.spec.ts      |  26 +-
 tests/unit/App.spec.ts                        | 424 +++++++++++++++++-
 tests/unit/Dashboard.spec.ts                  | 121 ++++-
 tests/unit/EntityHeader.spec.ts               | 153 +++++--
 tests/unit/FilingHistoryList1.spec.ts         |  87 +++-
 tests/unit/FilingHistoryList2.spec.ts         |  51 ++-
 .../unit/LedgerConsentContinuationOut.spec.ts |   2 +-
 tests/unit/LedgerContinuationOut.spec.ts      |   2 +-
 tests/unit/LegalObligation.spec.ts            |  35 +-
 tests/unit/StaffNotation.spec.ts              |  82 ++++
 tests/unit/TodoList1.spec.ts                  | 164 ++++++-
 tests/unit/filings.json                       |  57 ++-
 vite.config.js                                |  11 +-
 30 files changed, 1320 insertions(+), 137 deletions(-)

diff --git a/.eslintrc.js b/.eslintrc.js
index 9f10119de..c79a01dcf 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -24,6 +24,7 @@ module.exports = {
     'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
     'max-len': ['warn', { code: 120 }],
     'vue/attribute-hyphenation': 'off',
+    'vue/component-name-in-template-casing': ['error', 'PascalCase'],
     'vue/multi-word-component-names': 'off',
     'vue/no-deprecated-filter': 'warn',
     'vue/no-deprecated-slot-scope-attribute': 'warn',
diff --git a/index.html b/index.html
index a94429929..f296a7cfe 100644
--- a/index.html
+++ b/index.html
@@ -7,7 +7,6 @@
     <title>BC Business Registry</title>
     <link rel="icon" href="dummy-not-used-do-not-remove">
     <link rel="icon" href="/favicon.png">
-    <link rel="preload" href="/fonts/materialdesignicons-webfont.927457ed.woff2" as="font" type="font/woff2" crossorigin>
     <link rel="stylesheet" href="/css/addresscomplete-2.30.min.css">
     <script type="text/javascript" src="/js/addresscomplete-2.30.min.js" defer></script>
   </head>
diff --git a/package-lock.json b/package-lock.json
index 9d1277f28..51d76812b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -16,7 +16,7 @@
         "@bcrs-shared-components/court-order-poa": "2.1.4",
         "@bcrs-shared-components/date-picker": "1.2.39",
         "@bcrs-shared-components/document-delivery": "1.2.1",
-        "@bcrs-shared-components/enums": "1.1.4",
+        "@bcrs-shared-components/enums": "1.1.7",
         "@bcrs-shared-components/expandable-help": "1.0.1",
         "@bcrs-shared-components/folio-number-input": "1.1.18",
         "@bcrs-shared-components/interfaces": "1.1.2",
@@ -302,13 +302,18 @@
       }
     },
     "node_modules/@bcrs-shared-components/enums": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/@bcrs-shared-components/enums/-/enums-1.1.4.tgz",
-      "integrity": "sha512-EwHjFTfIiOJLzU3yWSPJnxfplF+cgQSPGFE+6T1jo/7aVpLPMw/cSSGi3cJIr3h7SjyQd8wTxsFP4QDVgCrH7A==",
+      "version": "1.1.7",
+      "resolved": "https://registry.npmjs.org/@bcrs-shared-components/enums/-/enums-1.1.7.tgz",
+      "integrity": "sha512-WORgcK1YS/AssOI6sbuSQv4f13wZTQR6td7+gcghgAl34WNyO5HT0Mu2VfVGbD2zXfIYDm5jXTj2Dg6dkxpouA==",
       "dependencies": {
-        "@bcrs-shared-components/corp-type-module": "^1.0.14"
+        "@bcrs-shared-components/corp-type-module": "^1.0.15"
       }
     },
+    "node_modules/@bcrs-shared-components/enums/node_modules/@bcrs-shared-components/corp-type-module": {
+      "version": "1.0.15",
+      "resolved": "https://registry.npmjs.org/@bcrs-shared-components/corp-type-module/-/corp-type-module-1.0.15.tgz",
+      "integrity": "sha512-g/TcNSR7zJsG2lBjn/NnM+/+k7dJzhAiy5PiPj0ObN56bUV1PrUWVVlg5lz4/JZUEAZetWhwnyAzPVGsn7kr1w=="
+    },
     "node_modules/@bcrs-shared-components/expandable-help": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/@bcrs-shared-components/expandable-help/-/expandable-help-1.0.1.tgz",
@@ -501,7 +506,7 @@
       "dev": true,
       "optional": true,
       "os": [
-        "linux"
+        "android"
       ],
       "engines": {
         "node": ">=12"
@@ -3159,14 +3164,8 @@
       "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
       "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
       "dev": true,
-      "hasInstallScript": true,
-      "optional": true,
-      "os": [
-        "darwin"
-      ],
-      "engines": {
-        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
-      }
+      "license": "ISC",
+      "optional": true
     },
     "node_modules/function-bind": {
       "version": "1.1.2",
diff --git a/package.json b/package.json
index 14a1b11c5..954da0ff9 100644
--- a/package.json
+++ b/package.json
@@ -21,7 +21,7 @@
     "@bcrs-shared-components/court-order-poa": "2.1.4",
     "@bcrs-shared-components/date-picker": "1.2.39",
     "@bcrs-shared-components/document-delivery": "1.2.1",
-    "@bcrs-shared-components/enums": "1.1.4",
+    "@bcrs-shared-components/enums": "1.1.7",
     "@bcrs-shared-components/expandable-help": "1.0.1",
     "@bcrs-shared-components/folio-number-input": "1.1.18",
     "@bcrs-shared-components/interfaces": "1.1.2",
diff --git a/src/App.vue b/src/App.vue
index b96c571c7..25c866e27 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -299,7 +299,9 @@ export default {
 
     /** The About text. */
     aboutText (): string {
-      return import.meta.env.ABOUT_TEXT
+      const aboutApp = import.meta.env.ABOUT_APP
+      const aboutSbc = import.meta.env.ABOUT_SBC
+      return `${aboutApp}<br>${aboutSbc}`
     },
 
     /** Get banner text. */
@@ -720,7 +722,9 @@ export default {
       const filingName = EnumUtilities.filingTypeToName(header.name, null, data.type)
 
       // save display name for later
-      filing.displayName = `${description}${dba}${filingName}`
+      filing.displayName = EnumUtilities.isTypeAmalgamation(header)
+        ? filingName
+        : `${description}${dba}${filingName}`
 
       // add this as a task item
       const taskItem: ApiTaskIF = {
@@ -746,6 +750,9 @@ export default {
 
       const description = GetCorpFullDescription(data.nameRequest.legalType)
       const filingName = EnumUtilities.filingTypeToName(header.name, null, data.type)
+      const displayName = EnumUtilities.isTypeAmalgamation(header)
+        ? filingName
+        : `${description} ${filingName}`
 
       // add this as a filing item
       const filingItem = {
@@ -754,7 +761,7 @@ export default {
         commentsCount: application.commentsCount,
         commentsLink: application.commentsLink,
         displayLedger: application.displayLedger,
-        displayName: `${description} ${filingName}`,
+        displayName,
         documentsLink: application.documentsLink,
         effectiveDate: this.apiToUtcString(header.effectiveDate),
         filingId: header.filingId,
diff --git a/src/components/Dashboard/FilingHistoryList/FilingTemplate.vue b/src/components/Dashboard/FilingHistoryList/FilingTemplate.vue
index 0c13d6296..e556f8c6d 100644
--- a/src/components/Dashboard/FilingHistoryList/FilingTemplate.vue
+++ b/src/components/Dashboard/FilingHistoryList/FilingTemplate.vue
@@ -53,7 +53,10 @@
       </div>
     </v-expansion-panel-header>
 
-    <v-expansion-panel-content class="pt-5">
+    <v-expansion-panel-content
+      eager
+      class="pt-5"
+    >
       <slot name="body">
         <!-- is this a generic paid (not yet completed) filing? -->
         <div
diff --git a/src/components/Dashboard/FilingHistoryList/HeaderActions.vue b/src/components/Dashboard/FilingHistoryList/HeaderActions.vue
index b9e01d424..ef2e4018f 100644
--- a/src/components/Dashboard/FilingHistoryList/HeaderActions.vue
+++ b/src/components/Dashboard/FilingHistoryList/HeaderActions.vue
@@ -128,10 +128,10 @@ export default class HeaderActions extends Mixins(AllowableActionsMixin) {
     conditions[3] = () => (EnumUtilities.isTypeIncorporationApplication(this.filing) &&
       !this.isBenBcCccUlc && !this.isCoop)
     conditions[4] = () => (EnumUtilities.isTypeChangeOfRegistration(this.filing) && !this.isFirm)
-    conditions[5] = () => (EnumUtilities.isTypeCorrection(this.filing) &&
-      !this.isFirm && !this.isBenBcCccUlc &&
-      !this.isCoop)
+    conditions[5] = () => (EnumUtilities.isTypeCorrection(this.filing) && !this.isFirm &&
+      !this.isBenBcCccUlc && !this.isCoop)
     conditions[6] = () => (EnumUtilities.isTypeRegistration(this.filing) && !this.isFirm)
+    conditions[7] = () => (EnumUtilities.isTypeAmalgamation(this.filing) && !this.isBenBcCccUlc)
 
     // check if any condition is True
     return conditions.some(condition => condition())
@@ -142,6 +142,7 @@ export default class HeaderActions extends Mixins(AllowableActionsMixin) {
     // see also TodoList.vue:doResumeFiling()
     switch (filing?.name) {
       case FilingTypes.ALTERATION:
+      case FilingTypes.AMALGAMATION_APPLICATION:
       case FilingTypes.CHANGE_OF_REGISTRATION:
       case FilingTypes.CORRECTION:
       case FilingTypes.INCORPORATION_APPLICATION:
diff --git a/src/components/Dashboard/LegalObligation.vue b/src/components/Dashboard/LegalObligation.vue
index 24c9360ca..a9f713a73 100644
--- a/src/components/Dashboard/LegalObligation.vue
+++ b/src/components/Dashboard/LegalObligation.vue
@@ -81,22 +81,29 @@
 </template>
 
 <script lang="ts">
-import { Component, Mixins } from 'vue-property-decorator'
+import { Component, Mixins, Watch } from 'vue-property-decorator'
 import { Getter } from 'pinia-class'
 import ResourceLookupMixin from '@/mixins/resource-lookup-mixin'
-import { useRootStore } from '@/stores'
+import { useBusinessStore, useRootStore } from '@/stores'
 
 @Component({})
 export default class LegalObligation extends Mixins(ResourceLookupMixin) {
+  @Getter(useBusinessStore) isActive!: boolean
   @Getter(useRootStore) isBusinessWithNoMaintenanceFilings!: boolean
 
   readMoreFlag = false
-  showLegalObligation = true
+  showLegalObligation = null as boolean
 
   /** Whether this entity is a business (and not a temporary registration). */
   get isBusiness (): boolean {
     return !!sessionStorage.getItem('BUSINESS_ID')
   }
+
+  /** Sets initial value of showLegalObligation (and any changes). */
+  @Watch('isActive', { immediate: true })
+  onIsActiveChanged () {
+    this.showLegalObligation = this.isActive
+  }
 }
 </script>
 
diff --git a/src/enums/amalgamationEnums.ts b/src/enums/amalgamationEnums.ts
index 28573900a..8cd29baad 100644
--- a/src/enums/amalgamationEnums.ts
+++ b/src/enums/amalgamationEnums.ts
@@ -1,6 +1,7 @@
 export enum AmlRoles {
   AMALGAMATING = 'amalgamating',
-  HOLDING = 'holding'
+  HOLDING = 'holding',
+  PRIMARY = 'primary'
 }
 
 export enum AmlTypes {
diff --git a/src/main.ts b/src/main.ts
index 51333ac44..3d9189e6b 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -97,7 +97,8 @@ async function start () {
   const router = getVueRouter()
 
   // start Vue application
-  console.info('Starting app...') // eslint-disable-line no-console
+  const aboutApp = import.meta.env.ABOUT_APP
+  console.info(`Starting ${aboutApp}...`) // eslint-disable-line no-console
   new Vue({
     vuetify: new Vuetify({
       iconfont: 'mdi',
diff --git a/src/mixins/allowable-actions-mixin.ts b/src/mixins/allowable-actions-mixin.ts
index 2262e9f75..42f1e93d0 100644
--- a/src/mixins/allowable-actions-mixin.ts
+++ b/src/mixins/allowable-actions-mixin.ts
@@ -118,16 +118,17 @@ export default class AllowableActionsMixin extends Vue {
 
       case AllowableActions.LIMITED_RESTORATION_EXTENSION: {
         return !!GetFeatureFlag('supported-restoration-entities')?.includes(this.getLegalType) &&
-        this.isAllowedFiling(FilingTypes.RESTORATION, FilingSubTypes.LIMITED_RESTORATION_EXTENSION)
+          this.isAllowedFiling(FilingTypes.RESTORATION, FilingSubTypes.LIMITED_RESTORATION_EXTENSION)
       }
 
       case AllowableActions.LIMITED_RESTORATION_TO_FULL: {
         return !!GetFeatureFlag('supported-restoration-entities')?.includes(this.getLegalType) &&
-        this.isAllowedFiling(FilingTypes.RESTORATION, FilingSubTypes.LIMITED_RESTORATION_TO_FULL)
+          this.isAllowedFiling(FilingTypes.RESTORATION, FilingSubTypes.LIMITED_RESTORATION_TO_FULL)
       }
 
       case AllowableActions.PUT_BACK_ON: {
-        return this.isAllowedFiling(FilingTypes.PUT_BACK_ON)
+        return this.isAllowedFiling(FilingTypes.PUT_BACK_ON) &&
+          !!GetFeatureFlag('supported-put-back-on-entities')?.includes(this.getLegalType)
       }
 
       case AllowableActions.RECORD_CONVERSION: {
diff --git a/src/services/enum-utilities.ts b/src/services/enum-utilities.ts
index 8972c61c4..36a9fd527 100644
--- a/src/services/enum-utilities.ts
+++ b/src/services/enum-utilities.ts
@@ -354,13 +354,13 @@ export default class EnumUtilities {
       case FilingTypes.ALTERATION: return FilingNames.ALTERATION
       case FilingTypes.AMALGAMATION_APPLICATION:
         if (subType === FilingSubTypes.AMALGAMATION_HORIZONTAL) {
-          return `${FilingNames.AMALGAMATION_APPLICATION} - Horizontal`
+          return `${FilingNames.AMALGAMATION_APPLICATION} Short-form (Horizontal)`
         }
         if (subType === FilingSubTypes.AMALGAMATION_REGULAR) {
-          return `${FilingNames.AMALGAMATION_APPLICATION} - Regular`
+          return `${FilingNames.AMALGAMATION_APPLICATION} (Regular)`
         }
         if (subType === FilingSubTypes.AMALGAMATION_VERTICAL) {
-          return `${FilingNames.AMALGAMATION_APPLICATION} - Vertical`
+          return `${FilingNames.AMALGAMATION_APPLICATION} Short-form (Vertical)`
         }
         return FilingNames.AMALGAMATION_APPLICATION
       case FilingTypes.ANNUAL_REPORT: return FilingNames.ANNUAL_REPORT + (agmYear ? ` (${agmYear})` : '')
diff --git a/src/stores/rootStore.ts b/src/stores/rootStore.ts
index f0cf45d95..5c062bbf9 100644
--- a/src/stores/rootStore.ts
+++ b/src/stores/rootStore.ts
@@ -167,15 +167,16 @@ export const useRootStore = defineStore('root', {
 
     /**
      * This is used to show Legal Obligations only for a new business
-     * that has no tasks and hasn't filed anything yet (except their IA).
+     * that has no tasks and hasn't filed anything yet (except their application).
      **/
     isBusinessWithNoMaintenanceFilings (state: RootStateIF): boolean {
       const filingHistoryListStore = useFilingHistoryListStore()
       return (
         // no todo items
         (state.tasks.length === 0) &&
-        // only the IA or Registraion filing history item
+        // only the Amalgamation or IA or Registration filing history item
         (filingHistoryListStore.getFilings.length === 1) && (
+          EnumUtilities.isTypeAmalgamation(filingHistoryListStore.getFilings[0]) ||
           EnumUtilities.isTypeIncorporationApplication(filingHistoryListStore.getFilings[0]) ||
           EnumUtilities.isTypeRegistration(filingHistoryListStore.getFilings[0])
         )
diff --git a/src/utils/feature-flags.ts b/src/utils/feature-flags.ts
index 653d0b92c..9fee78c89 100644
--- a/src/utils/feature-flags.ts
+++ b/src/utils/feature-flags.ts
@@ -19,6 +19,7 @@ const defaultFlagSet: LDFlagSet = {
   'supported-consent-continuation-out-entities': [],
   'supported-agm-extension-entities': [],
   'supported-agm-location-chg-entities': [],
+  'supported-put-back-on-entities': [],
   'supported-restoration-entities': []
 }
 
diff --git a/src/views/AmalgamationSelection.vue b/src/views/AmalgamationSelection.vue
index 06c277f5b..926b7545c 100644
--- a/src/views/AmalgamationSelection.vue
+++ b/src/views/AmalgamationSelection.vue
@@ -51,12 +51,11 @@
             <br>
             <p>Shareholders of the amalgamating corporations do not need to approve the amalgamation.</p>
             <div class="btn-div">
-              <!-- TODO: Remove disabled when doing short form amalgamations -->
               <v-btn
                 id="horizontal-short-form-btn"
-                disabled
                 color="primary"
                 large
+                @click="startAmalgamation(AmalgamationTypes.HORIZONTAL)"
               >
                 <strong>Start Horizontal Short-form</strong>
               </v-btn>
@@ -87,12 +86,11 @@
             <br>
             <p>Shareholders of the amalgamating corporations do not need to approve the amalgamation.</p>
             <div class="btn-div">
-              <!-- TODO: Remove disabled when doing short form amalgamations -->
               <v-btn
                 id="vertical-short-form-btn"
-                disabled
                 color="primary"
                 large
+                @click="startAmalgamation(AmalgamationTypes.VERTICAL)"
               >
                 <strong>Start Vertical Short-form</strong>
               </v-btn>
@@ -133,7 +131,7 @@
                 id="regular-long-form-btn"
                 color="primary"
                 large
-                @click="startRegularAmalgamation()"
+                @click="startAmalgamation(AmalgamationTypes.REGULAR)"
               >
                 <strong>Start Regular Long-form</strong>
               </v-btn>
@@ -150,7 +148,7 @@ import { useBusinessStore, useConfigurationStore, useRootStore } from '@/stores'
 import { Action, Getter } from 'pinia-class'
 import { Component, Vue } from 'vue-property-decorator'
 import { CorpTypeCd } from '@bcrs-shared-components/corp-type-module'
-import { AmalgamationTypes, FilingTypes } from '@bcrs-shared-components/enums'
+import { AmalgamationTypes, CorrectNameOptions, FilingTypes } from '@bcrs-shared-components/enums'
 import { AmlRoles, AmlTypes, Routes } from '@/enums'
 import { LegalServices } from '@/services'
 import { navigate } from '@/utils'
@@ -163,7 +161,10 @@ import { TechnicalErrorDialog } from '@/components/dialogs'
 })
 export default class AmalgamationSelection extends Vue {
   @Getter(useConfigurationStore) getCreateUrl!: string
+  @Getter(useRootStore) getBusinessEmail!: string
+  @Getter(useRootStore) getFullPhoneNumber!: string
   @Getter(useBusinessStore) getIdentifier!: string
+  @Getter(useBusinessStore) getLegalName!: string
   @Getter(useBusinessStore) getLegalType!: CorpTypeCd
   @Getter(useBusinessStore) isBComp!: boolean
   @Getter(useBusinessStore) isBcCompany!: boolean
@@ -172,6 +173,9 @@ export default class AmalgamationSelection extends Vue {
 
   @Action(useRootStore) setStartingAmalgamationSpinner!: (x: boolean) => void
 
+  // enum for template
+  readonly AmalgamationTypes = AmalgamationTypes
+
   showErrorDialog = false
 
   /** Called when component is created. */
@@ -192,18 +196,21 @@ export default class AmalgamationSelection extends Vue {
     return 'Unknown'
   }
 
-  /** Called when Start Regular Long-form button is clicked. */
-  async startRegularAmalgamation (): Promise<any> {
+  /** Called when Start amalgamtion (regular, horizontal and vertical) button is clicked. */
+  async startAmalgamation (amalgamationType: AmalgamationTypes): Promise<any> {
     // Create a draft amalgamation application then redirect to Create UI.
     try {
       // show spinner since this is a network call
       this.setStartingAmalgamationSpinner(true)
-      const businessId = await this.createBusinessAA(AmalgamationTypes.REGULAR)
-      const amalgamationUrl = `${this.getCreateUrl}?id=${businessId}`
+      const businessId = await this.createBusinessAA(amalgamationType)
+      const route = this.isShortFormAmalgamation(amalgamationType)
+        ? 'amalg-short-information'
+        : 'amalg-reg-information'
+      const amalgamationUrl = `${this.getCreateUrl}${route}?id=${businessId}`
       navigate(amalgamationUrl)
       return
     } catch (error) {
-      console.log('Error: unable to amalgamate now =', error)
+      console.log('Error - unable to amalgamate now =', error)
       this.setStartingAmalgamationSpinner(false)
       this.showErrorDialog = true
     }
@@ -216,7 +223,10 @@ export default class AmalgamationSelection extends Vue {
    */
   private async createBusinessAA (type: AmalgamationTypes): Promise<string> {
     const accountId = +JSON.parse(sessionStorage.getItem('CURRENT_ACCOUNT'))?.id || 0
-    const legalType = this.getLegalType
+    const email = this.isShortFormAmalgamation(type) ? this.getBusinessEmail : ''
+    const phone = this.isShortFormAmalgamation(type) ? this.getFullPhoneNumber : ''
+    const legalName = this.isShortFormAmalgamation(type) ? this.getLegalName : ''
+    const correctNameOption = this.isShortFormAmalgamation(type) ? CorrectNameOptions.CORRECT_AML_ADOPT : null
 
     const draftAmalgamationApplication = {
       filing: {
@@ -225,18 +235,46 @@ export default class AmalgamationSelection extends Vue {
           accountId
         },
         business: {
-          legalType
+          legalType: this.getLegalType
         },
         amalgamationApplication: {
           nameRequest: {
-            legalType
+            legalName,
+            legalType: this.getLegalType,
+            correctNameOption
           },
-          type
+          type,
+          contactPoint: {
+            email,
+            phone
+          }
         }
       }
     } as any
 
-    // if this is a regular amalgamation, pre-populate the current business as a TING
+    // For Horizontal amalgamation, set current business as the Primary business.
+    if (type === AmalgamationTypes.HORIZONTAL) {
+      draftAmalgamationApplication.filing.amalgamationApplication.amalgamatingBusinesses = [
+        {
+          type: AmlTypes.LEAR,
+          role: AmlRoles.PRIMARY,
+          identifier: this.getIdentifier
+        }
+      ]
+    }
+
+    // For Vertical amalgamation, set current business as the Holding business.
+    if (type === AmalgamationTypes.VERTICAL) {
+      draftAmalgamationApplication.filing.amalgamationApplication.amalgamatingBusinesses = [
+        {
+          type: AmlTypes.LEAR,
+          role: AmlRoles.HOLDING,
+          identifier: this.getIdentifier
+        }
+      ]
+    }
+
+    // For Regular amalgamation, set the current business as an amalgamating business.
     if (type === AmalgamationTypes.REGULAR) {
       draftAmalgamationApplication.filing.amalgamationApplication.amalgamatingBusinesses = [
         {
@@ -248,7 +286,7 @@ export default class AmalgamationSelection extends Vue {
     }
 
     // create the draft business record
-    // (throws an exception on error, which startRegularAmalgamation() will handle)
+    // (throws an exception on error, which startAmalgamation() will handle)
     const filing = await LegalServices.createDraftBusiness(draftAmalgamationApplication)
 
     // validate and return the identifier
@@ -256,6 +294,11 @@ export default class AmalgamationSelection extends Vue {
     if (!identifier) throw new Error('Invalid business identifier')
     return identifier
   }
+
+  /** Returns True if specified type is a short-form amalgamation. */
+  private isShortFormAmalgamation (type: AmalgamationTypes): boolean {
+    return (type === AmalgamationTypes.HORIZONTAL || type === AmalgamationTypes.VERTICAL)
+  }
 }
 </script>
 
diff --git a/src/views/Dashboard.vue b/src/views/Dashboard.vue
index 9415ed2a4..2c6c3b14f 100644
--- a/src/views/Dashboard.vue
+++ b/src/views/Dashboard.vue
@@ -296,10 +296,10 @@ export default {
         'getIdentifier',
         'hasComplianceWarning',
         'hasMissingInfoWarning',
-        'isFutureEffectiveAmalgamation',
         'isAdminFrozen',
         'isBenBcCccUlc',
         'isFirm',
+        'isFutureEffectiveAmalgamation',
         'isGoodStanding',
         'isHistorical',
         'isPartnership',
diff --git a/tests/unit/AmalgamationFiling.spec.ts b/tests/unit/AmalgamationFiling.spec.ts
index 631211ec5..d5eb05032 100644
--- a/tests/unit/AmalgamationFiling.spec.ts
+++ b/tests/unit/AmalgamationFiling.spec.ts
@@ -16,13 +16,16 @@ const vuetify = new Vuetify({})
 setActivePinia(createPinia())
 const businessStore = useBusinessStore()
 
-describe('Amalgamation Filing', () => {
+describe('Regular amalgamation Filing', () => {
   let wrapper: Wrapper<AmalgamationFiling>
 
   beforeAll(() => {
     // init store
     businessStore.setLegalName('MY COMPANY')
 
+    // ensure tempRegNumber doesn't exist
+    sessionStorage.setItem('TEMP_REG_NUMBER', null)
+
     wrapper = mount(AmalgamationFiling, {
       vuetify,
       propsData: {
@@ -49,13 +52,73 @@ describe('Amalgamation Filing', () => {
     wrapper.destroy()
   })
 
-  it('Displays expected content with a valid filing', () => {
+  it('Displays expected content with a valid filing', async () => {
     // verify content
     expect(wrapper.find('.item-header-title').text()).toBe('Amalgamation Application - Regular')
     expect(wrapper.find('.item-header-subtitle').text()).toContain('FILED AND PAID')
     expect(wrapper.find('.item-header-subtitle').text()).toContain('(filed by John Doe on Jan 1, 2021)')
     expect(wrapper.find('.item-header-subtitle').text()).toContain('EFFECTIVE as of Jan 1, 2021')
+    expect(wrapper.find('.view-details').text()).toBe('View Documents')
+    expect(wrapper.find('.hide-details').text()).toBe('Hide Documents')
+
+    await wrapper.find('.view-details').trigger('click')
+    expect(wrapper.find('.completed-ia-details').exists()).toBe(true)
+    expect(wrapper.find('h4').text()).toBe('Amalgamation Complete')
+    expect(wrapper.find('p').text()).toBe('MY COMPANY has been successfully amalgamated.')
+
+    wrapper.destroy()
+  })
+})
+
+// Unit test assertions for Vertical amalgamation are pretty much the same except 'displayName'
+// Reducing it to one as both tests are quite similar
+describe('Horizontal amalgamation Filing', () => {
+  let wrapper: Wrapper<AmalgamationFiling>
+
+  beforeAll(() => {
+    // init store
+    businessStore.setLegalName('MY COMPANY')
+
+    wrapper = mount(AmalgamationFiling, {
+      vuetify,
+      propsData: {
+        filing: {
+          comments: [],
+          commentsCount: 0,
+          commentsLink: null,
+          displayName: 'Amalgamation Application - Horizontal',
+          documents: [],
+          documentsLink: 'dummy_link',
+          data: {},
+          effectiveDate: new Date('2021-01-01 08:00:00 GMT'),
+          name: FilingTypes.AMALGAMATION_APPLICATION,
+          status: FilingStatus.COMPLETED,
+          submittedDate: new Date('2021-01-01 08:00:00 GMT'),
+          submitter: 'John Doe'
+        },
+        index: 0
+      }
+    })
+  })
+
+  afterAll(() => {
+    wrapper.destroy()
+  })
+
+  it('Displays expected content with a valid filing', async () => {
+    // verify content
+    expect(wrapper.find('.item-header-title').text()).toBe('Amalgamation Application - Horizontal')
+    expect(wrapper.find('.item-header-subtitle').text()).toContain('FILED AND PAID')
+    expect(wrapper.find('.item-header-subtitle').text()).toContain('(filed by John Doe on Jan 1, 2021)')
+    expect(wrapper.find('.item-header-subtitle').text()).toContain('EFFECTIVE as of Jan 1, 2021')
+    expect(wrapper.find('.view-details').text()).toBe('View Documents')
+    expect(wrapper.find('.hide-details').text()).toBe('Hide Documents')
 
-    // FUTURE: expand the panel and verify content
+    await wrapper.find('.view-details').trigger('click')
+    expect(wrapper.find('.completed-ia-details').exists()).toBe(true)
+    expect(wrapper.find('h4').text()).toBe('Amalgamation Complete')
+    expect(wrapper.find('p').text()).toBe('MY COMPANY has been successfully amalgamated.')
+
+    wrapper.destroy()
   })
 })
diff --git a/tests/unit/AmalgamationSelection.spec.ts b/tests/unit/AmalgamationSelection.spec.ts
index 2d4ddf417..68a074a00 100644
--- a/tests/unit/AmalgamationSelection.spec.ts
+++ b/tests/unit/AmalgamationSelection.spec.ts
@@ -42,25 +42,27 @@ describe('AmalgamationSelection', () => {
   })
 
   it('content of horizontal short form card is correct', () => {
+    useBusinessStore().setLegalType(CorpTypeCd.BC_COMPANY)
+
     expect(wrapper.find('#start-horizontal-short-form-card > h2').text()).toBe('Horizontal short-form amalgamation')
     expect(wrapper.find('#start-horizontal-short-form-card > p').text()).toContain(
       'A horizontal short-form amalgamation can be used if the amalgamating corporations')
     expect(wrapper.find('#start-horizontal-short-form-card > p').text()).toContain(
       'are all wholly owned subsidiaries of the same holding body corporate.')
     expect(wrapper.find('#horizontal-short-form-btn').text()).toBe('Start Horizontal Short-form')
-    // TODO: Need to update this line when short form amalgamations are implemented
-    expect(wrapper.find('#horizontal-short-form-btn').classes()).toContain('v-btn--disabled') // disabled
+    expect(wrapper.find('#horizontal-short-form-btn').classes()).not.toContain('v-btn--disabled')
   })
 
   it('content of vertical short form card is correct', () => {
+    useBusinessStore().setLegalType(CorpTypeCd.BC_COMPANY)
+
     expect(wrapper.find('#start-vertical-short-form-card > h2').text()).toBe('Vertical short-form amalgamation')
     expect(wrapper.find('#start-vertical-short-form-card > p').text()).toContain(
       'A vertical short-form amalgamation can be used if the subsidiary')
     expect(wrapper.find('#start-vertical-short-form-card > p').text()).toContain(
       'corporations are wholly owned by the corporation they are amalgamating with.')
     expect(wrapper.find('#vertical-short-form-btn').text()).toBe('Start Vertical Short-form')
-    // TODO: Need to update this line when short form amalgamations are implemented
-    expect(wrapper.find('#vertical-short-form-btn').classes()).toContain('v-btn--disabled') // disabled
+    expect(wrapper.find('#vertical-short-form-btn').classes()).not.toContain('v-btn--disabled')
   })
 
   it('content of regular long form card is correct', () => {
@@ -85,4 +87,20 @@ describe('AmalgamationSelection', () => {
 
     expect(createFiling).toHaveBeenCalled()
   })
+
+  it('start horizontal short-form button clicked', async () => {
+    const createFiling = vi.spyOn((LegalServices as any), 'createDraftBusiness')
+    const button = wrapper.find('#horizontal-short-form-btn')
+    await button.trigger('click')
+
+    expect(createFiling).toHaveBeenCalled()
+  })
+
+  it('start vertical short-form button clicked', async () => {
+    const createFiling = vi.spyOn((LegalServices as any), 'createDraftBusiness')
+    const button = wrapper.find('#vertical-short-form-btn')
+    await button.trigger('click')
+
+    expect(createFiling).toHaveBeenCalled()
+  })
 })
diff --git a/tests/unit/App.spec.ts b/tests/unit/App.spec.ts
index 7b48c6e77..f677658c7 100644
--- a/tests/unit/App.spec.ts
+++ b/tests/unit/App.spec.ts
@@ -2238,7 +2238,7 @@ describe('App as a COMPLETED Registration Application', () => {
   })
 })
 
-describe('App as a draft numbered amalgamation application', () => {
+describe('App as a draft numbered regular amalgamation application', () => {
   let wrapper: Wrapper<Vue>
 
   beforeAll(() => {
@@ -2311,7 +2311,7 @@ describe('App as a draft numbered amalgamation application', () => {
     wrapper.destroy()
   })
 
-  it('fetches amalgamation filing properly', () => {
+  it('fetches regular amalgamation filing properly', () => {
     expect(rootStore.getNameRequest).toBeNull()
     expect(rootStore.getEntityStatus).toBe(EntityStatus.DRAFT_AMALGAMATION)
     expect(businessStore.getIdentifier).toBe('T123456789')
@@ -2329,11 +2329,11 @@ describe('App as a draft numbered amalgamation application', () => {
     expect(rootStore.tasks[0].task.filing.header.name).toBe('amalgamationApplication')
     expect(rootStore.tasks[0].task.filing.header.status).toBe('DRAFT')
     expect(rootStore.tasks[0].task.filing.amalgamationApplication).not.toBeNull()
-    expect(rootStore.tasks[0].task.filing.displayName).toBe('BC Limited Company Amalgamation Application - Regular')
+    expect(rootStore.tasks[0].task.filing.displayName).toBe('Amalgamation Application (Regular)')
   })
 })
 
-describe('App as a draft named amalgamation application', () => {
+describe('App as a draft named regular amalgamation application', () => {
   let wrapper: Wrapper<Vue>
 
   beforeAll(() => {
@@ -2425,7 +2425,7 @@ describe('App as a draft named amalgamation application', () => {
     wrapper.destroy()
   })
 
-  it('fetches amalgamation filing properly', () => {
+  it('fetches regular amalgamation filing properly', () => {
     expect(rootStore.getNameRequest.nrNum).toBe('NR 1234567')
     expect(rootStore.getEntityStatus).toBe(EntityStatus.DRAFT_AMALGAMATION)
     expect(businessStore.getIdentifier).toBe('T123456789')
@@ -2443,11 +2443,11 @@ describe('App as a draft named amalgamation application', () => {
     expect(rootStore.tasks[0].task.filing.header.name).toBe('amalgamationApplication')
     expect(rootStore.tasks[0].task.filing.header.status).toBe('DRAFT')
     expect(rootStore.tasks[0].task.filing.amalgamationApplication).not.toBeNull()
-    expect(rootStore.tasks[0].task.filing.displayName).toBe('BC Limited Company Amalgamation Application - Regular')
+    expect(rootStore.tasks[0].task.filing.displayName).toBe('Amalgamation Application (Regular)')
   })
 })
 
-describe('App as a completed amalgamation application', () => {
+describe('App as a completed regular amalgamation application', () => {
   // Intermediate scenario - still using Temp Reg Number
   let wrapper: Wrapper<Vue>
 
@@ -2525,7 +2525,7 @@ describe('App as a completed amalgamation application', () => {
     wrapper.destroy()
   })
 
-  it('fetches amalgamation filing properly', () => {
+  it('fetches regular amalgamation filing properly', () => {
     expect(rootStore.getNameRequest).toBeNull()
     expect(rootStore.getEntityStatus).toBe(EntityStatus.FILED_AMALGAMATION)
     expect(businessStore.getIdentifier).toBe('T123456789')
@@ -2538,7 +2538,7 @@ describe('App as a completed amalgamation application', () => {
     // verify loaded filing
     expect(filingHistoryListStore.filings.length).toBe(1)
     expect(filingHistoryListStore.filings[0].businessIdentifier).toBe('T123456789')
-    expect(filingHistoryListStore.filings[0].displayName).toBe('BC Limited Company Amalgamation Application - Regular')
+    expect(filingHistoryListStore.filings[0].displayName).toBe('Amalgamation Application (Regular)')
     expect(filingHistoryListStore.filings[0].filingSubType).toBe(FilingSubTypes.AMALGAMATION_REGULAR)
     expect(filingHistoryListStore.filings[0].name).toBe('amalgamationApplication')
     expect(filingHistoryListStore.filings[0].status).toBe('COMPLETED')
@@ -2546,3 +2546,409 @@ describe('App as a completed amalgamation application', () => {
     expect(filingHistoryListStore.filings[0].data.legalFilings).toEqual(['amalgamationApplication'])
   })
 })
+
+describe('App as a draft horizontal amalgamation application', () => {
+  let wrapper: Wrapper<Vue>
+
+  beforeAll(() => {
+    // clear store
+    businessStore.setLegalName(null)
+    rootStore.setNameRequest(null)
+    rootStore.setTasks([])
+    filingHistoryListStore.setFilings([])
+
+    sessionStorage.clear()
+    sessionStorage.setItem('KEYCLOAK_TOKEN', KEYCLOAK_TOKEN_USER)
+    sessionStorage.setItem('TEMP_REG_NUMBER', 'T123456789')
+  })
+
+  beforeEach(async () => {
+    // mock "fetchAuthorizations" auth service
+    vi.spyOn(AuthServices, 'fetchAuthorizations').mockImplementation((): any => {
+      return Promise.resolve({
+        data: { roles: ['edit', 'view'] }
+      })
+    })
+
+    // mock "fetchUserInfo" auth service
+    vi.spyOn(AuthServices, 'fetchUserInfo').mockImplementation((): any => {
+      return Promise.resolve(USER_INFO)
+    })
+
+    // mock "fetchDraftApp" legal service
+    vi.spyOn(LegalServices, 'fetchDraftApp').mockImplementation((): any => {
+      return Promise.resolve({
+        filing: {
+          business: {
+            identifier: 'T123456789',
+            legalType: CorpTypeCd.BC_COMPANY
+          },
+          header: {
+            date: '2020-05-21T00:11:55.887740+00:00',
+            filingId: 789,
+            name: FilingTypes.AMALGAMATION_APPLICATION,
+            status: FilingStatus.DRAFT
+          },
+          amalgamationApplication: {
+            nameRequest: {
+              legalType: CorpTypeCd.BC_COMPANY
+            },
+            contactPoint: {
+              email: 'tester@test.com',
+              phone: '(123) 456-7890'
+            },
+            type: AmalgamationTypes.HORIZONTAL
+          }
+        }
+      })
+    })
+
+    // mock "UpdateLdUser" auth service
+    vi.spyOn(utils, 'UpdateLdUser').mockImplementation((): any => {
+      return Promise.resolve()
+    })
+
+    // create a Local Vue and install router (and store) on it
+    const localVue = createLocalVue()
+    localVue.use(VueRouter)
+    const router = mockRouter.mock()
+    router.push({ name: 'dashboard' })
+
+    wrapper = shallowMount(App, { localVue, router, vuetify })
+
+    // wait for everything to settle
+    await flushPromises()
+  })
+
+  afterEach(() => {
+    wrapper.destroy()
+  })
+
+  it('fetches horizontal amalgamation filing properly', () => {
+    expect(rootStore.getNameRequest).toBeNull()
+    expect(rootStore.getEntityStatus).toBe(EntityStatus.DRAFT_AMALGAMATION)
+    expect(businessStore.getIdentifier).toBe('T123456789')
+    expect(businessStore.isBcCompany).toBe(true)
+    expect(businessStore.isGoodStanding).toBe(true)
+    expect(businessStore.getLegalName).toBeNull()
+    expect(rootStore.isDraftAmalgamation).toBe(true)
+    expect(rootStore.isAppTask).toBe(true)
+
+    // verify loaded task
+    expect(rootStore.tasks.length).toBe(1)
+    expect(rootStore.tasks[0].enabled).toBe(true)
+    expect(rootStore.tasks[0].order).toBe(1)
+    expect(rootStore.tasks[0].task.filing.business).not.toBeNull()
+    expect(rootStore.tasks[0].task.filing.header.name).toBe('amalgamationApplication')
+    expect(rootStore.tasks[0].task.filing.header.status).toBe('DRAFT')
+    expect(rootStore.tasks[0].task.filing.amalgamationApplication).not.toBeNull()
+    expect(rootStore.tasks[0].task.filing.displayName).toBe('Amalgamation Application Short-form (Horizontal)')
+  })
+})
+
+describe('App as a completed horizontal amalgamation application', () => {
+  // Intermediate scenario - still using Temp Reg Number
+  let wrapper: Wrapper<Vue>
+
+  beforeAll(() => {
+    // clear store
+    businessStore.setLegalName(null)
+    rootStore.setNameRequest(null)
+    rootStore.setTasks([])
+    filingHistoryListStore.setFilings([])
+
+    sessionStorage.clear()
+    sessionStorage.setItem('KEYCLOAK_TOKEN', KEYCLOAK_TOKEN_USER)
+    sessionStorage.setItem('TEMP_REG_NUMBER', 'T123456789')
+  })
+
+  beforeEach(async () => {
+    // mock "fetchAuthorizations" auth service
+    vi.spyOn(AuthServices, 'fetchAuthorizations').mockImplementation((): any => {
+      return Promise.resolve({
+        data: { roles: ['edit', 'view'] }
+      })
+    })
+
+    // mock "fetchUserInfo" auth service
+    vi.spyOn(AuthServices, 'fetchUserInfo').mockImplementation((): any => {
+      return Promise.resolve(USER_INFO)
+    })
+
+    // mock "fetchDraftApp" legal service
+    vi.spyOn(LegalServices, 'fetchDraftApp').mockImplementation((): any => {
+      return Promise.resolve({
+        filing: {
+          business: {
+            identifier: 'T123456789',
+            legalType: CorpTypeCd.BC_COMPANY
+          },
+          header: {
+            date: '2020-05-21T00:11:55.887740+00:00',
+            effectiveDate: '2020-05-21T00:11:55.887740+00:00',
+            filingId: 789,
+            name: FilingTypes.AMALGAMATION_APPLICATION,
+            status: FilingStatus.COMPLETED
+          },
+          amalgamationApplication: {
+            nameRequest: {
+              nrNumber: 'NR 1234567',
+              legalType: CorpTypeCd.BC_COMPANY
+            },
+            offices: BCOMP_ADDRESSES,
+            parties: BCOMP_PARTIES,
+            contactPoint: {
+              email: 'tester@test.com',
+              phone: '(123) 456-7890'
+            },
+            type: AmalgamationTypes.HORIZONTAL
+          }
+        }
+      })
+    })
+
+    // mock "UpdateLdUser" auth service
+    vi.spyOn(utils, 'UpdateLdUser').mockImplementation((): any => {
+      return Promise.resolve()
+    })
+
+    // create a Local Vue and install router on it
+    const localVue = createLocalVue()
+    localVue.use(VueRouter)
+    const router = mockRouter.mock()
+    router.push({ name: 'dashboard' })
+
+    wrapper = shallowMount(App, { localVue, router, vuetify })
+
+    // wait for everything to settle
+    await flushPromises()
+  })
+
+  afterEach(() => {
+    wrapper.destroy()
+  })
+
+  it('fetches regular amalgamation filing properly', () => {
+    expect(rootStore.getNameRequest).toBeNull()
+    expect(rootStore.getEntityStatus).toBe(EntityStatus.FILED_AMALGAMATION)
+    expect(businessStore.getIdentifier).toBe('T123456789')
+    expect(businessStore.isBcCompany).toBe(true)
+    expect(businessStore.isGoodStanding).toBe(true)
+    expect(businessStore.getLegalName).toBeNull()
+    expect(rootStore.isFiledAmalgamation).toBe(true)
+    expect(rootStore.isAppFiling).toBe(true)
+
+    // verify loaded filing
+    expect(filingHistoryListStore.filings.length).toBe(1)
+    expect(filingHistoryListStore.filings[0].businessIdentifier).toBe('T123456789')
+    expect(filingHistoryListStore.filings[0].displayName).toBe('Amalgamation Application Short-form (Horizontal)')
+    expect(filingHistoryListStore.filings[0].filingSubType).toBe(FilingSubTypes.AMALGAMATION_HORIZONTAL)
+    expect(filingHistoryListStore.filings[0].name).toBe('amalgamationApplication')
+    expect(filingHistoryListStore.filings[0].status).toBe('COMPLETED')
+    expect(filingHistoryListStore.filings[0].data.applicationDate).toBe('2020-05-20')
+    expect(filingHistoryListStore.filings[0].data.legalFilings).toEqual(['amalgamationApplication'])
+  })
+})
+
+describe('App as a draft vertical amalgamation application', () => {
+  let wrapper: Wrapper<Vue>
+
+  beforeAll(() => {
+    // clear store
+    businessStore.setLegalName(null)
+    rootStore.setNameRequest(null)
+    rootStore.setTasks([])
+    filingHistoryListStore.setFilings([])
+
+    sessionStorage.clear()
+    sessionStorage.setItem('KEYCLOAK_TOKEN', KEYCLOAK_TOKEN_USER)
+    sessionStorage.setItem('TEMP_REG_NUMBER', 'T123456789')
+  })
+
+  beforeEach(async () => {
+    // mock "fetchAuthorizations" auth service
+    vi.spyOn(AuthServices, 'fetchAuthorizations').mockImplementation((): any => {
+      return Promise.resolve({
+        data: { roles: ['edit', 'view'] }
+      })
+    })
+
+    // mock "fetchUserInfo" auth service
+    vi.spyOn(AuthServices, 'fetchUserInfo').mockImplementation((): any => {
+      return Promise.resolve(USER_INFO)
+    })
+
+    // mock "fetchDraftApp" legal service
+    vi.spyOn(LegalServices, 'fetchDraftApp').mockImplementation((): any => {
+      return Promise.resolve({
+        filing: {
+          business: {
+            identifier: 'T123456789',
+            legalType: CorpTypeCd.BC_COMPANY
+          },
+          header: {
+            date: '2020-05-21T00:11:55.887740+00:00',
+            filingId: 789,
+            name: FilingTypes.AMALGAMATION_APPLICATION,
+            status: FilingStatus.DRAFT
+          },
+          amalgamationApplication: {
+            nameRequest: {
+              legalType: CorpTypeCd.BC_COMPANY
+            },
+            contactPoint: {
+              email: 'tester@test.com',
+              phone: '(123) 456-7890'
+            },
+            type: AmalgamationTypes.VERTICAL
+          }
+        }
+      })
+    })
+
+    // mock "UpdateLdUser" auth service
+    vi.spyOn(utils, 'UpdateLdUser').mockImplementation((): any => {
+      return Promise.resolve()
+    })
+
+    // create a Local Vue and install router (and store) on it
+    const localVue = createLocalVue()
+    localVue.use(VueRouter)
+    const router = mockRouter.mock()
+    router.push({ name: 'dashboard' })
+
+    wrapper = shallowMount(App, { localVue, router, vuetify })
+
+    // wait for everything to settle
+    await flushPromises()
+  })
+
+  afterEach(() => {
+    wrapper.destroy()
+  })
+
+  it('fetches vertical amalgamation filing properly', () => {
+    expect(rootStore.getNameRequest).toBeNull()
+    expect(rootStore.getEntityStatus).toBe(EntityStatus.DRAFT_AMALGAMATION)
+    expect(businessStore.getIdentifier).toBe('T123456789')
+    expect(businessStore.isBcCompany).toBe(true)
+    expect(businessStore.isGoodStanding).toBe(true)
+    expect(businessStore.getLegalName).toBeNull()
+    expect(rootStore.isDraftAmalgamation).toBe(true)
+    expect(rootStore.isAppTask).toBe(true)
+
+    // verify loaded task
+    expect(rootStore.tasks.length).toBe(1)
+    expect(rootStore.tasks[0].enabled).toBe(true)
+    expect(rootStore.tasks[0].order).toBe(1)
+    expect(rootStore.tasks[0].task.filing.business).not.toBeNull()
+    expect(rootStore.tasks[0].task.filing.header.name).toBe('amalgamationApplication')
+    expect(rootStore.tasks[0].task.filing.header.status).toBe('DRAFT')
+    expect(rootStore.tasks[0].task.filing.amalgamationApplication).not.toBeNull()
+    expect(rootStore.tasks[0].task.filing.displayName).toBe('Amalgamation Application Short-form (Vertical)')
+  })
+})
+
+describe('App as a completed vertical amalgamation application', () => {
+  // Intermediate scenario - still using Temp Reg Number
+  let wrapper: Wrapper<Vue>
+
+  beforeAll(() => {
+    // clear store
+    businessStore.setLegalName(null)
+    rootStore.setNameRequest(null)
+    rootStore.setTasks([])
+    filingHistoryListStore.setFilings([])
+
+    sessionStorage.clear()
+    sessionStorage.setItem('KEYCLOAK_TOKEN', KEYCLOAK_TOKEN_USER)
+    sessionStorage.setItem('TEMP_REG_NUMBER', 'T123456789')
+  })
+
+  beforeEach(async () => {
+    // mock "fetchAuthorizations" auth service
+    vi.spyOn(AuthServices, 'fetchAuthorizations').mockImplementation((): any => {
+      return Promise.resolve({
+        data: { roles: ['edit', 'view'] }
+      })
+    })
+
+    // mock "fetchUserInfo" auth service
+    vi.spyOn(AuthServices, 'fetchUserInfo').mockImplementation((): any => {
+      return Promise.resolve(USER_INFO)
+    })
+
+    // mock "fetchDraftApp" legal service
+    vi.spyOn(LegalServices, 'fetchDraftApp').mockImplementation((): any => {
+      return Promise.resolve({
+        filing: {
+          business: {
+            identifier: 'T123456789',
+            legalType: CorpTypeCd.BC_COMPANY
+          },
+          header: {
+            date: '2020-05-21T00:11:55.887740+00:00',
+            effectiveDate: '2020-05-21T00:11:55.887740+00:00',
+            filingId: 789,
+            name: FilingTypes.AMALGAMATION_APPLICATION,
+            status: FilingStatus.COMPLETED
+          },
+          amalgamationApplication: {
+            nameRequest: {
+              nrNumber: 'NR 1234567',
+              legalType: CorpTypeCd.BC_COMPANY
+            },
+            offices: BCOMP_ADDRESSES,
+            parties: BCOMP_PARTIES,
+            contactPoint: {
+              email: 'tester@test.com',
+              phone: '(123) 456-7890'
+            },
+            type: AmalgamationTypes.VERTICAL
+          }
+        }
+      })
+    })
+
+    // mock "UpdateLdUser" auth service
+    vi.spyOn(utils, 'UpdateLdUser').mockImplementation((): any => {
+      return Promise.resolve()
+    })
+
+    // create a Local Vue and install router on it
+    const localVue = createLocalVue()
+    localVue.use(VueRouter)
+    const router = mockRouter.mock()
+    router.push({ name: 'dashboard' })
+
+    wrapper = shallowMount(App, { localVue, router, vuetify })
+
+    // wait for everything to settle
+    await flushPromises()
+  })
+
+  afterEach(() => {
+    wrapper.destroy()
+  })
+
+  it('fetches regular amalgamation filing properly', () => {
+    expect(rootStore.getNameRequest).toBeNull()
+    expect(rootStore.getEntityStatus).toBe(EntityStatus.FILED_AMALGAMATION)
+    expect(businessStore.getIdentifier).toBe('T123456789')
+    expect(businessStore.isBcCompany).toBe(true)
+    expect(businessStore.isGoodStanding).toBe(true)
+    expect(businessStore.getLegalName).toBeNull()
+    expect(rootStore.isFiledAmalgamation).toBe(true)
+    expect(rootStore.isAppFiling).toBe(true)
+
+    // verify loaded filing
+    expect(filingHistoryListStore.filings.length).toBe(1)
+    expect(filingHistoryListStore.filings[0].businessIdentifier).toBe('T123456789')
+    expect(filingHistoryListStore.filings[0].displayName).toBe('Amalgamation Application Short-form (Vertical)')
+    expect(filingHistoryListStore.filings[0].filingSubType).toBe(FilingSubTypes.AMALGAMATION_VERTICAL)
+    expect(filingHistoryListStore.filings[0].name).toBe('amalgamationApplication')
+    expect(filingHistoryListStore.filings[0].status).toBe('COMPLETED')
+    expect(filingHistoryListStore.filings[0].data.applicationDate).toBe('2020-05-20')
+    expect(filingHistoryListStore.filings[0].data.legalFilings).toEqual(['amalgamationApplication'])
+  })
+})
diff --git a/tests/unit/Dashboard.spec.ts b/tests/unit/Dashboard.spec.ts
index 59284147f..fba350b63 100644
--- a/tests/unit/Dashboard.spec.ts
+++ b/tests/unit/Dashboard.spec.ts
@@ -17,6 +17,13 @@ import FilingHistoryList from '@/components/Dashboard/FilingHistoryList.vue'
 import AddressListSm from '@/components/Dashboard/AddressListSm.vue'
 import DirectorListSm from '@/components/Dashboard/DirectorListSm.vue'
 
+// Alerts
+import Amalgamation from '@/components/Dashboard/Alerts/Amalgamation.vue'
+import FrozenInformation from '@/components/Dashboard/Alerts/FrozenInformation.vue'
+import MissingInformation from '@/components/Dashboard/Alerts/MissingInformation.vue'
+import NotInCompliance from '@/components/Dashboard/Alerts/NotInCompliance.vue'
+import NotInGoodStanding from '@/components/Dashboard/Alerts/NotInGoodStanding.vue'
+
 Vue.use(Vuetify)
 Vue.use(Vuelidate)
 
@@ -36,17 +43,35 @@ describe('Dashboard - UI', () => {
     wrapper = shallowMount(Dashboard, {
       vuetify,
       mocks: { $route },
+      // create local properties for use in computed object below
       data: () => ({
-        isInGoodStanding: true
+        _isFutureEffectiveAmalgamation: false,
+        _isAdminFrozen: false,
+        _hasMissingInfoWarning: false,
+        _hasComplianceWarning: false,
+        _isGoodStanding: true
       }),
+      // declare computed properties to override store getters/actions
       computed: {
+        isFutureEffectiveAmalgamation: {
+          get (): boolean { return this.$data._isFutureEffectiveAmalgamation },
+          set (val: boolean) { this.$data._isFutureEffectiveAmalgamation = val }
+        },
+        isAdminFrozen: {
+          get (): boolean { return this.$data._isAdminFrozen },
+          set (val: boolean) { this.$data._isAdminFrozen = val }
+        },
+        hasMissingInfoWarning: {
+          get (): boolean { return this.$data._hasMissingInfoWarning },
+          set (val: boolean) { this.$data._hasMissingInfoWarning = val }
+        },
+        hasComplianceWarning: {
+          get (): boolean { return this.$data._hasComplianceWarning },
+          set (val: boolean) { this.$data._hasComplianceWarning = val }
+        },
         isGoodStanding: {
-          get (): boolean {
-            return this.$data.isInGoodStanding
-          },
-          set (val: boolean) {
-            this.$data.isInGoodStanding = val
-          }
+          get (): boolean { return this.$data._isGoodStanding },
+          set (val: boolean) { this.$data._isGoodStanding = val }
         }
       }
     })
@@ -63,6 +88,26 @@ describe('Dashboard - UI', () => {
     expect(wrapper.findComponent(FilingHistoryList).exists()).toBe(true)
     expect(wrapper.findComponent(AddressListSm).exists()).toBe(true)
     expect(wrapper.findComponent(DirectorListSm).exists()).toBe(true)
+
+    // verify no alerts are displayed
+    expect(wrapper.find('#dashboard-alerts-section').exists()).toBe(false)
+  })
+
+  it('identifies app tasks vs app filings', () => {
+    const tests = [
+      { entityStatus: EntityStatus.DRAFT_AMALGAMATION, isAppTask: true },
+      { entityStatus: EntityStatus.DRAFT_INCORP_APP, isAppTask: true },
+      { entityStatus: EntityStatus.DRAFT_REGISTRATION, isAppTask: true },
+      { entityStatus: EntityStatus.FILED_AMALGAMATION, isAppFiling: true },
+      { entityStatus: EntityStatus.FILED_INCORP_APP, isAppFiling: true },
+      { entityStatus: EntityStatus.FILED_REGISTRATION, isAppFiling: true }
+    ]
+
+    tests.forEach((test) => {
+      rootStore.entityStatus = test.entityStatus
+      expect(vm.isAppTask).toBe(!!test.isAppTask)
+      expect(vm.isAppFiling).toBe(!!test.isAppFiling)
+    })
   })
 
   it('identifies app tasks vs app filings', () => {
@@ -165,12 +210,64 @@ describe('Dashboard - UI', () => {
     expect(localWrapper.find('#standalone-directors-button').attributes('disabled')).toBe('true')
   })
 
-  it('Alert does not display by default, and does display for business not in good standing', async () => {
-    expect(wrapper.find('#dashboard-alerts-section').exists()).toBe(false)
-    wrapper.setData({ isInGoodStanding: false })
-    await Vue.nextTick()
+  it('displays the Amalgamation alert', async () => {
+    // verify initially hidden
+    expect(wrapper.findComponent(Amalgamation).exists()).toBe(false)
+
+    // enable and verify displayed
+    await wrapper.setData({ isFutureEffectiveAmalgamation: true })
+    expect(wrapper.findComponent(Amalgamation).exists()).toBe(true)
+
+    // cleanup
+    await wrapper.setData({ isFutureEffectiveAmalgamation: false })
+  })
+
+  it('displays the Frozen Information alert', async () => {
+    // verify initially hidden
+    expect(wrapper.findComponent(FrozenInformation).exists()).toBe(false)
+
+    // enable and verify displayed
+    await wrapper.setData({ isAdminFrozen: true })
+    expect(wrapper.findComponent(FrozenInformation).exists()).toBe(true)
+
+    // cleanup
+    await wrapper.setData({ isAdminFrozen: false })
+  })
+
+  it('displays the Missing Information alert', async () => {
+    // verify initially hidden
+    expect(wrapper.findComponent(MissingInformation).exists()).toBe(false)
+
+    // enable and verify displayed
+    await wrapper.setData({ hasMissingInfoWarning: true })
+    expect(wrapper.findComponent(MissingInformation).exists()).toBe(true)
+
+    // cleanup
+    await wrapper.setData({ hasMissingInfoWarning: false })
+  })
+
+  it('displays the Not In Compliance alert', async () => {
+    // verify initially hidden
+    expect(wrapper.findComponent(NotInCompliance).exists()).toBe(false)
+
+    // enable and verify displayed
+    await wrapper.setData({ hasComplianceWarning: true })
+    expect(wrapper.findComponent(NotInCompliance).exists()).toBe(true)
+
+    // cleanup
+    await wrapper.setData({ hasComplianceWarning: false })
+  })
+
+  it('displays the Not In Good Standing alert', async () => {
+    // verify initially hidden
+    expect(wrapper.findComponent(NotInGoodStanding).exists()).toBe(false)
+
+    // enable and verify displayed
+    await wrapper.setData({ isGoodStanding: false })
+    expect(wrapper.findComponent(NotInGoodStanding).exists()).toBe(true)
 
-    expect(wrapper.find('#dashboard-alerts-section').exists()).toBe(true)
+    // cleanup
+    await wrapper.setData({ isGoodStanding: true })
   })
 })
 
diff --git a/tests/unit/EntityHeader.spec.ts b/tests/unit/EntityHeader.spec.ts
index 9d54c9b32..12caacbb1 100644
--- a/tests/unit/EntityHeader.spec.ts
+++ b/tests/unit/EntityHeader.spec.ts
@@ -7,7 +7,7 @@ import { useBusinessStore, useFilingHistoryListStore, useRootStore } from '@/sto
 import EntityHeader from '@/components/EntityInfo/EntityHeader.vue'
 import mockRouter from './mockRouter'
 import { CorpTypeCd } from '@bcrs-shared-components/corp-type-module'
-import { EntityStatus, FilingStatus, FilingTypes } from '@/enums'
+import { EntityState, EntityStatus, FilingStatus, FilingSubTypes, FilingTypes } from '@/enums'
 
 Vue.use(Vuetify)
 Vue.use(VueRouter)
@@ -108,7 +108,7 @@ describe('Entity Header - data', () => {
     expect(wrapper.find('#app-description').text()).toBe('BC Benefit Company Incorporation Application')
   })
 
-  it('displays draft numbered amalgamation application', async () => {
+  it('displays draft numbered amalgamation application - Regular', async () => {
     // set store properties
     businessStore.setLegalName(null)
     rootStore.entityStatus = EntityStatus.DRAFT_AMALGAMATION
@@ -135,7 +135,7 @@ describe('Entity Header - data', () => {
     expect(wrapper.find('#app-description').text()).toBe('BC Limited Company Amalgamation Application - Regular')
   })
 
-  it('displays draft named amalgamation application', async () => {
+  it('displays draft named amalgamation application - Regular', async () => {
     // set store properties
     businessStore.setLegalName('My Amalgamated Company')
     rootStore.entityStatus = EntityStatus.DRAFT_AMALGAMATION
@@ -162,7 +162,7 @@ describe('Entity Header - data', () => {
     expect(wrapper.find('#app-description').text()).toBe('BC Limited Company Amalgamation Application - Regular')
   })
 
-  it('displays filed numbered amalgamated company', async () => {
+  it('displays filed numbered amalgamated company - Regular', async () => {
     // set store properties
     businessStore.setLegalName(null)
     rootStore.entityStatus = EntityStatus.FILED_AMALGAMATION
@@ -190,7 +190,7 @@ describe('Entity Header - data', () => {
     expect(wrapper.find('#app-description').text()).toBe('BC Limited Company Amalgamation Application - Regular')
   })
 
-  it('displays filed named amalgamated company', async () => {
+  it('displays filed named amalgamated company - Regular', async () => {
     // set store properties
     businessStore.setLegalName('My Amalgamated Company')
     rootStore.entityStatus = EntityStatus.FILED_AMALGAMATION
@@ -218,7 +218,7 @@ describe('Entity Header - data', () => {
     expect(wrapper.find('#app-description').text()).toBe('BC Limited Company Amalgamation Application - Regular')
   })
 
-  it('displays numbered amalgamated company', async () => {
+  it('displays numbered amalgamated company - Regular amalgamation', async () => {
     // set store properties
     businessStore.setLegalName(null)
     rootStore.entityStatus = null
@@ -246,7 +246,7 @@ describe('Entity Header - data', () => {
     expect(wrapper.find('#business-description').text()).toBe('BC Limited Company')
   })
 
-  it('displays named amalgamated company', async () => {
+  it('displays named amalgamated company - Regular amalgamation', async () => {
     // set store properties
     businessStore.setLegalName('My Amalgamated Company')
     rootStore.entityStatus = null
@@ -273,56 +273,158 @@ describe('Entity Header - data', () => {
     expect(wrapper.find('#entity-legal-name').text()).toBe('My Amalgamated Company')
     expect(wrapper.find('#business-description').text()).toBe('BC Limited Company')
   })
+
+  // Unit test assertions for Vertical amalgamation are pretty much the same except 'displayName'
+  // Reducing it to one as both tests are quite similar
+  it('displays draft numbered amalgamation application - Horizontal', async () => {
+    // set store properties
+    businessStore.setLegalName(null)
+    rootStore.entityStatus = EntityStatus.DRAFT_AMALGAMATION
+    businessStore.setLegalType(CorpTypeCd.BC_COMPANY)
+    filingHistoryListStore.setFilings([])
+    rootStore.setTasks([
+      {
+        task: {
+          filing: {
+            displayName: 'BC Limited Company Amalgamation Application - Horizontal'
+          }
+        }
+      } as any
+    ])
+
+    const wrapper = shallowMount(EntityHeader, {
+      vuetify,
+      router,
+      propsData: { businessId: null, tempRegNumber: 'T1234567' }
+    })
+    await Vue.nextTick()
+
+    expect(wrapper.find('#app-name').text()).toBe('Numbered Amalgamated Company')
+    expect(wrapper.find('#app-description').text()).toBe('BC Limited Company Amalgamation Application - Horizontal')
+  })
+
+  // Unit test assertions for Vertical amalgamation are pretty much the same except 'displayName'
+  // Reducing it to one as both tests are quite similar
+  it('displays filed numbered amalgamated company - Horizontal', async () => {
+    // set store properties
+    businessStore.setLegalName(null)
+    rootStore.entityStatus = EntityStatus.FILED_AMALGAMATION
+    businessStore.setLegalType(CorpTypeCd.BC_COMPANY)
+    rootStore.setTasks([])
+    filingHistoryListStore.setFilings([
+      {
+        displayLedger: true,
+        displayName: 'BC Limited Company Amalgamation Application - Horizontal',
+        effectiveDate: '2019-06-02 19:22:59 GMT',
+        name: FilingTypes.AMALGAMATION_APPLICATION,
+        status: FilingStatus.COMPLETED,
+        submittedDate: 'Sun, 02 Jun 2019 19:22:59 GMT'
+      } as any
+    ])
+
+    const wrapper = shallowMount(EntityHeader, {
+      vuetify,
+      router,
+      propsData: { businessId: null, tempRegNumber: 'T1234567' }
+    })
+    await Vue.nextTick()
+
+    expect(wrapper.find('#app-name').text()).toBe('Numbered Amalgamated Company')
+    expect(wrapper.find('#app-description').text()).toBe('BC Limited Company Amalgamation Application - Horizontal')
+  })
+
+  // Unit test assertions for Vertical amalgamation are pretty much the same except 'displayName'
+  // Reducing it to one as both tests are quite similar
+  it('displays numbered amalgamated company - Horizontal amalgamation', async () => {
+    // set store properties
+    businessStore.setLegalName(null)
+    rootStore.entityStatus = null
+    businessStore.setLegalType(CorpTypeCd.BC_COMPANY)
+    rootStore.setTasks([])
+    filingHistoryListStore.setFilings([
+      {
+        displayLedger: true,
+        displayName: 'BC Limited Company Amalgamation Application - Horizontal',
+        effectiveDate: '2019-06-02 19:22:59 GMT',
+        name: FilingTypes.AMALGAMATION_APPLICATION,
+        status: FilingStatus.COMPLETED,
+        submittedDate: 'Sun, 02 Jun 2019 19:22:59 GMT'
+      } as any
+    ])
+
+    const wrapper = shallowMount(EntityHeader, {
+      vuetify,
+      router,
+      propsData: { businessId: 'BC1234567', tempRegNumber: null }
+    })
+    await Vue.nextTick()
+
+    expect(wrapper.find('#entity-legal-name').text()).toBe('Numbered Limited Company')
+    expect(wrapper.find('#business-description').text()).toBe('BC Limited Company')
+  })
 })
 
 describe('Entity Header - HISTORICAL badge', () => {
   const router = mockRouter.mock()
 
   const variations = [
-    { // 0
-      entityState: 'ACTIVE',
+    { // variation 0 - active business
+      businessState: EntityState.ACTIVE,
       exists: false
     },
-    { // 1
-      entityState: 'LIQUIDATION',
+    { // variation 1 - business in liquidation
+      businessState: EntityState.LIQUIDATION,
       exists: false
     },
-    { // 2
-      entityState: 'HISTORICAL',
+    { // variation 2 - historical busines due to unknown reason
+      businessState: EntityState.HISTORICAL,
       stateFiling: null,
       exists: true,
       text: 'Unknown Reason'
     },
-    { // 3
-      entityState: 'HISTORICAL',
+    { // variation 3 - historical business due to voluntary dissolution
+      businessState: EntityState.HISTORICAL,
       stateFiling: {
-        header: { name: 'dissolution' },
+        header: { name: FilingTypes.DISSOLUTION },
         dissolution: {
           dissolutionDate: '2020-01-01',
-          dissolutionType: 'voluntary'
+          dissolutionType: FilingSubTypes.DISSOLUTION_VOLUNTARY
         }
       },
       exists: true,
       text: 'Voluntary Dissolution – January 1, 2020'
     },
-    { // 4
-      entityState: 'HISTORICAL',
+    { // variation 4 - historical company due to involuntary dissolution
+      businessState: EntityState.HISTORICAL,
       stateFiling: {
-        header: {
-          name: 'involuntaryDissolution',
-          effectiveDate: '2020-01-01T08:01:00+00:00'
+        header: { name: FilingTypes.DISSOLUTION },
+        dissolution: {
+          dissolutionDate: '2020-01-01',
+          dissolutionType: FilingSubTypes.DISSOLUTION_INVOLUNTARY
+        }
+      },
+      exists: true,
+      text: 'Involuntary Dissolution – January 1, 2020'
+    },
+    { // variation 5 - historical company due to amalgamation
+      businessState: EntityState.HISTORICAL,
+      businessInfo: {
+        amalgamatedInto: {
+          amalgamationDate: '2024-02-08T00:08:04.188642+00:00',
+          identifier: 'BC0871584'
         }
       },
       exists: true,
-      text: 'Involuntary Dissolution – January 1, 2020 at 12:01 am Pacific time'
+      text: 'Amalgamation – February 7, 2024 – BC0871584'
     }
   ]
 
   variations.forEach((_, index) => {
     it(`conditionally displays historical badge - variation #${index}`, async () => {
       // init store
-      businessStore.setState(_.entityState as any)
-      rootStore.setStateFiling(_.stateFiling as any || null)
+      businessStore.setState(_.businessState as any)
+      _.stateFiling && rootStore.setStateFiling(_.stateFiling as any)
+      _.businessInfo && businessStore.setBusinessInfo({ ...businessStore.businessInfo, ..._.businessInfo } as any)
 
       const wrapper = shallowMount(EntityHeader, {
         vuetify,
@@ -340,6 +442,7 @@ describe('Entity Header - HISTORICAL badge', () => {
       // cleanup
       businessStore.setState(null)
       rootStore.setStateFiling(null)
+      _.businessInfo && businessStore.setBusinessInfo({ ...businessStore.businessInfo, amalgamatedInto: null })
       wrapper.destroy()
     })
   })
diff --git a/tests/unit/FilingHistoryList1.spec.ts b/tests/unit/FilingHistoryList1.spec.ts
index bc251f9c0..5ff4674d5 100644
--- a/tests/unit/FilingHistoryList1.spec.ts
+++ b/tests/unit/FilingHistoryList1.spec.ts
@@ -525,6 +525,7 @@ describe('Filing History List - misc functionality', () => {
     expect(vm.disableCorrection({})).toBe(true)
   })
 
+  // *** FUTURE: this needs to be refactored to work for HeaderActions.vue
   it.skip('returns correct values for disableCorrection()', async () => {
     filingHistoryListStore.setFilings([])
 
@@ -559,25 +560,31 @@ describe('Filing History List - misc functionality', () => {
     // conditions[3]: IA as a BEN/BC/CC/ULC
     for (const entityType of ['BEN', 'BC', 'CC', 'ULC']) {
       businessStore.setLegalType(entityType as any)
-      expect(vm.disableCorrection({ ...item, name: 'incorporationApplication' })).toBe(false)
+      expect(vm.disableCorrection({ ...item, name: FilingTypes.INCORPORATION_APPLICATION })).toBe(false)
     }
 
     // conditions[4]: Change of Registration as a firm
     for (const entityType of ['SP', 'GP']) {
       businessStore.setLegalType(entityType as any)
-      expect(vm.disableCorrection({ ...item, name: 'changeOfRegistration' })).toBe(false)
+      expect(vm.disableCorrection({ ...item, name: FilingTypes.CHANGE_OF_REGISTRATION })).toBe(false)
     }
 
     // conditions[5]: Correction as a firm or BEN/BC/CC/ULC
     for (const entityType of ['SP', 'GP', 'BEN', 'BC', 'CC', 'ULC']) {
       businessStore.setLegalType(entityType as any)
-      expect(vm.disableCorrection({ ...item, name: 'correction' })).toBe(false)
+      expect(vm.disableCorrection({ ...item, name: FilingTypes.CORRECTION })).toBe(false)
     }
 
     // conditions[6]: Registration as a firm
     for (const entityType of ['SP', 'GP']) {
       businessStore.setLegalType(entityType as any)
-      expect(vm.disableCorrection({ ...item, name: 'registration' })).toBe(false)
+      expect(vm.disableCorrection({ ...item, name: FilingTypes.REGISTRATION })).toBe(false)
+    }
+
+    // conditions[7]: Amalgamation as a BEN/BC/CC/ULC
+    for (const entityType of ['BEN', 'BC', 'CC', 'ULC']) {
+      businessStore.setLegalType(entityType as any)
+      expect(vm.disableCorrection({ ...item, name: FilingTypes.AMALGAMATION_APPLICATION })).toBe(false)
     }
 
     // Annual Report, Alteration, Change of Address, Change of Directors, Conversion
@@ -603,19 +610,83 @@ describe('Filing History List - misc functionality', () => {
 
     // only conditions[3]: IA as not a BEN/BC/CC/ULC
     businessStore.setLegalType(CorpTypeCd.COOP)
-    expect(vm.disableCorrection({ ...item, name: 'incorporationApplication' })).toBe(true)
+    expect(vm.disableCorrection({ ...item, name: FilingTypes.INCORPORATION_APPLICATION })).toBe(true)
 
     // only conditions[4]: Change of Registration as not a firm
     businessStore.setLegalType(CorpTypeCd.COOP)
-    expect(vm.disableCorrection({ ...item, name: 'changeOfRegistration' })).toBe(true)
+    expect(vm.disableCorrection({ ...item, name: FilingTypes.CHANGE_OF_REGISTRATION })).toBe(true)
 
     // only conditions[5]: Correction as not a firm nor BEN/BC/CC/ULC
     businessStore.setLegalType(CorpTypeCd.COOP)
-    expect(vm.disableCorrection({ ...item, name: 'correction' })).toBe(true)
+    expect(vm.disableCorrection({ ...item, name: FilingTypes.CORRECTION })).toBe(true)
 
     // only conditions[6]: Registration as not a firm
     businessStore.setLegalType(CorpTypeCd.COOP)
-    expect(vm.disableCorrection({ ...item, name: 'registration' })).toBe(true)
+    expect(vm.disableCorrection({ ...item, name: FilingTypes.REGISTRATION })).toBe(true)
+
+    // only conditions[7]: Amalgamation as not a BEN/BC/CC/ULC
+    businessStore.setLegalType(CorpTypeCd.COOP)
+    expect(vm.disableCorrection({ ...item, name: FilingTypes.AMALGAMATION_APPLICATION })).toBe(true)
+  })
+
+  it('displays multiple filing items, and remove the filing that displayLedger is false', async () => {
+    // init store
+    businessStore.setIdentifier('CP0001191')
+    filingHistoryListStore.setFilings([
+      {
+        availableOnPaperOnly: false,
+        businessIdentifier: 'CP0001191',
+        commentsCount: 0,
+        displayLedger: true,
+        displayName: 'Annual Report',
+        effectiveDate: '2019-11-20 22:17:54 GMT',
+        filingId: 111,
+        isFutureEffective: false,
+        name: FilingTypes.ANNUAL_REPORT,
+        status: FilingStatus.COMPLETED,
+        submittedDate: 'Tue, 02 July 2019 12:00:00 GMT',
+        submitter: 'Submitter 1'
+      } as any,
+      {
+        availableOnPaperOnly: false,
+        businessIdentifier: 'BC0001191',
+        commentsCount: 0,
+        displayLedger: true,
+        displayName: 'Benefit Company Incorporation Application - ACME Benefit Inc',
+        effectiveDate: '2019-11-20 22:17:54 GMT',
+        filingId: 222,
+        isFutureEffective: false,
+        name: FilingTypes.INCORPORATION_APPLICATION,
+        status: FilingStatus.COMPLETED,
+        submittedDate: 'Thu, 04 Apr 2019 12:00:00 GMT',
+        submitter: 'Submitter 2'
+      },
+      {
+        availableOnPaperOnly: false,
+        businessIdentifier: 'CP0001191',
+        commentsCount: 0,
+        displayLedger: false,
+        displayName: 'Admin Freeze',
+        effectiveDate: '2019-11-20 22:17:54 GMT',
+        filingId: 333,
+        isFutureEffective: false,
+        name: FilingTypes.ADMIN_FREEZE,
+        status: FilingStatus.COMPLETED,
+        submittedDate: 'Mon, 06 May 2019 12:00:00 GMT',
+        submitter: 'Submitter 3'
+      }
+    ])
+
+    const wrapper = mount(FilingHistoryList, { vuetify })
+    const vm = wrapper.vm as any
+    await Vue.nextTick()
+
+    expect(vm.getFilings.length).toEqual(2)
+    expect(wrapper.findAll('.default-filing').length).toEqual(1)
+    expect(wrapper.findAll('.incorporation-application').length).toEqual(1)
+    expect(wrapper.find('.no-results').exists()).toBe(false)
+
+    wrapper.destroy()
   })
 
   it('displays multiple filing items, and remove the filing that displayLedger is false', async () => {
diff --git a/tests/unit/FilingHistoryList2.spec.ts b/tests/unit/FilingHistoryList2.spec.ts
index db20ba7f2..932004ee6 100644
--- a/tests/unit/FilingHistoryList2.spec.ts
+++ b/tests/unit/FilingHistoryList2.spec.ts
@@ -37,7 +37,12 @@ const isCorrected = (filing) => !!filing.correctionFilingId
 const isIncorporationApplication = (filing) => (filing.name === FilingTypes.INCORPORATION_APPLICATION)
 // const isBcompCoa = (filing) => false FUTURE: implement BComp tests
 const isAlteration = (filing) => (filing.name === FilingTypes.ALTERATION)
-const isAmalgamation = (filing) => (filing.name === FilingTypes.AMALGAMATION_APPLICATION)
+const isRegularAmalgamation = (filing) => (filing.name === FilingTypes.AMALGAMATION_APPLICATION &&
+  filing.filingSubType === FilingSubTypes.AMALGAMATION_REGULAR)
+const isHorizontalAmalgamation = (filing) => (filing.name === FilingTypes.AMALGAMATION_APPLICATION &&
+  filing.filingSubType === FilingSubTypes.AMALGAMATION_HORIZONTAL)
+const isVerticalAmalgamation = (filing) => (filing.name === FilingTypes.AMALGAMATION_APPLICATION &&
+  filing.filingSubType === FilingSubTypes.AMALGAMATION_VERTICAL)
 const isConsentContinuationOut = (filing) => (filing.name === FilingTypes.CONSENT_CONTINUATION_OUT)
 const isStaff = (filing) => (
   filing.name === FilingTypes.REGISTRARS_NOTATION ||
@@ -126,18 +131,56 @@ filings.forEach((filing: any, index: number) => {
       // expect(item.fromLegalType).toBeDefined() // FUTURE: test this more specifically
     })
 
-    itIf(isAmalgamation(filing))('amalgamation filing', () => {
+    itIf(isRegularAmalgamation(filing))('regular amalgamation filing', () => {
       // verify data
       expect(vm.getFilings.length).toBe(1) // sanity check
       const item = vm.getFilings[0]
       expect(item.businessIdentifier).toBe('BC1234567')
       expect(item.data.amalgamationApplication.type).toBe(FilingSubTypes.AMALGAMATION_REGULAR)
-      expect(item.displayName).toBe('Amalgamation Application - Regular')
+      expect(item.displayName).toBe('Amalgamation Application (Regular)')
       expect(item.name).toBe(FilingTypes.AMALGAMATION_APPLICATION)
       expect(item.status).toBe(FilingStatus.COMPLETED)
 
       // verify display
-      expect(wrapper.find('.item-header-title').text()).toBe('Amalgamation Application - Regular')
+      expect(wrapper.find('.item-header-title').text()).toBe('Amalgamation Application (Regular)')
+      expect(wrapper.find('.item-header-subtitle').text()).toContain('FILED AND PAID')
+      expect(wrapper.find('.item-header-subtitle').text()).toContain('(filed by Registry Staff on Feb 3, 2023)')
+      expect(wrapper.find('.item-header-subtitle').text()).toContain('EFFECTIVE as of Feb 3, 2023')
+      expect(wrapper.find('.view-details').text()).toBe('View Documents')
+      expect(wrapper.find('.hide-details').text()).toBe('Hide Documents')
+    })
+
+    itIf(isHorizontalAmalgamation(filing))('horizontal amalgamation filing', async () => {
+      // verify data
+      expect(vm.getFilings.length).toBe(1) // sanity check
+      const item = vm.getFilings[0]
+      expect(item.businessIdentifier).toBe('BC1234567')
+      expect(item.data.amalgamationApplication.type).toBe(FilingSubTypes.AMALGAMATION_HORIZONTAL)
+      expect(item.displayName).toBe('Amalgamation Application Short-form (Horizontal)')
+      expect(item.name).toBe(FilingTypes.AMALGAMATION_APPLICATION)
+      expect(item.status).toBe(FilingStatus.COMPLETED)
+
+      // verify display
+      expect(wrapper.find('.item-header-title').text()).toBe('Amalgamation Application Short-form (Horizontal)')
+      expect(wrapper.find('.item-header-subtitle').text()).toContain('FILED AND PAID')
+      expect(wrapper.find('.item-header-subtitle').text()).toContain('(filed by Registry Staff on Feb 3, 2023)')
+      expect(wrapper.find('.item-header-subtitle').text()).toContain('EFFECTIVE as of Feb 3, 2023')
+      expect(wrapper.find('.view-details').text()).toBe('View Documents')
+      expect(wrapper.find('.hide-details').text()).toBe('Hide Documents')
+    })
+
+    itIf(isVerticalAmalgamation(filing))('vertical amalgamation filing', () => {
+      // verify data
+      expect(vm.getFilings.length).toBe(1) // sanity check
+      const item = vm.getFilings[0]
+      expect(item.businessIdentifier).toBe('BC1234567')
+      expect(item.data.amalgamationApplication.type).toBe(FilingSubTypes.AMALGAMATION_VERTICAL)
+      expect(item.displayName).toBe('Amalgamation Application Short-form (Vertical)')
+      expect(item.name).toBe(FilingTypes.AMALGAMATION_APPLICATION)
+      expect(item.status).toBe(FilingStatus.COMPLETED)
+
+      // verify display
+      expect(wrapper.find('.item-header-title').text()).toBe('Amalgamation Application Short-form (Vertical)')
       expect(wrapper.find('.item-header-subtitle').text()).toContain('FILED AND PAID')
       expect(wrapper.find('.item-header-subtitle').text()).toContain('(filed by Registry Staff on Feb 3, 2023)')
       expect(wrapper.find('.item-header-subtitle').text()).toContain('EFFECTIVE as of Feb 3, 2023')
diff --git a/tests/unit/LedgerConsentContinuationOut.spec.ts b/tests/unit/LedgerConsentContinuationOut.spec.ts
index 00068d799..4dcccc2b7 100644
--- a/tests/unit/LedgerConsentContinuationOut.spec.ts
+++ b/tests/unit/LedgerConsentContinuationOut.spec.ts
@@ -36,7 +36,7 @@ describe('Display ConsentContinuationOut component', () => {
     expect(wrapper.find('.consent-continuation-out').text()).toContain('FILED AND PAID  (filed by  on [unknown])')
     expect(wrapper.find('.consent-continuation-out').text()).toContain('EFFECTIVE as of [unknown]')
     expect(wrapper.find('.expand-btn').text()).toContain('View Documents')
-    expect(wrapper.find('.v-expansion-panel-content').exists()).toBe(false)
+    expect(wrapper.find('.v-expansion-panel-content').exists()).toBe(true)
     expect(vm.expiry).toEqual('August 17, 2023 at 11:59 pm Pacific time')
     wrapper.destroy()
   })
diff --git a/tests/unit/LedgerContinuationOut.spec.ts b/tests/unit/LedgerContinuationOut.spec.ts
index 553d7c33f..7dc55da6a 100644
--- a/tests/unit/LedgerContinuationOut.spec.ts
+++ b/tests/unit/LedgerContinuationOut.spec.ts
@@ -42,7 +42,7 @@ describe('Display ContinuationOut component', () => {
     expect(wrapper.find('.continuation-out').text()).toContain('FILED AND PAID  (filed by  on [unknown])')
     expect(wrapper.find('.continuation-out').text()).toContain('EFFECTIVE as of [unknown]')
     expect(wrapper.find('.expand-btn').text()).toContain('View Documents')
-    expect(wrapper.find('.v-expansion-panel-content').exists()).toBe(false)
+    expect(wrapper.find('.v-expansion-panel-content').exists()).toBe(true)
     expect(vm.continuationOutDate).toEqual('Jun 10, 2023')
     expect(vm.legalName).toBe('North Shore Toys LTD.')
     wrapper.destroy()
diff --git a/tests/unit/LegalObligation.spec.ts b/tests/unit/LegalObligation.spec.ts
index 132088057..00ef62ef7 100644
--- a/tests/unit/LegalObligation.spec.ts
+++ b/tests/unit/LegalObligation.spec.ts
@@ -5,7 +5,7 @@ import { mount } from '@vue/test-utils'
 import { createPinia, setActivePinia } from 'pinia'
 import { useBusinessStore, useFilingHistoryListStore, useRootStore } from '@/stores'
 import { ConfigJson } from '@/resources'
-import { CorpTypeCd } from '@/enums'
+import { CorpTypeCd, EntityState, FilingTypes } from '@/enums'
 
 // Components
 import LegalObligation from '@/components/Dashboard/LegalObligation.vue'
@@ -24,10 +24,25 @@ const newIncorporationFiling = [
     availableOnPaperOnly: false,
     displayLedger: true,
     displayName: 'Incorporation Application',
+    effectiveDate: '2024-02-21 12:00:00 GMT',
+    filingId: 123,
+    isFutureEffective: false,
+    name: FilingTypes.AMALGAMATION_APPLICATION,
+    status: 'PAID',
+    submittedDate: '2024-02-21 12:00:00 GMT',
+    submitter: 'Full Name 1'
+  }
+]
+
+const newAmalgamationFiling = [
+  {
+    availableOnPaperOnly: false,
+    displayLedger: true,
+    displayName: 'Amalgamation Application (Regular)',
     effectiveDate: '2019-06-02 19:22:59 GMT',
     filingId: 123,
     isFutureEffective: false,
-    name: 'incorporationApplication',
+    name: FilingTypes.INCORPORATION_APPLICATION,
     status: 'PAID',
     submittedDate: 'Sun, 02 Jun 2019 19:22:59 GMT',
     submitter: 'Full Name 1'
@@ -42,7 +57,7 @@ const newRegistrationFiling = [
     effectiveDate: '2019-06-02 19:22:59 GMT',
     filingId: 123,
     isFutureEffective: false,
-    name: 'registration',
+    name: FilingTypes.REGISTRATION,
     status: 'PAID',
     submittedDate: 'Sun, 02 Jun 2019 19:22:59 GMT',
     submitter: 'Full Name 1'
@@ -57,7 +72,7 @@ const businessWithMaintenanceFiling = [
     effectiveDate: '2019-06-02 19:22:59 GMT',
     filingId: 123,
     isFutureEffective: false,
-    name: 'incorporationApplication',
+    name: FilingTypes.INCORPORATION_APPLICATION,
     status: 'PAID',
     submittedDate: 'Sun, 02 Jun 2019 19:22:59 GMT',
     submitter: 'Full Name 1'
@@ -69,7 +84,7 @@ const businessWithMaintenanceFiling = [
     effectiveDate: '2019-06-02 19:22:59 GMT',
     filingId: 456,
     isFutureEffective: false,
-    name: 'annualReport',
+    name: FilingTypes.ANNUAL_REPORT,
     status: 'PAID',
     submittedDate: 'Sun, 02 Jun 2019 19:22:59 GMT',
     submitter: 'Full Name 1'
@@ -81,7 +96,7 @@ const taskList = [
     task: {
       filing: {
         header: {
-          name: 'annualReport',
+          name: FilingTypes.ANNUAL_REPORT,
           ARFilingYear: 2019,
           status: 'ERROR',
           filingId: 789
@@ -107,6 +122,13 @@ const obligationTestCases = [
     configKey: 0,
     filingBody: newIncorporationFiling
   },
+  {
+    entityType: CorpTypeCd.BENEFIT_COMPANY,
+    identifier: 'BC1232134',
+    displaysObligations: true,
+    configKey: 0,
+    filingBody: newAmalgamationFiling
+  },
   {
     entityType: CorpTypeCd.COOP,
     identifier: 'CP1232134',
@@ -136,6 +158,7 @@ for (const test of obligationTestCases) {
       sessionStorage.setItem('BUSINESS_ID', test.identifier)
       businessStore.setLegalType(test.entityType)
       businessStore.setIdentifier(test.identifier)
+      businessStore.setState(EntityState.ACTIVE)
       rootStore.configObject = ConfigJson[test.configKey]
     })
 
diff --git a/tests/unit/StaffNotation.spec.ts b/tests/unit/StaffNotation.spec.ts
index 76406bb9a..529344a3f 100644
--- a/tests/unit/StaffNotation.spec.ts
+++ b/tests/unit/StaffNotation.spec.ts
@@ -27,6 +27,83 @@ document.body.setAttribute('data-app', 'true')
 // Prevent the warning "[Vuetify] Unable to locate target #staff-notation"
 document.body.setAttribute('id', 'staff-notation')
 
+describe('StaffNotation - Put Back On', () => {
+  const { assign } = window.location
+
+  beforeAll(() => {
+    // mock the window.location.assign function
+    delete window.location
+    window.location = { assign: vi.fn() } as any
+
+    const configuration = {
+      VUE_APP_BUSINESS_CREATE_URL: 'https://create.url/',
+      VUE_APP_BUSINESS_EDIT_URL: 'https://edit.url/'
+    }
+
+    // set configurations
+    configurationStore.setConfiguration(configuration)
+  })
+
+  afterAll(() => {
+    window.location.assign = assign
+  })
+
+  beforeEach(() => {
+    // allow all filings referenced in this component
+    // some of these are normally mutually exclusive, but that's OK for testing
+    businessStore.setAllowedActions({
+      digitalBusinessCard: false,
+      filing: {
+        filingTypes: [
+          { name: FilingTypes.PUT_BACK_ON }
+        ]
+      } as any
+    })
+    businessStore.setLegalType(CorpTypeCd.SOLE_PROP) // firm
+    businessStore.setState(EntityState.HISTORICAL) // not active
+    businessStore.setAdminFreeze(false) // not frozen
+    businessStore.setIdentifier('SP1234567') // business id
+  })
+
+  it('renders the staff notation dialog correction for Put Back On', async () => {
+    vi.spyOn(utils, 'GetFeatureFlag').mockImplementation(flag => {
+      if (flag === 'supported-put-back-on-entities') return 'SP'
+      return null
+    })
+    const wrapper = mount(StaffNotation, { vuetify })
+    // open menu
+    await wrapper.find('.menu-btn').trigger('click')
+    expect(wrapper.vm.$data.expand).toBe(true)
+
+    // find and click respective item
+    await wrapper.find('.v-list-item[data-type="put-back-on"]').trigger('click')
+    await Vue.nextTick()
+    const menuItemUnderTest = wrapper.find('[data-type="put-back-on"]')
+
+    // verify enabled Put Back On option
+    expect(menuItemUnderTest.classes()).not.toContain('v-list-item--disabled')
+
+    // verify flag
+    expect(wrapper.vm.$data.isAddingPutBackOn).toBeTruthy()
+
+    // verify modal title
+    expect(wrapper.find('#dialog-title').text()).toContain('Correction - Put Back On')
+
+    // verify textarea label
+    expect(wrapper.find('#notation-form .notation-textarea .v-label').text()).toBe('Add Detail')
+
+    // click Cancel button
+    await wrapper.find('#dialog-cancel-button').trigger('click')
+    await Vue.nextTick() // need to wait longer here
+    expect(wrapper.vm.$data.isAddingRegistrarsNotation).toBeFalsy()
+
+    // verify Close event
+    expect(wrapper.emitted('close').pop()).toEqual([false])
+
+    wrapper.destroy()
+  })
+})
+
 describe('StaffNotation', () => {
   const { assign } = window.location
 
@@ -262,6 +339,7 @@ describe('StaffNotation', () => {
   it('renders drop down menu correctly - historical', async () => {
     vi.spyOn(utils, 'GetFeatureFlag').mockImplementation(flag => {
       if (flag === 'supported-restoration-entities') return 'SP'
+      if (flag === 'supported-put-back-on-entities') return 'SP'
       return null
     })
     businessStore.setState(EntityState.HISTORICAL)
@@ -417,6 +495,10 @@ describe('StaffNotation', () => {
   }
 
   it('renders the staff notation dialog correction for Put Back On', async () => {
+    vi.spyOn(utils, 'GetFeatureFlag').mockImplementation(flag => {
+      if (flag === 'supported-put-back-on-entities') return 'SP'
+      return null
+    })
     const wrapper = mount(StaffNotation, { vuetify })
 
     // open menu
diff --git a/tests/unit/TodoList1.spec.ts b/tests/unit/TodoList1.spec.ts
index 8b699d367..0e12fab39 100644
--- a/tests/unit/TodoList1.spec.ts
+++ b/tests/unit/TodoList1.spec.ts
@@ -1606,7 +1606,7 @@ describe('TodoList - UI - Amalgamation Applications', () => {
     businessStore.setLegalType(CorpTypeCd.BC_COMPANY)
   })
 
-  it('displays a DRAFT numbered amalgamation application', async () => {
+  it('displays a DRAFT numbered regular amalgamation application', async () => {
     // init store
     rootStore.nameRequest = null
     rootStore.tasks = [
@@ -1645,7 +1645,7 @@ describe('TodoList - UI - Amalgamation Applications', () => {
     wrapper.destroy()
   })
 
-  it('displays a DRAFT named amalgamation application', async () => {
+  it('displays a DRAFT named regular amalgamation application', async () => {
     // init store
     rootStore.nameRequest = {}
     rootStore.tasks = [
@@ -1684,6 +1684,166 @@ describe('TodoList - UI - Amalgamation Applications', () => {
 
     wrapper.destroy()
   })
+
+  it('displays a DRAFT numbered short form horizontal amalgamation application', async () => {
+    // init store
+    rootStore.nameRequest = null
+    rootStore.tasks = [
+      {
+        task: {
+          filing: {
+            header: {
+              name: FilingTypes.AMALGAMATION_APPLICATION,
+              status: FilingStatus.DRAFT
+            },
+            amalgamationApplication: {
+              type: AmalgamationTypes.HORIZONTAL
+            },
+            displayName: 'BC Limited Company Amalgamation Application - Horizontal'
+          } as any
+        },
+        enabled: true,
+        order: 1
+      }
+    ]
+
+    const wrapper = mount(TodoList, { vuetify })
+    const vm = wrapper.vm as any
+    await flushPromises()
+
+    expect(vm.todoItems.length).toEqual(1)
+    expect(wrapper.findAll('.todo-item').length).toEqual(1)
+    expect(wrapper.emitted('todo-count')).toEqual([[1]])
+    expect(wrapper.find('.no-results').exists()).toBe(false)
+
+    const item = wrapper.find('.list-item')
+    expect(item.find('.list-item__title').text()).toContain('BC Limited Company Amalgamation Application - Horizontal')
+    expect(item.find('.list-item__subtitle').text()).toBe('DRAFT')
+    expect(item.find('.btn-draft-resume').text()).toBe('Fill out Amalgamation Application')
+
+    wrapper.destroy()
+  })
+
+  it('displays a DRAFT named short form horizontal amalgamation application', async () => {
+    // init store
+    rootStore.nameRequest = {}
+    rootStore.tasks = [
+      {
+        task: {
+          filing: {
+            header: {
+              name: FilingTypes.AMALGAMATION_APPLICATION,
+              status: FilingStatus.DRAFT
+            },
+            amalgamationApplication: {
+              type: AmalgamationTypes.HORIZONTAL
+            },
+            displayName: 'My Amalgamated Company Amalgamation Application - Horizontal'
+          } as any
+        },
+        enabled: true,
+        order: 1
+      }
+    ]
+
+    const wrapper = mount(TodoList, { vuetify })
+    const vm = wrapper.vm as any
+    await flushPromises()
+
+    expect(vm.todoItems.length).toEqual(1)
+    expect(wrapper.findAll('.todo-item').length).toEqual(1)
+    expect(wrapper.emitted('todo-count')).toEqual([[1]])
+    expect(wrapper.find('.no-results').exists()).toBe(false)
+
+    const item = wrapper.find('.list-item')
+    expect(item.find('.list-item__title').text())
+      .toContain('My Amalgamated Company Amalgamation Application - Horizontal')
+    expect(item.find('.expand-btn').text()).toBe('View Details')
+    expect(item.find('.list-item__subtitle').text()).toContain('NR APPROVED')
+    expect(item.find('.btn-draft-resume').text()).toBe('Fill out Amalgamation Application')
+
+    wrapper.destroy()
+  })
+
+  it('displays a DRAFT numbered short form vertical amalgamation application', async () => {
+    // init store
+    rootStore.nameRequest = null
+    rootStore.tasks = [
+      {
+        task: {
+          filing: {
+            header: {
+              name: FilingTypes.AMALGAMATION_APPLICATION,
+              status: FilingStatus.DRAFT
+            },
+            amalgamationApplication: {
+              type: AmalgamationTypes.VERTICAL
+            },
+            displayName: 'BC Limited Company Amalgamation Application - Vertical'
+          } as any
+        },
+        enabled: true,
+        order: 1
+      }
+    ]
+
+    const wrapper = mount(TodoList, { vuetify })
+    const vm = wrapper.vm as any
+    await flushPromises()
+
+    expect(vm.todoItems.length).toEqual(1)
+    expect(wrapper.findAll('.todo-item').length).toEqual(1)
+    expect(wrapper.emitted('todo-count')).toEqual([[1]])
+    expect(wrapper.find('.no-results').exists()).toBe(false)
+
+    const item = wrapper.find('.list-item')
+    expect(item.find('.list-item__title').text()).toContain('BC Limited Company Amalgamation Application - Vertical')
+    expect(item.find('.list-item__subtitle').text()).toBe('DRAFT')
+    expect(item.find('.btn-draft-resume').text()).toBe('Fill out Amalgamation Application')
+
+    wrapper.destroy()
+  })
+
+  it('displays a DRAFT named short form vertical amalgamation application', async () => {
+    // init store
+    rootStore.nameRequest = {}
+    rootStore.tasks = [
+      {
+        task: {
+          filing: {
+            header: {
+              name: FilingTypes.AMALGAMATION_APPLICATION,
+              status: FilingStatus.DRAFT
+            },
+            amalgamationApplication: {
+              type: AmalgamationTypes.VERTICAL
+            },
+            displayName: 'My Amalgamated Company Amalgamation Application - Vertical'
+          } as any
+        },
+        enabled: true,
+        order: 1
+      }
+    ]
+
+    const wrapper = mount(TodoList, { vuetify })
+    const vm = wrapper.vm as any
+    await flushPromises()
+
+    expect(vm.todoItems.length).toEqual(1)
+    expect(wrapper.findAll('.todo-item').length).toEqual(1)
+    expect(wrapper.emitted('todo-count')).toEqual([[1]])
+    expect(wrapper.find('.no-results').exists()).toBe(false)
+
+    const item = wrapper.find('.list-item')
+    expect(item.find('.list-item__title').text())
+      .toContain('My Amalgamated Company Amalgamation Application - Vertical')
+    expect(item.find('.expand-btn').text()).toBe('View Details')
+    expect(item.find('.list-item__subtitle').text()).toContain('NR APPROVED')
+    expect(item.find('.btn-draft-resume').text()).toBe('Fill out Amalgamation Application')
+
+    wrapper.destroy()
+  })
 })
 
 describe('TodoList - Click Tests', () => {
diff --git a/tests/unit/filings.json b/tests/unit/filings.json
index 734e614ee..b3584d0c3 100644
--- a/tests/unit/filings.json
+++ b/tests/unit/filings.json
@@ -591,11 +591,66 @@
         ]
       },
       "displayLedger": true,
-      "displayName": "Amalgamation Application - Regular",
+      "displayName": "Amalgamation Application (Regular)",
       "documentsLink": "https://legal-api-dev.apps.silver.devops.gov.bc.ca/api/v2/businesses/BC1234567/filings/112751/documents",
       "effectiveDate": "Fri, 03 Feb 2023 18:52:00 GMT",
       "filingId": 112751,
       "filingLink": "https://legal-api-dev.apps.silver.devops.gov.bc.ca/api/v2/businesses/BC1234567/filings/112751",
+      "filingSubType": "regular",
+      "isFutureEffective": false,
+      "name": "amalgamationApplication",
+      "paymentStatusCode": null,
+      "status": "COMPLETED",
+      "submittedDate": "Fri, 03 Feb 2023 18:52:00 GMT",
+      "submitter": "Registry Staff"
+    },
+    {
+      "availableOnPaperOnly": false,
+      "businessIdentifier": "BC1234567",
+      "commentsCount": 0,
+      "commentsLink": "https://legal-api-dev.apps.silver.devops.gov.bc.ca/api/v2/businesses/BC1234567/filings/112751/comments",
+      "data": {
+        "amalgamationApplication": {
+          "type": "horizontal"
+        },
+        "legalFilings": [
+          "amalgamation"
+        ]
+      },
+      "displayLedger": true,
+      "displayName": "Amalgamation Application Short-form (Horizontal)",
+      "documentsLink": "https://legal-api-dev.apps.silver.devops.gov.bc.ca/api/v2/businesses/BC1234567/filings/112751/documents",
+      "effectiveDate": "Fri, 03 Feb 2023 18:52:00 GMT",
+      "filingId": 112751,
+      "filingLink": "https://legal-api-dev.apps.silver.devops.gov.bc.ca/api/v2/businesses/BC1234567/filings/112751",
+      "filingSubType": "horizontal",
+      "isFutureEffective": false,
+      "name": "amalgamationApplication",
+      "paymentStatusCode": null,
+      "status": "COMPLETED",
+      "submittedDate": "Fri, 03 Feb 2023 18:52:00 GMT",
+      "submitter": "Registry Staff"
+    },
+    {
+      "availableOnPaperOnly": false,
+      "businessIdentifier": "BC1234567",
+      "commentsCount": 0,
+      "commentsLink": "https://legal-api-dev.apps.silver.devops.gov.bc.ca/api/v2/businesses/BC1234567/filings/112751/comments",
+      "data": {
+        "amalgamationApplication": {
+          "type": "vertical"
+        },
+        "legalFilings": [
+          "amalgamation"
+        ]
+      },
+      "displayLedger": true,
+      "displayName": "Amalgamation Application Short-form (Vertical)",
+      "documentsLink": "https://legal-api-dev.apps.silver.devops.gov.bc.ca/api/v2/businesses/BC1234567/filings/112751/documents",
+      "effectiveDate": "Fri, 03 Feb 2023 18:52:00 GMT",
+      "filingId": 112751,
+      "filingLink": "https://legal-api-dev.apps.silver.devops.gov.bc.ca/api/v2/businesses/BC1234567/filings/112751",
+      "filingSubType": "vertical",
       "isFutureEffective": false,
       "name": "amalgamationApplication",
       "paymentStatusCode": null,
diff --git a/vite.config.js b/vite.config.js
index ac899c16a..32e0aa7f7 100644
--- a/vite.config.js
+++ b/vite.config.js
@@ -11,18 +11,15 @@ const appName = JSON.parse(packageJson).appName
 const appVersion = JSON.parse(packageJson).version
 const sbcName = JSON.parse(packageJson).sbcName
 const sbcVersion = JSON.parse(packageJson).dependencies['sbc-common-components']
-const aboutText1 = (appName && appVersion) ? `${appName} v${appVersion}` : ''
-const aboutText2 = (sbcName && sbcVersion) ? `${sbcName} v${sbcVersion}` : ''
+const aboutApp = (appName && appVersion) ? `${appName} v${appVersion}` : 'Unknown APP'
+const aboutSbc = (sbcName && sbcVersion) ? `${sbcName} v${sbcVersion}` : 'Unknown SBC'
 
 // https://vitejs.dev/config/
 export default defineConfig(() => {
   return {
     define: {
-      'import.meta.env.ABOUT_TEXT':
-        (aboutText1 && aboutText2) ? `"${aboutText1}<br>${aboutText2}"`
-          : aboutText1 ? `"${aboutText1}"`
-            : aboutText2 ? `"${aboutText2}"`
-              : ''
+      'import.meta.env.ABOUT_APP': `"${aboutApp}"`,
+      'import.meta.env.ABOUT_SBC': `"${aboutSbc}"`
     },
     envPrefix: 'VUE_APP_', // Need to remove this after fixing vaults. Use import.meta.env with VUE_APP.
     plugins: [