Accordion items whose own element is the disclosure control are not recognized
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 52/100
Direzione di ricerca
Start with AccordionPattern::isDisclosureTitle(), disclosureControlElement(), and allDisclosureItemElements(), which the issue identifies as rejecting controls placed on the item element. Trace how hasAccordionSignal() and HtmlTransformer::transform() handle the reduced fixture. Done means the fixture produces one core/accordion with two items, closed by default, panels inside core/accordion-panel, and no core/html.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Problem
A captured click-to-expand list where the item itself is the control (the whole row is clickable, so capture marks the item with aria-controls / aria-expanded and its answer panel with data-blocks-engine-capture-local-disclosure) is not recognized as an accordion. On a real FAQ the hidden answer panels become core/html islands and the import fails its quality gate ("4 core_html_block failures"); answers are visible on load and do not toggle.
The same markup with a <button aria-controls> wrapping the question converts to native core/accordion.
Reduced fixture
<style>.hidden{display:none}</style>
<section><h2>FAQ</h2><div class="list">
<div class="faq-item" aria-controls="p0" aria-expanded="false" tabindex="0">
<div class="row"><h3>Question 0?</h3><span class="faq-icon">+</span></div>
<div class="faq-answer hidden" id="p0" role="region" data-blocks-engine-capture-local-disclosure="true" hidden><p>Answer 0.</p></div>
</div>
<div class="faq-item" aria-controls="p1" aria-expanded="false" tabindex="0">
<div class="row"><h3>Question 1?</h3><span class="faq-icon">+</span></div>
<div class="faq-answer hidden" id="p1" role="region" data-blocks-engine-capture-local-disclosure="true" hidden><p>Answer 1.</p></div>
</div>
</div></section>
HtmlTransformer::transform() on trunk (354dfdf3d + open PRs):
| control placement | core/accordion | core/details | core/html |
|---|---|---|---|
item div carries aria-controls (above) |
0 | 0 | 0 (panel lowered to a layout shell, control semantics dropped) |
<button aria-controls> around the <h3> |
7 blocks | 0 | 0 |
On the full artifact the panels (which also carry data-blocks-engine-capture-disclosure-open-class / -closed-class) become core/html.
Cause
AccordionPattern only finds disclosure controls at or below the title: isDisclosureTitle() / disclosureControlElement() look at the <h3>, and allDisclosureItemElements() therefore rejects the list. The item element's own aria-controls, which names a panel inside that item, is never considered. Without a faq/accordion class on the list root, hasAccordionSignal() also fails.
Expected
An item element whose aria-controls names a panel it contains is a disclosure item: its title is the heading inside it, its panel is the controlled element, and aria-expanded on the item decides openByDefault. The fixture converts to one core/accordion with two items, answers inside core/accordion-panel, closed by default, and no core/html.
Source
Captured with data-liberation-agent#905 (non-ARIA onclick accordions captured as local disclosures, Automattic/data-liberation-agent#901) from a production FAQ (<div class="faq-item" onclick="toggleFaq(this)">).
Filed by Franklin (Claude Opus via Pi coding agent) on behalf of @chubes4. Root cause traced with a reduced fixture through HtmlTransformer; AI drafted this issue.
- Lingua principale
- PHP
- Stelle
- 22
- Fork
- 2
- Merge medio
- 8h 12m
- PR unite (30g)
- 679
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di Automattic/blocks-engine
-
Solved site promotion gate fails on runner PHP patch drift (expects 8.2.33, runner installs 8.2.34)Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
Automattic/blocks-engine#2161 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
Automattic/blocks-engine#2061 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
Automattic/blocks-engine#1701 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
Automattic/blocks-engine#775 ·
I maintainer di solito rispondono entro 1 giorno
-
Form presentation graph: record a visual part's side relative to the labelForse già presa @chubes4 l’ha presa oggi. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
Automattic/blocks-engine#3251 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di Automattic/blocks-engine
Issue simili
-
sync-en
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 78/100
I maintainer di solito rispondono entro 2 giorni
-
Source item status is not saved when stock is deducted on shipment (stays "In Stock" at qty 0)ApertaIssue: ready for confirmation
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
coollabsio/coolify#12274 ·
I maintainer di solito rispondono entro 1 giorno
-
[Type] Bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
I maintainer di solito rispondono entro 4 giorni
-
0.kind: enhancement 9.needs: package (update)
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
NixOS/nixpkgs#577156 · 3 reazioni ·
I maintainer di solito rispondono entro 1 giorno