elementor / elementor/elementor

ADA Compliance - ARIA attribute unsupported or prohibited

Open
#29,003 1 comment 0 reactions 0 assignees View on GitHub
status/awaiting_triage
Dominant language
PHP
Stars
7.1k
Forks
1.6k
Avg merge
1d 5h
Merged PRs (30d)
193

Description

### Prerequisites

- [X] I have searched for similar issues in open and closed tickets and cannot find a duplicate.
- [X] I have troubleshooted my issue, and it still exists against the latest stable version of Elementor.

### Description

When using the Nested Accordion widget, it generates tags for the item titles. They look like this:
``

The issue is that the `aria-expanded` attribute is not supported with `` tags based on current WCAG standards. They are limited to certain interactive elements, like ``, ``, and ``, OR certain structural elements like `

` or `` (when given ARIA roles like button or tab). Given that, the usage of it in the `` is kicking back violations for me with my SiteImprove (ADA checker, among other things) audit.

I have researched it enough to be able to verify that this is not the way it should be handled. It would be better off with NO aria attribute for the ``, allowing the browser to handle the expression state.

I have been researching this issue to see if there was a work-around on my end without modifying the code on the widget. I cannot find anything.

Please look into this issue and find the solution that works best, but I do not think the current build is the way to handle it. Thanks for a great product. LOVE the nested elements. I hope you are making a nested slider soon.

### Steps to reproduce

