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.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/assets/javascripts/semantic_ui/definitions/behaviors/api.js +22 -11
  3. data/assets/javascripts/semantic_ui/definitions/behaviors/form.js +259 -43
  4. data/assets/javascripts/semantic_ui/definitions/modules/checkbox.js +1 -1
  5. data/assets/javascripts/semantic_ui/definitions/modules/dropdown.js +204 -105
  6. data/assets/javascripts/semantic_ui/definitions/modules/popup.js +4 -3
  7. data/assets/javascripts/semantic_ui/definitions/modules/search.js +310 -152
  8. data/assets/javascripts/semantic_ui/definitions/modules/sidebar.js +18 -7
  9. data/assets/javascripts/semantic_ui/definitions/modules/sticky.js +1 -1
  10. data/assets/javascripts/semantic_ui/definitions/modules/transition.js +35 -23
  11. data/assets/stylesheets/semantic_ui/definitions/collections/form.less +2 -2
  12. data/assets/stylesheets/semantic_ui/definitions/collections/grid.less +30 -0
  13. data/assets/stylesheets/semantic_ui/definitions/collections/menu.less +13 -11
  14. data/assets/stylesheets/semantic_ui/definitions/elements/button.less +16 -2
  15. data/assets/stylesheets/semantic_ui/definitions/elements/header.less +70 -31
  16. data/assets/stylesheets/semantic_ui/definitions/elements/label.less +3 -3
  17. data/assets/stylesheets/semantic_ui/definitions/elements/list.less +8 -18
  18. data/assets/stylesheets/semantic_ui/definitions/modules/checkbox.less +54 -27
  19. data/assets/stylesheets/semantic_ui/definitions/modules/modal.less +2 -1
  20. data/assets/stylesheets/semantic_ui/definitions/modules/popup.less +5 -0
  21. data/assets/stylesheets/semantic_ui/definitions/modules/sidebar.less +1 -0
  22. data/assets/stylesheets/semantic_ui/definitions/modules/transition.less +0 -5
  23. data/assets/stylesheets/semantic_ui/themes/default/collections/menu.variables +7 -5
  24. data/assets/stylesheets/semantic_ui/themes/default/collections/table.variables +1 -1
  25. data/assets/stylesheets/semantic_ui/themes/default/elements/button.variables +2 -2
  26. data/assets/stylesheets/semantic_ui/themes/default/elements/header.variables +20 -9
  27. data/assets/stylesheets/semantic_ui/themes/default/elements/label.variables +5 -3
  28. data/assets/stylesheets/semantic_ui/themes/default/globals/site.variables +1 -0
  29. data/assets/stylesheets/semantic_ui/themes/default/modules/accordion.variables +5 -6
  30. data/assets/stylesheets/semantic_ui/themes/default/modules/modal.variables +3 -2
  31. data/assets/stylesheets/semantic_ui/themes/default/modules/popup.variables +3 -3
  32. data/assets/stylesheets/semantic_ui/themes/default/modules/transition.overrides +690 -222
  33. data/assets/stylesheets/semantic_ui/themes/default/modules/transition.variables +1 -1
  34. data/lib/less/rails/semantic_ui/version.rb +1 -1
  35. metadata +3 -3
@@ -498,7 +498,7 @@ $.fn.checkbox.settings = {
498
498
  },
499
499
 
500
500
  selector : {
501
- input : 'input[type=checkbox], input[type=radio]',
501
+ input : 'input[type="checkbox"], input[type="radio"]',
502
502
  label : 'label'
503
503
  }
504
504
 
