Explorar el Código

Add icons to remove filters

Emmanuel Vella hace 10 años
padre
commit
d8776292f7
Se han modificado 2 ficheros con 31 adiciones y 9 borrados
  1. 18 7
      Resources/public/Admin.js
  2. 13 2
      Resources/views/CRUD/base_list.html.twig

+ 18 - 7
Resources/public/Admin.js

@@ -251,31 +251,42 @@ var Admin = {
 
             var filters_container = jQuery('#' + jQuery(e.currentTarget).attr('filter-container'));
 
-            if (jQuery('div.form-group:visible', filters_container).length == 0) {
+            if (jQuery('div[sonata-filter="true"]:visible', filters_container).length == 0) {
                 jQuery(filters_container).slideDown();
             }
 
-            var target = jQuery('div[id="' + jQuery(e.currentTarget).attr('filter-target') + '"]', filters_container);
+            var targetSelector = jQuery(e.currentTarget).attr('filter-target'),
+                target = jQuery('div[id="' + targetSelector + '"]', filters_container),
+                filterToggler = jQuery('i', '.sonata-toggle-filter[filter-target="' + targetSelector + '"]')
+            ;
 
             if (jQuery(target).is(":visible")) {
-                jQuery('i', this).removeClass('fa-check-square-o');
-                jQuery('i', this).addClass('fa-square-o');
+                filterToggler
+                    .removeClass('fa-check-square-o')
+                    .addClass('fa-square-o')
+                ;
 
                 target.hide();
 
             } else {
-                jQuery('i', this).removeClass('fa-square-o');
-                jQuery('i', this).addClass('fa-check-square-o');
+                filterToggler
+                    .removeClass('fa-square-o')
+                    .addClass('fa-check-square-o')
+                ;
 
                 target.show();
             }
 
-            if (jQuery('div.form-group:visible', filters_container).length > 0) {
+            if (jQuery('div[sonata-filter="true"]:visible', filters_container).length > 0) {
                 jQuery(filters_container).slideDown();
             } else {
                 jQuery(filters_container).slideUp();
             }
         });
+
+        jQuery('.sonata-filter-form', subject).on('submit', function () {
+            jQuery(this).find(':input:hidden:not([type="hidden"])').val('');
+        });
     },
 
     /**

+ 13 - 2
Resources/views/CRUD/base_list.html.twig

@@ -188,7 +188,10 @@ file that was distributed with this source code.
         <ul class="nav navbar-nav navbar-right">
 
             <li class="dropdown sonata-actions">
-                <a href="#" class="dropdown-toggle sonata-ba-action" data-toggle="dropdown">{{ 'link_filters'|trans({}, 'SonataAdminBundle') }} <b class="caret"></b></a>
+                <a href="#" class="dropdown-toggle sonata-ba-action" data-toggle="dropdown">
+                    <i class="fa fa-filter"></i>
+                    {{ 'link_filters'|trans({}, 'SonataAdminBundle') }} <b class="caret"></b>
+                </a>
 
                 <ul class="dropdown-menu" role="menu">
                     {% for filter in admin.datagrid.filters if (filter.options['show_filter'] is sameas(true) or filter.options['show_filter'] is null) %}
@@ -219,7 +222,7 @@ file that was distributed with this source code.
                                 {% for filter in admin.datagrid.filters %}
                                     <div class="form-group" id="filter-{{ admin.uniqid }}-{{ filter.name }}" sonata-filter="{{ (filter.options['show_filter'] is sameas(true) or filter.options['show_filter'] is null) ? 'true' : 'false' }}" style="display: {% if (filter.isActive() and filter.options['show_filter'] is null) or (filter.options['show_filter'] is sameas(true)) %}block{% else %}none{% endif %}">
                                         {% if filter.label is not sameas(false) %}
-                                        <label for="{{ form.children[filter.formName].children['value'].vars.id }}" class="col-sm-4 control-label">{{ admin.trans(filter.label, {}, filter.translationDomain) }}</label>
+                                        <label for="{{ form.children[filter.formName].children['value'].vars.id }}" class="col-sm-3 control-label">{{ admin.trans(filter.label, {}, filter.translationDomain) }}</label>
                                         {% endif %}
                                         {% set attr = form.children[filter.formName].children['type'].vars.attr|default({}) %}
                                         {#{% set attr = attr|merge({'class': (attr.class|default('') ~ ' sonata-filter-option')|trim}) %}#}
@@ -231,6 +234,14 @@ file that was distributed with this source code.
                                         <div class="col-sm-4">
                                             {{ form_widget(form.children[filter.formName].children['value']) }}
                                         </div>
+
+                                        <div class="col-sm-1">
+                                            <label class="control-label">
+                                                <a href="#" class="sonata-toggle-filter sonata-ba-action" filter-target="filter-{{ admin.uniqid }}-{{ filter.name }}" filter-container="filter-container-{{ admin.uniqid() }}">
+                                                    <i class="fa fa-minus-circle"></i>
+                                                </a>
+                                            </label>
+                                        </div>
                                     </div>
                                 {% endfor %}
                             </div>