* refactor: rewrite the badge service to only calculate states for active tab
This also fixes an issue where the `difference` function didn't work and caused
all tabs to update for every single state update.
* fix: compilation issue
* feat: add error logging
* fix: linting
* fix: badge clearing on reload on firefox
* feat: optimize observable
* feat(wip): update all active tabs
tests are broken
* fix: existing tests
* feat: add new tests
(cherry picked from commit 1a57ad3fc5)
* prevent inline menu inheritance of dangerous opacity from host body and above
* cleanup and update tests
* check page opacity after html/body attribute mutations
* update tests
* cleanup
* [PM-24710] Add a debounceTime to currentPageDetails to ensure details collection content script has enough time to collect for details
* Adjust test observables to account for debounce
---------
Co-authored-by: Robyn MacCallum <robyntmaccallum@gmail.com>
* Update the CLI ConfirmCommand to send the DefaultUserCollectionName for default collection creation
* Add "My Items" message to CLI
* Refactor ConfirmCommand to encapsulate default user collection name encryption in a separate method
This PR makes it so the devices are always sorted in this order (by default):
1. Has Pending Auth Request (if any) comes first
2. Current Device comes second (or first if there are no pending auth requests)
3. First Login Date - the rest of the devices are sorted by first login date (newest to oldest)
This sort order is preserved even after a user approves/denies and auth request - that is, the approved/denied device will re-sort to its correct position according to it's first login date.
Feature Flag: `PM14938_BrowserExtensionLoginApproval`
* feat: only set badge state for the active tab
* fix: tests
* feat: avoid calculating states unecessarily
* Revert BrowserApi.removeListener change
* Add fatal log on observable failure
* Use fromChromeEvent
* Remove required-using tests
* Only disable some
* One of each
---------
Co-authored-by: Justin Baur <19896123+justindbaur@users.noreply.github.com>
Adds a check to make sure that the email on the Org Invite matches the email submitted in the form. If it matches, only then do we apply the org invite to get the MP policies. But if the emails do not match, it means the user attempting to login is no longer the user who originally clicked the emailed org invite link. Therefore, we clear the Org Invite + Deep Link and allow the user to login as normal.
* clear selection after event on individual part
* added changes in org
* added clearSelection in refresh()
---------
Co-authored-by: Jason Ng <jng@bitwarden.com>
* WIP
* switch to signal
* fix ts strict errors
* clean up
* refactor policy list service
* implement vnext component
* refactor to include feature flag check in display()
* CR feedback
* refactor submit to cancel before request is built
* clean up
* Fix typo
---------
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
* update shield logo and container padding
* Fix horizontal icon shift
* use absolutel position to fix shield shifting
* add new shield and admin console logo
* add new logos
* add business unit portal logo
* delete redundant logos
* add missing fill color class
* Add bulk user confirmation method to OrganizationUserService
* Update OrganizationUserBulkConfirmRequest to include optional defaultUserCollectionName property
* Implement conditional bulk user confirmation logic in BulkConfirmDialogComponent.
Its gated behind the feature flag for default user collection.
* Refactor OrganizationUserBulkConfirmRequest to use SdkEncString for defaultUserCollectionName
* Refactor BulkConfirmDialogComponent to use organization object instead of organizationId for improved clarity and type safety.
* Add unit tests for OrganizationUserService to validate user single/bulk confirmation logic
* Refactor OrganizationUserService to streamline encrypted collection name retrieval by introducing getEncryptedDefaultCollectionName$ method.
* Refactor unit tests for OrganizationUserService to reduce duplication by introducing a setupCommonMocks function for common mock configurations.
* refactor(organization-user.service): streamline retrieval of encrypted collection name in bulk confirmation process
* refactor manually open extension error message to a separate component
* allow icons and max width to be updated via setAnonLayoutWrapperData
* set error state when the extension fails to open
* bump timeout to 2000ms. I was seeing false error states when attempting to open the extension
* fix initialization of css variables