fomantic-ui 2.9.1-beta.22 → 2.9.1-beta.24
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/index.js +23 -0
- package/.eslint/no-extra-parens-rule.js +17 -0
- package/.eslint/package.json +11 -0
- package/.eslintrc.js +13 -70
- package/.stylelintrc.js +5 -7
- package/dist/components/accordion.css +1 -1
- package/dist/components/accordion.js +26 -26
- 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 +95 -94
- 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 +3 -3
- package/dist/components/calendar.js +181 -151
- package/dist/components/calendar.min.css +2 -2
- 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 +14 -14
- 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 +23 -25
- 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 +252 -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 +27 -33
- 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 +2 -2
- package/dist/components/flyout.js +50 -44
- package/dist/components/flyout.min.css +1 -1
- package/dist/components/flyout.min.js +2 -2
- package/dist/components/form.css +2 -2
- package/dist/components/form.js +187 -163
- package/dist/components/form.min.css +2 -2
- 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 +49 -45
- 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 +22 -20
- 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 +71 -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 +46 -46
- 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 +15 -15
- 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 +69 -74
- 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 +39 -39
- 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 +39 -37
- 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 +22 -21
- package/dist/components/site.min.css +1 -1
- package/dist/components/site.min.js +2 -2
- package/dist/components/slider.js +69 -64
- package/dist/components/slider.min.js +2 -2
- package/dist/components/state.js +15 -15
- 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 +55 -57
- 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 +57 -30
- package/dist/components/toast.min.css +1 -1
- package/dist/components/toast.min.js +2 -2
- package/dist/components/transition.css +7 -7
- package/dist/components/transition.js +45 -39
- package/dist/components/transition.min.css +1 -1
- package/dist/components/transition.min.js +2 -2
- package/dist/components/visibility.js +25 -25
- package/dist/components/visibility.min.js +2 -2
- package/dist/semantic.css +60 -60
- package/dist/semantic.js +1518 -1427
- package/dist/semantic.min.css +2 -2
- package/dist/semantic.min.js +2 -2
- package/examples/responsive.html +1 -1
- package/gulpfile.js +1 -1
- package/package.json +2 -1
- package/scripts/nightly-version.js +6 -4
- package/src/definitions/behaviors/api.js +94 -93
- package/src/definitions/behaviors/form.js +186 -162
- package/src/definitions/behaviors/state.js +14 -14
- package/src/definitions/behaviors/visibility.js +24 -24
- package/src/definitions/collections/menu.less +2 -2
- package/src/definitions/elements/button.less +2 -2
- package/src/definitions/elements/loader.less +4 -4
- package/src/definitions/elements/step.less +1 -1
- package/src/definitions/globals/site.js +21 -20
- package/src/definitions/modules/accordion.js +25 -25
- package/src/definitions/modules/calendar.js +180 -150
- package/src/definitions/modules/calendar.less +2 -2
- package/src/definitions/modules/checkbox.js +13 -13
- package/src/definitions/modules/dimmer.js +22 -24
- package/src/definitions/modules/dimmer.less +10 -10
- package/src/definitions/modules/dropdown.js +251 -253
- package/src/definitions/modules/embed.js +26 -32
- package/src/definitions/modules/flyout.js +49 -43
- package/src/definitions/modules/flyout.less +1 -1
- package/src/definitions/modules/modal.js +48 -44
- package/src/definitions/modules/nag.js +21 -19
- package/src/definitions/modules/popup.js +70 -70
- package/src/definitions/modules/progress.js +45 -45
- package/src/definitions/modules/rating.js +14 -14
- package/src/definitions/modules/search.js +68 -73
- package/src/definitions/modules/shape.js +38 -38
- package/src/definitions/modules/sidebar.js +38 -36
- package/src/definitions/modules/slider.js +68 -63
- package/src/definitions/modules/sticky.js +24 -24
- package/src/definitions/modules/tab.js +54 -56
- package/src/definitions/modules/toast.js +56 -29
- package/src/definitions/modules/transition.js +44 -38
- package/src/themes/amazon/elements/button.overrides +7 -7
- package/src/themes/default/collections/form.variables +1 -1
- package/src/themes/default/elements/reveal.variables +1 -1
- package/src/themes/default/globals/site.variables +1 -1
- package/src/themes/default/modules/dimmer.variables +6 -6
- package/src/themes/default/modules/modal.variables +1 -1
- package/src/themes/default/modules/slider.variables +4 -4
- package/src/themes/default/modules/toast.variables +2 -2
- package/src/themes/default/modules/transition.overrides +12 -12
- package/src/themes/flat/collections/form.overrides +2 -2
- package/src/themes/flat/globals/site.variables +1 -1
- package/src/themes/github/collections/form.overrides +2 -2
- package/src/themes/github/collections/menu.variables +1 -1
- package/src/themes/github/collections/message.overrides +3 -3
- package/src/themes/github/elements/input.overrides +2 -2
- package/src/themes/timeline/views/feed.overrides +3 -3
- package/src/themes/twitter/elements/button.overrides +2 -2
- package/tasks/README.md +1 -3
- package/tasks/admin/components/create.js +9 -16
- package/tasks/admin/components/init.js +7 -7
- package/tasks/admin/components/update.js +10 -10
- package/tasks/admin/distributions/create.js +16 -18
- package/tasks/admin/distributions/init.js +7 -7
- package/tasks/admin/distributions/update.js +10 -10
- package/tasks/admin/publish.js +1 -3
- package/tasks/admin/register.js +6 -6
- package/tasks/admin/release.js +1 -3
- package/tasks/build/assets.js +2 -2
- package/tasks/build/css.js +8 -3
- package/tasks/build/javascript.js +3 -1
- package/tasks/build.js +1 -1
- package/tasks/check-install.js +1 -1
- package/tasks/clean.js +1 -1
- package/tasks/collections/README.md +3 -5
- package/tasks/collections/admin.js +1 -1
- package/tasks/collections/docs.js +1 -1
- package/tasks/collections/install.js +1 -1
- package/tasks/collections/rtl.js +1 -1
- package/tasks/collections/various.js +1 -1
- package/tasks/config/admin/github.js +6 -8
- package/tasks/config/admin/templates/css-package.js +1 -1
- package/tasks/config/admin/templates/less-package.js +1 -1
- package/tasks/config/npm/gulpfile.js +7 -7
- package/tasks/config/project/config.js +14 -19
- package/tasks/config/project/install.js +35 -34
- package/tasks/config/project/release.js +15 -16
- package/tasks/config/tasks.js +18 -20
- package/tasks/config/user.js +5 -3
- package/tasks/docs/build.js +5 -3
- package/tasks/docs/metadata.js +7 -8
- package/tasks/docs/serve.js +6 -3
- package/tasks/install.js +39 -39
- 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/.eslintrc.js +0 -4
- package/test/meteor/assets.js +1 -1
- package/test/modules/module.spec.js +15 -15
- package/test/modules/popup.spec.js +1 -1
- package/test/modules/search.spec.js +1 -1
- package/test/modules/tab.spec.js +1 -1
- package/test/modules/transition.spec.js +1 -1
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* # Fomantic-UI 2.9.1-beta.
|
2
|
+
* # Fomantic-UI 2.9.1-beta.24+029436f - Dropdown
|
3
3
|
* https://github.com/fomantic/Fomantic-UI/
|
4
4
|
*
|
5
5
|
*
|
@@ -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
|
|
@@ -26,18 +26,18 @@
|
|
26
26
|
|
27
27
|
moduleSelector = $allModules.selector || '',
|
28
28
|
|
29
|
-
time =
|
29
|
+
time = Date.now(),
|
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);
|
@@ -361,7 +363,7 @@
|
|
361
363
|
.addClass(className.search)
|
362
364
|
.prop('autocomplete', module.is.chrome() ? 'fomantic-search' : 'off')
|
363
365
|
;
|
364
|
-
if (labelNode.length) {
|
366
|
+
if (labelNode.length > 0) {
|
365
367
|
if (!labelNode.attr('id')) {
|
366
368
|
labelNode.attr('id', '_' + module.get.id() + '_formLabel');
|
367
369
|
}
|
@@ -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);
|
@@ -720,14 +722,14 @@
|
|
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 () {
|
727
729
|
if (module.is.multiple()) {
|
728
730
|
module.filterActive();
|
729
731
|
}
|
730
|
-
if (query || (!query && module.get.activeItem().length
|
732
|
+
if (query || (!query && module.get.activeItem().length === 0)) {
|
731
733
|
module.select.firstUnfiltered();
|
732
734
|
}
|
733
735
|
if (module.has.allResultsFiltered()) {
|
@@ -942,7 +944,7 @@
|
|
942
944
|
// Dividers which are direct siblings are considered a group
|
943
945
|
var $lastDivider = $(this).nextUntil(selector.item);
|
944
946
|
|
945
|
-
return ($lastDivider.length ? $lastDivider : $(this))
|
947
|
+
return ($lastDivider.length > 0 ? $lastDivider : $(this))
|
946
948
|
// Count all non-filtered items until the next divider (or end of the dropdown)
|
947
949
|
.nextUntil(selector.divider)
|
948
950
|
.filter(selector.item + ':not(.' + className.filtered + ')')
|
@@ -959,32 +961,37 @@
|
|
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
|
974
|
+
continueSearch = false,
|
972
975
|
queryCharacter = query.charCodeAt(characterIndex)
|
973
976
|
;
|
974
977
|
while (nextCharacterIndex < termLength) {
|
975
978
|
if (term.charCodeAt(nextCharacterIndex++) === queryCharacter) {
|
976
|
-
|
979
|
+
continueSearch = true;
|
980
|
+
|
981
|
+
break;
|
977
982
|
}
|
978
983
|
}
|
979
984
|
|
980
|
-
|
985
|
+
if (!continueSearch) {
|
986
|
+
return false;
|
987
|
+
}
|
981
988
|
}
|
982
989
|
|
983
990
|
return true;
|
984
991
|
},
|
985
992
|
exactSearch: function (query, term) {
|
986
|
-
query =
|
987
|
-
term =
|
993
|
+
query = settings.ignoreSearchCase ? query.toLowerCase() : query;
|
994
|
+
term = settings.ignoreSearchCase ? term.toLowerCase() : term;
|
988
995
|
|
989
996
|
return term.indexOf(query) > -1;
|
990
997
|
},
|
@@ -1018,10 +1025,10 @@
|
|
1018
1025
|
var
|
1019
1026
|
$currentlySelected = $item.not(className.filtered).filter('.' + className.selected).eq(0),
|
1020
1027
|
$activeItem = $item.not(className.filtered).filter('.' + className.active).eq(0),
|
1021
|
-
$selectedItem =
|
1028
|
+
$selectedItem = $currentlySelected.length > 0
|
1022
1029
|
? $currentlySelected
|
1023
1030
|
: $activeItem,
|
1024
|
-
hasSelected =
|
1031
|
+
hasSelected = $selectedItem.length > 0
|
1025
1032
|
;
|
1026
1033
|
if (settings.allowAdditions || (hasSelected && !module.is.multiple())) {
|
1027
1034
|
module.debug('Forcing partial selection to selected item', $selectedItem);
|
@@ -1093,7 +1100,7 @@
|
|
1093
1100
|
}
|
1094
1101
|
},
|
1095
1102
|
blur: function (event) {
|
1096
|
-
pageLostFocus =
|
1103
|
+
pageLostFocus = document.activeElement === this;
|
1097
1104
|
if (!activated && !pageLostFocus) {
|
1098
1105
|
module.remove.activeLabel();
|
1099
1106
|
module.hide();
|
@@ -1141,7 +1148,7 @@
|
|
1141
1148
|
}
|
1142
1149
|
},
|
1143
1150
|
blur: function (event) {
|
1144
|
-
pageLostFocus =
|
1151
|
+
pageLostFocus = document.activeElement === this;
|
1145
1152
|
if (module.is.searchSelection(true) && !willRefocus) {
|
1146
1153
|
if (!itemActivated && !pageLostFocus) {
|
1147
1154
|
if (settings.forceSelection) {
|
@@ -1205,7 +1212,7 @@
|
|
1205
1212
|
$activeLabels = $labels.filter('.' + className.active),
|
1206
1213
|
$nextActive = $label.nextAll('.' + className.active),
|
1207
1214
|
$prevActive = $label.prevAll('.' + className.active),
|
1208
|
-
$range =
|
1215
|
+
$range = $nextActive.length > 0
|
1209
1216
|
? $label.nextUntil($nextActive).add($activeLabels).add($label)
|
1210
1217
|
: $label.prevUntil($prevActive).add($activeLabels).add($label)
|
1211
1218
|
;
|
@@ -1240,7 +1247,7 @@
|
|
1240
1247
|
test: {
|
1241
1248
|
toggle: function (event) {
|
1242
1249
|
var
|
1243
|
-
toggleBehavior =
|
1250
|
+
toggleBehavior = module.is.multiple()
|
1244
1251
|
? module.show
|
1245
1252
|
: module.toggle
|
1246
1253
|
;
|
@@ -1321,8 +1328,8 @@
|
|
1321
1328
|
$item = $(this),
|
1322
1329
|
$subMenu = $item.children(selector.menu),
|
1323
1330
|
$otherMenus = $item.siblings(selector.item).children(selector.menu),
|
1324
|
-
hasSubMenu =
|
1325
|
-
isBubbledEvent =
|
1331
|
+
hasSubMenu = $subMenu.length > 0,
|
1332
|
+
isBubbledEvent = $subMenu.find($target).length > 0
|
1326
1333
|
;
|
1327
1334
|
if (!isBubbledEvent && hasSubMenu) {
|
1328
1335
|
clearTimeout(module.itemTimer);
|
@@ -1353,14 +1360,14 @@
|
|
1353
1360
|
click: function (event, skipRefocus) {
|
1354
1361
|
var
|
1355
1362
|
$choice = $(this),
|
1356
|
-
$target =
|
1363
|
+
$target = event
|
1357
1364
|
? $(event.target)
|
1358
1365
|
: $(''),
|
1359
1366
|
$subMenu = $choice.find(selector.menu),
|
1360
1367
|
text = module.get.choiceText($choice),
|
1361
1368
|
value = module.get.choiceValue($choice, text),
|
1362
|
-
hasSubMenu =
|
1363
|
-
isBubbledEvent =
|
1369
|
+
hasSubMenu = $subMenu.length > 0,
|
1370
|
+
isBubbledEvent = $subMenu.find($target).length > 0
|
1364
1371
|
;
|
1365
1372
|
// prevents IE11 bug where menu receives focus even though `tabindex=-1`
|
1366
1373
|
if (document.activeElement.tagName.toLowerCase() !== 'input') {
|
@@ -1403,15 +1410,15 @@
|
|
1403
1410
|
activeValue = $activeLabel.data(metadata.value),
|
1404
1411
|
labelIndex = $label.index($activeLabel),
|
1405
1412
|
labelCount = $label.length,
|
1406
|
-
hasActiveLabel =
|
1407
|
-
hasMultipleActive =
|
1408
|
-
isFirstLabel =
|
1409
|
-
isLastLabel =
|
1413
|
+
hasActiveLabel = $activeLabel.length > 0,
|
1414
|
+
hasMultipleActive = $activeLabel.length > 1,
|
1415
|
+
isFirstLabel = labelIndex === 0,
|
1416
|
+
isLastLabel = labelIndex + 1 == labelCount,
|
1410
1417
|
isSearch = module.is.searchSelection(),
|
1411
1418
|
isFocusedOnSearch = module.is.focusedOnSearch(),
|
1412
1419
|
isFocused = module.is.focused(),
|
1413
|
-
caretAtStart =
|
1414
|
-
isSelectedSearch =
|
1420
|
+
caretAtStart = isFocusedOnSearch && module.get.caretPosition(false) === 0,
|
1421
|
+
isSelectedSearch = caretAtStart && module.get.caretPosition(true) !== 0
|
1415
1422
|
;
|
1416
1423
|
if (isSearch && !hasActiveLabel && !isFocusedOnSearch) {
|
1417
1424
|
return;
|
@@ -1507,19 +1514,19 @@
|
|
1507
1514
|
var
|
1508
1515
|
$currentlySelected = $item.not(selector.unselectable).filter('.' + className.selected).eq(0),
|
1509
1516
|
$activeItem = $menu.children('.' + className.active).eq(0),
|
1510
|
-
$selectedItem =
|
1517
|
+
$selectedItem = $currentlySelected.length > 0
|
1511
1518
|
? $currentlySelected
|
1512
1519
|
: $activeItem,
|
1513
|
-
$visibleItems =
|
1520
|
+
$visibleItems = $selectedItem.length > 0
|
1514
1521
|
? $selectedItem.siblings(':not(.' + className.filtered + ')').addBack()
|
1515
1522
|
: $menu.children(':not(.' + className.filtered + ')'),
|
1516
1523
|
$subMenu = $selectedItem.children(selector.menu),
|
1517
1524
|
$parentMenu = $selectedItem.closest(selector.menu),
|
1518
|
-
inVisibleMenu =
|
1519
|
-
hasSubMenu =
|
1520
|
-
hasSelectedItem =
|
1521
|
-
selectedIsSelectable =
|
1522
|
-
delimiterPressed =
|
1525
|
+
inVisibleMenu = $parentMenu.hasClass(className.visible) || $parentMenu.hasClass(className.animating) || $parentMenu.parent(selector.menu).length > 0,
|
1526
|
+
hasSubMenu = $subMenu.length > 0,
|
1527
|
+
hasSelectedItem = $selectedItem.length > 0,
|
1528
|
+
selectedIsSelectable = $selectedItem.not(selector.unselectable).length > 0,
|
1529
|
+
delimiterPressed = event.key === settings.delimiter && module.is.multiple(),
|
1523
1530
|
isAdditionWithoutMenu = settings.allowAdditions && (pressedKey == keys.enter || delimiterPressed),
|
1524
1531
|
$nextItem,
|
1525
1532
|
isSubMenuItem
|
@@ -1561,7 +1568,7 @@
|
|
1561
1568
|
// sub-menu actions
|
1562
1569
|
if (hasSelectedItem) {
|
1563
1570
|
if (pressedKey == keys.leftArrow) {
|
1564
|
-
isSubMenuItem =
|
1571
|
+
isSubMenuItem = $parentMenu[0] !== $menu[0];
|
1565
1572
|
|
1566
1573
|
if (isSubMenuItem) {
|
1567
1574
|
module.verbose('Left key pressed, closing sub-menu');
|
@@ -1596,7 +1603,7 @@
|
|
1596
1603
|
|
1597
1604
|
// up arrow (traverse menu up)
|
1598
1605
|
if (pressedKey == keys.upArrow) {
|
1599
|
-
$nextItem =
|
1606
|
+
$nextItem = hasSelectedItem && inVisibleMenu
|
1600
1607
|
? $selectedItem.prevAll(selector.item + ':not(' + selector.unselectable + ')').eq(0)
|
1601
1608
|
: $item.eq(0);
|
1602
1609
|
if ($visibleItems.index($nextItem) < 0) {
|
@@ -1604,25 +1611,26 @@
|
|
1604
1611
|
event.preventDefault();
|
1605
1612
|
|
1606
1613
|
return;
|
1607
|
-
} else {
|
1608
|
-
module.verbose('Up key pressed, changing active item');
|
1609
|
-
$selectedItem
|
1610
|
-
.removeClass(className.selected)
|
1611
|
-
;
|
1612
|
-
$nextItem
|
1613
|
-
.addClass(className.selected)
|
1614
|
-
;
|
1615
|
-
module.set.scrollPosition($nextItem);
|
1616
|
-
if (settings.selectOnKeydown && module.is.single() && !$nextItem.hasClass(className.actionable)) {
|
1617
|
-
module.set.selectedItem($nextItem);
|
1618
|
-
}
|
1619
1614
|
}
|
1615
|
+
|
1616
|
+
module.verbose('Up key pressed, changing active item');
|
1617
|
+
$selectedItem
|
1618
|
+
.removeClass(className.selected)
|
1619
|
+
;
|
1620
|
+
$nextItem
|
1621
|
+
.addClass(className.selected)
|
1622
|
+
;
|
1623
|
+
module.set.scrollPosition($nextItem);
|
1624
|
+
if (settings.selectOnKeydown && module.is.single() && !$nextItem.hasClass(className.actionable)) {
|
1625
|
+
module.set.selectedItem($nextItem);
|
1626
|
+
}
|
1627
|
+
|
1620
1628
|
event.preventDefault();
|
1621
1629
|
}
|
1622
1630
|
|
1623
1631
|
// down arrow (traverse menu down)
|
1624
1632
|
if (pressedKey == keys.downArrow) {
|
1625
|
-
$nextItem =
|
1633
|
+
$nextItem = hasSelectedItem && inVisibleMenu
|
1626
1634
|
? $selectedItem.nextAll(selector.item + ':not(' + selector.unselectable + ')').eq(0)
|
1627
1635
|
: $item.eq(0);
|
1628
1636
|
if ($nextItem.length === 0) {
|
@@ -1630,19 +1638,20 @@
|
|
1630
1638
|
event.preventDefault();
|
1631
1639
|
|
1632
1640
|
return;
|
1633
|
-
} else {
|
1634
|
-
module.verbose('Down key pressed, changing active item');
|
1635
|
-
$item
|
1636
|
-
.removeClass(className.selected)
|
1637
|
-
;
|
1638
|
-
$nextItem
|
1639
|
-
.addClass(className.selected)
|
1640
|
-
;
|
1641
|
-
module.set.scrollPosition($nextItem);
|
1642
|
-
if (settings.selectOnKeydown && module.is.single() && !$nextItem.hasClass(className.actionable)) {
|
1643
|
-
module.set.selectedItem($nextItem);
|
1644
|
-
}
|
1645
1641
|
}
|
1642
|
+
|
1643
|
+
module.verbose('Down key pressed, changing active item');
|
1644
|
+
$item
|
1645
|
+
.removeClass(className.selected)
|
1646
|
+
;
|
1647
|
+
$nextItem
|
1648
|
+
.addClass(className.selected)
|
1649
|
+
;
|
1650
|
+
module.set.scrollPosition($nextItem);
|
1651
|
+
if (settings.selectOnKeydown && module.is.single() && !$nextItem.hasClass(className.actionable)) {
|
1652
|
+
module.set.selectedItem($nextItem);
|
1653
|
+
}
|
1654
|
+
|
1646
1655
|
event.preventDefault();
|
1647
1656
|
}
|
1648
1657
|
|
@@ -1714,8 +1723,8 @@
|
|
1714
1723
|
eventInModule: function (event, callback) {
|
1715
1724
|
var
|
1716
1725
|
$target = $(event.target),
|
1717
|
-
inDocument =
|
1718
|
-
inModule =
|
1726
|
+
inDocument = $target.closest(document.documentElement).length > 0,
|
1727
|
+
inModule = $target.closest($module).length > 0
|
1719
1728
|
;
|
1720
1729
|
callback = isFunction(callback)
|
1721
1730
|
? callback
|
@@ -1725,19 +1734,19 @@
|
|
1725
1734
|
callback();
|
1726
1735
|
|
1727
1736
|
return true;
|
1728
|
-
} else {
|
1729
|
-
module.verbose('Event occurred in dropdown, canceling callback');
|
1730
|
-
|
1731
|
-
return false;
|
1732
1737
|
}
|
1738
|
+
|
1739
|
+
module.verbose('Event occurred in dropdown, canceling callback');
|
1740
|
+
|
1741
|
+
return false;
|
1733
1742
|
},
|
1734
1743
|
eventOnElement: function (event, callback) {
|
1735
1744
|
var
|
1736
1745
|
$target = $(event.target),
|
1737
1746
|
$label = $target.closest(selector.siblingLabel),
|
1738
1747
|
inVisibleDOM = document.body.contains(event.target),
|
1739
|
-
notOnLabel =
|
1740
|
-
notInMenu =
|
1748
|
+
notOnLabel = $module.find($label).length === 0 || !(module.is.multiple() && settings.useLabels),
|
1749
|
+
notInMenu = $target.closest($menu).length === 0
|
1741
1750
|
;
|
1742
1751
|
callback = isFunction(callback)
|
1743
1752
|
? callback
|
@@ -1747,11 +1756,11 @@
|
|
1747
1756
|
callback();
|
1748
1757
|
|
1749
1758
|
return true;
|
1750
|
-
} else {
|
1751
|
-
module.verbose('Event occurred in dropdown menu, canceling callback');
|
1752
|
-
|
1753
|
-
return false;
|
1754
1759
|
}
|
1760
|
+
|
1761
|
+
module.verbose('Event occurred in dropdown menu, canceling callback');
|
1762
|
+
|
1763
|
+
return false;
|
1755
1764
|
},
|
1756
1765
|
},
|
1757
1766
|
|
@@ -1760,7 +1769,7 @@
|
|
1760
1769
|
nothing: function () {},
|
1761
1770
|
|
1762
1771
|
activate: function (text, value, element) {
|
1763
|
-
value =
|
1772
|
+
value = value !== undefined
|
1764
1773
|
? value
|
1765
1774
|
: text;
|
1766
1775
|
if (module.can.activate($(element))) {
|
@@ -1772,7 +1781,7 @@
|
|
1772
1781
|
},
|
1773
1782
|
|
1774
1783
|
select: function (text, value, element) {
|
1775
|
-
value =
|
1784
|
+
value = value !== undefined
|
1776
1785
|
? value
|
1777
1786
|
: text;
|
1778
1787
|
if (module.can.activate($(element))) {
|
@@ -1784,7 +1793,7 @@
|
|
1784
1793
|
},
|
1785
1794
|
|
1786
1795
|
combo: function (text, value, element) {
|
1787
|
-
value =
|
1796
|
+
value = value !== undefined
|
1788
1797
|
? value
|
1789
1798
|
: text;
|
1790
1799
|
module.set.selected(value, $(element));
|
@@ -1809,7 +1818,7 @@
|
|
1809
1818
|
return $module.data(metadata.defaultValue);
|
1810
1819
|
},
|
1811
1820
|
placeholderText: function () {
|
1812
|
-
if (settings.placeholder != 'auto' && typeof settings.placeholder
|
1821
|
+
if (settings.placeholder != 'auto' && typeof settings.placeholder === 'string') {
|
1813
1822
|
return settings.placeholder;
|
1814
1823
|
}
|
1815
1824
|
|
@@ -1822,7 +1831,7 @@
|
|
1822
1831
|
return String($search.val()).trim();
|
1823
1832
|
},
|
1824
1833
|
searchWidth: function (value) {
|
1825
|
-
value =
|
1834
|
+
value = value !== undefined
|
1826
1835
|
? value
|
1827
1836
|
: $search.val();
|
1828
1837
|
$sizer.text(value);
|
@@ -1835,21 +1844,15 @@
|
|
1835
1844
|
values = module.get.values(),
|
1836
1845
|
count
|
1837
1846
|
;
|
1838
|
-
count =
|
1839
|
-
? Array.isArray(values)
|
1840
|
-
|
1841
|
-
: 0
|
1842
|
-
: (module.get.value() !== '')
|
1843
|
-
? 1
|
1844
|
-
: 0;
|
1847
|
+
count = module.is.multiple()
|
1848
|
+
? (Array.isArray(values) ? values.length : 0)
|
1849
|
+
: (module.get.value() !== '' ? 1 : 0);
|
1845
1850
|
|
1846
1851
|
return count;
|
1847
1852
|
},
|
1848
1853
|
transition: function ($subMenu) {
|
1849
|
-
return
|
1850
|
-
? module.is.upward($subMenu)
|
1851
|
-
? 'slide up'
|
1852
|
-
: 'slide down'
|
1854
|
+
return settings.transition === 'auto'
|
1855
|
+
? (module.is.upward($subMenu) ? 'slide up' : 'slide down')
|
1853
1856
|
: settings.transition;
|
1854
1857
|
},
|
1855
1858
|
userValues: function () {
|
@@ -1864,7 +1867,7 @@
|
|
1864
1867
|
: [values];
|
1865
1868
|
|
1866
1869
|
return $.grep(values, function (value) {
|
1867
|
-
return
|
1870
|
+
return module.get.item(value) === false;
|
1868
1871
|
});
|
1869
1872
|
},
|
1870
1873
|
uniqueArray: function (array) {
|
@@ -1880,7 +1883,8 @@
|
|
1880
1883
|
;
|
1881
1884
|
if (returnEndPos && 'selectionEnd' in input) {
|
1882
1885
|
return input.selectionEnd;
|
1883
|
-
}
|
1886
|
+
}
|
1887
|
+
if (!returnEndPos && 'selectionStart' in input) {
|
1884
1888
|
return input.selectionStart;
|
1885
1889
|
}
|
1886
1890
|
if (document.selection) {
|
@@ -1897,14 +1901,14 @@
|
|
1897
1901
|
},
|
1898
1902
|
value: function () {
|
1899
1903
|
var
|
1900
|
-
value =
|
1904
|
+
value = $input.length > 0
|
1901
1905
|
? $input.val()
|
1902
1906
|
: $module.data(metadata.value),
|
1903
|
-
isEmptyMultiselect =
|
1907
|
+
isEmptyMultiselect = Array.isArray(value) && value.length === 1 && value[0] === ''
|
1904
1908
|
;
|
1905
1909
|
|
1906
1910
|
// prevents placeholder element from being selected when multiple
|
1907
|
-
return
|
1911
|
+
return value === undefined || isEmptyMultiselect
|
1908
1912
|
? ''
|
1909
1913
|
: value;
|
1910
1914
|
},
|
@@ -1916,10 +1920,12 @@
|
|
1916
1920
|
return '';
|
1917
1921
|
}
|
1918
1922
|
|
1919
|
-
return
|
1920
|
-
? (typeof value
|
1921
|
-
? (raw
|
1922
|
-
|
1923
|
+
return !module.has.selectInput() && module.is.multiple()
|
1924
|
+
? (typeof value === 'string' // delimited string
|
1925
|
+
? (raw
|
1926
|
+
? value
|
1927
|
+
: module.escape.htmlEntities(value)).split(settings.delimiter)
|
1928
|
+
: '')
|
1923
1929
|
: value;
|
1924
1930
|
},
|
1925
1931
|
remoteValues: function () {
|
@@ -1928,7 +1934,7 @@
|
|
1928
1934
|
remoteValues = false
|
1929
1935
|
;
|
1930
1936
|
if (values) {
|
1931
|
-
if (typeof values
|
1937
|
+
if (typeof values === 'string') {
|
1932
1938
|
values = [values];
|
1933
1939
|
}
|
1934
1940
|
$.each(values, function (index, value) {
|
@@ -1948,7 +1954,7 @@
|
|
1948
1954
|
return remoteValues;
|
1949
1955
|
},
|
1950
1956
|
choiceText: function ($choice, preserveHTML) {
|
1951
|
-
preserveHTML =
|
1957
|
+
preserveHTML = preserveHTML !== undefined
|
1952
1958
|
? preserveHTML
|
1953
1959
|
: settings.preserveHTML;
|
1954
1960
|
if ($choice) {
|
@@ -1959,11 +1965,11 @@
|
|
1959
1965
|
$choice.find(selector.menuIcon).remove();
|
1960
1966
|
}
|
1961
1967
|
|
1962
|
-
return
|
1968
|
+
return $choice.data(metadata.text) !== undefined
|
1963
1969
|
? $choice.data(metadata.text)
|
1964
|
-
: (preserveHTML
|
1970
|
+
: (preserveHTML
|
1965
1971
|
? $choice.html() && $choice.html().trim()
|
1966
|
-
: $choice.text() && $choice.text().trim();
|
1972
|
+
: $choice.text() && $choice.text().trim());
|
1967
1973
|
}
|
1968
1974
|
},
|
1969
1975
|
choiceValue: function ($choice, choiceText) {
|
@@ -1972,26 +1978,26 @@
|
|
1972
1978
|
return false;
|
1973
1979
|
}
|
1974
1980
|
|
1975
|
-
return
|
1981
|
+
return $choice.data(metadata.value) !== undefined
|
1976
1982
|
? String($choice.data(metadata.value))
|
1977
|
-
: (typeof choiceText === 'string'
|
1983
|
+
: (typeof choiceText === 'string'
|
1978
1984
|
? String(
|
1979
1985
|
settings.ignoreSearchCase
|
1980
1986
|
? choiceText.toLowerCase()
|
1981
1987
|
: choiceText
|
1982
1988
|
).trim()
|
1983
|
-
: String(choiceText);
|
1989
|
+
: String(choiceText));
|
1984
1990
|
},
|
1985
1991
|
inputEvent: function () {
|
1986
1992
|
var
|
1987
1993
|
input = $search[0]
|
1988
1994
|
;
|
1989
1995
|
if (input) {
|
1990
|
-
return
|
1996
|
+
return input.oninput !== undefined
|
1991
1997
|
? 'input'
|
1992
|
-
: (input.onpropertychange !== undefined
|
1998
|
+
: (input.onpropertychange !== undefined
|
1993
1999
|
? 'propertychange'
|
1994
|
-
: 'keyup';
|
2000
|
+
: 'keyup');
|
1995
2001
|
}
|
1996
2002
|
|
1997
2003
|
return false;
|
@@ -2009,10 +2015,10 @@
|
|
2009
2015
|
$option = $(this),
|
2010
2016
|
name = $option.html(),
|
2011
2017
|
disabled = $option.attr('disabled'),
|
2012
|
-
value =
|
2018
|
+
value = $option.attr('value') !== undefined
|
2013
2019
|
? $option.attr('value')
|
2014
2020
|
: name,
|
2015
|
-
text =
|
2021
|
+
text = $option.data(metadata.text) !== undefined
|
2016
2022
|
? $option.data(metadata.text)
|
2017
2023
|
: name,
|
2018
2024
|
group = $option.parent('optgroup')
|
@@ -2048,7 +2054,7 @@
|
|
2048
2054
|
});
|
2049
2055
|
} else if (settings.sortSelect === 'natural') {
|
2050
2056
|
values.sort(function (a, b) {
|
2051
|
-
return
|
2057
|
+
return a.name.toLowerCase().localeCompare(b.name.toLowerCase());
|
2052
2058
|
});
|
2053
2059
|
} else if (isFunction(settings.sortSelect)) {
|
2054
2060
|
values.sort(settings.sortSelect);
|
@@ -2070,7 +2076,7 @@
|
|
2070
2076
|
$selectedItem = $item.not(selector.unselectable).filter('.' + className.selected)
|
2071
2077
|
;
|
2072
2078
|
|
2073
|
-
return
|
2079
|
+
return $selectedItem.length > 0
|
2074
2080
|
? $selectedItem
|
2075
2081
|
: $item.eq(0);
|
2076
2082
|
},
|
@@ -2078,10 +2084,10 @@
|
|
2078
2084
|
var
|
2079
2085
|
$items = module.get.item(value),
|
2080
2086
|
$userItems = module.create.userChoice(value),
|
2081
|
-
hasUserItems =
|
2087
|
+
hasUserItems = $userItems && $userItems.length > 0
|
2082
2088
|
;
|
2083
2089
|
if (hasUserItems) {
|
2084
|
-
$items =
|
2090
|
+
$items = $items.length > 0
|
2085
2091
|
? $items.add($userItems)
|
2086
2092
|
: $userItems;
|
2087
2093
|
}
|
@@ -2094,16 +2100,16 @@
|
|
2094
2100
|
shouldSearch,
|
2095
2101
|
isMultiple
|
2096
2102
|
;
|
2097
|
-
value =
|
2103
|
+
value = value !== undefined
|
2098
2104
|
? value
|
2099
|
-
: (module.get.values() !== undefined
|
2105
|
+
: (module.get.values() !== undefined
|
2100
2106
|
? module.get.values()
|
2101
|
-
: module.get.text();
|
2102
|
-
isMultiple =
|
2103
|
-
shouldSearch =
|
2104
|
-
?
|
2105
|
-
:
|
2106
|
-
strict =
|
2107
|
+
: module.get.text());
|
2108
|
+
isMultiple = module.is.multiple() && Array.isArray(value);
|
2109
|
+
shouldSearch = isMultiple
|
2110
|
+
? value.length > 0
|
2111
|
+
: value !== undefined && value !== null;
|
2112
|
+
strict = value === '' || value === false || value === true
|
2107
2113
|
? true
|
2108
2114
|
: strict || false;
|
2109
2115
|
if (shouldSearch) {
|
@@ -2119,10 +2125,8 @@
|
|
2119
2125
|
return;
|
2120
2126
|
}
|
2121
2127
|
if (isMultiple) {
|
2122
|
-
if ($.inArray(module.escape.htmlEntities(String(optionValue)), value.map(
|
2123
|
-
|
2124
|
-
})) !== -1) {
|
2125
|
-
$selectedItem = ($selectedItem)
|
2128
|
+
if ($.inArray(module.escape.htmlEntities(String(optionValue)), value.map(String)) !== -1) {
|
2129
|
+
$selectedItem = $selectedItem
|
2126
2130
|
? $selectedItem.add($choice)
|
2127
2131
|
: $choice;
|
2128
2132
|
}
|
@@ -2159,7 +2163,7 @@
|
|
2159
2163
|
check: {
|
2160
2164
|
maxSelections: function (selectionCount) {
|
2161
2165
|
if (settings.maxSelections) {
|
2162
|
-
selectionCount =
|
2166
|
+
selectionCount = selectionCount !== undefined
|
2163
2167
|
? selectionCount
|
2164
2168
|
: module.get.selectionCount();
|
2165
2169
|
if (selectionCount >= settings.maxSelections) {
|
@@ -2170,16 +2174,16 @@
|
|
2170
2174
|
}
|
2171
2175
|
|
2172
2176
|
return true;
|
2173
|
-
}
|
2174
|
-
module.verbose('No longer at maximum selection count');
|
2175
|
-
module.remove.message();
|
2176
|
-
module.remove.filteredItem();
|
2177
|
-
if (module.is.searchSelection()) {
|
2178
|
-
module.filterItems();
|
2179
|
-
}
|
2177
|
+
}
|
2180
2178
|
|
2181
|
-
|
2179
|
+
module.verbose('No longer at maximum selection count');
|
2180
|
+
module.remove.message();
|
2181
|
+
module.remove.filteredItem();
|
2182
|
+
if (module.is.searchSelection()) {
|
2183
|
+
module.filterItems();
|
2182
2184
|
}
|
2185
|
+
|
2186
|
+
return false;
|
2183
2187
|
}
|
2184
2188
|
|
2185
2189
|
return true;
|
@@ -2293,7 +2297,7 @@
|
|
2293
2297
|
}
|
2294
2298
|
name = sessionStorage.getItem(value + elementNamespace);
|
2295
2299
|
|
2296
|
-
return
|
2300
|
+
return name !== undefined
|
2297
2301
|
? name
|
2298
2302
|
: false;
|
2299
2303
|
},
|
@@ -2364,7 +2368,7 @@
|
|
2364
2368
|
currentScroll = $menu.scrollTop(),
|
2365
2369
|
itemHeight = $item.eq(0).outerHeight(),
|
2366
2370
|
itemsPerPage = Math.floor(menuHeight / itemHeight),
|
2367
|
-
newScroll =
|
2371
|
+
newScroll = direction == 'up'
|
2368
2372
|
? currentScroll - (itemHeight * itemsPerPage)
|
2369
2373
|
: currentScroll + (itemHeight * itemsPerPage),
|
2370
2374
|
$selectableItem = $item.not(selector.unselectable),
|
@@ -2372,17 +2376,17 @@
|
|
2372
2376
|
$nextSelectedItem,
|
2373
2377
|
elementIndex
|
2374
2378
|
;
|
2375
|
-
elementIndex =
|
2379
|
+
elementIndex = direction == 'up'
|
2376
2380
|
? $selectableItem.index($currentItem) - itemsPerPage
|
2377
2381
|
: $selectableItem.index($currentItem) + itemsPerPage;
|
2378
|
-
isWithinRange =
|
2379
|
-
?
|
2380
|
-
:
|
2381
|
-
$nextSelectedItem =
|
2382
|
+
isWithinRange = direction == 'up'
|
2383
|
+
? elementIndex >= 0
|
2384
|
+
: elementIndex < $selectableItem.length;
|
2385
|
+
$nextSelectedItem = isWithinRange
|
2382
2386
|
? $selectableItem.eq(elementIndex)
|
2383
|
-
: (direction == 'up'
|
2387
|
+
: (direction == 'up'
|
2384
2388
|
? $selectableItem.first()
|
2385
|
-
: $selectableItem.last();
|
2389
|
+
: $selectableItem.last());
|
2386
2390
|
if ($nextSelectedItem.length > 0) {
|
2387
2391
|
module.debug('Scrolling page', direction, $nextSelectedItem);
|
2388
2392
|
$currentItem
|
@@ -2405,11 +2409,11 @@
|
|
2405
2409
|
var
|
2406
2410
|
isMultiple = module.is.multiple(),
|
2407
2411
|
isSearch = module.is.searchSelection(),
|
2408
|
-
isSearchMultiple =
|
2409
|
-
searchValue =
|
2412
|
+
isSearchMultiple = isMultiple && isSearch,
|
2413
|
+
searchValue = isSearch
|
2410
2414
|
? module.get.query()
|
2411
2415
|
: '',
|
2412
|
-
hasSearchValue =
|
2416
|
+
hasSearchValue = typeof searchValue === 'string' && searchValue.length > 0,
|
2413
2417
|
searchWidth = module.get.searchWidth(),
|
2414
2418
|
valueIsSet = searchValue !== ''
|
2415
2419
|
;
|
@@ -2493,8 +2497,8 @@
|
|
2493
2497
|
|
2494
2498
|
$item = $item || module.get.selectedItem();
|
2495
2499
|
$menu = $item.closest(selector.menu);
|
2496
|
-
hasActive =
|
2497
|
-
forceScroll =
|
2500
|
+
hasActive = $item && $item.length > 0;
|
2501
|
+
forceScroll = forceScroll !== undefined
|
2498
2502
|
? forceScroll
|
2499
2503
|
: false;
|
2500
2504
|
if (module.get.activeItem().length === 0) {
|
@@ -2511,7 +2515,7 @@
|
|
2511
2515
|
if (!forceScroll) {
|
2512
2516
|
menuHeight = $menu.height();
|
2513
2517
|
belowPage = menuScroll + menuHeight < (offset + edgeTolerance);
|
2514
|
-
abovePage = (
|
2518
|
+
abovePage = (offset - edgeTolerance) < menuScroll;
|
2515
2519
|
}
|
2516
2520
|
module.debug('Scrolling to active item', offset);
|
2517
2521
|
if (forceScroll || abovePage || belowPage) {
|
@@ -2636,9 +2640,9 @@
|
|
2636
2640
|
}
|
2637
2641
|
var
|
2638
2642
|
escapedValue = module.escape.value(value),
|
2639
|
-
hasInput =
|
2643
|
+
hasInput = $input.length > 0,
|
2640
2644
|
currentValue = module.get.values(),
|
2641
|
-
stringValue =
|
2645
|
+
stringValue = value !== undefined
|
2642
2646
|
? String(value)
|
2643
2647
|
: value
|
2644
2648
|
;
|
@@ -2706,7 +2710,7 @@
|
|
2706
2710
|
var
|
2707
2711
|
isMultiple = module.is.multiple()
|
2708
2712
|
;
|
2709
|
-
$selectedItem =
|
2713
|
+
$selectedItem = settings.allowAdditions
|
2710
2714
|
? $selectedItem || module.get.itemWithAdditions(value)
|
2711
2715
|
: $selectedItem || module.get.item(value);
|
2712
2716
|
if (!$selectedItem) {
|
@@ -2734,7 +2738,7 @@
|
|
2734
2738
|
isActive = $selected.hasClass(className.active),
|
2735
2739
|
isActionable = $selected.hasClass(className.actionable),
|
2736
2740
|
isUserValue = $selected.hasClass(className.addition),
|
2737
|
-
shouldAnimate =
|
2741
|
+
shouldAnimate = isMultiple && $selectedItem && $selectedItem.length === 1
|
2738
2742
|
;
|
2739
2743
|
if (isActionable) {
|
2740
2744
|
if ((!isMultiple || (!isActive || isUserValue)) && settings.apiSettings && settings.saveRemoteData) {
|
@@ -2854,7 +2858,7 @@
|
|
2854
2858
|
var
|
2855
2859
|
escapedValue = module.escape.value(value),
|
2856
2860
|
$option = $input.find('option[value="' + module.escape.string(escapedValue) + '"]'),
|
2857
|
-
hasOption =
|
2861
|
+
hasOption = $option.length > 0
|
2858
2862
|
;
|
2859
2863
|
if (hasOption) {
|
2860
2864
|
return;
|
@@ -2878,7 +2882,7 @@
|
|
2878
2882
|
var
|
2879
2883
|
$addition = $menu.children(selector.addition),
|
2880
2884
|
$existingItem = module.get.item(value),
|
2881
|
-
alreadyHasValue = $existingItem && $existingItem.not(selector.addition).length,
|
2885
|
+
alreadyHasValue = $existingItem && $existingItem.not(selector.addition).length > 0,
|
2882
2886
|
hasUserSuggestion = $addition.length > 0,
|
2883
2887
|
html
|
2884
2888
|
;
|
@@ -2923,9 +2927,9 @@
|
|
2923
2927
|
},
|
2924
2928
|
variables: function (message, term) {
|
2925
2929
|
var
|
2926
|
-
hasCount =
|
2927
|
-
hasMaxCount =
|
2928
|
-
hasTerm =
|
2930
|
+
hasCount = message.search('{count}') !== -1,
|
2931
|
+
hasMaxCount = message.search('{maxCount}') !== -1,
|
2932
|
+
hasTerm = message.search('{term}') !== -1,
|
2929
2933
|
query
|
2930
2934
|
;
|
2931
2935
|
module.verbose('Adding templated variables to message', message);
|
@@ -3038,7 +3042,7 @@
|
|
3038
3042
|
var
|
3039
3043
|
escapedValue = module.escape.value(value),
|
3040
3044
|
$option = $input.find('option[value="' + module.escape.string(escapedValue) + '"]'),
|
3041
|
-
hasOption =
|
3045
|
+
hasOption = $option.length > 0
|
3042
3046
|
;
|
3043
3047
|
if (!hasOption || !$option.hasClass(className.addition)) {
|
3044
3048
|
return;
|
@@ -3064,7 +3068,7 @@
|
|
3064
3068
|
$item.filter(selector.addition).remove();
|
3065
3069
|
},
|
3066
3070
|
selected: function (value, $selectedItem, preventChangeTrigger) {
|
3067
|
-
$selectedItem =
|
3071
|
+
$selectedItem = settings.allowAdditions
|
3068
3072
|
? $selectedItem || module.get.itemWithAdditions(value)
|
3069
3073
|
: $selectedItem || module.get.item(value);
|
3070
3074
|
|
@@ -3134,7 +3138,7 @@
|
|
3134
3138
|
values = [values];
|
3135
3139
|
}
|
3136
3140
|
values = $.grep(values, function (value) {
|
3137
|
-
return
|
3141
|
+
return removedValue != value;
|
3138
3142
|
});
|
3139
3143
|
module.verbose('Removed value from delimited string', removedValue, values);
|
3140
3144
|
|
@@ -3162,7 +3166,7 @@
|
|
3162
3166
|
var
|
3163
3167
|
$label = $(this),
|
3164
3168
|
value = $label.data(metadata.value),
|
3165
|
-
stringValue =
|
3169
|
+
stringValue = value !== undefined
|
3166
3170
|
? String(value)
|
3167
3171
|
: value,
|
3168
3172
|
isUserValue = module.is.userValue(stringValue)
|
@@ -3203,33 +3207,33 @@
|
|
3203
3207
|
}
|
3204
3208
|
},
|
3205
3209
|
diacritics: function (text) {
|
3206
|
-
return settings.ignoreDiacritics ? text.normalize('NFD').replace(/[\u0300-\
|
3210
|
+
return settings.ignoreDiacritics ? text.normalize('NFD').replace(/[\u0300-\u036F]/g, '') : text;
|
3207
3211
|
},
|
3208
3212
|
},
|
3209
3213
|
|
3210
3214
|
has: {
|
3211
3215
|
menuSearch: function () {
|
3212
|
-
return
|
3216
|
+
return module.has.search() && $search.closest($menu).length > 0;
|
3213
3217
|
},
|
3214
3218
|
clearItem: function () {
|
3215
|
-
return
|
3219
|
+
return $clear.length > 0;
|
3216
3220
|
},
|
3217
3221
|
search: function () {
|
3218
|
-
return
|
3222
|
+
return $search.length > 0;
|
3219
3223
|
},
|
3220
3224
|
sizer: function () {
|
3221
|
-
return
|
3225
|
+
return $sizer.length > 0;
|
3222
3226
|
},
|
3223
3227
|
selectInput: function () {
|
3224
|
-
return
|
3228
|
+
return $input.is('select');
|
3225
3229
|
},
|
3226
3230
|
minCharacters: function (searchTerm) {
|
3227
3231
|
if (settings.minCharacters && !iconClicked) {
|
3228
|
-
searchTerm =
|
3232
|
+
searchTerm = searchTerm !== undefined
|
3229
3233
|
? String(searchTerm)
|
3230
3234
|
: String(module.get.query());
|
3231
3235
|
|
3232
|
-
return
|
3236
|
+
return searchTerm.length >= settings.minCharacters;
|
3233
3237
|
}
|
3234
3238
|
iconClicked = false;
|
3235
3239
|
|
@@ -3247,22 +3251,22 @@
|
|
3247
3251
|
letter = letter.toLowerCase();
|
3248
3252
|
firstLetter = String(text).charAt(0).toLowerCase();
|
3249
3253
|
|
3250
|
-
return
|
3254
|
+
return letter == firstLetter;
|
3251
3255
|
},
|
3252
3256
|
input: function () {
|
3253
|
-
return
|
3257
|
+
return $input.length > 0;
|
3254
3258
|
},
|
3255
3259
|
items: function () {
|
3256
|
-
return
|
3260
|
+
return $item.length > 0;
|
3257
3261
|
},
|
3258
3262
|
menu: function () {
|
3259
|
-
return
|
3263
|
+
return $menu.length > 0;
|
3260
3264
|
},
|
3261
3265
|
subMenu: function ($currentMenu) {
|
3262
3266
|
return ($currentMenu || $menu).find(selector.menu).length > 0;
|
3263
3267
|
},
|
3264
3268
|
message: function () {
|
3265
|
-
return
|
3269
|
+
return $menu.children(selector.message).length > 0;
|
3266
3270
|
},
|
3267
3271
|
label: function (value) {
|
3268
3272
|
var
|
@@ -3273,26 +3277,26 @@
|
|
3273
3277
|
escapedValue = escapedValue.toLowerCase();
|
3274
3278
|
}
|
3275
3279
|
|
3276
|
-
return
|
3280
|
+
return $labels.filter('[data-' + metadata.value + '="' + module.escape.string(escapedValue) + '"]').length > 0;
|
3277
3281
|
},
|
3278
3282
|
maxSelections: function () {
|
3279
|
-
return
|
3283
|
+
return settings.maxSelections && module.get.selectionCount() >= settings.maxSelections;
|
3280
3284
|
},
|
3281
3285
|
allResultsFiltered: function () {
|
3282
3286
|
var
|
3283
3287
|
$normalResults = $item.not(selector.addition)
|
3284
3288
|
;
|
3285
3289
|
|
3286
|
-
return
|
3290
|
+
return $normalResults.filter(selector.unselectable).length === $normalResults.length;
|
3287
3291
|
},
|
3288
3292
|
userSuggestion: function () {
|
3289
|
-
return
|
3293
|
+
return $menu.children(selector.addition).length > 0;
|
3290
3294
|
},
|
3291
3295
|
query: function () {
|
3292
|
-
return
|
3296
|
+
return module.get.query() !== '';
|
3293
3297
|
},
|
3294
3298
|
value: function (value) {
|
3295
|
-
return
|
3299
|
+
return settings.ignoreCase
|
3296
3300
|
? module.has.valueIgnoringCase(value)
|
3297
3301
|
: module.has.valueMatchingCase(value);
|
3298
3302
|
},
|
@@ -3301,12 +3305,10 @@
|
|
3301
3305
|
values = module.get.values(true),
|
3302
3306
|
hasValue = Array.isArray(values)
|
3303
3307
|
? values && ($.inArray(value, values) !== -1)
|
3304
|
-
:
|
3308
|
+
: values == value
|
3305
3309
|
;
|
3306
3310
|
|
3307
|
-
return
|
3308
|
-
? true
|
3309
|
-
: false;
|
3311
|
+
return !!hasValue;
|
3310
3312
|
},
|
3311
3313
|
valueIgnoringCase: function (value) {
|
3312
3314
|
var
|
@@ -3354,10 +3356,10 @@
|
|
3354
3356
|
return !!window.chrome && !window.StyleMedia;
|
3355
3357
|
},
|
3356
3358
|
alreadySetup: function () {
|
3357
|
-
return
|
3359
|
+
return $module.is('select') && $module.parent(selector.dropdown).data(moduleNamespace) !== undefined && $module.prev().length === 0;
|
3358
3360
|
},
|
3359
3361
|
animating: function ($subMenu) {
|
3360
|
-
return
|
3362
|
+
return $subMenu
|
3361
3363
|
? $subMenu.transition && $subMenu.transition('is animating')
|
3362
3364
|
: $menu.transition && $menu.transition('is animating');
|
3363
3365
|
},
|
@@ -3367,19 +3369,19 @@
|
|
3367
3369
|
return $selectedMenu.hasClass(className.leftward);
|
3368
3370
|
},
|
3369
3371
|
clearable: function () {
|
3370
|
-
return
|
3372
|
+
return $module.hasClass(className.clearable) || settings.clearable;
|
3371
3373
|
},
|
3372
3374
|
disabled: function () {
|
3373
3375
|
return $module.hasClass(className.disabled);
|
3374
3376
|
},
|
3375
3377
|
focused: function () {
|
3376
|
-
return
|
3378
|
+
return document.activeElement === $module[0];
|
3377
3379
|
},
|
3378
3380
|
focusedOnSearch: function () {
|
3379
|
-
return
|
3381
|
+
return document.activeElement === $search[0];
|
3380
3382
|
},
|
3381
3383
|
allFiltered: function () {
|
3382
|
-
return (
|
3384
|
+
return (module.is.multiple() || module.has.search()) && !(!settings.hideAdditions && module.has.userSuggestion()) && !module.has.message() && module.has.allResultsFiltered();
|
3383
3385
|
},
|
3384
3386
|
hidden: function ($subMenu) {
|
3385
3387
|
return !module.is.visible($subMenu);
|
@@ -3431,13 +3433,13 @@
|
|
3431
3433
|
return $module.hasClass(className.search);
|
3432
3434
|
},
|
3433
3435
|
searchSelection: function (deep) {
|
3434
|
-
return
|
3436
|
+
return module.has.search() && (deep ? $search.parents(selector.dropdown) : $search.parent(selector.dropdown)).length === 1;
|
3435
3437
|
},
|
3436
3438
|
selection: function () {
|
3437
3439
|
return $module.hasClass(className.selection);
|
3438
3440
|
},
|
3439
3441
|
userValue: function (value) {
|
3440
|
-
return
|
3442
|
+
return $.inArray(value, module.get.userValues()) !== -1;
|
3441
3443
|
},
|
3442
3444
|
upward: function ($menu) {
|
3443
3445
|
var $element = $menu || $module;
|
@@ -3445,27 +3447,27 @@
|
|
3445
3447
|
return $element.hasClass(className.upward);
|
3446
3448
|
},
|
3447
3449
|
visible: function ($subMenu) {
|
3448
|
-
return
|
3450
|
+
return $subMenu
|
3449
3451
|
? $subMenu.hasClass(className.visible)
|
3450
3452
|
: $menu.hasClass(className.visible);
|
3451
3453
|
},
|
3452
3454
|
verticallyScrollableContext: function () {
|
3453
3455
|
var
|
3454
|
-
overflowY =
|
3456
|
+
overflowY = $context[0] !== window
|
3455
3457
|
? $context.css('overflow-y')
|
3456
3458
|
: false
|
3457
3459
|
;
|
3458
3460
|
|
3459
|
-
return
|
3461
|
+
return overflowY == 'auto' || overflowY == 'scroll';
|
3460
3462
|
},
|
3461
3463
|
horizontallyScrollableContext: function () {
|
3462
3464
|
var
|
3463
|
-
overflowX =
|
3465
|
+
overflowX = $context[0] !== window
|
3464
3466
|
? $context.css('overflow-X')
|
3465
3467
|
: false
|
3466
3468
|
;
|
3467
3469
|
|
3468
|
-
return
|
3470
|
+
return overflowX == 'auto' || overflowX == 'scroll';
|
3469
3471
|
},
|
3470
3472
|
},
|
3471
3473
|
|
@@ -3489,7 +3491,7 @@
|
|
3489
3491
|
;
|
3490
3492
|
calculations = {
|
3491
3493
|
context: {
|
3492
|
-
offset:
|
3494
|
+
offset: $context[0] === window
|
3493
3495
|
? { top: 0, left: 0 }
|
3494
3496
|
: $context.offset(),
|
3495
3497
|
scrollTop: $context.scrollTop(),
|
@@ -3507,7 +3509,7 @@
|
|
3507
3509
|
calculations.menu.height += $currentMenu.find(selector.menu).first().outerHeight();
|
3508
3510
|
}
|
3509
3511
|
onScreen = {
|
3510
|
-
above:
|
3512
|
+
above: calculations.context.scrollTop <= calculations.menu.offset.top - calculations.context.offset.top - calculations.menu.height,
|
3511
3513
|
below: (calculations.context.scrollTop + calculations.context.height) >= calculations.menu.offset.top - calculations.context.offset.top + calculations.menu.height,
|
3512
3514
|
};
|
3513
3515
|
if (onScreen.below) {
|
@@ -3536,7 +3538,7 @@
|
|
3536
3538
|
;
|
3537
3539
|
calculations = {
|
3538
3540
|
context: {
|
3539
|
-
offset:
|
3541
|
+
offset: $context[0] === window
|
3540
3542
|
? { top: 0, left: 0 }
|
3541
3543
|
: $context.offset(),
|
3542
3544
|
scrollLeft: $context.scrollLeft(),
|
@@ -3550,7 +3552,7 @@
|
|
3550
3552
|
if (module.is.horizontallyScrollableContext()) {
|
3551
3553
|
calculations.menu.offset.left += calculations.context.scrollLeft;
|
3552
3554
|
}
|
3553
|
-
isOffscreenRight =
|
3555
|
+
isOffscreenRight = calculations.menu.offset.left - calculations.context.offset.left + calculations.menu.width >= calculations.context.scrollLeft + calculations.context.width;
|
3554
3556
|
if (isOffscreenRight) {
|
3555
3557
|
module.verbose('Dropdown cannot fit in context rightward', isOffscreenRight);
|
3556
3558
|
canOpenRightward = false;
|
@@ -3574,7 +3576,7 @@
|
|
3574
3576
|
show: function (callback, $subMenu) {
|
3575
3577
|
var
|
3576
3578
|
$currentMenu = $subMenu || $menu,
|
3577
|
-
start =
|
3579
|
+
start = $subMenu
|
3578
3580
|
? function () {}
|
3579
3581
|
: function () {
|
3580
3582
|
module.hideSubMenus();
|
@@ -3623,7 +3625,7 @@
|
|
3623
3625
|
hide: function (callback, $subMenu) {
|
3624
3626
|
var
|
3625
3627
|
$currentMenu = $subMenu || $menu,
|
3626
|
-
start =
|
3628
|
+
start = $subMenu
|
3627
3629
|
? function () {}
|
3628
3630
|
: function () {
|
3629
3631
|
module.unbind.intent();
|
@@ -3697,9 +3699,9 @@
|
|
3697
3699
|
value: function (value) {
|
3698
3700
|
var
|
3699
3701
|
multipleValues = Array.isArray(value),
|
3700
|
-
stringValue =
|
3701
|
-
isUnparsable =
|
3702
|
-
hasQuotes =
|
3702
|
+
stringValue = typeof value === 'string',
|
3703
|
+
isUnparsable = !stringValue && !multipleValues,
|
3704
|
+
hasQuotes = stringValue && value.search(regExp.quote) !== -1,
|
3703
3705
|
values = []
|
3704
3706
|
;
|
3705
3707
|
if (isUnparsable || !hasQuotes) {
|
@@ -3723,8 +3725,8 @@
|
|
3723
3725
|
},
|
3724
3726
|
htmlEntities: function (string) {
|
3725
3727
|
var
|
3726
|
-
badChars = /[
|
3727
|
-
shouldEscape = /[
|
3728
|
+
badChars = /["'<>`]/g,
|
3729
|
+
shouldEscape = /["&'<>`]/,
|
3728
3730
|
escape = {
|
3729
3731
|
'<': '<',
|
3730
3732
|
'>': '>',
|
@@ -3737,7 +3739,7 @@
|
|
3737
3739
|
}
|
3738
3740
|
;
|
3739
3741
|
if (shouldEscape.test(string)) {
|
3740
|
-
string = string.replace(/&(?![a-
|
3742
|
+
string = string.replace(/&(?![\d#a-z]{1,12};)/gi, '&');
|
3741
3743
|
|
3742
3744
|
return string.replace(badChars, escapedChar);
|
3743
3745
|
}
|
@@ -3803,7 +3805,7 @@
|
|
3803
3805
|
previousTime
|
3804
3806
|
;
|
3805
3807
|
if (settings.performance) {
|
3806
|
-
currentTime =
|
3808
|
+
currentTime = Date.now();
|
3807
3809
|
previousTime = time || currentTime;
|
3808
3810
|
executionTime = currentTime - previousTime;
|
3809
3811
|
time = currentTime;
|
@@ -3854,11 +3856,11 @@
|
|
3854
3856
|
;
|
3855
3857
|
passedArguments = passedArguments || queryArguments;
|
3856
3858
|
context = context || element;
|
3857
|
-
if (typeof query
|
3858
|
-
query = query.split(/[
|
3859
|
+
if (typeof query === 'string' && object !== undefined) {
|
3860
|
+
query = query.split(/[ .]/);
|
3859
3861
|
maxDepth = query.length - 1;
|
3860
3862
|
$.each(query, function (depth, value) {
|
3861
|
-
var camelCaseValue =
|
3863
|
+
var camelCaseValue = depth != maxDepth
|
3862
3864
|
? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
|
3863
3865
|
: query
|
3864
3866
|
;
|
@@ -3911,7 +3913,7 @@
|
|
3911
3913
|
}
|
3912
3914
|
});
|
3913
3915
|
|
3914
|
-
return
|
3916
|
+
return returnedValue !== undefined
|
3915
3917
|
? returnedValue
|
3916
3918
|
: $allModules;
|
3917
3919
|
};
|
@@ -4039,7 +4041,7 @@
|
|
4039
4041
|
},
|
4040
4042
|
|
4041
4043
|
regExp: {
|
4042
|
-
escape: /[
|
4044
|
+
escape: /[\s#$()*+,.:=?@[\\\]^{|}-]/g,
|
4043
4045
|
quote: /"/g,
|
4044
4046
|
},
|
4045
4047
|
|
@@ -4155,8 +4157,8 @@
|
|
4155
4157
|
return string;
|
4156
4158
|
}
|
4157
4159
|
var
|
4158
|
-
badChars = /[
|
4159
|
-
shouldEscape = /[
|
4160
|
+
badChars = /["'<>`]/g,
|
4161
|
+
shouldEscape = /["&'<>`]/,
|
4160
4162
|
escape = {
|
4161
4163
|
'<': '<',
|
4162
4164
|
'>': '>',
|
@@ -4169,7 +4171,7 @@
|
|
4169
4171
|
}
|
4170
4172
|
;
|
4171
4173
|
if (shouldEscape.test(string)) {
|
4172
|
-
string = string.replace(/&(?![a-
|
4174
|
+
string = string.replace(/&(?![\d#a-z]{1,12};)/gi, '&');
|
4173
4175
|
|
4174
4176
|
return string.replace(badChars, escapedChar);
|
4175
4177
|
}
|
@@ -4185,11 +4187,9 @@
|
|
4185
4187
|
deQuote = $.fn.dropdown.settings.templates.deQuote
|
4186
4188
|
;
|
4187
4189
|
html += '<i class="dropdown icon"></i>';
|
4188
|
-
|
4189
|
-
|
4190
|
-
|
4191
|
-
html += '<div class="text"></div>';
|
4192
|
-
}
|
4190
|
+
html += placeholder
|
4191
|
+
? '<div class="default text">' + escape(placeholder, preserveHTML) + '</div>'
|
4192
|
+
: '<div class="text"></div>';
|
4193
4193
|
html += '<div class="' + deQuote(className.menu) + '">';
|
4194
4194
|
html += $.fn.dropdown.settings.templates.menu(select, fields, preserveHTML, className);
|
4195
4195
|
html += '</div>';
|
@@ -4207,41 +4207,39 @@
|
|
4207
4207
|
;
|
4208
4208
|
$.each(values, function (index, option) {
|
4209
4209
|
var
|
4210
|
-
itemType =
|
4211
|
-
? option[fields.type]
|
4212
|
-
: 'item',
|
4210
|
+
itemType = option[fields.type] || 'item',
|
4213
4211
|
isMenu = itemType.indexOf('menu') !== -1
|
4214
4212
|
;
|
4215
4213
|
|
4216
4214
|
if (itemType === 'item' || isMenu) {
|
4217
4215
|
var
|
4218
|
-
maybeText =
|
4216
|
+
maybeText = option[fields.text]
|
4219
4217
|
? ' data-text="' + deQuote(option[fields.text], true) + '"'
|
4220
4218
|
: '',
|
4221
|
-
maybeActionable =
|
4219
|
+
maybeActionable = option[fields.actionable]
|
4222
4220
|
? className.actionable + ' '
|
4223
4221
|
: '',
|
4224
|
-
maybeDisabled =
|
4222
|
+
maybeDisabled = option[fields.disabled]
|
4225
4223
|
? className.disabled + ' '
|
4226
4224
|
: '',
|
4227
|
-
maybeDescriptionVertical =
|
4225
|
+
maybeDescriptionVertical = option[fields.descriptionVertical]
|
4228
4226
|
? className.descriptionVertical + ' '
|
4229
4227
|
: '',
|
4230
|
-
hasDescription =
|
4228
|
+
hasDescription = escape(option[fields.description] || '', preserveHTML) != ''
|
4231
4229
|
;
|
4232
|
-
html += '<div class="' + deQuote(maybeActionable + maybeDisabled + maybeDescriptionVertical + (option[fields.class]
|
4230
|
+
html += '<div class="' + deQuote(maybeActionable + maybeDisabled + maybeDescriptionVertical + (option[fields.class] || className.item)) + '" data-value="' + deQuote(option[fields.value], true) + '"' + maybeText + '>';
|
4233
4231
|
if (isMenu) {
|
4234
4232
|
html += '<i class="' + (itemType.indexOf('left') !== -1 ? 'left' : '') + ' dropdown icon"></i>';
|
4235
4233
|
}
|
4236
4234
|
if (option[fields.image]) {
|
4237
|
-
html += '<img class="' + deQuote(option[fields.imageClass]
|
4235
|
+
html += '<img class="' + deQuote(option[fields.imageClass] || className.image) + '" src="' + deQuote(option[fields.image]) + '">';
|
4238
4236
|
}
|
4239
4237
|
if (option[fields.icon]) {
|
4240
|
-
html += '<i class="' + deQuote(option[fields.icon] + ' ' + (option[fields.iconClass]
|
4238
|
+
html += '<i class="' + deQuote(option[fields.icon] + ' ' + (option[fields.iconClass] || className.icon)) + '"></i>';
|
4241
4239
|
}
|
4242
4240
|
if (hasDescription) {
|
4243
4241
|
html += '<span class="' + deQuote(className.description) + '">' + escape(option[fields.description] || '', preserveHTML) + '</span>';
|
4244
|
-
html +=
|
4242
|
+
html += !isMenu ? '<span class="' + deQuote(className.text) + '">' : '';
|
4245
4243
|
}
|
4246
4244
|
if (isMenu) {
|
4247
4245
|
html += '<span class="' + deQuote(className.text) + '">';
|
@@ -4259,12 +4257,12 @@
|
|
4259
4257
|
} else if (itemType === 'header') {
|
4260
4258
|
var
|
4261
4259
|
groupName = escape(option[fields.name] || '', preserveHTML),
|
4262
|
-
groupIcon = deQuote(option[fields.icon]
|
4260
|
+
groupIcon = deQuote(option[fields.icon] || className.groupIcon)
|
4263
4261
|
;
|
4264
4262
|
if (groupName !== '' || groupIcon !== '') {
|
4265
|
-
html += '<div class="' + deQuote(option[fields.class]
|
4263
|
+
html += '<div class="' + deQuote(option[fields.class] || className.header) + '">';
|
4266
4264
|
if (groupIcon !== '') {
|
4267
|
-
html += '<i class="' + deQuote(groupIcon + ' ' + (option[fields.iconClass]
|
4265
|
+
html += '<i class="' + deQuote(groupIcon + ' ' + (option[fields.iconClass] || className.icon)) + '"></i>';
|
4268
4266
|
}
|
4269
4267
|
html += groupName;
|
4270
4268
|
html += '</div>';
|