* Split folder service back/foreground
Also splits for folderApiService, since that depends on folderService.
TODO: this split will need to be done for any dependents of a split
service.
* Prefer popup-specific services VaultFilterService
* Prefer popup-specific services i18n
* Prefer popup-specific services configService
* StateService is required for browserSync
* Add Policy Api Service
* Remove unused orgService from PolicyApiService
* Fixup missed dependency
* Attach cryptography services in popup context
* Improve session syncer initialization
* Fix storage reseed on logout
The check for the set vault-timeout needs to happen before all cleaning stateService
Remove check inside of reseedStorage as happens outside prior to calling it (logout/settings.component)
* Remove old limitation to only run on certain browsers
Execute on all browsers besides Safari as it does not support chrome.storage.local.get with an empty key
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/storage/StorageArea/get
* Revert "Remove old limitation to only run on certain browsers"
This reverts commit d7f71aa0b6.
* work: add base logic for password lookup
* work: added browser support for hibp
* work: SG-558 combine weak + leak warning
* fix: language stuff
* fix: form values are neater tho :(
* fix: no cast
The problem was the incorrect identification of the input format. The input with `placeholder="ММ / ГГ"` got a value in `YYYY-MM` format, which is fallback in case when required format was not identified. It happened because `ММ` in the placeholder value had russian characters, but actual constant has english ones.
* Add combine helper
* Helper for running multiple actions with single service cache
* Remove unneeded any
* Send identifier through callback
* Extend Tab Message
* Split out ContextMenu logic
* Add tests for ContextMenu actions
* Context Menu Fixes
* Await call to menu handler
* set onUpdatedRan to false when it's ran
* Switch to using new cache per run
* Fix Generate Password Test
* Remove old file from whitelist
* Remove Useless never from Generic
* Update apps/browser/src/background/main.background.ts
Co-authored-by: Matt Gibson <mgibson@bitwarden.com>
* Address PR Feedback
* Specify a Document Url for Context Menu Items
* Update Test
* Use Generate Password Callback
* Remove DocumentUrlPatterns
Co-authored-by: Matt Gibson <mgibson@bitwarden.com>
* Force update of badge icon and text on all windows
Affects MV2 and MV3
No longer pass in tab and windowId to setLoggedOut and setLocked
When the vault is locked or the user logs out, all open windows/tabs need to be updated
Iterating over all active tabs like in 2022.10.1 was missing:
488734577f/apps/browser/src/background/main.background.ts (L859-L867)
Create clearBadgeText function to take care of it.
* Only try to retrieve tab in unlocked state
* Remove lock icon when unlocking on all windows
* Only use windowId to retrieve tab when defined
In MV2 the `windowId` isn't passed into updateBage and fails to retrieve the correct tab to update.
This resorted in the badge not showing a match count in another window.
Fixes#4260
Ensure in MV3 that all listener pass on the windowId if present.
* Fix Firefox private mode
Only pass on the windowId if defined and within Firefox
In private mode the main.background bootstrap-method passes in the windowId
Do not refreshBadge when in private mode
Previously 488734577f/apps/browser/src/background/main.background.ts (L575-L586) setIcon would skip in private mode. Calling refreshBadge without this would update the badge on all windows (normal and private ones)
* Make username regenerator button same as password one
it seems that (originally?) it wanted to be disabled at first and then become active again once the generator's async call was finished...but this seems unnecessary. removing all that extraneous stuff that doesn't seem to be actually doing anything makes this work just as well as the password generator button, and doesn't end up losing/resetting focus.
* Remove the `[disabled]` attribute from regenerate buttons
* Use `aria-disabled` instead of `disabled`, make click event conditional
* Make spinner show for `aria-disabled` controls as well
* Use aria-describedby for all help blocks/hints
* Add label to send notes textfield
* Use aria-describedby for all help blocks/hints / browser
* Tweak help block for confirming identity
* Remove aria-describedby for general login form
Seems unnecessary / doesn't need an extra description
* Fix compiler error
* Remove unnecessary aria-describedby
After testing, turns out the addition here was unnecessary, as the help block is already part of the `<label>`
* Fix aria-describedby reference for user verification component
* Remove redundant aria-describedby and generated id for radio buttons
* Fix aria-describedby for send editing in Safari
> When editing a send, the text below the deletion date is not recognized by the screen reader reliably (send-add-edit.component.html / efflux-dates.component.html). There might be an issues depending on which browser is used (deletionDateHelp vs. deletionDateCustomHelp
* Make custom environment container role="group", give it a label and description
> In the Environment Url Settings, the text “For advanced users…….“ is not not recognized by the screen reader. Not sure how to best solve this one, as it's below all individual url inputs. Ideally it gets announced with the baseUrl part or when focusing Custom Environment)
* feat-web: add hidden char count toggle
* Added toggle char count for desktop
* Use Tailwind and Component Library, add i18n
* Hide char count when password is hidden
* Initial proposal
* Update colors per design spec for all clients
Also make variable names consistent across clients
* Remove unused scss
* Add styling
* Set fixed with for password count elements
* Add separate wrapped stories
* Fix alignment of first char when wrapped
* Minor refactors
* Make naming consistent
* Add Figma url
* add barrel files
* Use CL component
* Fix template
* Remove duplicate style
* Use ColorPasswordComponent in web, remove old pipe
Also remove styling and move pipe out of jslib-module given that
it's no longer shared by all Angular clients
* Run prettier
* Remove unused scss vars
* Undo unnecessary changes
* Remove unnecessary changes
* Fix styling
* Fix selector
* Collect show password event
* Fix incorrect background in dark mode
* Fix linting
* Use color password for password history
* Add char count to hidden custom fields in desktop
* Fix char count background in web: take 2
* Update service name
* Add missing label toggleCharacterCount for desktop
Co-authored-by: Daniel James Smith <djsmith@web.de>
Co-authored-by: Thomas Rittson <trittson@bitwarden.com>
* SG-825 - policy.service - Apply policies of disabled orgs
* SG-825 - OrgFilter - Show org suspended icon when org is disabled and remove personal vault policy enabled
* SG-825 - Org Filter refactor - Enterprise users can now access org options to leave orgs without selecting them (previously, you had to select an org to get the options to show up which was not possible for disabled orgs). Users can now leave disabled orgs.
* SG-825 - fix aria label compile issue
* SG-825 - Browser - Vault filter CSS refactor - (1) Better ellipsis truncation implemented (2) Selected vault and dropdown widths now scale dynamically based on selection and container width
* SG-825 - Desktop - (1) Org suspended warning icon now displayed on disabled orgs even when personal vault removed policy applied (2) Org suspended icon now has same accessibility (title / label) as web & browser.
* Remove default landing on masterpassword page
* Remove rememberEmail state service value that isn't needed
* Remove last occurence of setRememberEmail
* Remove alwaysRememberEmail functionality
* Remove always remember email from browser and add option to
* Add extra spacing around remember email check
* [SG-884] Fix Remember Email functionality for Login with SSO (#4238)
* Add saveEmailSettings method to LoginService
* Add StateService as a dependency to LoginService
* Update login components to utilize new login service method for saving rememberedEmail
* Only sync if synced value changes
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* Catch error if no one is listening
This occurs if the background tries to update any visualizers, but none
are open.
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
Co-authored-by: Justin Baur <justindbaur@users.noreply.github.com>
* Allow provided deserializer to handle not found
* Debounce synced items
* Remove object-hash
* Revert "Only sync if synced value changes"
This reverts commit 024fe226d9.
* Test debounce
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
Co-authored-by: Justin Baur <justindbaur@users.noreply.github.com>
Co-authored-by: Justin Baur <19896123+justindbaur@users.noreply.github.com>
* Move chevron/arrow to start of disclosure widget
in addition, changes the only expand/collapse disclosure widget like this on the web client to use the same `<h3><button>...</button></h3>` structure as on browser extension and desktop app
* Change collapsed/expanded icons
Make them more understandable and consistent with other expand/collapse controls
* Harmonise desktop +/- controls to use arrow/chevron icons as well
also removes the incorrect `A11yTitle` in the generator that currently overrides the visible "Options" text (leading to a failure of WCAG 2.5.3 Label in Name)
* Change the icons for the expand/collapse disclosure widget in SSO component
* Expand icon explanation
plus minor typo cleanup
* Add patch for Send button focus outline
* Await in `has` calls.
* Add disk cache to browser synced items
Note: `Map` doesn't serialize nicely so it's easier to swap over to a
`Record` object for out cache
* Mock and await init promises in tests
* Remove redundant settings checks
* Move event.service to it's own folder
Move abstractions/event.service to abstractions/event/event.service
Move services/event.service to services/event/event.service
Fix all the imports
* Extract event-upload from event.service
Move `uploadEvents` from `EventService` to `EventUploadService`
Create event-upload-service-factory
Fix wiring up all the dependencies
* Remove clearEvents from EventService
clearEvents is only related to uploading events and can be moved into EventUploadService
Change the logout-method to only call EventUploadService.uploadEvents as that also calls clearEvents internally
* Rename EventService to EventCollectionService
Rename libs\common\abstraction\event\event.service.ts to libs\common\abstractions\event\event-collection.service.ts
Rename libs\common\services\event\event.service.ts to libs\common\services\event\event-collection.service.ts
Fix all the imports
Fix up service regristration/instantiation
Reanme \browser\src\background\service_factories\event-service.factory.ts to \browser\src\background\service_factories\event-collection-service.factory.ts
* Move interval to upload events to EventUploadSvc
Move the `init()` from event-collection.service to event-upload.service
Change call-site in web, desktop, browser