Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(collection): fix collection sort function using by copying method #1434

Merged

Conversation

erm1116
Copy link
Contributor

@erm1116 erm1116 commented Apr 19, 2024

Closes #1433

📝 Description

use coping method for sorting in collection util.

⛳️ Current behavior (updates)

If implemented like this, original array is also sorted.

sort = (values: string[]): string[] => {
	return values.sort(this.sortFn)
}

🚀 New behavior

use the copying version of the sort() method: Array.prototype.toSorted

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

No, values will be not sorted but it is expected behavior

📝 Additional Information

This fix affects Select and Combobox machine

  • in Select

    highlightComputedFirstItem(ctx) {
    const value = ctx.hasSelectedItems ? ctx.collection.sort(ctx.value)[0] : ctx.collection.first()
    set.highlightedItem(ctx, value)
    },
    highlightComputedLastItem(ctx) {
    const value = ctx.hasSelectedItems ? ctx.collection.sort(ctx.value)[0] : ctx.collection.last()
    set.highlightedItem(ctx, value)
    },
    highlightFirstSelectedItem(ctx) {
    if (!ctx.hasSelectedItems) return
    const [value] = ctx.collection.sort(ctx.value)
    set.highlightedItem(ctx, value)
    },

  • in Combobox

    highlightFirstSelectedItem(ctx) {
    const [value] = ctx.collection.sort(ctx.value)
    set.highlightedItem(ctx, value)
    },

Copy link

changeset-bot bot commented Apr 19, 2024

🦋 Changeset detected

Latest commit: d1ee5f3

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

This PR includes changesets to release 73 packages
Name Type
@zag-js/collection Patch
@zag-js/combobox Patch
@zag-js/select 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/avatar Patch
@zag-js/carousel Patch
@zag-js/checkbox Patch
@zag-js/clipboard Patch
@zag-js/collapsible Patch
@zag-js/color-picker 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/menu Patch
@zag-js/number-input Patch
@zag-js/pagination Patch
@zag-js/pin-input Patch
@zag-js/popover Patch
@zag-js/presence Patch
@zag-js/progress Patch
@zag-js/radio-group Patch
@zag-js/rating-group Patch
@zag-js/signature-pad Patch
@zag-js/slider Patch
@zag-js/splitter Patch
@zag-js/switch Patch
@zag-js/tabs Patch
@zag-js/tags-input Patch
@zag-js/toast Patch
@zag-js/toggle-group 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/color-utils Patch
@zag-js/utils Patch
@zag-js/date-utils Patch
@zag-js/dismissable Patch
@zag-js/dom-event Patch
@zag-js/dom-query Patch
@zag-js/element-rect Patch
@zag-js/element-size Patch
@zag-js/file-utils Patch
@zag-js/focus-scope Patch
@zag-js/focus-visible Patch
@zag-js/form-utils Patch
@zag-js/i18n-utils Patch
@zag-js/interact-outside Patch
@zag-js/live-region Patch
@zag-js/mutation-observer Patch
@zag-js/number-utils Patch
@zag-js/numeric-range Patch
@zag-js/popper Patch
@zag-js/rect-utils Patch
@zag-js/remove-scroll Patch
@zag-js/tabbable Patch
@zag-js/text-selection Patch
@zag-js/visually-hidden 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

Copy link

vercel bot commented Apr 19, 2024

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Updated (UTC)
zag-nextjs ✅ Ready (Inspect) Visit Preview Apr 19, 2024 8:27pm
zag-solid ✅ Ready (Inspect) Visit Preview Apr 19, 2024 8:27pm
zag-svelte ✅ Ready (Inspect) Visit Preview Apr 19, 2024 8:27pm
zag-vue ✅ Ready (Inspect) Visit Preview Apr 19, 2024 8:27pm
zag-website ✅ Ready (Inspect) Visit Preview Apr 19, 2024 8:27pm

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.

multi-selectable Select and Combobox value is unintentionally sorted when opening the listbox
2 participants