Skip to content

Instantly share code, notes, and snippets.

@takahirohonda
Last active October 13, 2019 04:43
Show Gist options
  • Save takahirohonda/3b2604072989af4d57a513dbc6773afe to your computer and use it in GitHub Desktop.
Save takahirohonda/3b2604072989af4d57a513dbc6773afe to your computer and use it in GitHub Desktop.
karma-unit-test-input-eventlistener-3.ts
class FormEventHandler implements IEventHandler {
private formElement: HTMLElement;
constructor(formElement: HTMLElement) {
this.formElement = formElement;
}
public init(): void {
this.radioInputHandler();
this.checkboxInputHandler();
}
private radioInputHandler(): void {
const radioInputElements = this.formElement
.querySelectorAll('.radio-input-ac');
this.addEventListenerForAriaCheckedRadio(radioInputElements);
}
private checkboxInputHandler(): void {
const checkboxInputElements = this.formElement
.querySelectorAll('.checkbox-input-ac');
this.addEventListenerForAriaCheckedCheckBox(checkboxInputElements);
}
private addEventListenerForAriaCheckedRadio (elementList: any)
: void {
for (let elem of elementList) {
elem.addEventListener('click', () => {
for (let elem of elementList) {
if (elem.checked) {
elem.setAttribute('aria-checked', 'true');
} else {
elem.setAttribute('aria-checked', 'false');
}
}
});
}
}
private addEventListenerForAriaCheckedCheckBox (elementList: any)
: void {
for (let elem of elementList) {
elem.addEventListener('click', (e: Event) => {
this.setAriaChecked(<HTMLInputElement>e.target);
});
}
}
private setAriaChecked (elem: HTMLInputElement): void {
if (elem.checked) {
elem.setAttribute('aria-checked', 'true');
} else {
elem.setAttribute('aria-checked', 'false');
}
}
}
export default FormEventHandler;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment