<?php

namespace SilverStripe\UserForms\FormField;

use SilverStripe\UserForms\Model\EditableFormField\EditableFieldGroupEnd;
use SilverStripe\UserForms\Model\EditableFormField;

/**
 * Front end composite field for userforms
 */
class UserFormsGroupField extends UserFormsCompositeField
{
    public function __construct($children = null)
    {
        parent::__construct($children);
        $this->setTag('fieldset');
    }

    public function getLegend()
    {
        // Legend defaults to title
        return parent::getLegend() ?: $this->Title();
    }

    public function processNext(EditableFormField $field)
    {
        // When ending a group, jump up one level
        if ($field instanceof EditableFieldGroupEnd) {
            return $this->getParent();
        }

        // Otherwise behave as per normal composite field
        return parent::processNext($field);
    }
}