Form Builder INTERACTIVE

Professional drag-and-drop form builder with 20+ field types and advanced logic

Form Configuration

{}

Quick Start Templates

Comprehensive Feature Set

Field Types

  • Text, Email, Password
  • Number, Phone, URL
  • Textarea with character count
  • Select & Multi-select
  • Radio & Checkbox groups
  • Date, Time, DateTime
  • File upload with preview
  • Color picker
  • Range slider
  • Signature pad
  • Rating stars
  • HTML content blocks

Validation

  • Required fields
  • Min/max length
  • Pattern matching (regex)
  • Email validation
  • URL validation
  • Number ranges
  • File type restrictions
  • File size limits
  • Custom error messages
  • Real-time validation
  • Conditional requirements

Logic & Conditions

  • Show/hide fields
  • Enable/disable fields
  • Skip logic
  • Calculated fields
  • Dynamic options
  • Field dependencies
  • Multi-page forms
  • Progress indicators
  • Save & resume
  • Auto-save drafts

User Experience

  • Drag & drop interface
  • Live preview mode
  • Undo/redo support
  • Keyboard shortcuts
  • Touch gestures
  • Responsive design
  • Accessibility compliant
  • Dark mode support
  • Multi-language ready
  • Custom themes

Developer Features

  • JSON import/export
  • Event callbacks
  • Custom field types
  • API integration
  • Webhook support
  • Form templates
  • CSS customization
  • Plugin architecture
  • TypeScript support
  • Zero dependencies

Performance

  • ~45KB minified
  • Lazy loading
  • Virtual scrolling
  • Debounced saves
  • Optimized renders
  • Memory efficient
  • 60fps animations
  • RAF-based updates
  • Event delegation
  • Cleanup on destroy

Statistics

20+
Field Types
45KB
Bundle Size
0
Dependencies
100%
Accessible

Quick Start

// Initialize the form builder const builder = new FormBuilder(document.getElementById('formBuilder'), { fields: [], onSave: (formData) => { console.log('Form saved:', formData); }, onChange: (formData) => { console.log('Form changed:', formData); } }); // Load existing form builder.loadForm(existingFormData); // Get form configuration const config = builder.getFormData(); // Switch to preview mode builder.setMode('preview'); // Add custom field type builder.addFieldType({ type: 'custom', label: 'Custom Field', icon: '⚡', defaultProps: { ... } });

Event Handling

builder.on('field-add', (field) => { console.log('Field added:', field); }); builder.on('field-update', (field) => { console.log('Field updated:', field); }); builder.on('field-delete', (fieldId) => { console.log('Field deleted:', fieldId); }); builder.on('mode-change', (mode) => { console.log('Mode changed to:', mode); }); builder.on('validation-error', (errors) => { console.log('Validation errors:', errors); });

Form Submission

// Handle form submission in preview mode builder.on('submit', async (formData) => { try { const response = await fetch('/api/submit', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(formData) }); const result = await response.json(); console.log('Submission successful:', result); } catch (error) { console.error('Submission failed:', error); } }); // Validate before submission const isValid = builder.validate(); if (isValid) { const data = builder.getFormValues(); // Process form data }

Conditional Logic

// Add conditional logic to fields const conditionalField = { id: 'field_2', type: 'text', label: 'Company Name', conditions: [ { field: 'field_1', operator: 'equals', value: 'business', action: 'show' } ] }; // Complex conditions const complexCondition = { logic: 'AND', // AND or OR conditions: [ { field: 'age', operator: 'greater_than', value: 18 }, { field: 'country', operator: 'in', value: ['US', 'CA', 'UK'] } ], action: 'enable' // show, hide, enable, disable };