govuk_publishing_components 18.1.0 → 18.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (513) hide show
  1. checksums.yaml +4 -4
  2. data/lib/govuk_publishing_components/version.rb +1 -1
  3. data/node_modules/axe-core/CHANGELOG.md +741 -0
  4. data/node_modules/axe-core/CONTRIBUTING.md +187 -0
  5. data/node_modules/axe-core/LICENSE +362 -0
  6. data/node_modules/axe-core/README.md +147 -0
  7. data/node_modules/axe-core/axe.d.ts +216 -0
  8. data/node_modules/axe-core/axe.js +15298 -0
  9. data/node_modules/axe-core/axe.min.js +12 -0
  10. data/node_modules/axe-core/bower.json +40 -0
  11. data/node_modules/axe-core/doc/API.md +798 -0
  12. data/node_modules/axe-core/doc/accessibility-supported.md +33 -0
  13. data/node_modules/axe-core/doc/act-rules-format.md +37 -0
  14. data/node_modules/axe-core/doc/aria-supported.md +23 -0
  15. data/node_modules/axe-core/doc/axelogo2018.png +0 -0
  16. data/node_modules/axe-core/doc/code-submission-guidelines.md +178 -0
  17. data/node_modules/axe-core/doc/developer-guide.md +500 -0
  18. data/node_modules/axe-core/doc/examples/chrome-debugging-protocol/README.md +13 -0
  19. data/node_modules/axe-core/doc/examples/chrome-debugging-protocol/axe-cdp.js +81 -0
  20. data/node_modules/axe-core/doc/examples/chrome-debugging-protocol/package.json +8 -0
  21. data/node_modules/axe-core/doc/examples/html-handlebars.md +164 -0
  22. data/node_modules/axe-core/doc/examples/jasmine/README.md +37 -0
  23. data/node_modules/axe-core/doc/examples/jasmine/package.json +20 -0
  24. data/node_modules/axe-core/doc/examples/jasmine/spec/a11y.js +36 -0
  25. data/node_modules/axe-core/doc/examples/jest_react/README.md +41 -0
  26. data/node_modules/axe-core/doc/examples/jest_react/link.js +7 -0
  27. data/node_modules/axe-core/doc/examples/jest_react/link.test.js +24 -0
  28. data/node_modules/axe-core/doc/examples/jest_react/package.json +28 -0
  29. data/node_modules/axe-core/doc/examples/jest_react/test-helpers.js +21 -0
  30. data/node_modules/axe-core/doc/examples/mocha/README.md +37 -0
  31. data/node_modules/axe-core/doc/examples/mocha/package.json +21 -0
  32. data/node_modules/axe-core/doc/examples/phantomjs/README.md +17 -0
  33. data/node_modules/axe-core/doc/examples/phantomjs/axe-phantom.js +51 -0
  34. data/node_modules/axe-core/doc/examples/phantomjs/package.json +19 -0
  35. data/node_modules/axe-core/doc/examples/puppeteer/README.md +12 -0
  36. data/node_modules/axe-core/doc/examples/puppeteer/axe-puppeteer.js +60 -0
  37. data/node_modules/axe-core/doc/examples/puppeteer/package.json +10 -0
  38. data/node_modules/axe-core/doc/examples/qunit/README.md +37 -0
  39. data/node_modules/axe-core/doc/examples/qunit/package.json +21 -0
  40. data/node_modules/axe-core/doc/plugins.md +123 -0
  41. data/node_modules/axe-core/doc/projects.md +44 -0
  42. data/node_modules/axe-core/doc/rule-descriptions.md +79 -0
  43. data/node_modules/axe-core/doc/rule-development.md +95 -0
  44. data/node_modules/axe-core/doc/rule-proposal.md +106 -0
  45. data/node_modules/axe-core/lib/checks/aria/abstractrole.js +1 -0
  46. data/node_modules/axe-core/lib/checks/aria/abstractrole.json +11 -0
  47. data/node_modules/axe-core/lib/checks/aria/allowed-attr.js +39 -0
  48. data/node_modules/axe-core/lib/checks/aria/allowed-attr.json +11 -0
  49. data/node_modules/axe-core/lib/checks/aria/aria-allowed-role.js +28 -0
  50. data/node_modules/axe-core/lib/checks/aria/aria-allowed-role.json +16 -0
  51. data/node_modules/axe-core/lib/checks/aria/aria-hidden-body.js +1 -0
  52. data/node_modules/axe-core/lib/checks/aria/aria-hidden-body.json +11 -0
  53. data/node_modules/axe-core/lib/checks/aria/errormessage.js +33 -0
  54. data/node_modules/axe-core/lib/checks/aria/errormessage.json +11 -0
  55. data/node_modules/axe-core/lib/checks/aria/has-widget-role.js +6 -0
  56. data/node_modules/axe-core/lib/checks/aria/has-widget-role.json +12 -0
  57. data/node_modules/axe-core/lib/checks/aria/implicit-role-fallback.js +6 -0
  58. data/node_modules/axe-core/lib/checks/aria/implicit-role-fallback.json +11 -0
  59. data/node_modules/axe-core/lib/checks/aria/invalidrole.js +3 -0
  60. data/node_modules/axe-core/lib/checks/aria/invalidrole.json +11 -0
  61. data/node_modules/axe-core/lib/checks/aria/required-attr.js +28 -0
  62. data/node_modules/axe-core/lib/checks/aria/required-attr.json +11 -0
  63. data/node_modules/axe-core/lib/checks/aria/required-children.js +117 -0
  64. data/node_modules/axe-core/lib/checks/aria/required-children.json +15 -0
  65. data/node_modules/axe-core/lib/checks/aria/required-parent.js +87 -0
  66. data/node_modules/axe-core/lib/checks/aria/required-parent.json +11 -0
  67. data/node_modules/axe-core/lib/checks/aria/unsupportedattr.js +39 -0
  68. data/node_modules/axe-core/lib/checks/aria/unsupportedattr.json +11 -0
  69. data/node_modules/axe-core/lib/checks/aria/unsupportedrole.js +1 -0
  70. data/node_modules/axe-core/lib/checks/aria/unsupportedrole.json +11 -0
  71. data/node_modules/axe-core/lib/checks/aria/valid-attr-value.js +32 -0
  72. data/node_modules/axe-core/lib/checks/aria/valid-attr-value.json +12 -0
  73. data/node_modules/axe-core/lib/checks/aria/valid-attr.js +25 -0
  74. data/node_modules/axe-core/lib/checks/aria/valid-attr.json +12 -0
  75. data/node_modules/axe-core/lib/checks/aria/valid-scrollable-semantics.js +62 -0
  76. data/node_modules/axe-core/lib/checks/aria/valid-scrollable-semantics.json +12 -0
  77. data/node_modules/axe-core/lib/checks/color/color-contrast.js +70 -0
  78. data/node_modules/axe-core/lib/checks/color/color-contrast.json +24 -0
  79. data/node_modules/axe-core/lib/checks/color/link-in-text-block.js +85 -0
  80. data/node_modules/axe-core/lib/checks/color/link-in-text-block.json +19 -0
  81. data/node_modules/axe-core/lib/checks/forms/autocomplete-appropriate.js +67 -0
  82. data/node_modules/axe-core/lib/checks/forms/autocomplete-appropriate.json +11 -0
  83. data/node_modules/axe-core/lib/checks/forms/autocomplete-valid.js +2 -0
  84. data/node_modules/axe-core/lib/checks/forms/autocomplete-valid.json +11 -0
  85. data/node_modules/axe-core/lib/checks/forms/fieldset-after.js +25 -0
  86. data/node_modules/axe-core/lib/checks/forms/fieldset.js +109 -0
  87. data/node_modules/axe-core/lib/checks/forms/fieldset.json +12 -0
  88. data/node_modules/axe-core/lib/checks/forms/group-labelledby-after.js +16 -0
  89. data/node_modules/axe-core/lib/checks/forms/group-labelledby.js +66 -0
  90. data/node_modules/axe-core/lib/checks/forms/group-labelledby.json +12 -0
  91. data/node_modules/axe-core/lib/checks/keyboard/accesskeys-after.js +19 -0
  92. data/node_modules/axe-core/lib/checks/keyboard/accesskeys.js +5 -0
  93. data/node_modules/axe-core/lib/checks/keyboard/accesskeys.json +12 -0
  94. data/node_modules/axe-core/lib/checks/keyboard/focusable-disabled.js +25 -0
  95. data/node_modules/axe-core/lib/checks/keyboard/focusable-disabled.json +11 -0
  96. data/node_modules/axe-core/lib/checks/keyboard/focusable-no-name.js +6 -0
  97. data/node_modules/axe-core/lib/checks/keyboard/focusable-no-name.json +11 -0
  98. data/node_modules/axe-core/lib/checks/keyboard/focusable-not-tabbable.js +25 -0
  99. data/node_modules/axe-core/lib/checks/keyboard/focusable-not-tabbable.json +11 -0
  100. data/node_modules/axe-core/lib/checks/keyboard/landmark-is-top-level.js +18 -0
  101. data/node_modules/axe-core/lib/checks/keyboard/landmark-is-top-level.json +11 -0
  102. data/node_modules/axe-core/lib/checks/keyboard/page-has-elm-after.js +11 -0
  103. data/node_modules/axe-core/lib/checks/keyboard/page-has-elm.js +9 -0
  104. data/node_modules/axe-core/lib/checks/keyboard/page-has-heading-one.json +15 -0
  105. data/node_modules/axe-core/lib/checks/keyboard/page-has-main.json +15 -0
  106. data/node_modules/axe-core/lib/checks/keyboard/page-no-duplicate-banner.json +15 -0
  107. data/node_modules/axe-core/lib/checks/keyboard/page-no-duplicate-contentinfo.json +15 -0
  108. data/node_modules/axe-core/lib/checks/keyboard/page-no-duplicate-main.json +14 -0
  109. data/node_modules/axe-core/lib/checks/keyboard/page-no-duplicate.js +22 -0
  110. data/node_modules/axe-core/lib/checks/keyboard/tabindex.js +1 -0
  111. data/node_modules/axe-core/lib/checks/keyboard/tabindex.json +11 -0
  112. data/node_modules/axe-core/lib/checks/label/alt-space-value.js +2 -0
  113. data/node_modules/axe-core/lib/checks/label/alt-space-value.json +11 -0
  114. data/node_modules/axe-core/lib/checks/label/duplicate-img-label.js +19 -0
  115. data/node_modules/axe-core/lib/checks/label/duplicate-img-label.json +11 -0
  116. data/node_modules/axe-core/lib/checks/label/explicit.js +15 -0
  117. data/node_modules/axe-core/lib/checks/label/explicit.json +11 -0
  118. data/node_modules/axe-core/lib/checks/label/help-same-as-label.js +23 -0
  119. data/node_modules/axe-core/lib/checks/label/help-same-as-label.json +12 -0
  120. data/node_modules/axe-core/lib/checks/label/hidden-explicit-label.js +12 -0
  121. data/node_modules/axe-core/lib/checks/label/hidden-explicit-label.json +11 -0
  122. data/node_modules/axe-core/lib/checks/label/implicit.js +7 -0
  123. data/node_modules/axe-core/lib/checks/label/implicit.json +11 -0
  124. data/node_modules/axe-core/lib/checks/label/label-content-name-mismatch.js +49 -0
  125. data/node_modules/axe-core/lib/checks/label/label-content-name-mismatch.json +11 -0
  126. data/node_modules/axe-core/lib/checks/label/multiple-label.js +29 -0
  127. data/node_modules/axe-core/lib/checks/label/multiple-label.json +11 -0
  128. data/node_modules/axe-core/lib/checks/label/title-only.js +5 -0
  129. data/node_modules/axe-core/lib/checks/label/title-only.json +11 -0
  130. data/node_modules/axe-core/lib/checks/language/has-lang.js +5 -0
  131. data/node_modules/axe-core/lib/checks/language/has-lang.json +11 -0
  132. data/node_modules/axe-core/lib/checks/language/valid-lang.js +26 -0
  133. data/node_modules/axe-core/lib/checks/language/valid-lang.json +11 -0
  134. data/node_modules/axe-core/lib/checks/language/xml-lang-mismatch.js +5 -0
  135. data/node_modules/axe-core/lib/checks/language/xml-lang-mismatch.json +11 -0
  136. data/node_modules/axe-core/lib/checks/lists/dlitem.js +23 -0
  137. data/node_modules/axe-core/lib/checks/lists/dlitem.json +11 -0
  138. data/node_modules/axe-core/lib/checks/lists/listitem.js +18 -0
  139. data/node_modules/axe-core/lib/checks/lists/listitem.json +11 -0
  140. data/node_modules/axe-core/lib/checks/lists/only-dlitems.js +42 -0
  141. data/node_modules/axe-core/lib/checks/lists/only-dlitems.json +11 -0
  142. data/node_modules/axe-core/lib/checks/lists/only-listitems.js +68 -0
  143. data/node_modules/axe-core/lib/checks/lists/only-listitems.json +11 -0
  144. data/node_modules/axe-core/lib/checks/lists/structured-dlitems.js +22 -0
  145. data/node_modules/axe-core/lib/checks/lists/structured-dlitems.json +11 -0
  146. data/node_modules/axe-core/lib/checks/media/caption.js +8 -0
  147. data/node_modules/axe-core/lib/checks/media/caption.json +11 -0
  148. data/node_modules/axe-core/lib/checks/media/description.js +8 -0
  149. data/node_modules/axe-core/lib/checks/media/description.json +11 -0
  150. data/node_modules/axe-core/lib/checks/media/frame-tested.js +28 -0
  151. data/node_modules/axe-core/lib/checks/media/frame-tested.json +15 -0
  152. data/node_modules/axe-core/lib/checks/mobile/css-orientation-lock.js +132 -0
  153. data/node_modules/axe-core/lib/checks/mobile/css-orientation-lock.json +12 -0
  154. data/node_modules/axe-core/lib/checks/mobile/meta-viewport-large.json +15 -0
  155. data/node_modules/axe-core/lib/checks/mobile/meta-viewport-scale.js +38 -0
  156. data/node_modules/axe-core/lib/checks/mobile/meta-viewport.json +14 -0
  157. data/node_modules/axe-core/lib/checks/navigation/header-present.js +4 -0
  158. data/node_modules/axe-core/lib/checks/navigation/header-present.json +11 -0
  159. data/node_modules/axe-core/lib/checks/navigation/heading-order-after.js +14 -0
  160. data/node_modules/axe-core/lib/checks/navigation/heading-order.js +15 -0
  161. data/node_modules/axe-core/lib/checks/navigation/heading-order.json +12 -0
  162. data/node_modules/axe-core/lib/checks/navigation/internal-link-present.js +4 -0
  163. data/node_modules/axe-core/lib/checks/navigation/internal-link-present.json +11 -0
  164. data/node_modules/axe-core/lib/checks/navigation/landmark.js +3 -0
  165. data/node_modules/axe-core/lib/checks/navigation/landmark.json +11 -0
  166. data/node_modules/axe-core/lib/checks/navigation/meta-refresh.js +4 -0
  167. data/node_modules/axe-core/lib/checks/navigation/meta-refresh.json +11 -0
  168. data/node_modules/axe-core/lib/checks/navigation/p-as-heading.js +93 -0
  169. data/node_modules/axe-core/lib/checks/navigation/p-as-heading.json +30 -0
  170. data/node_modules/axe-core/lib/checks/navigation/region-after.js +1 -0
  171. data/node_modules/axe-core/lib/checks/navigation/region.js +85 -0
  172. data/node_modules/axe-core/lib/checks/navigation/region.json +12 -0
  173. data/node_modules/axe-core/lib/checks/navigation/skip-link.js +5 -0
  174. data/node_modules/axe-core/lib/checks/navigation/skip-link.json +12 -0
  175. data/node_modules/axe-core/lib/checks/navigation/unique-frame-title-after.js +9 -0
  176. data/node_modules/axe-core/lib/checks/navigation/unique-frame-title.js +6 -0
  177. data/node_modules/axe-core/lib/checks/navigation/unique-frame-title.json +12 -0
  178. data/node_modules/axe-core/lib/checks/parsing/duplicate-id-active.json +12 -0
  179. data/node_modules/axe-core/lib/checks/parsing/duplicate-id-after.js +8 -0
  180. data/node_modules/axe-core/lib/checks/parsing/duplicate-id-aria.json +12 -0
  181. data/node_modules/axe-core/lib/checks/parsing/duplicate-id.js +17 -0
  182. data/node_modules/axe-core/lib/checks/parsing/duplicate-id.json +12 -0
  183. data/node_modules/axe-core/lib/checks/shared/aria-label.js +2 -0
  184. data/node_modules/axe-core/lib/checks/shared/aria-label.json +11 -0
  185. data/node_modules/axe-core/lib/checks/shared/aria-labelledby.js +2 -0
  186. data/node_modules/axe-core/lib/checks/shared/aria-labelledby.json +11 -0
  187. data/node_modules/axe-core/lib/checks/shared/button-has-visible-text.js +12 -0
  188. data/node_modules/axe-core/lib/checks/shared/button-has-visible-text.json +11 -0
  189. data/node_modules/axe-core/lib/checks/shared/doc-has-title.js +2 -0
  190. data/node_modules/axe-core/lib/checks/shared/doc-has-title.json +11 -0
  191. data/node_modules/axe-core/lib/checks/shared/exists.js +1 -0
  192. data/node_modules/axe-core/lib/checks/shared/exists.json +11 -0
  193. data/node_modules/axe-core/lib/checks/shared/has-alt.js +4 -0
  194. data/node_modules/axe-core/lib/checks/shared/has-alt.json +11 -0
  195. data/node_modules/axe-core/lib/checks/shared/has-visible-text.js +1 -0
  196. data/node_modules/axe-core/lib/checks/shared/has-visible-text.json +11 -0
  197. data/node_modules/axe-core/lib/checks/shared/is-on-screen.js +4 -0
  198. data/node_modules/axe-core/lib/checks/shared/is-on-screen.json +11 -0
  199. data/node_modules/axe-core/lib/checks/shared/non-empty-alt.js +2 -0
  200. data/node_modules/axe-core/lib/checks/shared/non-empty-alt.json +11 -0
  201. data/node_modules/axe-core/lib/checks/shared/non-empty-if-present.js +11 -0
  202. data/node_modules/axe-core/lib/checks/shared/non-empty-if-present.json +11 -0
  203. data/node_modules/axe-core/lib/checks/shared/non-empty-title.js +2 -0
  204. data/node_modules/axe-core/lib/checks/shared/non-empty-title.json +11 -0
  205. data/node_modules/axe-core/lib/checks/shared/non-empty-value.js +2 -0
  206. data/node_modules/axe-core/lib/checks/shared/non-empty-value.json +11 -0
  207. data/node_modules/axe-core/lib/checks/shared/role-none.js +1 -0
  208. data/node_modules/axe-core/lib/checks/shared/role-none.json +11 -0
  209. data/node_modules/axe-core/lib/checks/shared/role-presentation.js +1 -0
  210. data/node_modules/axe-core/lib/checks/shared/role-presentation.json +11 -0
  211. data/node_modules/axe-core/lib/checks/tables/caption-faked.js +10 -0
  212. data/node_modules/axe-core/lib/checks/tables/caption-faked.json +11 -0
  213. data/node_modules/axe-core/lib/checks/tables/has-caption.js +1 -0
  214. data/node_modules/axe-core/lib/checks/tables/has-caption.json +11 -0
  215. data/node_modules/axe-core/lib/checks/tables/has-summary.js +1 -0
  216. data/node_modules/axe-core/lib/checks/tables/has-summary.json +11 -0
  217. data/node_modules/axe-core/lib/checks/tables/has-th.js +31 -0
  218. data/node_modules/axe-core/lib/checks/tables/has-th.json +11 -0
  219. data/node_modules/axe-core/lib/checks/tables/headers-visible-text.js +30 -0
  220. data/node_modules/axe-core/lib/checks/tables/html5-scope.js +5 -0
  221. data/node_modules/axe-core/lib/checks/tables/html5-scope.json +11 -0
  222. data/node_modules/axe-core/lib/checks/tables/same-caption-summary.js +7 -0
  223. data/node_modules/axe-core/lib/checks/tables/same-caption-summary.json +11 -0
  224. data/node_modules/axe-core/lib/checks/tables/scope-value.js +5 -0
  225. data/node_modules/axe-core/lib/checks/tables/scope-value.json +11 -0
  226. data/node_modules/axe-core/lib/checks/tables/td-has-header.js +29 -0
  227. data/node_modules/axe-core/lib/checks/tables/td-has-header.json +11 -0
  228. data/node_modules/axe-core/lib/checks/tables/td-headers-attr.js +62 -0
  229. data/node_modules/axe-core/lib/checks/tables/td-headers-attr.json +11 -0
  230. data/node_modules/axe-core/lib/checks/tables/th-has-data-cells.js +76 -0
  231. data/node_modules/axe-core/lib/checks/tables/th-has-data-cells.json +12 -0
  232. data/node_modules/axe-core/lib/checks/tables/th-single-row-column.js +39 -0
  233. data/node_modules/axe-core/lib/checks/visibility/hidden-content.js +21 -0
  234. data/node_modules/axe-core/lib/checks/visibility/hidden-content.json +12 -0
  235. data/node_modules/axe-core/lib/commons/aria/arialabel-text.js +15 -0
  236. data/node_modules/axe-core/lib/commons/aria/arialabelledby-text.js +52 -0
  237. data/node_modules/axe-core/lib/commons/aria/attributes.js +45 -0
  238. data/node_modules/axe-core/lib/commons/aria/get-element-unallowed-roles.js +92 -0
  239. data/node_modules/axe-core/lib/commons/aria/get-owned-virtual.js +24 -0
  240. data/node_modules/axe-core/lib/commons/aria/get-role.js +44 -0
  241. data/node_modules/axe-core/lib/commons/aria/index.js +2417 -0
  242. data/node_modules/axe-core/lib/commons/aria/is-accessible-ref.js +55 -0
  243. data/node_modules/axe-core/lib/commons/aria/is-aria-role-allowed-on-element.js +41 -0
  244. data/node_modules/axe-core/lib/commons/aria/is-unsupported-role.js +14 -0
  245. data/node_modules/axe-core/lib/commons/aria/label-virtual.js +54 -0
  246. data/node_modules/axe-core/lib/commons/aria/named-from-contents.js +39 -0
  247. data/node_modules/axe-core/lib/commons/aria/roles.js +208 -0
  248. data/node_modules/axe-core/lib/commons/aria/validate-attr-value.js +63 -0
  249. data/node_modules/axe-core/lib/commons/color/contrast.js +172 -0
  250. data/node_modules/axe-core/lib/commons/color/element-is-distinct.js +88 -0
  251. data/node_modules/axe-core/lib/commons/color/get-background-color.js +411 -0
  252. data/node_modules/axe-core/lib/commons/color/get-foreground-color.js +32 -0
  253. data/node_modules/axe-core/lib/commons/color/incomplete-data.js +50 -0
  254. data/node_modules/axe-core/lib/commons/color/index.js +8 -0
  255. data/node_modules/axe-core/lib/commons/dom/elements-below-floating.js +39 -0
  256. data/node_modules/axe-core/lib/commons/dom/find-elms-in-context.js +28 -0
  257. data/node_modules/axe-core/lib/commons/dom/find-up.js +63 -0
  258. data/node_modules/axe-core/lib/commons/dom/get-composed-parent.js +25 -0
  259. data/node_modules/axe-core/lib/commons/dom/get-element-by-reference.js +34 -0
  260. data/node_modules/axe-core/lib/commons/dom/get-element-coordinates.js +38 -0
  261. data/node_modules/axe-core/lib/commons/dom/get-root-node.js +12 -0
  262. data/node_modules/axe-core/lib/commons/dom/get-scroll-offset.js +34 -0
  263. data/node_modules/axe-core/lib/commons/dom/get-tabbable-elements.js +24 -0
  264. data/node_modules/axe-core/lib/commons/dom/get-viewport-size.js +37 -0
  265. data/node_modules/axe-core/lib/commons/dom/has-content-virtual.js +73 -0
  266. data/node_modules/axe-core/lib/commons/dom/idrefs.js +36 -0
  267. data/node_modules/axe-core/lib/commons/dom/index.js +9 -0
  268. data/node_modules/axe-core/lib/commons/dom/is-focusable.js +90 -0
  269. data/node_modules/axe-core/lib/commons/dom/is-hidden-with-css.js +60 -0
  270. data/node_modules/axe-core/lib/commons/dom/is-html5.js +17 -0
  271. data/node_modules/axe-core/lib/commons/dom/is-in-text-block.js +95 -0
  272. data/node_modules/axe-core/lib/commons/dom/is-node.js +13 -0
  273. data/node_modules/axe-core/lib/commons/dom/is-offscreen.js +62 -0
  274. data/node_modules/axe-core/lib/commons/dom/is-visible.js +77 -0
  275. data/node_modules/axe-core/lib/commons/dom/is-visual-content.js +50 -0
  276. data/node_modules/axe-core/lib/commons/dom/shadow-elements-from-point.js +41 -0
  277. data/node_modules/axe-core/lib/commons/dom/visually-contains.js +62 -0
  278. data/node_modules/axe-core/lib/commons/dom/visually-overlaps.js +47 -0
  279. data/node_modules/axe-core/lib/commons/index.js +11 -0
  280. data/node_modules/axe-core/lib/commons/intro.stub +1 -0
  281. data/node_modules/axe-core/lib/commons/matches/attributes.js +23 -0
  282. data/node_modules/axe-core/lib/commons/matches/condition.js +19 -0
  283. data/node_modules/axe-core/lib/commons/matches/from-definition.js +47 -0
  284. data/node_modules/axe-core/lib/commons/matches/from-function.js +38 -0
  285. data/node_modules/axe-core/lib/commons/matches/from-primative.js +30 -0
  286. data/node_modules/axe-core/lib/commons/matches/index.js +37 -0
  287. data/node_modules/axe-core/lib/commons/matches/node-name.js +34 -0
  288. data/node_modules/axe-core/lib/commons/matches/properties.js +25 -0
  289. data/node_modules/axe-core/lib/commons/outro.stub +2 -0
  290. data/node_modules/axe-core/lib/commons/table/get-all-cells.js +28 -0
  291. data/node_modules/axe-core/lib/commons/table/get-cell-position.js +28 -0
  292. data/node_modules/axe-core/lib/commons/table/get-headers.js +29 -0
  293. data/node_modules/axe-core/lib/commons/table/get-scope.js +54 -0
  294. data/node_modules/axe-core/lib/commons/table/index.js +9 -0
  295. data/node_modules/axe-core/lib/commons/table/is-column-header.js +13 -0
  296. data/node_modules/axe-core/lib/commons/table/is-data-cell.js +22 -0
  297. data/node_modules/axe-core/lib/commons/table/is-data-table.js +190 -0
  298. data/node_modules/axe-core/lib/commons/table/is-header.js +22 -0
  299. data/node_modules/axe-core/lib/commons/table/is-row-header.js +13 -0
  300. data/node_modules/axe-core/lib/commons/table/to-grid.js +38 -0
  301. data/node_modules/axe-core/lib/commons/table/traverse.js +78 -0
  302. data/node_modules/axe-core/lib/commons/text/accessible-text-virtual.js +152 -0
  303. data/node_modules/axe-core/lib/commons/text/form-control-value.js +204 -0
  304. data/node_modules/axe-core/lib/commons/text/index.js +8 -0
  305. data/node_modules/axe-core/lib/commons/text/is-human-interpretable.js +51 -0
  306. data/node_modules/axe-core/lib/commons/text/is-valid-autocomplete.js +118 -0
  307. data/node_modules/axe-core/lib/commons/text/label-text.js +58 -0
  308. data/node_modules/axe-core/lib/commons/text/label-virtual.js +53 -0
  309. data/node_modules/axe-core/lib/commons/text/native-element-types.js +100 -0
  310. data/node_modules/axe-core/lib/commons/text/native-text-alternative.js +50 -0
  311. data/node_modules/axe-core/lib/commons/text/native-text-methods.js +122 -0
  312. data/node_modules/axe-core/lib/commons/text/sanitize.js +18 -0
  313. data/node_modules/axe-core/lib/commons/text/subtree-text.js +89 -0
  314. data/node_modules/axe-core/lib/commons/text/title-text.js +33 -0
  315. data/node_modules/axe-core/lib/commons/text/unicode.js +117 -0
  316. data/node_modules/axe-core/lib/commons/text/unsupported.js +5 -0
  317. data/node_modules/axe-core/lib/commons/text/visible-virtual.js +46 -0
  318. data/node_modules/axe-core/lib/commons/utils/index.js +10 -0
  319. data/node_modules/axe-core/lib/core/base/audit.js +684 -0
  320. data/node_modules/axe-core/lib/core/base/check-result.js +33 -0
  321. data/node_modules/axe-core/lib/core/base/check.js +123 -0
  322. data/node_modules/axe-core/lib/core/base/context.js +273 -0
  323. data/node_modules/axe-core/lib/core/base/rule-result.js +39 -0
  324. data/node_modules/axe-core/lib/core/base/rule.js +383 -0
  325. data/node_modules/axe-core/lib/core/constants.js +68 -0
  326. data/node_modules/axe-core/lib/core/imports/index.js +26 -0
  327. data/node_modules/axe-core/lib/core/index.js +45 -0
  328. data/node_modules/axe-core/lib/core/log.js +12 -0
  329. data/node_modules/axe-core/lib/core/public/cleanup-plugins.js +53 -0
  330. data/node_modules/axe-core/lib/core/public/configure.js +57 -0
  331. data/node_modules/axe-core/lib/core/public/get-rules.js +29 -0
  332. data/node_modules/axe-core/lib/core/public/load.js +66 -0
  333. data/node_modules/axe-core/lib/core/public/plugins.js +47 -0
  334. data/node_modules/axe-core/lib/core/public/reporter.js +24 -0
  335. data/node_modules/axe-core/lib/core/public/reset.js +12 -0
  336. data/node_modules/axe-core/lib/core/public/run-rules.js +94 -0
  337. data/node_modules/axe-core/lib/core/public/run.js +148 -0
  338. data/node_modules/axe-core/lib/core/reporters/helpers/failure-summary.js +35 -0
  339. data/node_modules/axe-core/lib/core/reporters/helpers/get-environment-data.js +39 -0
  340. data/node_modules/axe-core/lib/core/reporters/helpers/incomplete-fallback-msg.js +11 -0
  341. data/node_modules/axe-core/lib/core/reporters/helpers/index.js +3 -0
  342. data/node_modules/axe-core/lib/core/reporters/helpers/process-aggregate.js +102 -0
  343. data/node_modules/axe-core/lib/core/reporters/na.js +20 -0
  344. data/node_modules/axe-core/lib/core/reporters/no-passes.js +18 -0
  345. data/node_modules/axe-core/lib/core/reporters/raw.js +8 -0
  346. data/node_modules/axe-core/lib/core/reporters/v1.js +26 -0
  347. data/node_modules/axe-core/lib/core/reporters/v2.js +22 -0
  348. data/node_modules/axe-core/lib/core/utils/aggregate.js +19 -0
  349. data/node_modules/axe-core/lib/core/utils/aggregateChecks.js +85 -0
  350. data/node_modules/axe-core/lib/core/utils/aggregateNodeResults.js +61 -0
  351. data/node_modules/axe-core/lib/core/utils/aggregateResult.js +37 -0
  352. data/node_modules/axe-core/lib/core/utils/are-styles-set.js +24 -0
  353. data/node_modules/axe-core/lib/core/utils/check-helper.js +38 -0
  354. data/node_modules/axe-core/lib/core/utils/clone.js +27 -0
  355. data/node_modules/axe-core/lib/core/utils/collect-results-from-frames.js +127 -0
  356. data/node_modules/axe-core/lib/core/utils/contains.js +30 -0
  357. data/node_modules/axe-core/lib/core/utils/css-parser.js +5 -0
  358. data/node_modules/axe-core/lib/core/utils/dq-element.js +97 -0
  359. data/node_modules/axe-core/lib/core/utils/element-matches.js +39 -0
  360. data/node_modules/axe-core/lib/core/utils/escape-selector.js +79 -0
  361. data/node_modules/axe-core/lib/core/utils/extend-meta-data.js +17 -0
  362. data/node_modules/axe-core/lib/core/utils/finalize-result.js +11 -0
  363. data/node_modules/axe-core/lib/core/utils/find-by.js +14 -0
  364. data/node_modules/axe-core/lib/core/utils/flattened-tree.js +170 -0
  365. data/node_modules/axe-core/lib/core/utils/get-all-checks.js +12 -0
  366. data/node_modules/axe-core/lib/core/utils/get-base-lang.js +16 -0
  367. data/node_modules/axe-core/lib/core/utils/get-check-option.js +40 -0
  368. data/node_modules/axe-core/lib/core/utils/get-friendly-uri-end.js +144 -0
  369. data/node_modules/axe-core/lib/core/utils/get-root-node.js +17 -0
  370. data/node_modules/axe-core/lib/core/utils/get-selector.js +406 -0
  371. data/node_modules/axe-core/lib/core/utils/get-xpath.js +84 -0
  372. data/node_modules/axe-core/lib/core/utils/index.js +10 -0
  373. data/node_modules/axe-core/lib/core/utils/inject-style.js +38 -0
  374. data/node_modules/axe-core/lib/core/utils/is-hidden.js +40 -0
  375. data/node_modules/axe-core/lib/core/utils/is-html-element.js +135 -0
  376. data/node_modules/axe-core/lib/core/utils/is-shadow-root.js +40 -0
  377. data/node_modules/axe-core/lib/core/utils/is-xhtml.js +14 -0
  378. data/node_modules/axe-core/lib/core/utils/merge-results.js +116 -0
  379. data/node_modules/axe-core/lib/core/utils/node-sorter.js +21 -0
  380. data/node_modules/axe-core/lib/core/utils/performance-timer.js +121 -0
  381. data/node_modules/axe-core/lib/core/utils/pollyfills.js +299 -0
  382. data/node_modules/axe-core/lib/core/utils/preload-cssom.js +456 -0
  383. data/node_modules/axe-core/lib/core/utils/preload.js +109 -0
  384. data/node_modules/axe-core/lib/core/utils/publish-metadata.js +93 -0
  385. data/node_modules/axe-core/lib/core/utils/qsa.js +322 -0
  386. data/node_modules/axe-core/lib/core/utils/queue.js +138 -0
  387. data/node_modules/axe-core/lib/core/utils/respondable.js +243 -0
  388. data/node_modules/axe-core/lib/core/utils/rule-should-run.js +83 -0
  389. data/node_modules/axe-core/lib/core/utils/scroll-state.js +70 -0
  390. data/node_modules/axe-core/lib/core/utils/select.js +146 -0
  391. data/node_modules/axe-core/lib/core/utils/to-array.js +21 -0
  392. data/node_modules/axe-core/lib/core/utils/token-list.js +15 -0
  393. data/node_modules/axe-core/lib/core/utils/uuid.js +242 -0
  394. data/node_modules/axe-core/lib/core/utils/valid-input-type.js +35 -0
  395. data/node_modules/axe-core/lib/core/utils/valid-langs.js +8152 -0
  396. data/node_modules/axe-core/lib/intro.stub +15 -0
  397. data/node_modules/axe-core/lib/misc/any-failure-summary.json +6 -0
  398. data/node_modules/axe-core/lib/misc/incomplete-fallback.json +3 -0
  399. data/node_modules/axe-core/lib/misc/none-failure-summary.json +6 -0
  400. data/node_modules/axe-core/lib/outro.stub +2 -0
  401. data/node_modules/axe-core/lib/rules/accesskeys.json +13 -0
  402. data/node_modules/axe-core/lib/rules/area-alt.json +19 -0
  403. data/node_modules/axe-core/lib/rules/aria-allowed-attr-matches.js +11 -0
  404. data/node_modules/axe-core/lib/rules/aria-allowed-attr.json +12 -0
  405. data/node_modules/axe-core/lib/rules/aria-allowed-role-matches.js +7 -0
  406. data/node_modules/axe-core/lib/rules/aria-allowed-role.json +14 -0
  407. data/node_modules/axe-core/lib/rules/aria-dpub-role-fallback-matches.js +10 -0
  408. data/node_modules/axe-core/lib/rules/aria-dpub-role-fallback.json +13 -0
  409. data/node_modules/axe-core/lib/rules/aria-has-attr-matches.js +11 -0
  410. data/node_modules/axe-core/lib/rules/aria-hidden-body.json +13 -0
  411. data/node_modules/axe-core/lib/rules/aria-hidden-focus-matches.js +18 -0
  412. data/node_modules/axe-core/lib/rules/aria-hidden-focus.json +14 -0
  413. data/node_modules/axe-core/lib/rules/aria-required-attr.json +12 -0
  414. data/node_modules/axe-core/lib/rules/aria-required-children.json +12 -0
  415. data/node_modules/axe-core/lib/rules/aria-required-parent.json +12 -0
  416. data/node_modules/axe-core/lib/rules/aria-roles.json +12 -0
  417. data/node_modules/axe-core/lib/rules/aria-valid-attr-value.json +12 -0
  418. data/node_modules/axe-core/lib/rules/aria-valid-attr.json +12 -0
  419. data/node_modules/axe-core/lib/rules/audio-caption.json +20 -0
  420. data/node_modules/axe-core/lib/rules/autocomplete-matches.js +45 -0
  421. data/node_modules/axe-core/lib/rules/autocomplete-valid.json +12 -0
  422. data/node_modules/axe-core/lib/rules/blink.json +19 -0
  423. data/node_modules/axe-core/lib/rules/button-name.json +27 -0
  424. data/node_modules/axe-core/lib/rules/bypass-matches.js +1 -0
  425. data/node_modules/axe-core/lib/rules/bypass.json +20 -0
  426. data/node_modules/axe-core/lib/rules/checkboxgroup.json +12 -0
  427. data/node_modules/axe-core/lib/rules/color-contrast-matches.js +120 -0
  428. data/node_modules/axe-core/lib/rules/color-contrast.json +16 -0
  429. data/node_modules/axe-core/lib/rules/css-orientation-lock.json +13 -0
  430. data/node_modules/axe-core/lib/rules/data-table-large-matches.js +11 -0
  431. data/node_modules/axe-core/lib/rules/data-table-matches.js +1 -0
  432. data/node_modules/axe-core/lib/rules/definition-list.json +13 -0
  433. data/node_modules/axe-core/lib/rules/dlitem.json +13 -0
  434. data/node_modules/axe-core/lib/rules/document-title.json +13 -0
  435. data/node_modules/axe-core/lib/rules/duplicate-id-active-matches.js +8 -0
  436. data/node_modules/axe-core/lib/rules/duplicate-id-active.json +14 -0
  437. data/node_modules/axe-core/lib/rules/duplicate-id-aria-matches.js +1 -0
  438. data/node_modules/axe-core/lib/rules/duplicate-id-aria.json +14 -0
  439. data/node_modules/axe-core/lib/rules/duplicate-id-misc-matches.js +11 -0
  440. data/node_modules/axe-core/lib/rules/duplicate-id.json +14 -0
  441. data/node_modules/axe-core/lib/rules/empty-heading.json +13 -0
  442. data/node_modules/axe-core/lib/rules/focus-order-semantics.json +13 -0
  443. data/node_modules/axe-core/lib/rules/form-field-multiple-labels.json +13 -0
  444. data/node_modules/axe-core/lib/rules/frame-tested.json +12 -0
  445. data/node_modules/axe-core/lib/rules/frame-title-has-text.js +2 -0
  446. data/node_modules/axe-core/lib/rules/frame-title-unique.json +13 -0
  447. data/node_modules/axe-core/lib/rules/frame-title.json +25 -0
  448. data/node_modules/axe-core/lib/rules/heading-matches.js +15 -0
  449. data/node_modules/axe-core/lib/rules/heading-order.json +13 -0
  450. data/node_modules/axe-core/lib/rules/hidden-content.json +13 -0
  451. data/node_modules/axe-core/lib/rules/html-has-lang.json +12 -0
  452. data/node_modules/axe-core/lib/rules/html-lang-valid.json +12 -0
  453. data/node_modules/axe-core/lib/rules/html-xml-lang-mismatch.json +13 -0
  454. data/node_modules/axe-core/lib/rules/image-alt.json +25 -0
  455. data/node_modules/axe-core/lib/rules/img-redundant-alt.json +12 -0
  456. data/node_modules/axe-core/lib/rules/input-image-alt.json +18 -0
  457. data/node_modules/axe-core/lib/rules/inserted-into-focus-order-matches.js +1 -0
  458. data/node_modules/axe-core/lib/rules/label-content-name-mismatch-matches.js +42 -0
  459. data/node_modules/axe-core/lib/rules/label-content-name-mismatch.json +12 -0
  460. data/node_modules/axe-core/lib/rules/label-matches.js +11 -0
  461. data/node_modules/axe-core/lib/rules/label-title-only.json +13 -0
  462. data/node_modules/axe-core/lib/rules/label.json +26 -0
  463. data/node_modules/axe-core/lib/rules/landmark-banner-is-top-level.json +13 -0
  464. data/node_modules/axe-core/lib/rules/landmark-complementary-is-top-level.json +12 -0
  465. data/node_modules/axe-core/lib/rules/landmark-contentinfo-is-top-level.json +13 -0
  466. data/node_modules/axe-core/lib/rules/landmark-has-body-context.js +8 -0
  467. data/node_modules/axe-core/lib/rules/landmark-main-is-top-level.json +12 -0
  468. data/node_modules/axe-core/lib/rules/landmark-no-duplicate-banner.json +12 -0
  469. data/node_modules/axe-core/lib/rules/landmark-no-duplicate-contentinfo.json +12 -0
  470. data/node_modules/axe-core/lib/rules/landmark-one-main.json +12 -0
  471. data/node_modules/axe-core/lib/rules/layout-table-matches.js +8 -0
  472. data/node_modules/axe-core/lib/rules/layout-table.json +13 -0
  473. data/node_modules/axe-core/lib/rules/link-in-text-block-matches.js +14 -0
  474. data/node_modules/axe-core/lib/rules/link-in-text-block.json +14 -0
  475. data/node_modules/axe-core/lib/rules/link-name.json +26 -0
  476. data/node_modules/axe-core/lib/rules/list.json +13 -0
  477. data/node_modules/axe-core/lib/rules/listitem.json +13 -0
  478. data/node_modules/axe-core/lib/rules/marquee.json +13 -0
  479. data/node_modules/axe-core/lib/rules/meta-refresh.json +13 -0
  480. data/node_modules/axe-core/lib/rules/meta-viewport-large.json +13 -0
  481. data/node_modules/axe-core/lib/rules/meta-viewport.json +13 -0
  482. data/node_modules/axe-core/lib/rules/no-role-matches.js +1 -0
  483. data/node_modules/axe-core/lib/rules/not-html-matches.js +1 -0
  484. data/node_modules/axe-core/lib/rules/object-alt.json +25 -0
  485. data/node_modules/axe-core/lib/rules/p-as-heading-matches.js +17 -0
  486. data/node_modules/axe-core/lib/rules/p-as-heading.json +13 -0
  487. data/node_modules/axe-core/lib/rules/page-has-heading-one.json +12 -0
  488. data/node_modules/axe-core/lib/rules/radiogroup.json +12 -0
  489. data/node_modules/axe-core/lib/rules/region.json +13 -0
  490. data/node_modules/axe-core/lib/rules/role-not-button-matches.js +1 -0
  491. data/node_modules/axe-core/lib/rules/scope-attr-valid.json +12 -0
  492. data/node_modules/axe-core/lib/rules/server-side-image-map.json +18 -0
  493. data/node_modules/axe-core/lib/rules/skip-link-matches.js +1 -0
  494. data/node_modules/axe-core/lib/rules/skip-link.json +13 -0
  495. data/node_modules/axe-core/lib/rules/tabindex.json +12 -0
  496. data/node_modules/axe-core/lib/rules/table-duplicate-name.json +12 -0
  497. data/node_modules/axe-core/lib/rules/table-fake-caption.json +20 -0
  498. data/node_modules/axe-core/lib/rules/td-has-header.json +20 -0
  499. data/node_modules/axe-core/lib/rules/td-headers-attr.json +12 -0
  500. data/node_modules/axe-core/lib/rules/th-has-data-cells.json +13 -0
  501. data/node_modules/axe-core/lib/rules/valid-lang.json +13 -0
  502. data/node_modules/axe-core/lib/rules/video-caption.json +19 -0
  503. data/node_modules/axe-core/lib/rules/video-description.json +19 -0
  504. data/node_modules/axe-core/lib/rules/window-is-top.js +3 -0
  505. data/node_modules/axe-core/lib/rules/xml-lang-mismatch-matches.js +12 -0
  506. data/node_modules/axe-core/locales/de.json +627 -0
  507. data/node_modules/axe-core/locales/fr.json +667 -0
  508. data/node_modules/axe-core/locales/ja.json +728 -0
  509. data/node_modules/axe-core/locales/nl.json +36 -0
  510. data/node_modules/axe-core/package.json +215 -0
  511. data/node_modules/axe-core/sri-history.json +138 -0
  512. data/node_modules/axe-core/typings/axe-core/axe-core-tests.ts +180 -0
  513. metadata +511 -1
