mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-08 18:44:14 +00:00
[UXP-10] Refactoring - Disable button fix
This commit is contained in:
@@ -28,7 +28,6 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</form>
|
|
||||||
|
|
||||||
<ds-alert [type]="AlertTypeEnum.Warning" *ngIf="!isRecaptchaCookieAccepted()">
|
<ds-alert [type]="AlertTypeEnum.Warning" *ngIf="!isRecaptchaCookieAccepted()">
|
||||||
<p class="m-0" [innerHTML]="MESSAGE_PREFIX + '.google-recaptcha.must-accept-cookies' | translate"></p>
|
<p class="m-0" [innerHTML]="MESSAGE_PREFIX + '.google-recaptcha.must-accept-cookies' | translate"></p>
|
||||||
@@ -42,10 +41,9 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<ng-container *ngIf="!((googleRecaptchaService.captchaVersion() | async) === 'v2' && (googleRecaptchaService.captchaMode() | async) === 'invisible'); else v2Invisible">
|
<ng-container *ngIf="!((googleRecaptchaService.captchaVersion() | async) === 'v2' && (googleRecaptchaService.captchaMode() | async) === 'invisible'); else v2Invisible">
|
||||||
<button class="btn btn-primary" [disabled]="form.invalid || (disableUntilChecked() | async)" (click)="register()">
|
<button class="btn btn-primary" [disabled]="form.invalid || disableUntilChecked" (click)="register()">
|
||||||
{{ MESSAGE_PREFIX + '.submit' | translate }}
|
{{ MESSAGE_PREFIX + '.submit' | translate }}
|
||||||
</button>
|
</button>
|
||||||
invalid = {{form.invalid}}, disableUntilChecked = {{disableUntilChecked() | async}}
|
|
||||||
</ng-container>
|
</ng-container>
|
||||||
|
|
||||||
<ng-template #v2Invisible>
|
<ng-template #v2Invisible>
|
||||||
@@ -53,5 +51,7 @@
|
|||||||
{{ MESSAGE_PREFIX + '.submit' | translate }}
|
{{ MESSAGE_PREFIX + '.submit' | translate }}
|
||||||
</button>
|
</button>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
@@ -11,7 +11,7 @@ import { getFirstSucceededRemoteDataPayload } from '../core/shared/operators';
|
|||||||
import { ConfigurationProperty } from '../core/shared/configuration-property.model';
|
import { ConfigurationProperty } from '../core/shared/configuration-property.model';
|
||||||
import { isNotEmpty } from '../shared/empty.util';
|
import { isNotEmpty } from '../shared/empty.util';
|
||||||
import { BehaviorSubject, combineLatest, Observable, of, switchMap } from 'rxjs';
|
import { BehaviorSubject, combineLatest, Observable, of, switchMap } from 'rxjs';
|
||||||
import { map, startWith, take, tap } from 'rxjs/operators';
|
import { map, startWith, take } from 'rxjs/operators';
|
||||||
import { CAPTCHA_NAME, GoogleRecaptchaService } from '../core/google-recaptcha/google-recaptcha.service';
|
import { CAPTCHA_NAME, GoogleRecaptchaService } from '../core/google-recaptcha/google-recaptcha.service';
|
||||||
import { AlertType } from '../shared/alert/aletr-type';
|
import { AlertType } from '../shared/alert/aletr-type';
|
||||||
import { KlaroService } from '../shared/cookies/klaro.service';
|
import { KlaroService } from '../shared/cookies/klaro.service';
|
||||||
@@ -49,6 +49,8 @@ export class RegisterEmailFormComponent implements OnInit {
|
|||||||
*/
|
*/
|
||||||
checkboxCheckedSubject$ = new BehaviorSubject<boolean>(false);
|
checkboxCheckedSubject$ = new BehaviorSubject<boolean>(false);
|
||||||
|
|
||||||
|
disableUntilChecked = true;
|
||||||
|
|
||||||
captchaVersion(): Observable<string> {
|
captchaVersion(): Observable<string> {
|
||||||
return this.googleRecaptchaService.captchaVersion();
|
return this.googleRecaptchaService.captchaVersion();
|
||||||
}
|
}
|
||||||
@@ -87,6 +89,12 @@ export class RegisterEmailFormComponent implements OnInit {
|
|||||||
).subscribe((res: boolean) => {
|
).subscribe((res: boolean) => {
|
||||||
this.registrationVerification = res;
|
this.registrationVerification = res;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
this.disableUntilCheckedFcn().subscribe((res) => {
|
||||||
|
this.disableUntilChecked = res;
|
||||||
|
this.changeDetectorRef.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -161,16 +169,12 @@ export class RegisterEmailFormComponent implements OnInit {
|
|||||||
/**
|
/**
|
||||||
* Return true if the user has not completed the reCaptcha verification (checkbox mode)
|
* Return true if the user has not completed the reCaptcha verification (checkbox mode)
|
||||||
*/
|
*/
|
||||||
disableUntilChecked(): Observable<boolean> {
|
disableUntilCheckedFcn(): Observable<boolean> {
|
||||||
const checked$ = this.checkboxCheckedSubject$.asObservable();
|
const checked$ = this.checkboxCheckedSubject$.asObservable();
|
||||||
return combineLatest([this.captchaVersion(), this.captchaMode(), checked$]).pipe(
|
return combineLatest([this.captchaVersion(), this.captchaMode(), checked$]).pipe(
|
||||||
// disable if checkbox is not checked or if reCaptcha is not in v2 checkbox mode
|
// disable if checkbox is not checked or if reCaptcha is not in v2 checkbox mode
|
||||||
switchMap(([captchaVersion, captchaMode, checked]) => captchaVersion === 'v2' && captchaMode === 'checkbox' ? of(!checked) : of(false)),
|
switchMap(([captchaVersion, captchaMode, checked]) => captchaVersion === 'v2' && captchaMode === 'checkbox' ? of(!checked) : of(false)),
|
||||||
startWith(true),
|
startWith(true),
|
||||||
tap((res) => {
|
|
||||||
console.log('DISABLED = ' + res);
|
|
||||||
}), // TODO remove
|
|
||||||
// tap(() => { this.changeDetectorRef.markForCheck(); }),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -50,7 +50,6 @@ export class GoogleRecaptchaComponent implements OnInit {
|
|||||||
this.executeRecaptcha.emit($event);
|
this.executeRecaptcha.emit($event);
|
||||||
break;
|
break;
|
||||||
case 'checkbox':
|
case 'checkbox':
|
||||||
console.log('CB ' + isNotEmpty($event));
|
|
||||||
this.checkboxChecked.emit(isNotEmpty($event)); // todo fix con boolean
|
this.checkboxChecked.emit(isNotEmpty($event)); // todo fix con boolean
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
Reference in New Issue
Block a user