-
Bug
-
Resolution: Fixed
-
Normal
-
None
-
9.6.3
-
None
-
Security Level: Jimmy
Steps to Reproduce
1. run zk-5374.zul in ZK-5374
2. check accessibility with Chrome Lighthouse 10.0.1
Current Result
Failing element:
Name Description Item 1 Item 1 description Item 2 Item 2 description ...
<div id="z_2" class="z-tree" tabindex="0" role="treegrid">
focus
<button style="top:0px;left:0px" id="z_2-a" onclick="return false;" href="javascript:;" class="z-focus-a" aria-labelledby="z_2" aria-label="focus">
Expected Result
no reported problem
Debug Information
- z-focus cannot be a child/descendant of a treegrid(role)
Workaround
/* set z-tree as group(role) since it contains multiple roles including a focus button. * set header and footer as grid(role) * set set cave table as treegrid(role) since it contains a tree */ var exTree = {}; zk.override(zul.sel.Tree.prototype, exTree, { bind_: function() { exTree.bind_.apply(this, arguments); this.$n().setAttribute('role', 'group'); setFocusAnchorAriaLabel.bind(this)(); this.$n('cave').setAttribute('role', 'treegrid'); //zk-5448 //zk-5374 var headTbl = this.$n('headtbl'); if (headTbl) { headTbl.setAttribute('role', 'grid'); } var footTbl = this.$n('foottbl'); if (footTbl) { footTbl.setAttribute('role', 'grid'); } this.$n('rows').setAttribute('role', 'rowgroup'); //for paging control jq('.z-tree-paging-bottom', this.$n()).attr('role', 'row'); jq('.z-paging', this.$n()).attr('role', 'gridcell'); }, //in tree-rod.js _setPadSize: function(pad, padId, sz) { //set pad size this._padsz[padId] = sz; var s = pad.style; s.display = sz ? 'block' : 'none'; var html = '<table id="' + this.uuid + '-' + padId + '-tbl" role="none">'; while (true) { html += '<tr><td style="height:' + Math.min(sz, maxsz) + 'px"></td></tr>'; sz -= maxsz; if (sz <= 0) //last one break; } html += '</table>'; jq(pad).empty().append(html); }, }); //zk-5374 var _xTreecols = {}; zk.override(zul.sel.Treecols.prototype, _xTreecols, { bind_: function () { _xTreecols.bind_.apply(this, arguments); this.$n().setAttribute('role', 'row'); } }); //zk-5374 var _xTreecol = {}; zk.override(zul.sel.Treecol.prototype, _xTreecol, { bind_: function () { _xTreecol.bind_.apply(this, arguments); this.$n().setAttribute('role', 'columnheader'); } }); function setFocusAnchorAriaLabel(){ this.$n('a').setAttribute('aria-label', 'focus'); }
- relates to
-
ZK-5374 Elements with an treegrid(role) that require children to contain a specific role are missing some or all of those required children
- Closed
-
ZK-5437 Upgrade WCAG with the lighthouse 10.x detection tools
- Closed
-
ZK-5464 A tree's paging control fails lighthouse accessibility check
- Closed