fomantic-ui 2.9.0-beta.31 → 2.9.0-beta.312
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 +274 -4
- 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 +86 -37
- package/FAQ.md +38 -38
- package/README.md +8 -8
- package/dist/components/accordion.css +176 -36
- package/dist/components/accordion.js +9 -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 +91 -71
- 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 +20 -13
- 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 +17 -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 +100 -50
- package/dist/components/dropdown.js +189 -138
- 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 +12 -6
- 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 +29 -4
- package/dist/components/modal.js +140 -56
- 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 +13 -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 +7 -3
- 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 +44 -14
- 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 +13 -7
- package/dist/components/sidebar.js +116 -37
- 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 +6 -6
- 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 +66 -32
- 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 +23 -16
- package/dist/components/transition.min.css +1 -1
- package/dist/components/transition.min.js +3 -3
- package/dist/components/visibility.js +4 -4
- package/dist/components/visibility.min.js +3 -3
- package/dist/semantic.css +20201 -13378
- package/dist/semantic.js +990 -542
- 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 +3 -3
- package/src/definitions/collections/form.less +229 -166
- 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 +8 -2
- package/src/definitions/modules/accordion.less +371 -219
- package/src/definitions/modules/calendar.js +90 -70
- package/src/definitions/modules/calendar.less +20 -0
- package/src/definitions/modules/checkbox.js +19 -12
- package/src/definitions/modules/checkbox.less +83 -227
- package/src/definitions/modules/dimmer.js +16 -4
- package/src/definitions/modules/dimmer.less +22 -8
- package/src/definitions/modules/dropdown.js +188 -137
- package/src/definitions/modules/dropdown.less +201 -136
- package/src/definitions/modules/embed.js +11 -5
- package/src/definitions/modules/embed.less +4 -4
- package/src/definitions/modules/modal.js +139 -55
- package/src/definitions/modules/modal.less +66 -33
- package/src/definitions/modules/nag.js +1 -1
- package/src/definitions/modules/nag.less +20 -19
- package/src/definitions/modules/popup.js +12 -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.js +6 -2
- package/src/definitions/modules/rating.less +35 -34
- package/src/definitions/modules/search.js +43 -13
- package/src/definitions/modules/search.less +35 -19
- package/src/definitions/modules/shape.js +2 -2
- package/src/definitions/modules/sidebar.js +115 -36
- package/src/definitions/modules/sidebar.less +42 -24
- package/src/definitions/modules/slider.js +67 -50
- package/src/definitions/modules/slider.less +48 -47
- package/src/definitions/modules/sticky.js +5 -5
- 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 +65 -31
- package/src/definitions/modules/toast.less +51 -16
- package/src/definitions/modules/transition.js +22 -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 +143 -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 +7 -10
- package/src/themes/default/modules/modal.variables +14 -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.312+86121ef - 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),
|
@@ -116,6 +111,7 @@ $.fn.dropdown = function(parameters) {
|
|
116
111
|
module.error(error.noNormalize, element);
|
117
112
|
}
|
118
113
|
|
114
|
+
module.create.id();
|
119
115
|
module.setup.layout();
|
120
116
|
|
121
117
|
if(settings.values) {
|
@@ -129,7 +125,6 @@ $.fn.dropdown = function(parameters) {
|
|
129
125
|
module.save.defaults();
|
130
126
|
module.restore.selected();
|
131
127
|
|
132
|
-
module.create.id();
|
133
128
|
module.bind.events();
|
134
129
|
|
135
130
|
module.observeChanges();
|
@@ -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
|
},
|
@@ -370,11 +366,20 @@ $.fn.dropdown = function(parameters) {
|
|
370
366
|
}
|
371
367
|
if( module.is.search() && !module.has.search() ) {
|
372
368
|
module.verbose('Adding search input');
|
369
|
+
var
|
370
|
+
labelNode = $module.prev('label')
|
371
|
+
;
|
373
372
|
$search = $('<input />')
|
374
373
|
.addClass(className.search)
|
375
374
|
.prop('autocomplete', module.is.chrome() ? 'fomantic-search' : 'off')
|
376
|
-
.insertBefore($text)
|
377
375
|
;
|
376
|
+
if (labelNode.length) {
|
377
|
+
if (!labelNode.attr('id')) {
|
378
|
+
labelNode.attr('id', module.get.id() + '_formLabel');
|
379
|
+
}
|
380
|
+
$search.attr('aria-labelledby', labelNode.attr('id'));
|
381
|
+
}
|
382
|
+
$search.insertBefore($text);
|
378
383
|
}
|
379
384
|
if( module.is.multiple() && module.is.searchSelection() && !module.has.sizer()) {
|
380
385
|
module.create.sizer();
|
@@ -421,6 +426,9 @@ $.fn.dropdown = function(parameters) {
|
|
421
426
|
module.debug('Disabling dropdown');
|
422
427
|
$module.addClass(className.disabled);
|
423
428
|
}
|
429
|
+
if($input.is('[required]')) {
|
430
|
+
settings.forceSelection = true;
|
431
|
+
}
|
424
432
|
$input
|
425
433
|
.removeAttr('required')
|
426
434
|
.removeAttr('class')
|
@@ -440,7 +448,7 @@ $.fn.dropdown = function(parameters) {
|
|
440
448
|
// replace module reference
|
441
449
|
$module = $module.parent(selector.dropdown);
|
442
450
|
instance = $module.data(moduleNamespace);
|
443
|
-
element = $module
|
451
|
+
element = $module[0];
|
444
452
|
module.refresh();
|
445
453
|
module.setup.returnedObject();
|
446
454
|
},
|
@@ -537,9 +545,7 @@ $.fn.dropdown = function(parameters) {
|
|
537
545
|
}
|
538
546
|
if(settings.onShow.call(element) !== false) {
|
539
547
|
module.animate.show(function() {
|
540
|
-
|
541
|
-
module.bind.intent();
|
542
|
-
}
|
548
|
+
module.bind.intent();
|
543
549
|
if(module.has.search() && !preventFocus) {
|
544
550
|
module.focusSearch();
|
545
551
|
}
|
@@ -566,8 +572,17 @@ $.fn.dropdown = function(parameters) {
|
|
566
572
|
}
|
567
573
|
callback.call(element);
|
568
574
|
});
|
575
|
+
// Hide submenus explicitly. On some browsers (esp. mobile), they will not automatically receive a
|
576
|
+
// mouseleave event
|
577
|
+
var $subMenu = $module.find(selector.menu);
|
578
|
+
if($subMenu.length > 0) {
|
579
|
+
module.verbose('Hiding sub-menu', $subMenu);
|
580
|
+
$subMenu.each(function() {
|
581
|
+
module.animate.hide(false, $(this));
|
582
|
+
});
|
583
|
+
}
|
569
584
|
}
|
570
|
-
} else
|
585
|
+
} else {
|
571
586
|
module.unbind.intent();
|
572
587
|
}
|
573
588
|
iconClicked = false;
|
@@ -625,13 +640,18 @@ $.fn.dropdown = function(parameters) {
|
|
625
640
|
$module
|
626
641
|
.on('change' + eventNamespace, selector.input, module.event.change)
|
627
642
|
;
|
643
|
+
if(module.is.multiple() && module.is.searchSelection()) {
|
644
|
+
$module
|
645
|
+
.on('paste' + eventNamespace, selector.search, module.event.paste)
|
646
|
+
;
|
647
|
+
}
|
628
648
|
},
|
629
649
|
mouseEvents: function() {
|
630
650
|
module.verbose('Binding mouse events');
|
631
651
|
if(module.is.multiple()) {
|
632
652
|
$module
|
633
|
-
.on(
|
634
|
-
.on(
|
653
|
+
.on('click' + eventNamespace, selector.label, module.event.label.click)
|
654
|
+
.on('click' + eventNamespace, selector.remove, module.event.remove.click)
|
635
655
|
;
|
636
656
|
}
|
637
657
|
if( module.is.searchSelection() ) {
|
@@ -640,31 +660,33 @@ $.fn.dropdown = function(parameters) {
|
|
640
660
|
.on('mouseup' + eventNamespace, module.event.mouseup)
|
641
661
|
.on('mousedown' + eventNamespace, selector.menu, module.event.menu.mousedown)
|
642
662
|
.on('mouseup' + eventNamespace, selector.menu, module.event.menu.mouseup)
|
643
|
-
.on(
|
644
|
-
.on(
|
663
|
+
.on('click' + eventNamespace, selector.icon, module.event.icon.click)
|
664
|
+
.on('click' + eventNamespace, selector.clearIcon, module.event.clearIcon.click)
|
645
665
|
.on('focus' + eventNamespace, selector.search, module.event.search.focus)
|
646
|
-
.on(
|
666
|
+
.on('click' + eventNamespace, selector.search, module.event.search.focus)
|
647
667
|
.on('blur' + eventNamespace, selector.search, module.event.search.blur)
|
648
|
-
.on(
|
668
|
+
.on('click' + eventNamespace, selector.text, module.event.text.focus)
|
649
669
|
;
|
650
670
|
if(module.is.multiple()) {
|
651
671
|
$module
|
652
|
-
.on(
|
653
|
-
.on(
|
672
|
+
.on('click' + eventNamespace, module.event.click)
|
673
|
+
.on('click' + eventNamespace, module.event.search.focus)
|
654
674
|
;
|
655
675
|
}
|
656
676
|
}
|
657
677
|
else {
|
658
678
|
if(settings.on == 'click') {
|
659
679
|
$module
|
660
|
-
.on(
|
661
|
-
.on(
|
680
|
+
.on('click' + eventNamespace, selector.icon, module.event.icon.click)
|
681
|
+
.on('click' + eventNamespace, module.event.test.toggle)
|
662
682
|
;
|
663
683
|
}
|
664
684
|
else if(settings.on == 'hover') {
|
665
685
|
$module
|
666
686
|
.on('mouseenter' + eventNamespace, module.delay.show)
|
667
687
|
.on('mouseleave' + eventNamespace, module.delay.hide)
|
688
|
+
.on('touchstart' + eventNamespace, module.event.test.toggle)
|
689
|
+
.on('touchstart' + eventNamespace, selector.icon, module.event.icon.click)
|
668
690
|
;
|
669
691
|
}
|
670
692
|
else {
|
@@ -676,7 +698,7 @@ $.fn.dropdown = function(parameters) {
|
|
676
698
|
.on('mousedown' + eventNamespace, module.event.mousedown)
|
677
699
|
.on('mouseup' + eventNamespace, module.event.mouseup)
|
678
700
|
.on('focus' + eventNamespace, module.event.focus)
|
679
|
-
.on(
|
701
|
+
.on('click' + eventNamespace, selector.clearIcon, module.event.clearIcon.click)
|
680
702
|
;
|
681
703
|
if(module.has.menuSearch() ) {
|
682
704
|
$module
|
@@ -690,21 +712,16 @@ $.fn.dropdown = function(parameters) {
|
|
690
712
|
}
|
691
713
|
}
|
692
714
|
$menu
|
693
|
-
.on(
|
715
|
+
.on('mouseenter' + eventNamespace, selector.item, module.event.item.mouseenter)
|
716
|
+
.on('touchstart' + eventNamespace, selector.item, module.event.item.mouseenter)
|
694
717
|
.on('mouseleave' + eventNamespace, selector.item, module.event.item.mouseleave)
|
695
718
|
.on('click' + eventNamespace, selector.item, module.event.item.click)
|
696
719
|
;
|
697
720
|
},
|
698
721
|
intent: function() {
|
699
722
|
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
723
|
$document
|
707
|
-
.on(
|
724
|
+
.on('click' + elementNamespace, module.event.test.hide)
|
708
725
|
;
|
709
726
|
}
|
710
727
|
},
|
@@ -712,14 +729,8 @@ $.fn.dropdown = function(parameters) {
|
|
712
729
|
unbind: {
|
713
730
|
intent: function() {
|
714
731
|
module.verbose('Removing hide intent event from document');
|
715
|
-
if(hasTouch) {
|
716
|
-
$document
|
717
|
-
.off('touchstart' + elementNamespace)
|
718
|
-
.off('touchmove' + elementNamespace)
|
719
|
-
;
|
720
|
-
}
|
721
732
|
$document
|
722
|
-
.off(
|
733
|
+
.off('click' + elementNamespace)
|
723
734
|
;
|
724
735
|
}
|
725
736
|
},
|
@@ -812,20 +823,28 @@ $.fn.dropdown = function(parameters) {
|
|
812
823
|
throttle : settings.throttle,
|
813
824
|
urlData : {
|
814
825
|
query: query
|
815
|
-
}
|
816
|
-
|
826
|
+
}
|
827
|
+
},
|
828
|
+
apiCallbacks = {
|
829
|
+
onError: function(errorMessage, $module, xhr) {
|
817
830
|
module.add.message(message.serverError);
|
818
831
|
iconClicked = false;
|
819
832
|
focused = false;
|
820
833
|
callback.apply(null, callbackParameters);
|
834
|
+
if(typeof settings.apiSettings.onError === 'function') {
|
835
|
+
settings.apiSettings.onError.call(this, errorMessage, $module, xhr);
|
836
|
+
}
|
821
837
|
},
|
822
|
-
onFailure: function() {
|
838
|
+
onFailure: function(response, $module, xhr) {
|
823
839
|
module.add.message(message.serverError);
|
824
840
|
iconClicked = false;
|
825
841
|
focused = false;
|
826
842
|
callback.apply(null, callbackParameters);
|
843
|
+
if(typeof settings.apiSettings.onFailure === 'function') {
|
844
|
+
settings.apiSettings.onFailure.call(this, response, $module, xhr);
|
845
|
+
}
|
827
846
|
},
|
828
|
-
onSuccess : function(response) {
|
847
|
+
onSuccess : function(response, $module, xhr) {
|
829
848
|
var
|
830
849
|
values = response[fields.remoteValues]
|
831
850
|
;
|
@@ -844,19 +863,22 @@ $.fn.dropdown = function(parameters) {
|
|
844
863
|
var value = module.is.multiple() ? module.get.values() : module.get.value();
|
845
864
|
if (value !== '') {
|
846
865
|
module.verbose('Value(s) present after click icon, select value(s) in items');
|
847
|
-
module.set.selected(value, null,
|
866
|
+
module.set.selected(value, null, true, true);
|
848
867
|
}
|
849
868
|
}
|
850
869
|
iconClicked = false;
|
851
870
|
focused = false;
|
852
871
|
callback.apply(null, callbackParameters);
|
872
|
+
if(typeof settings.apiSettings.onSuccess === 'function') {
|
873
|
+
settings.apiSettings.onSuccess.call(this, response, $module, xhr);
|
874
|
+
}
|
853
875
|
}
|
854
876
|
}
|
855
877
|
;
|
856
878
|
if( !$module.api('get request') ) {
|
857
879
|
module.setup.api();
|
858
880
|
}
|
859
|
-
apiSettings = $.extend(true, {}, apiSettings, settings.apiSettings);
|
881
|
+
apiSettings = $.extend(true, {}, apiSettings, settings.apiSettings, apiCallbacks);
|
860
882
|
$module
|
861
883
|
.api('setting', apiSettings)
|
862
884
|
.api('query')
|
@@ -1044,7 +1066,7 @@ $.fn.dropdown = function(parameters) {
|
|
1044
1066
|
menuConfig[fields.values] = values;
|
1045
1067
|
module.setup.menu(menuConfig);
|
1046
1068
|
$.each(values, function(index, item) {
|
1047
|
-
if(item.selected
|
1069
|
+
if(item.selected === true) {
|
1048
1070
|
module.debug('Setting initial selection to', item[fields.value]);
|
1049
1071
|
module.set.selected(item[fields.value]);
|
1050
1072
|
if(!module.is.multiple()) {
|
@@ -1065,7 +1087,7 @@ $.fn.dropdown = function(parameters) {
|
|
1065
1087
|
settings.preserveHTML
|
1066
1088
|
)
|
1067
1089
|
;
|
1068
|
-
$input.append('<option value="' + value + '">' + name + '</option>');
|
1090
|
+
$input.append('<option value="' + value + '"' + (item.selected === true ? ' selected' : '') + '>' + name + '</option>');
|
1069
1091
|
});
|
1070
1092
|
module.observe.select();
|
1071
1093
|
}
|
@@ -1073,6 +1095,15 @@ $.fn.dropdown = function(parameters) {
|
|
1073
1095
|
},
|
1074
1096
|
|
1075
1097
|
event: {
|
1098
|
+
paste: function(event) {
|
1099
|
+
var pasteValue = (event.originalEvent.clipboardData || window.clipboardData).getData('text'),
|
1100
|
+
tokens = pasteValue.split(settings.delimiter)
|
1101
|
+
;
|
1102
|
+
tokens.forEach(function(value){
|
1103
|
+
module.set.selected(module.escape.htmlEntities(value.trim()), null, true, true);
|
1104
|
+
});
|
1105
|
+
event.preventDefault();
|
1106
|
+
},
|
1076
1107
|
change: function() {
|
1077
1108
|
if(!internalChange) {
|
1078
1109
|
module.debug('Input changed, updating selection');
|
@@ -1131,7 +1162,7 @@ $.fn.dropdown = function(parameters) {
|
|
1131
1162
|
if(module.is.multiple()) {
|
1132
1163
|
module.remove.activeLabel();
|
1133
1164
|
}
|
1134
|
-
if(!focused && !module.is.active() && (settings.showOnFocus || (event.type !== 'focus' && event.type !== 'focusin'))) {
|
1165
|
+
if(!focused && !module.is.active() && (settings.showOnFocus || (event.type !== 'focus' && event.type !== 'focusin')) && event.type !== 'touchstart') {
|
1135
1166
|
focused = true;
|
1136
1167
|
module.search();
|
1137
1168
|
}
|
@@ -1249,23 +1280,12 @@ $.fn.dropdown = function(parameters) {
|
|
1249
1280
|
if (!module.is.multiple() || (module.is.multiple() && !module.is.active())) {
|
1250
1281
|
focused = true;
|
1251
1282
|
}
|
1252
|
-
if( module.determine.eventOnElement(event, toggleBehavior) ) {
|
1283
|
+
if( module.determine.eventOnElement(event, toggleBehavior) && event.type !== 'touchstart') {
|
1284
|
+
// do not preventDefault of touchstart; so emulated mouseenter is triggered on first touch and not later
|
1285
|
+
// (when selecting an item). The double-showing of the dropdown through both events does not hurt.
|
1253
1286
|
event.preventDefault();
|
1254
1287
|
}
|
1255
1288
|
},
|
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
1289
|
hide: function(event) {
|
1270
1290
|
if(module.determine.eventInModule(event, module.hide)){
|
1271
1291
|
if(element.id && $(event.target).attr('for') === element.id){
|
@@ -1285,8 +1305,8 @@ $.fn.dropdown = function(parameters) {
|
|
1285
1305
|
},
|
1286
1306
|
select: {
|
1287
1307
|
mutation: function(mutations) {
|
1288
|
-
module.debug('<select> modified, recreating menu');
|
1289
1308
|
if(module.is.selectMutation(mutations)) {
|
1309
|
+
module.debug('<select> modified, recreating menu');
|
1290
1310
|
module.disconnect.selectObserver();
|
1291
1311
|
module.refresh();
|
1292
1312
|
module.setup.select();
|
@@ -1349,13 +1369,15 @@ $.fn.dropdown = function(parameters) {
|
|
1349
1369
|
},
|
1350
1370
|
mouseleave: function(event) {
|
1351
1371
|
var
|
1352
|
-
$subMenu = $(this).
|
1372
|
+
$subMenu = $(this).find(selector.menu)
|
1353
1373
|
;
|
1354
1374
|
if($subMenu.length > 0) {
|
1355
1375
|
clearTimeout(module.itemTimer);
|
1356
1376
|
module.itemTimer = setTimeout(function() {
|
1357
1377
|
module.verbose('Hiding sub-menu', $subMenu);
|
1358
|
-
|
1378
|
+
$subMenu.each(function() {
|
1379
|
+
module.animate.hide(false, $(this));
|
1380
|
+
});
|
1359
1381
|
}, settings.delay.hide);
|
1360
1382
|
}
|
1361
1383
|
},
|
@@ -1381,7 +1403,7 @@ $.fn.dropdown = function(parameters) {
|
|
1381
1403
|
module.remove.userAddition();
|
1382
1404
|
}
|
1383
1405
|
module.remove.searchTerm();
|
1384
|
-
if(!module.is.focusedOnSearch() &&
|
1406
|
+
if(!module.is.focusedOnSearch() && skipRefocus !== true) {
|
1385
1407
|
module.focusSearch(true);
|
1386
1408
|
}
|
1387
1409
|
}
|
@@ -1513,7 +1535,7 @@ $.fn.dropdown = function(parameters) {
|
|
1513
1535
|
keydown: function(event) {
|
1514
1536
|
var
|
1515
1537
|
pressedKey = event.which,
|
1516
|
-
isShortcutKey = module.is.inObject(pressedKey, keys)
|
1538
|
+
isShortcutKey = module.is.inObject(pressedKey, keys) || event.key === settings.delimiter
|
1517
1539
|
;
|
1518
1540
|
if(isShortcutKey) {
|
1519
1541
|
var
|
@@ -1531,7 +1553,7 @@ $.fn.dropdown = function(parameters) {
|
|
1531
1553
|
hasSubMenu = ($subMenu.length> 0),
|
1532
1554
|
hasSelectedItem = ($selectedItem.length > 0),
|
1533
1555
|
selectedIsSelectable = ($selectedItem.not(selector.unselectable).length > 0),
|
1534
|
-
delimiterPressed = (
|
1556
|
+
delimiterPressed = (event.key === settings.delimiter && module.is.multiple()),
|
1535
1557
|
isAdditionWithoutMenu = (settings.allowAdditions && settings.hideAdditions && (pressedKey == keys.enter || delimiterPressed) && selectedIsSelectable),
|
1536
1558
|
$nextItem,
|
1537
1559
|
isSubMenuItem,
|
@@ -1629,7 +1651,7 @@ $.fn.dropdown = function(parameters) {
|
|
1629
1651
|
.addClass(className.selected)
|
1630
1652
|
;
|
1631
1653
|
module.set.scrollPosition($nextItem);
|
1632
|
-
if(settings.selectOnKeydown && module.is.single()) {
|
1654
|
+
if(settings.selectOnKeydown && module.is.single() && !$nextItem.hasClass(className.actionable)) {
|
1633
1655
|
module.set.selectedItem($nextItem);
|
1634
1656
|
}
|
1635
1657
|
}
|
@@ -1656,7 +1678,7 @@ $.fn.dropdown = function(parameters) {
|
|
1656
1678
|
.addClass(className.selected)
|
1657
1679
|
;
|
1658
1680
|
module.set.scrollPosition($nextItem);
|
1659
|
-
if(settings.selectOnKeydown && module.is.single()) {
|
1681
|
+
if(settings.selectOnKeydown && module.is.single() && !$nextItem.hasClass(className.actionable)) {
|
1660
1682
|
module.set.selectedItem($nextItem);
|
1661
1683
|
}
|
1662
1684
|
}
|
@@ -1677,6 +1699,7 @@ $.fn.dropdown = function(parameters) {
|
|
1677
1699
|
if(pressedKey == keys.escape) {
|
1678
1700
|
module.verbose('Escape key pressed, closing dropdown');
|
1679
1701
|
module.hide();
|
1702
|
+
event.stopPropagation();
|
1680
1703
|
}
|
1681
1704
|
|
1682
1705
|
}
|
@@ -1787,7 +1810,7 @@ $.fn.dropdown = function(parameters) {
|
|
1787
1810
|
;
|
1788
1811
|
if( module.can.activate( $(element) ) ) {
|
1789
1812
|
module.set.selected(value, $(element));
|
1790
|
-
if(!module.is.multiple()) {
|
1813
|
+
if(!module.is.multiple() && !(!settings.collapseOnActionable && $(element).hasClass(className.actionable))) {
|
1791
1814
|
module.hideAndClear();
|
1792
1815
|
}
|
1793
1816
|
}
|
@@ -1800,7 +1823,7 @@ $.fn.dropdown = function(parameters) {
|
|
1800
1823
|
;
|
1801
1824
|
if( module.can.activate( $(element) ) ) {
|
1802
1825
|
module.set.value(value, text, $(element));
|
1803
|
-
if(!module.is.multiple()) {
|
1826
|
+
if(!module.is.multiple() && !(!settings.collapseOnActionable && $(element).hasClass(className.actionable))) {
|
1804
1827
|
module.hideAndClear();
|
1805
1828
|
}
|
1806
1829
|
}
|
@@ -1851,7 +1874,7 @@ $.fn.dropdown = function(parameters) {
|
|
1851
1874
|
;
|
1852
1875
|
$sizer.text(value);
|
1853
1876
|
// prevent rounding issues
|
1854
|
-
return Math.ceil( $sizer.width() + 1);
|
1877
|
+
return Math.ceil( $sizer.width() + (module.is.edge() ? 3 : 1));
|
1855
1878
|
},
|
1856
1879
|
selectionCount: function() {
|
1857
1880
|
var
|
@@ -1898,7 +1921,7 @@ $.fn.dropdown = function(parameters) {
|
|
1898
1921
|
},
|
1899
1922
|
caretPosition: function(returnEndPos) {
|
1900
1923
|
var
|
1901
|
-
input = $search
|
1924
|
+
input = $search[0],
|
1902
1925
|
range,
|
1903
1926
|
rangeLength
|
1904
1927
|
;
|
@@ -2320,7 +2343,7 @@ $.fn.dropdown = function(parameters) {
|
|
2320
2343
|
module.error(error.noStorage);
|
2321
2344
|
return;
|
2322
2345
|
}
|
2323
|
-
name = sessionStorage.getItem(value);
|
2346
|
+
name = sessionStorage.getItem(value + elementNamespace);
|
2324
2347
|
return (name !== undefined)
|
2325
2348
|
? name
|
2326
2349
|
: false
|
@@ -2364,7 +2387,7 @@ $.fn.dropdown = function(parameters) {
|
|
2364
2387
|
return;
|
2365
2388
|
}
|
2366
2389
|
module.verbose('Saving remote data to session storage', value, name);
|
2367
|
-
sessionStorage.setItem(value, name);
|
2390
|
+
sessionStorage.setItem(value + elementNamespace, name);
|
2368
2391
|
}
|
2369
2392
|
},
|
2370
2393
|
|
@@ -2424,7 +2447,7 @@ $.fn.dropdown = function(parameters) {
|
|
2424
2447
|
$nextSelectedItem
|
2425
2448
|
.addClass(className.selected)
|
2426
2449
|
;
|
2427
|
-
if(settings.selectOnKeydown && module.is.single()) {
|
2450
|
+
if(settings.selectOnKeydown && module.is.single() && !$nextItem.hasClass(className.actionable)) {
|
2428
2451
|
module.set.selectedItem($nextSelectedItem);
|
2429
2452
|
}
|
2430
2453
|
$menu
|
@@ -2510,7 +2533,7 @@ $.fn.dropdown = function(parameters) {
|
|
2510
2533
|
var
|
2511
2534
|
length = module.get.query().length
|
2512
2535
|
;
|
2513
|
-
$search.val( text.
|
2536
|
+
$search.val( text.slice(0, length));
|
2514
2537
|
},
|
2515
2538
|
scrollPosition: function($item, forceScroll) {
|
2516
2539
|
var
|
@@ -2627,13 +2650,13 @@ $.fn.dropdown = function(parameters) {
|
|
2627
2650
|
module.set.scrollPosition($nextValue);
|
2628
2651
|
$selectedItem.removeClass(className.selected);
|
2629
2652
|
$nextValue.addClass(className.selected);
|
2630
|
-
if(settings.selectOnKeydown && module.is.single()) {
|
2653
|
+
if(settings.selectOnKeydown && module.is.single() && !$nextItem.hasClass(className.actionable)) {
|
2631
2654
|
module.set.selectedItem($nextValue);
|
2632
2655
|
}
|
2633
2656
|
}
|
2634
2657
|
},
|
2635
2658
|
direction: function($menu) {
|
2636
|
-
if(settings.direction
|
2659
|
+
if(settings.direction === 'auto') {
|
2637
2660
|
// reset position, remove upward if it's base menu
|
2638
2661
|
if (!$menu) {
|
2639
2662
|
module.remove.upward();
|
@@ -2652,7 +2675,7 @@ $.fn.dropdown = function(parameters) {
|
|
2652
2675
|
module.set.leftward($menu);
|
2653
2676
|
}
|
2654
2677
|
}
|
2655
|
-
else if(settings.direction
|
2678
|
+
else if(settings.direction === 'upward') {
|
2656
2679
|
module.set.upward($menu);
|
2657
2680
|
}
|
2658
2681
|
},
|
@@ -2665,6 +2688,11 @@ $.fn.dropdown = function(parameters) {
|
|
2665
2688
|
$element.addClass(className.leftward);
|
2666
2689
|
},
|
2667
2690
|
value: function(value, text, $selected, preventChangeTrigger) {
|
2691
|
+
if(typeof text === 'boolean') {
|
2692
|
+
preventChangeTrigger = text;
|
2693
|
+
$selected = undefined;
|
2694
|
+
text = undefined;
|
2695
|
+
}
|
2668
2696
|
if(value !== undefined && value !== '' && !(Array.isArray(value) && value.length === 0)) {
|
2669
2697
|
$input.removeClass(className.noselection);
|
2670
2698
|
} else {
|
@@ -2728,12 +2756,21 @@ $.fn.dropdown = function(parameters) {
|
|
2728
2756
|
visible: function() {
|
2729
2757
|
$module.addClass(className.visible);
|
2730
2758
|
},
|
2731
|
-
exactly: function(value, $selectedItem) {
|
2759
|
+
exactly: function(value, $selectedItem, preventChangeTrigger) {
|
2760
|
+
if(typeof $selectedItem === 'boolean') {
|
2761
|
+
preventChangeTrigger = $selectedItem;
|
2762
|
+
$selectedItem = undefined;
|
2763
|
+
}
|
2732
2764
|
module.debug('Setting selected to exact values');
|
2733
2765
|
module.clear();
|
2734
|
-
module.set.selected(value, $selectedItem);
|
2766
|
+
module.set.selected(value, $selectedItem, preventChangeTrigger);
|
2735
2767
|
},
|
2736
2768
|
selected: function(value, $selectedItem, preventChangeTrigger, keepSearchTerm) {
|
2769
|
+
if(typeof $selectedItem === 'boolean') {
|
2770
|
+
keepSearchTerm = preventChangeTrigger;
|
2771
|
+
preventChangeTrigger = $selectedItem;
|
2772
|
+
$selectedItem = undefined;
|
2773
|
+
}
|
2737
2774
|
var
|
2738
2775
|
isMultiple = module.is.multiple()
|
2739
2776
|
;
|
@@ -2765,23 +2802,30 @@ $.fn.dropdown = function(parameters) {
|
|
2765
2802
|
|
2766
2803
|
isFiltered = $selected.hasClass(className.filtered),
|
2767
2804
|
isActive = $selected.hasClass(className.active),
|
2805
|
+
isActionable = $selected.hasClass(className.actionable),
|
2768
2806
|
isUserValue = $selected.hasClass(className.addition),
|
2769
|
-
shouldAnimate = (isMultiple && $selectedItem.length
|
2807
|
+
shouldAnimate = (isMultiple && $selectedItem && $selectedItem.length === 1)
|
2770
2808
|
;
|
2771
|
-
if(
|
2809
|
+
if(isActionable){
|
2810
|
+
if((!isMultiple || (!isActive || isUserValue)) && settings.apiSettings && settings.saveRemoteData) {
|
2811
|
+
module.save.remoteData(selectedText, selectedValue);
|
2812
|
+
}
|
2813
|
+
settings.onActionable.call(element, selectedValue, selectedText, $selected);
|
2814
|
+
}
|
2815
|
+
else if(isMultiple) {
|
2772
2816
|
if(!isActive || isUserValue) {
|
2773
2817
|
if(settings.apiSettings && settings.saveRemoteData) {
|
2774
2818
|
module.save.remoteData(selectedText, selectedValue);
|
2775
2819
|
}
|
2776
2820
|
if(settings.useLabels) {
|
2821
|
+
module.add.value(selectedValue, selectedText, $selected, preventChangeTrigger);
|
2777
2822
|
module.add.label(selectedValue, selectedText, shouldAnimate);
|
2778
|
-
module.add.value(selectedValue, selectedText, $selected);
|
2779
2823
|
module.set.activeItem($selected);
|
2780
2824
|
module.filterActive();
|
2781
2825
|
module.select.nextAvailable($selectedItem);
|
2782
2826
|
}
|
2783
2827
|
else {
|
2784
|
-
module.add.value(selectedValue, selectedText, $selected);
|
2828
|
+
module.add.value(selectedValue, selectedText, $selected, preventChangeTrigger);
|
2785
2829
|
module.set.text(module.add.variables(message.count));
|
2786
2830
|
module.set.activeItem($selected);
|
2787
2831
|
}
|
@@ -2795,7 +2839,7 @@ $.fn.dropdown = function(parameters) {
|
|
2795
2839
|
if(settings.apiSettings && settings.saveRemoteData) {
|
2796
2840
|
module.save.remoteData(selectedText, selectedValue);
|
2797
2841
|
}
|
2798
|
-
if (!keepSearchTerm) {
|
2842
|
+
if (!keepSearchTerm && !$selected.hasClass(className.actionable)) {
|
2799
2843
|
module.set.text(selectedText);
|
2800
2844
|
}
|
2801
2845
|
module.set.value(selectedValue, selectedText, $selected, preventChangeTrigger);
|
@@ -2847,6 +2891,7 @@ $.fn.dropdown = function(parameters) {
|
|
2847
2891
|
animation : settings.label.transition,
|
2848
2892
|
debug : settings.debug,
|
2849
2893
|
verbose : settings.verbose,
|
2894
|
+
silent : settings.silent,
|
2850
2895
|
duration : settings.label.duration
|
2851
2896
|
})
|
2852
2897
|
;
|
@@ -2894,7 +2939,7 @@ $.fn.dropdown = function(parameters) {
|
|
2894
2939
|
$('<option/>')
|
2895
2940
|
.prop('value', escapedValue)
|
2896
2941
|
.addClass(className.addition)
|
2897
|
-
.
|
2942
|
+
.text(value)
|
2898
2943
|
.appendTo($input)
|
2899
2944
|
;
|
2900
2945
|
module.verbose('Adding user addition as an <option>', value);
|
@@ -2970,7 +3015,12 @@ $.fn.dropdown = function(parameters) {
|
|
2970
3015
|
}
|
2971
3016
|
return message;
|
2972
3017
|
},
|
2973
|
-
value: function(addedValue, addedText, $selectedItem) {
|
3018
|
+
value: function(addedValue, addedText, $selectedItem, preventChangeTrigger) {
|
3019
|
+
if(typeof addedText === 'boolean') {
|
3020
|
+
preventChangeTrigger = addedText;
|
3021
|
+
$selectedItem = undefined;
|
3022
|
+
addedText = undefined;
|
3023
|
+
}
|
2974
3024
|
var
|
2975
3025
|
currentValue = module.get.values(true),
|
2976
3026
|
newValue
|
@@ -2985,7 +3035,7 @@ $.fn.dropdown = function(parameters) {
|
|
2985
3035
|
}
|
2986
3036
|
// extend current array
|
2987
3037
|
if(Array.isArray(currentValue)) {
|
2988
|
-
newValue = currentValue.concat([addedValue]);
|
3038
|
+
newValue = $selectedItem && $selectedItem.hasClass(className.actionable) ? currentValue : currentValue.concat([addedValue]);
|
2989
3039
|
newValue = module.get.uniqueArray(newValue);
|
2990
3040
|
}
|
2991
3041
|
else {
|
@@ -3009,7 +3059,7 @@ $.fn.dropdown = function(parameters) {
|
|
3009
3059
|
else {
|
3010
3060
|
settings.onAdd.call(element, addedValue, addedText, $selectedItem);
|
3011
3061
|
}
|
3012
|
-
module.set.value(newValue, addedText, $selectedItem);
|
3062
|
+
module.set.value(newValue, addedText, $selectedItem, preventChangeTrigger);
|
3013
3063
|
module.check.maxSelections();
|
3014
3064
|
},
|
3015
3065
|
},
|
@@ -3069,18 +3119,10 @@ $.fn.dropdown = function(parameters) {
|
|
3069
3119
|
return;
|
3070
3120
|
}
|
3071
3121
|
// temporarily disconnect observer
|
3072
|
-
|
3073
|
-
selectObserver.disconnect();
|
3074
|
-
module.verbose('Temporarily disconnecting mutation observer');
|
3075
|
-
}
|
3122
|
+
module.disconnect.selectObserver();
|
3076
3123
|
$option.remove();
|
3077
3124
|
module.verbose('Removing user addition as an <option>', escapedValue);
|
3078
|
-
|
3079
|
-
selectObserver.observe($input[0], {
|
3080
|
-
childList : true,
|
3081
|
-
subtree : true
|
3082
|
-
});
|
3083
|
-
}
|
3125
|
+
module.observe.select();
|
3084
3126
|
},
|
3085
3127
|
message: function() {
|
3086
3128
|
$menu.children(selector.message).remove();
|
@@ -3379,8 +3421,11 @@ $.fn.dropdown = function(parameters) {
|
|
3379
3421
|
bubbledIconClick: function(event) {
|
3380
3422
|
return $(event.target).closest($icon).length > 0;
|
3381
3423
|
},
|
3424
|
+
edge: function() {
|
3425
|
+
return !!window.chrome && !!window.StyleMedia;
|
3426
|
+
},
|
3382
3427
|
chrome: function() {
|
3383
|
-
return !!window.chrome &&
|
3428
|
+
return !!window.chrome && !window.StyleMedia;
|
3384
3429
|
},
|
3385
3430
|
alreadySetup: function() {
|
3386
3431
|
return ($module.is('select') && $module.parent(selector.dropdown).data(moduleNamespace) !== undefined && $module.prev().length === 0);
|
@@ -3445,7 +3490,7 @@ $.fn.dropdown = function(parameters) {
|
|
3445
3490
|
selectChanged = false
|
3446
3491
|
;
|
3447
3492
|
$.each(mutations, function(index, mutation) {
|
3448
|
-
if($(mutation.target).is('select') || $(mutation.addedNodes).is('select')) {
|
3493
|
+
if($(mutation.target).is('select, option, optgroup') || $(mutation.addedNodes).is('select')) {
|
3449
3494
|
selectChanged = true;
|
3450
3495
|
return false;
|
3451
3496
|
}
|
@@ -3476,7 +3521,7 @@ $.fn.dropdown = function(parameters) {
|
|
3476
3521
|
},
|
3477
3522
|
verticallyScrollableContext: function() {
|
3478
3523
|
var
|
3479
|
-
overflowY = ($context
|
3524
|
+
overflowY = ($context[0] !== window)
|
3480
3525
|
? $context.css('overflow-y')
|
3481
3526
|
: false
|
3482
3527
|
;
|
@@ -3484,7 +3529,7 @@ $.fn.dropdown = function(parameters) {
|
|
3484
3529
|
},
|
3485
3530
|
horizontallyScrollableContext: function() {
|
3486
3531
|
var
|
3487
|
-
overflowX = ($context
|
3532
|
+
overflowX = ($context[0] !== window)
|
3488
3533
|
? $context.css('overflow-X')
|
3489
3534
|
: false
|
3490
3535
|
;
|
@@ -3517,7 +3562,7 @@ $.fn.dropdown = function(parameters) {
|
|
3517
3562
|
;
|
3518
3563
|
calculations = {
|
3519
3564
|
context: {
|
3520
|
-
offset : ($context
|
3565
|
+
offset : ($context[0] === window)
|
3521
3566
|
? { top: 0, left: 0}
|
3522
3567
|
: $context.offset(),
|
3523
3568
|
scrollTop : $context.scrollTop(),
|
@@ -3565,7 +3610,7 @@ $.fn.dropdown = function(parameters) {
|
|
3565
3610
|
;
|
3566
3611
|
calculations = {
|
3567
3612
|
context: {
|
3568
|
-
offset : ($context
|
3613
|
+
offset : ($context[0] === window)
|
3569
3614
|
? { top: 0, left: 0}
|
3570
3615
|
: $context.offset(),
|
3571
3616
|
scrollLeft : $context.scrollLeft(),
|
@@ -3587,9 +3632,6 @@ $.fn.dropdown = function(parameters) {
|
|
3587
3632
|
$currentMenu.removeClass(className.loading);
|
3588
3633
|
return canOpenRightward;
|
3589
3634
|
},
|
3590
|
-
click: function() {
|
3591
|
-
return (hasTouch || settings.on == 'click');
|
3592
|
-
},
|
3593
3635
|
extendSelect: function() {
|
3594
3636
|
return settings.allowAdditions || settings.apiSettings;
|
3595
3637
|
},
|
@@ -3638,6 +3680,7 @@ $.fn.dropdown = function(parameters) {
|
|
3638
3680
|
animation : transition + ' in',
|
3639
3681
|
debug : settings.debug,
|
3640
3682
|
verbose : settings.verbose,
|
3683
|
+
silent : settings.silent,
|
3641
3684
|
duration : settings.transition.showDuration || settings.duration,
|
3642
3685
|
queue : true,
|
3643
3686
|
onStart : start,
|
@@ -3659,9 +3702,7 @@ $.fn.dropdown = function(parameters) {
|
|
3659
3702
|
start = ($subMenu)
|
3660
3703
|
? function() {}
|
3661
3704
|
: function() {
|
3662
|
-
|
3663
|
-
module.unbind.intent();
|
3664
|
-
}
|
3705
|
+
module.unbind.intent();
|
3665
3706
|
module.remove.active();
|
3666
3707
|
},
|
3667
3708
|
transition = settings.transition.hideMethod || module.get.transition($subMenu)
|
@@ -3687,6 +3728,7 @@ $.fn.dropdown = function(parameters) {
|
|
3687
3728
|
duration : settings.transition.hideDuration || settings.duration,
|
3688
3729
|
debug : settings.debug,
|
3689
3730
|
verbose : settings.verbose,
|
3731
|
+
silent : settings.silent,
|
3690
3732
|
queue : false,
|
3691
3733
|
onStart : start,
|
3692
3734
|
displayType: module.get.displayType(),
|
@@ -3990,7 +4032,7 @@ $.fn.dropdown.settings = {
|
|
3990
4032
|
keepOnScreen : true, // Whether dropdown should check whether it is on screen before showing
|
3991
4033
|
|
3992
4034
|
match : 'both', // what to match against with search selection (both, text, or label)
|
3993
|
-
fullTextSearch :
|
4035
|
+
fullTextSearch : 'exact', // search anywhere in value (set to 'exact' to require exact matches)
|
3994
4036
|
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
4037
|
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
4038
|
|
@@ -3998,7 +4040,7 @@ $.fn.dropdown.settings = {
|
|
3998
4040
|
preserveHTML : true, // preserve html when selecting value
|
3999
4041
|
sortSelect : false, // sort selection on init
|
4000
4042
|
|
4001
|
-
forceSelection :
|
4043
|
+
forceSelection : false, // force a choice on blur with search selection
|
4002
4044
|
|
4003
4045
|
allowAdditions : false, // whether multiple select should allow user added values
|
4004
4046
|
ignoreCase : false, // whether to consider case sensitivity when creating labels
|
@@ -4009,7 +4051,7 @@ $.fn.dropdown.settings = {
|
|
4009
4051
|
useLabels : true, // whether multiple select should filter currently active selections from choices
|
4010
4052
|
delimiter : ',', // when multiselect uses normal <input> the values will be delimited with this character
|
4011
4053
|
|
4012
|
-
showOnFocus :
|
4054
|
+
showOnFocus : false, // show menu on focus
|
4013
4055
|
allowReselection : false, // whether current value should trigger callbacks when reselected
|
4014
4056
|
allowTab : true, // add tabindex to element
|
4015
4057
|
allowCategorySelection : false, // allow elements with sub-menus to be selected
|
@@ -4024,6 +4066,8 @@ $.fn.dropdown.settings = {
|
|
4024
4066
|
|
4025
4067
|
headerDivider : true, // whether option headers should have an additional divider line underneath when converted from <select> <optgroup>
|
4026
4068
|
|
4069
|
+
collapseOnActionable : true, // whether the dropdown should collapse upon selection of an actionable item
|
4070
|
+
|
4027
4071
|
// label settings on multi-select
|
4028
4072
|
label: {
|
4029
4073
|
transition : 'scale',
|
@@ -4036,13 +4080,13 @@ $.fn.dropdown.settings = {
|
|
4036
4080
|
hide : 300,
|
4037
4081
|
show : 200,
|
4038
4082
|
search : 20,
|
4039
|
-
touch : 50
|
4040
4083
|
},
|
4041
4084
|
|
4042
4085
|
/* Callbacks */
|
4043
4086
|
onChange : function(value, text, $selected){},
|
4044
4087
|
onAdd : function(value, text, $selected){},
|
4045
4088
|
onRemove : function(value, text, $selected){},
|
4089
|
+
onActionable : function(value, text, $selected){},
|
4046
4090
|
onSearch : function(searchTerm){},
|
4047
4091
|
|
4048
4092
|
onLabelSelect : function($selectedLabels){},
|
@@ -4105,12 +4149,12 @@ $.fn.dropdown.settings = {
|
|
4105
4149
|
icon : 'icon', // optional icon name
|
4106
4150
|
iconClass : 'iconClass', // optional individual class for icon (for example to use flag instead)
|
4107
4151
|
class : 'class', // optional individual class for item/header
|
4108
|
-
divider : 'divider' // optional divider append for group headers
|
4152
|
+
divider : 'divider', // optional divider append for group headers
|
4153
|
+
actionable : 'actionable' // optional actionable item
|
4109
4154
|
},
|
4110
4155
|
|
4111
4156
|
keys : {
|
4112
4157
|
backspace : 8,
|
4113
|
-
delimiter : 188, // comma
|
4114
4158
|
deleteKey : 46,
|
4115
4159
|
enter : 13,
|
4116
4160
|
escape : 27,
|
@@ -4177,7 +4221,8 @@ $.fn.dropdown.settings = {
|
|
4177
4221
|
header : 'header',
|
4178
4222
|
divider : 'divider',
|
4179
4223
|
groupIcon : '',
|
4180
|
-
unfilterable : 'unfilterable'
|
4224
|
+
unfilterable : 'unfilterable',
|
4225
|
+
actionable : 'actionable'
|
4181
4226
|
}
|
4182
4227
|
|
4183
4228
|
};
|
@@ -4216,7 +4261,8 @@ $.fn.dropdown.settings.templates = {
|
|
4216
4261
|
var
|
4217
4262
|
placeholder = select.placeholder || false,
|
4218
4263
|
html = '',
|
4219
|
-
escape = $.fn.dropdown.settings.templates.escape
|
4264
|
+
escape = $.fn.dropdown.settings.templates.escape,
|
4265
|
+
deQuote = $.fn.dropdown.settings.templates.deQuote
|
4220
4266
|
;
|
4221
4267
|
html += '<i class="dropdown icon"></i>';
|
4222
4268
|
if(placeholder) {
|
@@ -4225,7 +4271,7 @@ $.fn.dropdown.settings.templates = {
|
|
4225
4271
|
else {
|
4226
4272
|
html += '<div class="text"></div>';
|
4227
4273
|
}
|
4228
|
-
html += '<div class="'+className.menu+'">';
|
4274
|
+
html += '<div class="'+deQuote(className.menu)+'">';
|
4229
4275
|
html += $.fn.dropdown.settings.templates.menu(select, fields, preserveHTML,className);
|
4230
4276
|
html += '</div>';
|
4231
4277
|
return html;
|
@@ -4252,6 +4298,9 @@ $.fn.dropdown.settings.templates = {
|
|
4252
4298
|
maybeText = (option[fields.text])
|
4253
4299
|
? ' data-text="' + deQuote(option[fields.text],true) + '"'
|
4254
4300
|
: '',
|
4301
|
+
maybeActionable = (option[fields.actionable])
|
4302
|
+
? className.actionable+' '
|
4303
|
+
: '',
|
4255
4304
|
maybeDisabled = (option[fields.disabled])
|
4256
4305
|
? className.disabled+' '
|
4257
4306
|
: '',
|
@@ -4260,27 +4309,27 @@ $.fn.dropdown.settings.templates = {
|
|
4260
4309
|
: '',
|
4261
4310
|
hasDescription = (escape(option[fields.description] || '', preserveHTML) != '')
|
4262
4311
|
;
|
4263
|
-
html += '<div class="'+ maybeDisabled + maybeDescriptionVertical + (option[fields.class] ?
|
4312
|
+
html += '<div class="'+ deQuote(maybeActionable + maybeDisabled + maybeDescriptionVertical + (option[fields.class] ? option[fields.class] : className.item))+'" data-value="' + deQuote(option[fields.value],true) + '"' + maybeText + '>';
|
4264
4313
|
if (isMenu) {
|
4265
4314
|
html += '<i class="'+ (itemType.indexOf('left') !== -1 ? 'left' : '') + ' dropdown icon"></i>';
|
4266
4315
|
}
|
4267
4316
|
if(option[fields.image]) {
|
4268
|
-
html += '<img class="'+(option[fields.imageClass] ?
|
4317
|
+
html += '<img class="'+deQuote(option[fields.imageClass] ? option[fields.imageClass] : className.image)+'" src="' + deQuote(option[fields.image]) + '">';
|
4269
4318
|
}
|
4270
4319
|
if(option[fields.icon]) {
|
4271
|
-
html += '<i class="'+deQuote(option[fields.icon]
|
4320
|
+
html += '<i class="'+deQuote(option[fields.icon]+' '+(option[fields.iconClass] ? option[fields.iconClass] : className.icon))+'"></i>';
|
4272
4321
|
}
|
4273
4322
|
if(hasDescription){
|
4274
|
-
html += '<span class="'+ className.description +'">'+ escape(option[fields.description] || '', preserveHTML) + '</span>';
|
4275
|
-
html += (!isMenu) ? '<span class="'+ className.text + '">' : '';
|
4323
|
+
html += '<span class="'+ deQuote(className.description) +'">'+ escape(option[fields.description] || '', preserveHTML) + '</span>';
|
4324
|
+
html += (!isMenu) ? '<span class="'+ deQuote(className.text) + '">' : '';
|
4276
4325
|
}
|
4277
4326
|
if (isMenu) {
|
4278
|
-
html += '<span class="' + className.text + '">';
|
4327
|
+
html += '<span class="' + deQuote(className.text) + '">';
|
4279
4328
|
}
|
4280
4329
|
html += escape(option[fields.name] || '', preserveHTML);
|
4281
4330
|
if (isMenu) {
|
4282
4331
|
html += '</span>';
|
4283
|
-
html += '<div class="' + itemType + '">';
|
4332
|
+
html += '<div class="' + deQuote(itemType) + '">';
|
4284
4333
|
html += $.fn.dropdown.settings.templates.menu(option, fields, preserveHTML, className);
|
4285
4334
|
html += '</div>';
|
4286
4335
|
} else if(hasDescription){
|
@@ -4289,18 +4338,18 @@ $.fn.dropdown.settings.templates = {
|
|
4289
4338
|
html += '</div>';
|
4290
4339
|
} else if (itemType === 'header') {
|
4291
4340
|
var groupName = escape(option[fields.name] || '', preserveHTML),
|
4292
|
-
groupIcon = option[fields.icon] ?
|
4341
|
+
groupIcon = deQuote(option[fields.icon] ? option[fields.icon] : className.groupIcon)
|
4293
4342
|
;
|
4294
4343
|
if(groupName !== '' || groupIcon !== '') {
|
4295
|
-
html += '<div class="' + (option[fields.class] ?
|
4344
|
+
html += '<div class="' + deQuote(option[fields.class] ? option[fields.class] : className.header) + '">';
|
4296
4345
|
if (groupIcon !== '') {
|
4297
|
-
html += '<i class="' + groupIcon + ' ' + (option[fields.iconClass] ?
|
4346
|
+
html += '<i class="' + deQuote(groupIcon + ' ' + (option[fields.iconClass] ? option[fields.iconClass] : className.icon)) + '"></i>';
|
4298
4347
|
}
|
4299
4348
|
html += groupName;
|
4300
4349
|
html += '</div>';
|
4301
4350
|
}
|
4302
4351
|
if(option[fields.divider]){
|
4303
|
-
html += '<div class="'+className.divider+'"></div>';
|
4352
|
+
html += '<div class="'+deQuote(className.divider)+'"></div>';
|
4304
4353
|
}
|
4305
4354
|
}
|
4306
4355
|
});
|
@@ -4310,8 +4359,10 @@ $.fn.dropdown.settings.templates = {
|
|
4310
4359
|
// generates label for multiselect
|
4311
4360
|
label: function(value, text, preserveHTML, className) {
|
4312
4361
|
var
|
4313
|
-
escape = $.fn.dropdown.settings.templates.escape
|
4314
|
-
|
4362
|
+
escape = $.fn.dropdown.settings.templates.escape,
|
4363
|
+
deQuote = $.fn.dropdown.settings.templates.deQuote
|
4364
|
+
;
|
4365
|
+
return escape(text,preserveHTML) + '<i class="'+deQuote(className.delete)+' icon"></i>';
|
4315
4366
|
},
|
4316
4367
|
|
4317
4368
|
|