diff --git a/src/Form/Filters/Constraints/NumberConstraintType.php b/src/Form/Filters/Constraints/NumberConstraintType.php index 2f006ecf..2dfde4de 100644 --- a/src/Form/Filters/Constraints/NumberConstraintType.php +++ b/src/Form/Filters/Constraints/NumberConstraintType.php @@ -18,6 +18,14 @@ class NumberConstraintType extends AbstractType $resolver->setDefaults([ 'compound' => true, 'data_class' => NumberConstraint::class, + 'text_suffix' => '', // An suffix which is attached as text-append to the input group. This can for example be used for units + + 'min' => null, + 'max' => null, + 'step' => 'any', + + 'value1_options' => [], // Options for the first value input + 'value2_options' => [], // Options for the second value input ]); } @@ -33,25 +41,40 @@ class NumberConstraintType extends AbstractType 'BETWEEN' => 'BETWEEN', ]; - $builder->add('value1', NumberType::class, [ + $builder->add('value1', NumberType::class, array_merge_recursive([ 'label' => 'filter.number_constraint.value1', 'attr' => [ 'placeholder' => 'filter.number_constraint.value1', + 'max' => $options['max'], + 'min' => $options['min'], + 'step' => $options['step'], ], 'required' => false, 'html5' => true, - ]); - $builder->add('value2', NumberType::class, [ + ], $options['value1_options'])); + + $builder->add('value2', NumberType::class, array_merge_recursive([ 'label' => 'filter.number_constraint.value2', 'attr' => [ 'placeholder' => 'filter.number_constraint.value2', + 'max' => $options['max'], + 'min' => $options['min'], + 'step' => $options['step'], ], 'required' => false, 'html5' => true, - ]); + ], $options['value2_options'])); + $builder->add('operator', ChoiceType::class, [ 'label' => 'filter.number_constraint.operator', 'choices' => $choices, ]); } + + public function buildView(FormView $view, FormInterface $form, array $options) + { + parent::buildView($view, $form, $options); + + $view->vars['text_suffix'] = $options['text_suffix']; + } } \ No newline at end of file diff --git a/src/Form/Filters/PartFilterType.php b/src/Form/Filters/PartFilterType.php index 1129e9dd..3a609b95 100644 --- a/src/Form/Filters/PartFilterType.php +++ b/src/Form/Filters/PartFilterType.php @@ -29,11 +29,13 @@ class PartFilterType extends AbstractType ]); $builder->add('needsReview', BooleanConstraintType::class, [ - 'label' => 'part.edit.needs_review' + 'label' => 'part.edit.needs_review' ]); $builder->add('mass', NumberConstraintType::class, [ - 'label' => 'part.edit.mass' + 'label' => 'part.edit.mass', + 'text_suffix' => 'g', + 'min' => 0, ]); $builder->add('submit', SubmitType::class, [ diff --git a/templates/Form/FilterTypesLayout.html.twig b/templates/Form/FilterTypesLayout.html.twig index 9db0c3bd..b49a79d0 100644 --- a/templates/Form/FilterTypesLayout.html.twig +++ b/templates/Form/FilterTypesLayout.html.twig @@ -1,7 +1,11 @@ {% block number_constraint_widget %}
- {{ form_widget(form.operator) }} + {{ form_widget(form.operator, {"attr": {"class": "form-select"}}) }} {{ form_widget(form.value1) }} + AND {{ form_widget(form.value2) }} + {% if form.vars["text_suffix"] %} + {{ form.vars["text_suffix"] }} + {% endif %}
{% endblock %} \ No newline at end of file