mirror of
https://github.com/bitwarden/clients.git
synced 2026-07-10 21:03:56 +08:00
Refactor environment service to emit a single observable. This required significant changes to how the environment service behaves and tackles much of the tech debt planned for it.
80 lines
2.4 KiB
HTML
80 lines
2.4 KiB
HTML
<div class="environment-selector-btn">
|
|
{{ "loggingInOn" | i18n }}:
|
|
<button
|
|
type="button"
|
|
(click)="toggle(null)"
|
|
cdkOverlayOrigin
|
|
#trigger="cdkOverlayOrigin"
|
|
aria-haspopup="dialog"
|
|
aria-controls="cdk-overlay-container"
|
|
>
|
|
<span class="text-primary">
|
|
<ng-container *ngIf="selectedRegion$ | async as selectedRegion; else fallback">
|
|
{{ selectedRegion.domain }}
|
|
</ng-container>
|
|
<ng-template #fallback>
|
|
{{ "selfHostedServer" | i18n }}
|
|
</ng-template>
|
|
</span>
|
|
<i class="bwi bwi-fw bwi-sm bwi-angle-down" aria-hidden="true"></i>
|
|
</button>
|
|
</div>
|
|
|
|
<ng-template
|
|
cdkConnectedOverlay
|
|
[cdkConnectedOverlayOrigin]="trigger"
|
|
[cdkConnectedOverlayOpen]="isOpen"
|
|
[cdkConnectedOverlayPositions]="overlayPosition"
|
|
[cdkConnectedOverlayHasBackdrop]="true"
|
|
[cdkConnectedOverlayBackdropClass]="'cdk-overlay-transparent-backdrop'"
|
|
(backdropClick)="isOpen = false"
|
|
(detach)="close()"
|
|
>
|
|
<div class="box-content">
|
|
<div
|
|
class="environment-selector-dialog"
|
|
[@transformPanel]="'open'"
|
|
cdkTrapFocus
|
|
cdkTrapFocusAutoCapture
|
|
role="dialog"
|
|
aria-modal="true"
|
|
>
|
|
<ng-container *ngFor="let region of availableRegions">
|
|
<button
|
|
type="button"
|
|
class="environment-selector-dialog-item"
|
|
(click)="toggle(region.key)"
|
|
[attr.aria-pressed]="selectedEnvironment === region.key ? 'true' : 'false'"
|
|
>
|
|
<i
|
|
class="bwi bwi-fw bwi-sm bwi-check"
|
|
style="padding-bottom: 1px"
|
|
aria-hidden="true"
|
|
[style.visibility]="selectedEnvironment === region.key ? 'visible' : 'hidden'"
|
|
></i>
|
|
<span>{{ region.domain }}</span>
|
|
</button>
|
|
<br />
|
|
</ng-container>
|
|
<button
|
|
type="button"
|
|
class="environment-selector-dialog-item"
|
|
(click)="toggle(ServerEnvironmentType.SelfHosted)"
|
|
[attr.aria-pressed]="
|
|
selectedEnvironment === ServerEnvironmentType.SelfHosted ? 'true' : 'false'
|
|
"
|
|
>
|
|
<i
|
|
class="bwi bwi-fw bwi-sm bwi-check"
|
|
style="padding-bottom: 1px"
|
|
aria-hidden="true"
|
|
[style.visibility]="
|
|
selectedEnvironment === ServerEnvironmentType.SelfHosted ? 'visible' : 'hidden'
|
|
"
|
|
></i>
|
|
<span>{{ "selfHostedServer" | i18n }}</span>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</ng-template>
|