From 54918e9deb670b2d279a10c95aa19ae7e11c16fd Mon Sep 17 00:00:00 2001 From: jlukic Date: Mon, 20 Jul 2015 13:32:32 -0400 Subject: [PATCH] #2573, refactoring add option value. Adds remove option value when deselected. Consolidated checks into has conditions --- src/definitions/modules/dropdown.js | 63 ++++++++++++++++++++++++----- 1 file changed, 52 insertions(+), 11 deletions(-) diff --git a/src/definitions/modules/dropdown.js b/src/definitions/modules/dropdown.js index 644224b50..f7cd5ed35 100644 --- a/src/definitions/modules/dropdown.js +++ b/src/definitions/modules/dropdown.js @@ -309,15 +309,18 @@ $.fn.dropdown = function(parameters) { .html( templates.dropdown(selectValues) ) .insertBefore($input) ; + if($input.hasClass(className.multiple)) { + $input.prop('multiple', true); + } + if($input.is('[multiple]')) { + module.set.multiple(); + } $input .removeAttr('class') .detach() .prependTo($module) ; } - if($input.is('[multiple]')) { - module.set.multiple(); - } module.refresh(); }, menu: function(values) { @@ -1449,8 +1452,8 @@ $.fn.dropdown = function(parameters) { if(value === '') { return ''; } - return (!$input.is('select') && module.is.multiple()) - ? typeof value == 'string' + return ( !module.has.selectInput() && module.is.multiple() ) + ? (typeof value == 'string') // delimited string ? value.split(settings.delimiter) : '' : value @@ -2091,8 +2094,8 @@ $.fn.dropdown = function(parameters) { } } - if( $input.is('select') && (settings.allowAdditions || settings.apiSettings) ) { - module.debug('Adding an option to the select before setting the value', value); + if( module.is.single() && module.has.selectInput() && module.can.extendSelect() ) { + module.debug('Adding user option', value); module.add.optionValue(value); } @@ -2266,8 +2269,13 @@ $.fn.dropdown = function(parameters) { selectObserver.disconnect(); module.verbose('Temporarily disconnecting mutation observer', value); } + if( module.is.single() ) { + module.verbose('Removing previous user addition'); + $input.find('option.' + className.addition).remove(); + } $('