Skip to content

accordion: Preserve disabled state of individual items - #3141

Merged
huacnlee merged 1 commit into
longbridge:mainfrom
violetpurpleish:codex/fix-accordion-item-disabled
Sep 20, 2026
Merged

huacnlee merged 1 commit into
longbridge:mainfrom
violetpurpleish:codex/fix-accordion-item-disabled

Conversation

@violetpurpleish

Copy link
Copy Markdown
Contributor

Description

An enabled Accordion overwrote each item's own disabled flag, making .disabled(true) items interactive. Combine the group and item flags so either one can disable the item. Add a regression covering enabled siblings and disabling/re-enabling the group, plus a disabled item in the Accordion story.

Public API

gpui-component (existing signatures, corrected behavior):

  • Accordion::disabled(self, disabled: bool) -> Self: disables the group while preserving independently disabled children.
  • AccordionItem::disabled(self, disabled: bool) -> Self: an item's disabled flag remains effective inside an enabled group.

Breaking Changes

Code relying on the old accidental enabling behavior must explicitly enable the item. Builder signatures are unchanged.

 Accordion::new("settings").item(|item| item.title("Advanced").disabled(true))
-// Clicking Advanced can expand it.
+// Clicking Advanced leaves it closed.

How to Test

  • cargo test -p gpui-kit --features test-support --test disclosure --locked: 5 passed. The new regression failed on main before the fix.
  • Native macOS Story, launched with ./script/run-story-macos Accordion: click Disabled item (stays closed), click Can it hold any content? (expands), toggle Options > Disabled (all triggers ignore clicks), re-enable the group (Disabled item stays closed).
  • Used Computer accessibility element actions. The native tree exposes unlabeled Accordion buttons without expanded values, so screenshots identified the buttons and verified panel visibility.
  • Full Component/Kit suite, formatting, Clippy, and Metal rendering checks also passed in a temporary checkout combining the four independent fixes. Windows/Linux execution remains for CI.

AI-assisted implementation with Codex; diff reviewed and regression/native checks run.

@huacnlee
huacnlee merged commit 1a7ada4 into longbridge:main Sep 20, 2026
11 checks passed
@huacnlee

Copy link
Copy Markdown
Member

Thanks

@violetpurpleish
violetpurpleish deleted the codex/fix-accordion-item-disabled branch September 20, 2026 14:52
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.

2 participants