Simplify focus and blur handler types - #186
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (6)
🚧 Files skipped from review as they are similar to previous changes (6)
Walkthrough
Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Pull request overview
This PR standardizes FieldElementProps focus/blur handler typings across framework wrappers by switching them to parameterless callbacks, aligning the API with actual handler behavior (touched/validation) and reducing friction when forwarding handlers to custom components with differing event types.
Changes:
- Update
FieldElementPropsfocus/blur handler types to() => void(andQRL<() => void>for Qwik) across Preact, Qwik, React, Solid, Svelte, and Vue. - Add type-level regression tests to ensure focus/blur handlers remain parameterless.
- Update website API docs to reflect the new signatures and document the handlers’ touched/validation lifecycle.
Reviewed changes
Copilot reviewed 30 out of 30 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| website/src/routes/(docs)/vue/api/(types)/FieldElementProps/properties.ts | Update Vue docs type signature for onFocus/onBlur to parameterless functions. |
| website/src/routes/(docs)/vue/api/(types)/FieldElementProps/index.mdx | Document lifecycle behavior and parameterless handler rationale for Vue. |
| website/src/routes/(docs)/svelte/api/(types)/FieldElementProps/properties.ts | Update Svelte docs type signature for onfocus/onblur to parameterless functions. |
| website/src/routes/(docs)/svelte/api/(types)/FieldElementProps/index.mdx | Document lifecycle behavior and parameterless handler rationale for Svelte. |
| website/src/routes/(docs)/solid/api/(types)/FieldElementProps/properties.ts | Update Solid docs type signature for onFocus/onBlur to parameterless functions. |
| website/src/routes/(docs)/solid/api/(types)/FieldElementProps/index.mdx | Document lifecycle behavior and parameterless handler rationale for Solid. |
| website/src/routes/(docs)/react/api/(types)/FieldElementProps/properties.ts | Update React docs type signature for onFocus/onBlur to parameterless functions. |
| website/src/routes/(docs)/react/api/(types)/FieldElementProps/index.mdx | Document lifecycle behavior and parameterless handler rationale for React. |
| website/src/routes/(docs)/qwik/api/(types)/FieldElementProps/properties.ts | Update Qwik docs type signature for onFocus$/onBlur$ callbacks to parameterless functions. |
| website/src/routes/(docs)/qwik/api/(types)/FieldElementProps/index.mdx | Document lifecycle behavior and parameterless handler rationale for Qwik wrapped callbacks. |
| website/src/routes/(docs)/preact/api/(types)/FieldElementProps/properties.ts | Update Preact docs type signature for onFocus/onBlur to parameterless functions. |
| website/src/routes/(docs)/preact/api/(types)/FieldElementProps/index.mdx | Document lifecycle behavior and parameterless handler rationale for Preact. |
| frameworks/vue/src/types/field.ts | Change Vue FieldElementProps focus/blur handler types and update JSDoc semantics. |
| frameworks/vue/src/composables/useField/useField.test-d.ts | Add Vue type regression coverage for parameterless focus/blur handlers. |
| frameworks/vue/CHANGELOG.md | Add changelog entry for the handler type change. |
| frameworks/svelte/src/types/field.ts | Change Svelte FieldElementProps focus/blur handler types and update JSDoc semantics; drop unused FocusEventHandler import. |
| frameworks/svelte/src/runes/useField/useField.test-d.ts | Add Svelte type regression coverage for parameterless focus/blur handlers. |
| frameworks/svelte/CHANGELOG.md | Add changelog entry for the handler type change. |
| frameworks/solid/src/types/field.ts | Change Solid FieldElementProps focus/blur handler types and update JSDoc semantics. |
| frameworks/solid/src/primitives/useField/useField.test-d.ts | Add Solid type regression coverage for parameterless focus/blur handlers. |
| frameworks/solid/CHANGELOG.md | Add changelog entry for the handler type change. |
| frameworks/react/src/types/field.ts | Change React FieldElementProps focus/blur handler types and update JSDoc semantics; drop unused FocusEventHandler import. |
| frameworks/react/src/hooks/useField/useField.test-d.ts | Add React type regression coverage for parameterless focus/blur handlers. |
| frameworks/react/CHANGELOG.md | Add changelog entry for the handler type change. |
| frameworks/react-native/src/hooks/useField/useField.test-d.ts | Add React Native type regression coverage for parameterless focus/blur handlers. |
| frameworks/qwik/src/types/field.ts | Change Qwik FieldElementProps focus/blur handler types to QRL<() => void> and update JSDoc semantics. |
| frameworks/qwik/CHANGELOG.md | Add changelog entry for the handler type change. |
| frameworks/preact/src/types/field.ts | Change Preact FieldElementProps focus/blur handler types and update JSDoc semantics; drop unused FocusEventHandler import. |
| frameworks/preact/src/hooks/useField/useField.test-d.ts | Add Preact type regression coverage for parameterless focus/blur handlers. |
| frameworks/preact/CHANGELOG.md | Add changelog entry for the handler type change. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Summary
FieldElementPropsfocus and blur handlers to parameterless callbacks in Preact, Qwik, React, Solid, Svelte, and VueWhy
The focus and blur handlers do not consume their framework event objects. They only update touched state and trigger the configured touch or blur validation. Framework-specific focus event types therefore made controlled component integrations require unnecessary casts and could conflict with component libraries that expose different event types.
Using
() => voidkeeps the handlers compatible with native controls while making them easier to forward to custom components. Angular and React Native already used parameterless handlers; React Native now also has regression coverage.Validation
Summary by CodeRabbit