# Custom DynamicForm Widget

## Overview
Custom implementation of `wbraganca/yii2-dynamicform` widget untuk Ikiwae project. Package wbraganca sudah tidak di-maintain lagi, jadi dibuat custom widget yang 100% compatible dengan API wbraganca.

## Location
```
common/widgets/dynamicform/
├── DynamicFormWidget.php      # Main widget class
├── DynamicFormAsset.php        # Asset bundle
└── assets/
    └── yii2-dynamic-form.js    # JavaScript plugin
```

## Usage
Persis sama seperti wbraganca, hanya ganti namespace:

### Before (wbraganca):
```php
use wbraganca\dynamicform\DynamicFormWidget;
```

### After (custom):
```php
use common\widgets\dynamicform\DynamicFormWidget;
```

## Example
```php
<?php DynamicFormWidget::begin([
    'widgetContainer' => 'dynamicform_wrapper',
    'widgetBody' => '.container-items',
    'widgetItem' => '.item',
    'limit' => 10,
    'min' => 1,
    'insertButton' => '.add-item',
    'deleteButton' => '.remove-item',
    'model' => $model,
    'formId' => 'dynamic-form',
    'formFields' => ['field1', 'field2'],
]); ?>

<!-- Your form items here -->

<?php DynamicFormWidget::end(); ?>
```

## Features
✅ 100% API compatible with wbraganca
✅ PHP 8.1+ compatible
✅ Support nested dynamic forms
✅ Yii2 validation integration
✅ Bootstrap 3/4 compatible

## Configuration Options
- **widgetContainer**: Container class/id untuk semua clones
- **widgetBody**: Body container selector
- **widgetItem**: Item container selector
- **limit**: Maximum number of clones (default: 999)
- **min**: Minimum number of clones (default: 1)
- **insertButton**: Add button selector
- **deleteButton**: Remove button selector
- **model**: Model instance
- **formId**: Form ID
- **formFields**: Array of form fields

## Benefits
✅ No external dependency
✅ Full control over code
✅ Easier to customize
✅ No Symfony compatibility issues
✅ PHP 8.1+ compatible

## Files Updated
- `backend/views/menu-option/_form.php`
- `backend/views/menu-option/_form-item.php`

## Removal
Sekarang bisa remove `wbraganca/yii2-dynamicform` dari composer.json jika tidak ada file lain yang menggunakannya.

```bash
composer remove wbraganca/yii2-dynamicform
```

## Testing
Buka halaman menu option untuk test dynamic form:
```
/backend/menu-option/create
/backend/menu-option/update?id=1
```

Pastikan:
- ✓ Add button berfungsi
- ✓ Remove button berfungsi
- ✓ Validation tetap jalan
- ✓ Data save dengan benar

---
Created: December 18, 2025
Author: Ikiwae Dev Team
