* [#65606] Apply description to links with blank target
Uses a `ExternalLinksController` Stimulus controller to set
`aria-describedby` on all links with `target="blank"`. Uses a
`MutationObserver` to ensure links that are added to the DOM dynamically
(e.g. via Turbo Drive) are also updated.
Co-Authored-By: Behrokh Satarnejad <62008897+bsatarnejad@users.noreply.github.com>
* add a documentation for the controller
* Add simple feature spec for external links
* Append id to aria-describedby if existing value
* Update the documentations on the lookbook for the links
---------
Co-authored-by: Alexander Brandon Coles <a.coles@openproject.com>
Issues found by axe-core and fixed:
Found 1 accessibility violation:
1) image-alt: Images must have alternate text (critical)
https://dequeuniversity.com/rules/axe/4.8/image-alt?application=axeAPI
The following 2 nodes violate this rule:
Selector: .widget-box--teaser-image
HTML: <img _ngcontent-ng-c3812879498="" class="widget-box--teaser-image op-new-features--teaser-image" src="/assets/frontend/assets/images/13_0_features.svg">
Fix any of the following:
- Element does not have an alt attribute
- aria-label attribute does not exist or is empty
- aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty
- Element has no title attribute
- Element's default semantics were not overridden with role="none" or role="presentation"
Selector: .widget-box--blocks--upsale-image
HTML: <img class="widget-box--blocks--upsale-image" src="/assets/enterprise-add-on.svg">
Fix any of the following:
- Element does not have an alt attribute
- aria-label attribute does not exist or is empty
- aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty
- Element has no title attribute
- Element's default semantics were not overridden with role="none" or role="presentation"
Also removed useless title attributes from <img> tags