sonata-project / SonataAdminBundle

The missing Symfony Admin Generator
https://docs.sonata-project.org/projects/SonataAdminBundle
MIT License
2.11k stars 1.26k forks source link

ChoiceFieldMaskType with expanded: true does not work well when icheck is disabled #8104

Closed goetas closed 12 months ago

goetas commented 12 months ago

Subject

The sonata_type_choice_field_mask_widget block in src/Resources/views/Form/form_admin_fields.html.twig (https://github.com/sonata-project/SonataAdminBundle/blob/0bad35954a517a6b1197ef62c00eccbaea65881f/src/Resources/views/Form/form_admin_fields.html.twig#L476) assumes that the user has always icheck enabled when the expanded option is true.

When icheck is disabled, the ifChecked event is never triggered.

The block of code

    {% if expanded %}
        {% set js_selector = '#' ~ main_form_name ~ '_' ~ name ~ ' input' %}
        {% set js_event = 'ifChecked' %}
    {% else %}
        {% set js_selector = '#' ~ main_form_name ~ '_' ~ name %}
        {% set js_event = 'change' %}
    {% endif %}

should be something like

    {% if expanded and icheck_enabled %}
        {% set js_selector = '#' ~ main_form_name ~ '_' ~ name ~ ' input' %}
        {% set js_event = 'ifChecked' %}
    {% elseif expanded %}
        {% set js_selector = '#' ~ main_form_name ~ '_' ~ name ~ ' input' %}
        {% set js_event = 'change' %}
    {% else %}
        {% set js_selector = '#' ~ main_form_name ~ '_' ~ name %}
        {% set js_event = 'change' %}
    {% endif %}

(i'm not sure how to get in there the icheck_enabled parameter...)

VincentLanglet commented 12 months ago

Hi @goetas, are you ok doing the PR ?

There is

{% set _use_icheck = sonata_config.getOption('use_icheck') %}

somewhere else in the code, so sonata_config.getOption should help you for the check you're looking for.

goetas commented 12 months ago

Here you go https://github.com/sonata-project/SonataAdminBundle/pull/8105