| 1234567891011121314151617181920212223242526272829303132333435363738 | // In this file we define a set of DOM transformations that are specifically// intended for blind screen readers.//// See https://github.com/wekan/wekan/issues/337 for the general accessibility// considerations.// Without an href, links are non-keyboard-focusable and are not presented on// blind screen readers. We default to the empty anchor `#` href.function enforceHref(attributes) {  if (!_.has(attributes, 'href')) {    attributes.href = '#';  }  return attributes;}// `title` is inconsistently used on the web, and is thus inconsistently// presented by screen readers. `aria-label`, on the other hand, is specific to// accessibility and is presented in ways that title shouldn't be.function copyTitleInAriaLabel(attributes) {  if (!_.has(attributes, 'aria-label') && _.has(attributes, 'title')) {    attributes['aria-label'] = attributes.title;  }  return attributes;}// XXX Our implementation relies on overwriting Blaze virtual DOM functions,// which is a little bit hacky -- but still reasonable with our ES6 usage. If we// end up switching to React we will probably create lower level small// components to handle that without overwriting any build-in function.const { A: superA, I: superI } = HTML;HTML.A = (attributes, ...others) => {  return superA(copyTitleInAriaLabel(enforceHref(attributes)), ...others);};HTML.I = (attributes, ...others) => {  return superI(copyTitleInAriaLabel(attributes), ...others);};
 |