fomantic-ui 2.9.0-beta.28 → 2.9.0-beta.282
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/.all-contributorsrc +224 -3
- package/.github/workflows/ci.yml +7 -6
- package/.github/workflows/nightly.yml +13 -8
- package/.github/workflows/release.yml +31 -0
- package/CONTRIBUTORS.md +77 -37
- package/README.md +8 -8
- package/dist/components/accordion.css +175 -35
- package/dist/components/accordion.js +6 -3
- package/dist/components/accordion.min.css +2 -2
- package/dist/components/accordion.min.js +3 -3
- package/dist/components/ad.css +4 -4
- package/dist/components/ad.min.css +2 -2
- package/dist/components/api.js +88 -29
- package/dist/components/api.min.js +3 -3
- package/dist/components/breadcrumb.css +1 -1
- package/dist/components/breadcrumb.min.css +1 -1
- package/dist/components/button.css +195 -148
- package/dist/components/button.min.css +2 -2
- package/dist/components/calendar.css +18 -1
- package/dist/components/calendar.js +84 -67
- package/dist/components/calendar.min.css +2 -2
- package/dist/components/calendar.min.js +3 -3
- package/dist/components/card.css +753 -116
- package/dist/components/card.min.css +2 -2
- package/dist/components/checkbox.css +92 -91
- package/dist/components/checkbox.js +17 -11
- package/dist/components/checkbox.min.css +2 -2
- package/dist/components/checkbox.min.js +3 -3
- package/dist/components/comment.css +12 -12
- package/dist/components/comment.min.css +2 -2
- package/dist/components/container.css +97 -3
- package/dist/components/container.min.css +2 -2
- package/dist/components/dimmer.css +29 -14
- package/dist/components/dimmer.js +11 -5
- package/dist/components/dimmer.min.css +2 -2
- package/dist/components/dimmer.min.js +3 -3
- package/dist/components/divider.css +31 -31
- package/dist/components/divider.min.css +2 -2
- package/dist/components/dropdown.css +89 -49
- package/dist/components/dropdown.js +95 -49
- package/dist/components/dropdown.min.css +2 -2
- package/dist/components/dropdown.min.js +3 -3
- package/dist/components/embed.css +5 -5
- package/dist/components/embed.js +1 -1
- package/dist/components/embed.min.css +2 -2
- package/dist/components/embed.min.js +3 -3
- package/dist/components/emoji.css +10840 -8832
- package/dist/components/emoji.min.css +1 -1
- package/dist/components/feed.css +29 -29
- package/dist/components/feed.min.css +2 -2
- package/dist/components/flag.css +1001 -892
- package/dist/components/flag.min.css +2 -2
- package/dist/components/form.css +158 -81
- package/dist/components/form.js +38 -29
- package/dist/components/form.min.css +2 -2
- package/dist/components/form.min.js +3 -3
- package/dist/components/grid.css +25 -21
- package/dist/components/grid.min.css +2 -2
- package/dist/components/header.css +5 -3
- package/dist/components/header.min.css +2 -2
- package/dist/components/icon.css +2063 -1984
- package/dist/components/icon.min.css +2 -2
- package/dist/components/image.css +1 -1
- package/dist/components/image.min.css +1 -1
- package/dist/components/input.css +758 -21
- package/dist/components/input.min.css +2 -2
- package/dist/components/item.css +16 -16
- package/dist/components/item.min.css +2 -2
- package/dist/components/label.css +64 -64
- package/dist/components/label.min.css +2 -2
- package/dist/components/list.css +30 -30
- package/dist/components/list.min.css +2 -2
- package/dist/components/loader.css +352 -352
- package/dist/components/loader.min.css +2 -2
- package/dist/components/menu.css +107 -75
- package/dist/components/menu.min.css +1 -1
- package/dist/components/message.css +42 -42
- package/dist/components/message.min.css +2 -2
- package/dist/components/modal.css +13 -1
- package/dist/components/modal.js +127 -49
- package/dist/components/modal.min.css +2 -2
- package/dist/components/modal.min.js +3 -3
- package/dist/components/nag.css +1 -1
- package/dist/components/nag.js +1 -1
- package/dist/components/nag.min.css +1 -1
- package/dist/components/nag.min.js +3 -3
- package/dist/components/placeholder.css +33 -33
- package/dist/components/placeholder.min.css +2 -2
- package/dist/components/popup.css +99 -103
- package/dist/components/popup.js +2 -2
- package/dist/components/popup.min.css +2 -2
- package/dist/components/popup.min.js +3 -3
- package/dist/components/progress.css +1 -1
- package/dist/components/progress.js +4 -1
- package/dist/components/progress.min.css +1 -1
- package/dist/components/progress.min.js +3 -3
- 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 +1 -1
- package/dist/components/rating.min.css +1 -1
- package/dist/components/rating.min.js +3 -3
- package/dist/components/reset.css +5 -4
- package/dist/components/reset.min.css +2 -2
- package/dist/components/reveal.css +1 -1
- package/dist/components/reveal.min.css +1 -1
- package/dist/components/search.css +3 -3
- package/dist/components/search.js +2 -2
- package/dist/components/search.min.css +2 -2
- package/dist/components/search.min.js +3 -3
- package/dist/components/segment.css +118 -34
- package/dist/components/segment.min.css +2 -2
- package/dist/components/shape.css +1 -1
- package/dist/components/shape.js +3 -3
- package/dist/components/shape.min.css +1 -1
- package/dist/components/shape.min.js +3 -3
- package/dist/components/sidebar.css +7 -5
- package/dist/components/sidebar.js +12 -10
- package/dist/components/sidebar.min.css +2 -2
- package/dist/components/sidebar.min.js +3 -3
- package/dist/components/site.css +65 -39
- package/dist/components/site.js +1 -1
- package/dist/components/site.min.css +2 -2
- package/dist/components/site.min.js +3 -3
- package/dist/components/slider.css +17 -17
- package/dist/components/slider.js +68 -51
- package/dist/components/slider.min.css +1 -1
- package/dist/components/slider.min.js +3 -3
- package/dist/components/state.js +1 -1
- package/dist/components/state.min.js +3 -3
- package/dist/components/statistic.css +2 -2
- package/dist/components/statistic.min.css +2 -2
- package/dist/components/step.css +30 -30
- package/dist/components/step.min.css +2 -2
- package/dist/components/sticky.css +1 -1
- package/dist/components/sticky.js +1 -1
- package/dist/components/sticky.min.css +1 -1
- package/dist/components/sticky.min.js +3 -3
- package/dist/components/tab.css +5 -5
- package/dist/components/tab.js +23 -5
- package/dist/components/tab.min.css +2 -2
- package/dist/components/tab.min.js +3 -3
- package/dist/components/table.css +1174 -32
- package/dist/components/table.min.css +2 -2
- package/dist/components/text.css +1 -1
- package/dist/components/text.min.css +1 -1
- package/dist/components/toast.css +39 -1
- package/dist/components/toast.js +56 -28
- package/dist/components/toast.min.css +2 -2
- package/dist/components/toast.min.js +3 -3
- package/dist/components/transition.css +1 -1
- package/dist/components/transition.js +21 -16
- package/dist/components/transition.min.css +1 -1
- package/dist/components/transition.min.js +3 -3
- package/dist/components/visibility.js +1 -1
- package/dist/components/visibility.min.js +3 -3
- package/dist/semantic.css +19523 -13089
- package/dist/semantic.js +666 -369
- package/dist/semantic.min.css +3 -3
- package/dist/semantic.min.js +3 -3
- package/dist/themes/default/assets/fonts/brand-icons.eot +0 -0
- package/dist/themes/default/assets/fonts/brand-icons.svg +801 -654
- package/dist/themes/default/assets/fonts/brand-icons.ttf +0 -0
- package/dist/themes/default/assets/fonts/brand-icons.woff +0 -0
- package/dist/themes/default/assets/fonts/brand-icons.woff2 +0 -0
- package/dist/themes/default/assets/fonts/icons.eot +0 -0
- package/dist/themes/default/assets/fonts/icons.svg +1175 -1079
- package/dist/themes/default/assets/fonts/icons.ttf +0 -0
- package/dist/themes/default/assets/fonts/icons.woff +0 -0
- package/dist/themes/default/assets/fonts/icons.woff2 +0 -0
- package/dist/themes/default/assets/fonts/outline-icons.eot +0 -0
- package/dist/themes/default/assets/fonts/outline-icons.svg +93 -95
- package/dist/themes/default/assets/fonts/outline-icons.ttf +0 -0
- package/dist/themes/default/assets/fonts/outline-icons.woff +0 -0
- package/dist/themes/default/assets/fonts/outline-icons.woff2 +0 -0
- package/examples/assets/library/iframe-content.js +8 -8
- package/examples/assets/library/iframe.js +3 -3
- package/package.json +18 -16
- package/scripts/nightly-version.js +47 -38
- package/src/definitions/behaviors/api.js +87 -28
- package/src/definitions/behaviors/form.js +37 -28
- package/src/definitions/collections/form.less +225 -161
- package/src/definitions/collections/grid.less +723 -687
- package/src/definitions/collections/menu.less +224 -166
- package/src/definitions/collections/message.less +49 -47
- package/src/definitions/collections/table.less +855 -268
- package/src/definitions/elements/button.less +611 -469
- package/src/definitions/elements/container.less +145 -8
- package/src/definitions/elements/divider.less +24 -24
- package/src/definitions/elements/emoji.less +16 -10
- package/src/definitions/elements/flag.less +8 -18
- package/src/definitions/elements/header.less +46 -37
- package/src/definitions/elements/icon.less +39 -32
- package/src/definitions/elements/input.less +268 -26
- package/src/definitions/elements/label.less +125 -124
- package/src/definitions/elements/list.less +84 -75
- package/src/definitions/elements/loader.less +99 -98
- package/src/definitions/elements/placeholder.less +32 -32
- package/src/definitions/elements/segment.less +174 -55
- package/src/definitions/elements/step.less +76 -72
- package/src/definitions/elements/text.less +17 -15
- package/src/definitions/globals/reset.less +2 -2
- package/src/definitions/globals/site.less +23 -2
- package/src/definitions/modules/accordion.js +5 -2
- package/src/definitions/modules/accordion.less +181 -29
- package/src/definitions/modules/calendar.js +83 -66
- package/src/definitions/modules/calendar.less +20 -0
- package/src/definitions/modules/checkbox.js +16 -10
- package/src/definitions/modules/checkbox.less +83 -227
- package/src/definitions/modules/dimmer.js +10 -4
- package/src/definitions/modules/dimmer.less +21 -8
- package/src/definitions/modules/dropdown.js +94 -48
- package/src/definitions/modules/dropdown.less +178 -127
- package/src/definitions/modules/embed.less +4 -4
- package/src/definitions/modules/modal.js +126 -48
- package/src/definitions/modules/modal.less +12 -0
- package/src/definitions/modules/nag.less +20 -19
- package/src/definitions/modules/popup.js +1 -1
- package/src/definitions/modules/popup.less +86 -90
- package/src/definitions/modules/progress.js +3 -0
- package/src/definitions/modules/progress.less +19 -18
- package/src/definitions/modules/rating.less +35 -34
- package/src/definitions/modules/search.js +1 -1
- package/src/definitions/modules/search.less +35 -19
- package/src/definitions/modules/shape.js +2 -2
- package/src/definitions/modules/sidebar.js +11 -9
- package/src/definitions/modules/sidebar.less +36 -22
- package/src/definitions/modules/slider.js +67 -50
- package/src/definitions/modules/slider.less +48 -47
- package/src/definitions/modules/tab.js +22 -4
- package/src/definitions/modules/tab.less +4 -4
- package/src/definitions/modules/toast.js +55 -27
- package/src/definitions/modules/toast.less +48 -16
- package/src/definitions/modules/transition.js +20 -15
- package/src/definitions/views/ad.less +3 -3
- package/src/definitions/views/card.less +519 -374
- package/src/definitions/views/comment.less +93 -82
- package/src/definitions/views/feed.less +164 -144
- package/src/definitions/views/item.less +251 -198
- package/src/definitions/views/statistic.less +91 -89
- package/src/themes/basic/elements/icon.overrides +149 -149
- package/src/themes/basic/elements/step.overrides +2 -2
- package/src/themes/bookish/elements/header.overrides +1 -1
- package/src/themes/chubby/elements/button.overrides +1 -1
- package/src/themes/chubby/elements/header.overrides +1 -1
- package/src/themes/default/assets/fonts/brand-icons.eot +0 -0
- package/src/themes/default/assets/fonts/brand-icons.svg +801 -654
- package/src/themes/default/assets/fonts/brand-icons.ttf +0 -0
- package/src/themes/default/assets/fonts/brand-icons.woff +0 -0
- package/src/themes/default/assets/fonts/brand-icons.woff2 +0 -0
- package/src/themes/default/assets/fonts/icons.eot +0 -0
- package/src/themes/default/assets/fonts/icons.svg +1175 -1079
- package/src/themes/default/assets/fonts/icons.ttf +0 -0
- package/src/themes/default/assets/fonts/icons.woff +0 -0
- package/src/themes/default/assets/fonts/icons.woff2 +0 -0
- package/src/themes/default/assets/fonts/outline-icons.eot +0 -0
- package/src/themes/default/assets/fonts/outline-icons.svg +93 -95
- package/src/themes/default/assets/fonts/outline-icons.ttf +0 -0
- package/src/themes/default/assets/fonts/outline-icons.woff +0 -0
- package/src/themes/default/assets/fonts/outline-icons.woff2 +0 -0
- package/src/themes/default/collections/form.variables +4 -0
- package/src/themes/default/collections/menu.variables +6 -0
- package/src/themes/default/collections/table.variables +52 -0
- package/src/themes/default/elements/button.variables +7 -1
- package/src/themes/default/elements/container.variables +12 -0
- package/src/themes/default/elements/divider.overrides +7 -7
- package/src/themes/default/elements/emoji.overrides +1737 -1235
- package/src/themes/default/elements/emoji.variables +1 -1
- package/src/themes/default/elements/flag.overrides +1641 -986
- package/src/themes/default/elements/flag.variables +7 -5
- package/src/themes/default/elements/icon.overrides +1975 -1949
- package/src/themes/default/elements/icon.variables +1 -0
- package/src/themes/default/elements/input.variables +15 -0
- package/src/themes/default/elements/segment.variables +8 -0
- package/src/themes/default/elements/step.overrides +3 -3
- package/src/themes/default/globals/site.variables +6 -0
- package/src/themes/default/globals/variation.variables +140 -6
- package/src/themes/default/modules/accordion.overrides +6 -5
- package/src/themes/default/modules/accordion.variables +49 -2
- package/src/themes/default/modules/calendar.variables +3 -0
- package/src/themes/default/modules/checkbox.overrides +9 -9
- package/src/themes/default/modules/checkbox.variables +5 -5
- package/src/themes/default/modules/dimmer.variables +1 -1
- package/src/themes/default/modules/dropdown.overrides +5 -5
- package/src/themes/default/modules/dropdown.variables +4 -10
- package/src/themes/default/modules/modal.variables +13 -0
- package/src/themes/default/modules/popup.variables +0 -2
- package/src/themes/default/modules/toast.variables +3 -0
- package/src/themes/default/views/card.variables +8 -0
- package/src/themes/famfamfam/elements/flag.overrides +1026 -0
- package/src/themes/famfamfam/elements/flag.variables +13 -0
- package/src/themes/github/elements/icon.overrides +206 -206
- package/src/themes/github/elements/step.overrides +5 -5
- package/src/themes/github/modules/dropdown.overrides +6 -6
- package/src/themes/instagram/views/card.overrides +1 -1
- package/src/themes/joypixels/elements/emoji.overrides +1762 -1260
- package/src/themes/joypixels/elements/emoji.variables +1 -1
- package/src/themes/material/collections/menu.overrides +1 -1
- package/src/themes/material/elements/button.overrides +1 -1
- package/src/themes/material/elements/header.overrides +1 -1
- package/src/themes/material/elements/icon.overrides +932 -932
- package/src/themes/material/globals/site.variables +0 -1
- package/src/themes/material/modules/dropdown.overrides +1 -1
- package/src/themes/material/modules/modal.overrides +1 -1
- package/src/themes/pulsar/elements/loader.overrides +2 -2
- package/src/themes/resetcss/globals/reset.overrides +3 -3
- package/src/themes/rtl/globals/site.overrides +1 -1
- package/src/themes/striped/modules/progress.overrides +1 -1
- package/src/themes/twitter/elements/emoji.overrides +1737 -1235
- package/tasks/build/css.js +6 -1
- package/tasks/config/project/install.js +15 -13
- package/tasks/install.js +1 -0
- package/test/helpers/sinon.js +2 -2
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* # Fomantic-UI 2.9.0-beta.
|
2
|
+
* # Fomantic-UI 2.9.0-beta.282+54be6de - Dropdown
|
3
3
|
* http://github.com/fomantic/Fomantic-UI/
|
4
4
|
*
|
5
5
|
*
|
@@ -200,6 +200,7 @@ $.fn.dropdown = function(parameters) {
|
|
200
200
|
select: function() {
|
201
201
|
if(module.has.input() && selectObserver) {
|
202
202
|
selectObserver.observe($module[0], {
|
203
|
+
attributes: true,
|
203
204
|
childList : true,
|
204
205
|
subtree : true
|
205
206
|
});
|
@@ -224,7 +225,7 @@ $.fn.dropdown = function(parameters) {
|
|
224
225
|
|
225
226
|
create: {
|
226
227
|
id: function() {
|
227
|
-
id = (Math.random().toString(16) + '000000000').
|
228
|
+
id = (Math.random().toString(16) + '000000000').slice(2, 10);
|
228
229
|
elementNamespace = '.' + id;
|
229
230
|
module.verbose('Creating unique id for element', id);
|
230
231
|
},
|
@@ -421,6 +422,9 @@ $.fn.dropdown = function(parameters) {
|
|
421
422
|
module.debug('Disabling dropdown');
|
422
423
|
$module.addClass(className.disabled);
|
423
424
|
}
|
425
|
+
if($input.is('[required]')) {
|
426
|
+
settings.forceSelection = true;
|
427
|
+
}
|
424
428
|
$input
|
425
429
|
.removeAttr('required')
|
426
430
|
.removeAttr('class')
|
@@ -625,6 +629,11 @@ $.fn.dropdown = function(parameters) {
|
|
625
629
|
$module
|
626
630
|
.on('change' + eventNamespace, selector.input, module.event.change)
|
627
631
|
;
|
632
|
+
if(module.is.multiple() && module.is.searchSelection()) {
|
633
|
+
$module
|
634
|
+
.on('paste' + eventNamespace, selector.search, module.event.paste)
|
635
|
+
;
|
636
|
+
}
|
628
637
|
},
|
629
638
|
mouseEvents: function() {
|
630
639
|
module.verbose('Binding mouse events');
|
@@ -844,7 +853,7 @@ $.fn.dropdown = function(parameters) {
|
|
844
853
|
var value = module.is.multiple() ? module.get.values() : module.get.value();
|
845
854
|
if (value !== '') {
|
846
855
|
module.verbose('Value(s) present after click icon, select value(s) in items');
|
847
|
-
module.set.selected(value, null,
|
856
|
+
module.set.selected(value, null, true, true);
|
848
857
|
}
|
849
858
|
}
|
850
859
|
iconClicked = false;
|
@@ -1044,7 +1053,7 @@ $.fn.dropdown = function(parameters) {
|
|
1044
1053
|
menuConfig[fields.values] = values;
|
1045
1054
|
module.setup.menu(menuConfig);
|
1046
1055
|
$.each(values, function(index, item) {
|
1047
|
-
if(item.selected
|
1056
|
+
if(item.selected === true) {
|
1048
1057
|
module.debug('Setting initial selection to', item[fields.value]);
|
1049
1058
|
module.set.selected(item[fields.value]);
|
1050
1059
|
if(!module.is.multiple()) {
|
@@ -1073,6 +1082,15 @@ $.fn.dropdown = function(parameters) {
|
|
1073
1082
|
},
|
1074
1083
|
|
1075
1084
|
event: {
|
1085
|
+
paste: function(event) {
|
1086
|
+
var pasteValue = (event.originalEvent.clipboardData || window.clipboardData).getData('text'),
|
1087
|
+
tokens = pasteValue.split(settings.delimiter)
|
1088
|
+
;
|
1089
|
+
tokens.forEach(function(value){
|
1090
|
+
module.set.selected(module.escape.htmlEntities(value.trim()), null, true, true);
|
1091
|
+
});
|
1092
|
+
event.preventDefault();
|
1093
|
+
},
|
1076
1094
|
change: function() {
|
1077
1095
|
if(!internalChange) {
|
1078
1096
|
module.debug('Input changed, updating selection');
|
@@ -1285,8 +1303,8 @@ $.fn.dropdown = function(parameters) {
|
|
1285
1303
|
},
|
1286
1304
|
select: {
|
1287
1305
|
mutation: function(mutations) {
|
1288
|
-
module.debug('<select> modified, recreating menu');
|
1289
1306
|
if(module.is.selectMutation(mutations)) {
|
1307
|
+
module.debug('<select> modified, recreating menu');
|
1290
1308
|
module.disconnect.selectObserver();
|
1291
1309
|
module.refresh();
|
1292
1310
|
module.setup.select();
|
@@ -1381,7 +1399,7 @@ $.fn.dropdown = function(parameters) {
|
|
1381
1399
|
module.remove.userAddition();
|
1382
1400
|
}
|
1383
1401
|
module.remove.searchTerm();
|
1384
|
-
if(!module.is.focusedOnSearch() &&
|
1402
|
+
if(!module.is.focusedOnSearch() && skipRefocus !== true) {
|
1385
1403
|
module.focusSearch(true);
|
1386
1404
|
}
|
1387
1405
|
}
|
@@ -1513,7 +1531,7 @@ $.fn.dropdown = function(parameters) {
|
|
1513
1531
|
keydown: function(event) {
|
1514
1532
|
var
|
1515
1533
|
pressedKey = event.which,
|
1516
|
-
isShortcutKey = module.is.inObject(pressedKey, keys)
|
1534
|
+
isShortcutKey = module.is.inObject(pressedKey, keys) || event.key === settings.delimiter
|
1517
1535
|
;
|
1518
1536
|
if(isShortcutKey) {
|
1519
1537
|
var
|
@@ -1531,7 +1549,7 @@ $.fn.dropdown = function(parameters) {
|
|
1531
1549
|
hasSubMenu = ($subMenu.length> 0),
|
1532
1550
|
hasSelectedItem = ($selectedItem.length > 0),
|
1533
1551
|
selectedIsSelectable = ($selectedItem.not(selector.unselectable).length > 0),
|
1534
|
-
delimiterPressed = (
|
1552
|
+
delimiterPressed = (event.key === settings.delimiter && module.is.multiple()),
|
1535
1553
|
isAdditionWithoutMenu = (settings.allowAdditions && settings.hideAdditions && (pressedKey == keys.enter || delimiterPressed) && selectedIsSelectable),
|
1536
1554
|
$nextItem,
|
1537
1555
|
isSubMenuItem,
|
@@ -1629,7 +1647,7 @@ $.fn.dropdown = function(parameters) {
|
|
1629
1647
|
.addClass(className.selected)
|
1630
1648
|
;
|
1631
1649
|
module.set.scrollPosition($nextItem);
|
1632
|
-
if(settings.selectOnKeydown && module.is.single()) {
|
1650
|
+
if(settings.selectOnKeydown && module.is.single() && !$nextItem.hasClass(className.actionable)) {
|
1633
1651
|
module.set.selectedItem($nextItem);
|
1634
1652
|
}
|
1635
1653
|
}
|
@@ -1656,7 +1674,7 @@ $.fn.dropdown = function(parameters) {
|
|
1656
1674
|
.addClass(className.selected)
|
1657
1675
|
;
|
1658
1676
|
module.set.scrollPosition($nextItem);
|
1659
|
-
if(settings.selectOnKeydown && module.is.single()) {
|
1677
|
+
if(settings.selectOnKeydown && module.is.single() && !$nextItem.hasClass(className.actionable)) {
|
1660
1678
|
module.set.selectedItem($nextItem);
|
1661
1679
|
}
|
1662
1680
|
}
|
@@ -1787,7 +1805,7 @@ $.fn.dropdown = function(parameters) {
|
|
1787
1805
|
;
|
1788
1806
|
if( module.can.activate( $(element) ) ) {
|
1789
1807
|
module.set.selected(value, $(element));
|
1790
|
-
if(!module.is.multiple()) {
|
1808
|
+
if(!module.is.multiple() && !(!settings.collapseOnActionable && $(element).hasClass(className.actionable))) {
|
1791
1809
|
module.hideAndClear();
|
1792
1810
|
}
|
1793
1811
|
}
|
@@ -1800,7 +1818,7 @@ $.fn.dropdown = function(parameters) {
|
|
1800
1818
|
;
|
1801
1819
|
if( module.can.activate( $(element) ) ) {
|
1802
1820
|
module.set.value(value, text, $(element));
|
1803
|
-
if(!module.is.multiple()) {
|
1821
|
+
if(!module.is.multiple() && !(!settings.collapseOnActionable && $(element).hasClass(className.actionable))) {
|
1804
1822
|
module.hideAndClear();
|
1805
1823
|
}
|
1806
1824
|
}
|
@@ -1851,7 +1869,7 @@ $.fn.dropdown = function(parameters) {
|
|
1851
1869
|
;
|
1852
1870
|
$sizer.text(value);
|
1853
1871
|
// prevent rounding issues
|
1854
|
-
return Math.ceil( $sizer.width() + 1);
|
1872
|
+
return Math.ceil( $sizer.width() + (module.is.edge() ? 3 : 1));
|
1855
1873
|
},
|
1856
1874
|
selectionCount: function() {
|
1857
1875
|
var
|
@@ -2320,7 +2338,7 @@ $.fn.dropdown = function(parameters) {
|
|
2320
2338
|
module.error(error.noStorage);
|
2321
2339
|
return;
|
2322
2340
|
}
|
2323
|
-
name = sessionStorage.getItem(value);
|
2341
|
+
name = sessionStorage.getItem(value + elementNamespace);
|
2324
2342
|
return (name !== undefined)
|
2325
2343
|
? name
|
2326
2344
|
: false
|
@@ -2364,7 +2382,7 @@ $.fn.dropdown = function(parameters) {
|
|
2364
2382
|
return;
|
2365
2383
|
}
|
2366
2384
|
module.verbose('Saving remote data to session storage', value, name);
|
2367
|
-
sessionStorage.setItem(value, name);
|
2385
|
+
sessionStorage.setItem(value + elementNamespace, name);
|
2368
2386
|
}
|
2369
2387
|
},
|
2370
2388
|
|
@@ -2424,7 +2442,7 @@ $.fn.dropdown = function(parameters) {
|
|
2424
2442
|
$nextSelectedItem
|
2425
2443
|
.addClass(className.selected)
|
2426
2444
|
;
|
2427
|
-
if(settings.selectOnKeydown && module.is.single()) {
|
2445
|
+
if(settings.selectOnKeydown && module.is.single() && !$nextItem.hasClass(className.actionable)) {
|
2428
2446
|
module.set.selectedItem($nextSelectedItem);
|
2429
2447
|
}
|
2430
2448
|
$menu
|
@@ -2510,7 +2528,7 @@ $.fn.dropdown = function(parameters) {
|
|
2510
2528
|
var
|
2511
2529
|
length = module.get.query().length
|
2512
2530
|
;
|
2513
|
-
$search.val( text.
|
2531
|
+
$search.val( text.slice(0, length));
|
2514
2532
|
},
|
2515
2533
|
scrollPosition: function($item, forceScroll) {
|
2516
2534
|
var
|
@@ -2627,13 +2645,13 @@ $.fn.dropdown = function(parameters) {
|
|
2627
2645
|
module.set.scrollPosition($nextValue);
|
2628
2646
|
$selectedItem.removeClass(className.selected);
|
2629
2647
|
$nextValue.addClass(className.selected);
|
2630
|
-
if(settings.selectOnKeydown && module.is.single()) {
|
2648
|
+
if(settings.selectOnKeydown && module.is.single() && !$nextItem.hasClass(className.actionable)) {
|
2631
2649
|
module.set.selectedItem($nextValue);
|
2632
2650
|
}
|
2633
2651
|
}
|
2634
2652
|
},
|
2635
2653
|
direction: function($menu) {
|
2636
|
-
if(settings.direction
|
2654
|
+
if(settings.direction === 'auto') {
|
2637
2655
|
// reset position, remove upward if it's base menu
|
2638
2656
|
if (!$menu) {
|
2639
2657
|
module.remove.upward();
|
@@ -2652,7 +2670,7 @@ $.fn.dropdown = function(parameters) {
|
|
2652
2670
|
module.set.leftward($menu);
|
2653
2671
|
}
|
2654
2672
|
}
|
2655
|
-
else if(settings.direction
|
2673
|
+
else if(settings.direction === 'upward') {
|
2656
2674
|
module.set.upward($menu);
|
2657
2675
|
}
|
2658
2676
|
},
|
@@ -2665,6 +2683,11 @@ $.fn.dropdown = function(parameters) {
|
|
2665
2683
|
$element.addClass(className.leftward);
|
2666
2684
|
},
|
2667
2685
|
value: function(value, text, $selected, preventChangeTrigger) {
|
2686
|
+
if(typeof text === 'boolean') {
|
2687
|
+
preventChangeTrigger = text;
|
2688
|
+
$selected = undefined;
|
2689
|
+
text = undefined;
|
2690
|
+
}
|
2668
2691
|
if(value !== undefined && value !== '' && !(Array.isArray(value) && value.length === 0)) {
|
2669
2692
|
$input.removeClass(className.noselection);
|
2670
2693
|
} else {
|
@@ -2728,12 +2751,21 @@ $.fn.dropdown = function(parameters) {
|
|
2728
2751
|
visible: function() {
|
2729
2752
|
$module.addClass(className.visible);
|
2730
2753
|
},
|
2731
|
-
exactly: function(value, $selectedItem) {
|
2754
|
+
exactly: function(value, $selectedItem, preventChangeTrigger) {
|
2755
|
+
if(typeof $selectedItem === 'boolean') {
|
2756
|
+
preventChangeTrigger = $selectedItem;
|
2757
|
+
$selectedItem = undefined;
|
2758
|
+
}
|
2732
2759
|
module.debug('Setting selected to exact values');
|
2733
2760
|
module.clear();
|
2734
|
-
module.set.selected(value, $selectedItem);
|
2761
|
+
module.set.selected(value, $selectedItem, preventChangeTrigger);
|
2735
2762
|
},
|
2736
2763
|
selected: function(value, $selectedItem, preventChangeTrigger, keepSearchTerm) {
|
2764
|
+
if(typeof $selectedItem === 'boolean') {
|
2765
|
+
keepSearchTerm = preventChangeTrigger;
|
2766
|
+
preventChangeTrigger = $selectedItem;
|
2767
|
+
$selectedItem = undefined;
|
2768
|
+
}
|
2737
2769
|
var
|
2738
2770
|
isMultiple = module.is.multiple()
|
2739
2771
|
;
|
@@ -2765,23 +2797,30 @@ $.fn.dropdown = function(parameters) {
|
|
2765
2797
|
|
2766
2798
|
isFiltered = $selected.hasClass(className.filtered),
|
2767
2799
|
isActive = $selected.hasClass(className.active),
|
2800
|
+
isActionable = $selected.hasClass(className.actionable),
|
2768
2801
|
isUserValue = $selected.hasClass(className.addition),
|
2769
|
-
shouldAnimate = (isMultiple && $selectedItem.length
|
2802
|
+
shouldAnimate = (isMultiple && $selectedItem && $selectedItem.length === 1)
|
2770
2803
|
;
|
2771
|
-
if(
|
2804
|
+
if(isActionable){
|
2805
|
+
if((!isMultiple || (!isActive || isUserValue)) && settings.apiSettings && settings.saveRemoteData) {
|
2806
|
+
module.save.remoteData(selectedText, selectedValue);
|
2807
|
+
}
|
2808
|
+
settings.onActionable.call(element, selectedValue, selectedText, $selected);
|
2809
|
+
}
|
2810
|
+
else if(isMultiple) {
|
2772
2811
|
if(!isActive || isUserValue) {
|
2773
2812
|
if(settings.apiSettings && settings.saveRemoteData) {
|
2774
2813
|
module.save.remoteData(selectedText, selectedValue);
|
2775
2814
|
}
|
2776
2815
|
if(settings.useLabels) {
|
2816
|
+
module.add.value(selectedValue, selectedText, $selected, preventChangeTrigger);
|
2777
2817
|
module.add.label(selectedValue, selectedText, shouldAnimate);
|
2778
|
-
module.add.value(selectedValue, selectedText, $selected);
|
2779
2818
|
module.set.activeItem($selected);
|
2780
2819
|
module.filterActive();
|
2781
2820
|
module.select.nextAvailable($selectedItem);
|
2782
2821
|
}
|
2783
2822
|
else {
|
2784
|
-
module.add.value(selectedValue, selectedText, $selected);
|
2823
|
+
module.add.value(selectedValue, selectedText, $selected, preventChangeTrigger);
|
2785
2824
|
module.set.text(module.add.variables(message.count));
|
2786
2825
|
module.set.activeItem($selected);
|
2787
2826
|
}
|
@@ -2795,7 +2834,7 @@ $.fn.dropdown = function(parameters) {
|
|
2795
2834
|
if(settings.apiSettings && settings.saveRemoteData) {
|
2796
2835
|
module.save.remoteData(selectedText, selectedValue);
|
2797
2836
|
}
|
2798
|
-
if (!keepSearchTerm) {
|
2837
|
+
if (!keepSearchTerm && !$selected.hasClass(className.actionable)) {
|
2799
2838
|
module.set.text(selectedText);
|
2800
2839
|
}
|
2801
2840
|
module.set.value(selectedValue, selectedText, $selected, preventChangeTrigger);
|
@@ -2970,7 +3009,12 @@ $.fn.dropdown = function(parameters) {
|
|
2970
3009
|
}
|
2971
3010
|
return message;
|
2972
3011
|
},
|
2973
|
-
value: function(addedValue, addedText, $selectedItem) {
|
3012
|
+
value: function(addedValue, addedText, $selectedItem, preventChangeTrigger) {
|
3013
|
+
if(typeof addedText === 'boolean') {
|
3014
|
+
preventChangeTrigger = addedText;
|
3015
|
+
$selectedItem = undefined;
|
3016
|
+
addedText = undefined;
|
3017
|
+
}
|
2974
3018
|
var
|
2975
3019
|
currentValue = module.get.values(true),
|
2976
3020
|
newValue
|
@@ -2985,7 +3029,7 @@ $.fn.dropdown = function(parameters) {
|
|
2985
3029
|
}
|
2986
3030
|
// extend current array
|
2987
3031
|
if(Array.isArray(currentValue)) {
|
2988
|
-
newValue = currentValue.concat([addedValue]);
|
3032
|
+
newValue = $selectedItem && $selectedItem.hasClass(className.actionable) ? currentValue : currentValue.concat([addedValue]);
|
2989
3033
|
newValue = module.get.uniqueArray(newValue);
|
2990
3034
|
}
|
2991
3035
|
else {
|
@@ -3009,7 +3053,7 @@ $.fn.dropdown = function(parameters) {
|
|
3009
3053
|
else {
|
3010
3054
|
settings.onAdd.call(element, addedValue, addedText, $selectedItem);
|
3011
3055
|
}
|
3012
|
-
module.set.value(newValue, addedText, $selectedItem);
|
3056
|
+
module.set.value(newValue, addedText, $selectedItem, preventChangeTrigger);
|
3013
3057
|
module.check.maxSelections();
|
3014
3058
|
},
|
3015
3059
|
},
|
@@ -3069,18 +3113,10 @@ $.fn.dropdown = function(parameters) {
|
|
3069
3113
|
return;
|
3070
3114
|
}
|
3071
3115
|
// temporarily disconnect observer
|
3072
|
-
|
3073
|
-
selectObserver.disconnect();
|
3074
|
-
module.verbose('Temporarily disconnecting mutation observer');
|
3075
|
-
}
|
3116
|
+
module.disconnect.selectObserver();
|
3076
3117
|
$option.remove();
|
3077
3118
|
module.verbose('Removing user addition as an <option>', escapedValue);
|
3078
|
-
|
3079
|
-
selectObserver.observe($input[0], {
|
3080
|
-
childList : true,
|
3081
|
-
subtree : true
|
3082
|
-
});
|
3083
|
-
}
|
3119
|
+
module.observe.select();
|
3084
3120
|
},
|
3085
3121
|
message: function() {
|
3086
3122
|
$menu.children(selector.message).remove();
|
@@ -3379,8 +3415,11 @@ $.fn.dropdown = function(parameters) {
|
|
3379
3415
|
bubbledIconClick: function(event) {
|
3380
3416
|
return $(event.target).closest($icon).length > 0;
|
3381
3417
|
},
|
3418
|
+
edge: function() {
|
3419
|
+
return !!window.chrome && !!window.StyleMedia;
|
3420
|
+
},
|
3382
3421
|
chrome: function() {
|
3383
|
-
return !!window.chrome &&
|
3422
|
+
return !!window.chrome && !window.StyleMedia;
|
3384
3423
|
},
|
3385
3424
|
alreadySetup: function() {
|
3386
3425
|
return ($module.is('select') && $module.parent(selector.dropdown).data(moduleNamespace) !== undefined && $module.prev().length === 0);
|
@@ -3445,7 +3484,7 @@ $.fn.dropdown = function(parameters) {
|
|
3445
3484
|
selectChanged = false
|
3446
3485
|
;
|
3447
3486
|
$.each(mutations, function(index, mutation) {
|
3448
|
-
if($(mutation.target).is('select') || $(mutation.addedNodes).is('select')) {
|
3487
|
+
if($(mutation.target).is('select, option, optgroup') || $(mutation.addedNodes).is('select')) {
|
3449
3488
|
selectChanged = true;
|
3450
3489
|
return false;
|
3451
3490
|
}
|
@@ -3990,7 +4029,7 @@ $.fn.dropdown.settings = {
|
|
3990
4029
|
keepOnScreen : true, // Whether dropdown should check whether it is on screen before showing
|
3991
4030
|
|
3992
4031
|
match : 'both', // what to match against with search selection (both, text, or label)
|
3993
|
-
fullTextSearch :
|
4032
|
+
fullTextSearch : 'exact', // search anywhere in value (set to 'exact' to require exact matches)
|
3994
4033
|
ignoreDiacritics : false, // match results also if they contain diacritics of the same base character (for example searching for "a" will also match "á" or "â" or "à", etc...)
|
3995
4034
|
hideDividers : false, // Whether to hide any divider elements (specified in selector.divider) that are sibling to any items when searched (set to true will hide all dividers, set to 'empty' will hide them when they are not followed by a visible item)
|
3996
4035
|
|
@@ -3998,7 +4037,7 @@ $.fn.dropdown.settings = {
|
|
3998
4037
|
preserveHTML : true, // preserve html when selecting value
|
3999
4038
|
sortSelect : false, // sort selection on init
|
4000
4039
|
|
4001
|
-
forceSelection :
|
4040
|
+
forceSelection : false, // force a choice on blur with search selection
|
4002
4041
|
|
4003
4042
|
allowAdditions : false, // whether multiple select should allow user added values
|
4004
4043
|
ignoreCase : false, // whether to consider case sensitivity when creating labels
|
@@ -4009,7 +4048,7 @@ $.fn.dropdown.settings = {
|
|
4009
4048
|
useLabels : true, // whether multiple select should filter currently active selections from choices
|
4010
4049
|
delimiter : ',', // when multiselect uses normal <input> the values will be delimited with this character
|
4011
4050
|
|
4012
|
-
showOnFocus :
|
4051
|
+
showOnFocus : false, // show menu on focus
|
4013
4052
|
allowReselection : false, // whether current value should trigger callbacks when reselected
|
4014
4053
|
allowTab : true, // add tabindex to element
|
4015
4054
|
allowCategorySelection : false, // allow elements with sub-menus to be selected
|
@@ -4024,6 +4063,8 @@ $.fn.dropdown.settings = {
|
|
4024
4063
|
|
4025
4064
|
headerDivider : true, // whether option headers should have an additional divider line underneath when converted from <select> <optgroup>
|
4026
4065
|
|
4066
|
+
collapseOnActionable : true, // whether the dropdown should collapse upon selection of an actionable item
|
4067
|
+
|
4027
4068
|
// label settings on multi-select
|
4028
4069
|
label: {
|
4029
4070
|
transition : 'scale',
|
@@ -4043,6 +4084,7 @@ $.fn.dropdown.settings = {
|
|
4043
4084
|
onChange : function(value, text, $selected){},
|
4044
4085
|
onAdd : function(value, text, $selected){},
|
4045
4086
|
onRemove : function(value, text, $selected){},
|
4087
|
+
onActionable : function(value, text, $selected){},
|
4046
4088
|
onSearch : function(searchTerm){},
|
4047
4089
|
|
4048
4090
|
onLabelSelect : function($selectedLabels){},
|
@@ -4105,12 +4147,12 @@ $.fn.dropdown.settings = {
|
|
4105
4147
|
icon : 'icon', // optional icon name
|
4106
4148
|
iconClass : 'iconClass', // optional individual class for icon (for example to use flag instead)
|
4107
4149
|
class : 'class', // optional individual class for item/header
|
4108
|
-
divider : 'divider' // optional divider append for group headers
|
4150
|
+
divider : 'divider', // optional divider append for group headers
|
4151
|
+
actionable : 'actionable' // optional actionable item
|
4109
4152
|
},
|
4110
4153
|
|
4111
4154
|
keys : {
|
4112
4155
|
backspace : 8,
|
4113
|
-
delimiter : 188, // comma
|
4114
4156
|
deleteKey : 46,
|
4115
4157
|
enter : 13,
|
4116
4158
|
escape : 27,
|
@@ -4177,7 +4219,8 @@ $.fn.dropdown.settings = {
|
|
4177
4219
|
header : 'header',
|
4178
4220
|
divider : 'divider',
|
4179
4221
|
groupIcon : '',
|
4180
|
-
unfilterable : 'unfilterable'
|
4222
|
+
unfilterable : 'unfilterable',
|
4223
|
+
actionable : 'actionable'
|
4181
4224
|
}
|
4182
4225
|
|
4183
4226
|
};
|
@@ -4252,6 +4295,9 @@ $.fn.dropdown.settings.templates = {
|
|
4252
4295
|
maybeText = (option[fields.text])
|
4253
4296
|
? ' data-text="' + deQuote(option[fields.text],true) + '"'
|
4254
4297
|
: '',
|
4298
|
+
maybeActionable = (option[fields.actionable])
|
4299
|
+
? className.actionable+' '
|
4300
|
+
: '',
|
4255
4301
|
maybeDisabled = (option[fields.disabled])
|
4256
4302
|
? className.disabled+' '
|
4257
4303
|
: '',
|
@@ -4260,7 +4306,7 @@ $.fn.dropdown.settings.templates = {
|
|
4260
4306
|
: '',
|
4261
4307
|
hasDescription = (escape(option[fields.description] || '', preserveHTML) != '')
|
4262
4308
|
;
|
4263
|
-
html += '<div class="'+ maybeDisabled + maybeDescriptionVertical + (option[fields.class] ? deQuote(option[fields.class]) : className.item)+'" data-value="' + deQuote(option[fields.value],true) + '"' + maybeText + '>';
|
4309
|
+
html += '<div class="'+ maybeActionable + maybeDisabled + maybeDescriptionVertical + (option[fields.class] ? deQuote(option[fields.class]) : className.item)+'" data-value="' + deQuote(option[fields.value],true) + '"' + maybeText + '>';
|
4264
4310
|
if (isMenu) {
|
4265
4311
|
html += '<i class="'+ (itemType.indexOf('left') !== -1 ? 'left' : '') + ' dropdown icon"></i>';
|
4266
4312
|
}
|