less-rails-semantic_ui 1.7.3.0 → 1.8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/assets/javascripts/semantic_ui/definitions/behaviors/api.js +22 -11
- data/assets/javascripts/semantic_ui/definitions/behaviors/form.js +259 -43
- data/assets/javascripts/semantic_ui/definitions/modules/checkbox.js +1 -1
- data/assets/javascripts/semantic_ui/definitions/modules/dropdown.js +204 -105
- data/assets/javascripts/semantic_ui/definitions/modules/popup.js +4 -3
- data/assets/javascripts/semantic_ui/definitions/modules/search.js +310 -152
- data/assets/javascripts/semantic_ui/definitions/modules/sidebar.js +18 -7
- data/assets/javascripts/semantic_ui/definitions/modules/sticky.js +1 -1
- data/assets/javascripts/semantic_ui/definitions/modules/transition.js +35 -23
- data/assets/stylesheets/semantic_ui/definitions/collections/form.less +2 -2
- data/assets/stylesheets/semantic_ui/definitions/collections/grid.less +30 -0
- data/assets/stylesheets/semantic_ui/definitions/collections/menu.less +13 -11
- data/assets/stylesheets/semantic_ui/definitions/elements/button.less +16 -2
- data/assets/stylesheets/semantic_ui/definitions/elements/header.less +70 -31
- data/assets/stylesheets/semantic_ui/definitions/elements/label.less +3 -3
- data/assets/stylesheets/semantic_ui/definitions/elements/list.less +8 -18
- data/assets/stylesheets/semantic_ui/definitions/modules/checkbox.less +54 -27
- data/assets/stylesheets/semantic_ui/definitions/modules/modal.less +2 -1
- data/assets/stylesheets/semantic_ui/definitions/modules/popup.less +5 -0
- data/assets/stylesheets/semantic_ui/definitions/modules/sidebar.less +1 -0
- data/assets/stylesheets/semantic_ui/definitions/modules/transition.less +0 -5
- data/assets/stylesheets/semantic_ui/themes/default/collections/menu.variables +7 -5
- data/assets/stylesheets/semantic_ui/themes/default/collections/table.variables +1 -1
- data/assets/stylesheets/semantic_ui/themes/default/elements/button.variables +2 -2
- data/assets/stylesheets/semantic_ui/themes/default/elements/header.variables +20 -9
- data/assets/stylesheets/semantic_ui/themes/default/elements/label.variables +5 -3
- data/assets/stylesheets/semantic_ui/themes/default/globals/site.variables +1 -0
- data/assets/stylesheets/semantic_ui/themes/default/modules/accordion.variables +5 -6
- data/assets/stylesheets/semantic_ui/themes/default/modules/modal.variables +3 -2
- data/assets/stylesheets/semantic_ui/themes/default/modules/popup.variables +3 -3
- data/assets/stylesheets/semantic_ui/themes/default/modules/transition.overrides +690 -222
- data/assets/stylesheets/semantic_ui/themes/default/modules/transition.variables +1 -1
- data/lib/less/rails/semantic_ui/version.rb +1 -1
- metadata +3 -3
| @@ -73,7 +73,14 @@ $.fn.dropdown = function(parameters) { | |
| 73 73 |  | 
| 74 74 | 
             
                    initialize: function() {
         | 
| 75 75 | 
             
                      module.debug('Initializing dropdown', settings);
         | 
| 76 | 
            -
             | 
| 76 | 
            +
             | 
| 77 | 
            +
                      if( module.is.alreadySetup() ) {
         | 
| 78 | 
            +
                        module.error(error.alreadySetup);
         | 
| 79 | 
            +
                      }
         | 
| 80 | 
            +
                      else {
         | 
| 81 | 
            +
                        module.setup.layout();
         | 
| 82 | 
            +
                      }
         | 
| 83 | 
            +
             | 
| 77 84 | 
             
                      module.save.defaults();
         | 
| 78 85 | 
             
                      module.set.selected();
         | 
| 79 86 |  | 
| @@ -104,6 +111,9 @@ $.fn.dropdown = function(parameters) { | |
| 104 111 | 
             
                        .off(eventNamespace)
         | 
| 105 112 | 
             
                        .removeData(moduleNamespace)
         | 
| 106 113 | 
             
                      ;
         | 
| 114 | 
            +
                      $menu
         | 
| 115 | 
            +
                        .off(eventNamespace)
         | 
| 116 | 
            +
                      ;
         | 
| 107 117 | 
             
                      $document
         | 
| 108 118 | 
             
                        .off(elementNamespace)
         | 
| 109 119 | 
             
                      ;
         | 
| @@ -112,8 +122,14 @@ $.fn.dropdown = function(parameters) { | |
| 112 122 | 
             
                    observeChanges: function() {
         | 
| 113 123 | 
             
                      if('MutationObserver' in window) {
         | 
| 114 124 | 
             
                        observer = new MutationObserver(function(mutations) {
         | 
| 115 | 
            -
                          module. | 
| 116 | 
            -
             | 
| 125 | 
            +
                          if( module.is.selectMutation(mutations) ) {
         | 
| 126 | 
            +
                            module.debug('<select> modified, recreating menu');
         | 
| 127 | 
            +
                            module.setup.select();
         | 
| 128 | 
            +
                          }
         | 
| 129 | 
            +
                          else {
         | 
| 130 | 
            +
                            module.debug('DOM tree modified, updating selector cache');
         | 
| 131 | 
            +
                            module.refresh();
         | 
| 132 | 
            +
                          }
         | 
| 117 133 | 
             
                        });
         | 
| 118 134 | 
             
                        observer.observe(element, {
         | 
| 119 135 | 
             
                          childList : true,
         | 
| @@ -162,24 +178,27 @@ $.fn.dropdown = function(parameters) { | |
| 162 178 | 
             
                      },
         | 
| 163 179 | 
             
                      select: function() {
         | 
| 164 180 | 
             
                        var
         | 
| 165 | 
            -
                          selectValues | 
| 181 | 
            +
                          selectValues  = module.get.selectValues()
         | 
| 166 182 | 
             
                        ;
         | 
| 167 183 | 
             
                        module.debug('Dropdown initialized on a select', selectValues);
         | 
| 168 | 
            -
                         | 
| 169 | 
            -
             | 
| 170 | 
            -
                         | 
| 171 | 
            -
             | 
| 184 | 
            +
                        if( $module.is('select') ) {
         | 
| 185 | 
            +
                          $input = $module;
         | 
| 186 | 
            +
                        }
         | 
| 187 | 
            +
                        // see if select is placed correctly already
         | 
| 188 | 
            +
                        if($input.parent(selector.dropdown).length > 0) {
         | 
| 189 | 
            +
                          module.debug('UI dropdown already exists. Creating dropdown menu only');
         | 
| 172 190 | 
             
                          $module = $input.closest(selector.dropdown);
         | 
| 173 | 
            -
                           | 
| 174 | 
            -
             | 
| 191 | 
            +
                          $menu   = $module.children(selector.menu);
         | 
| 192 | 
            +
                          if($menu.length === 0) {
         | 
| 193 | 
            +
                            $menu = $('<div />')
         | 
| 175 194 | 
             
                              .addClass(className.menu)
         | 
| 176 | 
            -
                              .html( settings.templates.menu( selectValues ))
         | 
| 177 195 | 
             
                              .appendTo($module)
         | 
| 178 196 | 
             
                            ;
         | 
| 179 197 | 
             
                          }
         | 
| 198 | 
            +
                          $menu.html( settings.templates.menu( selectValues ));
         | 
| 180 199 | 
             
                        }
         | 
| 181 200 | 
             
                        else {
         | 
| 182 | 
            -
                          module.debug('Creating entire dropdown from  | 
| 201 | 
            +
                          module.debug('Creating entire dropdown from select');
         | 
| 183 202 | 
             
                          $module = $('<div />')
         | 
| 184 203 | 
             
                            .attr('class', $input.attr('class') )
         | 
| 185 204 | 
             
                            .addClass(className.selection)
         | 
| @@ -197,9 +216,14 @@ $.fn.dropdown = function(parameters) { | |
| 197 216 | 
             
                    },
         | 
| 198 217 |  | 
| 199 218 | 
             
                    refresh: function() {
         | 
| 219 | 
            +
                      module.verbose('Refreshing selector cache');
         | 
| 200 220 | 
             
                      $text   = $module.find(selector.text);
         | 
| 201 221 | 
             
                      $search = $module.find(selector.search);
         | 
| 202 222 | 
             
                      $input  = $module.find(selector.input);
         | 
| 223 | 
            +
                      $combo  = ($module.prev().find(selector.text).length > 0)
         | 
| 224 | 
            +
                        ? $module.prev().find(selector.text)
         | 
| 225 | 
            +
                        : $module.prev()
         | 
| 226 | 
            +
                      ;
         | 
| 203 227 | 
             
                      $menu   = $module.children(selector.menu);
         | 
| 204 228 | 
             
                      $item   = $menu.find(selector.item);
         | 
| 205 229 | 
             
                    },
         | 
| @@ -219,7 +243,10 @@ $.fn.dropdown = function(parameters) { | |
| 219 243 | 
             
                        ? callback
         | 
| 220 244 | 
             
                        : function(){}
         | 
| 221 245 | 
             
                      ;
         | 
| 222 | 
            -
                      if( module. | 
| 246 | 
            +
                      if( module.is.searchSelection() && module.is.allFiltered() ) {
         | 
| 247 | 
            +
                        return;
         | 
| 248 | 
            +
                      }
         | 
| 249 | 
            +
                      if( module.can.show() && !module.is.active() ) {
         | 
| 223 250 | 
             
                        module.debug('Showing dropdown');
         | 
| 224 251 | 
             
                        module.animate.show(function() {
         | 
| 225 252 | 
             
                          if( module.can.click() ) {
         | 
| @@ -291,7 +318,6 @@ $.fn.dropdown = function(parameters) { | |
| 291 318 | 
             
                      },
         | 
| 292 319 | 
             
                      mouseEvents: function() {
         | 
| 293 320 | 
             
                        module.verbose('Mouse detected binding mouse events');
         | 
| 294 | 
            -
             | 
| 295 321 | 
             
                        if( module.is.searchSelection() ) {
         | 
| 296 322 | 
             
                          $module
         | 
| 297 323 | 
             
                            .on('mousedown' + eventNamespace, selector.menu, module.event.menu.activate)
         | 
| @@ -465,77 +491,115 @@ $.fn.dropdown = function(parameters) { | |
| 465 491 | 
             
                      },
         | 
| 466 492 | 
             
                      keydown: function(event) {
         | 
| 467 493 | 
             
                        var
         | 
| 468 | 
            -
                          $ | 
| 469 | 
            -
                          $ | 
| 494 | 
            +
                          $currentlySelected = $item.not(className.filtered).filter('.' + className.selected).eq(0),
         | 
| 495 | 
            +
                          $activeItem        = $menu.children('.' + className.active).eq(0),
         | 
| 496 | 
            +
                          $selectedItem      = ($currentlySelected.length > 0)
         | 
| 497 | 
            +
                            ? $currentlySelected
         | 
| 498 | 
            +
                            : $activeItem,
         | 
| 499 | 
            +
                          $visibleItems = ($selectedItem.length > 0)
         | 
| 500 | 
            +
                            ? $selectedItem.siblings(':not(.' + className.filtered +')').andSelf()
         | 
| 501 | 
            +
                            : $menu.children(':not(.' + className.filtered +')'),
         | 
| 502 | 
            +
                          $subMenu      = $selectedItem.children(selector.menu),
         | 
| 503 | 
            +
                          $parentMenu   = $selectedItem.closest(selector.menu),
         | 
| 504 | 
            +
                          isSubMenuItem = $parentMenu[0] !== $menu[0],
         | 
| 505 | 
            +
                          inVisibleMenu = $parentMenu.is(':visible'),
         | 
| 470 506 | 
             
                          pressedKey    = event.which,
         | 
| 471 507 | 
             
                          keys          = {
         | 
| 472 | 
            -
                            enter | 
| 473 | 
            -
                            escape | 
| 474 | 
            -
                             | 
| 475 | 
            -
                             | 
| 508 | 
            +
                            enter      : 13,
         | 
| 509 | 
            +
                            escape     : 27,
         | 
| 510 | 
            +
                            leftArrow  : 37,
         | 
| 511 | 
            +
                            upArrow    : 38,
         | 
| 512 | 
            +
                            rightArrow : 39,
         | 
| 513 | 
            +
                            downArrow  : 40
         | 
| 476 514 | 
             
                          },
         | 
| 477 | 
            -
                           | 
| 478 | 
            -
                           | 
| 479 | 
            -
                           | 
| 515 | 
            +
                          hasSubMenu       = ($subMenu.length> 0),
         | 
| 516 | 
            +
                          hasSelectedItem  = ($selectedItem.length > 0),
         | 
| 517 | 
            +
                          lastVisibleIndex = ($visibleItems.size() - 1),
         | 
| 480 518 | 
             
                          $nextItem,
         | 
| 481 519 | 
             
                          newIndex
         | 
| 482 520 | 
             
                        ;
         | 
| 483 | 
            -
                        //  | 
| 484 | 
            -
                        if(!hasSelectedItem) {
         | 
| 485 | 
            -
                          $selectedItem   = $item.filter('.' + className.active).eq(0);
         | 
| 486 | 
            -
                          hasSelectedItem = ($selectedItem.length > 0);
         | 
| 487 | 
            -
                        }
         | 
| 488 | 
            -
                        // close shortcuts
         | 
| 489 | 
            -
                        if(pressedKey == keys.escape) {
         | 
| 490 | 
            -
                          module.verbose('Escape key pressed, closing dropdown');
         | 
| 491 | 
            -
                          module.hide();
         | 
| 492 | 
            -
                        }
         | 
| 493 | 
            -
                        // open menu
         | 
| 494 | 
            -
                        if(pressedKey == keys.downArrow) {
         | 
| 495 | 
            -
                          module.verbose('Down key pressed, showing dropdown');
         | 
| 496 | 
            -
                          module.show();
         | 
| 497 | 
            -
                        }
         | 
| 498 | 
            -
                        // result shortcuts
         | 
| 521 | 
            +
                        // visible menu keyboard shortcuts
         | 
| 499 522 | 
             
                        if(module.is.visible()) {
         | 
| 523 | 
            +
                          // enter (select or sub-menu)
         | 
| 500 524 | 
             
                          if(pressedKey == keys.enter && hasSelectedItem) {
         | 
| 501 | 
            -
                             | 
| 502 | 
            -
             | 
| 525 | 
            +
                            if(hasSubMenu && !settings.allowCategorySelection) {
         | 
| 526 | 
            +
                              module.verbose('Pressed enter on unselectable category, opening sub menu');
         | 
| 527 | 
            +
                              pressedKey = keys.rightArrow;
         | 
| 528 | 
            +
                            }
         | 
| 529 | 
            +
                            else {
         | 
| 530 | 
            +
                              module.verbose('Enter key pressed, choosing selected item');
         | 
| 531 | 
            +
                              module.event.item.click.call($selectedItem, event);
         | 
| 532 | 
            +
                            }
         | 
| 533 | 
            +
                          }
         | 
| 534 | 
            +
                          // left arrow (hide sub-menu)
         | 
| 535 | 
            +
                          if(pressedKey == keys.leftArrow) {
         | 
| 536 | 
            +
                            if(isSubMenuItem) {
         | 
| 537 | 
            +
                              module.verbose('Left key pressed, closing sub-menu');
         | 
| 538 | 
            +
                              module.animate.hide(false,  $parentMenu);
         | 
| 539 | 
            +
                              $selectedItem
         | 
| 540 | 
            +
                                .removeClass(className.selected)
         | 
| 541 | 
            +
                              ;
         | 
| 542 | 
            +
                              $parentMenu
         | 
| 543 | 
            +
                                .closest(selector.item)
         | 
| 544 | 
            +
                                  .addClass(className.selected)
         | 
| 545 | 
            +
                              ;
         | 
| 546 | 
            +
                            }
         | 
| 547 | 
            +
                            event.preventDefault();
         | 
| 548 | 
            +
                          }
         | 
| 549 | 
            +
                          // right arrow (show sub-menu)
         | 
| 550 | 
            +
                          if(pressedKey == keys.rightArrow) {
         | 
| 551 | 
            +
                            if(hasSubMenu) {
         | 
| 552 | 
            +
                              module.verbose('Right key pressed, opening sub-menu');
         | 
| 553 | 
            +
                              module.animate.show(false,  $subMenu);
         | 
| 554 | 
            +
                              $selectedItem
         | 
| 555 | 
            +
                                .removeClass(className.selected)
         | 
| 556 | 
            +
                              ;
         | 
| 557 | 
            +
                              $subMenu
         | 
| 558 | 
            +
                                .find(selector.item).eq(0)
         | 
| 559 | 
            +
                                  .addClass(className.selected)
         | 
| 560 | 
            +
                              ;
         | 
| 561 | 
            +
                            }
         | 
| 503 562 | 
             
                            event.preventDefault();
         | 
| 504 | 
            -
                            return false;
         | 
| 505 563 | 
             
                          }
         | 
| 506 | 
            -
                           | 
| 507 | 
            -
             | 
| 508 | 
            -
             | 
| 564 | 
            +
                          // up arrow (traverse menu up)
         | 
| 565 | 
            +
                          if(pressedKey == keys.upArrow) {
         | 
| 566 | 
            +
                            $nextItem = (hasSelectedItem && inVisibleMenu)
         | 
| 567 | 
            +
                              ? $selectedItem.prevAll(selector.item + ':not(.' + className.filtered + ')').eq(0)
         | 
| 568 | 
            +
                              : $item.eq(0)
         | 
| 569 | 
            +
                            ;
         | 
| 570 | 
            +
                            if($visibleItems.index( $nextItem ) < 0) {
         | 
| 571 | 
            +
                              module.verbose('Up key pressed but reached top of current menu');
         | 
| 572 | 
            +
                              return;
         | 
| 509 573 | 
             
                            }
         | 
| 510 574 | 
             
                            else {
         | 
| 511 | 
            -
                              $nextItem = $selectedItem.prevAll(selector.item + ':not(.' + className.filtered + ')').eq(0);
         | 
| 512 | 
            -
                            }
         | 
| 513 | 
            -
                            if(currentIndex !== 0) {
         | 
| 514 575 | 
             
                              module.verbose('Up key pressed, changing active item');
         | 
| 515 | 
            -
                              $ | 
| 516 | 
            -
                                .removeClass( | 
| 576 | 
            +
                              $selectedItem
         | 
| 577 | 
            +
                                .removeClass(className.selected)
         | 
| 517 578 | 
             
                              ;
         | 
| 518 579 | 
             
                              $nextItem
         | 
| 519 | 
            -
                                .addClass( | 
| 580 | 
            +
                                .addClass(className.selected)
         | 
| 520 581 | 
             
                              ;
         | 
| 521 582 | 
             
                              module.set.scrollPosition($nextItem);
         | 
| 522 583 | 
             
                            }
         | 
| 523 584 | 
             
                            event.preventDefault();
         | 
| 524 585 | 
             
                          }
         | 
| 525 | 
            -
                           | 
| 526 | 
            -
             | 
| 527 | 
            -
             | 
| 586 | 
            +
                          // down arrow (traverse menu down)
         | 
| 587 | 
            +
                          if(pressedKey == keys.downArrow) {
         | 
| 588 | 
            +
                            $nextItem = (hasSelectedItem && inVisibleMenu)
         | 
| 589 | 
            +
                              ? $nextItem = $selectedItem.nextAll(selector.item + ':not(.' + className.filtered + ')').eq(0)
         | 
| 590 | 
            +
                              : $item.eq(0)
         | 
| 591 | 
            +
                            ;
         | 
| 592 | 
            +
                            if($nextItem.length === 0) {
         | 
| 593 | 
            +
                              module.verbose('Down key pressed but reached bottom of current menu');
         | 
| 594 | 
            +
                              return;
         | 
| 528 595 | 
             
                            }
         | 
| 529 596 | 
             
                            else {
         | 
| 530 | 
            -
                              $nextItem = $selectedItem.nextAll(selector.item + ':not(.' + className.filtered + ')').eq(0);
         | 
| 531 | 
            -
                            }
         | 
| 532 | 
            -
                            if(currentIndex + 1 < $visibleItems.length ) {
         | 
| 533 597 | 
             
                              module.verbose('Down key pressed, changing active item');
         | 
| 534 598 | 
             
                              $item
         | 
| 535 | 
            -
                                .removeClass( | 
| 599 | 
            +
                                .removeClass(className.selected)
         | 
| 536 600 | 
             
                              ;
         | 
| 537 601 | 
             
                              $nextItem
         | 
| 538 | 
            -
                                .addClass( | 
| 602 | 
            +
                                .addClass(className.selected)
         | 
| 539 603 | 
             
                              ;
         | 
| 540 604 | 
             
                              module.set.scrollPosition($nextItem);
         | 
| 541 605 | 
             
                            }
         | 
| @@ -543,7 +607,19 @@ $.fn.dropdown = function(parameters) { | |
| 543 607 | 
             
                          }
         | 
| 544 608 | 
             
                        }
         | 
| 545 609 | 
             
                        else {
         | 
| 610 | 
            +
                          // enter (open menu)
         | 
| 546 611 | 
             
                          if(pressedKey == keys.enter) {
         | 
| 612 | 
            +
                            module.verbose('Enter key pressed, showing dropdown');
         | 
| 613 | 
            +
                            module.show();
         | 
| 614 | 
            +
                          }
         | 
| 615 | 
            +
                          // escape (close menu)
         | 
| 616 | 
            +
                          if(pressedKey == keys.escape) {
         | 
| 617 | 
            +
                            module.verbose('Escape key pressed, closing dropdown');
         | 
| 618 | 
            +
                            module.hide();
         | 
| 619 | 
            +
                          }
         | 
| 620 | 
            +
                          // down arrow (open menu)
         | 
| 621 | 
            +
                          if(pressedKey == keys.downArrow) {
         | 
| 622 | 
            +
                            module.verbose('Down key pressed, showing dropdown');
         | 
| 547 623 | 
             
                            module.show();
         | 
| 548 624 | 
             
                          }
         | 
| 549 625 | 
             
                        }
         | 
| @@ -581,35 +657,33 @@ $.fn.dropdown = function(parameters) { | |
| 581 657 | 
             
                      item: {
         | 
| 582 658 | 
             
                        mouseenter: function(event) {
         | 
| 583 659 | 
             
                          var
         | 
| 584 | 
            -
                            $ | 
| 585 | 
            -
                            $otherMenus | 
| 660 | 
            +
                            $subMenu    = $(this).children(selector.menu),
         | 
| 661 | 
            +
                            $otherMenus = $(this).siblings(selector.item).children(selector.menu)
         | 
| 586 662 | 
             
                          ;
         | 
| 587 | 
            -
                          if( $ | 
| 663 | 
            +
                          if( $subMenu.length > 0 ) {
         | 
| 588 664 | 
             
                            clearTimeout(module.itemTimer);
         | 
| 589 665 | 
             
                            module.itemTimer = setTimeout(function() {
         | 
| 666 | 
            +
                              module.verbose('Showing sub-menu', $subMenu);
         | 
| 590 667 | 
             
                              $.each($otherMenus, function() {
         | 
| 591 668 | 
             
                                module.animate.hide(false, $(this));
         | 
| 592 669 | 
             
                              });
         | 
| 593 | 
            -
                              module. | 
| 594 | 
            -
                              module.animate.show(false,  $currentMenu);
         | 
| 670 | 
            +
                              module.animate.show(false,  $subMenu);
         | 
| 595 671 | 
             
                            }, settings.delay.show);
         | 
| 596 672 | 
             
                            event.preventDefault();
         | 
| 597 673 | 
             
                          }
         | 
| 598 674 | 
             
                        },
         | 
| 599 | 
            -
             | 
| 600 675 | 
             
                        mouseleave: function(event) {
         | 
| 601 676 | 
             
                          var
         | 
| 602 | 
            -
                            $ | 
| 677 | 
            +
                            $subMenu = $(this).children(selector.menu)
         | 
| 603 678 | 
             
                          ;
         | 
| 604 | 
            -
                          if($ | 
| 679 | 
            +
                          if($subMenu.length > 0) {
         | 
| 605 680 | 
             
                            clearTimeout(module.itemTimer);
         | 
| 606 681 | 
             
                            module.itemTimer = setTimeout(function() {
         | 
| 607 | 
            -
                              module.verbose('Hiding sub-menu', $ | 
| 608 | 
            -
                              module.animate.hide(false,  $ | 
| 682 | 
            +
                              module.verbose('Hiding sub-menu', $subMenu);
         | 
| 683 | 
            +
                              module.animate.hide(false,  $subMenu);
         | 
| 609 684 | 
             
                            }, settings.delay.hide);
         | 
| 610 685 | 
             
                          }
         | 
| 611 686 | 
             
                        },
         | 
| 612 | 
            -
             | 
| 613 687 | 
             
                        click: function (event) {
         | 
| 614 688 | 
             
                          var
         | 
| 615 689 | 
             
                            $choice  = $(this),
         | 
| @@ -621,23 +695,17 @@ $.fn.dropdown = function(parameters) { | |
| 621 695 | 
             
                              module.remove.searchTerm();
         | 
| 622 696 | 
             
                              module.determine.selectAction(text, value);
         | 
| 623 697 | 
             
                            },
         | 
| 624 | 
            -
                             | 
| 625 | 
            -
                             | 
| 698 | 
            +
                            hasSubMenu     = ($subMenu.length > 0),
         | 
| 699 | 
            +
                            isBubbledEvent = ($subMenu.find($target).length > 0)
         | 
| 626 700 | 
             
                          ;
         | 
| 627 | 
            -
                          if( | 
| 628 | 
            -
                            return false;
         | 
| 629 | 
            -
                          }
         | 
| 630 | 
            -
                          if(!openingSubMenu || settings.allowCategorySelection) {
         | 
| 701 | 
            +
                          if(!isBubbledEvent && (!hasSubMenu || settings.allowCategorySelection)) {
         | 
| 631 702 | 
             
                            callback();
         | 
| 632 703 | 
             
                          }
         | 
| 633 704 | 
             
                        }
         | 
| 634 | 
            -
             | 
| 635 705 | 
             
                      },
         | 
| 636 | 
            -
             | 
| 637 706 | 
             
                      resetStyle: function() {
         | 
| 638 707 | 
             
                        $(this).removeAttr('style');
         | 
| 639 708 | 
             
                      }
         | 
| 640 | 
            -
             | 
| 641 709 | 
             
                    },
         | 
| 642 710 |  | 
| 643 711 | 
             
                    determine: {
         | 
| @@ -691,31 +759,23 @@ $.fn.dropdown = function(parameters) { | |
| 691 759 |  | 
| 692 760 | 
             
                      nothing: function() {},
         | 
| 693 761 |  | 
| 694 | 
            -
                       | 
| 695 | 
            -
                        module.hide(function() {
         | 
| 696 | 
            -
                          module.remove.filteredItem();
         | 
| 697 | 
            -
                        });
         | 
| 698 | 
            -
                      },
         | 
| 699 | 
            -
             | 
| 700 | 
            -
                      select: function(text, value) {
         | 
| 762 | 
            +
                      activate: function(text, value) {
         | 
| 701 763 | 
             
                        value = (value !== undefined)
         | 
| 702 764 | 
             
                          ? value
         | 
| 703 765 | 
             
                          : text
         | 
| 704 766 | 
             
                        ;
         | 
| 705 767 | 
             
                        module.set.selected(value);
         | 
| 706 | 
            -
                        module.set.value(value);
         | 
| 707 768 | 
             
                        module.hide(function() {
         | 
| 708 769 | 
             
                          module.remove.filteredItem();
         | 
| 709 770 | 
             
                        });
         | 
| 710 771 | 
             
                      },
         | 
| 711 772 |  | 
| 712 | 
            -
                       | 
| 773 | 
            +
                      select: function(text, value) {
         | 
| 713 774 | 
             
                        value = (value !== undefined)
         | 
| 714 775 | 
             
                          ? value
         | 
| 715 776 | 
             
                          : text
         | 
| 716 777 | 
             
                        ;
         | 
| 717 778 | 
             
                        module.set.selected(value);
         | 
| 718 | 
            -
                        module.set.value(value);
         | 
| 719 779 | 
             
                        module.hide(function() {
         | 
| 720 780 | 
             
                          module.remove.filteredItem();
         | 
| 721 781 | 
             
                        });
         | 
| @@ -727,7 +787,12 @@ $.fn.dropdown = function(parameters) { | |
| 727 787 | 
             
                          : text
         | 
| 728 788 | 
             
                        ;
         | 
| 729 789 | 
             
                        module.set.selected(value);
         | 
| 730 | 
            -
                        module. | 
| 790 | 
            +
                        module.hide(function() {
         | 
| 791 | 
            +
                          module.remove.filteredItem();
         | 
| 792 | 
            +
                        });
         | 
| 793 | 
            +
                      },
         | 
| 794 | 
            +
             | 
| 795 | 
            +
                      hide: function() {
         | 
| 731 796 | 
             
                        module.hide(function() {
         | 
| 732 797 | 
             
                          module.remove.filteredItem();
         | 
| 733 798 | 
             
                        });
         | 
| @@ -766,7 +831,7 @@ $.fn.dropdown = function(parameters) { | |
| 766 831 | 
             
                        }
         | 
| 767 832 | 
             
                      },
         | 
| 768 833 | 
             
                      choiceValue: function($choice, choiceText) {
         | 
| 769 | 
            -
                        choiceText = choiceText || module.get.choiceText($ | 
| 834 | 
            +
                        choiceText = choiceText || module.get.choiceText($choice);
         | 
| 770 835 | 
             
                        return ($choice.data(metadata.value) !== undefined)
         | 
| 771 836 | 
             
                          ? $choice.data(metadata.value)
         | 
| 772 837 | 
             
                          : (typeof choiceText === 'string')
         | 
| @@ -900,7 +965,7 @@ $.fn.dropdown = function(parameters) { | |
| 900 965 | 
             
                        ;
         | 
| 901 966 | 
             
                        module.debug('Restoring default text', defaultText);
         | 
| 902 967 | 
             
                        module.set.text(defaultText);
         | 
| 903 | 
            -
                        $text.addClass( | 
| 968 | 
            +
                        $text.addClass(className.placeholder);
         | 
| 904 969 | 
             
                      },
         | 
| 905 970 | 
             
                      defaultValue: function() {
         | 
| 906 971 | 
             
                        var
         | 
| @@ -910,7 +975,6 @@ $.fn.dropdown = function(parameters) { | |
| 910 975 | 
             
                          module.debug('Restoring default value', defaultValue);
         | 
| 911 976 | 
             
                          if(defaultValue.length) {
         | 
| 912 977 | 
             
                            module.set.selected(defaultValue);
         | 
| 913 | 
            -
                            module.set.value(defaultValue);
         | 
| 914 978 | 
             
                          }
         | 
| 915 979 | 
             
                          else {
         | 
| 916 980 | 
             
                            module.remove.activeItem();
         | 
| @@ -923,6 +987,7 @@ $.fn.dropdown = function(parameters) { | |
| 923 987 | 
             
                    save: {
         | 
| 924 988 | 
             
                      defaults: function() {
         | 
| 925 989 | 
             
                        module.save.defaultText();
         | 
| 990 | 
            +
                        module.save.placeholderText();
         | 
| 926 991 | 
             
                        module.save.defaultValue();
         | 
| 927 992 | 
             
                      },
         | 
| 928 993 | 
             
                      defaultValue: function() {
         | 
| @@ -930,9 +995,25 @@ $.fn.dropdown = function(parameters) { | |
| 930 995 | 
             
                      },
         | 
| 931 996 | 
             
                      defaultText: function() {
         | 
| 932 997 | 
             
                        $module.data(metadata.defaultText, $text.text() );
         | 
| 998 | 
            +
                      },
         | 
| 999 | 
            +
                      placeholderText: function() {
         | 
| 1000 | 
            +
                        if($text.hasClass(className.placeholder)) {
         | 
| 1001 | 
            +
                          $module.data(metadata.placeholderText, $text.text());
         | 
| 1002 | 
            +
                        }
         | 
| 933 1003 | 
             
                      }
         | 
| 934 1004 | 
             
                    },
         | 
| 935 1005 |  | 
| 1006 | 
            +
                    clear: function() {
         | 
| 1007 | 
            +
                      var
         | 
| 1008 | 
            +
                        placeholderText = $module.data(metadata.placeholderText)
         | 
| 1009 | 
            +
                      ;
         | 
| 1010 | 
            +
                      module.set.text(placeholderText);
         | 
| 1011 | 
            +
                      module.set.value('');
         | 
| 1012 | 
            +
                      module.remove.activeItem();
         | 
| 1013 | 
            +
                      module.remove.selectedItem();
         | 
| 1014 | 
            +
                      $text.addClass(className.placeholder);
         | 
| 1015 | 
            +
                    },
         | 
| 1016 | 
            +
             | 
| 936 1017 | 
             
                    set: {
         | 
| 937 1018 | 
             
                      filtered: function() {
         | 
| 938 1019 | 
             
                        var
         | 
| @@ -1060,20 +1141,21 @@ $.fn.dropdown = function(parameters) { | |
| 1060 1141 | 
             
                      selected: function(value) {
         | 
| 1061 1142 | 
             
                        var
         | 
| 1062 1143 | 
             
                          $selectedItem = module.get.item(value),
         | 
| 1063 | 
            -
                          selectedText
         | 
| 1144 | 
            +
                          selectedText,
         | 
| 1145 | 
            +
                          selectedValue
         | 
| 1064 1146 | 
             
                        ;
         | 
| 1065 1147 | 
             
                        if($selectedItem) {
         | 
| 1066 1148 | 
             
                          module.debug('Setting selected menu item to', $selectedItem);
         | 
| 1067 | 
            -
             | 
| 1068 1149 | 
             
                          module.remove.activeItem();
         | 
| 1069 1150 | 
             
                          module.remove.selectedItem();
         | 
| 1070 1151 | 
             
                          $selectedItem
         | 
| 1071 1152 | 
             
                            .addClass(className.active)
         | 
| 1072 1153 | 
             
                            .addClass(className.selected)
         | 
| 1073 1154 | 
             
                          ;
         | 
| 1074 | 
            -
             | 
| 1075 | 
            -
                           | 
| 1155 | 
            +
                          selectedText  = module.get.choiceText($selectedItem);
         | 
| 1156 | 
            +
                          selectedValue = module.get.choiceValue($selectedItem, selectedText);
         | 
| 1076 1157 | 
             
                          module.set.text(selectedText);
         | 
| 1158 | 
            +
                          module.set.value(selectedValue);
         | 
| 1077 1159 | 
             
                          settings.onChange.call(element, value, selectedText, $selectedItem);
         | 
| 1078 1160 | 
             
                        }
         | 
| 1079 1161 | 
             
                      }
         | 
| @@ -1124,6 +1206,9 @@ $.fn.dropdown = function(parameters) { | |
| 1124 1206 | 
             
                      active: function() {
         | 
| 1125 1207 | 
             
                        return $module.hasClass(className.active);
         | 
| 1126 1208 | 
             
                      },
         | 
| 1209 | 
            +
                      alreadySetup: function() {
         | 
| 1210 | 
            +
                        return ($module.is('select') && $module.parent(selector.dropdown).length > 0);
         | 
| 1211 | 
            +
                      },
         | 
| 1127 1212 | 
             
                      animating: function($subMenu) {
         | 
| 1128 1213 | 
             
                        return ($subMenu)
         | 
| 1129 1214 | 
             
                          ? $subMenu.is(':animated') || $subMenu.transition && $subMenu.transition('is animating')
         | 
| @@ -1139,6 +1224,18 @@ $.fn.dropdown = function(parameters) { | |
| 1139 1224 | 
             
                          : $menu.is(':hidden')
         | 
| 1140 1225 | 
             
                        ;
         | 
| 1141 1226 | 
             
                      },
         | 
| 1227 | 
            +
                      selectMutation: function(mutations) {
         | 
| 1228 | 
            +
                        var
         | 
| 1229 | 
            +
                          selectChanged = false
         | 
| 1230 | 
            +
                        ;
         | 
| 1231 | 
            +
                        $.each(mutations, function(index, mutation) {
         | 
| 1232 | 
            +
                          if(mutation.target && $(mutation.target).is('select')) {
         | 
| 1233 | 
            +
                            selectChanged = true;
         | 
| 1234 | 
            +
                            return true;
         | 
| 1235 | 
            +
                          }
         | 
| 1236 | 
            +
                        });
         | 
| 1237 | 
            +
                        return selectChanged;
         | 
| 1238 | 
            +
                      },
         | 
| 1142 1239 | 
             
                      search: function() {
         | 
| 1143 1240 | 
             
                        return $module.hasClass(className.search);
         | 
| 1144 1241 | 
             
                      },
         | 
| @@ -1196,8 +1293,8 @@ $.fn.dropdown = function(parameters) { | |
| 1196 1293 | 
             
                              ? 'slide up'
         | 
| 1197 1294 | 
             
                              : 'slide down'
         | 
| 1198 1295 | 
             
                            ;
         | 
| 1296 | 
            +
                            module.verbose('Automatically determining animation based on animation direction', settings.transition);
         | 
| 1199 1297 | 
             
                          }
         | 
| 1200 | 
            -
             | 
| 1201 1298 | 
             
                          if(settings.transition == 'none') {
         | 
| 1202 1299 | 
             
                            callback.call(element);
         | 
| 1203 1300 | 
             
                          }
         | 
| @@ -1571,16 +1668,18 @@ $.fn.dropdown.settings = { | |
| 1571 1668 | 
             
              namespace      : 'dropdown',
         | 
| 1572 1669 |  | 
| 1573 1670 | 
             
              error   : {
         | 
| 1574 | 
            -
                action | 
| 1575 | 
            -
                 | 
| 1576 | 
            -
                 | 
| 1671 | 
            +
                action       : 'You called a dropdown action that was not defined',
         | 
| 1672 | 
            +
                alreadySetup : 'Once a select has been initialized behaviors must be called on the created ui dropdown',
         | 
| 1673 | 
            +
                method       : 'The method you called is not defined.',
         | 
| 1674 | 
            +
                transition   : 'The requested transition was not found'
         | 
| 1577 1675 | 
             
              },
         | 
| 1578 1676 |  | 
| 1579 1677 | 
             
              metadata: {
         | 
| 1580 | 
            -
                defaultText | 
| 1581 | 
            -
                defaultValue | 
| 1582 | 
            -
                 | 
| 1583 | 
            -
                 | 
| 1678 | 
            +
                defaultText     : 'defaultText',
         | 
| 1679 | 
            +
                defaultValue    : 'defaultValue',
         | 
| 1680 | 
            +
                placeholderText : 'placeholderText',
         | 
| 1681 | 
            +
                text            : 'text',
         | 
| 1682 | 
            +
                value           : 'value'
         | 
| 1584 1683 | 
             
              },
         | 
| 1585 1684 |  | 
| 1586 1685 | 
             
              selector : {
         |