@@ -73,7 +73,14 @@ $.fn.dropdown = function(parameters) {
73
73
 
74
74
  initialize: function() {
75
75
  module.debug('Initializing dropdown', settings);
76
- module.setup.layout();
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.debug('DOM tree modified, updating selector cache');
116
- module.refresh();
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 = module.get.selectValues()
181
+ selectValues = module.get.selectValues()
166
182
  ;
167
183
  module.debug('Dropdown initialized on a select', selectValues);
168
- // see if select exists inside a dropdown
169
- $input = $module;
170
- if($input.parents(selector.dropdown).length > 0) {
171
- module.debug('Creating dropdown menu only from template');
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
- if($module.find('.' + className.dropdown).length === 0) {
174
- $('<div />')
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 template');
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.can.show() && !module.is.active() && !module.is.allFiltered() ) {
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
- $selectedItem = $item.not(className.filtered).filter('.' + className.selected).eq(0),
469
- $visibleItems = $item.not('.' + className.filtered),
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 : 13,
473
- escape : 27,
474
- upArrow : 38,
475
- downArrow : 40
508
+ enter : 13,
509
+ escape : 27,
510
+ leftArrow : 37,
511
+ upArrow : 38,
512
+ rightArrow : 39,
513
+ downArrow : 40
476
514
  },
477
- selectedClass = className.selected,
478
- currentIndex = $visibleItems.index( $selectedItem ),
479
- hasSelectedItem = ($selectedItem.length > 0),
515
+ hasSubMenu = ($subMenu.length> 0),
516
+ hasSelectedItem = ($selectedItem.length > 0),
517
+ lastVisibleIndex = ($visibleItems.size() - 1),
480
518
  $nextItem,
481
519
  newIndex
482
520
  ;
483
- // default to activated choice if no selection present
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
- module.verbose('Enter key pressed, choosing selected item');
502
- module.event.item.click.call($selectedItem, event);
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
- else if(pressedKey == keys.upArrow) {
507
- if(!hasSelectedItem) {
508
- $nextItem = $visibleItems.eq(0);
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
- $item
516
- .removeClass(selectedClass)
576
+ $selectedItem
577
+ .removeClass(className.selected)
517
578
  ;
518
579
  $nextItem
519
- .addClass(selectedClass)
580
+ .addClass(className.selected)
520
581
  ;
521
582
  module.set.scrollPosition($nextItem);
522
583
  }
523
584
  event.preventDefault();
524
585
  }
525
- else if(pressedKey == keys.downArrow) {
526
- if(!hasSelectedItem) {
527
- $nextItem = $visibleItems.eq(0);
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(selectedClass)
599
+ .removeClass(className.selected)
536
600
  ;
537
601
  $nextItem
538
- .addClass(selectedClass)
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
- $currentMenu = $(this).children(selector.menu),
585
- $otherMenus = $(this).siblings(selector.item).children(selector.menu)
660
+ $subMenu = $(this).children(selector.menu),
661
+ $otherMenus = $(this).siblings(selector.item).children(selector.menu)
586
662
  ;
587
- if( $currentMenu.length > 0 ) {
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.verbose('Showing sub-menu', $currentMenu);
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
- $currentMenu = $(this).children(selector.menu)
677
+ $subMenu = $(this).children(selector.menu)
603
678
  ;
604
- if($currentMenu.length > 0) {
679
+ if($subMenu.length > 0) {
605
680
  clearTimeout(module.itemTimer);
606
681
  module.itemTimer = setTimeout(function() {
607
- module.verbose('Hiding sub-menu', $currentMenu);
608
- module.animate.hide(false, $currentMenu);
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
- openingSubMenu = ($subMenu.length > 0),
625
- isSubItem = ($subMenu.find($target).length > 0)
698
+ hasSubMenu = ($subMenu.length > 0),
699
+ isBubbledEvent = ($subMenu.find($target).length > 0)
626
700
  ;
627
- if(isSubItem) {
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
- hide: function() {
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
- activate: function(text, value) {
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.set.value(value);
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($text);
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(settings.className.placeholder);
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
- selectedText = module.get.choiceText($selectedItem);
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 : 'You called a dropdown action that was not defined',
1575
- method : 'The method you called is not defined.',
1576
- transition : 'The requested transition was not found'
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 : 'defaultText',
1581
- defaultValue : 'defaultValue',
1582
- text : 'text',
1583
- value : 'value'
1678
+ defaultText : 'defaultText',
1679
+ defaultValue : 'defaultValue',
1680
+ placeholderText : 'placeholderText',
1681
+ text : 'text',
1682
+ value : 'value'
1584
1683
  },
1585
1684
 
1586
1685
  selector : {