diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index fc8a82ee5..86da326c6 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -24,6 +24,7 @@ - **Accordion** - Added missing notation for accordion docs #2812 - **Container** - Fix issue with `fluid container` being `100% + gutter` at mobile resolution (causing overflow) - **Dropdown** - Remove use of `trim` which causes issues IE 11 and below #2806 +- **Dropdown** - Fixes issues with setting "" (empty quote) values when `placeholder: false` is used. Fixes issues with using `clear` and `restore defaults` without placeholders. #2637 - **Embed** - Remove accidental `console.log` statements in js #2760 - **Form / Input** - Fixes `::placeholder` text color for `ui error input`, modifies form error placeholder color to distinguish from form value error color #2786 - **Form** - Date input and other special input in chrome now are the same height as normal input (adds custom vendor shadow dom styling) #2704 diff --git a/src/definitions/modules/dropdown.js b/src/definitions/modules/dropdown.js index b4680dfbc..0c6e1019d 100644 --- a/src/definitions/modules/dropdown.js +++ b/src/definitions/modules/dropdown.js @@ -1372,6 +1372,15 @@ $.fn.dropdown = function(parameters) { id: function() { return id; }, + defaultText: function() { + return $module.data(metadata.defaultText); + }, + defaultValue: function() { + return $module.data(metadata.defaultValue); + }, + placeholderText: function() { + return $module.data(metadata.placeholderText) || ''; + }, text: function() { return $text.text(); }, @@ -1637,7 +1646,7 @@ $.fn.dropdown = function(parameters) { ; shouldSearch = (isMultiple) ? (value.length > 0) - : (value !== undefined && value !== '' && value !== null) + : (value !== undefined && value !== null) ; isMultiple = (module.is.multiple() && $.isArray(value)); strict = (value === '' || value === 0) @@ -1722,15 +1731,21 @@ $.fn.dropdown = function(parameters) { }, defaultText: function() { var - defaultText = $module.data(metadata.defaultText) + defaultText = module.get.defaultText(), + placeholderText = module.get.placeholderText ; - module.debug('Restoring default text', defaultText); - module.set.text(defaultText); - $text.addClass(className.placeholder); + if(defaultText === placeholderText) { + module.debug('Restoring default placeholder text', defaultText); + module.set.placeholderText(defaultText); + } + else { + module.debug('Restoring default text', defaultText); + module.set.text(defaultText); + } }, defaultValue: function() { var - defaultValue = $module.data(metadata.defaultValue) + defaultValue = module.get.defaultValue() ; if(defaultValue !== undefined) { module.debug('Restoring default value', defaultValue); @@ -1842,7 +1857,7 @@ $.fn.dropdown = function(parameters) { var text ; - if($text.hasClass(className.placeholder)) { + if(settings.placeholder !== false && $text.hasClass(className.placeholder)) { text = module.get.text(); module.verbose('Saving placeholder text as', text); $module.data(metadata.placeholderText, text); @@ -1876,8 +1891,8 @@ $.fn.dropdown = function(parameters) { scrollPage: function(direction, $selectedItem) { var - $selectedItem = $selectedItem || module.get.selectedItem(), - $menu = $selectedItem.closest(selector.menu), + $currentItem = $selectedItem || module.get.selectedItem(), + $menu = $currentItem.closest(selector.menu), menuHeight = $menu.outerHeight(), currentScroll = $menu.scrollTop(), itemHeight = $item.eq(0).outerHeight(), @@ -1892,8 +1907,8 @@ $.fn.dropdown = function(parameters) { elementIndex ; elementIndex = (direction == 'up') - ? $selectableItem.index($selectedItem) - itemsPerPage - : $selectableItem.index($selectedItem) + itemsPerPage + ? $selectableItem.index($currentItem) - itemsPerPage + : $selectableItem.index($currentItem) + itemsPerPage ; isWithinRange = (direction == 'up') ? (elementIndex >= 0) @@ -1907,7 +1922,7 @@ $.fn.dropdown = function(parameters) { ; if($nextSelectedItem.length > 0) { module.debug('Scrolling page', direction, $nextSelectedItem); - $selectedItem + $currentItem .removeClass(className.selected) ; $nextSelectedItem @@ -1949,12 +1964,10 @@ $.fn.dropdown = function(parameters) { $module.addClass(className.loading); }, placeholderText: function(text) { - text = text || $module.data(metadata.placeholderText); - if(text) { - module.debug('Restoring placeholder text'); - module.set.text(text); - $text.addClass(className.placeholder); - } + text = text || module.get.placeholderText(); + module.debug('Setting placeholder text', text); + module.set.text(text); + $text.addClass(className.placeholder); }, tabbable: function() { if( module.has.search() ) { @@ -2037,10 +2050,12 @@ $.fn.dropdown = function(parameters) { } } else { + if(text !== module.get.placeholderText()) { + $text.removeClass(className.placeholder); + } module.debug('Changing text', text, $text); $text .removeClass(className.filtered) - .removeClass(className.placeholder) ; if(settings.preserveHTML) { $text.html(text);