@randstad-design/orbit-multitheme
Version:
multitheme Front-end code based on Randstad Human Forward components
42 lines (34 loc) • 818 B
JavaScript
/**
* accessible-link.js
* helper for making elements accessible links
*/
/**
* Declare constants
*/
const attributeBase = 'data-rs-accessible-link';
export class AccessibleLink {
constructor(element) {
this.element = element;
this.setAccessibleLink();
}
setAccessibleLink() {
//handles clicks and keydowns on the link
const _this = this;
function navigateLink(e) {
if (e.type === 'click' || e.key === 'Enter') {
const href = _this.element.getAttribute('data-href');
if (href) {
window.location.href = href;
}
}
}
this.element.addEventListener('click', navigateLink);
this.element.addEventListener('keydown', navigateLink);
}
/**
* Get selector
*/
static getSelector() {
return `[${attributeBase}]`;
}
}