/** * Content Plan Plugin - Dynamic Settings Form Component */ import React, { useState } from '@wordpress/element'; import { __ } from '@wordpress/i18n'; import { useContentPlan } from '../context/ContentPlanContext'; import DynamicFormField from './DynamicFormField'; import { DynamicSettingsFormProps, Settings } from '../types'; const DynamicSettingsForm = ({ settings, fieldConfigs, onSave, }: DynamicSettingsFormProps) => { const [formData, setFormData] = useState(settings || {}); const { saving, getString } = useContentPlan(); const handleFieldChange = (fieldKey: string, value: any): void => { setFormData(prev => ({ ...prev, [fieldKey]: value, })); }; const handleSubmit = async (e: any): Promise => { e.preventDefault(); try { await onSave(formData); } catch (error) { console.error('Error saving settings:', error); } }; const renderFieldValue = ( fieldKey: string, config: any, value: any ): string => { if (config.type === 'password' && value) { return `${value.substring(0, 8)}...`; } if (config.type === 'select' || config.type === 'radio') { return ( config.options?.[value] || value || getString('form_fields', 'not_set', 'Not set') ); } if (config.type === 'checkbox') { return value ? getString('form_fields', 'enabled', 'Enabled') : getString('form_fields', 'disabled', 'Disabled'); } return value || getString('form_fields', 'not_set', 'Not set'); }; return (
{/* Settings Form */}
{Object.entries(fieldConfigs).map(([fieldKey, config]) => ( ))}
); }; export default DynamicSettingsForm;