feat: special agreements for disposition

This commit is contained in:
Björn Fromme
2024-04-04 13:06:35 +02:00
parent 4d1ea7aad7
commit 26239488ba
19 changed files with 310 additions and 31 deletions
+2 -1
View File
@@ -132,7 +132,8 @@ class AssignmentType extends AbstractType
'label' => 'Anmerkungen',
'required' => false,
'attr' => [
'rows' => 3,
'data-controller' => 'textarea-autosize',
'data-action' => 'textarea-autosize#resize'
],
])
->add('pickup', ChoiceType::class, [
+14
View File
@@ -8,6 +8,8 @@ use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
use Symfony\Component\OptionsResolver\OptionsResolver;
class DocumentCheckType extends AbstractType
@@ -26,6 +28,18 @@ class DocumentCheckType extends AbstractType
'rows' => 3,
],
])
->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) {
/** @var DocumentCheckDto $data */
$data = $event->getData();
$upload = $data->getUpload();
if (Upload::TYPE_INVOICE === $upload->getType()) {
$event->getForm()->add('specialAgreements', TextareaType::class, [
'label' => 'zusätzliche Absprache',
'required' => false,
]);
}
})
;
}
@@ -0,0 +1,39 @@
<?php
namespace App\Form\Extension;
use Symfony\Component\Form\AbstractTypeExtension;
use Symfony\Component\Form\Extension\Core\Type\FormType;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\Form\FormView;
use Symfony\Component\OptionsResolver\OptionsResolver;
class ModalSubmitExtension extends AbstractTypeExtension
{
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'hx_post' => null,
'hx_target' => '#htmx-modal',
'hx_swap' => 'outerHTML',
]);
}
public function buildView(FormView $view, FormInterface $form, array $options): void
{
if (null !== $options['hx_post']) {
$attr = [
'hx-post' => $options['hx_post'],
'hx-target' => $options['hx_target'],
'hx-swap' => $options['hx_swap'],
'hx-indicator' => '#htmx-modal-indicator',
];
$view->vars['attr'] = array_merge($view->vars['attr'], $attr);
}
}
public static function getExtendedTypes(): iterable
{
return [FormType::class];
}
}
-1
View File
@@ -4,7 +4,6 @@ namespace App\Form;
use App\Entity\Faq;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
+31
View File
@@ -0,0 +1,31 @@
<?php
namespace App\Form;
use App\Entity\Disposition;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class SpecialAgreementsType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder->add('specialAgreements', TextareaType::class, [
'label' => 'zusätzliche Absprache',
'required' => false,
'attr' => [
'data-controller' => 'textarea-autosize',
'data-action' => 'textarea-autosize#resize'
]
]);
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => Disposition::class,
]);
}
}