@@ -0,0 +1,32 @@
1
+ /* global axe, color */
2
+
3
+ /**
4
+ * Returns the flattened foreground color of an element, or null if it can't be determined because
5
+ * of transparency
6
+ * @method getForegroundColor
7
+ * @memberof axe.commons.color
8
+ * @instance
9
+ * @param {Element} node
10
+ * @param {Boolean} noScroll (default false)
11
+ * @return {Color|null}
12
+ */
13
+ color.getForegroundColor = function(node, noScroll) {
14
+ var nodeStyle = window.getComputedStyle(node);
15
+
16
+ var fgColor = new color.Color();
17
+ fgColor.parseRgbString(nodeStyle.getPropertyValue('color'));
18
+ var opacity = nodeStyle.getPropertyValue('opacity');
19
+ fgColor.alpha = fgColor.alpha * opacity;
20
+ if (fgColor.alpha === 1) {
21
+ return fgColor;
22
+ }
23
+
24
+ var bgColor = color.getBackgroundColor(node, [], noScroll);
25
+ if (bgColor === null) {
26
+ var reason = axe.commons.color.incompleteData.get('bgColor');
27
+ axe.commons.color.incompleteData.set('fgColor', reason);
28
+ return null;
29
+ }
30
+
31
+ return color.flattenColors(fgColor, bgColor);
32
+ };
@@ -0,0 +1,50 @@
1
+ /* global color */
2
+
3
+ /**
4
+ * API for handling incomplete color data
5
+ * @namespace axe.commons.color.incompleteData
6
+ * @inner
7
+ */
8
+
9
+ color.incompleteData = (function() {
10
+ var data = {};
11
+ return {
12
+ /**
13
+ * Store incomplete data by key with a string value
14
+ * @method set
15
+ * @memberof axe.commons.color.incompleteData
16
+ * @instance
17
+ * @param {String} key Identifier for missing data point (fgColor, bgColor, etc.)
18
+ * @param {String} reason Missing data reason to match message template
19
+ */
20
+ set: function(key, reason) {
21
+ if (typeof key !== 'string') {
22
+ throw new Error('Incomplete data: key must be a string');
23
+ }
24
+ if (reason) {
25
+ data[key] = reason;
26
+ }
27
+ return data[key];
28
+ },
29
+ /**
30
+ * Get incomplete data by key
31
+ * @method get
32
+ * @memberof axe.commons.color.incompleteData
33
+ * @instance
34
+ * @param {String} key Identifier for missing data point (fgColor, bgColor, etc.)
35
+ * @return {String} String for reason we couldn't tell
36
+ */
37
+ get: function(key) {
38
+ return data[key];
39
+ },
40
+ /**
41
+ * Clear incomplete data on demand
42
+ * @method clear
43
+ * @memberof axe.commons.color.incompleteData
44
+ * @instance
45
+ */
46
+ clear: function() {
47
+ data = {};
48
+ }
49
+ };
50
+ })();
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Namespace for color-related utilities.
3
+ * @namespace commons.color
4
+ * @memberof axe
5
+ */
6
+
7
+ var color = {};
8
+ commons.color = color;
@@ -0,0 +1,39 @@
1
+ /* global dom */
2
+
3
+ /**
4
+ * Reduce an array of elements to only those that are below a 'floating' element.
5
+ * @method reduceToElementsBelowFloating
6
+ * @memberof axe.commons.dom
7
+ * @instance
8
+ * @param {Array} elements
9
+ * @param {Element} targetNode
10
+ * @returns {Array}
11
+ */
12
+ dom.reduceToElementsBelowFloating = function(elements, targetNode) {
13
+ var floatingPositions = ['fixed', 'sticky'],
14
+ finalElements = [],
15
+ targetFound = false,
16
+ index,
17
+ currentNode,
18
+ style;
19
+
20
+ // Filter out elements that are temporarily floating above the target
21
+ for (index = 0; index < elements.length; ++index) {
22
+ currentNode = elements[index];
23
+ if (currentNode === targetNode) {
24
+ targetFound = true;
25
+ }
26
+
27
+ style = window.getComputedStyle(currentNode);
28
+
29
+ if (!targetFound && floatingPositions.indexOf(style.position) !== -1) {
30
+ //Target was not found yet, so it must be under this floating thing (and will not always be under it)
31
+ finalElements = [];
32
+ continue;
33
+ }
34
+
35
+ finalElements.push(currentNode);
36
+ }
37
+
38
+ return finalElements;
39
+ };
@@ -0,0 +1,28 @@
1
+ /* global axe, dom */
2
+
3
+ /**
4
+ * Find elements referenced from a given context
5
+ * @method findElmsInContext
6
+ * @memberof axe.commons.dom
7
+ * @instance
8
+ * @param {Object} element
9
+ * @param {String} element.context Element in the same context
10
+ * @param {String} element.value Attribute value to search for
11
+ * @param {String} element.attr Attribute name to search for
12
+ * @param {String} element.elm NodeName to search for (optional)
13
+ * @return {Array<Node>}
14
+ */
15
+ dom.findElmsInContext = function({ context, value, attr, elm = '' }) {
16
+ let root;
17
+ const escapedValue = axe.utils.escapeSelector(value);
18
+
19
+ if (context.nodeType === 9 || context.nodeType === 11) {
20
+ // It's already root
21
+ root = context;
22
+ } else {
23
+ root = dom.getRootNode(context);
24
+ }
25
+ return Array.from(
26
+ root.querySelectorAll(elm + '[' + attr + '=' + escapedValue + ']')
27
+ );
28
+ };
@@ -0,0 +1,63 @@
1
+ /* global dom, axe */
2
+ /**
3
+ * Find the virtual node and call dom.fundUpVirtual
4
+ *
5
+ * **WARNING:** this should be used sparingly, as it's not even close to being performant
6
+ * @method findUp
7
+ * @memberof axe.commons.dom
8
+ * @instance
9
+ * @param {HTMLElement} element The starting HTMLElement
10
+ * @param {String} target The selector for the HTMLElement
11
+ * @return {HTMLElement|null} Either the matching HTMLElement or `null` if there was no match
12
+ */
13
+ dom.findUp = function(element, target) {
14
+ return dom.findUpVirtual(
15
+ axe.utils.getNodeFromTree(axe._tree[0], element),
16
+ target
17
+ );
18
+ };
19
+
20
+ /**
21
+ * recusively walk up the DOM, checking for a node which matches a selector
22
+ *
23
+ * **WARNING:** this should be used sparingly, as it's not even close to being performant
24
+ * @method findUpVirtual
25
+ * @memberof axe.commons.dom
26
+ * @instance
27
+ * @param {VirtualNode} element The starting virtualNode
28
+ * @param {String} target The selector for the HTMLElement
29
+ * @return {HTMLElement|null} Either the matching HTMLElement or `null` if there was no match
30
+ */
31
+ dom.findUpVirtual = function(element, target) {
32
+ /*eslint complexity: ["error", 12]*/
33
+ let parent;
34
+
35
+ parent = element.actualNode;
36
+ // virtualNode will have a shadowId if the element lives inside a shadow DOM or is
37
+ // slotted into a shadow DOM
38
+ if (!element.shadowId && typeof element.actualNode.closest === 'function') {
39
+ // non-shadow DOM elements
40
+ let match = element.actualNode.closest(target);
41
+ if (match) {
42
+ return match;
43
+ }
44
+ return null;
45
+ }
46
+ // handle shadow DOM elements and older browsers
47
+ do {
48
+ // recursively walk up the DOM, checking each parent node
49
+ parent = parent.assignedSlot ? parent.assignedSlot : parent.parentNode;
50
+ if (parent && parent.nodeType === 11) {
51
+ parent = parent.host;
52
+ }
53
+ } while (
54
+ parent &&
55
+ !axe.utils.matchesSelector(parent, target) &&
56
+ parent !== document.documentElement
57
+ );
58
+
59
+ if (!axe.utils.matchesSelector(parent, target)) {
60
+ return null;
61
+ }
62
+ return parent;
63
+ };
@@ -0,0 +1,25 @@
1
+ /* global dom */
2
+ /**
3
+ * Get an element's parent in the flattened tree
4
+ * @method getComposedParent
5
+ * @memberof axe.commons.dom
6
+ * @instance
7
+ * @param {Node} element
8
+ * @return {Node|null} Parent element or Null for root node
9
+ */
10
+ dom.getComposedParent = function getComposedParent(element) {
11
+ if (element.assignedSlot) {
12
+ // NOTE: If the display of a slot element isn't 'contents',
13
+ // the slot shouldn't be ignored. Chrome does not support this (yet) so,
14
+ // we'll skip this part for now.
15
+ return getComposedParent(element.assignedSlot); // parent of a shadow DOM slot
16
+ } else if (element.parentNode) {
17
+ var parentNode = element.parentNode;
18
+ if (parentNode.nodeType === 1) {
19
+ return parentNode; // Regular node
20
+ } else if (parentNode.host) {
21
+ return parentNode.host; // Shadow root
22
+ }
23
+ }
24
+ return null; // Root node
25
+ };
@@ -0,0 +1,34 @@
1
+ /* global dom */
2
+
3
+ /**
4
+ * Returns a reference to the element matching the attr URL fragment value
5
+ * @method getElementByReference
6
+ * @memberof axe.commons.dom
7
+ * @instance
8
+ * @param {Element} node
9
+ * @param {String} attr Attribute name (href)
10
+ * @return {Element}
11
+ */
12
+ dom.getElementByReference = function(node, attr) {
13
+ let fragment = node.getAttribute(attr);
14
+ if (!fragment) {
15
+ return null;
16
+ }
17
+
18
+ if (fragment.charAt(0) === '#') {
19
+ fragment = decodeURIComponent(fragment.substring(1));
20
+ } else if (fragment.substr(0, 2) === '/#') {
21
+ fragment = decodeURIComponent(fragment.substring(2));
22
+ }
23
+
24
+ let candidate = document.getElementById(fragment);
25
+ if (candidate) {
26
+ return candidate;
27
+ }
28
+
29
+ candidate = document.getElementsByName(fragment);
30
+ if (candidate.length) {
31
+ return candidate[0];
32
+ }
33
+ return null;
34
+ };
@@ -0,0 +1,38 @@
1
+ /* global dom */
2
+
3
+ /**
4
+ * Get the coordinates of the element passed into the function relative to the document
5
+ * @method getElementCoordinates
6
+ * @memberof axe.commons.dom
7
+ * @instance
8
+ * @param {HTMLElement} element The HTMLElement
9
+ * @return {elementObj} elementObj Returns a `Object` with the following properties, which
10
+ * each hold a value representing the pixels for each of the
11
+ */
12
+ /**
13
+ * @typedef elementObj
14
+ * @type {Object}
15
+ * @property {Number} top The top coordinate of the element
16
+ * @property {Number} right The right coordinate of the element
17
+ * @property {Number} bottom The bottom coordinate of the element
18
+ * @property {Number} left The left coordinate of the element
19
+ * @property {Number} width The width of the element
20
+ * @property {Number} height The height of the element
21
+ */
22
+ dom.getElementCoordinates = function(element) {
23
+ 'use strict';
24
+
25
+ var scrollOffset = dom.getScrollOffset(document),
26
+ xOffset = scrollOffset.left,
27
+ yOffset = scrollOffset.top,
28
+ coords = element.getBoundingClientRect();
29
+
30
+ return {
31
+ top: coords.top + yOffset,
32
+ right: coords.right + xOffset,
33
+ bottom: coords.bottom + yOffset,
34
+ left: coords.left + xOffset,
35
+ width: coords.right - coords.left,
36
+ height: coords.bottom - coords.top
37
+ };
38
+ };
@@ -0,0 +1,12 @@
1
+ /* global dom */
2
+
3
+ /**
4
+ * Return the document or document fragment (shadow DOM)
5
+ * @method getRootNode
6
+ * @memberof axe.commons.dom
7
+ * @instance
8
+ * @param {Element} node
9
+ * @returns {DocumentFragment|Document}
10
+ * @deprecated use axe.utils.getRootNode
11
+ */
12
+ dom.getRootNode = axe.utils.getRootNode;
@@ -0,0 +1,34 @@
1
+ /* global dom */
2
+ /*eslint complexity: ["error", 14]*/
3
+ /**
4
+ * Get the scroll offset of the document passed in
5
+ * @method getScrollOffset
6
+ * @memberof axe.commons.dom
7
+ * @instance
8
+ * @param {Document} element The element to evaluate, defaults to document
9
+ * @return {Object} Contains the attributes `x` and `y` which contain the scroll offsets
10
+ */
11
+ dom.getScrollOffset = function(element) {
12
+ 'use strict';
13
+
14
+ if (!element.nodeType && element.document) {
15
+ element = element.document;
16
+ }
17
+
18
+ // 9 === Node.DOCUMENT_NODE
19
+ if (element.nodeType === 9) {
20
+ var docElement = element.documentElement,
21
+ body = element.body;
22
+
23
+ return {
24
+ left:
25
+ (docElement && docElement.scrollLeft) || (body && body.scrollLeft) || 0,
26
+ top: (docElement && docElement.scrollTop) || (body && body.scrollTop) || 0
27
+ };
28
+ }
29
+
30
+ return {
31
+ left: element.scrollLeft,
32
+ top: element.scrollTop
33
+ };
34
+ };
@@ -0,0 +1,24 @@
1
+ /* global dom */
2
+
3
+ /**
4
+ * Get all elements (including given node) that are part if the tab order
5
+ * @method getTabbableElements
6
+ * @memberof axe.commons.dom
7
+ * @instance
8
+ * @param {Object} virtualNode The virtualNode to assess
9
+ * @return {Boolean}
10
+ */
11
+ dom.getTabbableElements = function getTabbableElements(virtualNode) {
12
+ const nodeAndDescendents = axe.utils.querySelectorAll(virtualNode, '*');
13
+
14
+ const tabbableElements = nodeAndDescendents.filter(vNode => {
15
+ const isFocusable = vNode.isFocusable;
16
+ let tabIndex = vNode.actualNode.getAttribute('tabindex');
17
+ tabIndex =
18
+ tabIndex && !isNaN(parseInt(tabIndex, 10)) ? parseInt(tabIndex) : null;
19
+
20
+ return tabIndex ? isFocusable && tabIndex >= 0 : isFocusable;
21
+ });
22
+
23
+ return tabbableElements;
24
+ };
@@ -0,0 +1,37 @@
1
+ /* global dom */
2
+ /**
3
+ * Gets the width and height of the viewport; used to calculate the right and bottom boundaries of the viewable area.
4
+ * @method getViewportSize
5
+ * @memberof axe.commons.dom
6
+ * @instance
7
+ * @param {Object} win The `window` object that should be measured
8
+ * @return {Object} Object with the `width` and `height` of the viewport
9
+ */
10
+ dom.getViewportSize = function(win) {
11
+ 'use strict';
12
+
13
+ var body,
14
+ doc = win.document,
15
+ docElement = doc.documentElement;
16
+
17
+ if (win.innerWidth) {
18
+ return {
19
+ width: win.innerWidth,
20
+ height: win.innerHeight
21
+ };
22
+ }
23
+
24
+ if (docElement) {
25
+ return {
26
+ width: docElement.clientWidth,
27
+ height: docElement.clientHeight
28
+ };
29
+ }
30
+
31
+ body = doc.body;
32
+
33
+ return {
34
+ width: body.clientWidth,
35
+ height: body.clientHeight
36
+ };
37
+ };