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

change use:enhance signature to support <button formaction> #6633

Merged
merged 5 commits into from
Sep 7, 2022

Conversation

Rich-Harris
Copy link
Member

@Rich-Harris Rich-Harris commented Sep 7, 2022

closes #6630. This makes two breaking changes to the enhance action:

  1. the input form is now element, and refers to the element the action was added to. To type that, the function and the SubmissionFunction interface now both take three generic params instead of two.
  2. The returned callback is a ({ element, form, data, result }) => {...} function instead of just (result) => {...}. This makes it easier to do things like use:enhance={() => whatever}, where whatever is a function that (for example) calls form.reset().

Please don't delete this checklist! Before submitting the PR, please make sure you do the following:

  • It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs
  • This message body should clearly illustrate what problems it solves.
  • Ideally, include a test that fails without this PR but passes with it.

Tests

  • Run the tests with pnpm test and lint the project with pnpm lint and pnpm check

Changesets

  • If your PR makes a change that should be noted in one or more packages' changelogs, generate a changeset by running pnpm changeset and following the prompts. All changesets should be patch until SvelteKit 1.0

@changeset-bot
Copy link

changeset-bot bot commented Sep 7, 2022

🦋 Changeset detected

Latest commit: c8a26fc

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

This PR includes changesets to release 1 package
Name Type
@sveltejs/kit 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

@dummdidumm
Copy link
Member

Pushed up a change that should make this work (infering reset exists etc). Though I'm also not sure if this is a good move in general (the form thing, not the return callback params change). It feels like it makes the common case slightly harder or confusing than it needs to be.

@david-plugge
Copy link
Contributor

david-plugge commented Sep 7, 2022

Is there any need to access the element if it´s a button?
I´d suggest using element.closest('form') to get the parent form if the action is not applied to the form directly.

@dummdidumm
Copy link
Member

dummdidumm commented Sep 7, 2022

This is a good point, we could make that part non-breaking by passing in both element and form to the callback function - that way only the return callback function change is breaking. I pushed a commit out proposing these changes (Rich can revert if he doesn't agree, but it feels like a sensible thing todo).

@Rich-Harris
Copy link
Member Author

I just sat down at my laptop to suggest doing exactly that — we are on the same wavelength

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

use:enhance should work with <button formaction>
3 participants