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 FormCheckbox erroring when an "integer-like" key is used #2801
Fix FormCheckbox erroring when an "integer-like" key is used #2801
Conversation
The latest updates on your projects. Learn more about Vercel for Git ↗︎
1 Ignored Deployment
|
🦋 Changeset detectedLatest commit: 7511985 The changes in this PR will be included in the next version bump. This PR includes changesets to release 4 packages
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 |
@Exanite is attempting to deploy a commit to the Ariakit Team on Vercel. A member of the Team first needs to authorize it. |
This pull request is automatically built and testable in CodeSandbox. To see build info of the built libraries, click here or the icon next to each commit SHA. Latest deployment of this branch, based on commit 7511985:
|
@@ -57,9 +53,9 @@ export function get<T>( | |||
return defaultValue as T; | |||
} | |||
if (!rest.length) { | |||
return values[key] ?? defaultValue; | |||
return (values[key] ?? defaultValue) as T; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure if using the type assertions here is a good idea, but it doesn't affect functionality and there's no way to verify that the returned value is actually T.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for working on this, @Exanite!
Would you mind creating a basic example (without a readme.md file) that illustrates your use case along with some tests? This will prevent future regressions.
import type { DeepMap, DeepPartial, Names, StringLike } from "./types.js"; | ||
|
||
type Values = AnyObject; | ||
type Values = Record<string, unknown>; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm thinking now that this could represent a breaking change since this Values
type is exposed as FormStoreValues
below.
We can do that in a separate PR, but it's probably safer for this PR to just include the Array.isArray
fix.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good catch. I'll remove these changes from my PR.
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## @ariakit/core@0.3.1 ### Patch Changes - [`#2801`](#2801) Fixed `values.slice` error that would occur when clicking on `FormCheckbox` that uses an integer-like field name. ## @ariakit/react@0.3.1 ### Patch Changes - [`#2804`](#2804) New in this version: [**Component providers**](https://ariakit.org/guide/component-providers) Component providers are optional components that act as a higher-level API on top of [component stores](https://ariakit.org/guide/component-stores). They wrap Ariakit components and automatically provide a store to them. - [`#2797`](#2797) Fixed a regression on `Dialog` regarding the timing of its "focus on hide" behavior. - [`#2801`](#2801) Fixed `values.slice` error that would occur when clicking on `FormCheckbox` that uses an integer-like field name. - [`#2802`](#2802) Added `setMounted` prop to `useDisclosureStore` and derived component stores. This callback prop can be used to react to changes in the `mounted` state. For example: ```js useDialogStore({ setMounted(mounted) { if (!mounted) { props.onUnmount?.(); } }, }); ``` - [`#2803`](#2803) The `Toolbar` component can now render without needing an explicit `store` prop or a `ToolbarProvider` component wrap. `Toolbar` now also supports certain store props such as `focusLoop`, `orientation`, `rtl`, and `virtualFocus`. - Updated dependencies: `@ariakit/react-core@0.3.1`. ## @ariakit/react-core@0.3.1 ### Patch Changes - [`#2797`](#2797) Fixed a regression on `Dialog` regarding the timing of its "focus on hide" behavior. - [`#2801`](#2801) Fixed `values.slice` error that would occur when clicking on `FormCheckbox` that uses an integer-like field name. - [`#2802`](#2802) Added `setMounted` prop to `useDisclosureStore` and derived component stores. This callback prop can be used to react to changes in the `mounted` state. For example: ```js useDialogStore({ setMounted(mounted) { if (!mounted) { props.onUnmount?.(); } }, }); ``` - [`#2803`](#2803) The `Toolbar` component can now render without needing an explicit `store` prop or a `ToolbarProvider` component wrap. `Toolbar` now also supports certain store props such as `focusLoop`, `orientation`, `rtl`, and `virtualFocus`. - Updated dependencies: `@ariakit/core@0.3.1`. ## @ariakit/test@0.2.4 ### Patch Changes - Updated dependencies: `@ariakit/core@0.3.1`. Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
This fixes #2799.