Follow-up to #3192 and #3197. These modals use raw Modal + Modal.Footer + useApiMutation with onError → addToast. Converting to ModalForm gives them inline submit errors and a loading spinner on the submit button, matching the side-modal forms.
Candidates for ModalForm
ModalForm hardcodes <Message title="Error"> inline — simplest to drop the custom titles, matching #3197. Or we could add the ability to pass a custom error title.
Doesn't fit — not form submissions
These have no inputs and would need a throwaway useForm just to satisfy ModalForm's signature:
SiloScimTab Create token — app/pages/system/silos/SiloScimTab.tsx:220. Informational body; Create fires the mutation and onSuccess hands the token to a second modal.
ImagesPage Promote image — app/pages/project/images/ImagesPage.tsx:189. "Are you sure you want to promote X?"
Leave as-is or refactor toward confirmAction.
Follow-up to #3192 and #3197. These modals use raw
Modal+Modal.Footer+useApiMutationwithonError→addToast. Converting toModalFormgives them inline submit errors and a loading spinner on the submit button, matching the side-modal forms.Candidates for
ModalFormResizeInstanceModal—app/pages/project/instances/InstancePage.tsx:274. Has an inline<p className="text-error">at :389 that the shell replaces.SiloSubnetPoolsTabLink pool —app/pages/system/silos/SiloSubnetPoolsTab.tsx:297SiloIpPoolsTabLink pool —app/pages/system/silos/SiloIpPoolsTab.tsx:311IpPoolPageLink silo —app/pages/system/networking/IpPoolPage.tsx:493SubnetPoolPageLink silo —app/pages/system/networking/SubnetPoolPage.tsx:475AntiAffinityCardAdd member —app/pages/project/instances/AntiAffinityCard.tsx:241anti-affinity-group-member-addAdd instance —app/forms/anti-affinity-group-member-add.tsx:67ModalFormhardcodes<Message title="Error">inline — simplest to drop the custom titles, matching #3197. Or we could add the ability to pass a custom error title.Doesn't fit — not form submissions
These have no inputs and would need a throwaway
useFormjust to satisfyModalForm's signature:SiloScimTabCreate token —app/pages/system/silos/SiloScimTab.tsx:220. Informational body; Create fires the mutation andonSuccesshands the token to a second modal.ImagesPagePromote image —app/pages/project/images/ImagesPage.tsx:189. "Are you sure you want to promote X?"Leave as-is or refactor toward
confirmAction.