demarches-normaliennes/app/javascript/controllers/email_france_connect_controller.ts

44 lines
1.2 KiB
TypeScript
Raw Normal View History

import { ApplicationController } from './application_controller';
export class EmailFranceConnectController extends ApplicationController {
2024-11-22 16:54:21 +01:00
static targets = ['useFranceConnectEmail', 'emailField', 'submit', 'emailInput'];
2024-08-12 09:48:14 +00:00
emailFieldTarget!: HTMLElement;
useFranceConnectEmailTargets!: HTMLInputElement[];
2024-11-22 16:54:21 +01:00
submitTarget!: HTMLButtonElement;
emailInputTarget!: HTMLInputElement;
triggerEmailField() {
2024-11-22 16:54:21 +01:00
if (this.useFCEmail()) {
this.emailFieldTarget.classList.add('hidden');
this.emailFieldTarget.setAttribute('aria-hidden', 'true');
2024-11-22 16:54:21 +01:00
this.emailInputTarget.removeAttribute('required');
this.emailInputTarget.value = '';
} else {
this.emailFieldTarget.classList.remove('hidden');
this.emailFieldTarget.setAttribute('aria-hidden', 'false');
2024-11-22 16:54:21 +01:00
this.emailInputTarget.setAttribute('required', '');
}
}
triggerSubmitDisabled() {
if (this.useFCEmail() || this.isEmailInputFilled()) {
this.submitTarget.disabled = false;
} else {
2024-11-22 16:54:21 +01:00
this.submitTarget.disabled = true;
}
}
2024-11-22 16:54:21 +01:00
useFCEmail() {
return this.useFranceConnectEmailTargets.find(
(target) => target.checked
)?.value === 'true' || false;
}
isEmailInputFilled() {
return this.emailInputTarget.value.length > 0;
}
}