* add flag to disable all interstitial prompts
* remove changes to search service
* fix type error
* check for auto confirm and enforce data ownership
* fix type error
* create ServerSettingsResponse
* add edit member dialog, refactored to be ts-strict from member-dialog component
* clean up
* fix dialog selector pattern
* remove feature flag logic
* clean up, fix type error
* fix circular dependency, fix dialog directive
* fix remove user
* refactor nested-checkbox, add story
* update member-access-report to use new member edit component
* add stories for invite link and invite member dialog
* enhance story functionality
* clean up
* add groups to stories
* fix circular dependency, update stories
* update story logic
* mock saving behavior for all invite link stories
* key connector for user key rotation
* one signal, loading state, KC concistency checks
* use bit-spinner component, component not loading
* missing upgradeTokenAction
* Enable @angular-eslint/template/elements-content lint rule
Enables the elements-content rule with bitIconButton exempted via allowList,
since icon buttons use that directive in place of text content. Suppresses
false positives in WebAuthn connector pages where content is injected at
runtime, and flags a genuine empty <a> in change-plan-dialog for follow-up.
* Add FIXME lint suppressions for elements-content in copy-click spec
---------
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
* adding bulk actions bar
* responsive bulk actions bar
* allow for custom position of menu
* remove border from compact container
* do not screenshot table story
* supress tooltip showing when a menu is open
* updated docs
* add aria-label to icon only actions
* add aria-label to additional actions button
* fix spec descriptions
* add missing translations
* more grammatically corrrect annoucement
* have consumer provide their own menu
* use data holder components to solve for menu complexities
* use actual icon
* fix trigger being added twice
* rebuild focusKeyManager in case actions change
* address strong agree feedback comments
* update spacing tovisually align dividers
* rename input to avoid collision with popover/coachmark position input
* merge positions
* fix test
* simplify compact mode logic
* more verbose keydown handling for a11y
* remove commented code left in error
* added enum, i18n key, and service logic
* add enums, i18n, and service logic
* initial work to support Send access logs
* adjust wording of i18n values
- Introduced a new spec file for VaultComponent to test its functionality.
- Implemented a fix to ensure the component refreshes correctly when switching organizations, addressing an issue where subsequent fetches were blocked after the initial load.
* [CL-1046] Add no-bit-dialog-wrapper lint rule
Errors when <bit-dialog> or <bit-simple-dialog> appears inside any
parent HTML element. The dialog selector should be applied as an
attribute on the root element (e.g. <form bit-dialog>) so that the
form receives the dialog's height styling.
* Migrate admin console dialogs to new form pattern
Updates organization member, group, collection, provider, and domain verification dialogs to use <form bit-dialog> pattern following the component library updates.
* Migrate auth settings dialogs to new form pattern
Updates two-factor authentication, WebAuthn, and emergency access dialogs to use <form bit-dialog> pattern following the component library updates.
* Migrate Secrets Manager dialogs to new form pattern
Updates project, service account, access token, and secret dialogs to use <form bit-dialog> pattern following the component library updates.
* Migrate remaining dialogs to new form pattern
Applies the <form bit-dialog> / <form bit-simple-dialog> attribute selector
pattern to the rest of the codebase, satisfying the no-bit-dialog-wrapper
lint rule. 55 templates across auth, admin console, billing, vault,
key management, secrets manager, provider, dirt integrations, importer,
browser, and desktop apps.
* Migrate key rotation dialog to new form pattern
* prune desktop packages
* Fix @napi-rs/cli version mismatch in desktop napi workspace
Aligns package.json declaration with the locked version (3.2.0) to
resolve npm workspace inconsistency that was blocking ng update.
* update Storybook to v10
* update Angular to v21
* override jest in ng builder
* Add jest-environment-jsdom as explicit dependency
Previously installed as a side effect of a jest@29 override; removing
that override caused it to disappear from node_modules.
* Add .claude/worktrees/ to .gitignore
* Restore @napi-rs/cli to 3.5.1 to match main
* Pin jest-environment-jsdom to 29.7.0 and add to renovate config
* Override jest-environment-jsdom to 29.7.0 in build-angular context
* Add isolatedModules to libs/subscription tsconfig.spec.json to fix Angular 21 module resolution
* Change moduleResolution to bundler for Angular 21 subpath export compatibility
* Add isolatedModules to Angular libs with old spec tsconfig pattern
* Disable emitDecoratorMetadata in spec tsconfigs with isolatedModules
* Fix HostListener event parameter types for Angular 21 compiler strictness
* Revert accidental change to access-selector spec
* Remove accidentally generated desktop package-lock.json
* Fix type-only imports/exports caught by Rolldown in Storybook v10/Vite v8
* fix vault-wrapper type error from Angular 21 stricter generic inference
ngComponentOutlet accepts Type<unknown>; annotate computed() explicitly
since VaultComponent is generic and VaultOrigComponent is not, preventing
TypeScript from inferring a compatible union constructor type.
* Fix kitchen-sink interaction tests for Storybook v10
Replace fire-and-forget navigateTo + synchronous getByRole with
navigateAndWaitFor<T>, which sets the hash and retries the ready
callback via waitFor. Storybook v10 starts play functions before
Angular's initial router navigation completes, so synchronous DOM
queries after navigation were failing intermittently.
* Provide ZoneJS change detection scheduler for Storybook stories
Angular 21 no longer sets up the ZoneJS change detection scheduler by
default in bootstrapApplication. Storybook's Angular renderer uses
bootstrapApplication internally and does not add provideZoneChangeDetection
automatically, so Default CD components relying on zone.js to trigger
re-renders after async operations were not updating before Chromatic
snapshots.
* Wait for dialog/side nav to render before Chromatic snapshot
After userEvent.click the dialog and side nav open asynchronously.
Without an explicit waitFor, Chromatic captures the snapshot before the
resulting UI state is present.
* Fix kitchen-sink waitFor: re-query side nav button, use querySelector for dialog
- openSideNav: re-query the toggle button inside waitFor to avoid reading
a stale DOM reference after Angular re-renders the element post-click
- SimpleDialogOpen / VirtualScrollBlockingDialog: replace getByRole("dialog")
with querySelector("cdk-dialog-container") to avoid testing-library's
visibility check failing on a momentarily inaccessible overlay element
* Revert kitchen-sink stories to main
* Bump Angular, Storybook, and ng-select to latest patch versions
* Trigger pre-commit hooks on merge
* Regenerate package-lock.json with --force to fix npm ci sync
* refactors org user view models and consumers to be ts-strict compliant
* DRY up invite logic
* clean up
* run prettier
* fix circular dep
* fix circular dependency (real)
* update test
* more clean up
* more type saftey fixes
* more types
* even more types
* add jsdoc
* fix test
* WIP updated tab styles and added responsive behavior
* fixes after converting class properties to readonly signals
* - updated host binding to component definition
- converted static class properties to `readonly`
* fixed overflow more button tabindex
* - named `tw-group` in `tab-list-item.directive`
- exported `tabListContainerGap` px value
* migrated `@Input` to `model`
* added tab ordering behavior when selecting from overflow menu
* - updated tabs mdx and stories
- updated tab header margin
- fixed selected tab bottom border not displaying
- fixed keyboard nav between tabs
* fixed type error
* - added 'preserveContentTabs' and 'keyboardNavigation' stories to mdx
- updated 'preserveContent' jsdoc to fix formatting in story
* renamed to `TAB_LIST_CONTAINER_GAP`
* - removed `tw-border-0`
- added "more" translation
* added "more" translation to desktop and browser
* added new line
* updated navigation tabs to include 'bitLabelDirective', trailing icons, overflow responsive behavior
* - removed horizontal spacing from tab group and tab body content
- updated tabs in dialog story and 'header' component to horizontally align tabs correctly
* added "more" translation to kitchen-sink stories
* fixed 'EmptyTab' story for overflow tab behavior
* fix chromatic build error
* updated to `contentChild()`
* fixing keyboard navigation
* add specs for tabs components
* remove debugging text
* remove unused input
* use signal and update styles
* fix keyboard navigation and misalignment
* fix berry rendering bug
* remove tab role from more button
* remove getters and use inject
* remove disablePadding left in error
* remove obsolete input
* fix broken aria attr
* update trailingIcon to endIcon
* remove label directive and use start icon
* apply gap to host style property
* fix broken exports and imports
* remove active getter
* use anchors for overflow menu
* render start icon in tab link component
* remove unneeded aria attr
* display start icon in list and use correct menu item slots
* fix overflow label not rendering
* minor grammar update
* remove unused imports
* [CL-667] refactor(components): extract reusable overflow-list directive (#20651)
* refactor(components): extract reusable overflow-list directive
* refactor(overflow-list): collapse measurement effect into afterNextRender
The closure-flag effect was working around a timing claim that doesn't hold:
content queries are populated by ngAfterContentInit, well before afterNextRender
runs. A single afterNextRender callback covers measurement, RO attachment, and
cleanup — no mutable flag, no zombie effect re-firing on every items() change.
* fix(overflow-list): drop host overflow:hidden clipping focus rings
The host's overflow:hidden was clipping tab focus rings (and any other
legitimate visual overflow). Items get [hidden] applied synchronously
when they overflow, so the clipping safety net wasn't earning its cost.
* fix(tab-nav-bar): apply roving tabindex to align with tab-group
tab-nav-bar already installs a FocusKeyManager for arrow-key navigation,
but every tab-link was also a natural tab stop — so users tabbing through
the page hit each link individually instead of one stop for the nav.
Push tabindex state down from the parent in updateActiveLink: the active
(or first non-disabled) link gets 0, the rest get -1. Seeded once from
ngAfterViewInit so the initial route lands with correct tab order.
* update tab group
---------
Co-authored-by: Bryan Cunningham <bryan.cunningham@me.com>
Co-authored-by: Will Martin <contact@willmartian.com>
* add passport translations
* add passport to web app
* add date-field-group to combine logic for reuse across cipher types
* implement date field for passport
* Add missing passport model files and integrate into cipher models
* update section heading
* Remove numeric values from month selector
* add copy action for national identification number
* fix tests
* omit linked types
* add placeholder for AC
* fix test
* emit failures to validation from child form
* remove old tests
* update date field component to match drivers license implementation
* fix removed translations that were duplicates between drivers license PR and passport
* add events for passport number viewed
* fix update to bank account to quiet down the diff
* collect number visible event
* add passport getter
* add fixedWith for icon