Code Monkey home page Code Monkey logo

Comments (9)

paulm17 avatar paulm17 commented on May 24, 2024 2

I needed this ability myself. I have a complex component where it has a dialog modal that has it's own onClick methods and where the react-hook-form resides in it's body. There is no way to connect the forms handleSubmit and modal onClick methods.

I have a really old version of remix-forms which I forked a while ago and not had the time to update it. Well, because it works so well. 😄

All I ended up doing was the following to the Form component for it to support a ref property:

function Form<Schema extends SomeZodObject>(
  {
    mode = "onSubmit",
    ...
    ...props
  }: FormProps<Schema>,
  ref,
) {
   return (
    <form
      ref={ref}
      ...
    />
}

export default forwardRef(Form)

Then the following to execute programmatically:

if (formRef.current) {
   ;(formRef.current as EventTarget).dispatchEvent(
      new Event("submit", { cancelable: true, bubbles: true }),
      )
}

from remix-forms.

danielweinmann avatar danielweinmann commented on May 24, 2024 1

@azzzy, have you tried using the onTransition prop for resetting the form? We do that in this example.

Since we added onTransition I haven't had any other use case where accessing the form imperatively is necessary. How about your use cases?

from remix-forms.

paulm17 avatar paulm17 commented on May 24, 2024 1

@diogob Although I took a look at the solution in #136 I am not quite sure. That said, once I have finished the current work that I am going through. I will be bringing up my fork of remix-forms to the latest and then I'll see where things stand. Maybe in a week or so, I'll then be able to comment here on any improvements or it's perfect for my use case. 😄.

Many thanks for being reactive and making a PR so quickly for this amazing library. Looking forward to comes next in '23. 🚀

from remix-forms.

diogob avatar diogob commented on May 24, 2024 1

I'm closing this issue since #136 exposes a submit function to the children function and it was released in v1.5.0.

@paulm17 feel free to open a new issue in case you need access to submit outside of the children function.

from remix-forms.

azzzy avatar azzzy commented on May 24, 2024

I also need this in order to be able to reset the form.
Maybe a low hanging fruit will be to simply add a an optional Ref<HtmlFormElement> prop to the component? This won't lead to a breaking change, unlike using forwardRef. This is how I am monkey-patching at the moment.
form-ref.txt

from remix-forms.

azzzy avatar azzzy commented on May 24, 2024

@danielweinmann, this works nicely, somehow I missed it in the documentation. Thanks for the hint!

from remix-forms.

diogob avatar diogob commented on May 24, 2024

@danielweinmann talking to @gustavoguichard we found a use case for this, when one wants to imperatively trigger the form submission (let's say when a verification code is typed). But instead of relaying the form ref we could expose a submit function for the form children function. Thoughts?

from remix-forms.

diogob avatar diogob commented on May 24, 2024

We just found another use case for programmatically submitting the form: submit confirmation using a dialog.

from remix-forms.

diogob avatar diogob commented on May 24, 2024

@paulm17 I'm curious to know if the solution in #136 would solve your use case. We have exposed a submit function that triggers the submit event, but that is only being exposed in the form children function.

from remix-forms.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.