There is nothing needed to reproduce, but here is a link to a page using the widget: [https://www.brueggers.com/faq/]

### Expected behavior

Expecting to pass my ADA audit.

### Isolating the problem

- [X] This bug happens when only the Elementor (and Elementor Pro) plugins are active.
- [X] This bug happens with the Hello Elementor theme active.
- [X] I can reproduce this bug consistently by following the steps I described above.

### Elementor System Info

```txt
== Server Environment ==
Operating System: Linux
Software: nginx/1.27.1
MySQL version: MariaDB Server v10.4.25
PHP Version: 8.2.24
PHP Memory Limit: 1024M
PHP Max Input Vars: 10000
PHP Max Post Size: 100M
GD Installed: Yes
ZIP Installed: Yes
Write Permissions: All right
Elementor Library: Connected

== WordPress Environment ==
Version: 6.6.2
Site URL: https://www.brueggers.com
Home URL: https://www.brueggers.com
WP Multisite: No
Max Upload Size: 100 MB
Memory limit: 40M
Max Memory limit: 1024M
Permalink Structure: /%postname%/
Language: en_US
Timezone: America/Denver
Admin Email: it.infrastructure@cariboucoffee.com
Debug Mode: Inactive

== Theme ==
Name: Hello Elementor Child
Version: 2.0.0
Author: Elementor Team
Child Theme: Yes
Parent Theme Name: Hello Elementor
Parent Theme Version: 3.1.1
Parent Theme Author: Elementor Team

== User ==
Role: administrator
WP Profile lang: en-US
User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36

== Active Plugins ==
Advanced Custom Fields PRO
Version: 6.3.8
Author: WP Engine

Airship Web Notifications
Version: 1.3.4
Author: Airship

Bagel Bros Menu
Version: 1.0.0
Author: eCreations, LLC

Bagel Bros MSDynamics
Version: 1.0.0
Author: eCreations, LLC

Category Order and Taxonomy Terms Order
Version: 1.8.6
Author: Nsp-Code

Classic Editor
Version: 1.6.5
Author: WordPress Contributors

Coffee & Bagel Careers
Version: 1.6.0
Author: Coffee & Bagel Customer Apps

Complianz Privacy Suite (GDPR/CCPA) premium
Version: 7.1.3
Author: Really Simple Plugins

Custom Post Type Widgets
Version: 1.5.2
Author: thingsym

Disable REST API
Version: 1.8
Author: Dave McHale

Disable XML-RPC
Version: 1.0.1
Author: Philip Erb

Eazy HTTP Headers
Version: 1.1.0
Author: Rob Scott, LLC

eC Elementor Widget Publish Conditions
Version: 1.0
Author: eCreations

Elementor
Version: 3.24.5
Author: Elementor.com

Elementor Pro
Version: 3.24.3
Author: Elementor.com

Gravity Forms
Version: 2.8.18
Author: Gravity Forms

Gravity Forms + Custom Post Types
Version: 3.1.29
Author: Gravity Wiz

Gravity Forms Chained Selects Add-On
Version: 1.7
Author: Gravity Forms

Gravity Forms Debug Add-On
Version: 1.0.beta7
Author: rocketgenius

Gravity Forms SendGrid Add-On
Version: 1.6.0
Author: Gravity Forms

Gravity Forms Webhooks Add-On
Version: 1.5
Author: Gravity Forms

OneLogin SAML SSO
Version: 3.4.0
Author: OneLogin, Inc.

Pantheon Advanced Page Cache
Version: 2.1.0
Author: Pantheon

Privy Website Widget
Version: 2.0.6
Author: Privy Inc.

Redirection
Version: 5.5.0
Author: John Godley

Simple Custom Post Order
Version: 2.5.7
Author: Colorlib

Simple Sitemap
Version: 3.5.14
Author: David Gwyer

User Role Editor
Version: 4.64.2
Author: Vladimir Garagulya

WCAG 2.0 form fields for Gravity Forms
Version: 1.7.2
Author: Adrian Gordon

Widget CSS Classes
Version: 1.5.4.1
Author: Jory Hogeveen

WP Crontrol
Version: 1.17.0
Author: John Blackbourn

WP Mail SMTP
Version: 4.1.1
Author: WP Mail SMTP

WP Media folder
Version: 5.9.5
Author: Joomunited

WP REST API
Version: 2.0-beta15
Author: WP REST API Team

Yoast Duplicate Post
Version: 4.5
Author: Enrico Battocchi & Team Yoast

Yoast SEO
Version: 23.6
Author: Team Yoast

== Must-Use Plugins ==
MU WP Native PHP Sessions
Version: 0.1
Author: Pantheon

Pantheon MU Plugin Loader
Version: 1.0
Author: Pantheon Systems

== Elements Usage ==

container : 15
button : 5
container : 117
heading : 9
image : 5
nested-accordion : 9
slides : 1
text-editor : 96
footer : 2
container : 16
heading : 17
image : 10
nav-menu : 4
header : 2
button : 2
container : 7
icon-list : 1
image : 1
nav-menu : 1
shortcode : 1
theme-site-logo : 1
popup : 1
button : 2
container : 9
divider : 1
heading : 5
icon-list : 1
image : 6
nav-menu : 1
spacer : 1
section : 18
button : 19
container : 76
divider : 11
gallery : 2
heading : 45
image : 24
nested-accordion : 1
text-editor : 19
video : 2
widget : 0
button : 3
wp-post : 0
button : 11
container : 45
heading : 16
image : 14
text-editor : 12
wp-page : 15
button : 62
container : 395
divider : 50
gallery : 1
heading : 249
html : 16
icon : 2
icon-box : 2
icon-list : 14
image : 101
loop-carousel : 1
nested-accordion : 4
nested-tabs : 1
shortcode : 31
text-editor : 71
video : 1
single-post : 1
button : 3
container : 22
google_maps : 1
heading : 15
image : 2
shortcode : 5
text-editor : 1
loop-item : 1
button : 1
container : 5
heading : 2
image : 1
text-editor : 1
error-404 : 1
button : 4
container : 5
heading : 8
image : 2

== Settings ==

cpt_support: post, page, brueggers_slides, promo_page, bru_new_location
allow_tracking: yes
unfiltered_files_upload: 1
font_display: swap

== Features ==
Custom Fonts: 3
Custom Icons: 0

== Integrations ==

== Elementor Experiments ==
Improved CSS Loading: Inactive by default
Inline Font Icons: Inactive by default
Additional Custom Breakpoints: Active by default
Flexbox Container: Active
Grid Container: Inactive
Upgrade Swiper Library: Active by default
Nested Elements Performance: Active by default
Optimized Control Loading: Inactive by default
Optimized Markup: Inactive by default
Conditionally load Swiper CSS files: Inactive by default
Plugin Onboarding: Active by default
Default to New Theme Builder: Active by default
Header & Footer: Active by default
Elementor Home Screen: Active by default
Build with AI: Active by default
Landing Pages: Active by default
Launchpad Checklist: Inactive by default
Nested Elements: Active
Editor Top Bar: Inactive by default
Element Caching: Inactive by default
Link In Bio: Active by default
Floating Buttons: Active by default
Elementor Editor Events: Inactive by default
Atomic Widgets: Inactive by default
Display Conditions: Active by default
Form Submissions: Active by default
Menu: Inactive by default

== Log ==

PHP: showing 7 of 7PHP: 2024-05-07 13:32:39 [warning X 10][/code/wp-content/plugins/elementor/includes/managers/image.php::113] Trying to access array offset on value of type bool [array (
'trace' => '
#0: Elementor\Core\Logger\Manager -> shutdown()
',
)]
PHP: 2024-05-08 14:12:31 [warning X 4][/code/wp-content/plugins/elementor/modules/history/revisions-manager.php::363] Undefined array key "editor_post_id" [array (
'trace' => '
#0: Elementor\Core\Logger\Manager -> shutdown()
',
)]
PHP: 2024-06-11 09:55:19 [warning X 60][/code/wp-content/plugins/elementor/includes/elements/container.php::1831] Undefined array key "size" [array (
'trace' => '
#0: Elementor\Core\Logger\Manager -> shutdown()
',
)]
PHP: 2024-06-11 13:52:25 [warning X 9][/code/wp-content/plugins/elementor-pro/core/app/modules/site-editor/data/endpoints/templates.php::150] Undefined array key "condition_type" [array (
'trace' => '
#0: /code/wp-content/plugins/elementor-pro/core/app/modules/site-editor/data/endpoints/templates.php(150): Elementor\Core\Logger\Manager -> rest_error_handler()
#1: ElementorPro\Core\App\Modules\SiteEditor\Data\Endpoints\Templates -> normalize_template_json_item()
#2: /code/wp-content/plugins/elementor-pro/core/app/modules/site-editor/data/endpoints/templates.php(120): class type array_map()
#3: /code/wp-content/plugins/elementor-pro/core/app/modules/site-editor/data/endpoints/templates.php(59): ElementorPro\Core\App\Modules\SiteEditor\Data\Endpoints\Templates -> normalize_templates_json()
#4: /code/wp-content/plugins/elementor/data/base/endpoint.php(158): ElementorPro\Core\App\Modules\SiteEditor\Data\Endpoints\Templates -> get_items()
',
)]
PHP: 2024-06-27 10:33:46 [warning X 1][/code/wp-content/plugins/elementor/core/files/manager.php::112] unlink(/code/wp-content/uploads/elementor/css/post-9851.css): No such file or directory [array (
'trace' => '
#0: Elementor\Core\Logger\Manager -> shutdown()
',
)]
PHP: 2024-08-05 15:52:55 [error X 1][/code/wp-content/plugins/elementor-pro/core/app/modules/site-editor/data/controller.php::11] Uncaught Error: Class "Elementor\Data\Base\Controller" not found in /code/wp-content/plugins/elementor-pro/core/app/modules/site-editor/data/controller.php:11
Stack trace:
#0 /code/wp-content/plugins/elementor-pro/plugin.php(171): include()
#1 /code/wp-content/plugins/elementor/data/manager.php(88): ElementorPro\Plugin->autoload('ElementorPro\\Co...')
#2 /code/wp-content/plugins/elementor-pro/core/app/modules/site-editor/module.php(194): Elementor\Data\Manager->register_controller('ElementorPro\\Co...')
#3 /code/wp-content/plugins/elementor-pro/core/app/app.php(86): ElementorPro\Core\App\Modules\SiteEditor\Module->__construct()
#4 /code/wp-content/plugins/elementor-pro/plugin.php(488): ElementorPro\Core\App\App->__construct()
#5 /code/wp-content/plugins/elementor-pro/plugin.php(139): ElementorPro\Plugin->__construct()
#6 /code/wp-content/plugins/elementor-pro/plugin.php(528): ElementorPro\Plugin::instance()
#7 /code/wp-content/plugins/elementor-pro/elementor-pro.php(68): require('/code/wp-conten...')
#8 /code/wp-includes/class-wp-hook.php(324): elementor_pro_load_plugin('')
#9 /code/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters(NULL, Array)
#10 /code/wp-includes/plugin.php(517): WP_Hook->do_action(Array)
#11 /code/wp-settings.php(555): do_action('plugins_loaded')
#12 /code/wp-config.php(114): require_once('/code/wp-settin...')
#13 /code/wp-load.php(50): require_once('/code/wp-config...')
#14 /code/wp-blog-header.php(13): require_once('/code/wp-load.p...')
#15 /code/index.php(17): require('/code/wp-blog-h...')
#16 {main}
thrown [array (
'trace' => '
#0: Elementor\Core\Logger\Manager -> shutdown()
',
)]
PHP: 2024-10-02 19:55:54 [error X 1][/code/wp-content/plugins/elementor/includes/autoloader.php::295] Uncaught Error: Failed opening required '/code/wp-content/plugins/elementor//includes/controls/choose.php' (include_path='.:/usr/share/pear:/usr/share/php') in /code/wp-content/plugins/elementor/includes/autoloader.php:295
Stack trace:
#0 /code/wp-content/plugins/elementor/includes/autoloader.php(331): Elementor\Autoloader::load_class('Control_Choose')
#1 /code/wp-content/plugins/elementor/includes/managers/controls.php(470): Elementor\Autoloader::autoload('Elementor\\Contr...')
#2 /code/wp-content/plugins/elementor/includes/managers/controls.php(623): Elementor\Controls_Manager->register_controls()
#3 /code/wp-content/plugins/elementor/includes/managers/controls.php(642): Elementor\Controls_Manager->get_controls()
#4 /code/wp-content/plugins/elementor/includes/managers/controls.php(824): Elementor\Controls_Manager->get_control('section')
#5 /code/wp-content/plugins/elementor/includes/base/controls-stack.php(494): Elementor\Controls_Manager->add_control_to_stack(Object(Elementor\Core\Kits\Documents\Kit), 'document_settin...', Array, Array)
#6 /code/wp-content/plugins/elementor/includes/base/controls-stack.php(1575): Elementor\Controls_Stack->add_control('document_settin...', Array)
#7 /code/wp-content/plugins/elementor/core/base/document.php(1934): Elementor\Controls_Stack->start_controls_section('document_settin...', Array)
#8 /code/wp-content/plugins/elementor/core/kits/documents/kit.php(146): Elementor\Core\Base\Document->register_document_controls()
#9 /code/wp-content/plugins/elementor/includes/base/controls-stack.php(2386): Elementor\Core\Kits\Documents\Kit->register_controls()
#10 /code/wp-content/plugins/elementor/includes/base/controls-stack.php(569): Elementor\Controls_Stack->init_controls()
#11 /code/wp-content/plugins/elementor/includes/base/controls-stack.php(314): Elementor\Controls_Stack->get_stack()
#12 /code/wp-content/plugins/elementor/includes/base/controls-stack.php(2475): Elementor\Controls_Stack->get_controls()
#13 /code/wp-content/plugins/elementor/includes/base/controls-stack.php(1158): Elementor\Controls_Stack->sanitize_settings(Array)
#14 /code/wp-content/plugins/elementor/includes/base/controls-stack.php(2218): Elementor\Controls_Stack->get_data('settings')
#15 /code/wp-content/plugins/elementor/core/base/base-object.php(142): Elementor\Controls_Stack->get_init_settings()
#16 /code/wp-content/plugins/elementor/core/base/base-object.php(40): Elementor\Core\Base\Base_Object->ensure_settings()
#17 /code/wp-content/plugins/elementor/core/kits/manager.php(117): Elementor\Core\Base\Base_Object->get_settings('viewport_mobile')
#18 /code/wp-content/plugins/elementor/core/breakpoints/breakpoint.php(130): Elementor\Core\Kits\Manager->get_current_settings('viewport_mobile')
#19 /code/wp-content/plugins/elementor/core/breakpoints/breakpoint.php(71): Elementor\Core\Breakpoints\Breakpoint->init_value()
#20 /code/wp-content/plugins/elementor/core/breakpoints/breakpoint.php(88): Elementor\Core\Breakpoints\Breakpoint->get_value()
#21 /code/wp-content/plugins/elementor/core/breakpoints/manager.php(195): Elementor\Core\Breakpoints\Breakpoint->is_custom()
#22 /code/wp-content/plugins/elementor/includes/frontend.php(497): Elementor\Core\Breakpoints\Manager->has_custom_breakpoints()
#23 /code/wp-includes/class-wp-hook.php(324): Elementor\Frontend->register_styles('')
#24 /code/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters(NULL, Array)
#25 /code/wp-includes/plugin.php(517): WP_Hook->do_action(Array)
#26 /code/wp-includes/script-loader.php(2263): do_action('wp_enqueue_scri...')
#27 /code/wp-includes/class-wp-hook.php(324): wp_enqueue_scripts('')
#28 /code/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters('', Array)
#29 /code/wp-includes/plugin.php(517): WP_Hook->do_action(Array)
#30 /code/wp-includes/general-template.php(3065): do_action('wp_head')
#31 /code/wp-content/themes/hello-theme-child-master/header.php(33): wp_head()
#32 /code/wp-includes/template.php(810): require_once('/code/wp-conten...')
#33 /code/wp-includes/template.php(745): load_template('/code/wp-conten...', true, Array)
#34 /code/wp-includes/general-template.php(48): locate_template(Array, true, true, Array)
#35 /code/wp-content/plugins/elementor/modules/page-templates/templates/header-footer.php(9): get_header()
#36 /code/wp-includes/template-loader.php(106): include('/code/wp-conten...')
#37 /code/wp-blog-header.php(19): require_once('/code/wp-includ...')
#38 /code/index.php(17): require('/code/wp-blog-h...')
#39 {main}
thrown [array (
'trace' => '
#0: Elementor\Core\Logger\Manager -> shutdown()
',
)]

Log: showing 20 of 322024-06-05 17:50:13 [info] Elementor/Upgrades - _on_each_version Start
2024-06-05 17:50:14 [info] Elementor/Upgrades - _on_each_version Finished
2024-06-05 17:50:14 [info] Elementor data updater process has been completed. [array (
'plugin' => 'Elementor',
'from' => '3.21.7',
'to' => '3.21.8',
)]
2024-06-27 10:33:45 [info] Elementor data updater process has been queued. [array (
'plugin' => 'Elementor',
'from' => '3.21.8',
'to' => '3.22.3',
)]
2024-06-27 10:33:46 [info] elementor-pro::elementor_pro_updater Started
2024-06-27 10:33:46 [info] Elementor Pro/Upgrades - _on_each_version Start
2024-06-27 10:33:46 [info] Elementor Pro/Upgrades - _on_each_version Finished
2024-06-27 10:33:46 [info] Elementor data updater process has been completed. [array (
'plugin' => 'Elementor Pro',
'from' => '3.21.3',
'to' => '3.22.1',
)]
2024-06-27 10:33:46 [info] Elementor data updater process has been queued. [array (
'plugin' => 'Elementor Pro',
'from' => '3.21.3',
'to' => '3.22.1',
)]
2024-06-27 10:33:46 [info] Elementor data updater process has been queued. [array (
'plugin' => 'Elementor',
'from' => '3.21.8',
'to' => '3.22.3',
)]
2024-06-27 10:33:46 [info] elementor::elementor_updater Started
2024-06-27 10:33:46 [info] Elementor/Upgrades - _on_each_version Start
2024-06-27 10:33:47 [info] Elementor data updater process has been queued. [array (
'plugin' => 'Elementor Pro',
'from' => '3.21.3',
'to' => '3.22.1',
)]
2024-06-27 10:33:48 [info] Elementor/Upgrades - _on_each_version Finished
2024-06-27 10:33:48 [info] Elementor/Upgrades - _on_each_version Start
2024-06-27 10:33:49 [info] Elementor/Upgrades - _on_each_version Finished
2024-06-27 10:33:49 [info] Elementor/Upgrades - _on_each_version Start
2024-06-27 10:33:51 [info] Elementor/Upgrades - _on_each_version Finished
2024-06-27 10:33:51 [info] Elementor data updater process has been completed. [array (
'plugin' => 'Elementor',
'from' => '3.21.8',
'to' => '3.22.3',
)]
2024-06-27 10:33:52 [info] Elementor data updater process has been queued. [array (
'plugin' => 'Elementor',
'from' => '3.21.8',
'to' => '3.22.3',
)]

JS: showing 4 of 4JS: 2024-06-03 18:23:58 [error X 13][https://www.brueggers.com/wp-includes/js/jquery/jquery.min.js?ver=3.7.1:2:28760] Cannot read properties of undefined (reading 'value')
JS: 2024-06-26 17:28:14 [error X 5][https://www.brueggers.com/wp-content/plugins/elementor/assets/js/editor.min.js?ver=3.21.8:3:654174] Cannot read properties of undefined (reading 'isDesignable')
JS: 2024-09-03 21:27:06 [error X 1][https://www.brueggers.com/wp-content/plugins/elementor/assets/js/editor.min.js?ver=3.23.4:3:718488] Cannot read properties of undefined (reading 'get')
JS: 2024-09-17 15:18:16 [error X 2][https://www.brueggers.com/wp-admin/post.php?post=14568&action=elementor:5:14412] Cannot read properties of null (reading 'dataset')

== Elementor - Compatibility Tag ==

eC Elementor Widget Publish Conditions: Compatibility not specified
Elementor Pro: Compatibility not specified

== Elementor Pro - Compatibility Tag ==
```

### Agreement

- [X] I agree that my issue may be closed without action if it doesn't meet all the requirements.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.