Like what we’re doing? Star us on GitHub!

How to tell a field in rendered inside a drawer/modal form or not?

Stupidism
4 months ago
1 1

I have a slug field auto tracking file name in my Media collection.
I used documentInfo to tell if I'm creating a new media or editing an existing one and disabled edit for the slug when editing. (Modifying slug is not allowed

    const documentInfo = useDocumentInfo();

    const isUpdateRef = useRef(!!documentInfo.id);

But now it's not working when I open the modal form inside an article.

I'd like to know is there any way to get the documentInfo of current form instead of current page?

  • Stupidism
    4 months ago

    For now, what I can find is to use the formRef to find the closest dialog element.

    
        const form = useForm();
        const documentInfo = useDocumentInfo();
    
        const isUpdateRef = useRef(
          !!documentInfo.id && !form.formRef.current.closest('dialog')
        );
    
    3 replies
  • DanRibbens
    Payload Team
    4 months ago

    Nice work figuring out a solution. I'd like to see Payload have a built-in solution for handling multiple forms from the provider. I'm adding the "enhancement" label so we can revisit this problem later.

  • jmikrut
    Payload Team
    4 months ago

    You can use useEditDepth to determine how deeply nested the form is 👍

    It's not "officially" exported yet but you can access it directly from dist in the meantime if you'd like. Also, @Stupidism we would be happy to accept a PR that adds useEditDepth to our /components/forms export!

  • Stupidism
    4 months ago

    @jmikrut I'm not sure if I should export it from forms or utilities. The current PR respects the code instead of your suggestion. Tell me if you want it changed. #1350

Open the post
Continue the discussion in GitHub
Can't find what you're looking for?
Get help straight from the Payload team with an Enterprise License.Learn More