axe-core 4.2.4 → 4.3.0
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.
- package/CHANGELOG.md +37 -2
- package/README.md +24 -2
- package/axe.d.ts +60 -4
- package/axe.js +1198 -830
- package/axe.min.js +2 -2
- package/locales/de.json +1 -1
- package/locales/pt_BR.json +163 -44
- package/package.json +7 -1
- package/.eslintrc.js +0 -112
- package/.prettierrc.json +0 -10
- package/CONTRIBUTING.md +0 -242
- package/bower.json +0 -40
- package/doc/API.md +0 -963
- package/doc/accessibility-supported.md +0 -37
- package/doc/act-rules-format.md +0 -37
- package/doc/aria-supported.md +0 -13
- package/doc/backwards-compatibility-doc.md +0 -94
- package/doc/check-message-template.md +0 -124
- package/doc/check-options.md +0 -437
- package/doc/code-submission-guidelines.md +0 -171
- package/doc/developer-guide.md +0 -515
- package/doc/examples/chrome-debugging-protocol/README.md +0 -13
- package/doc/examples/chrome-debugging-protocol/axe-cdp.js +0 -81
- package/doc/examples/chrome-debugging-protocol/package.json +0 -11
- package/doc/examples/html-handlebars.md +0 -164
- package/doc/examples/jasmine/README.md +0 -35
- package/doc/examples/jasmine/karma.conf.js +0 -29
- package/doc/examples/jasmine/package-lock.json +0 -1489
- package/doc/examples/jasmine/package.json +0 -21
- package/doc/examples/jasmine/spec/a11y.js +0 -36
- package/doc/examples/jest_react/README.md +0 -41
- package/doc/examples/jest_react/link.js +0 -7
- package/doc/examples/jest_react/link.test.js +0 -24
- package/doc/examples/jest_react/package-lock.json +0 -7525
- package/doc/examples/jest_react/package.json +0 -28
- package/doc/examples/jest_react/test-helpers.js +0 -21
- package/doc/examples/jsdom/package.json +0 -15
- package/doc/examples/mocha/README.md +0 -35
- package/doc/examples/mocha/karma.conf.js +0 -29
- package/doc/examples/mocha/package-lock.json +0 -1671
- package/doc/examples/mocha/package.json +0 -22
- package/doc/examples/phantomjs/README.md +0 -17
- package/doc/examples/phantomjs/axe-phantom.js +0 -53
- package/doc/examples/phantomjs/package-lock.json +0 -862
- package/doc/examples/phantomjs/package.json +0 -19
- package/doc/examples/puppeteer/README.md +0 -12
- package/doc/examples/puppeteer/axe-puppeteer.js +0 -60
- package/doc/examples/puppeteer/package.json +0 -13
- package/doc/examples/qunit/README.md +0 -37
- package/doc/examples/qunit/package-lock.json +0 -2951
- package/doc/examples/qunit/package.json +0 -21
- package/doc/examples/test-examples.js +0 -40
- package/doc/frame-messenger.md +0 -107
- package/doc/plugins.md +0 -123
- package/doc/projects.md +0 -56
- package/doc/rule-descriptions.md +0 -135
- package/doc/rule-development.md +0 -123
- package/doc/rule-proposal.md +0 -106
- package/doc/standards-object.md +0 -147
- package/lib/checks/aria/abstractrole-evaluate.js +0 -40
- package/lib/checks/aria/abstractrole.json +0 -14
- package/lib/checks/aria/aria-allowed-attr-evaluate.js +0 -58
- package/lib/checks/aria/aria-allowed-attr.json +0 -14
- package/lib/checks/aria/aria-allowed-role-evaluate.js +0 -42
- package/lib/checks/aria/aria-allowed-role.json +0 -22
- package/lib/checks/aria/aria-errormessage-evaluate.js +0 -68
- package/lib/checks/aria/aria-errormessage.json +0 -18
- package/lib/checks/aria/aria-hidden-body-evaluate.js +0 -11
- package/lib/checks/aria/aria-hidden-body.json +0 -11
- package/lib/checks/aria/aria-prohibited-attr-evaluate.js +0 -68
- package/lib/checks/aria/aria-prohibited-attr.json +0 -15
- package/lib/checks/aria/aria-required-attr-evaluate.js +0 -67
- package/lib/checks/aria/aria-required-attr.json +0 -14
- package/lib/checks/aria/aria-required-children-evaluate.js +0 -137
- package/lib/checks/aria/aria-required-children.json +0 -32
- package/lib/checks/aria/aria-required-parent-evaluate.js +0 -120
- package/lib/checks/aria/aria-required-parent.json +0 -17
- package/lib/checks/aria/aria-roledescription-evaluate.js +0 -25
- package/lib/checks/aria/aria-roledescription.json +0 -23
- package/lib/checks/aria/aria-unsupported-attr-evaluate.js +0 -53
- package/lib/checks/aria/aria-unsupported-attr.json +0 -11
- package/lib/checks/aria/aria-valid-attr-evaluate.js +0 -51
- package/lib/checks/aria/aria-valid-attr-value-evaluate.js +0 -122
- package/lib/checks/aria/aria-valid-attr-value.json +0 -19
- package/lib/checks/aria/aria-valid-attr.json +0 -15
- package/lib/checks/aria/fallbackrole-evaluate.js +0 -13
- package/lib/checks/aria/fallbackrole.json +0 -11
- package/lib/checks/aria/has-global-aria-attribute-evaluate.js +0 -11
- package/lib/checks/aria/has-global-aria-attribute.json +0 -14
- package/lib/checks/aria/has-widget-role-evaluate.js +0 -20
- package/lib/checks/aria/has-widget-role.json +0 -12
- package/lib/checks/aria/invalidrole-evaluate.js +0 -45
- package/lib/checks/aria/invalidrole.json +0 -14
- package/lib/checks/aria/is-element-focusable-evaluate.js +0 -7
- package/lib/checks/aria/is-element-focusable.json +0 -11
- package/lib/checks/aria/no-implicit-explicit-label-evaluate.js +0 -54
- package/lib/checks/aria/no-implicit-explicit-label.json +0 -11
- package/lib/checks/aria/unsupportedrole-evaluate.js +0 -15
- package/lib/checks/aria/unsupportedrole.json +0 -11
- package/lib/checks/aria/valid-scrollable-semantics-evaluate.js +0 -70
- package/lib/checks/aria/valid-scrollable-semantics.json +0 -14
- package/lib/checks/color/color-contrast-evaluate.js +0 -178
- package/lib/checks/color/color-contrast.json +0 -42
- package/lib/checks/color/link-in-text-block-evaluate.js +0 -94
- package/lib/checks/color/link-in-text-block.json +0 -19
- package/lib/checks/forms/autocomplete-appropriate-evaluate.js +0 -84
- package/lib/checks/forms/autocomplete-appropriate.json +0 -11
- package/lib/checks/forms/autocomplete-valid-evaluate.js +0 -8
- package/lib/checks/forms/autocomplete-valid.json +0 -11
- package/lib/checks/generic/README.md +0 -13
- package/lib/checks/generic/attr-non-space-content-evaluate.js +0 -28
- package/lib/checks/generic/has-descendant-after.js +0 -15
- package/lib/checks/generic/has-descendant-evaluate.js +0 -20
- package/lib/checks/generic/has-text-content-evaluate.js +0 -11
- package/lib/checks/generic/matches-definition-evaluate.js +0 -7
- package/lib/checks/generic/page-no-duplicate-after.js +0 -6
- package/lib/checks/generic/page-no-duplicate-evaluate.js +0 -42
- package/lib/checks/index.js +0 -11
- package/lib/checks/keyboard/accesskeys-after.js +0 -23
- package/lib/checks/keyboard/accesskeys-evaluate.js +0 -11
- package/lib/checks/keyboard/accesskeys.json +0 -12
- package/lib/checks/keyboard/focusable-content-evaluate.js +0 -20
- package/lib/checks/keyboard/focusable-content.json +0 -11
- package/lib/checks/keyboard/focusable-disabled-evaluate.js +0 -36
- package/lib/checks/keyboard/focusable-disabled.json +0 -11
- package/lib/checks/keyboard/focusable-element-evaluate.js +0 -47
- package/lib/checks/keyboard/focusable-element.json +0 -11
- package/lib/checks/keyboard/focusable-modal-open-evaluate.js +0 -20
- package/lib/checks/keyboard/focusable-modal-open.json +0 -11
- package/lib/checks/keyboard/focusable-no-name-evaluate.js +0 -18
- package/lib/checks/keyboard/focusable-no-name.json +0 -12
- package/lib/checks/keyboard/focusable-not-tabbable-evaluate.js +0 -36
- package/lib/checks/keyboard/focusable-not-tabbable.json +0 -11
- package/lib/checks/keyboard/frame-focusable-content.json +0 -12
- package/lib/checks/keyboard/landmark-is-top-level-evaluate.js +0 -31
- package/lib/checks/keyboard/landmark-is-top-level.json +0 -11
- package/lib/checks/keyboard/no-focusable-content-evaluate.js +0 -35
- package/lib/checks/keyboard/no-focusable-content.json +0 -12
- package/lib/checks/keyboard/page-has-heading-one.json +0 -15
- package/lib/checks/keyboard/page-has-main.json +0 -15
- package/lib/checks/keyboard/page-no-duplicate-banner.json +0 -16
- package/lib/checks/keyboard/page-no-duplicate-contentinfo.json +0 -16
- package/lib/checks/keyboard/page-no-duplicate-main.json +0 -15
- package/lib/checks/keyboard/tabindex-evaluate.js +0 -10
- package/lib/checks/keyboard/tabindex.json +0 -11
- package/lib/checks/label/alt-space-value-evaluate.js +0 -7
- package/lib/checks/label/alt-space-value.json +0 -11
- package/lib/checks/label/duplicate-img-label-evaluate.js +0 -23
- package/lib/checks/label/duplicate-img-label.json +0 -14
- package/lib/checks/label/explicit-evaluate.js +0 -34
- package/lib/checks/label/explicit.json +0 -12
- package/lib/checks/label/help-same-as-label-evaluate.js +0 -28
- package/lib/checks/label/help-same-as-label.json +0 -12
- package/lib/checks/label/hidden-explicit-label-evaluate.js +0 -30
- package/lib/checks/label/hidden-explicit-label.json +0 -12
- package/lib/checks/label/implicit-evaluate.js +0 -16
- package/lib/checks/label/implicit.json +0 -12
- package/lib/checks/label/label-content-name-mismatch-evaluate.js +0 -71
- package/lib/checks/label/label-content-name-mismatch.json +0 -15
- package/lib/checks/label/multiple-label-evaluate.js +0 -44
- package/lib/checks/label/multiple-label.json +0 -11
- package/lib/checks/label/title-only-evaluate.js +0 -11
- package/lib/checks/label/title-only.json +0 -11
- package/lib/checks/landmarks/landmark-is-unique-after.js +0 -27
- package/lib/checks/landmarks/landmark-is-unique-evaluate.js +0 -14
- package/lib/checks/landmarks/landmark-is-unique.json +0 -12
- package/lib/checks/language/has-lang-evaluate.js +0 -39
- package/lib/checks/language/has-lang.json +0 -17
- package/lib/checks/language/valid-lang-evaluate.js +0 -36
- package/lib/checks/language/valid-lang.json +0 -14
- package/lib/checks/language/xml-lang-mismatch-evaluate.js +0 -10
- package/lib/checks/language/xml-lang-mismatch.json +0 -11
- package/lib/checks/lists/dlitem-evaluate.js +0 -30
- package/lib/checks/lists/dlitem.json +0 -11
- package/lib/checks/lists/listitem-evaluate.js +0 -28
- package/lib/checks/lists/listitem.json +0 -14
- package/lib/checks/lists/only-dlitems-evaluate.js +0 -51
- package/lib/checks/lists/only-dlitems.json +0 -11
- package/lib/checks/lists/only-listitems-evaluate.js +0 -63
- package/lib/checks/lists/only-listitems.json +0 -14
- package/lib/checks/lists/structured-dlitems-evaluate.js +0 -26
- package/lib/checks/lists/structured-dlitems.json +0 -11
- package/lib/checks/media/caption-evaluate.js +0 -13
- package/lib/checks/media/caption.json +0 -11
- package/lib/checks/media/frame-tested-after.js +0 -31
- package/lib/checks/media/frame-tested-evaluate.js +0 -6
- package/lib/checks/media/frame-tested.json +0 -16
- package/lib/checks/media/no-autoplay-audio-evaluate.js +0 -97
- package/lib/checks/media/no-autoplay-audio.json +0 -15
- package/lib/checks/mobile/css-orientation-lock-evaluate.js +0 -254
- package/lib/checks/mobile/css-orientation-lock.json +0 -15
- package/lib/checks/mobile/meta-viewport-large.json +0 -15
- package/lib/checks/mobile/meta-viewport-scale-evaluate.js +0 -71
- package/lib/checks/mobile/meta-viewport.json +0 -14
- package/lib/checks/navigation/header-present.json +0 -15
- package/lib/checks/navigation/heading-order-after.js +0 -132
- package/lib/checks/navigation/heading-order-evaluate.js +0 -58
- package/lib/checks/navigation/heading-order.json +0 -13
- package/lib/checks/navigation/identical-links-same-purpose-after.js +0 -106
- package/lib/checks/navigation/identical-links-same-purpose-evaluate.js +0 -35
- package/lib/checks/navigation/identical-links-same-purpose.json +0 -12
- package/lib/checks/navigation/internal-link-present-evaluate.js +0 -10
- package/lib/checks/navigation/internal-link-present.json +0 -11
- package/lib/checks/navigation/landmark.json +0 -14
- package/lib/checks/navigation/meta-refresh-evaluate.js +0 -8
- package/lib/checks/navigation/meta-refresh.json +0 -11
- package/lib/checks/navigation/p-as-heading-evaluate.js +0 -98
- package/lib/checks/navigation/p-as-heading.json +0 -30
- package/lib/checks/navigation/region-evaluate.js +0 -106
- package/lib/checks/navigation/region.json +0 -14
- package/lib/checks/navigation/skip-link-evaluate.js +0 -11
- package/lib/checks/navigation/skip-link.json +0 -12
- package/lib/checks/navigation/unique-frame-title-after.js +0 -13
- package/lib/checks/navigation/unique-frame-title-evaluate.js +0 -9
- package/lib/checks/navigation/unique-frame-title.json +0 -12
- package/lib/checks/parsing/duplicate-id-active.json +0 -12
- package/lib/checks/parsing/duplicate-id-after.js +0 -12
- package/lib/checks/parsing/duplicate-id-aria.json +0 -12
- package/lib/checks/parsing/duplicate-id-evaluate.js +0 -24
- package/lib/checks/parsing/duplicate-id.json +0 -12
- package/lib/checks/shared/aria-label-evaluate.js +0 -8
- package/lib/checks/shared/aria-label.json +0 -11
- package/lib/checks/shared/aria-labelledby-evaluate.js +0 -12
- package/lib/checks/shared/aria-labelledby.json +0 -12
- package/lib/checks/shared/avoid-inline-spacing-evaluate.js +0 -16
- package/lib/checks/shared/avoid-inline-spacing.json +0 -17
- package/lib/checks/shared/button-has-visible-text.json +0 -12
- package/lib/checks/shared/doc-has-title-evaluate.js +0 -8
- package/lib/checks/shared/doc-has-title.json +0 -11
- package/lib/checks/shared/exists-evaluate.js +0 -5
- package/lib/checks/shared/exists.json +0 -11
- package/lib/checks/shared/has-alt-evaluate.js +0 -10
- package/lib/checks/shared/has-alt.json +0 -11
- package/lib/checks/shared/has-visible-text.json +0 -12
- package/lib/checks/shared/is-on-screen-evaluate.js +0 -8
- package/lib/checks/shared/is-on-screen.json +0 -11
- package/lib/checks/shared/non-empty-alt.json +0 -17
- package/lib/checks/shared/non-empty-if-present-evaluate.js +0 -19
- package/lib/checks/shared/non-empty-if-present.json +0 -14
- package/lib/checks/shared/non-empty-placeholder.json +0 -17
- package/lib/checks/shared/non-empty-title.json +0 -17
- package/lib/checks/shared/non-empty-value.json +0 -17
- package/lib/checks/shared/presentational-role-evaluate.js +0 -42
- package/lib/checks/shared/presentational-role.json +0 -16
- package/lib/checks/shared/role-none.json +0 -19
- package/lib/checks/shared/role-presentation.json +0 -19
- package/lib/checks/shared/svg-non-empty-title-evaluate.js +0 -33
- package/lib/checks/shared/svg-non-empty-title.json +0 -15
- package/lib/checks/tables/caption-faked-evaluate.js +0 -16
- package/lib/checks/tables/caption-faked.json +0 -11
- package/lib/checks/tables/html5-scope-evaluate.js +0 -11
- package/lib/checks/tables/html5-scope.json +0 -11
- package/lib/checks/tables/same-caption-summary-evaluate.js +0 -12
- package/lib/checks/tables/same-caption-summary.json +0 -11
- package/lib/checks/tables/scope-value-evaluate.js +0 -7
- package/lib/checks/tables/scope-value.json +0 -14
- package/lib/checks/tables/td-has-header-evaluate.js +0 -33
- package/lib/checks/tables/td-has-header.json +0 -11
- package/lib/checks/tables/td-headers-attr-evaluate.js +0 -67
- package/lib/checks/tables/td-headers-attr.json +0 -12
- package/lib/checks/tables/th-has-data-cells-evaluate.js +0 -82
- package/lib/checks/tables/th-has-data-cells.json +0 -12
- package/lib/checks/visibility/hidden-content-evaluate.js +0 -34
- package/lib/checks/visibility/hidden-content.json +0 -12
- package/lib/commons/aria/allowed-attr.js +0 -31
- package/lib/commons/aria/arialabel-text.js +0 -21
- package/lib/commons/aria/arialabelledby-text.js +0 -65
- package/lib/commons/aria/get-accessible-refs.js +0 -73
- package/lib/commons/aria/get-element-unallowed-roles.js +0 -110
- package/lib/commons/aria/get-explicit-role.js +0 -26
- package/lib/commons/aria/get-owned-virtual.js +0 -27
- package/lib/commons/aria/get-role-type.js +0 -21
- package/lib/commons/aria/get-role.js +0 -178
- package/lib/commons/aria/get-roles-by-type.js +0 -16
- package/lib/commons/aria/get-roles-with-name-from-contents.js +0 -15
- package/lib/commons/aria/implicit-nodes.js +0 -23
- package/lib/commons/aria/implicit-role.js +0 -44
- package/lib/commons/aria/index.js +0 -32
- package/lib/commons/aria/is-accessible-ref.js +0 -12
- package/lib/commons/aria/is-aria-role-allowed-on-element.js +0 -32
- package/lib/commons/aria/is-unsupported-role.js +0 -16
- package/lib/commons/aria/is-valid-role.js +0 -22
- package/lib/commons/aria/label-virtual.js +0 -46
- package/lib/commons/aria/label.js +0 -17
- package/lib/commons/aria/lookup-table.js +0 -2435
- package/lib/commons/aria/named-from-contents.js +0 -39
- package/lib/commons/aria/required-attr.js +0 -21
- package/lib/commons/aria/required-context.js +0 -21
- package/lib/commons/aria/required-owned.js +0 -21
- package/lib/commons/aria/validate-attr-value.js +0 -70
- package/lib/commons/aria/validate-attr.js +0 -16
- package/lib/commons/color/center-point-of-rect.js +0 -31
- package/lib/commons/color/color.js +0 -250
- package/lib/commons/color/element-has-image.js +0 -35
- package/lib/commons/color/element-is-distinct.js +0 -87
- package/lib/commons/color/filtered-rect-stack.js +0 -51
- package/lib/commons/color/flatten-colors.js +0 -22
- package/lib/commons/color/get-background-color.js +0 -84
- package/lib/commons/color/get-background-stack.js +0 -130
- package/lib/commons/color/get-contrast.js +0 -27
- package/lib/commons/color/get-foreground-color.js +0 -69
- package/lib/commons/color/get-own-background-color.js +0 -24
- package/lib/commons/color/get-rect-stack.js +0 -32
- package/lib/commons/color/get-text-shadow-colors.js +0 -121
- package/lib/commons/color/has-valid-contrast-ratio.js +0 -30
- package/lib/commons/color/incomplete-data.js +0 -47
- package/lib/commons/color/index.js +0 -20
- package/lib/commons/dom/find-elms-in-context.js +0 -31
- package/lib/commons/dom/find-up-virtual.js +0 -52
- package/lib/commons/dom/find-up.js +0 -20
- package/lib/commons/dom/focus-disabled.js +0 -30
- package/lib/commons/dom/get-composed-parent.js +0 -26
- package/lib/commons/dom/get-element-by-reference.js +0 -34
- package/lib/commons/dom/get-element-coordinates.js +0 -38
- package/lib/commons/dom/get-element-stack.js +0 -28
- package/lib/commons/dom/get-rect-stack.js +0 -514
- package/lib/commons/dom/get-root-node.js +0 -12
- package/lib/commons/dom/get-scroll-offset.js +0 -32
- package/lib/commons/dom/get-tabbable-elements.js +0 -26
- package/lib/commons/dom/get-text-element-stack.js +0 -89
- package/lib/commons/dom/get-viewport-size.js +0 -35
- package/lib/commons/dom/has-content-virtual.js +0 -53
- package/lib/commons/dom/has-content.js +0 -21
- package/lib/commons/dom/idrefs.js +0 -41
- package/lib/commons/dom/index.js +0 -38
- package/lib/commons/dom/inserted-into-focus-order.js +0 -24
- package/lib/commons/dom/is-focusable.js +0 -36
- package/lib/commons/dom/is-hidden-with-css.js +0 -76
- package/lib/commons/dom/is-html5.js +0 -17
- package/lib/commons/dom/is-in-text-block.js +0 -107
- package/lib/commons/dom/is-modal-open.js +0 -104
- package/lib/commons/dom/is-natively-focusable.js +0 -41
- package/lib/commons/dom/is-node.js +0 -14
- package/lib/commons/dom/is-offscreen.js +0 -66
- package/lib/commons/dom/is-opaque.js +0 -16
- package/lib/commons/dom/is-skip-link.js +0 -49
- package/lib/commons/dom/is-visible.js +0 -201
- package/lib/commons/dom/is-visual-content.js +0 -49
- package/lib/commons/dom/reduce-to-elements-below-floating.js +0 -36
- package/lib/commons/dom/shadow-elements-from-point.js +0 -47
- package/lib/commons/dom/url-props-from-attribute.js +0 -152
- package/lib/commons/dom/visually-contains.js +0 -113
- package/lib/commons/dom/visually-overlaps.js +0 -46
- package/lib/commons/forms/index.js +0 -12
- package/lib/commons/forms/is-aria-combobox.js +0 -15
- package/lib/commons/forms/is-aria-listbox.js +0 -15
- package/lib/commons/forms/is-aria-range.js +0 -17
- package/lib/commons/forms/is-aria-textbox.js +0 -15
- package/lib/commons/forms/is-disabled.js +0 -40
- package/lib/commons/forms/is-native-select.js +0 -17
- package/lib/commons/forms/is-native-textbox.js +0 -34
- package/lib/commons/index.js +0 -31
- package/lib/commons/matches/attributes.js +0 -32
- package/lib/commons/matches/condition.js +0 -20
- package/lib/commons/matches/explicit-role.js +0 -24
- package/lib/commons/matches/from-definition.js +0 -73
- package/lib/commons/matches/from-function.js +0 -40
- package/lib/commons/matches/from-primative.js +0 -44
- package/lib/commons/matches/implicit-role.js +0 -24
- package/lib/commons/matches/index.js +0 -29
- package/lib/commons/matches/matches.js +0 -39
- package/lib/commons/matches/node-name.js +0 -29
- package/lib/commons/matches/properties.js +0 -32
- package/lib/commons/matches/semantic-role.js +0 -24
- package/lib/commons/standards/get-aria-roles-by-type.js +0 -14
- package/lib/commons/standards/get-aria-roles-supporting-name-from-content.js +0 -22
- package/lib/commons/standards/get-element-spec.js +0 -54
- package/lib/commons/standards/get-elements-by-content-type.js +0 -30
- package/lib/commons/standards/get-global-aria-attrs.js +0 -22
- package/lib/commons/standards/implicit-html-roles.js +0 -186
- package/lib/commons/standards/index.js +0 -11
- package/lib/commons/table/get-all-cells.js +0 -28
- package/lib/commons/table/get-cell-position.js +0 -32
- package/lib/commons/table/get-headers.js +0 -102
- package/lib/commons/table/get-scope.js +0 -58
- package/lib/commons/table/index.js +0 -19
- package/lib/commons/table/is-column-header.js +0 -15
- package/lib/commons/table/is-data-cell.js +0 -24
- package/lib/commons/table/is-data-table.js +0 -195
- package/lib/commons/table/is-header.js +0 -26
- package/lib/commons/table/is-row-header.js +0 -15
- package/lib/commons/table/to-grid.js +0 -48
- package/lib/commons/table/traverse.js +0 -76
- package/lib/commons/text/accessible-text-virtual.js +0 -152
- package/lib/commons/text/accessible-text.js +0 -19
- package/lib/commons/text/form-control-value.js +0 -216
- package/lib/commons/text/has-unicode.js +0 -38
- package/lib/commons/text/index.js +0 -32
- package/lib/commons/text/is-human-interpretable.js +0 -54
- package/lib/commons/text/is-icon-ligature.js +0 -214
- package/lib/commons/text/is-valid-autocomplete.js +0 -118
- package/lib/commons/text/label-text.js +0 -70
- package/lib/commons/text/label-virtual.js +0 -50
- package/lib/commons/text/label.js +0 -19
- package/lib/commons/text/native-element-type.js +0 -101
- package/lib/commons/text/native-text-alternative.js +0 -46
- package/lib/commons/text/native-text-methods.js +0 -136
- package/lib/commons/text/remove-unicode.js +0 -38
- package/lib/commons/text/sanitize.js +0 -21
- package/lib/commons/text/subtree-text.js +0 -74
- package/lib/commons/text/title-text.js +0 -33
- package/lib/commons/text/unicode.js +0 -85
- package/lib/commons/text/unsupported.js +0 -5
- package/lib/commons/text/visible-text-nodes.js +0 -27
- package/lib/commons/text/visible-virtual.js +0 -46
- package/lib/commons/text/visible.js +0 -18
- package/lib/core/base/audit.js +0 -767
- package/lib/core/base/cache.js +0 -30
- package/lib/core/base/check-result.js +0 -31
- package/lib/core/base/check.js +0 -215
- package/lib/core/base/context.js +0 -280
- package/lib/core/base/metadata-function-map.js +0 -353
- package/lib/core/base/rule-result.js +0 -39
- package/lib/core/base/rule.js +0 -611
- package/lib/core/base/virtual-node/abstract-virtual-node.js +0 -43
- package/lib/core/base/virtual-node/serial-virtual-node.js +0 -117
- package/lib/core/base/virtual-node/virtual-node.js +0 -194
- package/lib/core/constants.js +0 -70
- package/lib/core/core.js +0 -91
- package/lib/core/imports/index.js +0 -39
- package/lib/core/index.js +0 -40
- package/lib/core/log.js +0 -13
- package/lib/core/public/cleanup.js +0 -51
- package/lib/core/public/configure.js +0 -134
- package/lib/core/public/frame-messenger.js +0 -5
- package/lib/core/public/get-rules.js +0 -29
- package/lib/core/public/load.js +0 -65
- package/lib/core/public/plugins.js +0 -39
- package/lib/core/public/reporter.js +0 -25
- package/lib/core/public/reset.js +0 -13
- package/lib/core/public/run-rules.js +0 -83
- package/lib/core/public/run-virtual-rule.js +0 -63
- package/lib/core/public/run.js +0 -186
- package/lib/core/public/setup.js +0 -20
- package/lib/core/public/teardown.js +0 -21
- package/lib/core/reporters/helpers/failure-summary.js +0 -33
- package/lib/core/reporters/helpers/get-environment-data.js +0 -39
- package/lib/core/reporters/helpers/incomplete-fallback-msg.js +0 -12
- package/lib/core/reporters/helpers/index.js +0 -21
- package/lib/core/reporters/helpers/process-aggregate.js +0 -110
- package/lib/core/reporters/na.js +0 -24
- package/lib/core/reporters/no-passes.js +0 -20
- package/lib/core/reporters/raw-env.js +0 -17
- package/lib/core/reporters/raw.js +0 -32
- package/lib/core/reporters/v1.js +0 -33
- package/lib/core/reporters/v2.js +0 -19
- package/lib/core/utils/aggregate-checks.js +0 -90
- package/lib/core/utils/aggregate-node-results.js +0 -65
- package/lib/core/utils/aggregate-result.js +0 -39
- package/lib/core/utils/aggregate.js +0 -21
- package/lib/core/utils/are-styles-set.js +0 -18
- package/lib/core/utils/assert.js +0 -12
- package/lib/core/utils/check-helper.js +0 -36
- package/lib/core/utils/clone.js +0 -28
- package/lib/core/utils/closest.js +0 -30
- package/lib/core/utils/collect-results-from-frames.js +0 -84
- package/lib/core/utils/contains.js +0 -46
- package/lib/core/utils/css-parser.js +0 -9
- package/lib/core/utils/deep-merge.js +0 -31
- package/lib/core/utils/dq-element.js +0 -131
- package/lib/core/utils/element-matches.js +0 -43
- package/lib/core/utils/escape-selector.js +0 -79
- package/lib/core/utils/extend-meta-data.js +0 -20
- package/lib/core/utils/filter-html-attrs.js +0 -75
- package/lib/core/utils/finalize-result.js +0 -28
- package/lib/core/utils/find-by.js +0 -16
- package/lib/core/utils/frame-messenger/assert-window.js +0 -21
- package/lib/core/utils/frame-messenger/channel-store.js +0 -23
- package/lib/core/utils/frame-messenger/create-responder.js +0 -15
- package/lib/core/utils/frame-messenger/message-handler.js +0 -72
- package/lib/core/utils/frame-messenger/message-id.js +0 -22
- package/lib/core/utils/frame-messenger/message-parser.js +0 -109
- package/lib/core/utils/frame-messenger/post-message.js +0 -54
- package/lib/core/utils/frame-messenger/process-error.js +0 -30
- package/lib/core/utils/frame-messenger.js +0 -40
- package/lib/core/utils/get-all-checks.js +0 -13
- package/lib/core/utils/get-ancestry.js +0 -31
- package/lib/core/utils/get-base-lang.js +0 -18
- package/lib/core/utils/get-check-message.js +0 -24
- package/lib/core/utils/get-check-option.js +0 -41
- package/lib/core/utils/get-flattened-tree.js +0 -151
- package/lib/core/utils/get-friendly-uri-end.js +0 -143
- package/lib/core/utils/get-node-attributes.js +0 -22
- package/lib/core/utils/get-node-from-tree.js +0 -14
- package/lib/core/utils/get-root-node.js +0 -17
- package/lib/core/utils/get-rule.js +0 -17
- package/lib/core/utils/get-scroll-state.js +0 -43
- package/lib/core/utils/get-scroll.js +0 -41
- package/lib/core/utils/get-selector.js +0 -395
- package/lib/core/utils/get-shadow-selector.js +0 -31
- package/lib/core/utils/get-standards.js +0 -6
- package/lib/core/utils/get-stylesheet-factory.js +0 -53
- package/lib/core/utils/get-xpath.js +0 -84
- package/lib/core/utils/index.js +0 -90
- package/lib/core/utils/inject-style.js +0 -33
- package/lib/core/utils/is-hidden.js +0 -55
- package/lib/core/utils/is-html-element.js +0 -137
- package/lib/core/utils/is-node-in-context.js +0 -46
- package/lib/core/utils/is-shadow-root.js +0 -40
- package/lib/core/utils/is-xhtml.js +0 -15
- package/lib/core/utils/matches.js +0 -263
- package/lib/core/utils/memoize.js +0 -22
- package/lib/core/utils/merge-results.js +0 -134
- package/lib/core/utils/node-sorter.js +0 -23
- package/lib/core/utils/parse-crossorigin-stylesheet.js +0 -66
- package/lib/core/utils/parse-sameorigin-stylesheet.js +0 -100
- package/lib/core/utils/parse-stylesheet.js +0 -75
- package/lib/core/utils/performance-timer.js +0 -126
- package/lib/core/utils/pollyfills.js +0 -347
- package/lib/core/utils/preload-cssom.js +0 -249
- package/lib/core/utils/preload-media.js +0 -70
- package/lib/core/utils/preload.js +0 -150
- package/lib/core/utils/process-message.js +0 -77
- package/lib/core/utils/publish-metadata.js +0 -109
- package/lib/core/utils/query-selector-all-filter.js +0 -104
- package/lib/core/utils/query-selector-all.js +0 -15
- package/lib/core/utils/queue.js +0 -137
- package/lib/core/utils/respondable.js +0 -108
- package/lib/core/utils/rule-should-run.js +0 -83
- package/lib/core/utils/select.js +0 -87
- package/lib/core/utils/send-command-to-frame.js +0 -65
- package/lib/core/utils/set-scroll-state.js +0 -21
- package/lib/core/utils/to-array.js +0 -10
- package/lib/core/utils/token-list.js +0 -15
- package/lib/core/utils/unique-array.js +0 -13
- package/lib/core/utils/uuid.js +0 -253
- package/lib/core/utils/valid-input-type.js +0 -35
- package/lib/core/utils/valid-langs.js +0 -105
- package/lib/intro.stub +0 -15
- package/lib/misc/any-failure-summary.json +0 -6
- package/lib/misc/incomplete-fallback.json +0 -3
- package/lib/misc/none-failure-summary.json +0 -6
- package/lib/outro.stub +0 -2
- package/lib/rules/accesskeys.json +0 -13
- package/lib/rules/area-alt.json +0 -22
- package/lib/rules/aria-allowed-attr-matches.js +0 -15
- package/lib/rules/aria-allowed-attr.json +0 -12
- package/lib/rules/aria-allowed-role-matches.js +0 -12
- package/lib/rules/aria-allowed-role.json +0 -14
- package/lib/rules/aria-command-name.json +0 -18
- package/lib/rules/aria-dialog-name.json +0 -13
- package/lib/rules/aria-has-attr-matches.js +0 -9
- package/lib/rules/aria-hidden-body.json +0 -14
- package/lib/rules/aria-hidden-focus-matches.js +0 -22
- package/lib/rules/aria-hidden-focus.json +0 -18
- package/lib/rules/aria-input-field-name.json +0 -13
- package/lib/rules/aria-meter-name.json +0 -13
- package/lib/rules/aria-progressbar-name.json +0 -13
- package/lib/rules/aria-required-attr.json +0 -12
- package/lib/rules/aria-required-children-matches.js +0 -8
- package/lib/rules/aria-required-children.json +0 -13
- package/lib/rules/aria-required-parent-matches.js +0 -8
- package/lib/rules/aria-required-parent.json +0 -13
- package/lib/rules/aria-roledescription.json +0 -12
- package/lib/rules/aria-roles.json +0 -13
- package/lib/rules/aria-text.json +0 -12
- package/lib/rules/aria-toggle-field-name.json +0 -18
- package/lib/rules/aria-tooltip-name.json +0 -18
- package/lib/rules/aria-treeitem-name.json +0 -18
- package/lib/rules/aria-valid-attr-value.json +0 -12
- package/lib/rules/aria-valid-attr.json +0 -12
- package/lib/rules/audio-caption.json +0 -20
- package/lib/rules/autocomplete-matches.js +0 -58
- package/lib/rules/autocomplete-valid.json +0 -12
- package/lib/rules/avoid-inline-spacing.json +0 -12
- package/lib/rules/blink.json +0 -19
- package/lib/rules/button-name.json +0 -26
- package/lib/rules/bypass-matches.js +0 -14
- package/lib/rules/bypass.json +0 -21
- package/lib/rules/color-contrast-matches.js +0 -156
- package/lib/rules/color-contrast.json +0 -13
- package/lib/rules/css-orientation-lock.json +0 -13
- package/lib/rules/data-table-large-matches.js +0 -17
- package/lib/rules/data-table-matches.js +0 -7
- package/lib/rules/definition-list.json +0 -13
- package/lib/rules/dlitem.json +0 -13
- package/lib/rules/document-title.json +0 -13
- package/lib/rules/duplicate-id-active-matches.js +0 -15
- package/lib/rules/duplicate-id-active.json +0 -14
- package/lib/rules/duplicate-id-aria-matches.js +0 -7
- package/lib/rules/duplicate-id-aria.json +0 -14
- package/lib/rules/duplicate-id-misc-matches.js +0 -17
- package/lib/rules/duplicate-id.json +0 -14
- package/lib/rules/empty-heading.json +0 -19
- package/lib/rules/empty-table-header.json +0 -13
- package/lib/rules/focus-order-semantics.json +0 -13
- package/lib/rules/form-field-multiple-labels.json +0 -13
- package/lib/rules/frame-focusable-content-matches.js +0 -9
- package/lib/rules/frame-focusable-content.json +0 -13
- package/lib/rules/frame-tested.json +0 -12
- package/lib/rules/frame-title-has-text-matches.js +0 -8
- package/lib/rules/frame-title-unique.json +0 -13
- package/lib/rules/frame-title.json +0 -24
- package/lib/rules/has-implicit-chromium-role-matches.js +0 -7
- package/lib/rules/heading-matches.js +0 -19
- package/lib/rules/heading-order.json +0 -13
- package/lib/rules/hidden-content.json +0 -13
- package/lib/rules/html-has-lang.json +0 -13
- package/lib/rules/html-lang-valid.json +0 -12
- package/lib/rules/html-namespace-matches.js +0 -7
- package/lib/rules/html-xml-lang-mismatch.json +0 -13
- package/lib/rules/identical-links-same-purpose-matches.js +0 -18
- package/lib/rules/identical-links-same-purpose.json +0 -14
- package/lib/rules/image-alt.json +0 -26
- package/lib/rules/img-redundant-alt.json +0 -12
- package/lib/rules/input-button-name.json +0 -26
- package/lib/rules/input-image-alt.json +0 -20
- package/lib/rules/inserted-into-focus-order-matches.js +0 -7
- package/lib/rules/is-initiator-matches.js +0 -5
- package/lib/rules/label-content-name-mismatch-matches.js +0 -52
- package/lib/rules/label-content-name-mismatch.json +0 -12
- package/lib/rules/label-matches.js +0 -15
- package/lib/rules/label-title-only.json +0 -13
- package/lib/rules/label.json +0 -29
- package/lib/rules/landmark-banner-is-top-level.json +0 -13
- package/lib/rules/landmark-complementary-is-top-level.json +0 -12
- package/lib/rules/landmark-contentinfo-is-top-level.json +0 -13
- package/lib/rules/landmark-has-body-context-matches.js +0 -13
- package/lib/rules/landmark-main-is-top-level.json +0 -12
- package/lib/rules/landmark-no-duplicate-banner.json +0 -12
- package/lib/rules/landmark-no-duplicate-contentinfo.json +0 -12
- package/lib/rules/landmark-no-duplicate-main.json +0 -12
- package/lib/rules/landmark-one-main.json +0 -12
- package/lib/rules/landmark-unique-matches.js +0 -50
- package/lib/rules/landmark-unique.json +0 -13
- package/lib/rules/layout-table-matches.js +0 -8
- package/lib/rules/link-in-text-block-matches.js +0 -21
- package/lib/rules/link-in-text-block.json +0 -14
- package/lib/rules/link-name.json +0 -25
- package/lib/rules/list.json +0 -13
- package/lib/rules/listitem.json +0 -13
- package/lib/rules/marquee.json +0 -13
- package/lib/rules/meta-refresh.json +0 -20
- package/lib/rules/meta-viewport-large.json +0 -14
- package/lib/rules/meta-viewport.json +0 -14
- package/lib/rules/nested-interactive-matches.js +0 -13
- package/lib/rules/nested-interactive.json +0 -12
- package/lib/rules/no-autoplay-audio-matches.js +0 -22
- package/lib/rules/no-autoplay-audio.json +0 -15
- package/lib/rules/no-empty-role-matches.js +0 -13
- package/lib/rules/no-explicit-name-required-matches.js +0 -22
- package/lib/rules/no-naming-method-matches.js +0 -24
- package/lib/rules/no-role-matches.js +0 -5
- package/lib/rules/not-html-matches.js +0 -5
- package/lib/rules/object-alt.json +0 -24
- package/lib/rules/p-as-heading-matches.js +0 -21
- package/lib/rules/p-as-heading.json +0 -13
- package/lib/rules/page-has-heading-one.json +0 -12
- package/lib/rules/presentation-role-conflict-matches.js +0 -7
- package/lib/rules/presentation-role-conflict.json +0 -13
- package/lib/rules/region.json +0 -12
- package/lib/rules/role-img-alt.json +0 -20
- package/lib/rules/scope-attr-valid.json +0 -12
- package/lib/rules/scrollable-region-focusable-matches.js +0 -75
- package/lib/rules/scrollable-region-focusable.json +0 -12
- package/lib/rules/select-name.json +0 -27
- package/lib/rules/server-side-image-map.json +0 -18
- package/lib/rules/skip-link-matches.js +0 -7
- package/lib/rules/skip-link.json +0 -13
- package/lib/rules/svg-img-alt.json +0 -25
- package/lib/rules/svg-namespace-matches.js +0 -18
- package/lib/rules/tabindex.json +0 -12
- package/lib/rules/table-duplicate-name.json +0 -12
- package/lib/rules/table-fake-caption.json +0 -20
- package/lib/rules/td-has-header.json +0 -20
- package/lib/rules/td-headers-attr.json +0 -12
- package/lib/rules/th-has-data-cells.json +0 -13
- package/lib/rules/valid-lang.json +0 -13
- package/lib/rules/video-caption.json +0 -19
- package/lib/rules/window-is-top-matches.js +0 -8
- package/lib/rules/xml-lang-mismatch-matches.js +0 -14
- package/lib/standards/aria-attrs.js +0 -209
- package/lib/standards/aria-roles.js +0 -835
- package/lib/standards/css-colors.js +0 -153
- package/lib/standards/dpub-roles.js +0 -219
- package/lib/standards/graphics-roles.js +0 -22
- package/lib/standards/html-elms.js +0 -933
- package/lib/standards/index.js +0 -37
- package/sri-history.json +0 -274
- package/typings/axe-core/axe-core-tests.js +0 -203
- package/typings/axe-core/axe-core-tests.ts +0 -233
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import fromPrimative from './from-primative';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Check if the value from a function matches some condition
|
|
5
|
-
*
|
|
6
|
-
* Each key on the matcher object is passed to getValue, the returned value must match
|
|
7
|
-
* with the value of that matcher
|
|
8
|
-
*
|
|
9
|
-
* Example:
|
|
10
|
-
* ```js
|
|
11
|
-
* matches.fromFunction(
|
|
12
|
-
* (attr => node.getAttribute(attr),
|
|
13
|
-
* {
|
|
14
|
-
* 'aria-hidden': /^true|false$/i
|
|
15
|
-
* }
|
|
16
|
-
* )
|
|
17
|
-
* ```
|
|
18
|
-
*
|
|
19
|
-
* @private
|
|
20
|
-
* @param {Function} getValue
|
|
21
|
-
* @param {Object} matcher matcher
|
|
22
|
-
* @returns {Boolean}
|
|
23
|
-
*/
|
|
24
|
-
function fromFunction(getValue, matcher) {
|
|
25
|
-
const matcherType = typeof matcher;
|
|
26
|
-
if (
|
|
27
|
-
matcherType !== 'object' ||
|
|
28
|
-
Array.isArray(matcher) ||
|
|
29
|
-
matcher instanceof RegExp
|
|
30
|
-
) {
|
|
31
|
-
throw new Error('Expect matcher to be an object');
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
// Check that the property has all the expected values
|
|
35
|
-
return Object.keys(matcher).every(propName => {
|
|
36
|
-
return fromPrimative(getValue(propName), matcher[propName]);
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export default fromFunction;
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Check if some value matches
|
|
3
|
-
*
|
|
4
|
-
* ```js
|
|
5
|
-
* match.fromPrimative('foo', 'foo') // true, string is the same
|
|
6
|
-
* match.fromPrimative('foo', ['foo', 'bar']) // true, string is included
|
|
7
|
-
* match.fromPrimative('foo', /foo/) // true, string matches regex
|
|
8
|
-
* match.fromPrimative('foo', str => str.toUpperCase() === 'FOO') // true, function return is truthy
|
|
9
|
-
* match.fromPrimative('foo', '/foo/') // true, string matches regex string
|
|
10
|
-
* ```
|
|
11
|
-
*
|
|
12
|
-
* @private
|
|
13
|
-
* @param {String|Boolean|Array|Number|Null|Undefined} someString
|
|
14
|
-
* @param {String|RegExp|Function|Array<String>|Null|Undefined} matcher
|
|
15
|
-
* @returns {Boolean}
|
|
16
|
-
*/
|
|
17
|
-
function fromPrimative(someString, matcher) {
|
|
18
|
-
const matcherType = typeof matcher;
|
|
19
|
-
if (Array.isArray(matcher) && typeof someString !== 'undefined') {
|
|
20
|
-
return matcher.includes(someString);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
if (matcherType === 'function') {
|
|
24
|
-
return !!matcher(someString);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
// RegExp.test(str) typecasts the str to a String value so doing
|
|
28
|
-
// `/.*/.test(null)` returns true as null is cast to "null"
|
|
29
|
-
if (someString !== null && someString !== undefined) {
|
|
30
|
-
if (matcher instanceof RegExp) {
|
|
31
|
-
return matcher.test(someString);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
// matcher starts and ends with "/"
|
|
35
|
-
if (/^\/.*\/$/.test(matcher)) {
|
|
36
|
-
const pattern = matcher.substring(1, matcher.length - 1);
|
|
37
|
-
return new RegExp(pattern).test(someString);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
return matcher === someString;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
export default fromPrimative;
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import fromPrimative from './from-primative';
|
|
2
|
-
import getImplicitRole from '../aria/implicit-role';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Check if a virtual node matches an implicit role(s)
|
|
6
|
-
*``
|
|
7
|
-
* Note: matches.implicitRole(vNode, matcher) can be indirectly used through
|
|
8
|
-
* matches(vNode, { implicitRole: matcher })
|
|
9
|
-
*
|
|
10
|
-
* Example:
|
|
11
|
-
* ```js
|
|
12
|
-
* matches.implicitRole(vNode, ['combobox', 'textbox']);
|
|
13
|
-
* matches.implicitRole(vNode, 'combobox');
|
|
14
|
-
* ```
|
|
15
|
-
*
|
|
16
|
-
* @param {VirtualNode} vNode
|
|
17
|
-
* @param {Object} matcher
|
|
18
|
-
* @returns {Boolean}
|
|
19
|
-
*/
|
|
20
|
-
function implicitRole(vNode, matcher) {
|
|
21
|
-
return fromPrimative(getImplicitRole(vNode), matcher);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export default implicitRole;
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Namespace for matching utilities.
|
|
3
|
-
* @namespace commons.matches
|
|
4
|
-
* @memberof axe
|
|
5
|
-
*/
|
|
6
|
-
import attributes from './attributes';
|
|
7
|
-
import condition from './condition';
|
|
8
|
-
import explicitRole from './explicit-role';
|
|
9
|
-
import fromDefinition from './from-definition';
|
|
10
|
-
import fromFunction from './from-function';
|
|
11
|
-
import fromPrimative from './from-primative';
|
|
12
|
-
import implicitRole from './implicit-role';
|
|
13
|
-
import matches from './matches';
|
|
14
|
-
import nodeName from './node-name';
|
|
15
|
-
import properties from './properties';
|
|
16
|
-
import semanticRole from './semantic-role';
|
|
17
|
-
|
|
18
|
-
matches.attributes = attributes;
|
|
19
|
-
matches.condition = condition;
|
|
20
|
-
matches.explicitRole = explicitRole;
|
|
21
|
-
matches.fromDefinition = fromDefinition;
|
|
22
|
-
matches.fromFunction = fromFunction;
|
|
23
|
-
matches.fromPrimative = fromPrimative;
|
|
24
|
-
matches.implicitRole = implicitRole;
|
|
25
|
-
matches.nodeName = nodeName;
|
|
26
|
-
matches.properties = properties;
|
|
27
|
-
matches.semanticRole = semanticRole;
|
|
28
|
-
|
|
29
|
-
export default matches;
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import fromDefinition from './from-definition';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Check if a virtual node matches a definition
|
|
5
|
-
*
|
|
6
|
-
* Example:
|
|
7
|
-
* ```js
|
|
8
|
-
* // Match a single nodeName:
|
|
9
|
-
* axe.commons.matches(vNode, 'div')
|
|
10
|
-
*
|
|
11
|
-
* // Match one of multiple nodeNames:
|
|
12
|
-
* axe.commons.matches(vNode, ['ul', 'ol'])
|
|
13
|
-
*
|
|
14
|
-
* // Match a node with nodeName 'button' and with aria-hidden: true:
|
|
15
|
-
* axe.commons.matches(vNode, {
|
|
16
|
-
* nodeName: 'button',
|
|
17
|
-
* attributes: { 'aria-hidden': 'true' }
|
|
18
|
-
* })
|
|
19
|
-
*
|
|
20
|
-
* // Mixed input. Match button nodeName, input[type=button] and input[type=reset]
|
|
21
|
-
* axe.commons.matches(vNode, ['button', {
|
|
22
|
-
* nodeName: 'input', // nodeName match isn't case sensitive
|
|
23
|
-
* properties: { type: ['button', 'reset'] }
|
|
24
|
-
* }])
|
|
25
|
-
* ```
|
|
26
|
-
*
|
|
27
|
-
* @deprecated HTMLElement is deprecated, use VirtualNode instead
|
|
28
|
-
*
|
|
29
|
-
* @namespace matches
|
|
30
|
-
* @memberof axe.commons
|
|
31
|
-
* @param {HTMLElement|VirtualNode} vNode virtual node to verify attributes against constraints
|
|
32
|
-
* @param {Array<ElementDefinition>|String|Object|Function|Regex} definition
|
|
33
|
-
* @return {Boolean} true/ false based on if vNode passes the constraints expected
|
|
34
|
-
*/
|
|
35
|
-
function matches(vNode, definition) {
|
|
36
|
-
return fromDefinition(vNode, definition);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
export default matches;
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import fromPrimative from './from-primative';
|
|
2
|
-
import AbstractVirtualNode from '../../core/base/virtual-node/abstract-virtual-node';
|
|
3
|
-
import { getNodeFromTree } from '../../core/utils';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Check if the nodeName of a virtual node matches some value.
|
|
7
|
-
*
|
|
8
|
-
* Note: matches.nodeName(vNode, matcher) can be indirectly used through
|
|
9
|
-
* matches(vNode, { nodeName: matcher })
|
|
10
|
-
*
|
|
11
|
-
* Example:
|
|
12
|
-
* ```js
|
|
13
|
-
* matches.nodeName(vNode, ['div', 'span'])
|
|
14
|
-
* ```
|
|
15
|
-
*
|
|
16
|
-
* @deprecated HTMLElement is deprecated, use VirtualNode instead
|
|
17
|
-
*
|
|
18
|
-
* @param {HTMLElement|VirtualNode} vNode
|
|
19
|
-
* @param {Object} Attribute matcher
|
|
20
|
-
* @returns {Boolean}
|
|
21
|
-
*/
|
|
22
|
-
function nodeName(vNode, matcher) {
|
|
23
|
-
if (!(vNode instanceof AbstractVirtualNode)) {
|
|
24
|
-
vNode = getNodeFromTree(vNode);
|
|
25
|
-
}
|
|
26
|
-
return fromPrimative(vNode.props.nodeName, matcher);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export default nodeName;
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import fromFunction from './from-function';
|
|
2
|
-
import AbstractVirtualNode from '../../core/base/virtual-node/abstract-virtual-node';
|
|
3
|
-
import { getNodeFromTree } from '../../core/utils';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Check if a virtual node matches some attribute(s)
|
|
7
|
-
*
|
|
8
|
-
* Note: matches.properties(vNode, matcher) can be indirectly used through
|
|
9
|
-
* matches(vNode, { properties: matcher })
|
|
10
|
-
*
|
|
11
|
-
* Example:
|
|
12
|
-
* ```js
|
|
13
|
-
* matches.properties(vNode, {
|
|
14
|
-
* type: 'text', // Simple string match
|
|
15
|
-
* value: value => value.trim() !== '', // None-empty value, using a function matcher
|
|
16
|
-
* })
|
|
17
|
-
* ```
|
|
18
|
-
*
|
|
19
|
-
* @deprecated HTMLElement is deprecated, use VirtualNode instead
|
|
20
|
-
*
|
|
21
|
-
* @param {HTMLElement|VirtualNode} vNode
|
|
22
|
-
* @param {Object} matcher
|
|
23
|
-
* @returns {Boolean}
|
|
24
|
-
*/
|
|
25
|
-
function properties(vNode, matcher) {
|
|
26
|
-
if (!(vNode instanceof AbstractVirtualNode)) {
|
|
27
|
-
vNode = getNodeFromTree(vNode);
|
|
28
|
-
}
|
|
29
|
-
return fromFunction(propName => vNode.props[propName], matcher);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export default properties;
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import fromPrimative from './from-primative';
|
|
2
|
-
import getRole from '../aria/get-role';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Check if a virtual node matches an semantic role(s)
|
|
6
|
-
*``
|
|
7
|
-
* Note: matches.semanticRole(vNode, matcher) can be indirectly used through
|
|
8
|
-
* matches(vNode, { semanticRole: matcher })
|
|
9
|
-
*
|
|
10
|
-
* Example:
|
|
11
|
-
* ```js
|
|
12
|
-
* matches.semanticRole(vNode, ['combobox', 'textbox']);
|
|
13
|
-
* matches.semanticRole(vNode, 'combobox');
|
|
14
|
-
* ```
|
|
15
|
-
*
|
|
16
|
-
* @param {VirtualNode} vNode
|
|
17
|
-
* @param {Object} matcher
|
|
18
|
-
* @returns {Boolean}
|
|
19
|
-
*/
|
|
20
|
-
function semanticRole(vNode, matcher) {
|
|
21
|
-
return fromPrimative(getRole(vNode), matcher);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export default semanticRole;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import standards from '../../standards';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Return a list of aria roles whose type matches the provided value.
|
|
5
|
-
* @param {String} type The desired role type
|
|
6
|
-
* @return {String[]} List of all roles matching the type
|
|
7
|
-
*/
|
|
8
|
-
function getAriaRolesByType(type) {
|
|
9
|
-
return Object.keys(standards.ariaRoles).filter(roleName => {
|
|
10
|
-
return standards.ariaRoles[roleName].type === type;
|
|
11
|
-
});
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export default getAriaRolesByType;
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import cache from '../../core/base/cache';
|
|
2
|
-
import standards from '../../standards';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Return a list of aria roles which are name from content.
|
|
6
|
-
* @return {String[]} List of all roles with name from content
|
|
7
|
-
*/
|
|
8
|
-
function getAriaRolesSupportingNameFromContent() {
|
|
9
|
-
if (cache.get('ariaRolesNameFromContent')) {
|
|
10
|
-
return cache.get('ariaRolesNameFromContent');
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
const contentRoles = Object.keys(standards.ariaRoles).filter(roleName => {
|
|
14
|
-
return standards.ariaRoles[roleName].nameFromContent;
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
cache.set('ariaRolesNameFromContent', contentRoles);
|
|
18
|
-
|
|
19
|
-
return contentRoles;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export default getAriaRolesSupportingNameFromContent;
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import standards from '../../standards';
|
|
2
|
-
import matchesFn from '../../commons/matches';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Return the spec for an HTML element from the standards object. Since the spec is determined by the node and what attributes it has, a node is required.
|
|
6
|
-
* @param {VirtualNode} vNode The VirtualNode to get the spec for.
|
|
7
|
-
* @return {Object} The standard spec object
|
|
8
|
-
*/
|
|
9
|
-
function getElementSpec(vNode) {
|
|
10
|
-
const standard = standards.htmlElms[vNode.props.nodeName];
|
|
11
|
-
|
|
12
|
-
// invalid element name (could be an svg or custom element name)
|
|
13
|
-
if (!standard) {
|
|
14
|
-
return {};
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
if (!standard.variant) {
|
|
18
|
-
return standard;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
// start with the information at the top level
|
|
22
|
-
const { variant, ...spec } = standard;
|
|
23
|
-
|
|
24
|
-
// loop through all variants (excluding default) finding anything
|
|
25
|
-
// that matches
|
|
26
|
-
for (const variantName in variant) {
|
|
27
|
-
if (!variant.hasOwnProperty(variantName) || variantName === 'default') {
|
|
28
|
-
continue;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
const { matches, ...props } = variant[variantName];
|
|
32
|
-
if (matchesFn(vNode, matches)) {
|
|
33
|
-
for (const propName in props) {
|
|
34
|
-
if (props.hasOwnProperty(propName)) {
|
|
35
|
-
spec[propName] = props[propName];
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
// apply defaults if properties were not found
|
|
42
|
-
for (const propName in variant.default) {
|
|
43
|
-
if (
|
|
44
|
-
variant.default.hasOwnProperty(propName) &&
|
|
45
|
-
typeof spec[propName] === 'undefined'
|
|
46
|
-
) {
|
|
47
|
-
spec[propName] = variant.default[propName];
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
return spec;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
export default getElementSpec;
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import standards from '../../standards';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Return a list of html elements whose content type matches the provided value. Note: this will not work for 'interactive' content types as those depend on the element.
|
|
5
|
-
* @param {String} type The desired content type
|
|
6
|
-
* @return {String[]} List of all elements matching the type
|
|
7
|
-
*/
|
|
8
|
-
function getElementsByContentType(type) {
|
|
9
|
-
return Object.keys(standards.htmlElms).filter(nodeName => {
|
|
10
|
-
const elm = standards.htmlElms[nodeName];
|
|
11
|
-
|
|
12
|
-
if (elm.contentTypes) {
|
|
13
|
-
return elm.contentTypes.includes(type);
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
// some elements do not have content types
|
|
17
|
-
if (!elm.variant) {
|
|
18
|
-
return false;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
if (elm.variant.default && elm.variant.default.contentTypes) {
|
|
22
|
-
return elm.variant.default.contentTypes.includes(type);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
// content type depends on a virtual node
|
|
26
|
-
return false;
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export default getElementsByContentType;
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import cache from '../../core/base/cache';
|
|
2
|
-
import standards from '../../standards';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Return a list of global aria attributes.
|
|
6
|
-
* @return {String[]} List of all global aria attributes
|
|
7
|
-
*/
|
|
8
|
-
function getGlobalAriaAttrs() {
|
|
9
|
-
if (cache.get('globalAriaAttrs')) {
|
|
10
|
-
return cache.get('globalAriaAttrs');
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
const globalAttrs = Object.keys(standards.ariaAttrs).filter(attrName => {
|
|
14
|
-
return standards.ariaAttrs[attrName].global;
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
cache.set('globalAriaAttrs', globalAttrs);
|
|
18
|
-
|
|
19
|
-
return globalAttrs;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export default getGlobalAriaAttrs;
|
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
// Source: https://www.w3.org/TR/html-aam-1.0/#element-mapping-table
|
|
2
|
-
// Source: https://www.w3.org/TR/html-aria/
|
|
3
|
-
import getElementsByContentType from './get-elements-by-content-type';
|
|
4
|
-
import getGlobalAriaAttrs from './get-global-aria-attrs';
|
|
5
|
-
import arialabelledbyText from '../aria/arialabelledby-text';
|
|
6
|
-
import arialabelText from '../aria/arialabel-text';
|
|
7
|
-
import idrefs from '../dom/idrefs';
|
|
8
|
-
import isColumnHeader from '../table/is-column-header';
|
|
9
|
-
import isRowHeader from '../table/is-row-header';
|
|
10
|
-
import sanitize from '../text/sanitize';
|
|
11
|
-
import isFocusable from '../dom/is-focusable';
|
|
12
|
-
import { closest } from '../../core/utils';
|
|
13
|
-
import getExplicitRole from '../aria/get-explicit-role';
|
|
14
|
-
|
|
15
|
-
const sectioningElementSelector =
|
|
16
|
-
getElementsByContentType('sectioning')
|
|
17
|
-
.map(nodeName => `${nodeName}:not([role])`)
|
|
18
|
-
.join(', ') +
|
|
19
|
-
' , main:not([role]), [role=article], [role=complementary], [role=main], [role=navigation], [role=region]';
|
|
20
|
-
|
|
21
|
-
// sectioning elements only have an accessible name if the
|
|
22
|
-
// aria-label, aria-labelledby, or title attribute has valid
|
|
23
|
-
// content.
|
|
24
|
-
// can't go through the normal accessible name computation
|
|
25
|
-
// as it leads into an infinite loop of asking for the role
|
|
26
|
-
// of the element while the implicit role needs the name.
|
|
27
|
-
// Source: https://www.w3.org/TR/html-aam-1.0/#section-and-grouping-element-accessible-name-computation
|
|
28
|
-
//
|
|
29
|
-
// form elements also follow this same pattern although not
|
|
30
|
-
// specifically called out in the spec like section elements
|
|
31
|
-
// (per Scott O'Hara)
|
|
32
|
-
// Source: https://web-a11y.slack.com/archives/C042TSFGN/p1590607895241100?thread_ts=1590602189.217800&cid=C042TSFGN
|
|
33
|
-
function hasAccessibleName(vNode) {
|
|
34
|
-
// testing for when browsers give a <section> a region role:
|
|
35
|
-
// chrome - always a region role
|
|
36
|
-
// firefox - if non-empty aria-labelledby, aria-label, or title
|
|
37
|
-
// safari - if non-empty aria-lablledby or aria-label
|
|
38
|
-
//
|
|
39
|
-
// we will go with safaris implantation as it is the least common
|
|
40
|
-
// denominator
|
|
41
|
-
const ariaLabelledby = sanitize(arialabelledbyText(vNode));
|
|
42
|
-
const ariaLabel = sanitize(arialabelText(vNode));
|
|
43
|
-
|
|
44
|
-
return !!(ariaLabelledby || ariaLabel);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
const implicitHtmlRoles = {
|
|
48
|
-
a: vNode => {
|
|
49
|
-
return vNode.hasAttr('href') ? 'link' : null;
|
|
50
|
-
},
|
|
51
|
-
area: vNode => {
|
|
52
|
-
return vNode.hasAttr('href') ? 'link' : null;
|
|
53
|
-
},
|
|
54
|
-
article: 'article',
|
|
55
|
-
aside: 'complementary',
|
|
56
|
-
body: 'document',
|
|
57
|
-
button: 'button',
|
|
58
|
-
datalist: 'listbox',
|
|
59
|
-
dd: 'definition',
|
|
60
|
-
dfn: 'term',
|
|
61
|
-
details: 'group',
|
|
62
|
-
dialog: 'dialog',
|
|
63
|
-
dt: 'term',
|
|
64
|
-
fieldset: 'group',
|
|
65
|
-
figure: 'figure',
|
|
66
|
-
footer: vNode => {
|
|
67
|
-
const sectioningElement = closest(vNode, sectioningElementSelector);
|
|
68
|
-
|
|
69
|
-
return !sectioningElement ? 'contentinfo' : null;
|
|
70
|
-
},
|
|
71
|
-
form: vNode => {
|
|
72
|
-
return hasAccessibleName(vNode) ? 'form' : null;
|
|
73
|
-
},
|
|
74
|
-
h1: 'heading',
|
|
75
|
-
h2: 'heading',
|
|
76
|
-
h3: 'heading',
|
|
77
|
-
h4: 'heading',
|
|
78
|
-
h5: 'heading',
|
|
79
|
-
h6: 'heading',
|
|
80
|
-
header: vNode => {
|
|
81
|
-
const sectioningElement = closest(vNode, sectioningElementSelector);
|
|
82
|
-
|
|
83
|
-
return !sectioningElement ? 'banner' : null;
|
|
84
|
-
},
|
|
85
|
-
hr: 'separator',
|
|
86
|
-
img: vNode => {
|
|
87
|
-
// an images role is considered implicitly presentation if the
|
|
88
|
-
// alt attribute is empty. But that shouldn't be the case if it
|
|
89
|
-
// has global aria attributes or is focusable, so we need to
|
|
90
|
-
// override the role back to `img`
|
|
91
|
-
// e.g. <img alt="" aria-label="foo"></img>
|
|
92
|
-
const emptyAlt = vNode.hasAttr('alt') && !vNode.attr('alt');
|
|
93
|
-
const hasGlobalAria = getGlobalAriaAttrs().find(attr =>
|
|
94
|
-
vNode.hasAttr(attr)
|
|
95
|
-
);
|
|
96
|
-
|
|
97
|
-
return emptyAlt && !hasGlobalAria && !isFocusable(vNode)
|
|
98
|
-
? 'presentation'
|
|
99
|
-
: 'img';
|
|
100
|
-
},
|
|
101
|
-
input: vNode => {
|
|
102
|
-
// Source: https://www.w3.org/TR/html52/sec-forms.html#suggestions-source-element
|
|
103
|
-
let suggestionsSourceElement;
|
|
104
|
-
if (vNode.hasAttr('list')) {
|
|
105
|
-
const listElement = idrefs(vNode.actualNode, 'list').filter(
|
|
106
|
-
node => !!node
|
|
107
|
-
)[0];
|
|
108
|
-
suggestionsSourceElement =
|
|
109
|
-
listElement && listElement.nodeName.toLowerCase() === 'datalist';
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
switch (vNode.props.type) {
|
|
113
|
-
case 'checkbox':
|
|
114
|
-
return 'checkbox';
|
|
115
|
-
case 'number':
|
|
116
|
-
return 'spinbutton';
|
|
117
|
-
case 'radio':
|
|
118
|
-
return 'radio';
|
|
119
|
-
case 'range':
|
|
120
|
-
return 'slider';
|
|
121
|
-
case 'search':
|
|
122
|
-
return !suggestionsSourceElement ? 'searchbox' : 'combobox';
|
|
123
|
-
|
|
124
|
-
case 'button':
|
|
125
|
-
case 'image':
|
|
126
|
-
case 'reset':
|
|
127
|
-
case 'submit':
|
|
128
|
-
return 'button';
|
|
129
|
-
|
|
130
|
-
case 'text':
|
|
131
|
-
case 'tel':
|
|
132
|
-
case 'url':
|
|
133
|
-
case 'email':
|
|
134
|
-
case '':
|
|
135
|
-
return !suggestionsSourceElement ? 'textbox' : 'combobox';
|
|
136
|
-
|
|
137
|
-
default:
|
|
138
|
-
return 'textbox';
|
|
139
|
-
}
|
|
140
|
-
},
|
|
141
|
-
// Note: if an li (or some other elms) do not have a required
|
|
142
|
-
// parent, Firefox ignores the implicit semantic role and treats
|
|
143
|
-
// it as a generic text.
|
|
144
|
-
li: 'listitem',
|
|
145
|
-
main: 'main',
|
|
146
|
-
math: 'math',
|
|
147
|
-
menu: 'list',
|
|
148
|
-
nav: 'navigation',
|
|
149
|
-
ol: 'list',
|
|
150
|
-
optgroup: 'group',
|
|
151
|
-
option: 'option',
|
|
152
|
-
output: 'status',
|
|
153
|
-
progress: 'progressbar',
|
|
154
|
-
section: vNode => {
|
|
155
|
-
return hasAccessibleName(vNode) ? 'region' : null;
|
|
156
|
-
},
|
|
157
|
-
select: vNode => {
|
|
158
|
-
return vNode.hasAttr('multiple') || parseInt(vNode.attr('size')) > 1
|
|
159
|
-
? 'listbox'
|
|
160
|
-
: 'combobox';
|
|
161
|
-
},
|
|
162
|
-
summary: 'button',
|
|
163
|
-
table: 'table',
|
|
164
|
-
tbody: 'rowgroup',
|
|
165
|
-
td: vNode => {
|
|
166
|
-
const table = closest(vNode, 'table');
|
|
167
|
-
const role = getExplicitRole(table);
|
|
168
|
-
|
|
169
|
-
return ['grid', 'treegrid'].includes(role) ? 'gridcell' : 'cell';
|
|
170
|
-
},
|
|
171
|
-
textarea: 'textbox',
|
|
172
|
-
tfoot: 'rowgroup',
|
|
173
|
-
th: vNode => {
|
|
174
|
-
if (isColumnHeader(vNode.actualNode)) {
|
|
175
|
-
return 'columnheader';
|
|
176
|
-
}
|
|
177
|
-
if (isRowHeader(vNode.actualNode)) {
|
|
178
|
-
return 'rowheader';
|
|
179
|
-
}
|
|
180
|
-
},
|
|
181
|
-
thead: 'rowgroup',
|
|
182
|
-
tr: 'row',
|
|
183
|
-
ul: 'list'
|
|
184
|
-
};
|
|
185
|
-
|
|
186
|
-
export default implicitHtmlRoles;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Namespace for standards-related utilities.
|
|
3
|
-
* @namespace commons.standards
|
|
4
|
-
* @memberof axe
|
|
5
|
-
*/
|
|
6
|
-
export { default as getAriaRolesByType } from './get-aria-roles-by-type';
|
|
7
|
-
export { default as getAriaRolesSupportingNameFromContent } from './get-aria-roles-supporting-name-from-content';
|
|
8
|
-
export { default as getGlobalAriaAttrs } from './get-global-aria-attrs';
|
|
9
|
-
export { default as getElementSpec } from './get-element-spec';
|
|
10
|
-
export { default as getElementsByContentType } from './get-elements-by-content-type';
|
|
11
|
-
export { default as implicitHtmlRoles } from './implicit-html-roles';
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Returns all cells contained in given HTMLTableElement
|
|
3
|
-
* @method getAllCells
|
|
4
|
-
* @memberof axe.commons.table
|
|
5
|
-
* @instance
|
|
6
|
-
* @param {HTMLTableElement} tableElm Table Element to get cells from
|
|
7
|
-
* @return {Array<HTMLTableCellElement>}
|
|
8
|
-
*/
|
|
9
|
-
function getAllCells(tableElm) {
|
|
10
|
-
var rowIndex, cellIndex, rowLength, cellLength;
|
|
11
|
-
var cells = [];
|
|
12
|
-
for (
|
|
13
|
-
rowIndex = 0, rowLength = tableElm.rows.length;
|
|
14
|
-
rowIndex < rowLength;
|
|
15
|
-
rowIndex++
|
|
16
|
-
) {
|
|
17
|
-
for (
|
|
18
|
-
cellIndex = 0, cellLength = tableElm.rows[rowIndex].cells.length;
|
|
19
|
-
cellIndex < cellLength;
|
|
20
|
-
cellIndex++
|
|
21
|
-
) {
|
|
22
|
-
cells.push(tableElm.rows[rowIndex].cells[cellIndex]);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
return cells;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export default getAllCells;
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import toGrid from './to-grid';
|
|
2
|
-
import findUp from '../dom/find-up';
|
|
3
|
-
import { memoize } from '../../core/utils';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Get the x, y coordinates of a table cell; normalized for rowspan and colspan
|
|
7
|
-
* @method getCellPosition
|
|
8
|
-
* @memberof axe.commons.table
|
|
9
|
-
* @instance
|
|
10
|
-
* @param {HTMLTableCellElement} cell The table cell of which to get the position
|
|
11
|
-
* @return {Object} Object with `x` and `y` properties of the coordinates
|
|
12
|
-
*/
|
|
13
|
-
function getCellPosition(cell, tableGrid) {
|
|
14
|
-
var rowIndex, index;
|
|
15
|
-
if (!tableGrid) {
|
|
16
|
-
tableGrid = toGrid(findUp(cell, 'table'));
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
for (rowIndex = 0; rowIndex < tableGrid.length; rowIndex++) {
|
|
20
|
-
if (tableGrid[rowIndex]) {
|
|
21
|
-
index = tableGrid[rowIndex].indexOf(cell);
|
|
22
|
-
if (index !== -1) {
|
|
23
|
-
return {
|
|
24
|
-
x: index,
|
|
25
|
-
y: rowIndex
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export default memoize(getCellPosition);
|