Invenio Modular Deposit Form Documentation¶ Introduction Features Overview Wrapping the InvenioRDM deposit form Inserting the layout layer Rendering form fields in the layout Combining a variety of field component sources How form fields are inserted Installation Using uv Using pipenv Patch invenio-rdm-records for client-side validation (optional) Configuration Creating a custom form layout Changing layout by resource type Other changes to fields by resource type InvenioRDM version 14 extensions Built-in field widget components Stock component wrappers Multiple components for the same field or region Contrib components Overridable components Alternate components Custom field components Gotchas Replacement field components Top-level widget shims FieldComponentWrapper and labelIcon Enumeration (matches field_components/index.js) PIDField (detailed) Upstream changes that could remove these replacements Adding your own components and validator Python entry points (recommended) Webpack alias (alternative) The componentsRegistry object Overriding Customizing field components Handling custom fields Client-side form validation Enabling client-side validation Prerequisites Configuring the validator Error visibility vs. Formik errors Architecture Leveraging InvenioRDM customization tools Custom form template Layout config injected into the form Wrapper component provides validation schema Layout and UI-state layer Global form data handling Form state management Core components not yet exposed What to Override When (modular deposit form) 1. Replace the whole widget for a section 2. Change only part of a widget (e.g. one button, one sub-field) 3. Change layout: which sections exist, order, or which wrapper is used by name Quick decision Indices and tables¶ Index Search Page