Kenrick Tandrian 18 hours ago
committed by GitHub
parent
commit
ee42644b00
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 6
      CHANGELOG.md
  2. 11
      apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.component.ts
  3. 7
      apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html
  4. 3
      apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.module.ts

6
CHANGELOG.md

@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## Unreleased
### Changed
- Migrated the login with access token dialog from `ngModel` to form control
## 2.193.0 - 2025-08-22 ## 2.193.0 - 2025-08-22
### Added ### Added

11
apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.component.ts

@ -6,6 +6,7 @@ import {
import { TokenStorageService } from '@ghostfolio/client/services/token-storage.service'; import { TokenStorageService } from '@ghostfolio/client/services/token-storage.service';
import { ChangeDetectionStrategy, Component, Inject } from '@angular/core'; import { ChangeDetectionStrategy, Component, Inject } from '@angular/core';
import { FormControl, Validators } from '@angular/forms';
import { MatCheckboxChange } from '@angular/material/checkbox'; import { MatCheckboxChange } from '@angular/material/checkbox';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { Router } from '@angular/router'; import { Router } from '@angular/router';
@ -20,6 +21,10 @@ import { eyeOffOutline, eyeOutline } from 'ionicons/icons';
standalone: false standalone: false
}) })
export class LoginWithAccessTokenDialog { export class LoginWithAccessTokenDialog {
public accessTokenControl = new FormControl(
this.data.accessToken,
Validators.required
);
public isAccessTokenHidden = true; public isAccessTokenHidden = true;
public constructor( public constructor(
@ -45,8 +50,10 @@ export class LoginWithAccessTokenDialog {
} }
public onLoginWithAccessToken() { public onLoginWithAccessToken() {
if (this.data.accessToken) { if (this.accessTokenControl.valid) {
this.dialogRef.close(this.data); this.dialogRef.close({
accessToken: this.accessTokenControl.value
});
} }
} }

7
apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html

@ -11,9 +11,8 @@
<mat-label i18n>Security Token</mat-label> <mat-label i18n>Security Token</mat-label>
<input <input
matInput matInput
name="password" [formControl]="accessTokenControl"
[type]="isAccessTokenHidden ? 'password' : 'text'" [type]="isAccessTokenHidden ? 'password' : 'text'"
[(ngModel)]="data.accessToken"
/> />
<button <button
mat-button mat-button
@ -65,8 +64,8 @@
<button <button
color="primary" color="primary"
mat-flat-button mat-flat-button
[disabled]="!data.accessToken" [disabled]="accessTokenControl.invalid || accessTokenControl.pristine"
[mat-dialog-close]="data" (click)="onLoginWithAccessToken()"
> >
<ng-container i18n>Sign in</ng-container> <ng-container i18n>Sign in</ng-container>
</button> </button>

3
apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.module.ts

@ -1,7 +1,7 @@
import { TextFieldModule } from '@angular/cdk/text-field'; import { TextFieldModule } from '@angular/cdk/text-field';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { ReactiveFormsModule } from '@angular/forms';
import { MatButtonModule } from '@angular/material/button'; import { MatButtonModule } from '@angular/material/button';
import { MatCheckboxModule } from '@angular/material/checkbox'; import { MatCheckboxModule } from '@angular/material/checkbox';
import { MatDialogModule } from '@angular/material/dialog'; import { MatDialogModule } from '@angular/material/dialog';
@ -16,7 +16,6 @@ import { LoginWithAccessTokenDialog } from './login-with-access-token-dialog.com
declarations: [LoginWithAccessTokenDialog], declarations: [LoginWithAccessTokenDialog],
imports: [ imports: [
CommonModule, CommonModule,
FormsModule,
GfDialogHeaderModule, GfDialogHeaderModule,
IonIcon, IonIcon,
MatButtonModule, MatButtonModule,

Loading…
Cancel
Save