Skip to content

fix(switch): correct data-active consistency on disabled state#2734

Merged
segunadebayo merged 3 commits intochakra-ui:mainfrom
julienbenac:fix/switch-active-attr
Sep 24, 2025
Merged

fix(switch): correct data-active consistency on disabled state#2734
segunadebayo merged 3 commits intochakra-ui:mainfrom
julienbenac:fix/switch-active-attr

Conversation

@julienbenac
Copy link
Contributor

Closes #2732

📝 Description

This PR fixes an issue where the data-active attribute could be added to a Switch component even when it was disabled at runtime. Now, data-active is never set if the switch is disabled, whether from the start or after being updated.

⛳️ Current behavior (updates)

If a Switch is enabled and then disabled dynamically, clicking it still adds data-active. This does not happen if it starts disabled.

🚀 New behavior

With this change, data-active is never added to a disabled Switch, regardless of when it becomes disabled.

💣 Is this a breaking change (Yes/No):

Yes, if the data-active attribute is used in conjunction with the disabled prop. Styles may be affected if both selectors are used together, as the data-active attribute will no longer be present on disabled switches.

Before

/* ✅ This style could apply to a switch */
[data-disabled][data-active] {
  background: red;
}

After

/* ❌ This style will no longer apply to a switch */
[data-disabled][data-active] {
  background: red;
}

📝 Additional Information

This behavior is also present in similar state machines such as RadioGroup and Checkbox. The readOnly property could potentially cause similar issues as disabled. However, these cases have not been addressed in this pull request and may require further investigation.

@changeset-bot
Copy link

changeset-bot bot commented Sep 23, 2025

🦋 Changeset detected

Latest commit: 2b9dedb

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 79 packages
Name Type
@zag-js/switch Patch
@zag-js/anatomy-icons Patch
@zag-js/anatomy Patch
@zag-js/core Patch
@zag-js/docs Patch
@zag-js/preact Patch
@zag-js/react Patch
@zag-js/solid Patch
@zag-js/svelte Patch
@zag-js/vue Patch
@zag-js/accordion Patch
@zag-js/angle-slider Patch
@zag-js/async-list Patch
@zag-js/avatar Patch
@zag-js/bottom-sheet Patch
@zag-js/carousel Patch
@zag-js/checkbox Patch
@zag-js/clipboard Patch
@zag-js/collapsible Patch
@zag-js/color-picker Patch
@zag-js/combobox Patch
@zag-js/date-picker Patch
@zag-js/dialog Patch
@zag-js/editable Patch
@zag-js/file-upload Patch
@zag-js/floating-panel Patch
@zag-js/hover-card Patch
@zag-js/listbox Patch
@zag-js/menu Patch
@zag-js/navigation-menu Patch
@zag-js/number-input Patch
@zag-js/pagination Patch
@zag-js/password-input Patch
@zag-js/pin-input Patch
@zag-js/popover Patch
@zag-js/presence Patch
@zag-js/progress Patch
@zag-js/qr-code Patch
@zag-js/radio-group Patch
@zag-js/rating-group Patch
@zag-js/scroll-area Patch
@zag-js/select Patch
@zag-js/signature-pad Patch
@zag-js/slider Patch
@zag-js/splitter Patch
@zag-js/steps Patch
@zag-js/tabs Patch
@zag-js/tags-input Patch
@zag-js/timer Patch
@zag-js/toast Patch
@zag-js/toggle-group Patch
@zag-js/toggle Patch
@zag-js/tooltip Patch
@zag-js/tour Patch
@zag-js/tree-view Patch
@zag-js/store Patch
@zag-js/types Patch
@zag-js/aria-hidden Patch
@zag-js/auto-resize Patch
@zag-js/collection Patch
@zag-js/color-utils Patch
@zag-js/utils Patch
@zag-js/date-utils Patch
@zag-js/dismissable Patch
@zag-js/dom-query Patch
@zag-js/file-utils Patch
@zag-js/focus-trap Patch
@zag-js/focus-visible Patch
@zag-js/highlight-word Patch
@zag-js/hotkeys Patch
@zag-js/i18n-utils Patch
@zag-js/interact-outside Patch
@zag-js/json-tree-utils Patch
@zag-js/live-region Patch
@zag-js/popper Patch
@zag-js/rect-utils Patch
@zag-js/remove-scroll Patch
@zag-js/scroll-snap Patch
@zag-js/stringify-state Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@vercel
Copy link

vercel bot commented Sep 23, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Updated (UTC)
zag-nextjs Ready Ready Preview Sep 24, 2025 4:12pm
zag-solid Ready Ready Preview Sep 24, 2025 4:12pm
zag-svelte Ready Ready Preview Sep 24, 2025 4:12pm
zag-vue Ready Ready Preview Sep 24, 2025 4:12pm
zag-website Ready Ready Preview Sep 24, 2025 4:12pm

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.

Switch data-active inconsistency when toggling disabled state

2 participants