* wip
* feat: refactor how we react to tab changes
* feat: always begin me emitting all active tabs
* feat: only calculate autofill for active tabs
* fix: bug not properly listening to reloads
* wip
* fix: clean up
* fix: clean up
* add exclamation badge for at risk passwords on tab
* add berry icon for the badge when pending tasks are present
* remove integration wtih autofill for pending task badge
* add ability to override Never match strategy
- This is helpful for non-autofill purposes but cipher matching is still needed. This will default to the domain.
* add at-risk-cipher badge updater service
* Revert "add exclamation badge for at risk passwords on tab"
This reverts commit a9643c03d5.
* remove nullish-coalescing
* ensure that all user related observables use the same user.id
---------
Co-authored-by: Shane Melton <smelton@bitwarden.com>
* create libs/assets
* treeshake lib and filter out non-icons from icon story
* update docs
* fix icon colors in browser and desktop
* better name for vault icon
* move illustrations
* feat(notification-processing): [PM-19877] System Notification Implementation - Minor changes to popup logic and removed content in login component.
* docs(notification-processing): [PM-19877] System Notification Implementation - Added more docs.
* docs(notification-processing): [PM-19877] System Notification Implementation - Added markdown document.
* fix(notification-processing): [PM-19877] System Notification Implementation - Updated condition for if notification is supported.
* fix(notification-processing): [PM-19877] System Notification Implementation - Updated services module with correct platform utils service.
* Throw error if appA11yTitle is null in icon button
* Add required label input
* Fix icon button errors in CL components and storeis
* fix popover aria-label errors
* remove commented code
* add labels to icon buttons in browser
* add labels to icon buttons in web
* add labels to icon buttons in license
* add labels to icon buttons in send
* add labels to icon buttons in angular
* fix missing pipe error
* fix sso icon button missed in error
* update labels in vault
* add section expand button label
* Adding labels to icon buttons
* Add lint rule to not allow icon buttons without label input
* rename util file
* trigger updates on title change
* update eslint rule name and folder
* add edit collection label to vault headers
* fix web header story label
* add show/hide summary labels
* update summary message
* fix breadcrumbs label message
* fix JSDoc to use correct input
* remove commented code
* use label as aria-label always. Remove init function
* add moreBreadcrumbs translation message to other apps
* add @bitwarden/team-ui-foundation as code owner for component eslint rules
* switch title to const variable
* add jsdoc comment on what the label input is used for
* [PM-22415] Tax ID notifications for Organizations and Providers (#15996)
* [NO LOGIC] Rename BillableEntity to BitwardenSubscriber
This helps us maintain paraody with server where we call this choice type ISubscriber. I chose BitwardenSubscriber to avoid overlap with RxJS
* [NO LOGIC] Move subscriber-billing.client to clients folder
* [NO LOGIC] Move organization warnings under organization folder
* Move getWarnings from OrganizationBillingApiService to new OrganizationBillingClient
I'd like us to move away from stashing so much in libs and utilizing the JsLibServicesModule when it's not necessary to do so. These are invocations used exclusively by the Web Vault and, until that changes, they should be treated as such
* Refactor OrganizationWarningsService
There was a case added to the Inactive Subscription warning for a free trial, but free trials do not represent inactive subscriptions so this was semantically incorrect. This creates another method that pulls the free trial warning and shows a dialog asking the user to subscribe if they're on one.
* Implement Tax ID Warnings throughout Admin Console and Provider Portal
* Fix linting error
* Jimmy's feedback
* remove duplicate messages keys
* revert changes to popover stories
* add back dupe myItems key for now as it was already here
* fix directive type errors
* remove variable left in error from merge conflict
* revert unintentional change to reports layout
* add back reports change
---------
Co-authored-by: Alex Morask <144709477+amorask-bitwarden@users.noreply.github.com>
* 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
This PR migrates `libs/components` to use strict TypeScript.
- Remove `@ts-strict-ignore` from each file in `libs/components` and resolved any new compilation errors
- Converted ViewChild and ContentChild decorators to use the new signal-based queries using the [Angular signal queries migration](https://angular.dev/reference/migrations/signal-queries)
- Made view/content children `required` where appropriate, eliminating the need for additional null checking. This helped simplify the strict migration.
---
Co-authored-by: Vicki League <vleague@bitwarden.com>
* 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>
* feat: scaffold new badge service structure
* feat: add state override
* feat: add priority-based override
* feat: implement state clearing
* feat: add docs to badge service functions
* feat: add support for setting icon
* feat: implement unsetting
* feat: implement setting text
* feat: add support for setting background
* fix: default icon
* feat: clean up old update-badge
* feat: save state using StateProvider
* feat: migrate auth status badge updating
* feat: migrate autofill badge updating
* fix: auto set to default values
* chore: woops, clean up copy-pasta
* fix: lint and types
* chore: nit updates from PR review
* feat: remove ability to send in arbitrary icons
* feat: move init to separate function
* fix: wrong import
* fix: typing issues
* fix: try again to fix typing issues
* feat: scaffold tests for new tabId-specific states
* feat: add diffence util function
* feat: add support for limiting state to tabId
* feat: re-implement autofill badge updater to only update when a tab actually changes
* feat[wip]: always set all tabs when changing the general state
* feat[wip]: implement general states for mutliple open tabs
* feat[wip]: implement fully working multi-tab functionality
* feat: optimize api calls
* feat: adjust storage
* chore: clean up old code
* chore: remove unused log service
* chore: minor tweaks
* fix: types
* fix: race condition causing wrong icon on startup
The service assumes that the first emission from the state will be an empty one and discards it
(techincally it just doesn't act on it because pairwise requires a minimum two emissions). This
caused issues when a service is able to update the state before the observable got a change to
properly initialize. To fix this we simply force an empty emission before anything else,
that way we will always react to the emission from the state provider (because that would end up
being the second emission). We then use distinctUntilChanged to avoid unecessarily acting on
an empty state.
* Add new device type for DuckDuckGo browser
* Added feature support property for sync domains
* Added new features
* Added isDuckDuckGo() to CLI
* Addressed PR feedback.
* Renamed new property
* Fixed rename that missed CLI.
We currently ship a transpiled version of the WebAssembly module to maintain backwards compataibility in case someone can't run the WebAssembly bundle. The filesize of this fallback now exceeds 4mb, but Firefox only supports javascript files 4mb and smaller in extensions. This resulted in us being unable to publish the latest version.
This PR removes the fallback.
Adds an eslint rule forbidding non popup scripts from importing popups. Also added a webpack plugin that throws if it detects @angular inside background output.
* refactor(browser-platform-utils): Remove Deprecation and Fix Code - Changed usages of firefox to private and moved the usages to the preferred public method and removed the deprecations.
* fix(browser-platform-utils): Remove Deprecation and Fix Code - Tiny changes.
* test(browser-platform-utils): Remove Deprecation and Fix Code - Fixed up test
Upgrades to Eslint v9. Since this is a major version there were breaking changes, but since we've previously migrated to flat configs in #12806 those were minimal.
* first draft at an idea dependency graph
* ignore existing errors
* remove conflicting rule regarding internal platform logic in libs
* review: allow components to import from platform
* [CL-571] Update icons to new fileset and metaphors (#14163)
* [CL-518] Convert icons docs to stories (#14299)
* [CL-574] Update inline autofill icons (#14379)
---------
Co-authored-by: William Martin <contact@willmartian.com>
* feat: clear cached history after successfull login
* Revert "feat: clear cached history after successfull login"
This reverts commit 4ede7f9056.
* feat: only restore router cache once per popup session
The purpose of the router cache is to restore the last visited route
during the startup of the popup, but without any explicit check
the cache would try to restore the route an inifinite number of times.
Because the router cache is never used to restore a route any other time
it is safe to assume that we only want to run the restore function once.
* adds small button size variant
* makes small icon button same size as small button
* testing small button for extension header
* remove extension changes
* update popout layout story
* revert change to small icon button padding
* add whitespace to see if error resolves
* default buttonType to primary
* default buttonType to secondary
* add comment around why nonNullButtonSize value exists
* add comment to property about using the non null version
* Update apps/browser/src/platform/popup/layout/popup-layout.stories.ts
Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com>
* updated input syntax when using static values
* remove nonNull value coersion
* allow changing of size input in Story
---------
Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com>