Skip to content

feat: Restore original attributes on destroy#39

Merged
zipper merged 1 commit into
masterfrom
feat/restore-attributes-on-destroy
Jun 18, 2026
Merged

feat: Restore original attributes on destroy#39
zipper merged 1 commit into
masterfrom
feat/restore-attributes-on-destroy

Conversation

@zipper

@zipper zipper commented Jun 18, 2026

Copy link
Copy Markdown
Owner

Při destroy() se DOM atributy nově vracejí do původního stavu jednotným vzorem místo bezpodmínečného odebírání.

  • Nová sdílená utilita AttributeSnapshot (remember/restore/clear) v utils.ts, exportovaná z ESM buildu vedle deepMerge.
  • destroy() revertuje role, hidden, aria-hidden, aria-controls a aria-expanded/aria-selected na původní hodnotu (vrátí / odebere / no-op podle snapshotu pořízeného v prepareDOM).
  • Oprava preexisting bugu: destroy() dřív bezpodmínečně mazal i autorem ručně zadané role/aria-controls/aria-expanded, které collapsable nepřidal — nově se zachovají.
  • Hlavní motivace: vrácení hidden/aria-hidden opravuje reálný bug s viditelností boxů po zrušení collapsable (focus management v menu).
  • Záměrně se NErevertují generovaná id (bez vedlejšího efektu) a přepsaný href ##id (sémanticky správně ponechat).

- Add shared AttributeSnapshot utility (remember/restore/clear) in utils.ts, exported from the ESM build alongside deepMerge
- destroy() now restores role, hidden, aria-hidden, aria-controls and aria-expanded/aria-selected to their original state instead of unconditionally removing them
- Fix: destroy no longer removes author-defined role/aria-controls/aria-expanded that collapsable did not add
- Generated ids and rewritten href (#->#id) are intentionally kept
@zipper zipper merged commit edf3e3f into master Jun 18, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant