fomantic-ui 2.9.0-beta.29 → 2.9.0-beta.292
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 +242 -3
- package/.github/codeql/codeql-config.yml +4 -0
- package/.github/dependabot.yml +10 -0
- package/.github/workflows/ci.yml +10 -6
- package/.github/workflows/codeql.yml +68 -0
- package/.github/workflows/nightly.yml +16 -8
- package/.github/workflows/release.yml +34 -0
- package/CONTRIBUTORS.md +81 -37
- package/FAQ.md +38 -38
- package/README.md +8 -8
- package/dist/components/accordion.css +176 -36
- 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 +89 -30
- 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 +204 -157
- package/dist/components/button.min.css +2 -2
- package/dist/components/calendar.css +18 -1
- package/dist/components/calendar.js +85 -68
- package/dist/components/calendar.min.css +2 -2
- package/dist/components/calendar.min.js +3 -3
- package/dist/components/card.css +754 -117
- 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 +98 -4
- 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 +90 -50
- package/dist/components/dropdown.js +134 -110
- 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 +10847 -8841
- 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 +1011 -902
- package/dist/components/flag.min.css +2 -2
- package/dist/components/form.css +160 -83
- package/dist/components/form.js +39 -30
- 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 +6 -4
- 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 +759 -22
- package/dist/components/input.min.css +2 -2
- package/dist/components/item.css +17 -17
- package/dist/components/item.min.css +2 -2
- package/dist/components/label.css +72 -68
- package/dist/components/label.min.css +2 -2
- package/dist/components/list.css +31 -31
- 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 +108 -76
- package/dist/components/menu.min.css +1 -1
- package/dist/components/message.css +43 -43
- package/dist/components/message.min.css +2 -2
- package/dist/components/modal.css +14 -2
- package/dist/components/modal.js +128 -50
- 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 +2 -2
- 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 +100 -104
- package/dist/components/popup.js +11 -11
- 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 +6 -6
- 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 +14 -12
- package/dist/components/sidebar.min.css +2 -2
- package/dist/components/sidebar.min.js +3 -3
- package/dist/components/site.css +139 -42
- 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 +2 -2
- package/dist/components/state.min.js +3 -3
- package/dist/components/statistic.css +4 -4
- package/dist/components/statistic.min.css +2 -2
- package/dist/components/step.css +31 -31
- package/dist/components/step.min.css +2 -2
- package/dist/components/sticky.css +1 -1
- package/dist/components/sticky.js +4 -4
- 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 +24 -6
- package/dist/components/tab.min.css +2 -2
- package/dist/components/tab.min.js +3 -3
- package/dist/components/table.css +1684 -272
- 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 +42 -1
- package/dist/components/toast.js +63 -31
- 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 +2 -2
- package/dist/components/visibility.min.js +3 -3
- package/dist/semantic.css +20165 -13374
- package/dist/semantic.js +734 -455
- package/dist/semantic.min.css +3 -3
- package/dist/semantic.min.js +3 -3
- package/dist/themes/default/assets/fonts/Lato-Bold.woff +0 -0
- package/dist/themes/default/assets/fonts/Lato-Bold.woff2 +0 -0
- package/dist/themes/default/assets/fonts/Lato-BoldItalic.woff +0 -0
- package/dist/themes/default/assets/fonts/Lato-BoldItalic.woff2 +0 -0
- package/dist/themes/default/assets/fonts/Lato-Italic.woff +0 -0
- package/dist/themes/default/assets/fonts/Lato-Italic.woff2 +0 -0
- package/dist/themes/default/assets/fonts/Lato-Regular.woff +0 -0
- package/dist/themes/default/assets/fonts/Lato-Regular.woff2 +0 -0
- package/dist/themes/default/assets/fonts/LatoLatin-Bold.woff +0 -0
- package/dist/themes/default/assets/fonts/LatoLatin-Bold.woff2 +0 -0
- package/dist/themes/default/assets/fonts/LatoLatin-BoldItalic.woff +0 -0
- package/dist/themes/default/assets/fonts/LatoLatin-BoldItalic.woff2 +0 -0
- package/dist/themes/default/assets/fonts/LatoLatin-Italic.woff +0 -0
- package/dist/themes/default/assets/fonts/LatoLatin-Italic.woff2 +0 -0
- package/dist/themes/default/assets/fonts/LatoLatin-Regular.woff +0 -0
- package/dist/themes/default/assets/fonts/LatoLatin-Regular.woff2 +0 -0
- 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/dist/themes/{default → famfamfam}/assets/images/flags.png +0 -0
- package/examples/assets/library/iframe-content.js +8 -8
- package/examples/assets/library/iframe.js +3 -3
- package/examples/components/button.html +1 -1
- package/examples/components/card.html +1 -1
- package/examples/components/input.html +1 -1
- package/examples/components/menu.html +1 -1
- package/examples/components/site.html +1 -1
- package/examples/components/table.html +1 -1
- package/package.json +18 -16
- package/scripts/nightly-version.js +47 -38
- package/src/definitions/behaviors/api.js +88 -29
- package/src/definitions/behaviors/form.js +38 -29
- package/src/definitions/behaviors/state.js +1 -1
- package/src/definitions/behaviors/visibility.js +1 -1
- package/src/definitions/collections/form.less +229 -165
- package/src/definitions/collections/grid.less +723 -687
- package/src/definitions/collections/menu.less +232 -170
- package/src/definitions/collections/message.less +49 -47
- package/src/definitions/collections/table.less +882 -272
- 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 +39 -10
- package/src/definitions/elements/flag.less +53 -18
- package/src/definitions/elements/header.less +46 -37
- package/src/definitions/elements/icon.less +39 -32
- package/src/definitions/elements/input.less +281 -33
- package/src/definitions/elements/label.less +132 -128
- 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 +177 -56
- 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 +25 -2
- package/src/definitions/modules/accordion.js +5 -2
- package/src/definitions/modules/accordion.less +371 -219
- package/src/definitions/modules/calendar.js +84 -67
- 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 +22 -8
- package/src/definitions/modules/dropdown.js +133 -109
- package/src/definitions/modules/dropdown.less +191 -136
- package/src/definitions/modules/embed.less +4 -4
- package/src/definitions/modules/modal.js +127 -49
- package/src/definitions/modules/modal.less +12 -0
- package/src/definitions/modules/nag.js +1 -1
- package/src/definitions/modules/nag.less +20 -19
- package/src/definitions/modules/popup.js +10 -10
- 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 +13 -11
- 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/sticky.js +3 -3
- package/src/definitions/modules/sticky.less +3 -1
- package/src/definitions/modules/tab.js +23 -5
- package/src/definitions/modules/tab.less +4 -4
- package/src/definitions/modules/toast.js +62 -30
- package/src/definitions/modules/toast.less +51 -16
- package/src/definitions/modules/transition.js +20 -15
- package/src/definitions/views/ad.less +3 -3
- package/src/definitions/views/card.less +522 -375
- 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/theme.less +13 -2
- package/src/themes/amazon/globals/site.variables +1 -0
- 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/Lato-Bold.woff +0 -0
- package/src/themes/default/assets/fonts/Lato-Bold.woff2 +0 -0
- package/src/themes/default/assets/fonts/Lato-BoldItalic.woff +0 -0
- package/src/themes/default/assets/fonts/Lato-BoldItalic.woff2 +0 -0
- package/src/themes/default/assets/fonts/Lato-Italic.woff +0 -0
- package/src/themes/default/assets/fonts/Lato-Italic.woff2 +0 -0
- package/src/themes/default/assets/fonts/Lato-Regular.woff +0 -0
- package/src/themes/default/assets/fonts/Lato-Regular.woff2 +0 -0
- package/src/themes/default/assets/fonts/LatoLatin-Bold.woff +0 -0
- package/src/themes/default/assets/fonts/LatoLatin-Bold.woff2 +0 -0
- package/src/themes/default/assets/fonts/LatoLatin-BoldItalic.woff +0 -0
- package/src/themes/default/assets/fonts/LatoLatin-BoldItalic.woff2 +0 -0
- package/src/themes/default/assets/fonts/LatoLatin-Italic.woff +0 -0
- package/src/themes/default/assets/fonts/LatoLatin-Italic.woff2 +0 -0
- package/src/themes/default/assets/fonts/LatoLatin-Regular.woff +0 -0
- package/src/themes/default/assets/fonts/LatoLatin-Regular.woff2 +0 -0
- 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 +0 -3090
- package/src/themes/default/elements/emoji.variables +3575 -1
- package/src/themes/default/elements/flag.overrides +0 -991
- package/src/themes/default/elements/flag.variables +1609 -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 +109 -8
- 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/{default → famfamfam}/assets/images/flags.png +0 -0
- package/src/themes/famfamfam/elements/flag.overrides +1026 -0
- package/src/themes/famfamfam/elements/flag.variables +20 -0
- package/src/themes/github/elements/icon.overrides +206 -206
- package/src/themes/github/elements/step.overrides +5 -5
- package/src/themes/github/globals/site.variables +1 -0
- 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 +0 -3089
- package/src/themes/joypixels/elements/emoji.variables +3574 -5
- 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/systemfont/globals/reset.overrides +8 -0
- package/src/themes/systemfont/globals/site.variables +10 -0
- package/src/themes/twitter/elements/emoji.overrides +0 -3091
- package/src/themes/twitter/elements/emoji.variables +3570 -6
- package/tasks/admin/distributions/create.js +1 -1
- package/tasks/admin/publish.js +1 -1
- package/tasks/admin/release.js +1 -1
- package/tasks/build/assets.js +1 -1
- package/tasks/build/css.js +9 -4
- package/tasks/build/javascript.js +3 -3
- package/tasks/check-install.js +1 -1
- package/tasks/clean.js +1 -1
- package/tasks/collections/README.md +1 -1
- package/tasks/collections/admin.js +1 -1
- package/tasks/config/admin/oauth.example.js +1 -1
- package/tasks/config/admin/templates/composer.json +1 -1
- package/tasks/config/project/install.js +15 -13
- package/tasks/install.js +1 -0
- package/tasks/rtl/watch.js +1 -1
- package/tasks/version.js +1 -1
- package/test/fixtures/accordion.html +1 -1
- package/test/fixtures/checkbox.html +1 -1
- package/test/fixtures/dropdown.html +1 -1
- package/test/fixtures/modal.html +1 -1
- package/test/fixtures/popup.html +1 -1
- package/test/fixtures/rating.html +1 -1
- package/test/fixtures/shape.html +1 -1
- package/test/fixtures/sidebar.html +1 -1
- package/test/fixtures/tab.html +1 -1
- package/test/fixtures/transition.html +1 -1
- package/test/fixtures/video.html +1 -1
- package/test/helpers/jasmine-jquery.js +2 -2
- package/test/helpers/jasmine-sinon.js +1 -1
- package/test/helpers/jquery-events.js +1 -1
- package/test/helpers/sinon.js +3 -3
- package/test/meteor/fonts.js +1 -1
- package/test/modules/accordion.spec.js +1 -1
- package/test/modules/checkbox.spec.js +1 -1
- package/test/modules/dropdown.spec.js +1 -1
- package/test/modules/modal.spec.js +1 -1
- package/test/modules/module.spec.js +1 -1
- package/test/modules/popup.spec.js +1 -1
- package/test/modules/search.spec.js +1 -1
- package/test/modules/shape.spec.js +1 -1
- package/test/modules/sidebar.spec.js +1 -1
- package/test/modules/tab.spec.js +1 -1
- package/test/modules/transition.spec.js +1 -1
- package/test/modules/video.spec.js +1 -1
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* # Fomantic-UI 2.9.0-beta.
|
2
|
+
* # Fomantic-UI 2.9.0-beta.292+4ee9307 - Dropdown
|
3
3
|
* http://github.com/fomantic/Fomantic-UI/
|
4
4
|
*
|
5
5
|
*
|
@@ -30,11 +30,6 @@ $.fn.dropdown = function(parameters) {
|
|
30
30
|
|
31
31
|
moduleSelector = $allModules.selector || '',
|
32
32
|
|
33
|
-
hasTouch = ('ontouchstart' in document.documentElement),
|
34
|
-
clickEvent = hasTouch
|
35
|
-
? 'touchstart'
|
36
|
-
: 'click',
|
37
|
-
|
38
33
|
time = new Date().getTime(),
|
39
34
|
performance = [],
|
40
35
|
|
@@ -66,7 +61,7 @@ $.fn.dropdown = function(parameters) {
|
|
66
61
|
moduleNamespace = 'module-' + namespace,
|
67
62
|
|
68
63
|
$module = $(this),
|
69
|
-
$context = $(settings.context),
|
64
|
+
$context = [window,document].indexOf(settings.context) < 0 ? $(document).find(settings.context) : $(settings.context),
|
70
65
|
$text = $module.find(selector.text),
|
71
66
|
$search = $module.find(selector.search),
|
72
67
|
$sizer = $module.find(selector.sizer),
|
@@ -200,6 +195,7 @@ $.fn.dropdown = function(parameters) {
|
|
200
195
|
select: function() {
|
201
196
|
if(module.has.input() && selectObserver) {
|
202
197
|
selectObserver.observe($module[0], {
|
198
|
+
attributes: true,
|
203
199
|
childList : true,
|
204
200
|
subtree : true
|
205
201
|
});
|
@@ -224,7 +220,7 @@ $.fn.dropdown = function(parameters) {
|
|
224
220
|
|
225
221
|
create: {
|
226
222
|
id: function() {
|
227
|
-
id = (Math.random().toString(16) + '000000000').
|
223
|
+
id = (Math.random().toString(16) + '000000000').slice(2, 10);
|
228
224
|
elementNamespace = '.' + id;
|
229
225
|
module.verbose('Creating unique id for element', id);
|
230
226
|
},
|
@@ -421,6 +417,9 @@ $.fn.dropdown = function(parameters) {
|
|
421
417
|
module.debug('Disabling dropdown');
|
422
418
|
$module.addClass(className.disabled);
|
423
419
|
}
|
420
|
+
if($input.is('[required]')) {
|
421
|
+
settings.forceSelection = true;
|
422
|
+
}
|
424
423
|
$input
|
425
424
|
.removeAttr('required')
|
426
425
|
.removeAttr('class')
|
@@ -537,9 +536,7 @@ $.fn.dropdown = function(parameters) {
|
|
537
536
|
}
|
538
537
|
if(settings.onShow.call(element) !== false) {
|
539
538
|
module.animate.show(function() {
|
540
|
-
|
541
|
-
module.bind.intent();
|
542
|
-
}
|
539
|
+
module.bind.intent();
|
543
540
|
if(module.has.search() && !preventFocus) {
|
544
541
|
module.focusSearch();
|
545
542
|
}
|
@@ -566,8 +563,17 @@ $.fn.dropdown = function(parameters) {
|
|
566
563
|
}
|
567
564
|
callback.call(element);
|
568
565
|
});
|
566
|
+
// Hide submenus explicitly. On some browsers (esp. mobile), they will not automatically receive a
|
567
|
+
// mouseleave event
|
568
|
+
var $subMenu = $module.find(selector.menu);
|
569
|
+
if($subMenu.length > 0) {
|
570
|
+
module.verbose('Hiding sub-menu', $subMenu);
|
571
|
+
$subMenu.each(function() {
|
572
|
+
module.animate.hide(false, $(this));
|
573
|
+
});
|
574
|
+
}
|
569
575
|
}
|
570
|
-
} else
|
576
|
+
} else {
|
571
577
|
module.unbind.intent();
|
572
578
|
}
|
573
579
|
iconClicked = false;
|
@@ -625,13 +631,18 @@ $.fn.dropdown = function(parameters) {
|
|
625
631
|
$module
|
626
632
|
.on('change' + eventNamespace, selector.input, module.event.change)
|
627
633
|
;
|
634
|
+
if(module.is.multiple() && module.is.searchSelection()) {
|
635
|
+
$module
|
636
|
+
.on('paste' + eventNamespace, selector.search, module.event.paste)
|
637
|
+
;
|
638
|
+
}
|
628
639
|
},
|
629
640
|
mouseEvents: function() {
|
630
641
|
module.verbose('Binding mouse events');
|
631
642
|
if(module.is.multiple()) {
|
632
643
|
$module
|
633
|
-
.on(
|
634
|
-
.on(
|
644
|
+
.on('click' + eventNamespace, selector.label, module.event.label.click)
|
645
|
+
.on('click' + eventNamespace, selector.remove, module.event.remove.click)
|
635
646
|
;
|
636
647
|
}
|
637
648
|
if( module.is.searchSelection() ) {
|
@@ -640,31 +651,33 @@ $.fn.dropdown = function(parameters) {
|
|
640
651
|
.on('mouseup' + eventNamespace, module.event.mouseup)
|
641
652
|
.on('mousedown' + eventNamespace, selector.menu, module.event.menu.mousedown)
|
642
653
|
.on('mouseup' + eventNamespace, selector.menu, module.event.menu.mouseup)
|
643
|
-
.on(
|
644
|
-
.on(
|
654
|
+
.on('click' + eventNamespace, selector.icon, module.event.icon.click)
|
655
|
+
.on('click' + eventNamespace, selector.clearIcon, module.event.clearIcon.click)
|
645
656
|
.on('focus' + eventNamespace, selector.search, module.event.search.focus)
|
646
|
-
.on(
|
657
|
+
.on('click' + eventNamespace, selector.search, module.event.search.focus)
|
647
658
|
.on('blur' + eventNamespace, selector.search, module.event.search.blur)
|
648
|
-
.on(
|
659
|
+
.on('click' + eventNamespace, selector.text, module.event.text.focus)
|
649
660
|
;
|
650
661
|
if(module.is.multiple()) {
|
651
662
|
$module
|
652
|
-
.on(
|
653
|
-
.on(
|
663
|
+
.on('click' + eventNamespace, module.event.click)
|
664
|
+
.on('click' + eventNamespace, module.event.search.focus)
|
654
665
|
;
|
655
666
|
}
|
656
667
|
}
|
657
668
|
else {
|
658
669
|
if(settings.on == 'click') {
|
659
670
|
$module
|
660
|
-
.on(
|
661
|
-
.on(
|
671
|
+
.on('click' + eventNamespace, selector.icon, module.event.icon.click)
|
672
|
+
.on('click' + eventNamespace, module.event.test.toggle)
|
662
673
|
;
|
663
674
|
}
|
664
675
|
else if(settings.on == 'hover') {
|
665
676
|
$module
|
666
677
|
.on('mouseenter' + eventNamespace, module.delay.show)
|
667
678
|
.on('mouseleave' + eventNamespace, module.delay.hide)
|
679
|
+
.on('touchstart' + eventNamespace, module.event.test.toggle)
|
680
|
+
.on('touchstart' + eventNamespace, selector.icon, module.event.icon.click)
|
668
681
|
;
|
669
682
|
}
|
670
683
|
else {
|
@@ -676,7 +689,7 @@ $.fn.dropdown = function(parameters) {
|
|
676
689
|
.on('mousedown' + eventNamespace, module.event.mousedown)
|
677
690
|
.on('mouseup' + eventNamespace, module.event.mouseup)
|
678
691
|
.on('focus' + eventNamespace, module.event.focus)
|
679
|
-
.on(
|
692
|
+
.on('click' + eventNamespace, selector.clearIcon, module.event.clearIcon.click)
|
680
693
|
;
|
681
694
|
if(module.has.menuSearch() ) {
|
682
695
|
$module
|
@@ -690,21 +703,16 @@ $.fn.dropdown = function(parameters) {
|
|
690
703
|
}
|
691
704
|
}
|
692
705
|
$menu
|
693
|
-
.on(
|
706
|
+
.on('mouseenter' + eventNamespace, selector.item, module.event.item.mouseenter)
|
707
|
+
.on('touchstart' + eventNamespace, selector.item, module.event.item.mouseenter)
|
694
708
|
.on('mouseleave' + eventNamespace, selector.item, module.event.item.mouseleave)
|
695
709
|
.on('click' + eventNamespace, selector.item, module.event.item.click)
|
696
710
|
;
|
697
711
|
},
|
698
712
|
intent: function() {
|
699
713
|
module.verbose('Binding hide intent event to document');
|
700
|
-
if(hasTouch) {
|
701
|
-
$document
|
702
|
-
.on('touchstart' + elementNamespace, module.event.test.touch)
|
703
|
-
.on('touchmove' + elementNamespace, module.event.test.touch)
|
704
|
-
;
|
705
|
-
}
|
706
714
|
$document
|
707
|
-
.on(
|
715
|
+
.on('click' + elementNamespace, module.event.test.hide)
|
708
716
|
;
|
709
717
|
}
|
710
718
|
},
|
@@ -712,14 +720,8 @@ $.fn.dropdown = function(parameters) {
|
|
712
720
|
unbind: {
|
713
721
|
intent: function() {
|
714
722
|
module.verbose('Removing hide intent event from document');
|
715
|
-
if(hasTouch) {
|
716
|
-
$document
|
717
|
-
.off('touchstart' + elementNamespace)
|
718
|
-
.off('touchmove' + elementNamespace)
|
719
|
-
;
|
720
|
-
}
|
721
723
|
$document
|
722
|
-
.off(
|
724
|
+
.off('click' + elementNamespace)
|
723
725
|
;
|
724
726
|
}
|
725
727
|
},
|
@@ -844,7 +846,7 @@ $.fn.dropdown = function(parameters) {
|
|
844
846
|
var value = module.is.multiple() ? module.get.values() : module.get.value();
|
845
847
|
if (value !== '') {
|
846
848
|
module.verbose('Value(s) present after click icon, select value(s) in items');
|
847
|
-
module.set.selected(value, null,
|
849
|
+
module.set.selected(value, null, true, true);
|
848
850
|
}
|
849
851
|
}
|
850
852
|
iconClicked = false;
|
@@ -1044,7 +1046,7 @@ $.fn.dropdown = function(parameters) {
|
|
1044
1046
|
menuConfig[fields.values] = values;
|
1045
1047
|
module.setup.menu(menuConfig);
|
1046
1048
|
$.each(values, function(index, item) {
|
1047
|
-
if(item.selected
|
1049
|
+
if(item.selected === true) {
|
1048
1050
|
module.debug('Setting initial selection to', item[fields.value]);
|
1049
1051
|
module.set.selected(item[fields.value]);
|
1050
1052
|
if(!module.is.multiple()) {
|
@@ -1065,7 +1067,7 @@ $.fn.dropdown = function(parameters) {
|
|
1065
1067
|
settings.preserveHTML
|
1066
1068
|
)
|
1067
1069
|
;
|
1068
|
-
$input.append('<option value="' + value + '">' + name + '</option>');
|
1070
|
+
$input.append('<option value="' + value + '"' + (item.selected === true ? ' selected' : '') + '>' + name + '</option>');
|
1069
1071
|
});
|
1070
1072
|
module.observe.select();
|
1071
1073
|
}
|
@@ -1073,6 +1075,15 @@ $.fn.dropdown = function(parameters) {
|
|
1073
1075
|
},
|
1074
1076
|
|
1075
1077
|
event: {
|
1078
|
+
paste: function(event) {
|
1079
|
+
var pasteValue = (event.originalEvent.clipboardData || window.clipboardData).getData('text'),
|
1080
|
+
tokens = pasteValue.split(settings.delimiter)
|
1081
|
+
;
|
1082
|
+
tokens.forEach(function(value){
|
1083
|
+
module.set.selected(module.escape.htmlEntities(value.trim()), null, true, true);
|
1084
|
+
});
|
1085
|
+
event.preventDefault();
|
1086
|
+
},
|
1076
1087
|
change: function() {
|
1077
1088
|
if(!internalChange) {
|
1078
1089
|
module.debug('Input changed, updating selection');
|
@@ -1249,23 +1260,12 @@ $.fn.dropdown = function(parameters) {
|
|
1249
1260
|
if (!module.is.multiple() || (module.is.multiple() && !module.is.active())) {
|
1250
1261
|
focused = true;
|
1251
1262
|
}
|
1252
|
-
if( module.determine.eventOnElement(event, toggleBehavior) ) {
|
1263
|
+
if( module.determine.eventOnElement(event, toggleBehavior) && event.type !== 'touchstart') {
|
1264
|
+
// do not preventDefault of touchstart; so emulated mouseenter is triggered on first touch and not later
|
1265
|
+
// (when selecting an item). The double-showing of the dropdown through both events does not hurt.
|
1253
1266
|
event.preventDefault();
|
1254
1267
|
}
|
1255
1268
|
},
|
1256
|
-
touch: function(event) {
|
1257
|
-
module.determine.eventOnElement(event, function() {
|
1258
|
-
if(event.type == 'touchstart') {
|
1259
|
-
module.timer = setTimeout(function() {
|
1260
|
-
module.hide();
|
1261
|
-
}, settings.delay.touch);
|
1262
|
-
}
|
1263
|
-
else if(event.type == 'touchmove') {
|
1264
|
-
clearTimeout(module.timer);
|
1265
|
-
}
|
1266
|
-
});
|
1267
|
-
event.stopPropagation();
|
1268
|
-
},
|
1269
1269
|
hide: function(event) {
|
1270
1270
|
if(module.determine.eventInModule(event, module.hide)){
|
1271
1271
|
if(element.id && $(event.target).attr('for') === element.id){
|
@@ -1285,8 +1285,8 @@ $.fn.dropdown = function(parameters) {
|
|
1285
1285
|
},
|
1286
1286
|
select: {
|
1287
1287
|
mutation: function(mutations) {
|
1288
|
-
module.debug('<select> modified, recreating menu');
|
1289
1288
|
if(module.is.selectMutation(mutations)) {
|
1289
|
+
module.debug('<select> modified, recreating menu');
|
1290
1290
|
module.disconnect.selectObserver();
|
1291
1291
|
module.refresh();
|
1292
1292
|
module.setup.select();
|
@@ -1349,13 +1349,15 @@ $.fn.dropdown = function(parameters) {
|
|
1349
1349
|
},
|
1350
1350
|
mouseleave: function(event) {
|
1351
1351
|
var
|
1352
|
-
$subMenu = $(this).
|
1352
|
+
$subMenu = $(this).find(selector.menu)
|
1353
1353
|
;
|
1354
1354
|
if($subMenu.length > 0) {
|
1355
1355
|
clearTimeout(module.itemTimer);
|
1356
1356
|
module.itemTimer = setTimeout(function() {
|
1357
1357
|
module.verbose('Hiding sub-menu', $subMenu);
|
1358
|
-
|
1358
|
+
$subMenu.each(function() {
|
1359
|
+
module.animate.hide(false, $(this));
|
1360
|
+
});
|
1359
1361
|
}, settings.delay.hide);
|
1360
1362
|
}
|
1361
1363
|
},
|
@@ -1381,7 +1383,7 @@ $.fn.dropdown = function(parameters) {
|
|
1381
1383
|
module.remove.userAddition();
|
1382
1384
|
}
|
1383
1385
|
module.remove.searchTerm();
|
1384
|
-
if(!module.is.focusedOnSearch() &&
|
1386
|
+
if(!module.is.focusedOnSearch() && skipRefocus !== true) {
|
1385
1387
|
module.focusSearch(true);
|
1386
1388
|
}
|
1387
1389
|
}
|
@@ -1513,7 +1515,7 @@ $.fn.dropdown = function(parameters) {
|
|
1513
1515
|
keydown: function(event) {
|
1514
1516
|
var
|
1515
1517
|
pressedKey = event.which,
|
1516
|
-
isShortcutKey = module.is.inObject(pressedKey, keys)
|
1518
|
+
isShortcutKey = module.is.inObject(pressedKey, keys) || event.key === settings.delimiter
|
1517
1519
|
;
|
1518
1520
|
if(isShortcutKey) {
|
1519
1521
|
var
|
@@ -1531,7 +1533,7 @@ $.fn.dropdown = function(parameters) {
|
|
1531
1533
|
hasSubMenu = ($subMenu.length> 0),
|
1532
1534
|
hasSelectedItem = ($selectedItem.length > 0),
|
1533
1535
|
selectedIsSelectable = ($selectedItem.not(selector.unselectable).length > 0),
|
1534
|
-
delimiterPressed = (
|
1536
|
+
delimiterPressed = (event.key === settings.delimiter && module.is.multiple()),
|
1535
1537
|
isAdditionWithoutMenu = (settings.allowAdditions && settings.hideAdditions && (pressedKey == keys.enter || delimiterPressed) && selectedIsSelectable),
|
1536
1538
|
$nextItem,
|
1537
1539
|
isSubMenuItem,
|
@@ -1629,7 +1631,7 @@ $.fn.dropdown = function(parameters) {
|
|
1629
1631
|
.addClass(className.selected)
|
1630
1632
|
;
|
1631
1633
|
module.set.scrollPosition($nextItem);
|
1632
|
-
if(settings.selectOnKeydown && module.is.single()) {
|
1634
|
+
if(settings.selectOnKeydown && module.is.single() && !$nextItem.hasClass(className.actionable)) {
|
1633
1635
|
module.set.selectedItem($nextItem);
|
1634
1636
|
}
|
1635
1637
|
}
|
@@ -1656,7 +1658,7 @@ $.fn.dropdown = function(parameters) {
|
|
1656
1658
|
.addClass(className.selected)
|
1657
1659
|
;
|
1658
1660
|
module.set.scrollPosition($nextItem);
|
1659
|
-
if(settings.selectOnKeydown && module.is.single()) {
|
1661
|
+
if(settings.selectOnKeydown && module.is.single() && !$nextItem.hasClass(className.actionable)) {
|
1660
1662
|
module.set.selectedItem($nextItem);
|
1661
1663
|
}
|
1662
1664
|
}
|
@@ -1787,7 +1789,7 @@ $.fn.dropdown = function(parameters) {
|
|
1787
1789
|
;
|
1788
1790
|
if( module.can.activate( $(element) ) ) {
|
1789
1791
|
module.set.selected(value, $(element));
|
1790
|
-
if(!module.is.multiple()) {
|
1792
|
+
if(!module.is.multiple() && !(!settings.collapseOnActionable && $(element).hasClass(className.actionable))) {
|
1791
1793
|
module.hideAndClear();
|
1792
1794
|
}
|
1793
1795
|
}
|
@@ -1800,7 +1802,7 @@ $.fn.dropdown = function(parameters) {
|
|
1800
1802
|
;
|
1801
1803
|
if( module.can.activate( $(element) ) ) {
|
1802
1804
|
module.set.value(value, text, $(element));
|
1803
|
-
if(!module.is.multiple()) {
|
1805
|
+
if(!module.is.multiple() && !(!settings.collapseOnActionable && $(element).hasClass(className.actionable))) {
|
1804
1806
|
module.hideAndClear();
|
1805
1807
|
}
|
1806
1808
|
}
|
@@ -1851,7 +1853,7 @@ $.fn.dropdown = function(parameters) {
|
|
1851
1853
|
;
|
1852
1854
|
$sizer.text(value);
|
1853
1855
|
// prevent rounding issues
|
1854
|
-
return Math.ceil( $sizer.width() + 1);
|
1856
|
+
return Math.ceil( $sizer.width() + (module.is.edge() ? 3 : 1));
|
1855
1857
|
},
|
1856
1858
|
selectionCount: function() {
|
1857
1859
|
var
|
@@ -2320,7 +2322,7 @@ $.fn.dropdown = function(parameters) {
|
|
2320
2322
|
module.error(error.noStorage);
|
2321
2323
|
return;
|
2322
2324
|
}
|
2323
|
-
name = sessionStorage.getItem(value);
|
2325
|
+
name = sessionStorage.getItem(value + elementNamespace);
|
2324
2326
|
return (name !== undefined)
|
2325
2327
|
? name
|
2326
2328
|
: false
|
@@ -2364,7 +2366,7 @@ $.fn.dropdown = function(parameters) {
|
|
2364
2366
|
return;
|
2365
2367
|
}
|
2366
2368
|
module.verbose('Saving remote data to session storage', value, name);
|
2367
|
-
sessionStorage.setItem(value, name);
|
2369
|
+
sessionStorage.setItem(value + elementNamespace, name);
|
2368
2370
|
}
|
2369
2371
|
},
|
2370
2372
|
|
@@ -2424,7 +2426,7 @@ $.fn.dropdown = function(parameters) {
|
|
2424
2426
|
$nextSelectedItem
|
2425
2427
|
.addClass(className.selected)
|
2426
2428
|
;
|
2427
|
-
if(settings.selectOnKeydown && module.is.single()) {
|
2429
|
+
if(settings.selectOnKeydown && module.is.single() && !$nextItem.hasClass(className.actionable)) {
|
2428
2430
|
module.set.selectedItem($nextSelectedItem);
|
2429
2431
|
}
|
2430
2432
|
$menu
|
@@ -2510,7 +2512,7 @@ $.fn.dropdown = function(parameters) {
|
|
2510
2512
|
var
|
2511
2513
|
length = module.get.query().length
|
2512
2514
|
;
|
2513
|
-
$search.val( text.
|
2515
|
+
$search.val( text.slice(0, length));
|
2514
2516
|
},
|
2515
2517
|
scrollPosition: function($item, forceScroll) {
|
2516
2518
|
var
|
@@ -2627,13 +2629,13 @@ $.fn.dropdown = function(parameters) {
|
|
2627
2629
|
module.set.scrollPosition($nextValue);
|
2628
2630
|
$selectedItem.removeClass(className.selected);
|
2629
2631
|
$nextValue.addClass(className.selected);
|
2630
|
-
if(settings.selectOnKeydown && module.is.single()) {
|
2632
|
+
if(settings.selectOnKeydown && module.is.single() && !$nextItem.hasClass(className.actionable)) {
|
2631
2633
|
module.set.selectedItem($nextValue);
|
2632
2634
|
}
|
2633
2635
|
}
|
2634
2636
|
},
|
2635
2637
|
direction: function($menu) {
|
2636
|
-
if(settings.direction
|
2638
|
+
if(settings.direction === 'auto') {
|
2637
2639
|
// reset position, remove upward if it's base menu
|
2638
2640
|
if (!$menu) {
|
2639
2641
|
module.remove.upward();
|
@@ -2652,7 +2654,7 @@ $.fn.dropdown = function(parameters) {
|
|
2652
2654
|
module.set.leftward($menu);
|
2653
2655
|
}
|
2654
2656
|
}
|
2655
|
-
else if(settings.direction
|
2657
|
+
else if(settings.direction === 'upward') {
|
2656
2658
|
module.set.upward($menu);
|
2657
2659
|
}
|
2658
2660
|
},
|
@@ -2665,6 +2667,11 @@ $.fn.dropdown = function(parameters) {
|
|
2665
2667
|
$element.addClass(className.leftward);
|
2666
2668
|
},
|
2667
2669
|
value: function(value, text, $selected, preventChangeTrigger) {
|
2670
|
+
if(typeof text === 'boolean') {
|
2671
|
+
preventChangeTrigger = text;
|
2672
|
+
$selected = undefined;
|
2673
|
+
text = undefined;
|
2674
|
+
}
|
2668
2675
|
if(value !== undefined && value !== '' && !(Array.isArray(value) && value.length === 0)) {
|
2669
2676
|
$input.removeClass(className.noselection);
|
2670
2677
|
} else {
|
@@ -2728,12 +2735,21 @@ $.fn.dropdown = function(parameters) {
|
|
2728
2735
|
visible: function() {
|
2729
2736
|
$module.addClass(className.visible);
|
2730
2737
|
},
|
2731
|
-
exactly: function(value, $selectedItem) {
|
2738
|
+
exactly: function(value, $selectedItem, preventChangeTrigger) {
|
2739
|
+
if(typeof $selectedItem === 'boolean') {
|
2740
|
+
preventChangeTrigger = $selectedItem;
|
2741
|
+
$selectedItem = undefined;
|
2742
|
+
}
|
2732
2743
|
module.debug('Setting selected to exact values');
|
2733
2744
|
module.clear();
|
2734
|
-
module.set.selected(value, $selectedItem);
|
2745
|
+
module.set.selected(value, $selectedItem, preventChangeTrigger);
|
2735
2746
|
},
|
2736
2747
|
selected: function(value, $selectedItem, preventChangeTrigger, keepSearchTerm) {
|
2748
|
+
if(typeof $selectedItem === 'boolean') {
|
2749
|
+
keepSearchTerm = preventChangeTrigger;
|
2750
|
+
preventChangeTrigger = $selectedItem;
|
2751
|
+
$selectedItem = undefined;
|
2752
|
+
}
|
2737
2753
|
var
|
2738
2754
|
isMultiple = module.is.multiple()
|
2739
2755
|
;
|
@@ -2765,23 +2781,30 @@ $.fn.dropdown = function(parameters) {
|
|
2765
2781
|
|
2766
2782
|
isFiltered = $selected.hasClass(className.filtered),
|
2767
2783
|
isActive = $selected.hasClass(className.active),
|
2784
|
+
isActionable = $selected.hasClass(className.actionable),
|
2768
2785
|
isUserValue = $selected.hasClass(className.addition),
|
2769
|
-
shouldAnimate = (isMultiple && $selectedItem.length
|
2786
|
+
shouldAnimate = (isMultiple && $selectedItem && $selectedItem.length === 1)
|
2770
2787
|
;
|
2771
|
-
if(
|
2788
|
+
if(isActionable){
|
2789
|
+
if((!isMultiple || (!isActive || isUserValue)) && settings.apiSettings && settings.saveRemoteData) {
|
2790
|
+
module.save.remoteData(selectedText, selectedValue);
|
2791
|
+
}
|
2792
|
+
settings.onActionable.call(element, selectedValue, selectedText, $selected);
|
2793
|
+
}
|
2794
|
+
else if(isMultiple) {
|
2772
2795
|
if(!isActive || isUserValue) {
|
2773
2796
|
if(settings.apiSettings && settings.saveRemoteData) {
|
2774
2797
|
module.save.remoteData(selectedText, selectedValue);
|
2775
2798
|
}
|
2776
2799
|
if(settings.useLabels) {
|
2800
|
+
module.add.value(selectedValue, selectedText, $selected, preventChangeTrigger);
|
2777
2801
|
module.add.label(selectedValue, selectedText, shouldAnimate);
|
2778
|
-
module.add.value(selectedValue, selectedText, $selected);
|
2779
2802
|
module.set.activeItem($selected);
|
2780
2803
|
module.filterActive();
|
2781
2804
|
module.select.nextAvailable($selectedItem);
|
2782
2805
|
}
|
2783
2806
|
else {
|
2784
|
-
module.add.value(selectedValue, selectedText, $selected);
|
2807
|
+
module.add.value(selectedValue, selectedText, $selected, preventChangeTrigger);
|
2785
2808
|
module.set.text(module.add.variables(message.count));
|
2786
2809
|
module.set.activeItem($selected);
|
2787
2810
|
}
|
@@ -2795,7 +2818,7 @@ $.fn.dropdown = function(parameters) {
|
|
2795
2818
|
if(settings.apiSettings && settings.saveRemoteData) {
|
2796
2819
|
module.save.remoteData(selectedText, selectedValue);
|
2797
2820
|
}
|
2798
|
-
if (!keepSearchTerm) {
|
2821
|
+
if (!keepSearchTerm && !$selected.hasClass(className.actionable)) {
|
2799
2822
|
module.set.text(selectedText);
|
2800
2823
|
}
|
2801
2824
|
module.set.value(selectedValue, selectedText, $selected, preventChangeTrigger);
|
@@ -2894,7 +2917,7 @@ $.fn.dropdown = function(parameters) {
|
|
2894
2917
|
$('<option/>')
|
2895
2918
|
.prop('value', escapedValue)
|
2896
2919
|
.addClass(className.addition)
|
2897
|
-
.
|
2920
|
+
.text(value)
|
2898
2921
|
.appendTo($input)
|
2899
2922
|
;
|
2900
2923
|
module.verbose('Adding user addition as an <option>', value);
|
@@ -2970,7 +2993,12 @@ $.fn.dropdown = function(parameters) {
|
|
2970
2993
|
}
|
2971
2994
|
return message;
|
2972
2995
|
},
|
2973
|
-
value: function(addedValue, addedText, $selectedItem) {
|
2996
|
+
value: function(addedValue, addedText, $selectedItem, preventChangeTrigger) {
|
2997
|
+
if(typeof addedText === 'boolean') {
|
2998
|
+
preventChangeTrigger = addedText;
|
2999
|
+
$selectedItem = undefined;
|
3000
|
+
addedText = undefined;
|
3001
|
+
}
|
2974
3002
|
var
|
2975
3003
|
currentValue = module.get.values(true),
|
2976
3004
|
newValue
|
@@ -2985,7 +3013,7 @@ $.fn.dropdown = function(parameters) {
|
|
2985
3013
|
}
|
2986
3014
|
// extend current array
|
2987
3015
|
if(Array.isArray(currentValue)) {
|
2988
|
-
newValue = currentValue.concat([addedValue]);
|
3016
|
+
newValue = $selectedItem && $selectedItem.hasClass(className.actionable) ? currentValue : currentValue.concat([addedValue]);
|
2989
3017
|
newValue = module.get.uniqueArray(newValue);
|
2990
3018
|
}
|
2991
3019
|
else {
|
@@ -3009,7 +3037,7 @@ $.fn.dropdown = function(parameters) {
|
|
3009
3037
|
else {
|
3010
3038
|
settings.onAdd.call(element, addedValue, addedText, $selectedItem);
|
3011
3039
|
}
|
3012
|
-
module.set.value(newValue, addedText, $selectedItem);
|
3040
|
+
module.set.value(newValue, addedText, $selectedItem, preventChangeTrigger);
|
3013
3041
|
module.check.maxSelections();
|
3014
3042
|
},
|
3015
3043
|
},
|
@@ -3069,18 +3097,10 @@ $.fn.dropdown = function(parameters) {
|
|
3069
3097
|
return;
|
3070
3098
|
}
|
3071
3099
|
// temporarily disconnect observer
|
3072
|
-
|
3073
|
-
selectObserver.disconnect();
|
3074
|
-
module.verbose('Temporarily disconnecting mutation observer');
|
3075
|
-
}
|
3100
|
+
module.disconnect.selectObserver();
|
3076
3101
|
$option.remove();
|
3077
3102
|
module.verbose('Removing user addition as an <option>', escapedValue);
|
3078
|
-
|
3079
|
-
selectObserver.observe($input[0], {
|
3080
|
-
childList : true,
|
3081
|
-
subtree : true
|
3082
|
-
});
|
3083
|
-
}
|
3103
|
+
module.observe.select();
|
3084
3104
|
},
|
3085
3105
|
message: function() {
|
3086
3106
|
$menu.children(selector.message).remove();
|
@@ -3379,8 +3399,11 @@ $.fn.dropdown = function(parameters) {
|
|
3379
3399
|
bubbledIconClick: function(event) {
|
3380
3400
|
return $(event.target).closest($icon).length > 0;
|
3381
3401
|
},
|
3402
|
+
edge: function() {
|
3403
|
+
return !!window.chrome && !!window.StyleMedia;
|
3404
|
+
},
|
3382
3405
|
chrome: function() {
|
3383
|
-
return !!window.chrome &&
|
3406
|
+
return !!window.chrome && !window.StyleMedia;
|
3384
3407
|
},
|
3385
3408
|
alreadySetup: function() {
|
3386
3409
|
return ($module.is('select') && $module.parent(selector.dropdown).data(moduleNamespace) !== undefined && $module.prev().length === 0);
|
@@ -3445,7 +3468,7 @@ $.fn.dropdown = function(parameters) {
|
|
3445
3468
|
selectChanged = false
|
3446
3469
|
;
|
3447
3470
|
$.each(mutations, function(index, mutation) {
|
3448
|
-
if($(mutation.target).is('select') || $(mutation.addedNodes).is('select')) {
|
3471
|
+
if($(mutation.target).is('select, option, optgroup') || $(mutation.addedNodes).is('select')) {
|
3449
3472
|
selectChanged = true;
|
3450
3473
|
return false;
|
3451
3474
|
}
|
@@ -3587,9 +3610,6 @@ $.fn.dropdown = function(parameters) {
|
|
3587
3610
|
$currentMenu.removeClass(className.loading);
|
3588
3611
|
return canOpenRightward;
|
3589
3612
|
},
|
3590
|
-
click: function() {
|
3591
|
-
return (hasTouch || settings.on == 'click');
|
3592
|
-
},
|
3593
3613
|
extendSelect: function() {
|
3594
3614
|
return settings.allowAdditions || settings.apiSettings;
|
3595
3615
|
},
|
@@ -3659,9 +3679,7 @@ $.fn.dropdown = function(parameters) {
|
|
3659
3679
|
start = ($subMenu)
|
3660
3680
|
? function() {}
|
3661
3681
|
: function() {
|
3662
|
-
|
3663
|
-
module.unbind.intent();
|
3664
|
-
}
|
3682
|
+
module.unbind.intent();
|
3665
3683
|
module.remove.active();
|
3666
3684
|
},
|
3667
3685
|
transition = settings.transition.hideMethod || module.get.transition($subMenu)
|
@@ -3990,7 +4008,7 @@ $.fn.dropdown.settings = {
|
|
3990
4008
|
keepOnScreen : true, // Whether dropdown should check whether it is on screen before showing
|
3991
4009
|
|
3992
4010
|
match : 'both', // what to match against with search selection (both, text, or label)
|
3993
|
-
fullTextSearch :
|
4011
|
+
fullTextSearch : 'exact', // search anywhere in value (set to 'exact' to require exact matches)
|
3994
4012
|
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
4013
|
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
4014
|
|
@@ -3998,7 +4016,7 @@ $.fn.dropdown.settings = {
|
|
3998
4016
|
preserveHTML : true, // preserve html when selecting value
|
3999
4017
|
sortSelect : false, // sort selection on init
|
4000
4018
|
|
4001
|
-
forceSelection :
|
4019
|
+
forceSelection : false, // force a choice on blur with search selection
|
4002
4020
|
|
4003
4021
|
allowAdditions : false, // whether multiple select should allow user added values
|
4004
4022
|
ignoreCase : false, // whether to consider case sensitivity when creating labels
|
@@ -4009,7 +4027,7 @@ $.fn.dropdown.settings = {
|
|
4009
4027
|
useLabels : true, // whether multiple select should filter currently active selections from choices
|
4010
4028
|
delimiter : ',', // when multiselect uses normal <input> the values will be delimited with this character
|
4011
4029
|
|
4012
|
-
showOnFocus :
|
4030
|
+
showOnFocus : false, // show menu on focus
|
4013
4031
|
allowReselection : false, // whether current value should trigger callbacks when reselected
|
4014
4032
|
allowTab : true, // add tabindex to element
|
4015
4033
|
allowCategorySelection : false, // allow elements with sub-menus to be selected
|
@@ -4024,6 +4042,8 @@ $.fn.dropdown.settings = {
|
|
4024
4042
|
|
4025
4043
|
headerDivider : true, // whether option headers should have an additional divider line underneath when converted from <select> <optgroup>
|
4026
4044
|
|
4045
|
+
collapseOnActionable : true, // whether the dropdown should collapse upon selection of an actionable item
|
4046
|
+
|
4027
4047
|
// label settings on multi-select
|
4028
4048
|
label: {
|
4029
4049
|
transition : 'scale',
|
@@ -4036,13 +4056,13 @@ $.fn.dropdown.settings = {
|
|
4036
4056
|
hide : 300,
|
4037
4057
|
show : 200,
|
4038
4058
|
search : 20,
|
4039
|
-
touch : 50
|
4040
4059
|
},
|
4041
4060
|
|
4042
4061
|
/* Callbacks */
|
4043
4062
|
onChange : function(value, text, $selected){},
|
4044
4063
|
onAdd : function(value, text, $selected){},
|
4045
4064
|
onRemove : function(value, text, $selected){},
|
4065
|
+
onActionable : function(value, text, $selected){},
|
4046
4066
|
onSearch : function(searchTerm){},
|
4047
4067
|
|
4048
4068
|
onLabelSelect : function($selectedLabels){},
|
@@ -4105,12 +4125,12 @@ $.fn.dropdown.settings = {
|
|
4105
4125
|
icon : 'icon', // optional icon name
|
4106
4126
|
iconClass : 'iconClass', // optional individual class for icon (for example to use flag instead)
|
4107
4127
|
class : 'class', // optional individual class for item/header
|
4108
|
-
divider : 'divider' // optional divider append for group headers
|
4128
|
+
divider : 'divider', // optional divider append for group headers
|
4129
|
+
actionable : 'actionable' // optional actionable item
|
4109
4130
|
},
|
4110
4131
|
|
4111
4132
|
keys : {
|
4112
4133
|
backspace : 8,
|
4113
|
-
delimiter : 188, // comma
|
4114
4134
|
deleteKey : 46,
|
4115
4135
|
enter : 13,
|
4116
4136
|
escape : 27,
|
@@ -4177,7 +4197,8 @@ $.fn.dropdown.settings = {
|
|
4177
4197
|
header : 'header',
|
4178
4198
|
divider : 'divider',
|
4179
4199
|
groupIcon : '',
|
4180
|
-
unfilterable : 'unfilterable'
|
4200
|
+
unfilterable : 'unfilterable',
|
4201
|
+
actionable : 'actionable'
|
4181
4202
|
}
|
4182
4203
|
|
4183
4204
|
};
|
@@ -4252,6 +4273,9 @@ $.fn.dropdown.settings.templates = {
|
|
4252
4273
|
maybeText = (option[fields.text])
|
4253
4274
|
? ' data-text="' + deQuote(option[fields.text],true) + '"'
|
4254
4275
|
: '',
|
4276
|
+
maybeActionable = (option[fields.actionable])
|
4277
|
+
? className.actionable+' '
|
4278
|
+
: '',
|
4255
4279
|
maybeDisabled = (option[fields.disabled])
|
4256
4280
|
? className.disabled+' '
|
4257
4281
|
: '',
|
@@ -4260,7 +4284,7 @@ $.fn.dropdown.settings.templates = {
|
|
4260
4284
|
: '',
|
4261
4285
|
hasDescription = (escape(option[fields.description] || '', preserveHTML) != '')
|
4262
4286
|
;
|
4263
|
-
html += '<div class="'+ maybeDisabled + maybeDescriptionVertical + (option[fields.class] ? deQuote(option[fields.class]) : className.item)+'" data-value="' + deQuote(option[fields.value],true) + '"' + maybeText + '>';
|
4287
|
+
html += '<div class="'+ maybeActionable + maybeDisabled + maybeDescriptionVertical + (option[fields.class] ? deQuote(option[fields.class]) : className.item)+'" data-value="' + deQuote(option[fields.value],true) + '"' + maybeText + '>';
|
4264
4288
|
if (isMenu) {
|
4265
4289
|
html += '<i class="'+ (itemType.indexOf('left') !== -1 ? 'left' : '') + ' dropdown icon"></i>';
|
4266
4290
|
}
|