diff --git a/chosen.admin.inc b/chosen.admin.inc index 5c53af4..3f3c0eb 100644 --- a/chosen.admin.inc +++ b/chosen.admin.inc @@ -33,6 +33,15 @@ function chosen_admin_settings($form, &$form_state) { '#default_value' => variable_get('chosen_minimum_width', 200), '#description' => t('The minimum width of the Chosen widget.'), ); + $form['chosen_minimum_window_width'] = array( + '#type' => 'textfield', + '#title' => t('Minimum window width'), + '#field_suffix' => 'px', + '#required' => TRUE, + '#size' => 3, + '#default_value' => variable_get('chosen_minimum_window_width', 0), + '#description' => t('The minimun width for the chosen plugin to be executed. Good for responsive sites 0 = always on'), + ); $form['chosen_jquery_selector'] = array( '#type' => 'textarea', diff --git a/chosen.js b/chosen.js index 19ee33c..d9fae7b 100644 --- a/chosen.js +++ b/chosen.js @@ -2,14 +2,15 @@ Drupal.behaviors.chosen = { attach: function(context, setings) { var minWidth = settings.chosen.minimum_width; + var minWindowWidth = Drupal.settings.chosen.minimum_window_width; //define options var options = {}; options.search_contains = settings.chosen.search_contains; options.placeholder_text_multiple = settings.chosen.placeholder_text_multiple; options.placeholder_text_single = settings.chosen.placeholder_text_single; options.no_results_text = settings.chosen.no_results_text; - - $(settings.chosen.selector, context) + if($(window).width()>minWindowWidth){ + $(settings.chosen.selector, context) .not('#field-ui-field-overview-form select, #field-ui-display-overview-form select') //disable chosen on field ui .each(function() { if ($(this).find('option').size() >= settings.chosen.minimum) { @@ -18,7 +19,7 @@ }).chosen(options); } }); - +} //enable Chosen for widgets $('.chosen-widget', context).each(function() { $(this).css({ diff --git a/chosen.module b/chosen.module index d09a564..e1d0c77 100644 --- a/chosen.module +++ b/chosen.module @@ -23,6 +23,7 @@ function chosen_init() { 'selector' => variable_get('chosen_jquery_selector', 'select:visible'), 'minimum' => variable_get('chosen_minimum', 20), 'minimum_width' => variable_get('chosen_minimum_width', 200), + 'minimum_window_width' => variable_get('chosen_minimum_window_width', 0), 'search_contains' => (variable_get('chosen_search_contains', FALSE)) ? TRUE : FALSE, 'placeholder_text_multiple' => t(variable_get('chosen_placeholder_text_multiple', 'Choose some options')), 'placeholder_text_single' => t(variable_get('chosen_placeholder_text_single', 'Choose an option')),