semantic-ui-sass 2.0.7.0 → 2.1.3.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/app/assets/javascripts/semantic-ui/accordion.js +17 -13
- data/app/assets/javascripts/semantic-ui/api.js +25 -7
- data/app/assets/javascripts/semantic-ui/checkbox.js +124 -48
- data/app/assets/javascripts/semantic-ui/dropdown.js +193 -108
- data/app/assets/javascripts/semantic-ui/embed.js +1 -4
- data/app/assets/javascripts/semantic-ui/form.js +125 -12
- data/app/assets/javascripts/semantic-ui/modal.js +13 -13
- data/app/assets/javascripts/semantic-ui/nag.js +11 -1
- data/app/assets/javascripts/semantic-ui/popup.js +23 -10
- data/app/assets/javascripts/semantic-ui/search.js +83 -54
- data/app/assets/javascripts/semantic-ui/sticky.js +34 -32
- data/app/assets/javascripts/semantic-ui/tab.js +8 -7
- data/app/assets/javascripts/semantic-ui/transition.js +5 -5
- data/app/assets/stylesheets/semantic-ui/collections/_breadcrumb.scss +2 -2
- data/app/assets/stylesheets/semantic-ui/collections/_form.scss +102 -31
- data/app/assets/stylesheets/semantic-ui/collections/_grid.scss +159 -10
- data/app/assets/stylesheets/semantic-ui/collections/_menu.scss +151 -60
- data/app/assets/stylesheets/semantic-ui/collections/_message.scss +1 -1
- data/app/assets/stylesheets/semantic-ui/collections/_table.scss +18 -1
- data/app/assets/stylesheets/semantic-ui/elements/_button.scss +187 -97
- data/app/assets/stylesheets/semantic-ui/elements/_container.scss +29 -5
- data/app/assets/stylesheets/semantic-ui/elements/_divider.scss +6 -3
- data/app/assets/stylesheets/semantic-ui/elements/_flag.scss +1 -1
- data/app/assets/stylesheets/semantic-ui/elements/_header.scss +1 -3
- data/app/assets/stylesheets/semantic-ui/elements/_icon.scss +23 -38
- data/app/assets/stylesheets/semantic-ui/elements/_image.scss +1 -1
- data/app/assets/stylesheets/semantic-ui/elements/_input.scss +69 -39
- data/app/assets/stylesheets/semantic-ui/elements/_label.scss +423 -222
- data/app/assets/stylesheets/semantic-ui/elements/_list.scss +16 -1
- data/app/assets/stylesheets/semantic-ui/elements/_loader.scss +1 -1
- data/app/assets/stylesheets/semantic-ui/elements/_rail.scss +1 -1
- data/app/assets/stylesheets/semantic-ui/elements/_reveal.scss +5 -13
- data/app/assets/stylesheets/semantic-ui/elements/_segment.scss +1 -1
- data/app/assets/stylesheets/semantic-ui/elements/_step.scss +9 -6
- data/app/assets/stylesheets/semantic-ui/globals/_reset.scss +1 -1
- data/app/assets/stylesheets/semantic-ui/globals/_site.scss +1 -1
- data/app/assets/stylesheets/semantic-ui/modules/_accordion.scss +1 -1
- data/app/assets/stylesheets/semantic-ui/modules/_checkbox.scss +7 -7
- data/app/assets/stylesheets/semantic-ui/modules/_dimmer.scss +1 -1
- data/app/assets/stylesheets/semantic-ui/modules/_dropdown.scss +26 -9
- data/app/assets/stylesheets/semantic-ui/modules/_embed.scss +1 -1
- data/app/assets/stylesheets/semantic-ui/modules/_modal.scss +1 -1
- data/app/assets/stylesheets/semantic-ui/modules/_nag.scss +1 -1
- data/app/assets/stylesheets/semantic-ui/modules/_popup.scss +1 -1
- data/app/assets/stylesheets/semantic-ui/modules/_progress.scss +1 -1
- data/app/assets/stylesheets/semantic-ui/modules/_rating.scss +1 -1
- data/app/assets/stylesheets/semantic-ui/modules/_search.scss +1 -1
- data/app/assets/stylesheets/semantic-ui/modules/_shape.scss +1 -1
- data/app/assets/stylesheets/semantic-ui/modules/_sidebar.scss +1 -1
- data/app/assets/stylesheets/semantic-ui/modules/_sticky.scss +1 -1
- data/app/assets/stylesheets/semantic-ui/modules/_tab.scss +1 -1
- data/app/assets/stylesheets/semantic-ui/modules/_transition.scss +1 -1
- data/app/assets/stylesheets/semantic-ui/views/_ad.scss +1 -1
- data/app/assets/stylesheets/semantic-ui/views/_card.scss +1 -1
- data/app/assets/stylesheets/semantic-ui/views/_comment.scss +1 -1
- data/app/assets/stylesheets/semantic-ui/views/_feed.scss +1 -1
- data/app/assets/stylesheets/semantic-ui/views/_item.scss +7 -7
- data/app/assets/stylesheets/semantic-ui/views/_statistic.scss +1 -1
- data/lib/semantic/ui/sass/version.rb +2 -2
- metadata +2 -2
@@ -39,6 +39,7 @@ $.fn.dropdown = function(parameters) {
|
|
39
39
|
|
40
40
|
className = settings.className,
|
41
41
|
message = settings.message,
|
42
|
+
fields = settings.fields,
|
42
43
|
metadata = settings.metadata,
|
43
44
|
namespace = settings.namespace,
|
44
45
|
regExp = settings.regExp,
|
@@ -65,6 +66,7 @@ $.fn.dropdown = function(parameters) {
|
|
65
66
|
|
66
67
|
activated = false,
|
67
68
|
itemActivated = false,
|
69
|
+
internalChange = false,
|
68
70
|
element = this,
|
69
71
|
instance = $module.data(moduleNamespace),
|
70
72
|
|
@@ -93,11 +95,7 @@ $.fn.dropdown = function(parameters) {
|
|
93
95
|
module.restore.selected();
|
94
96
|
|
95
97
|
module.create.id();
|
96
|
-
|
97
|
-
module.bind.touchEvents();
|
98
|
-
}
|
99
|
-
module.bind.mouseEvents();
|
100
|
-
module.bind.keyboardEvents();
|
98
|
+
module.bind.events();
|
101
99
|
|
102
100
|
module.observeChanges();
|
103
101
|
module.instantiate();
|
@@ -183,10 +181,11 @@ $.fn.dropdown = function(parameters) {
|
|
183
181
|
;
|
184
182
|
$.each(values, function(index, value) {
|
185
183
|
if(module.get.item(value) === false) {
|
186
|
-
html = settings.templates.addition(value);
|
184
|
+
html = settings.templates.addition( module.add.variables(message.addResult, value) );
|
187
185
|
$userChoice = $('<div />')
|
188
186
|
.html(html)
|
189
|
-
.data
|
187
|
+
.attr('data-' + metadata.value, value)
|
188
|
+
.attr('data-' + metadata.text, value)
|
190
189
|
.addClass(className.addition)
|
191
190
|
.addClass(className.item)
|
192
191
|
;
|
@@ -211,6 +210,12 @@ $.fn.dropdown = function(parameters) {
|
|
211
210
|
});
|
212
211
|
}
|
213
212
|
},
|
213
|
+
menu: function() {
|
214
|
+
$menu = $('<div />')
|
215
|
+
.addClass(className.menu)
|
216
|
+
.appendTo($module)
|
217
|
+
;
|
218
|
+
}
|
214
219
|
},
|
215
220
|
|
216
221
|
search: function(query) {
|
@@ -268,6 +273,9 @@ $.fn.dropdown = function(parameters) {
|
|
268
273
|
module.setup.select();
|
269
274
|
module.setup.returnedObject();
|
270
275
|
}
|
276
|
+
if( !module.has.menu() ) {
|
277
|
+
module.create.menu();
|
278
|
+
}
|
271
279
|
if( module.is.search() && !module.has.search() ) {
|
272
280
|
module.verbose('Adding search input');
|
273
281
|
$search = $('<input />')
|
@@ -278,12 +286,6 @@ $.fn.dropdown = function(parameters) {
|
|
278
286
|
if(settings.allowTab) {
|
279
287
|
module.set.tabbable();
|
280
288
|
}
|
281
|
-
if($menu.length === 0) {
|
282
|
-
$menu = $('<div />')
|
283
|
-
.addClass(className.menu)
|
284
|
-
.appendTo($module)
|
285
|
-
;
|
286
|
-
}
|
287
289
|
},
|
288
290
|
select: function() {
|
289
291
|
var
|
@@ -297,7 +299,10 @@ $.fn.dropdown = function(parameters) {
|
|
297
299
|
if($input.parent(selector.dropdown).length > 0) {
|
298
300
|
module.debug('UI dropdown already exists. Creating dropdown menu only');
|
299
301
|
$module = $input.closest(selector.dropdown);
|
300
|
-
|
302
|
+
if( !module.has.menu() ) {
|
303
|
+
module.create.menu();
|
304
|
+
}
|
305
|
+
$menu = $module.children(selector.menu);
|
301
306
|
module.setup.menu(selectValues);
|
302
307
|
}
|
303
308
|
else {
|
@@ -325,7 +330,7 @@ $.fn.dropdown = function(parameters) {
|
|
325
330
|
module.refresh();
|
326
331
|
},
|
327
332
|
menu: function(values) {
|
328
|
-
$menu.html( templates.menu(
|
333
|
+
$menu.html( templates.menu(values, fields));
|
329
334
|
$item = $menu.find(selector.item);
|
330
335
|
},
|
331
336
|
reference: function() {
|
@@ -382,7 +387,6 @@ $.fn.dropdown = function(parameters) {
|
|
382
387
|
;
|
383
388
|
},
|
384
389
|
|
385
|
-
|
386
390
|
toggle: function() {
|
387
391
|
module.verbose('Toggling menu visibility');
|
388
392
|
if( !module.is.active() ) {
|
@@ -400,19 +404,21 @@ $.fn.dropdown = function(parameters) {
|
|
400
404
|
;
|
401
405
|
if( module.can.show() && !module.is.active() ) {
|
402
406
|
module.debug('Showing dropdown');
|
403
|
-
if(module.is.multiple()) {
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
+
if(module.is.multiple() && !module.has.search() && module.is.allFiltered()) {
|
408
|
+
return true;
|
409
|
+
}
|
410
|
+
if(module.has.message() && !module.has.maxSelections()) {
|
411
|
+
module.remove.message();
|
412
|
+
}
|
413
|
+
if(settings.onShow.call(element) !== false) {
|
414
|
+
module.animate.show(function() {
|
415
|
+
if( module.can.click() ) {
|
416
|
+
module.bind.intent();
|
417
|
+
}
|
418
|
+
module.set.visible();
|
419
|
+
callback.call(element);
|
420
|
+
});
|
407
421
|
}
|
408
|
-
module.animate.show(function() {
|
409
|
-
if( module.can.click() ) {
|
410
|
-
module.bind.intent();
|
411
|
-
}
|
412
|
-
module.set.visible();
|
413
|
-
callback.call(element);
|
414
|
-
});
|
415
|
-
settings.onShow.call(element);
|
416
422
|
}
|
417
423
|
},
|
418
424
|
|
@@ -423,11 +429,12 @@ $.fn.dropdown = function(parameters) {
|
|
423
429
|
;
|
424
430
|
if( module.is.active() ) {
|
425
431
|
module.debug('Hiding dropdown');
|
426
|
-
|
427
|
-
module.
|
428
|
-
|
429
|
-
|
430
|
-
|
432
|
+
if(settings.onHide.call(element) !== false) {
|
433
|
+
module.animate.hide(function() {
|
434
|
+
module.remove.visible();
|
435
|
+
callback.call(element);
|
436
|
+
});
|
437
|
+
}
|
431
438
|
}
|
432
439
|
},
|
433
440
|
|
@@ -456,8 +463,30 @@ $.fn.dropdown = function(parameters) {
|
|
456
463
|
},
|
457
464
|
|
458
465
|
bind: {
|
466
|
+
events: function() {
|
467
|
+
if(hasTouch) {
|
468
|
+
module.bind.touchEvents();
|
469
|
+
}
|
470
|
+
module.bind.keyboardEvents();
|
471
|
+
module.bind.inputEvents();
|
472
|
+
module.bind.mouseEvents();
|
473
|
+
},
|
474
|
+
touchEvents: function() {
|
475
|
+
module.debug('Touch device detected binding additional touch events');
|
476
|
+
if( module.is.searchSelection() ) {
|
477
|
+
// do nothing special yet
|
478
|
+
}
|
479
|
+
else if( module.is.single() ) {
|
480
|
+
$module
|
481
|
+
.on('touchstart' + eventNamespace, module.event.test.toggle)
|
482
|
+
;
|
483
|
+
}
|
484
|
+
$menu
|
485
|
+
.on('touchstart' + eventNamespace, selector.item, module.event.item.mouseenter)
|
486
|
+
;
|
487
|
+
},
|
459
488
|
keyboardEvents: function() {
|
460
|
-
module.
|
489
|
+
module.verbose('Binding keyboard events');
|
461
490
|
$module
|
462
491
|
.on('keydown' + eventNamespace, module.event.keydown)
|
463
492
|
;
|
@@ -472,25 +501,17 @@ $.fn.dropdown = function(parameters) {
|
|
472
501
|
;
|
473
502
|
}
|
474
503
|
},
|
475
|
-
|
476
|
-
module.
|
477
|
-
|
478
|
-
|
479
|
-
}
|
480
|
-
else if( module.is.single() ) {
|
481
|
-
$module
|
482
|
-
.on('touchstart' + eventNamespace, module.event.test.toggle)
|
483
|
-
;
|
484
|
-
}
|
485
|
-
$menu
|
486
|
-
.on('touchstart' + eventNamespace, selector.item, module.event.item.mouseenter)
|
504
|
+
inputEvents: function() {
|
505
|
+
module.verbose('Binding input change events');
|
506
|
+
$module
|
507
|
+
.on('change' + eventNamespace, selector.input, module.event.change)
|
487
508
|
;
|
488
509
|
},
|
489
510
|
mouseEvents: function() {
|
490
|
-
module.
|
511
|
+
module.verbose('Binding mouse events');
|
491
512
|
if(module.is.multiple()) {
|
492
513
|
$module
|
493
|
-
.on('click' + eventNamespace, selector.label,
|
514
|
+
.on('click' + eventNamespace, selector.label, module.event.label.click)
|
494
515
|
.on('click' + eventNamespace, selector.remove, module.event.remove.click)
|
495
516
|
;
|
496
517
|
}
|
@@ -627,7 +648,6 @@ $.fn.dropdown = function(parameters) {
|
|
627
648
|
apiSettings = {
|
628
649
|
errorDuration : false,
|
629
650
|
throttle : settings.throttle,
|
630
|
-
cache : 'local',
|
631
651
|
urlData : {
|
632
652
|
query: query
|
633
653
|
},
|
@@ -668,7 +688,7 @@ $.fn.dropdown = function(parameters) {
|
|
668
688
|
beginsWithRegExp = new RegExp('^' + escapedTerm, 'igm')
|
669
689
|
;
|
670
690
|
// avoid loop if we're matching nothing
|
671
|
-
if(
|
691
|
+
if( !module.has.query() ) {
|
672
692
|
$results = $item;
|
673
693
|
}
|
674
694
|
else {
|
@@ -706,7 +726,6 @@ $.fn.dropdown = function(parameters) {
|
|
706
726
|
})
|
707
727
|
;
|
708
728
|
}
|
709
|
-
|
710
729
|
module.debug('Showing only matched items', searchTerm);
|
711
730
|
module.remove.filteredItem();
|
712
731
|
$item
|
@@ -765,7 +784,7 @@ $.fn.dropdown = function(parameters) {
|
|
765
784
|
: $activeItem,
|
766
785
|
hasSelected = ($selectedItem.size() > 0)
|
767
786
|
;
|
768
|
-
if(hasSelected) {
|
787
|
+
if( hasSelected && module.has.query() ) {
|
769
788
|
module.debug('Forcing partial selection to selected item', $selectedItem);
|
770
789
|
module.event.item.click.call($selectedItem);
|
771
790
|
}
|
@@ -775,6 +794,12 @@ $.fn.dropdown = function(parameters) {
|
|
775
794
|
},
|
776
795
|
|
777
796
|
event: {
|
797
|
+
change: function() {
|
798
|
+
if(!internalChange) {
|
799
|
+
module.debug('Input changed, updating selection');
|
800
|
+
module.set.selected();
|
801
|
+
}
|
802
|
+
},
|
778
803
|
focus: function() {
|
779
804
|
if(settings.showOnFocus && !activated && module.is.hidden() && !pageLostFocus) {
|
780
805
|
module.show();
|
@@ -827,6 +852,11 @@ $.fn.dropdown = function(parameters) {
|
|
827
852
|
module.hide();
|
828
853
|
}
|
829
854
|
}
|
855
|
+
else if(pageLostFocus) {
|
856
|
+
if(settings.forceSelection) {
|
857
|
+
module.forceSelection();
|
858
|
+
}
|
859
|
+
}
|
830
860
|
}
|
831
861
|
},
|
832
862
|
icon: {
|
@@ -903,7 +933,9 @@ $.fn.dropdown = function(parameters) {
|
|
903
933
|
touch: function(event) {
|
904
934
|
module.determine.eventOnElement(event, function() {
|
905
935
|
if(event.type == 'touchstart') {
|
906
|
-
module.timer = setTimeout(
|
936
|
+
module.timer = setTimeout(function() {
|
937
|
+
module.hide();
|
938
|
+
}, settings.delay.touch);
|
907
939
|
}
|
908
940
|
else if(event.type == 'touchmove') {
|
909
941
|
clearTimeout(module.timer);
|
@@ -953,15 +985,17 @@ $.fn.dropdown = function(parameters) {
|
|
953
985
|
}, settings.delay.hide);
|
954
986
|
}
|
955
987
|
},
|
988
|
+
touchend: function() {
|
989
|
+
},
|
956
990
|
click: function (event) {
|
957
991
|
var
|
958
|
-
$choice
|
959
|
-
$target
|
992
|
+
$choice = $(this),
|
993
|
+
$target = (event)
|
960
994
|
? $(event.target)
|
961
995
|
: $(''),
|
962
|
-
$subMenu
|
963
|
-
text
|
964
|
-
value
|
996
|
+
$subMenu = $choice.find(selector.menu),
|
997
|
+
text = module.get.choiceText($choice),
|
998
|
+
value = module.get.choiceValue($choice, text),
|
965
999
|
hasSubMenu = ($subMenu.length > 0),
|
966
1000
|
isBubbledEvent = ($subMenu.find($target).length > 0)
|
967
1001
|
;
|
@@ -988,7 +1022,7 @@ $.fn.dropdown = function(parameters) {
|
|
988
1022
|
var
|
989
1023
|
$label = $module.find(selector.label),
|
990
1024
|
$activeLabel = $label.filter('.' + className.active),
|
991
|
-
activeValue = $activeLabel.data(
|
1025
|
+
activeValue = $activeLabel.data(metadata.value),
|
992
1026
|
labelIndex = $label.index($activeLabel),
|
993
1027
|
labelCount = $label.length,
|
994
1028
|
hasActiveLabel = ($activeLabel.length > 0),
|
@@ -1351,7 +1385,8 @@ $.fn.dropdown = function(parameters) {
|
|
1351
1385
|
module.hideAndClear();
|
1352
1386
|
},
|
1353
1387
|
|
1354
|
-
hide: function() {
|
1388
|
+
hide: function(text, value) {
|
1389
|
+
module.set.value(value);
|
1355
1390
|
module.hideAndClear();
|
1356
1391
|
}
|
1357
1392
|
|
@@ -1361,6 +1396,15 @@ $.fn.dropdown = function(parameters) {
|
|
1361
1396
|
id: function() {
|
1362
1397
|
return id;
|
1363
1398
|
},
|
1399
|
+
defaultText: function() {
|
1400
|
+
return $module.data(metadata.defaultText);
|
1401
|
+
},
|
1402
|
+
defaultValue: function() {
|
1403
|
+
return $module.data(metadata.defaultValue);
|
1404
|
+
},
|
1405
|
+
placeholderText: function() {
|
1406
|
+
return $module.data(metadata.placeholderText) || '';
|
1407
|
+
},
|
1364
1408
|
text: function() {
|
1365
1409
|
return $text.text();
|
1366
1410
|
},
|
@@ -1509,8 +1553,8 @@ $.fn.dropdown = function(parameters) {
|
|
1509
1553
|
return ($choice.data(metadata.text) !== undefined)
|
1510
1554
|
? $choice.data(metadata.text)
|
1511
1555
|
: (preserveHTML)
|
1512
|
-
? $choice.html()
|
1513
|
-
: $choice.text()
|
1556
|
+
? $.trim($choice.html())
|
1557
|
+
: $.trim($choice.text())
|
1514
1558
|
;
|
1515
1559
|
}
|
1516
1560
|
},
|
@@ -1520,10 +1564,10 @@ $.fn.dropdown = function(parameters) {
|
|
1520
1564
|
return false;
|
1521
1565
|
}
|
1522
1566
|
return ($choice.data(metadata.value) !== undefined)
|
1523
|
-
? $choice.data(metadata.value)
|
1567
|
+
? String( $choice.data(metadata.value) )
|
1524
1568
|
: (typeof choiceText === 'string')
|
1525
|
-
? choiceText.toLowerCase()
|
1526
|
-
: choiceText
|
1569
|
+
? $.trim(choiceText.toLowerCase())
|
1570
|
+
: String(choiceText)
|
1527
1571
|
;
|
1528
1572
|
},
|
1529
1573
|
inputEvent: function() {
|
@@ -1626,7 +1670,7 @@ $.fn.dropdown = function(parameters) {
|
|
1626
1670
|
;
|
1627
1671
|
shouldSearch = (isMultiple)
|
1628
1672
|
? (value.length > 0)
|
1629
|
-
: (value !== undefined && value !==
|
1673
|
+
: (value !== undefined && value !== null)
|
1630
1674
|
;
|
1631
1675
|
isMultiple = (module.is.multiple() && $.isArray(value));
|
1632
1676
|
strict = (value === '' || value === 0)
|
@@ -1646,7 +1690,7 @@ $.fn.dropdown = function(parameters) {
|
|
1646
1690
|
return;
|
1647
1691
|
}
|
1648
1692
|
if(isMultiple) {
|
1649
|
-
if($.inArray(optionValue
|
1693
|
+
if($.inArray( String(optionValue), value) !== -1 || $.inArray(optionText, value) !== -1) {
|
1650
1694
|
$selectedItem = ($selectedItem)
|
1651
1695
|
? $selectedItem.add($choice)
|
1652
1696
|
: $choice
|
@@ -1661,7 +1705,7 @@ $.fn.dropdown = function(parameters) {
|
|
1661
1705
|
}
|
1662
1706
|
}
|
1663
1707
|
else {
|
1664
|
-
if( optionValue
|
1708
|
+
if( String(optionValue) == String(value) || optionText == value) {
|
1665
1709
|
module.verbose('Found select item by value', optionValue, value);
|
1666
1710
|
$selectedItem = $choice;
|
1667
1711
|
return true;
|
@@ -1711,15 +1755,21 @@ $.fn.dropdown = function(parameters) {
|
|
1711
1755
|
},
|
1712
1756
|
defaultText: function() {
|
1713
1757
|
var
|
1714
|
-
defaultText
|
1758
|
+
defaultText = module.get.defaultText(),
|
1759
|
+
placeholderText = module.get.placeholderText
|
1715
1760
|
;
|
1716
|
-
|
1717
|
-
|
1718
|
-
|
1761
|
+
if(defaultText === placeholderText) {
|
1762
|
+
module.debug('Restoring default placeholder text', defaultText);
|
1763
|
+
module.set.placeholderText(defaultText);
|
1764
|
+
}
|
1765
|
+
else {
|
1766
|
+
module.debug('Restoring default text', defaultText);
|
1767
|
+
module.set.text(defaultText);
|
1768
|
+
}
|
1719
1769
|
},
|
1720
1770
|
defaultValue: function() {
|
1721
1771
|
var
|
1722
|
-
defaultValue =
|
1772
|
+
defaultValue = module.get.defaultValue()
|
1723
1773
|
;
|
1724
1774
|
if(defaultValue !== undefined) {
|
1725
1775
|
module.debug('Restoring default value', defaultValue);
|
@@ -1831,7 +1881,7 @@ $.fn.dropdown = function(parameters) {
|
|
1831
1881
|
var
|
1832
1882
|
text
|
1833
1883
|
;
|
1834
|
-
if($text.hasClass(className.placeholder)) {
|
1884
|
+
if(settings.placeholder !== false && $text.hasClass(className.placeholder)) {
|
1835
1885
|
text = module.get.text();
|
1836
1886
|
module.verbose('Saving placeholder text as', text);
|
1837
1887
|
$module.data(metadata.placeholderText, text);
|
@@ -1865,8 +1915,8 @@ $.fn.dropdown = function(parameters) {
|
|
1865
1915
|
|
1866
1916
|
scrollPage: function(direction, $selectedItem) {
|
1867
1917
|
var
|
1868
|
-
$
|
1869
|
-
$menu = $
|
1918
|
+
$currentItem = $selectedItem || module.get.selectedItem(),
|
1919
|
+
$menu = $currentItem.closest(selector.menu),
|
1870
1920
|
menuHeight = $menu.outerHeight(),
|
1871
1921
|
currentScroll = $menu.scrollTop(),
|
1872
1922
|
itemHeight = $item.eq(0).outerHeight(),
|
@@ -1881,8 +1931,8 @@ $.fn.dropdown = function(parameters) {
|
|
1881
1931
|
elementIndex
|
1882
1932
|
;
|
1883
1933
|
elementIndex = (direction == 'up')
|
1884
|
-
? $selectableItem.index($
|
1885
|
-
: $selectableItem.index($
|
1934
|
+
? $selectableItem.index($currentItem) - itemsPerPage
|
1935
|
+
: $selectableItem.index($currentItem) + itemsPerPage
|
1886
1936
|
;
|
1887
1937
|
isWithinRange = (direction == 'up')
|
1888
1938
|
? (elementIndex >= 0)
|
@@ -1896,7 +1946,7 @@ $.fn.dropdown = function(parameters) {
|
|
1896
1946
|
;
|
1897
1947
|
if($nextSelectedItem.length > 0) {
|
1898
1948
|
module.debug('Scrolling page', direction, $nextSelectedItem);
|
1899
|
-
$
|
1949
|
+
$currentItem
|
1900
1950
|
.removeClass(className.selected)
|
1901
1951
|
;
|
1902
1952
|
$nextSelectedItem
|
@@ -1938,12 +1988,10 @@ $.fn.dropdown = function(parameters) {
|
|
1938
1988
|
$module.addClass(className.loading);
|
1939
1989
|
},
|
1940
1990
|
placeholderText: function(text) {
|
1941
|
-
text = text ||
|
1942
|
-
|
1943
|
-
|
1944
|
-
|
1945
|
-
$text.addClass(className.placeholder);
|
1946
|
-
}
|
1991
|
+
text = text || module.get.placeholderText();
|
1992
|
+
module.debug('Setting placeholder text', text);
|
1993
|
+
module.set.text(text);
|
1994
|
+
$text.addClass(className.placeholder);
|
1947
1995
|
},
|
1948
1996
|
tabbable: function() {
|
1949
1997
|
if( module.has.search() ) {
|
@@ -1972,6 +2020,14 @@ $.fn.dropdown = function(parameters) {
|
|
1972
2020
|
module.verbose('Setting initial load');
|
1973
2021
|
initialLoad = true;
|
1974
2022
|
},
|
2023
|
+
activeItem: function($item) {
|
2024
|
+
if( settings.allowAdditions && $item.filter(selector.addition).length > 0 ) {
|
2025
|
+
$item.addClass(className.filtered);
|
2026
|
+
}
|
2027
|
+
else {
|
2028
|
+
$item.addClass(className.active);
|
2029
|
+
}
|
2030
|
+
},
|
1975
2031
|
scrollPosition: function($item, forceScroll) {
|
1976
2032
|
var
|
1977
2033
|
edgeTolerance = 5,
|
@@ -2026,10 +2082,12 @@ $.fn.dropdown = function(parameters) {
|
|
2026
2082
|
}
|
2027
2083
|
}
|
2028
2084
|
else {
|
2085
|
+
if(text !== module.get.placeholderText()) {
|
2086
|
+
$text.removeClass(className.placeholder);
|
2087
|
+
}
|
2029
2088
|
module.debug('Changing text', text, $text);
|
2030
2089
|
$text
|
2031
2090
|
.removeClass(className.filtered)
|
2032
|
-
.removeClass(className.placeholder)
|
2033
2091
|
;
|
2034
2092
|
if(settings.preserveHTML) {
|
2035
2093
|
$text.html(text);
|
@@ -2095,8 +2153,8 @@ $.fn.dropdown = function(parameters) {
|
|
2095
2153
|
hasInput = ($input.length > 0),
|
2096
2154
|
isAddition = !module.has.value(value),
|
2097
2155
|
currentValue = module.get.values(),
|
2098
|
-
stringValue = (
|
2099
|
-
? value
|
2156
|
+
stringValue = (value !== undefined)
|
2157
|
+
? String(value)
|
2100
2158
|
: value,
|
2101
2159
|
newValue
|
2102
2160
|
;
|
@@ -2113,15 +2171,22 @@ $.fn.dropdown = function(parameters) {
|
|
2113
2171
|
module.add.optionValue(value);
|
2114
2172
|
}
|
2115
2173
|
module.debug('Updating input value', value, currentValue);
|
2174
|
+
internalChange = true;
|
2116
2175
|
$input
|
2117
2176
|
.val(value)
|
2118
|
-
.trigger('change')
|
2119
2177
|
;
|
2178
|
+
if(settings.fireOnInit === false && module.is.initialLoad()) {
|
2179
|
+
module.debug('Input native change event ignored on initial load');
|
2180
|
+
}
|
2181
|
+
else {
|
2182
|
+
$input.trigger('change');
|
2183
|
+
}
|
2184
|
+
internalChange = false;
|
2120
2185
|
}
|
2121
2186
|
else {
|
2122
2187
|
module.verbose('Storing value in metadata', value, $input);
|
2123
2188
|
if(value !== currentValue) {
|
2124
|
-
$module.data(metadata.value,
|
2189
|
+
$module.data(metadata.value, stringValue);
|
2125
2190
|
}
|
2126
2191
|
}
|
2127
2192
|
if(settings.fireOnInit === false && module.is.initialLoad()) {
|
@@ -2188,14 +2253,14 @@ $.fn.dropdown = function(parameters) {
|
|
2188
2253
|
if(settings.useLabels) {
|
2189
2254
|
module.add.value(selectedValue, selectedText, $selected);
|
2190
2255
|
module.add.label(selectedValue, selectedText, shouldAnimate);
|
2191
|
-
$selected
|
2256
|
+
module.set.activeItem($selected);
|
2192
2257
|
module.filterActive();
|
2193
2258
|
module.select.nextAvailable($selectedItem);
|
2194
2259
|
}
|
2195
2260
|
else {
|
2196
2261
|
module.add.value(selectedValue, selectedText, $selected);
|
2197
2262
|
module.set.text(module.add.variables(message.count));
|
2198
|
-
$selected
|
2263
|
+
module.set.activeItem($selected);
|
2199
2264
|
}
|
2200
2265
|
}
|
2201
2266
|
else if(!isFiltered) {
|
@@ -2308,7 +2373,8 @@ $.fn.dropdown = function(parameters) {
|
|
2308
2373
|
userSuggestion: function(value) {
|
2309
2374
|
var
|
2310
2375
|
$addition = $menu.children(selector.addition),
|
2311
|
-
|
2376
|
+
$existingItem = module.get.item(value),
|
2377
|
+
alreadyHasValue = $existingItem && $existingItem.not(selector.addition).length,
|
2312
2378
|
hasUserSuggestion = $addition.length > 0,
|
2313
2379
|
html
|
2314
2380
|
;
|
@@ -2323,10 +2389,11 @@ $.fn.dropdown = function(parameters) {
|
|
2323
2389
|
.removeClass(className.selected)
|
2324
2390
|
;
|
2325
2391
|
if(hasUserSuggestion) {
|
2326
|
-
html = settings.templates.addition(value);
|
2392
|
+
html = settings.templates.addition( module.add.variables(message.addResult, value) );
|
2327
2393
|
$addition
|
2328
2394
|
.html(html)
|
2329
|
-
.data
|
2395
|
+
.attr('data-' + metadata.value, value)
|
2396
|
+
.attr('data-' + metadata.text, value)
|
2330
2397
|
.removeClass(className.filtered)
|
2331
2398
|
.addClass(className.selected)
|
2332
2399
|
;
|
@@ -2341,7 +2408,7 @@ $.fn.dropdown = function(parameters) {
|
|
2341
2408
|
module.verbose('Adding item choice to menu corresponding with user choice addition', $addition);
|
2342
2409
|
}
|
2343
2410
|
},
|
2344
|
-
variables: function(message) {
|
2411
|
+
variables: function(message, term) {
|
2345
2412
|
var
|
2346
2413
|
hasCount = (message.search('{count}') !== -1),
|
2347
2414
|
hasMaxCount = (message.search('{maxCount}') !== -1),
|
@@ -2360,7 +2427,7 @@ $.fn.dropdown = function(parameters) {
|
|
2360
2427
|
message = message.replace('{maxCount}', settings.maxSelections);
|
2361
2428
|
}
|
2362
2429
|
if(hasTerm) {
|
2363
|
-
query = module.get.query();
|
2430
|
+
query = term || module.get.query();
|
2364
2431
|
message = message.replace('{term}', query);
|
2365
2432
|
}
|
2366
2433
|
return message;
|
@@ -2395,7 +2462,7 @@ $.fn.dropdown = function(parameters) {
|
|
2395
2462
|
}
|
2396
2463
|
|
2397
2464
|
if(settings.fireOnInit === false && module.is.initialLoad()) {
|
2398
|
-
module.verbose('
|
2465
|
+
module.verbose('Skipping onadd callback on initial load', settings.onAdd);
|
2399
2466
|
}
|
2400
2467
|
else {
|
2401
2468
|
settings.onAdd.call(element, addedValue, addedText, $selectedItem);
|
@@ -2432,7 +2499,7 @@ $.fn.dropdown = function(parameters) {
|
|
2432
2499
|
if(settings.useLabels && module.has.maxSelections() ) {
|
2433
2500
|
return;
|
2434
2501
|
}
|
2435
|
-
if(settings.useLabels) {
|
2502
|
+
if(settings.useLabels && module.is.multiple()) {
|
2436
2503
|
$item.not('.' + className.active).removeClass(className.filtered);
|
2437
2504
|
}
|
2438
2505
|
else {
|
@@ -2493,7 +2560,12 @@ $.fn.dropdown = function(parameters) {
|
|
2493
2560
|
}
|
2494
2561
|
else {
|
2495
2562
|
module.remove.value(selectedValue, selectedText, $selected);
|
2496
|
-
|
2563
|
+
if(module.get.selectionCount() === 0) {
|
2564
|
+
module.set.placeholderText();
|
2565
|
+
}
|
2566
|
+
else {
|
2567
|
+
module.set.text(module.add.variables(message.count));
|
2568
|
+
}
|
2497
2569
|
}
|
2498
2570
|
}
|
2499
2571
|
else {
|
@@ -2565,16 +2637,19 @@ $.fn.dropdown = function(parameters) {
|
|
2565
2637
|
$labels
|
2566
2638
|
.each(function(){
|
2567
2639
|
var
|
2568
|
-
value = $(this).data(
|
2569
|
-
|
2640
|
+
value = $(this).data(metadata.value),
|
2641
|
+
stringValue = (value !== undefined)
|
2642
|
+
? String(value)
|
2643
|
+
: value,
|
2644
|
+
isUserValue = module.is.userValue(stringValue)
|
2570
2645
|
;
|
2571
2646
|
if(isUserValue) {
|
2572
|
-
module.remove.value(
|
2573
|
-
module.remove.label(
|
2647
|
+
module.remove.value(stringValue);
|
2648
|
+
module.remove.label(stringValue);
|
2574
2649
|
}
|
2575
2650
|
else {
|
2576
2651
|
// selected will also remove label
|
2577
|
-
module.remove.selected(
|
2652
|
+
module.remove.selected(stringValue);
|
2578
2653
|
}
|
2579
2654
|
})
|
2580
2655
|
;
|
@@ -2645,6 +2720,9 @@ $.fn.dropdown = function(parameters) {
|
|
2645
2720
|
allResultsFiltered: function() {
|
2646
2721
|
return ($item.filter(selector.unselectable).length === $item.length);
|
2647
2722
|
},
|
2723
|
+
query: function() {
|
2724
|
+
return (module.get.query() !== '');
|
2725
|
+
},
|
2648
2726
|
value: function(value) {
|
2649
2727
|
var
|
2650
2728
|
values = module.get.values(),
|
@@ -3225,6 +3303,13 @@ $.fn.dropdown.settings = {
|
|
3225
3303
|
value : 'value'
|
3226
3304
|
},
|
3227
3305
|
|
3306
|
+
// property names for remote query
|
3307
|
+
fields: {
|
3308
|
+
values : 'values', // grouping for all dropdown values
|
3309
|
+
name : 'name', // displayed dropdown text
|
3310
|
+
value : 'value' // actual dropdown value
|
3311
|
+
},
|
3312
|
+
|
3228
3313
|
selector : {
|
3229
3314
|
addition : '.addition',
|
3230
3315
|
dropdown : '.ui.dropdown',
|
@@ -3295,13 +3380,13 @@ $.fn.dropdown.settings.templates = {
|
|
3295
3380
|
},
|
3296
3381
|
|
3297
3382
|
// generates just menu from select
|
3298
|
-
menu: function(response) {
|
3383
|
+
menu: function(response, fields) {
|
3299
3384
|
var
|
3300
3385
|
values = response.values || {},
|
3301
3386
|
html = ''
|
3302
3387
|
;
|
3303
|
-
$.each(response.values, function(index, option) {
|
3304
|
-
html += '<div class="item" data-value="' + option.value + '">' + option.name + '</div>';
|
3388
|
+
$.each(response[fields.values], function(index, option) {
|
3389
|
+
html += '<div class="item" data-value="' + option[fields.value] + '">' + option[fields.name] + '</div>';
|
3305
3390
|
});
|
3306
3391
|
return html;
|
3307
3392
|
},
|