From 91449bec60de90e72ac58342e5d7441d15d416de Mon Sep 17 00:00:00 2001 From: dwindown Date: Thu, 6 Nov 2025 00:05:22 +0700 Subject: [PATCH] fix: Modal footer outside scroll + checkbox yes/no conversion --- .../settings/GenericGatewayForm.tsx | 94 +++++++++++-------- admin-spa/src/routes/Settings/Payments.tsx | 44 ++++++++- 2 files changed, 95 insertions(+), 43 deletions(-) diff --git a/admin-spa/src/components/settings/GenericGatewayForm.tsx b/admin-spa/src/components/settings/GenericGatewayForm.tsx index 9ccba9d..c85071c 100644 --- a/admin-spa/src/components/settings/GenericGatewayForm.tsx +++ b/admin-spa/src/components/settings/GenericGatewayForm.tsx @@ -47,12 +47,13 @@ interface GenericGatewayFormProps { }; onSave: (settings: Record) => Promise; onCancel: () => void; + hideFooter?: boolean; } // Supported field types (outside component to avoid re-renders) const SUPPORTED_FIELD_TYPES = ['text', 'password', 'checkbox', 'select', 'textarea', 'number', 'email', 'url']; -export function GenericGatewayForm({ gateway, onSave, onCancel }: GenericGatewayFormProps) { +export function GenericGatewayForm({ gateway, onSave, onCancel, hideFooter = false }: GenericGatewayFormProps) { const [formData, setFormData] = useState>({}); const [isSaving, setIsSaving] = useState(false); const [unsupportedFields, setUnsupportedFields] = useState([]); @@ -126,12 +127,14 @@ export function GenericGatewayForm({ gateway, onSave, onCancel }: GenericGateway switch (field.type) { case 'checkbox': + // WooCommerce uses "yes"/"no" strings, convert to boolean + const isChecked = value === 'yes' || value === true; return (
handleFieldChange(field.id, checked)} + checked={isChecked} + onCheckedChange={(checked) => handleFieldChange(field.id, checked ? 'yes' : 'no')} />
{field.description && ( -

{field.description}

+

)}