fomantic-ui 2.9.1-beta.23 → 2.9.1-beta.25
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.
- package/.eslint/eqeqeq-rule.js +18 -0
- package/.eslint/index.js +26 -0
- package/.eslint/no-extra-parens-rule.js +17 -0
- package/.eslint/package.json +11 -0
- package/.eslintrc.js +7 -13
- package/dist/components/accordion.css +1 -1
- package/dist/components/accordion.js +24 -24
- package/dist/components/accordion.min.css +1 -1
- package/dist/components/accordion.min.js +2 -2
- package/dist/components/ad.css +1 -1
- package/dist/components/ad.min.css +1 -1
- package/dist/components/api.js +58 -58
- package/dist/components/api.min.js +2 -2
- package/dist/components/breadcrumb.css +1 -1
- package/dist/components/breadcrumb.min.css +1 -1
- package/dist/components/button.css +1 -1
- package/dist/components/button.min.css +1 -1
- package/dist/components/calendar.css +1 -1
- package/dist/components/calendar.js +84 -72
- package/dist/components/calendar.min.css +1 -1
- package/dist/components/calendar.min.js +2 -2
- package/dist/components/card.css +1 -1
- package/dist/components/card.min.css +1 -1
- package/dist/components/checkbox.css +1 -1
- package/dist/components/checkbox.js +17 -17
- package/dist/components/checkbox.min.css +1 -1
- package/dist/components/checkbox.min.js +2 -2
- package/dist/components/comment.css +1 -1
- package/dist/components/comment.min.css +1 -1
- package/dist/components/container.css +1 -1
- package/dist/components/container.min.css +1 -1
- package/dist/components/dimmer.css +1 -1
- package/dist/components/dimmer.js +18 -18
- package/dist/components/dimmer.min.css +1 -1
- package/dist/components/dimmer.min.js +2 -2
- package/dist/components/divider.css +1 -1
- package/dist/components/divider.min.css +1 -1
- package/dist/components/dropdown.css +1 -1
- package/dist/components/dropdown.js +264 -254
- package/dist/components/dropdown.min.css +1 -1
- package/dist/components/dropdown.min.js +2 -2
- package/dist/components/embed.css +1 -1
- package/dist/components/embed.js +19 -19
- package/dist/components/embed.min.css +1 -1
- package/dist/components/embed.min.js +2 -2
- package/dist/components/feed.css +1 -1
- package/dist/components/feed.min.css +1 -1
- package/dist/components/flag.css +1 -1
- package/dist/components/flag.min.css +1 -1
- package/dist/components/flyout.css +1 -1
- package/dist/components/flyout.js +29 -25
- package/dist/components/flyout.min.css +1 -1
- package/dist/components/flyout.min.js +2 -2
- package/dist/components/form.css +1 -1
- package/dist/components/form.js +158 -141
- package/dist/components/form.min.css +1 -1
- package/dist/components/form.min.js +2 -2
- package/dist/components/grid.css +1 -1
- package/dist/components/grid.min.css +1 -1
- package/dist/components/header.css +1 -1
- package/dist/components/header.min.css +1 -1
- package/dist/components/icon.css +1 -1
- package/dist/components/icon.min.css +1 -1
- package/dist/components/image.css +1 -1
- package/dist/components/image.min.css +1 -1
- package/dist/components/input.css +1 -1
- package/dist/components/input.min.css +1 -1
- package/dist/components/item.css +1 -1
- package/dist/components/item.min.css +1 -1
- package/dist/components/label.css +1 -1
- package/dist/components/label.min.css +1 -1
- package/dist/components/list.css +1 -1
- package/dist/components/list.min.css +1 -1
- package/dist/components/loader.css +1 -1
- package/dist/components/loader.min.css +1 -1
- package/dist/components/message.css +1 -1
- package/dist/components/message.min.css +1 -1
- package/dist/components/modal.css +1 -1
- package/dist/components/modal.js +32 -28
- package/dist/components/modal.min.css +1 -1
- package/dist/components/modal.min.js +2 -2
- package/dist/components/nag.css +1 -1
- package/dist/components/nag.js +10 -10
- package/dist/components/nag.min.css +1 -1
- package/dist/components/nag.min.js +2 -2
- package/dist/components/placeholder.css +1 -1
- package/dist/components/placeholder.min.css +1 -1
- package/dist/components/popup.css +1 -1
- package/dist/components/popup.js +79 -71
- package/dist/components/popup.min.css +1 -1
- package/dist/components/popup.min.js +2 -2
- package/dist/components/progress.css +1 -1
- package/dist/components/progress.js +40 -42
- package/dist/components/progress.min.css +1 -1
- package/dist/components/progress.min.js +2 -2
- package/dist/components/rail.css +1 -1
- package/dist/components/rail.min.css +1 -1
- package/dist/components/rating.css +1 -1
- package/dist/components/rating.js +13 -13
- package/dist/components/rating.min.css +1 -1
- package/dist/components/rating.min.js +2 -2
- package/dist/components/reset.css +1 -1
- package/dist/components/reset.min.css +1 -1
- package/dist/components/reveal.css +1 -1
- package/dist/components/reveal.min.css +1 -1
- package/dist/components/search.css +1 -1
- package/dist/components/search.js +42 -42
- package/dist/components/search.min.css +1 -1
- package/dist/components/search.min.js +2 -2
- package/dist/components/segment.css +1 -1
- package/dist/components/segment.min.css +1 -1
- package/dist/components/shape.css +1 -1
- package/dist/components/shape.js +36 -36
- package/dist/components/shape.min.css +1 -1
- package/dist/components/shape.min.js +2 -2
- package/dist/components/sidebar.css +1 -1
- package/dist/components/sidebar.js +29 -29
- package/dist/components/sidebar.min.css +1 -1
- package/dist/components/sidebar.min.js +2 -2
- package/dist/components/site.css +1 -1
- package/dist/components/site.js +16 -16
- package/dist/components/site.min.css +1 -1
- package/dist/components/site.min.js +2 -2
- package/dist/components/slider.js +79 -58
- package/dist/components/slider.min.js +2 -2
- package/dist/components/state.js +14 -14
- package/dist/components/state.min.js +2 -2
- package/dist/components/statistic.css +1 -1
- package/dist/components/statistic.min.css +1 -1
- package/dist/components/step.css +1 -1
- package/dist/components/step.min.css +1 -1
- package/dist/components/sticky.css +1 -1
- package/dist/components/sticky.js +25 -25
- package/dist/components/sticky.min.css +1 -1
- package/dist/components/sticky.min.js +2 -2
- package/dist/components/tab.css +1 -1
- package/dist/components/tab.js +34 -34
- package/dist/components/tab.min.css +1 -1
- package/dist/components/tab.min.js +2 -2
- package/dist/components/table.css +1 -1
- package/dist/components/table.min.css +1 -1
- package/dist/components/text.css +1 -1
- package/dist/components/text.min.css +1 -1
- package/dist/components/toast.css +1 -1
- package/dist/components/toast.js +43 -19
- package/dist/components/toast.min.css +1 -1
- package/dist/components/toast.min.js +2 -2
- package/dist/components/transition.css +1 -1
- package/dist/components/transition.js +26 -26
- package/dist/components/transition.min.css +1 -1
- package/dist/components/transition.min.js +2 -2
- package/dist/components/visibility.js +29 -29
- package/dist/components/visibility.min.js +2 -2
- package/dist/semantic.css +50 -50
- package/dist/semantic.js +1218 -1120
- package/dist/semantic.min.css +1 -1
- package/dist/semantic.min.js +2 -2
- package/gulpfile.js +1 -1
- package/package.json +2 -1
- package/scripts/nightly-version.js +3 -1
- package/src/definitions/behaviors/api.js +57 -57
- package/src/definitions/behaviors/form.js +157 -140
- package/src/definitions/behaviors/state.js +13 -13
- package/src/definitions/behaviors/visibility.js +28 -28
- package/src/definitions/globals/site.js +15 -15
- package/src/definitions/modules/accordion.js +23 -23
- package/src/definitions/modules/calendar.js +83 -71
- package/src/definitions/modules/checkbox.js +16 -16
- package/src/definitions/modules/dimmer.js +17 -17
- package/src/definitions/modules/dropdown.js +263 -253
- package/src/definitions/modules/embed.js +18 -18
- package/src/definitions/modules/flyout.js +28 -24
- package/src/definitions/modules/modal.js +31 -27
- package/src/definitions/modules/nag.js +9 -9
- package/src/definitions/modules/popup.js +78 -70
- package/src/definitions/modules/progress.js +39 -41
- package/src/definitions/modules/rating.js +12 -12
- package/src/definitions/modules/search.js +41 -41
- package/src/definitions/modules/shape.js +35 -35
- package/src/definitions/modules/sidebar.js +28 -28
- package/src/definitions/modules/slider.js +78 -57
- package/src/definitions/modules/sticky.js +24 -24
- package/src/definitions/modules/tab.js +33 -33
- package/src/definitions/modules/toast.js +42 -18
- package/src/definitions/modules/transition.js +25 -25
- package/tasks/admin/components/create.js +1 -1
- package/tasks/admin/components/init.js +2 -2
- package/tasks/admin/components/update.js +4 -4
- package/tasks/admin/distributions/create.js +6 -7
- package/tasks/admin/distributions/init.js +2 -2
- package/tasks/admin/distributions/update.js +4 -4
- package/tasks/admin/publish.js +1 -3
- package/tasks/admin/register.js +5 -5
- package/tasks/admin/release.js +1 -3
- package/tasks/build/assets.js +1 -1
- package/tasks/build.js +1 -1
- package/tasks/check-install.js +1 -1
- package/tasks/clean.js +1 -1
- package/tasks/collections/admin.js +1 -1
- package/tasks/collections/rtl.js +1 -1
- package/tasks/config/admin/github.js +3 -4
- package/tasks/config/npm/gulpfile.js +1 -1
- package/tasks/config/project/config.js +10 -8
- package/tasks/config/project/install.js +14 -14
- package/tasks/config/project/release.js +3 -2
- package/tasks/config/tasks.js +4 -4
- package/tasks/config/user.js +5 -3
- package/tasks/docs/build.js +1 -1
- package/tasks/docs/metadata.js +2 -2
- package/tasks/docs/serve.js +2 -1
- package/tasks/install.js +3 -3
- package/tasks/rtl/build.js +1 -3
- package/tasks/rtl/watch.js +1 -3
- package/tasks/version.js +1 -3
- package/tasks/watch.js +1 -1
- package/test/modules/module.spec.js +1 -1
@@ -15,7 +15,7 @@
|
|
15
15
|
return typeof obj === 'function' && typeof obj.nodeType !== 'number';
|
16
16
|
}
|
17
17
|
|
18
|
-
window =
|
18
|
+
window = window !== undefined && window.Math === Math
|
19
19
|
? window
|
20
20
|
: globalThis;
|
21
21
|
|
@@ -30,14 +30,14 @@
|
|
30
30
|
performance = [],
|
31
31
|
|
32
32
|
query = arguments[0],
|
33
|
-
methodInvoked =
|
33
|
+
methodInvoked = typeof query === 'string',
|
34
34
|
queryArguments = [].slice.call(arguments, 1),
|
35
35
|
returnedValue
|
36
36
|
;
|
37
37
|
|
38
38
|
$allModules.each(function (elementIndex) {
|
39
39
|
var
|
40
|
-
settings =
|
40
|
+
settings = $.isPlainObject(parameters)
|
41
41
|
? $.extend(true, {}, $.fn.dropdown.settings, parameters)
|
42
42
|
: $.extend({}, $.fn.dropdown.settings),
|
43
43
|
|
@@ -64,13 +64,15 @@
|
|
64
64
|
$icon = $module.find(selector.icon),
|
65
65
|
$clear = $module.find(selector.clearIcon),
|
66
66
|
|
67
|
-
$combo =
|
67
|
+
$combo = $module.prev().find(selector.text).length > 0
|
68
68
|
? $module.prev().find(selector.text)
|
69
69
|
: $module.prev(),
|
70
70
|
|
71
71
|
$menu = $module.children(selector.menu),
|
72
72
|
$item = $menu.find(selector.item),
|
73
|
-
$divider = settings.hideDividers
|
73
|
+
$divider = settings.hideDividers
|
74
|
+
? $item.parent().children(selector.divider)
|
75
|
+
: $(),
|
74
76
|
|
75
77
|
activated = false,
|
76
78
|
itemActivated = false,
|
@@ -243,7 +245,7 @@
|
|
243
245
|
if (settings.hideAdditions) {
|
244
246
|
$userChoice.addClass(className.hidden);
|
245
247
|
}
|
246
|
-
$userChoices =
|
248
|
+
$userChoices = $userChoices === undefined
|
247
249
|
? $userChoice
|
248
250
|
: $userChoices.add($userChoice);
|
249
251
|
module.verbose('Creating user choices for value', value, $userChoice);
|
@@ -279,7 +281,7 @@
|
|
279
281
|
},
|
280
282
|
|
281
283
|
search: function (query) {
|
282
|
-
query =
|
284
|
+
query = query !== undefined
|
283
285
|
? query
|
284
286
|
: module.get.query();
|
285
287
|
module.verbose('Searching for query', query);
|
@@ -308,7 +310,7 @@
|
|
308
310
|
var
|
309
311
|
$nextAvailable = $selected.nextAll(selector.item).not(selector.unselectable).eq(0),
|
310
312
|
$prevAvailable = $selected.prevAll(selector.item).not(selector.unselectable).eq(0),
|
311
|
-
hasNext =
|
313
|
+
hasNext = $nextAvailable.length > 0
|
312
314
|
;
|
313
315
|
if (hasNext) {
|
314
316
|
module.verbose('Moving selection to', $nextAvailable);
|
@@ -468,7 +470,7 @@
|
|
468
470
|
$search = $module.find(selector.search);
|
469
471
|
$input = $module.find(selector.input);
|
470
472
|
$icon = $module.find(selector.icon);
|
471
|
-
$combo =
|
473
|
+
$combo = $module.prev().find(selector.text).length > 0
|
472
474
|
? $module.prev().find(selector.text)
|
473
475
|
: $module.prev();
|
474
476
|
$menu = $module.children(selector.menu);
|
@@ -661,12 +663,12 @@
|
|
661
663
|
;
|
662
664
|
}
|
663
665
|
} else {
|
664
|
-
if (settings.on
|
666
|
+
if (settings.on === 'click') {
|
665
667
|
$module
|
666
668
|
.on('click' + eventNamespace, selector.icon, module.event.icon.click)
|
667
669
|
.on('click' + eventNamespace, module.event.test.toggle)
|
668
670
|
;
|
669
|
-
} else if (settings.on
|
671
|
+
} else if (settings.on === 'hover') {
|
670
672
|
$module
|
671
673
|
.on('mouseenter' + eventNamespace, module.delay.show)
|
672
674
|
.on('mouseleave' + eventNamespace, module.delay.hide)
|
@@ -720,7 +722,7 @@
|
|
720
722
|
|
721
723
|
filter: function (query) {
|
722
724
|
var
|
723
|
-
searchTerm =
|
725
|
+
searchTerm = query !== undefined
|
724
726
|
? query
|
725
727
|
: module.get.query(),
|
726
728
|
afterFiltered = function () {
|
@@ -959,13 +961,13 @@
|
|
959
961
|
termLength = term.length,
|
960
962
|
queryLength = query.length
|
961
963
|
;
|
962
|
-
query =
|
963
|
-
term =
|
964
|
+
query = settings.ignoreSearchCase ? query.toLowerCase() : query;
|
965
|
+
term = settings.ignoreSearchCase ? term.toLowerCase() : term;
|
964
966
|
if (queryLength > termLength) {
|
965
967
|
return false;
|
966
968
|
}
|
967
969
|
if (queryLength === termLength) {
|
968
|
-
return
|
970
|
+
return query === term;
|
969
971
|
}
|
970
972
|
for (var characterIndex = 0, nextCharacterIndex = 0; characterIndex < queryLength; characterIndex++) {
|
971
973
|
var
|
@@ -988,8 +990,8 @@
|
|
988
990
|
return true;
|
989
991
|
},
|
990
992
|
exactSearch: function (query, term) {
|
991
|
-
query =
|
992
|
-
term =
|
993
|
+
query = settings.ignoreSearchCase ? query.toLowerCase() : query;
|
994
|
+
term = settings.ignoreSearchCase ? term.toLowerCase() : term;
|
993
995
|
|
994
996
|
return term.indexOf(query) > -1;
|
995
997
|
},
|
@@ -1023,10 +1025,10 @@
|
|
1023
1025
|
var
|
1024
1026
|
$currentlySelected = $item.not(className.filtered).filter('.' + className.selected).eq(0),
|
1025
1027
|
$activeItem = $item.not(className.filtered).filter('.' + className.active).eq(0),
|
1026
|
-
$selectedItem =
|
1028
|
+
$selectedItem = $currentlySelected.length > 0
|
1027
1029
|
? $currentlySelected
|
1028
1030
|
: $activeItem,
|
1029
|
-
hasSelected =
|
1031
|
+
hasSelected = $selectedItem.length > 0
|
1030
1032
|
;
|
1031
1033
|
if (settings.allowAdditions || (hasSelected && !module.is.multiple())) {
|
1032
1034
|
module.debug('Forcing partial selection to selected item', $selectedItem);
|
@@ -1098,7 +1100,7 @@
|
|
1098
1100
|
}
|
1099
1101
|
},
|
1100
1102
|
blur: function (event) {
|
1101
|
-
pageLostFocus =
|
1103
|
+
pageLostFocus = document.activeElement === this;
|
1102
1104
|
if (!activated && !pageLostFocus) {
|
1103
1105
|
module.remove.activeLabel();
|
1104
1106
|
module.hide();
|
@@ -1146,7 +1148,7 @@
|
|
1146
1148
|
}
|
1147
1149
|
},
|
1148
1150
|
blur: function (event) {
|
1149
|
-
pageLostFocus =
|
1151
|
+
pageLostFocus = document.activeElement === this;
|
1150
1152
|
if (module.is.searchSelection(true) && !willRefocus) {
|
1151
1153
|
if (!itemActivated && !pageLostFocus) {
|
1152
1154
|
if (settings.forceSelection) {
|
@@ -1210,7 +1212,7 @@
|
|
1210
1212
|
$activeLabels = $labels.filter('.' + className.active),
|
1211
1213
|
$nextActive = $label.nextAll('.' + className.active),
|
1212
1214
|
$prevActive = $label.prevAll('.' + className.active),
|
1213
|
-
$range =
|
1215
|
+
$range = $nextActive.length > 0
|
1214
1216
|
? $label.nextUntil($nextActive).add($activeLabels).add($label)
|
1215
1217
|
: $label.prevUntil($prevActive).add($activeLabels).add($label)
|
1216
1218
|
;
|
@@ -1245,7 +1247,7 @@
|
|
1245
1247
|
test: {
|
1246
1248
|
toggle: function (event) {
|
1247
1249
|
var
|
1248
|
-
toggleBehavior =
|
1250
|
+
toggleBehavior = module.is.multiple()
|
1249
1251
|
? module.show
|
1250
1252
|
: module.toggle
|
1251
1253
|
;
|
@@ -1326,8 +1328,8 @@
|
|
1326
1328
|
$item = $(this),
|
1327
1329
|
$subMenu = $item.children(selector.menu),
|
1328
1330
|
$otherMenus = $item.siblings(selector.item).children(selector.menu),
|
1329
|
-
hasSubMenu =
|
1330
|
-
isBubbledEvent =
|
1331
|
+
hasSubMenu = $subMenu.length > 0,
|
1332
|
+
isBubbledEvent = $subMenu.find($target).length > 0
|
1331
1333
|
;
|
1332
1334
|
if (!isBubbledEvent && hasSubMenu) {
|
1333
1335
|
clearTimeout(module.itemTimer);
|
@@ -1358,14 +1360,14 @@
|
|
1358
1360
|
click: function (event, skipRefocus) {
|
1359
1361
|
var
|
1360
1362
|
$choice = $(this),
|
1361
|
-
$target =
|
1363
|
+
$target = event
|
1362
1364
|
? $(event.target)
|
1363
1365
|
: $(''),
|
1364
1366
|
$subMenu = $choice.find(selector.menu),
|
1365
1367
|
text = module.get.choiceText($choice),
|
1366
1368
|
value = module.get.choiceValue($choice, text),
|
1367
|
-
hasSubMenu =
|
1368
|
-
isBubbledEvent =
|
1369
|
+
hasSubMenu = $subMenu.length > 0,
|
1370
|
+
isBubbledEvent = $subMenu.find($target).length > 0
|
1369
1371
|
;
|
1370
1372
|
// prevents IE11 bug where menu receives focus even though `tabindex=-1`
|
1371
1373
|
if (document.activeElement.tagName.toLowerCase() !== 'input') {
|
@@ -1408,96 +1410,108 @@
|
|
1408
1410
|
activeValue = $activeLabel.data(metadata.value),
|
1409
1411
|
labelIndex = $label.index($activeLabel),
|
1410
1412
|
labelCount = $label.length,
|
1411
|
-
hasActiveLabel =
|
1412
|
-
hasMultipleActive =
|
1413
|
-
isFirstLabel =
|
1414
|
-
isLastLabel =
|
1413
|
+
hasActiveLabel = $activeLabel.length > 0,
|
1414
|
+
hasMultipleActive = $activeLabel.length > 1,
|
1415
|
+
isFirstLabel = labelIndex === 0,
|
1416
|
+
isLastLabel = labelIndex + 1 === labelCount,
|
1415
1417
|
isSearch = module.is.searchSelection(),
|
1416
1418
|
isFocusedOnSearch = module.is.focusedOnSearch(),
|
1417
1419
|
isFocused = module.is.focused(),
|
1418
|
-
caretAtStart =
|
1419
|
-
isSelectedSearch =
|
1420
|
+
caretAtStart = isFocusedOnSearch && module.get.caretPosition(false) === 0,
|
1421
|
+
isSelectedSearch = caretAtStart && module.get.caretPosition(true) !== 0
|
1420
1422
|
;
|
1421
1423
|
if (isSearch && !hasActiveLabel && !isFocusedOnSearch) {
|
1422
1424
|
return;
|
1423
1425
|
}
|
1424
1426
|
|
1425
|
-
|
1426
|
-
|
1427
|
-
|
1428
|
-
|
1429
|
-
$label.last().addClass(className.active);
|
1430
|
-
} else if (hasActiveLabel) {
|
1431
|
-
if (!event.shiftKey) {
|
1427
|
+
switch (pressedKey) {
|
1428
|
+
case keys.leftArrow: {
|
1429
|
+
// activate previous label
|
1430
|
+
if ((isFocused || caretAtStart) && !hasActiveLabel) {
|
1432
1431
|
module.verbose('Selecting previous label');
|
1433
|
-
$label.
|
1434
|
-
} else {
|
1435
|
-
|
1436
|
-
|
1437
|
-
|
1438
|
-
|
1439
|
-
|
1440
|
-
|
1441
|
-
|
1442
|
-
.
|
1443
|
-
|
1432
|
+
$label.last().addClass(className.active);
|
1433
|
+
} else if (hasActiveLabel) {
|
1434
|
+
if (!event.shiftKey) {
|
1435
|
+
module.verbose('Selecting previous label');
|
1436
|
+
$label.removeClass(className.active);
|
1437
|
+
} else {
|
1438
|
+
module.verbose('Adding previous label to selection');
|
1439
|
+
}
|
1440
|
+
if (isFirstLabel && !hasMultipleActive) {
|
1441
|
+
$activeLabel.addClass(className.active);
|
1442
|
+
} else {
|
1443
|
+
$activeLabel.prev(selector.siblingLabel)
|
1444
|
+
.addClass(className.active)
|
1445
|
+
.end()
|
1446
|
+
;
|
1447
|
+
}
|
1448
|
+
event.preventDefault();
|
1444
1449
|
}
|
1445
|
-
|
1446
|
-
|
1447
|
-
} else if (pressedKey == keys.rightArrow) {
|
1448
|
-
// activate first label
|
1449
|
-
if (isFocused && !hasActiveLabel) {
|
1450
|
-
$label.first().addClass(className.active);
|
1450
|
+
|
1451
|
+
break;
|
1451
1452
|
}
|
1452
|
-
|
1453
|
-
|
1454
|
-
if (!
|
1455
|
-
|
1456
|
-
$label.removeClass(className.active);
|
1457
|
-
} else {
|
1458
|
-
module.verbose('Adding next label to selection');
|
1453
|
+
case keys.rightArrow: {
|
1454
|
+
// activate first label
|
1455
|
+
if (isFocused && !hasActiveLabel) {
|
1456
|
+
$label.first().addClass(className.active);
|
1459
1457
|
}
|
1460
|
-
|
1461
|
-
|
1462
|
-
|
1463
|
-
|
1458
|
+
// activate next label
|
1459
|
+
if (hasActiveLabel) {
|
1460
|
+
if (!event.shiftKey) {
|
1461
|
+
module.verbose('Selecting next label');
|
1462
|
+
$label.removeClass(className.active);
|
1463
|
+
} else {
|
1464
|
+
module.verbose('Adding next label to selection');
|
1465
|
+
}
|
1466
|
+
if (isLastLabel) {
|
1467
|
+
if (isSearch) {
|
1468
|
+
if (!isFocusedOnSearch) {
|
1469
|
+
module.focusSearch();
|
1470
|
+
} else {
|
1471
|
+
$label.removeClass(className.active);
|
1472
|
+
}
|
1473
|
+
} else if (hasMultipleActive) {
|
1474
|
+
$activeLabel.next(selector.siblingLabel).addClass(className.active);
|
1464
1475
|
} else {
|
1465
|
-
$
|
1476
|
+
$activeLabel.addClass(className.active);
|
1466
1477
|
}
|
1467
|
-
} else if (hasMultipleActive) {
|
1468
|
-
$activeLabel.next(selector.siblingLabel).addClass(className.active);
|
1469
1478
|
} else {
|
1470
|
-
$activeLabel.addClass(className.active);
|
1479
|
+
$activeLabel.next(selector.siblingLabel).addClass(className.active);
|
1471
1480
|
}
|
1472
|
-
|
1473
|
-
$activeLabel.next(selector.siblingLabel).addClass(className.active);
|
1481
|
+
event.preventDefault();
|
1474
1482
|
}
|
1475
|
-
|
1483
|
+
|
1484
|
+
break;
|
1476
1485
|
}
|
1477
|
-
|
1478
|
-
|
1479
|
-
|
1480
|
-
|
1481
|
-
if (
|
1482
|
-
|
1486
|
+
case keys.deleteKey:
|
1487
|
+
case keys.backspace: {
|
1488
|
+
if (hasActiveLabel) {
|
1489
|
+
module.verbose('Removing active labels');
|
1490
|
+
if (isLastLabel) {
|
1491
|
+
if (isSearch && !isFocusedOnSearch) {
|
1492
|
+
module.focusSearch();
|
1493
|
+
}
|
1494
|
+
}
|
1495
|
+
$activeLabel.last().next(selector.siblingLabel).addClass(className.active);
|
1496
|
+
module.remove.activeLabels($activeLabel);
|
1497
|
+
if (!module.is.visible()) {
|
1498
|
+
module.show();
|
1499
|
+
}
|
1500
|
+
event.preventDefault();
|
1501
|
+
} else if (caretAtStart && !isSelectedSearch && !hasActiveLabel && pressedKey === keys.backspace) {
|
1502
|
+
module.verbose('Removing last label on input backspace');
|
1503
|
+
$activeLabel = $label.last().addClass(className.active);
|
1504
|
+
module.remove.activeLabels($activeLabel);
|
1505
|
+
if (!module.is.visible()) {
|
1506
|
+
module.show();
|
1483
1507
|
}
|
1484
1508
|
}
|
1485
|
-
|
1486
|
-
|
1487
|
-
|
1488
|
-
|
1489
|
-
|
1490
|
-
event.preventDefault();
|
1491
|
-
} else if (caretAtStart && !isSelectedSearch && !hasActiveLabel && pressedKey == keys.backspace) {
|
1492
|
-
module.verbose('Removing last label on input backspace');
|
1493
|
-
$activeLabel = $label.last().addClass(className.active);
|
1494
|
-
module.remove.activeLabels($activeLabel);
|
1495
|
-
if (!module.is.visible()) {
|
1496
|
-
module.show();
|
1497
|
-
}
|
1509
|
+
|
1510
|
+
break;
|
1511
|
+
}
|
1512
|
+
default: {
|
1513
|
+
$activeLabel.removeClass(className.active);
|
1498
1514
|
}
|
1499
|
-
} else {
|
1500
|
-
$activeLabel.removeClass(className.active);
|
1501
1515
|
}
|
1502
1516
|
}
|
1503
1517
|
},
|
@@ -1512,20 +1526,20 @@
|
|
1512
1526
|
var
|
1513
1527
|
$currentlySelected = $item.not(selector.unselectable).filter('.' + className.selected).eq(0),
|
1514
1528
|
$activeItem = $menu.children('.' + className.active).eq(0),
|
1515
|
-
$selectedItem =
|
1529
|
+
$selectedItem = $currentlySelected.length > 0
|
1516
1530
|
? $currentlySelected
|
1517
1531
|
: $activeItem,
|
1518
|
-
$visibleItems =
|
1532
|
+
$visibleItems = $selectedItem.length > 0
|
1519
1533
|
? $selectedItem.siblings(':not(.' + className.filtered + ')').addBack()
|
1520
1534
|
: $menu.children(':not(.' + className.filtered + ')'),
|
1521
1535
|
$subMenu = $selectedItem.children(selector.menu),
|
1522
1536
|
$parentMenu = $selectedItem.closest(selector.menu),
|
1523
|
-
inVisibleMenu =
|
1524
|
-
hasSubMenu =
|
1525
|
-
hasSelectedItem =
|
1526
|
-
selectedIsSelectable =
|
1527
|
-
delimiterPressed =
|
1528
|
-
isAdditionWithoutMenu = settings.allowAdditions && (pressedKey
|
1537
|
+
inVisibleMenu = $parentMenu.hasClass(className.visible) || $parentMenu.hasClass(className.animating) || $parentMenu.parent(selector.menu).length > 0,
|
1538
|
+
hasSubMenu = $subMenu.length > 0,
|
1539
|
+
hasSelectedItem = $selectedItem.length > 0,
|
1540
|
+
selectedIsSelectable = $selectedItem.not(selector.unselectable).length > 0,
|
1541
|
+
delimiterPressed = event.key === settings.delimiter && module.is.multiple(),
|
1542
|
+
isAdditionWithoutMenu = settings.allowAdditions && (pressedKey === keys.enter || delimiterPressed),
|
1529
1543
|
$nextItem,
|
1530
1544
|
isSubMenuItem
|
1531
1545
|
;
|
@@ -1546,8 +1560,8 @@
|
|
1546
1560
|
// visible menu keyboard shortcuts
|
1547
1561
|
if (module.is.visible()) {
|
1548
1562
|
// enter (select or open sub-menu)
|
1549
|
-
if (pressedKey
|
1550
|
-
if (pressedKey
|
1563
|
+
if (pressedKey === keys.enter || delimiterPressed) {
|
1564
|
+
if (pressedKey === keys.enter && hasSelectedItem && hasSubMenu && !settings.allowCategorySelection) {
|
1551
1565
|
module.verbose('Pressed enter on unselectable category, opening sub menu');
|
1552
1566
|
pressedKey = keys.rightArrow;
|
1553
1567
|
} else if (selectedIsSelectable) {
|
@@ -1565,8 +1579,8 @@
|
|
1565
1579
|
|
1566
1580
|
// sub-menu actions
|
1567
1581
|
if (hasSelectedItem) {
|
1568
|
-
if (pressedKey
|
1569
|
-
isSubMenuItem =
|
1582
|
+
if (pressedKey === keys.leftArrow) {
|
1583
|
+
isSubMenuItem = $parentMenu[0] !== $menu[0];
|
1570
1584
|
|
1571
1585
|
if (isSubMenuItem) {
|
1572
1586
|
module.verbose('Left key pressed, closing sub-menu');
|
@@ -1583,7 +1597,7 @@
|
|
1583
1597
|
}
|
1584
1598
|
|
1585
1599
|
// right arrow (show sub-menu)
|
1586
|
-
if (pressedKey
|
1600
|
+
if (pressedKey === keys.rightArrow) {
|
1587
1601
|
if (hasSubMenu) {
|
1588
1602
|
module.verbose('Right key pressed, opening sub-menu');
|
1589
1603
|
module.animate.show(false, $subMenu);
|
@@ -1600,8 +1614,8 @@
|
|
1600
1614
|
}
|
1601
1615
|
|
1602
1616
|
// up arrow (traverse menu up)
|
1603
|
-
if (pressedKey
|
1604
|
-
$nextItem =
|
1617
|
+
if (pressedKey === keys.upArrow) {
|
1618
|
+
$nextItem = hasSelectedItem && inVisibleMenu
|
1605
1619
|
? $selectedItem.prevAll(selector.item + ':not(' + selector.unselectable + ')').eq(0)
|
1606
1620
|
: $item.eq(0);
|
1607
1621
|
if ($visibleItems.index($nextItem) < 0) {
|
@@ -1627,8 +1641,8 @@
|
|
1627
1641
|
}
|
1628
1642
|
|
1629
1643
|
// down arrow (traverse menu down)
|
1630
|
-
if (pressedKey
|
1631
|
-
$nextItem =
|
1644
|
+
if (pressedKey === keys.downArrow) {
|
1645
|
+
$nextItem = hasSelectedItem && inVisibleMenu
|
1632
1646
|
? $selectedItem.nextAll(selector.item + ':not(' + selector.unselectable + ')').eq(0)
|
1633
1647
|
: $item.eq(0);
|
1634
1648
|
if ($nextItem.length === 0) {
|
@@ -1654,28 +1668,28 @@
|
|
1654
1668
|
}
|
1655
1669
|
|
1656
1670
|
// page down (show next page)
|
1657
|
-
if (pressedKey
|
1671
|
+
if (pressedKey === keys.pageUp) {
|
1658
1672
|
module.scrollPage('up');
|
1659
1673
|
event.preventDefault();
|
1660
1674
|
}
|
1661
|
-
if (pressedKey
|
1675
|
+
if (pressedKey === keys.pageDown) {
|
1662
1676
|
module.scrollPage('down');
|
1663
1677
|
event.preventDefault();
|
1664
1678
|
}
|
1665
1679
|
|
1666
1680
|
// escape (close menu)
|
1667
|
-
if (pressedKey
|
1681
|
+
if (pressedKey === keys.escape) {
|
1668
1682
|
module.verbose('Escape key pressed, closing dropdown');
|
1669
1683
|
module.hide();
|
1670
1684
|
event.stopPropagation();
|
1671
1685
|
}
|
1672
1686
|
} else {
|
1673
1687
|
// delimiter key
|
1674
|
-
if (pressedKey
|
1688
|
+
if (pressedKey === keys.enter || delimiterPressed) {
|
1675
1689
|
event.preventDefault();
|
1676
1690
|
}
|
1677
1691
|
// down arrow (open menu)
|
1678
|
-
if (pressedKey
|
1692
|
+
if (pressedKey === keys.downArrow && !module.is.visible()) {
|
1679
1693
|
module.verbose('Down key pressed, showing dropdown');
|
1680
1694
|
module.show();
|
1681
1695
|
event.preventDefault();
|
@@ -1721,8 +1735,8 @@
|
|
1721
1735
|
eventInModule: function (event, callback) {
|
1722
1736
|
var
|
1723
1737
|
$target = $(event.target),
|
1724
|
-
inDocument =
|
1725
|
-
inModule =
|
1738
|
+
inDocument = $target.closest(document.documentElement).length > 0,
|
1739
|
+
inModule = $target.closest($module).length > 0
|
1726
1740
|
;
|
1727
1741
|
callback = isFunction(callback)
|
1728
1742
|
? callback
|
@@ -1743,8 +1757,8 @@
|
|
1743
1757
|
$target = $(event.target),
|
1744
1758
|
$label = $target.closest(selector.siblingLabel),
|
1745
1759
|
inVisibleDOM = document.body.contains(event.target),
|
1746
|
-
notOnLabel =
|
1747
|
-
notInMenu =
|
1760
|
+
notOnLabel = $module.find($label).length === 0 || !(module.is.multiple() && settings.useLabels),
|
1761
|
+
notInMenu = $target.closest($menu).length === 0
|
1748
1762
|
;
|
1749
1763
|
callback = isFunction(callback)
|
1750
1764
|
? callback
|
@@ -1767,7 +1781,7 @@
|
|
1767
1781
|
nothing: function () {},
|
1768
1782
|
|
1769
1783
|
activate: function (text, value, element) {
|
1770
|
-
value =
|
1784
|
+
value = value !== undefined
|
1771
1785
|
? value
|
1772
1786
|
: text;
|
1773
1787
|
if (module.can.activate($(element))) {
|
@@ -1779,7 +1793,7 @@
|
|
1779
1793
|
},
|
1780
1794
|
|
1781
1795
|
select: function (text, value, element) {
|
1782
|
-
value =
|
1796
|
+
value = value !== undefined
|
1783
1797
|
? value
|
1784
1798
|
: text;
|
1785
1799
|
if (module.can.activate($(element))) {
|
@@ -1791,7 +1805,7 @@
|
|
1791
1805
|
},
|
1792
1806
|
|
1793
1807
|
combo: function (text, value, element) {
|
1794
|
-
value =
|
1808
|
+
value = value !== undefined
|
1795
1809
|
? value
|
1796
1810
|
: text;
|
1797
1811
|
module.set.selected(value, $(element));
|
@@ -1816,7 +1830,7 @@
|
|
1816
1830
|
return $module.data(metadata.defaultValue);
|
1817
1831
|
},
|
1818
1832
|
placeholderText: function () {
|
1819
|
-
if (settings.placeholder
|
1833
|
+
if (settings.placeholder !== 'auto' && typeof settings.placeholder === 'string') {
|
1820
1834
|
return settings.placeholder;
|
1821
1835
|
}
|
1822
1836
|
|
@@ -1829,7 +1843,7 @@
|
|
1829
1843
|
return String($search.val()).trim();
|
1830
1844
|
},
|
1831
1845
|
searchWidth: function (value) {
|
1832
|
-
value =
|
1846
|
+
value = value !== undefined
|
1833
1847
|
? value
|
1834
1848
|
: $search.val();
|
1835
1849
|
$sizer.text(value);
|
@@ -1842,21 +1856,15 @@
|
|
1842
1856
|
values = module.get.values(),
|
1843
1857
|
count
|
1844
1858
|
;
|
1845
|
-
count =
|
1846
|
-
? Array.isArray(values)
|
1847
|
-
|
1848
|
-
: 0
|
1849
|
-
: (module.get.value() !== '')
|
1850
|
-
? 1
|
1851
|
-
: 0;
|
1859
|
+
count = module.is.multiple()
|
1860
|
+
? (Array.isArray(values) ? values.length : 0)
|
1861
|
+
: (module.get.value() !== '' ? 1 : 0);
|
1852
1862
|
|
1853
1863
|
return count;
|
1854
1864
|
},
|
1855
1865
|
transition: function ($subMenu) {
|
1856
|
-
return
|
1857
|
-
? module.is.upward($subMenu)
|
1858
|
-
? 'slide up'
|
1859
|
-
: 'slide down'
|
1866
|
+
return settings.transition === 'auto'
|
1867
|
+
? (module.is.upward($subMenu) ? 'slide up' : 'slide down')
|
1860
1868
|
: settings.transition;
|
1861
1869
|
},
|
1862
1870
|
userValues: function () {
|
@@ -1871,7 +1879,7 @@
|
|
1871
1879
|
: [values];
|
1872
1880
|
|
1873
1881
|
return $.grep(values, function (value) {
|
1874
|
-
return
|
1882
|
+
return module.get.item(value) === false;
|
1875
1883
|
});
|
1876
1884
|
},
|
1877
1885
|
uniqueArray: function (array) {
|
@@ -1905,14 +1913,14 @@
|
|
1905
1913
|
},
|
1906
1914
|
value: function () {
|
1907
1915
|
var
|
1908
|
-
value =
|
1916
|
+
value = $input.length > 0
|
1909
1917
|
? $input.val()
|
1910
1918
|
: $module.data(metadata.value),
|
1911
|
-
isEmptyMultiselect =
|
1919
|
+
isEmptyMultiselect = Array.isArray(value) && value.length === 1 && value[0] === ''
|
1912
1920
|
;
|
1913
1921
|
|
1914
1922
|
// prevents placeholder element from being selected when multiple
|
1915
|
-
return
|
1923
|
+
return value === undefined || isEmptyMultiselect
|
1916
1924
|
? ''
|
1917
1925
|
: value;
|
1918
1926
|
},
|
@@ -1924,10 +1932,12 @@
|
|
1924
1932
|
return '';
|
1925
1933
|
}
|
1926
1934
|
|
1927
|
-
return
|
1928
|
-
? (typeof value === 'string'
|
1929
|
-
? (raw
|
1930
|
-
|
1935
|
+
return !module.has.selectInput() && module.is.multiple()
|
1936
|
+
? (typeof value === 'string' // delimited string
|
1937
|
+
? (raw
|
1938
|
+
? value
|
1939
|
+
: module.escape.htmlEntities(value)).split(settings.delimiter)
|
1940
|
+
: '')
|
1931
1941
|
: value;
|
1932
1942
|
},
|
1933
1943
|
remoteValues: function () {
|
@@ -1956,7 +1966,7 @@
|
|
1956
1966
|
return remoteValues;
|
1957
1967
|
},
|
1958
1968
|
choiceText: function ($choice, preserveHTML) {
|
1959
|
-
preserveHTML =
|
1969
|
+
preserveHTML = preserveHTML !== undefined
|
1960
1970
|
? preserveHTML
|
1961
1971
|
: settings.preserveHTML;
|
1962
1972
|
if ($choice) {
|
@@ -1967,11 +1977,11 @@
|
|
1967
1977
|
$choice.find(selector.menuIcon).remove();
|
1968
1978
|
}
|
1969
1979
|
|
1970
|
-
return
|
1980
|
+
return $choice.data(metadata.text) !== undefined
|
1971
1981
|
? $choice.data(metadata.text)
|
1972
|
-
: (preserveHTML
|
1982
|
+
: (preserveHTML
|
1973
1983
|
? $choice.html() && $choice.html().trim()
|
1974
|
-
: $choice.text() && $choice.text().trim();
|
1984
|
+
: $choice.text() && $choice.text().trim());
|
1975
1985
|
}
|
1976
1986
|
},
|
1977
1987
|
choiceValue: function ($choice, choiceText) {
|
@@ -1980,26 +1990,26 @@
|
|
1980
1990
|
return false;
|
1981
1991
|
}
|
1982
1992
|
|
1983
|
-
return
|
1993
|
+
return $choice.data(metadata.value) !== undefined
|
1984
1994
|
? String($choice.data(metadata.value))
|
1985
|
-
: (typeof choiceText === 'string'
|
1995
|
+
: (typeof choiceText === 'string'
|
1986
1996
|
? String(
|
1987
1997
|
settings.ignoreSearchCase
|
1988
1998
|
? choiceText.toLowerCase()
|
1989
1999
|
: choiceText
|
1990
2000
|
).trim()
|
1991
|
-
: String(choiceText);
|
2001
|
+
: String(choiceText));
|
1992
2002
|
},
|
1993
2003
|
inputEvent: function () {
|
1994
2004
|
var
|
1995
2005
|
input = $search[0]
|
1996
2006
|
;
|
1997
2007
|
if (input) {
|
1998
|
-
return
|
2008
|
+
return input.oninput !== undefined
|
1999
2009
|
? 'input'
|
2000
|
-
: (input.onpropertychange !== undefined
|
2010
|
+
: (input.onpropertychange !== undefined
|
2001
2011
|
? 'propertychange'
|
2002
|
-
: 'keyup';
|
2012
|
+
: 'keyup');
|
2003
2013
|
}
|
2004
2014
|
|
2005
2015
|
return false;
|
@@ -2017,10 +2027,10 @@
|
|
2017
2027
|
$option = $(this),
|
2018
2028
|
name = $option.html(),
|
2019
2029
|
disabled = $option.attr('disabled'),
|
2020
|
-
value =
|
2030
|
+
value = $option.attr('value') !== undefined
|
2021
2031
|
? $option.attr('value')
|
2022
2032
|
: name,
|
2023
|
-
text =
|
2033
|
+
text = $option.data(metadata.text) !== undefined
|
2024
2034
|
? $option.data(metadata.text)
|
2025
2035
|
: name,
|
2026
2036
|
group = $option.parent('optgroup')
|
@@ -2056,7 +2066,7 @@
|
|
2056
2066
|
});
|
2057
2067
|
} else if (settings.sortSelect === 'natural') {
|
2058
2068
|
values.sort(function (a, b) {
|
2059
|
-
return
|
2069
|
+
return a.name.toLowerCase().localeCompare(b.name.toLowerCase());
|
2060
2070
|
});
|
2061
2071
|
} else if (isFunction(settings.sortSelect)) {
|
2062
2072
|
values.sort(settings.sortSelect);
|
@@ -2078,7 +2088,7 @@
|
|
2078
2088
|
$selectedItem = $item.not(selector.unselectable).filter('.' + className.selected)
|
2079
2089
|
;
|
2080
2090
|
|
2081
|
-
return
|
2091
|
+
return $selectedItem.length > 0
|
2082
2092
|
? $selectedItem
|
2083
2093
|
: $item.eq(0);
|
2084
2094
|
},
|
@@ -2086,10 +2096,10 @@
|
|
2086
2096
|
var
|
2087
2097
|
$items = module.get.item(value),
|
2088
2098
|
$userItems = module.create.userChoice(value),
|
2089
|
-
hasUserItems =
|
2099
|
+
hasUserItems = $userItems && $userItems.length > 0
|
2090
2100
|
;
|
2091
2101
|
if (hasUserItems) {
|
2092
|
-
$items =
|
2102
|
+
$items = $items.length > 0
|
2093
2103
|
? $items.add($userItems)
|
2094
2104
|
: $userItems;
|
2095
2105
|
}
|
@@ -2102,16 +2112,16 @@
|
|
2102
2112
|
shouldSearch,
|
2103
2113
|
isMultiple
|
2104
2114
|
;
|
2105
|
-
value =
|
2115
|
+
value = value !== undefined
|
2106
2116
|
? value
|
2107
|
-
: (module.get.values() !== undefined
|
2117
|
+
: (module.get.values() !== undefined
|
2108
2118
|
? module.get.values()
|
2109
|
-
: module.get.text();
|
2110
|
-
isMultiple =
|
2111
|
-
shouldSearch =
|
2112
|
-
?
|
2113
|
-
:
|
2114
|
-
strict =
|
2119
|
+
: module.get.text());
|
2120
|
+
isMultiple = module.is.multiple() && Array.isArray(value);
|
2121
|
+
shouldSearch = isMultiple
|
2122
|
+
? value.length > 0
|
2123
|
+
: value !== undefined && value !== null;
|
2124
|
+
strict = value === '' || value === false || value === true
|
2115
2125
|
? true
|
2116
2126
|
: strict || false;
|
2117
2127
|
if (shouldSearch) {
|
@@ -2128,7 +2138,7 @@
|
|
2128
2138
|
}
|
2129
2139
|
if (isMultiple) {
|
2130
2140
|
if ($.inArray(module.escape.htmlEntities(String(optionValue)), value.map(String)) !== -1) {
|
2131
|
-
$selectedItem =
|
2141
|
+
$selectedItem = $selectedItem
|
2132
2142
|
? $selectedItem.add($choice)
|
2133
2143
|
: $choice;
|
2134
2144
|
}
|
@@ -2165,7 +2175,7 @@
|
|
2165
2175
|
check: {
|
2166
2176
|
maxSelections: function (selectionCount) {
|
2167
2177
|
if (settings.maxSelections) {
|
2168
|
-
selectionCount =
|
2178
|
+
selectionCount = selectionCount !== undefined
|
2169
2179
|
? selectionCount
|
2170
2180
|
: module.get.selectionCount();
|
2171
2181
|
if (selectionCount >= settings.maxSelections) {
|
@@ -2299,7 +2309,7 @@
|
|
2299
2309
|
}
|
2300
2310
|
name = sessionStorage.getItem(value + elementNamespace);
|
2301
2311
|
|
2302
|
-
return
|
2312
|
+
return name !== undefined
|
2303
2313
|
? name
|
2304
2314
|
: false;
|
2305
2315
|
},
|
@@ -2370,7 +2380,7 @@
|
|
2370
2380
|
currentScroll = $menu.scrollTop(),
|
2371
2381
|
itemHeight = $item.eq(0).outerHeight(),
|
2372
2382
|
itemsPerPage = Math.floor(menuHeight / itemHeight),
|
2373
|
-
newScroll =
|
2383
|
+
newScroll = direction === 'up'
|
2374
2384
|
? currentScroll - (itemHeight * itemsPerPage)
|
2375
2385
|
: currentScroll + (itemHeight * itemsPerPage),
|
2376
2386
|
$selectableItem = $item.not(selector.unselectable),
|
@@ -2378,17 +2388,17 @@
|
|
2378
2388
|
$nextSelectedItem,
|
2379
2389
|
elementIndex
|
2380
2390
|
;
|
2381
|
-
elementIndex =
|
2391
|
+
elementIndex = direction === 'up'
|
2382
2392
|
? $selectableItem.index($currentItem) - itemsPerPage
|
2383
2393
|
: $selectableItem.index($currentItem) + itemsPerPage;
|
2384
|
-
isWithinRange =
|
2385
|
-
?
|
2386
|
-
:
|
2387
|
-
$nextSelectedItem =
|
2394
|
+
isWithinRange = direction === 'up'
|
2395
|
+
? elementIndex >= 0
|
2396
|
+
: elementIndex < $selectableItem.length;
|
2397
|
+
$nextSelectedItem = isWithinRange
|
2388
2398
|
? $selectableItem.eq(elementIndex)
|
2389
|
-
: (direction
|
2399
|
+
: (direction === 'up'
|
2390
2400
|
? $selectableItem.first()
|
2391
|
-
: $selectableItem.last();
|
2401
|
+
: $selectableItem.last());
|
2392
2402
|
if ($nextSelectedItem.length > 0) {
|
2393
2403
|
module.debug('Scrolling page', direction, $nextSelectedItem);
|
2394
2404
|
$currentItem
|
@@ -2411,11 +2421,11 @@
|
|
2411
2421
|
var
|
2412
2422
|
isMultiple = module.is.multiple(),
|
2413
2423
|
isSearch = module.is.searchSelection(),
|
2414
|
-
isSearchMultiple =
|
2415
|
-
searchValue =
|
2424
|
+
isSearchMultiple = isMultiple && isSearch,
|
2425
|
+
searchValue = isSearch
|
2416
2426
|
? module.get.query()
|
2417
2427
|
: '',
|
2418
|
-
hasSearchValue =
|
2428
|
+
hasSearchValue = typeof searchValue === 'string' && searchValue.length > 0,
|
2419
2429
|
searchWidth = module.get.searchWidth(),
|
2420
2430
|
valueIsSet = searchValue !== ''
|
2421
2431
|
;
|
@@ -2499,8 +2509,8 @@
|
|
2499
2509
|
|
2500
2510
|
$item = $item || module.get.selectedItem();
|
2501
2511
|
$menu = $item.closest(selector.menu);
|
2502
|
-
hasActive =
|
2503
|
-
forceScroll =
|
2512
|
+
hasActive = $item && $item.length > 0;
|
2513
|
+
forceScroll = forceScroll !== undefined
|
2504
2514
|
? forceScroll
|
2505
2515
|
: false;
|
2506
2516
|
if (module.get.activeItem().length === 0) {
|
@@ -2517,7 +2527,7 @@
|
|
2517
2527
|
if (!forceScroll) {
|
2518
2528
|
menuHeight = $menu.height();
|
2519
2529
|
belowPage = menuScroll + menuHeight < (offset + edgeTolerance);
|
2520
|
-
abovePage = (
|
2530
|
+
abovePage = (offset - edgeTolerance) < menuScroll;
|
2521
2531
|
}
|
2522
2532
|
module.debug('Scrolling to active item', offset);
|
2523
2533
|
if (forceScroll || abovePage || belowPage) {
|
@@ -2642,9 +2652,9 @@
|
|
2642
2652
|
}
|
2643
2653
|
var
|
2644
2654
|
escapedValue = module.escape.value(value),
|
2645
|
-
hasInput =
|
2655
|
+
hasInput = $input.length > 0,
|
2646
2656
|
currentValue = module.get.values(),
|
2647
|
-
stringValue =
|
2657
|
+
stringValue = value !== undefined
|
2648
2658
|
? String(value)
|
2649
2659
|
: value
|
2650
2660
|
;
|
@@ -2712,7 +2722,7 @@
|
|
2712
2722
|
var
|
2713
2723
|
isMultiple = module.is.multiple()
|
2714
2724
|
;
|
2715
|
-
$selectedItem =
|
2725
|
+
$selectedItem = settings.allowAdditions
|
2716
2726
|
? $selectedItem || module.get.itemWithAdditions(value)
|
2717
2727
|
: $selectedItem || module.get.item(value);
|
2718
2728
|
if (!$selectedItem) {
|
@@ -2740,7 +2750,7 @@
|
|
2740
2750
|
isActive = $selected.hasClass(className.active),
|
2741
2751
|
isActionable = $selected.hasClass(className.actionable),
|
2742
2752
|
isUserValue = $selected.hasClass(className.addition),
|
2743
|
-
shouldAnimate =
|
2753
|
+
shouldAnimate = isMultiple && $selectedItem && $selectedItem.length === 1
|
2744
2754
|
;
|
2745
2755
|
if (isActionable) {
|
2746
2756
|
if ((!isMultiple || (!isActive || isUserValue)) && settings.apiSettings && settings.saveRemoteData) {
|
@@ -2860,7 +2870,7 @@
|
|
2860
2870
|
var
|
2861
2871
|
escapedValue = module.escape.value(value),
|
2862
2872
|
$option = $input.find('option[value="' + module.escape.string(escapedValue) + '"]'),
|
2863
|
-
hasOption =
|
2873
|
+
hasOption = $option.length > 0
|
2864
2874
|
;
|
2865
2875
|
if (hasOption) {
|
2866
2876
|
return;
|
@@ -2929,9 +2939,9 @@
|
|
2929
2939
|
},
|
2930
2940
|
variables: function (message, term) {
|
2931
2941
|
var
|
2932
|
-
hasCount =
|
2933
|
-
hasMaxCount =
|
2934
|
-
hasTerm =
|
2942
|
+
hasCount = message.search('{count}') !== -1,
|
2943
|
+
hasMaxCount = message.search('{maxCount}') !== -1,
|
2944
|
+
hasTerm = message.search('{term}') !== -1,
|
2935
2945
|
query
|
2936
2946
|
;
|
2937
2947
|
module.verbose('Adding templated variables to message', message);
|
@@ -3044,7 +3054,7 @@
|
|
3044
3054
|
var
|
3045
3055
|
escapedValue = module.escape.value(value),
|
3046
3056
|
$option = $input.find('option[value="' + module.escape.string(escapedValue) + '"]'),
|
3047
|
-
hasOption =
|
3057
|
+
hasOption = $option.length > 0
|
3048
3058
|
;
|
3049
3059
|
if (!hasOption || !$option.hasClass(className.addition)) {
|
3050
3060
|
return;
|
@@ -3070,7 +3080,7 @@
|
|
3070
3080
|
$item.filter(selector.addition).remove();
|
3071
3081
|
},
|
3072
3082
|
selected: function (value, $selectedItem, preventChangeTrigger) {
|
3073
|
-
$selectedItem =
|
3083
|
+
$selectedItem = settings.allowAdditions
|
3074
3084
|
? $selectedItem || module.get.itemWithAdditions(value)
|
3075
3085
|
: $selectedItem || module.get.item(value);
|
3076
3086
|
|
@@ -3140,7 +3150,7 @@
|
|
3140
3150
|
values = [values];
|
3141
3151
|
}
|
3142
3152
|
values = $.grep(values, function (value) {
|
3143
|
-
return
|
3153
|
+
return removedValue != value;
|
3144
3154
|
});
|
3145
3155
|
module.verbose('Removed value from delimited string', removedValue, values);
|
3146
3156
|
|
@@ -3168,7 +3178,7 @@
|
|
3168
3178
|
var
|
3169
3179
|
$label = $(this),
|
3170
3180
|
value = $label.data(metadata.value),
|
3171
|
-
stringValue =
|
3181
|
+
stringValue = value !== undefined
|
3172
3182
|
? String(value)
|
3173
3183
|
: value,
|
3174
3184
|
isUserValue = module.is.userValue(stringValue)
|
@@ -3215,27 +3225,27 @@
|
|
3215
3225
|
|
3216
3226
|
has: {
|
3217
3227
|
menuSearch: function () {
|
3218
|
-
return
|
3228
|
+
return module.has.search() && $search.closest($menu).length > 0;
|
3219
3229
|
},
|
3220
3230
|
clearItem: function () {
|
3221
|
-
return
|
3231
|
+
return $clear.length > 0;
|
3222
3232
|
},
|
3223
3233
|
search: function () {
|
3224
|
-
return
|
3234
|
+
return $search.length > 0;
|
3225
3235
|
},
|
3226
3236
|
sizer: function () {
|
3227
|
-
return
|
3237
|
+
return $sizer.length > 0;
|
3228
3238
|
},
|
3229
3239
|
selectInput: function () {
|
3230
|
-
return
|
3240
|
+
return $input.is('select');
|
3231
3241
|
},
|
3232
3242
|
minCharacters: function (searchTerm) {
|
3233
3243
|
if (settings.minCharacters && !iconClicked) {
|
3234
|
-
searchTerm =
|
3244
|
+
searchTerm = searchTerm !== undefined
|
3235
3245
|
? String(searchTerm)
|
3236
3246
|
: String(module.get.query());
|
3237
3247
|
|
3238
|
-
return
|
3248
|
+
return searchTerm.length >= settings.minCharacters;
|
3239
3249
|
}
|
3240
3250
|
iconClicked = false;
|
3241
3251
|
|
@@ -3253,22 +3263,22 @@
|
|
3253
3263
|
letter = letter.toLowerCase();
|
3254
3264
|
firstLetter = String(text).charAt(0).toLowerCase();
|
3255
3265
|
|
3256
|
-
return
|
3266
|
+
return letter == firstLetter;
|
3257
3267
|
},
|
3258
3268
|
input: function () {
|
3259
|
-
return
|
3269
|
+
return $input.length > 0;
|
3260
3270
|
},
|
3261
3271
|
items: function () {
|
3262
|
-
return
|
3272
|
+
return $item.length > 0;
|
3263
3273
|
},
|
3264
3274
|
menu: function () {
|
3265
|
-
return
|
3275
|
+
return $menu.length > 0;
|
3266
3276
|
},
|
3267
3277
|
subMenu: function ($currentMenu) {
|
3268
3278
|
return ($currentMenu || $menu).find(selector.menu).length > 0;
|
3269
3279
|
},
|
3270
3280
|
message: function () {
|
3271
|
-
return
|
3281
|
+
return $menu.children(selector.message).length > 0;
|
3272
3282
|
},
|
3273
3283
|
label: function (value) {
|
3274
3284
|
var
|
@@ -3279,26 +3289,26 @@
|
|
3279
3289
|
escapedValue = escapedValue.toLowerCase();
|
3280
3290
|
}
|
3281
3291
|
|
3282
|
-
return
|
3292
|
+
return $labels.filter('[data-' + metadata.value + '="' + module.escape.string(escapedValue) + '"]').length > 0;
|
3283
3293
|
},
|
3284
3294
|
maxSelections: function () {
|
3285
|
-
return
|
3295
|
+
return settings.maxSelections && module.get.selectionCount() >= settings.maxSelections;
|
3286
3296
|
},
|
3287
3297
|
allResultsFiltered: function () {
|
3288
3298
|
var
|
3289
3299
|
$normalResults = $item.not(selector.addition)
|
3290
3300
|
;
|
3291
3301
|
|
3292
|
-
return
|
3302
|
+
return $normalResults.filter(selector.unselectable).length === $normalResults.length;
|
3293
3303
|
},
|
3294
3304
|
userSuggestion: function () {
|
3295
|
-
return
|
3305
|
+
return $menu.children(selector.addition).length > 0;
|
3296
3306
|
},
|
3297
3307
|
query: function () {
|
3298
|
-
return
|
3308
|
+
return module.get.query() !== '';
|
3299
3309
|
},
|
3300
3310
|
value: function (value) {
|
3301
|
-
return
|
3311
|
+
return settings.ignoreCase
|
3302
3312
|
? module.has.valueIgnoringCase(value)
|
3303
3313
|
: module.has.valueMatchingCase(value);
|
3304
3314
|
},
|
@@ -3307,10 +3317,10 @@
|
|
3307
3317
|
values = module.get.values(true),
|
3308
3318
|
hasValue = Array.isArray(values)
|
3309
3319
|
? values && ($.inArray(value, values) !== -1)
|
3310
|
-
:
|
3320
|
+
: values == value
|
3311
3321
|
;
|
3312
3322
|
|
3313
|
-
return !!
|
3323
|
+
return !!hasValue;
|
3314
3324
|
},
|
3315
3325
|
valueIgnoringCase: function (value) {
|
3316
3326
|
var
|
@@ -3321,7 +3331,7 @@
|
|
3321
3331
|
values = [values];
|
3322
3332
|
}
|
3323
3333
|
$.each(values, function (index, existingValue) {
|
3324
|
-
if (String(value).toLowerCase()
|
3334
|
+
if (String(value).toLowerCase() === String(existingValue).toLowerCase()) {
|
3325
3335
|
hasValue = true;
|
3326
3336
|
|
3327
3337
|
return false;
|
@@ -3358,10 +3368,10 @@
|
|
3358
3368
|
return !!window.chrome && !window.StyleMedia;
|
3359
3369
|
},
|
3360
3370
|
alreadySetup: function () {
|
3361
|
-
return
|
3371
|
+
return $module.is('select') && $module.parent(selector.dropdown).data(moduleNamespace) !== undefined && $module.prev().length === 0;
|
3362
3372
|
},
|
3363
3373
|
animating: function ($subMenu) {
|
3364
|
-
return
|
3374
|
+
return $subMenu
|
3365
3375
|
? $subMenu.transition && $subMenu.transition('is animating')
|
3366
3376
|
: $menu.transition && $menu.transition('is animating');
|
3367
3377
|
},
|
@@ -3371,19 +3381,19 @@
|
|
3371
3381
|
return $selectedMenu.hasClass(className.leftward);
|
3372
3382
|
},
|
3373
3383
|
clearable: function () {
|
3374
|
-
return
|
3384
|
+
return $module.hasClass(className.clearable) || settings.clearable;
|
3375
3385
|
},
|
3376
3386
|
disabled: function () {
|
3377
3387
|
return $module.hasClass(className.disabled);
|
3378
3388
|
},
|
3379
3389
|
focused: function () {
|
3380
|
-
return
|
3390
|
+
return document.activeElement === $module[0];
|
3381
3391
|
},
|
3382
3392
|
focusedOnSearch: function () {
|
3383
|
-
return
|
3393
|
+
return document.activeElement === $search[0];
|
3384
3394
|
},
|
3385
3395
|
allFiltered: function () {
|
3386
|
-
return (
|
3396
|
+
return (module.is.multiple() || module.has.search()) && !(!settings.hideAdditions && module.has.userSuggestion()) && !module.has.message() && module.has.allResultsFiltered();
|
3387
3397
|
},
|
3388
3398
|
hidden: function ($subMenu) {
|
3389
3399
|
return !module.is.visible($subMenu);
|
@@ -3435,13 +3445,13 @@
|
|
3435
3445
|
return $module.hasClass(className.search);
|
3436
3446
|
},
|
3437
3447
|
searchSelection: function (deep) {
|
3438
|
-
return
|
3448
|
+
return module.has.search() && (deep ? $search.parents(selector.dropdown) : $search.parent(selector.dropdown)).length === 1;
|
3439
3449
|
},
|
3440
3450
|
selection: function () {
|
3441
3451
|
return $module.hasClass(className.selection);
|
3442
3452
|
},
|
3443
3453
|
userValue: function (value) {
|
3444
|
-
return
|
3454
|
+
return $.inArray(value, module.get.userValues()) !== -1;
|
3445
3455
|
},
|
3446
3456
|
upward: function ($menu) {
|
3447
3457
|
var $element = $menu || $module;
|
@@ -3449,27 +3459,27 @@
|
|
3449
3459
|
return $element.hasClass(className.upward);
|
3450
3460
|
},
|
3451
3461
|
visible: function ($subMenu) {
|
3452
|
-
return
|
3462
|
+
return $subMenu
|
3453
3463
|
? $subMenu.hasClass(className.visible)
|
3454
3464
|
: $menu.hasClass(className.visible);
|
3455
3465
|
},
|
3456
3466
|
verticallyScrollableContext: function () {
|
3457
3467
|
var
|
3458
|
-
overflowY =
|
3468
|
+
overflowY = $context[0] !== window
|
3459
3469
|
? $context.css('overflow-y')
|
3460
3470
|
: false
|
3461
3471
|
;
|
3462
3472
|
|
3463
|
-
return
|
3473
|
+
return overflowY === 'auto' || overflowY === 'scroll';
|
3464
3474
|
},
|
3465
3475
|
horizontallyScrollableContext: function () {
|
3466
3476
|
var
|
3467
|
-
overflowX =
|
3477
|
+
overflowX = $context[0] !== window
|
3468
3478
|
? $context.css('overflow-X')
|
3469
3479
|
: false
|
3470
3480
|
;
|
3471
3481
|
|
3472
|
-
return
|
3482
|
+
return overflowX === 'auto' || overflowX === 'scroll';
|
3473
3483
|
},
|
3474
3484
|
},
|
3475
3485
|
|
@@ -3493,7 +3503,7 @@
|
|
3493
3503
|
;
|
3494
3504
|
calculations = {
|
3495
3505
|
context: {
|
3496
|
-
offset:
|
3506
|
+
offset: $context[0] === window
|
3497
3507
|
? { top: 0, left: 0 }
|
3498
3508
|
: $context.offset(),
|
3499
3509
|
scrollTop: $context.scrollTop(),
|
@@ -3511,7 +3521,7 @@
|
|
3511
3521
|
calculations.menu.height += $currentMenu.find(selector.menu).first().outerHeight();
|
3512
3522
|
}
|
3513
3523
|
onScreen = {
|
3514
|
-
above:
|
3524
|
+
above: calculations.context.scrollTop <= calculations.menu.offset.top - calculations.context.offset.top - calculations.menu.height,
|
3515
3525
|
below: (calculations.context.scrollTop + calculations.context.height) >= calculations.menu.offset.top - calculations.context.offset.top + calculations.menu.height,
|
3516
3526
|
};
|
3517
3527
|
if (onScreen.below) {
|
@@ -3540,7 +3550,7 @@
|
|
3540
3550
|
;
|
3541
3551
|
calculations = {
|
3542
3552
|
context: {
|
3543
|
-
offset:
|
3553
|
+
offset: $context[0] === window
|
3544
3554
|
? { top: 0, left: 0 }
|
3545
3555
|
: $context.offset(),
|
3546
3556
|
scrollLeft: $context.scrollLeft(),
|
@@ -3554,7 +3564,7 @@
|
|
3554
3564
|
if (module.is.horizontallyScrollableContext()) {
|
3555
3565
|
calculations.menu.offset.left += calculations.context.scrollLeft;
|
3556
3566
|
}
|
3557
|
-
isOffscreenRight =
|
3567
|
+
isOffscreenRight = calculations.menu.offset.left - calculations.context.offset.left + calculations.menu.width >= calculations.context.scrollLeft + calculations.context.width;
|
3558
3568
|
if (isOffscreenRight) {
|
3559
3569
|
module.verbose('Dropdown cannot fit in context rightward', isOffscreenRight);
|
3560
3570
|
canOpenRightward = false;
|
@@ -3578,7 +3588,7 @@
|
|
3578
3588
|
show: function (callback, $subMenu) {
|
3579
3589
|
var
|
3580
3590
|
$currentMenu = $subMenu || $menu,
|
3581
|
-
start =
|
3591
|
+
start = $subMenu
|
3582
3592
|
? function () {}
|
3583
3593
|
: function () {
|
3584
3594
|
module.hideSubMenus();
|
@@ -3627,7 +3637,7 @@
|
|
3627
3637
|
hide: function (callback, $subMenu) {
|
3628
3638
|
var
|
3629
3639
|
$currentMenu = $subMenu || $menu,
|
3630
|
-
start =
|
3640
|
+
start = $subMenu
|
3631
3641
|
? function () {}
|
3632
3642
|
: function () {
|
3633
3643
|
module.unbind.intent();
|
@@ -3701,9 +3711,9 @@
|
|
3701
3711
|
value: function (value) {
|
3702
3712
|
var
|
3703
3713
|
multipleValues = Array.isArray(value),
|
3704
|
-
stringValue =
|
3705
|
-
isUnparsable =
|
3706
|
-
hasQuotes =
|
3714
|
+
stringValue = typeof value === 'string',
|
3715
|
+
isUnparsable = !stringValue && !multipleValues,
|
3716
|
+
hasQuotes = stringValue && value.search(regExp.quote) !== -1,
|
3707
3717
|
values = []
|
3708
3718
|
;
|
3709
3719
|
if (isUnparsable || !hasQuotes) {
|
@@ -3862,17 +3872,17 @@
|
|
3862
3872
|
query = query.split(/[ .]/);
|
3863
3873
|
maxDepth = query.length - 1;
|
3864
3874
|
$.each(query, function (depth, value) {
|
3865
|
-
var camelCaseValue =
|
3875
|
+
var camelCaseValue = depth !== maxDepth
|
3866
3876
|
? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
|
3867
3877
|
: query
|
3868
3878
|
;
|
3869
|
-
if ($.isPlainObject(object[camelCaseValue]) && (depth
|
3879
|
+
if ($.isPlainObject(object[camelCaseValue]) && (depth !== maxDepth)) {
|
3870
3880
|
object = object[camelCaseValue];
|
3871
3881
|
} else if (object[camelCaseValue] !== undefined) {
|
3872
3882
|
found = object[camelCaseValue];
|
3873
3883
|
|
3874
3884
|
return false;
|
3875
|
-
} else if ($.isPlainObject(object[value]) && (depth
|
3885
|
+
} else if ($.isPlainObject(object[value]) && (depth !== maxDepth)) {
|
3876
3886
|
object = object[value];
|
3877
3887
|
} else if (object[value] !== undefined) {
|
3878
3888
|
found = object[value];
|
@@ -3915,7 +3925,7 @@
|
|
3915
3925
|
}
|
3916
3926
|
});
|
3917
3927
|
|
3918
|
-
return
|
3928
|
+
return returnedValue !== undefined
|
3919
3929
|
? returnedValue
|
3920
3930
|
: $allModules;
|
3921
3931
|
};
|
@@ -4215,19 +4225,19 @@
|
|
4215
4225
|
|
4216
4226
|
if (itemType === 'item' || isMenu) {
|
4217
4227
|
var
|
4218
|
-
maybeText =
|
4228
|
+
maybeText = option[fields.text]
|
4219
4229
|
? ' data-text="' + deQuote(option[fields.text], true) + '"'
|
4220
4230
|
: '',
|
4221
|
-
maybeActionable =
|
4231
|
+
maybeActionable = option[fields.actionable]
|
4222
4232
|
? className.actionable + ' '
|
4223
4233
|
: '',
|
4224
|
-
maybeDisabled =
|
4234
|
+
maybeDisabled = option[fields.disabled]
|
4225
4235
|
? className.disabled + ' '
|
4226
4236
|
: '',
|
4227
|
-
maybeDescriptionVertical =
|
4237
|
+
maybeDescriptionVertical = option[fields.descriptionVertical]
|
4228
4238
|
? className.descriptionVertical + ' '
|
4229
4239
|
: '',
|
4230
|
-
hasDescription =
|
4240
|
+
hasDescription = escape(option[fields.description] || '', preserveHTML) !== ''
|
4231
4241
|
;
|
4232
4242
|
html += '<div class="' + deQuote(maybeActionable + maybeDisabled + maybeDescriptionVertical + (option[fields.class] || className.item)) + '" data-value="' + deQuote(option[fields.value], true) + '"' + maybeText + '>';
|
4233
4243
|
if (isMenu) {
|
@@ -4241,7 +4251,7 @@
|
|
4241
4251
|
}
|
4242
4252
|
if (hasDescription) {
|
4243
4253
|
html += '<span class="' + deQuote(className.description) + '">' + escape(option[fields.description] || '', preserveHTML) + '</span>';
|
4244
|
-
html +=
|
4254
|
+
html += !isMenu ? '<span class="' + deQuote(className.text) + '">' : '';
|
4245
4255
|
}
|
4246
4256
|
if (isMenu) {
|
4247
4257
|
html += '<span class="' + deQuote(className.text) + '">';
|