Browse Source

Adds ability to have filter menus inside normal dropdowns

pull/1129/head
jlukic 10 years ago
parent
commit
d15a5fd4ee
2 changed files with 28 additions and 14 deletions
  1. 21
      src/definitions/modules/dropdown.js
  2. 21
      src/definitions/modules/dropdown.less

21
src/definitions/modules/dropdown.js

@ -191,10 +191,14 @@ $.fn.dropdown = function(parameters) {
.on('keydown' + eventNamespace, module.event.keydown) .on('keydown' + eventNamespace, module.event.keydown)
; ;
if( module.is.searchable() ) { if( module.is.searchable() ) {
$search
.on( module.get.inputEvent(), module.event.input)
;
}
if( module.is.searchSelection() ) {
$search $search
.on('focus' + eventNamespace, module.event.searchFocus) .on('focus' + eventNamespace, module.event.searchFocus)
.on('blur' + eventNamespace, module.event.blur) .on('blur' + eventNamespace, module.event.blur)
.on( module.get.inputEvent(), module.event.input)
; ;
} }
else { else {
@ -208,7 +212,7 @@ $.fn.dropdown = function(parameters) {
}, },
touchEvents: function() { touchEvents: function() {
module.debug('Touch device detected binding touch events'); module.debug('Touch device detected binding touch events');
if( !module.is.searchable() ) {
if( !module.is.searchSelection() ) {
$module $module
.on('touchstart' + eventNamespace, module.event.test.toggle) .on('touchstart' + eventNamespace, module.event.test.toggle)
; ;
@ -220,7 +224,7 @@ $.fn.dropdown = function(parameters) {
}, },
mouseEvents: function() { mouseEvents: function() {
module.verbose('Mouse detected binding mouse events'); module.verbose('Mouse detected binding mouse events');
if( !module.is.searchable() ) {
if( !module.is.searchSelection() ) {
if(settings.on == 'click') { if(settings.on == 'click') {
$module $module
.on('click' + eventNamespace, module.event.test.toggle) .on('click' + eventNamespace, module.event.test.toggle)
@ -280,6 +284,7 @@ $.fn.dropdown = function(parameters) {
fullTextRegExp = new RegExp(searchTerm, 'i'), fullTextRegExp = new RegExp(searchTerm, 'i'),
$filteredItems $filteredItems
; ;
console.log(query);
$item $item
.each(function(){ .each(function(){
var var
@ -346,6 +351,7 @@ $.fn.dropdown = function(parameters) {
var var
query = $search.val() query = $search.val()
; ;
console.log($search, query);
$text.addClass(className.filtered); $text.addClass(className.filtered);
module.filter(query); module.filter(query);
}, },
@ -902,6 +908,9 @@ $.fn.dropdown = function(parameters) {
searchable: function() { searchable: function() {
return ($search.size() > 0); return ($search.size() > 0);
}, },
searchSelection: function() {
return ( module.is.searchable() && $search.parent().is($module) );
},
selection: function() { selection: function() {
return $module.hasClass(className.selection); return $module.hasClass(className.selection);
}, },
@ -1322,8 +1331,8 @@ $.fn.dropdown.settings = {
onHide : function(){}, onHide : function(){},
error : { error : {
action : 'You called a dropdown action that was not defined',
method : 'The method you called is not defined.',
action : 'You called a dropdown action that was not defined',
method : 'The method you called is not defined.',
transition : 'The requested transition was not found' transition : 'The requested transition was not found'
}, },
@ -1338,7 +1347,7 @@ $.fn.dropdown.settings = {
dropdown : '.ui.dropdown', dropdown : '.ui.dropdown',
text : '> .text:not(.icon)', text : '> .text:not(.icon)',
input : '> input[type="hidden"], > select', input : '> input[type="hidden"], > select',
search : '> .search, .menu > .search',
search : '> .search, .menu > .search > input, .menu > input.search',
menu : '.menu', menu : '.menu',
item : '.item' item : '.item'
}, },

21
src/definitions/modules/dropdown.less

@ -373,14 +373,6 @@ select.ui.dropdown {
opacity: @selectionVisibleIconOpacity; opacity: @selectionVisibleIconOpacity;
} }
/* Filtered Item */
.ui.selection.dropdown .filtered.text {
visibility: hidden;
}
.ui.selection.dropdown .filtered.item {
display: none;
}
/* Active Item */ /* Active Item */
.ui.selection.active.dropdown .text:not(.default), .ui.selection.active.dropdown .text:not(.default),
.ui.selection.visible.dropdown .text:not(.default) { .ui.selection.visible.dropdown .text:not(.default) {
@ -473,6 +465,19 @@ select.ui.dropdown {
} }
/*--------------------
Search Filtered
----------------------*/
/* Filtered Item */
.ui.dropdown .filtered.text {
visibility: hidden;
}
.ui.dropdown .filtered.item {
display: none;
}
/*-------------------- /*--------------------
Error Error
----------------------*/ ----------------------*/

Loading…
Cancel
Save