fomantic-ui 2.9.0-beta.99 → 2.9.0
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 +86 -1
- 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/CHANGELOG.md +925 -650
- package/CONTRIBUTORS.md +16 -1
- package/FAQ.md +38 -38
- package/README.md +7 -7
- package/dist/components/accordion.css +136 -40
- package/dist/components/accordion.js +10 -4
- 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 +82 -25
- 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 +124 -77
- package/dist/components/button.min.css +2 -2
- package/dist/components/calendar.css +18 -1
- package/dist/components/calendar.js +92 -73
- package/dist/components/calendar.min.css +2 -2
- package/dist/components/calendar.min.js +3 -3
- package/dist/components/card.css +729 -99
- package/dist/components/card.min.css +2 -2
- package/dist/components/checkbox.css +92 -92
- package/dist/components/checkbox.js +4 -3
- package/dist/components/checkbox.min.css +2 -2
- package/dist/components/checkbox.min.js +3 -3
- package/dist/components/comment.css +2 -2
- 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 +7 -6
- package/dist/components/dimmer.js +19 -10
- 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 +74 -47
- package/dist/components/dropdown.js +237 -188
- 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 +14 -10
- package/dist/components/embed.min.css +2 -2
- package/dist/components/embed.min.js +3 -3
- package/dist/components/emoji.css +10797 -8839
- package/dist/components/emoji.min.css +1 -1
- package/dist/components/feed.css +2 -2
- package/dist/components/feed.min.css +2 -2
- package/dist/components/flag.css +563 -563
- package/dist/components/flag.min.css +2 -2
- package/dist/components/flyout.css +592 -0
- package/dist/components/flyout.js +1530 -0
- package/dist/components/flyout.min.css +9 -0
- package/dist/components/flyout.min.js +11 -0
- package/dist/components/form.css +67 -39
- package/dist/components/form.js +25 -21
- package/dist/components/form.min.css +2 -2
- package/dist/components/form.min.js +3 -3
- package/dist/components/grid.css +15 -14
- 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 +2105 -2061
- 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 +743 -21
- package/dist/components/input.min.css +2 -2
- package/dist/components/item.css +5 -5
- 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 +79 -71
- package/dist/components/menu.min.css +1 -1
- package/dist/components/message.css +3 -3
- package/dist/components/message.min.css +2 -2
- package/dist/components/modal.css +35 -6
- package/dist/components/modal.js +97 -57
- 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 +3 -3
- 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 +17 -23
- 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 +6 -3
- 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 +8 -4
- 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 +48 -21
- package/dist/components/search.min.css +2 -2
- package/dist/components/search.min.js +3 -3
- package/dist/components/segment.css +107 -29
- package/dist/components/segment.min.css +2 -2
- package/dist/components/shape.css +1 -1
- package/dist/components/shape.js +4 -4
- package/dist/components/shape.min.css +1 -1
- package/dist/components/shape.min.js +3 -3
- package/dist/components/sidebar.css +20 -8
- package/dist/components/sidebar.js +141 -44
- package/dist/components/sidebar.min.css +2 -2
- package/dist/components/sidebar.min.js +3 -3
- package/dist/components/site.css +79 -4
- package/dist/components/site.js +2 -2
- 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 +79 -64
- package/dist/components/slider.min.css +1 -1
- package/dist/components/slider.min.js +3 -3
- package/dist/components/state.js +3 -3
- 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 +30 -30
- package/dist/components/step.min.css +2 -2
- package/dist/components/sticky.css +1 -1
- package/dist/components/sticky.js +30 -19
- 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 +25 -7
- package/dist/components/tab.min.css +2 -2
- package/dist/components/tab.min.js +3 -3
- package/dist/components/table.css +1680 -270
- 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 +11 -1
- package/dist/components/toast.js +19 -12
- 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 +27 -22
- package/dist/components/transition.min.css +1 -1
- package/dist/components/transition.min.js +3 -3
- package/dist/components/visibility.js +5 -5
- package/dist/components/visibility.min.js +3 -3
- package/dist/semantic.css +41415 -34430
- package/dist/semantic.js +2597 -696
- 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.woff +0 -0
- package/dist/themes/default/assets/fonts/brand-icons.woff2 +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.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 +3 -3
- 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/sticky-context.html +197 -0
- package/examples/components/table.html +1 -1
- package/package.json +20 -18
- package/scripts/nightly-version.js +47 -38
- package/src/definitions/behaviors/api.js +81 -24
- package/src/definitions/behaviors/form.js +24 -20
- package/src/definitions/behaviors/state.js +2 -2
- package/src/definitions/behaviors/visibility.js +4 -4
- package/src/definitions/collections/form.less +43 -31
- package/src/definitions/collections/grid.less +11 -11
- package/src/definitions/collections/menu.less +62 -47
- package/src/definitions/collections/message.less +1 -1
- package/src/definitions/collections/table.less +636 -39
- package/src/definitions/elements/button.less +254 -125
- package/src/definitions/elements/container.less +129 -0
- package/src/definitions/elements/divider.less +24 -24
- package/src/definitions/elements/emoji.less +25 -2
- package/src/definitions/elements/flag.less +47 -1
- package/src/definitions/elements/header.less +4 -2
- package/src/definitions/elements/icon.less +91 -12
- package/src/definitions/elements/input.less +259 -27
- package/src/definitions/elements/label.less +42 -39
- package/src/definitions/elements/list.less +29 -30
- package/src/definitions/elements/loader.less +87 -87
- package/src/definitions/elements/placeholder.less +32 -32
- package/src/definitions/elements/segment.less +147 -34
- package/src/definitions/elements/step.less +25 -25
- package/src/definitions/globals/reset.less +2 -2
- package/src/definitions/globals/site.js +1 -1
- package/src/definitions/globals/site.less +14 -12
- package/src/definitions/modules/accordion.js +9 -3
- package/src/definitions/modules/accordion.less +371 -269
- package/src/definitions/modules/calendar.js +91 -72
- package/src/definitions/modules/calendar.less +20 -0
- package/src/definitions/modules/checkbox.js +3 -2
- package/src/definitions/modules/checkbox.less +53 -53
- package/src/definitions/modules/dimmer.js +18 -9
- package/src/definitions/modules/dimmer.less +11 -10
- package/src/definitions/modules/dropdown.js +236 -187
- package/src/definitions/modules/dropdown.less +110 -77
- package/src/definitions/modules/embed.js +13 -9
- package/src/definitions/modules/embed.less +4 -4
- package/src/definitions/modules/flyout.js +1530 -0
- package/src/definitions/modules/flyout.less +650 -0
- package/src/definitions/modules/modal.js +96 -56
- package/src/definitions/modules/modal.less +68 -33
- package/src/definitions/modules/nag.js +2 -2
- package/src/definitions/modules/popup.js +16 -22
- package/src/definitions/modules/popup.less +86 -90
- package/src/definitions/modules/progress.js +5 -2
- package/src/definitions/modules/rating.js +7 -3
- package/src/definitions/modules/search.js +47 -20
- package/src/definitions/modules/search.less +3 -3
- package/src/definitions/modules/shape.js +3 -3
- package/src/definitions/modules/sidebar.js +140 -43
- package/src/definitions/modules/sidebar.less +20 -5
- package/src/definitions/modules/slider.js +78 -63
- package/src/definitions/modules/slider.less +9 -9
- package/src/definitions/modules/sticky.js +29 -18
- package/src/definitions/modules/sticky.less +3 -1
- package/src/definitions/modules/tab.js +24 -6
- package/src/definitions/modules/tab.less +4 -4
- package/src/definitions/modules/toast.js +18 -11
- package/src/definitions/modules/toast.less +6 -0
- package/src/definitions/modules/transition.js +26 -21
- package/src/definitions/views/ad.less +3 -3
- package/src/definitions/views/card.less +124 -18
- package/src/definitions/views/comment.less +1 -1
- package/src/definitions/views/feed.less +1 -1
- package/src/definitions/views/item.less +3 -3
- package/src/definitions/views/statistic.less +1 -1
- package/src/semantic.less +1 -0
- package/src/theme.config.example +1 -0
- 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/icon.variables +16 -6
- 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.woff +0 -0
- package/src/themes/default/assets/fonts/brand-icons.woff2 +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.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/table.variables +52 -0
- package/src/themes/default/elements/button.variables +5 -0
- 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 +3563 -1
- package/src/themes/default/elements/flag.overrides +0 -1640
- package/src/themes/default/elements/flag.variables +1597 -1
- package/src/themes/default/elements/icon.overrides +1 -2043
- package/src/themes/default/elements/icon.variables +2045 -30
- 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 +4 -7
- package/src/themes/default/globals/site.variables +103 -8
- package/src/themes/default/globals/variation.variables +59 -0
- package/src/themes/default/modules/accordion.overrides +7 -9
- package/src/themes/default/modules/accordion.variables +34 -2
- package/src/themes/default/modules/calendar.variables +3 -0
- package/src/themes/default/modules/checkbox.overrides +10 -12
- package/src/themes/default/modules/checkbox.variables +5 -5
- package/src/themes/default/modules/dropdown.overrides +6 -9
- package/src/themes/default/modules/dropdown.variables +6 -9
- package/src/themes/default/modules/flyout.overrides +3 -0
- package/src/themes/default/modules/flyout.variables +100 -0
- package/src/themes/default/modules/modal.variables +16 -2
- package/src/themes/default/modules/popup.variables +0 -2
- package/src/themes/default/modules/sidebar.variables +4 -1
- 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 +496 -496
- package/src/themes/famfamfam/elements/flag.variables +8 -1
- package/src/themes/github/elements/icon.overrides +206 -206
- package/src/themes/github/elements/icon.variables +16 -1
- 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 +7 -10
- 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 +3562 -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/elements/icon.variables +17 -0
- 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 +3558 -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 +3 -3
- 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/release.js +1 -0
- package/tasks/config/admin/templates/composer.json +1 -1
- package/tasks/config/admin/templates/css-package.js +8 -12
- package/tasks/config/admin/templates/less-package.js +2 -2
- package/tasks/config/defaults.js +1 -0
- package/tasks/config/project/install.js +16 -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 +2 -2
- 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
- package/dist/themes/basic/assets/fonts/icons.eot +0 -0
- package/dist/themes/basic/assets/fonts/icons.svg +0 -450
- package/dist/themes/basic/assets/fonts/icons.ttf +0 -0
- package/dist/themes/default/assets/fonts/brand-icons.eot +0 -0
- package/dist/themes/default/assets/fonts/brand-icons.svg +0 -3570
- package/dist/themes/default/assets/fonts/brand-icons.ttf +0 -0
- package/dist/themes/default/assets/fonts/icons.eot +0 -0
- package/dist/themes/default/assets/fonts/icons.svg +0 -4938
- package/dist/themes/default/assets/fonts/icons.ttf +0 -0
- package/dist/themes/default/assets/fonts/outline-icons.eot +0 -0
- package/dist/themes/default/assets/fonts/outline-icons.svg +0 -803
- package/dist/themes/default/assets/fonts/outline-icons.ttf +0 -0
- package/dist/themes/github/assets/fonts/octicons-local.ttf +0 -0
- package/dist/themes/github/assets/fonts/octicons.svg +0 -200
- package/dist/themes/github/assets/fonts/octicons.ttf +0 -0
- package/dist/themes/material/assets/fonts/icons.eot +0 -0
- package/dist/themes/material/assets/fonts/icons.svg +0 -2373
- package/dist/themes/material/assets/fonts/icons.ttf +0 -0
- package/src/themes/basic/assets/fonts/icons.eot +0 -0
- package/src/themes/basic/assets/fonts/icons.svg +0 -450
- package/src/themes/basic/assets/fonts/icons.ttf +0 -0
- package/src/themes/default/assets/fonts/brand-icons.eot +0 -0
- package/src/themes/default/assets/fonts/brand-icons.svg +0 -3570
- package/src/themes/default/assets/fonts/brand-icons.ttf +0 -0
- package/src/themes/default/assets/fonts/icons.eot +0 -0
- package/src/themes/default/assets/fonts/icons.svg +0 -4938
- package/src/themes/default/assets/fonts/icons.ttf +0 -0
- package/src/themes/default/assets/fonts/outline-icons.eot +0 -0
- package/src/themes/default/assets/fonts/outline-icons.svg +0 -803
- package/src/themes/default/assets/fonts/outline-icons.ttf +0 -0
- package/src/themes/github/assets/fonts/octicons-local.ttf +0 -0
- package/src/themes/github/assets/fonts/octicons.svg +0 -200
- package/src/themes/github/assets/fonts/octicons.ttf +0 -0
- package/src/themes/material/assets/fonts/icons.eot +0 -0
- package/src/themes/material/assets/fonts/icons.svg +0 -2373
- package/src/themes/material/assets/fonts/icons.ttf +0 -0
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* # Fomantic-UI 2.9.0
|
2
|
+
* # Fomantic-UI 2.9.0 - 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();
|
@@ -225,7 +220,7 @@ $.fn.dropdown = function(parameters) {
|
|
225
220
|
|
226
221
|
create: {
|
227
222
|
id: function() {
|
228
|
-
id = (Math.random().toString(16) + '000000000').
|
223
|
+
id = (Math.random().toString(16) + '000000000').slice(2, 10);
|
229
224
|
elementNamespace = '.' + id;
|
230
225
|
module.verbose('Creating unique id for element', id);
|
231
226
|
},
|
@@ -233,7 +228,6 @@ $.fn.dropdown = function(parameters) {
|
|
233
228
|
var
|
234
229
|
$userChoices,
|
235
230
|
$userChoice,
|
236
|
-
isUserValue,
|
237
231
|
html
|
238
232
|
;
|
239
233
|
values = values || module.get.userValues();
|
@@ -371,11 +365,20 @@ $.fn.dropdown = function(parameters) {
|
|
371
365
|
}
|
372
366
|
if( module.is.search() && !module.has.search() ) {
|
373
367
|
module.verbose('Adding search input');
|
368
|
+
var
|
369
|
+
labelNode = $module.prev('label')
|
370
|
+
;
|
374
371
|
$search = $('<input />')
|
375
372
|
.addClass(className.search)
|
376
373
|
.prop('autocomplete', module.is.chrome() ? 'fomantic-search' : 'off')
|
377
|
-
.insertBefore($text)
|
378
374
|
;
|
375
|
+
if (labelNode.length) {
|
376
|
+
if (!labelNode.attr('id')) {
|
377
|
+
labelNode.attr('id', '_' + module.get.id() + '_formLabel');
|
378
|
+
}
|
379
|
+
$search.attr('aria-labelledby', labelNode.attr('id'));
|
380
|
+
}
|
381
|
+
$search.insertBefore($text);
|
379
382
|
}
|
380
383
|
if( module.is.multiple() && module.is.searchSelection() && !module.has.sizer()) {
|
381
384
|
module.create.sizer();
|
@@ -444,7 +447,7 @@ $.fn.dropdown = function(parameters) {
|
|
444
447
|
// replace module reference
|
445
448
|
$module = $module.parent(selector.dropdown);
|
446
449
|
instance = $module.data(moduleNamespace);
|
447
|
-
element = $module
|
450
|
+
element = $module[0];
|
448
451
|
module.refresh();
|
449
452
|
module.setup.returnedObject();
|
450
453
|
},
|
@@ -540,10 +543,9 @@ $.fn.dropdown = function(parameters) {
|
|
540
543
|
return true;
|
541
544
|
}
|
542
545
|
if(settings.onShow.call(element) !== false) {
|
546
|
+
module.remove.empty();
|
543
547
|
module.animate.show(function() {
|
544
|
-
|
545
|
-
module.bind.intent();
|
546
|
-
}
|
548
|
+
module.bind.intent();
|
547
549
|
if(module.has.search() && !preventFocus) {
|
548
550
|
module.focusSearch();
|
549
551
|
}
|
@@ -570,8 +572,17 @@ $.fn.dropdown = function(parameters) {
|
|
570
572
|
}
|
571
573
|
callback.call(element);
|
572
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
|
+
}
|
573
584
|
}
|
574
|
-
} else
|
585
|
+
} else {
|
575
586
|
module.unbind.intent();
|
576
587
|
}
|
577
588
|
iconClicked = false;
|
@@ -591,7 +602,7 @@ $.fn.dropdown = function(parameters) {
|
|
591
602
|
module.verbose('Hiding menu instantaneously');
|
592
603
|
module.remove.active();
|
593
604
|
module.remove.visible();
|
594
|
-
$menu.transition('hide');
|
605
|
+
$menu.transition('destroy').transition('hide');
|
595
606
|
},
|
596
607
|
|
597
608
|
hideSubMenus: function() {
|
@@ -629,13 +640,18 @@ $.fn.dropdown = function(parameters) {
|
|
629
640
|
$module
|
630
641
|
.on('change' + eventNamespace, selector.input, module.event.change)
|
631
642
|
;
|
643
|
+
if(module.is.multiple() && module.is.searchSelection()) {
|
644
|
+
$module
|
645
|
+
.on('paste' + eventNamespace, selector.search, module.event.paste)
|
646
|
+
;
|
647
|
+
}
|
632
648
|
},
|
633
649
|
mouseEvents: function() {
|
634
650
|
module.verbose('Binding mouse events');
|
635
651
|
if(module.is.multiple()) {
|
636
652
|
$module
|
637
|
-
.on(
|
638
|
-
.on(
|
653
|
+
.on('click' + eventNamespace, selector.label, module.event.label.click)
|
654
|
+
.on('click' + eventNamespace, selector.remove, module.event.remove.click)
|
639
655
|
;
|
640
656
|
}
|
641
657
|
if( module.is.searchSelection() ) {
|
@@ -644,31 +660,33 @@ $.fn.dropdown = function(parameters) {
|
|
644
660
|
.on('mouseup' + eventNamespace, module.event.mouseup)
|
645
661
|
.on('mousedown' + eventNamespace, selector.menu, module.event.menu.mousedown)
|
646
662
|
.on('mouseup' + eventNamespace, selector.menu, module.event.menu.mouseup)
|
647
|
-
.on(
|
648
|
-
.on(
|
663
|
+
.on('click' + eventNamespace, selector.icon, module.event.icon.click)
|
664
|
+
.on('click' + eventNamespace, selector.clearIcon, module.event.clearIcon.click)
|
649
665
|
.on('focus' + eventNamespace, selector.search, module.event.search.focus)
|
650
|
-
.on(
|
666
|
+
.on('click' + eventNamespace, selector.search, module.event.search.focus)
|
651
667
|
.on('blur' + eventNamespace, selector.search, module.event.search.blur)
|
652
|
-
.on(
|
668
|
+
.on('click' + eventNamespace, selector.text, module.event.text.focus)
|
653
669
|
;
|
654
670
|
if(module.is.multiple()) {
|
655
671
|
$module
|
656
|
-
.on(
|
657
|
-
.on(
|
672
|
+
.on('click' + eventNamespace, module.event.click)
|
673
|
+
.on('click' + eventNamespace, module.event.search.focus)
|
658
674
|
;
|
659
675
|
}
|
660
676
|
}
|
661
677
|
else {
|
662
678
|
if(settings.on == 'click') {
|
663
679
|
$module
|
664
|
-
.on(
|
665
|
-
.on(
|
680
|
+
.on('click' + eventNamespace, selector.icon, module.event.icon.click)
|
681
|
+
.on('click' + eventNamespace, module.event.test.toggle)
|
666
682
|
;
|
667
683
|
}
|
668
684
|
else if(settings.on == 'hover') {
|
669
685
|
$module
|
670
686
|
.on('mouseenter' + eventNamespace, module.delay.show)
|
671
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)
|
672
690
|
;
|
673
691
|
}
|
674
692
|
else {
|
@@ -680,7 +698,7 @@ $.fn.dropdown = function(parameters) {
|
|
680
698
|
.on('mousedown' + eventNamespace, module.event.mousedown)
|
681
699
|
.on('mouseup' + eventNamespace, module.event.mouseup)
|
682
700
|
.on('focus' + eventNamespace, module.event.focus)
|
683
|
-
.on(
|
701
|
+
.on('click' + eventNamespace, selector.clearIcon, module.event.clearIcon.click)
|
684
702
|
;
|
685
703
|
if(module.has.menuSearch() ) {
|
686
704
|
$module
|
@@ -694,21 +712,16 @@ $.fn.dropdown = function(parameters) {
|
|
694
712
|
}
|
695
713
|
}
|
696
714
|
$menu
|
697
|
-
.on(
|
715
|
+
.on('mouseenter' + eventNamespace, selector.item, module.event.item.mouseenter)
|
716
|
+
.on('touchstart' + eventNamespace, selector.item, module.event.item.mouseenter)
|
698
717
|
.on('mouseleave' + eventNamespace, selector.item, module.event.item.mouseleave)
|
699
718
|
.on('click' + eventNamespace, selector.item, module.event.item.click)
|
700
719
|
;
|
701
720
|
},
|
702
721
|
intent: function() {
|
703
722
|
module.verbose('Binding hide intent event to document');
|
704
|
-
if(hasTouch) {
|
705
|
-
$document
|
706
|
-
.on('touchstart' + elementNamespace, module.event.test.touch)
|
707
|
-
.on('touchmove' + elementNamespace, module.event.test.touch)
|
708
|
-
;
|
709
|
-
}
|
710
723
|
$document
|
711
|
-
.on(
|
724
|
+
.on('click' + elementNamespace, module.event.test.hide)
|
712
725
|
;
|
713
726
|
}
|
714
727
|
},
|
@@ -716,14 +729,8 @@ $.fn.dropdown = function(parameters) {
|
|
716
729
|
unbind: {
|
717
730
|
intent: function() {
|
718
731
|
module.verbose('Removing hide intent event from document');
|
719
|
-
if(hasTouch) {
|
720
|
-
$document
|
721
|
-
.off('touchstart' + elementNamespace)
|
722
|
-
.off('touchmove' + elementNamespace)
|
723
|
-
;
|
724
|
-
}
|
725
732
|
$document
|
726
|
-
.off(
|
733
|
+
.off('click' + elementNamespace)
|
727
734
|
;
|
728
735
|
}
|
729
736
|
},
|
@@ -756,6 +763,7 @@ $.fn.dropdown = function(parameters) {
|
|
756
763
|
}
|
757
764
|
else {
|
758
765
|
module.verbose('All items filtered, hiding dropdown', searchTerm);
|
766
|
+
module.set.empty();
|
759
767
|
module.hideMenu();
|
760
768
|
}
|
761
769
|
}
|
@@ -766,7 +774,7 @@ $.fn.dropdown = function(parameters) {
|
|
766
774
|
if(settings.allowAdditions) {
|
767
775
|
module.add.userSuggestion(module.escape.htmlEntities(query));
|
768
776
|
}
|
769
|
-
if(module.is.searchSelection() && module.can.show() && module.is.focusedOnSearch() ) {
|
777
|
+
if(module.is.searchSelection() && module.can.show() && module.is.focusedOnSearch() && !module.is.empty()) {
|
770
778
|
module.show();
|
771
779
|
}
|
772
780
|
}
|
@@ -816,20 +824,28 @@ $.fn.dropdown = function(parameters) {
|
|
816
824
|
throttle : settings.throttle,
|
817
825
|
urlData : {
|
818
826
|
query: query
|
819
|
-
}
|
820
|
-
|
827
|
+
}
|
828
|
+
},
|
829
|
+
apiCallbacks = {
|
830
|
+
onError: function(errorMessage, $module, xhr) {
|
821
831
|
module.add.message(message.serverError);
|
822
832
|
iconClicked = false;
|
823
833
|
focused = false;
|
824
834
|
callback.apply(null, callbackParameters);
|
835
|
+
if(typeof settings.apiSettings.onError === 'function') {
|
836
|
+
settings.apiSettings.onError.call(this, errorMessage, $module, xhr);
|
837
|
+
}
|
825
838
|
},
|
826
|
-
onFailure: function() {
|
839
|
+
onFailure: function(response, $module, xhr) {
|
827
840
|
module.add.message(message.serverError);
|
828
841
|
iconClicked = false;
|
829
842
|
focused = false;
|
830
843
|
callback.apply(null, callbackParameters);
|
844
|
+
if(typeof settings.apiSettings.onFailure === 'function') {
|
845
|
+
settings.apiSettings.onFailure.call(this, response, $module, xhr);
|
846
|
+
}
|
831
847
|
},
|
832
|
-
onSuccess : function(response) {
|
848
|
+
onSuccess : function(response, $module, xhr) {
|
833
849
|
var
|
834
850
|
values = response[fields.remoteValues]
|
835
851
|
;
|
@@ -848,19 +864,22 @@ $.fn.dropdown = function(parameters) {
|
|
848
864
|
var value = module.is.multiple() ? module.get.values() : module.get.value();
|
849
865
|
if (value !== '') {
|
850
866
|
module.verbose('Value(s) present after click icon, select value(s) in items');
|
851
|
-
module.set.selected(value, null,
|
867
|
+
module.set.selected(value, null, true, true);
|
852
868
|
}
|
853
869
|
}
|
854
870
|
iconClicked = false;
|
855
871
|
focused = false;
|
856
872
|
callback.apply(null, callbackParameters);
|
873
|
+
if(typeof settings.apiSettings.onSuccess === 'function') {
|
874
|
+
settings.apiSettings.onSuccess.call(this, response, $module, xhr);
|
875
|
+
}
|
857
876
|
}
|
858
877
|
}
|
859
878
|
;
|
860
879
|
if( !$module.api('get request') ) {
|
861
880
|
module.setup.api();
|
862
881
|
}
|
863
|
-
apiSettings = $.extend(true, {}, apiSettings, settings.apiSettings);
|
882
|
+
apiSettings = $.extend(true, {}, apiSettings, settings.apiSettings, apiCallbacks);
|
864
883
|
$module
|
865
884
|
.api('setting', apiSettings)
|
866
885
|
.api('query')
|
@@ -896,30 +915,18 @@ $.fn.dropdown = function(parameters) {
|
|
896
915
|
}
|
897
916
|
if(settings.match === 'both' || settings.match === 'text') {
|
898
917
|
text = module.remove.diacritics(String(module.get.choiceText($choice, false)));
|
899
|
-
if(text.search(beginsWithRegExp) !== -1
|
900
|
-
|
901
|
-
|
902
|
-
}
|
903
|
-
else if (settings.fullTextSearch === 'exact' && module.exactSearch(searchTerm, text)) {
|
904
|
-
results.push(this);
|
905
|
-
return true;
|
906
|
-
}
|
907
|
-
else if (settings.fullTextSearch === true && module.fuzzySearch(searchTerm, text)) {
|
918
|
+
if(text.search(beginsWithRegExp) !== -1 ||
|
919
|
+
(settings.fullTextSearch === 'exact' && module.exactSearch(searchTerm, text)) ||
|
920
|
+
(settings.fullTextSearch === true && module.fuzzySearch(searchTerm, text))) {
|
908
921
|
results.push(this);
|
909
922
|
return true;
|
910
923
|
}
|
911
924
|
}
|
912
925
|
if(settings.match === 'both' || settings.match === 'value') {
|
913
926
|
value = module.remove.diacritics(String(module.get.choiceValue($choice, text)));
|
914
|
-
if(value.search(beginsWithRegExp) !== -1
|
915
|
-
|
916
|
-
|
917
|
-
}
|
918
|
-
else if (settings.fullTextSearch === 'exact' && module.exactSearch(searchTerm, value)) {
|
919
|
-
results.push(this);
|
920
|
-
return true;
|
921
|
-
}
|
922
|
-
else if (settings.fullTextSearch === true && module.fuzzySearch(searchTerm, value)) {
|
927
|
+
if(value.search(beginsWithRegExp) !== -1 ||
|
928
|
+
(settings.fullTextSearch === 'exact' && module.exactSearch(searchTerm, value)) ||
|
929
|
+
(settings.fullTextSearch === true && module.fuzzySearch(searchTerm, value))) {
|
923
930
|
results.push(this);
|
924
931
|
return true;
|
925
932
|
}
|
@@ -1048,7 +1055,7 @@ $.fn.dropdown = function(parameters) {
|
|
1048
1055
|
menuConfig[fields.values] = values;
|
1049
1056
|
module.setup.menu(menuConfig);
|
1050
1057
|
$.each(values, function(index, item) {
|
1051
|
-
if(item.selected
|
1058
|
+
if(item.selected === true) {
|
1052
1059
|
module.debug('Setting initial selection to', item[fields.value]);
|
1053
1060
|
module.set.selected(item[fields.value]);
|
1054
1061
|
if(!module.is.multiple()) {
|
@@ -1069,7 +1076,7 @@ $.fn.dropdown = function(parameters) {
|
|
1069
1076
|
settings.preserveHTML
|
1070
1077
|
)
|
1071
1078
|
;
|
1072
|
-
$input.append('<option value="' + value + '">' + name + '</option>');
|
1079
|
+
$input.append('<option value="' + value + '"' + (item.selected === true ? ' selected' : '') + '>' + name + '</option>');
|
1073
1080
|
});
|
1074
1081
|
module.observe.select();
|
1075
1082
|
}
|
@@ -1077,6 +1084,15 @@ $.fn.dropdown = function(parameters) {
|
|
1077
1084
|
},
|
1078
1085
|
|
1079
1086
|
event: {
|
1087
|
+
paste: function(event) {
|
1088
|
+
var pasteValue = (event.originalEvent.clipboardData || window.clipboardData).getData('text'),
|
1089
|
+
tokens = pasteValue.split(settings.delimiter)
|
1090
|
+
;
|
1091
|
+
tokens.forEach(function(value){
|
1092
|
+
module.set.selected(module.escape.htmlEntities(value.trim()), null, true, true);
|
1093
|
+
});
|
1094
|
+
event.preventDefault();
|
1095
|
+
},
|
1080
1096
|
change: function() {
|
1081
1097
|
if(!internalChange) {
|
1082
1098
|
module.debug('Input changed, updating selection');
|
@@ -1097,7 +1113,7 @@ $.fn.dropdown = function(parameters) {
|
|
1097
1113
|
}
|
1098
1114
|
},
|
1099
1115
|
mousedown: function() {
|
1100
|
-
if(module.is.searchSelection()) {
|
1116
|
+
if(module.is.searchSelection(true)) {
|
1101
1117
|
// prevent menu hiding on immediate re-focus
|
1102
1118
|
willRefocus = true;
|
1103
1119
|
}
|
@@ -1107,7 +1123,7 @@ $.fn.dropdown = function(parameters) {
|
|
1107
1123
|
}
|
1108
1124
|
},
|
1109
1125
|
mouseup: function() {
|
1110
|
-
if(module.is.searchSelection()) {
|
1126
|
+
if(module.is.searchSelection(true)) {
|
1111
1127
|
// prevent menu hiding on immediate re-focus
|
1112
1128
|
willRefocus = false;
|
1113
1129
|
}
|
@@ -1135,14 +1151,14 @@ $.fn.dropdown = function(parameters) {
|
|
1135
1151
|
if(module.is.multiple()) {
|
1136
1152
|
module.remove.activeLabel();
|
1137
1153
|
}
|
1138
|
-
if(!focused && !module.is.active() && (settings.showOnFocus || (event.type !== 'focus' && event.type !== 'focusin'))) {
|
1154
|
+
if(!focused && !module.is.active() && (settings.showOnFocus || (event.type !== 'focus' && event.type !== 'focusin')) && event.type !== 'touchstart') {
|
1139
1155
|
focused = true;
|
1140
1156
|
module.search();
|
1141
1157
|
}
|
1142
1158
|
},
|
1143
1159
|
blur: function(event) {
|
1144
1160
|
pageLostFocus = (document.activeElement === this);
|
1145
|
-
if(module.is.searchSelection() && !willRefocus) {
|
1161
|
+
if(module.is.searchSelection(true) && !willRefocus) {
|
1146
1162
|
if(!itemActivated && !pageLostFocus) {
|
1147
1163
|
if(settings.forceSelection) {
|
1148
1164
|
module.forceSelection();
|
@@ -1253,23 +1269,12 @@ $.fn.dropdown = function(parameters) {
|
|
1253
1269
|
if (!module.is.multiple() || (module.is.multiple() && !module.is.active())) {
|
1254
1270
|
focused = true;
|
1255
1271
|
}
|
1256
|
-
if( module.determine.eventOnElement(event, toggleBehavior) ) {
|
1272
|
+
if( module.determine.eventOnElement(event, toggleBehavior) && event.type !== 'touchstart') {
|
1273
|
+
// do not preventDefault of touchstart; so emulated mouseenter is triggered on first touch and not later
|
1274
|
+
// (when selecting an item). The double-showing of the dropdown through both events does not hurt.
|
1257
1275
|
event.preventDefault();
|
1258
1276
|
}
|
1259
1277
|
},
|
1260
|
-
touch: function(event) {
|
1261
|
-
module.determine.eventOnElement(event, function() {
|
1262
|
-
if(event.type == 'touchstart') {
|
1263
|
-
module.timer = setTimeout(function() {
|
1264
|
-
module.hide();
|
1265
|
-
}, settings.delay.touch);
|
1266
|
-
}
|
1267
|
-
else if(event.type == 'touchmove') {
|
1268
|
-
clearTimeout(module.timer);
|
1269
|
-
}
|
1270
|
-
});
|
1271
|
-
event.stopPropagation();
|
1272
|
-
},
|
1273
1278
|
hide: function(event) {
|
1274
1279
|
if(module.determine.eventInModule(event, module.hide)){
|
1275
1280
|
if(element.id && $(event.target).attr('for') === element.id){
|
@@ -1353,13 +1358,15 @@ $.fn.dropdown = function(parameters) {
|
|
1353
1358
|
},
|
1354
1359
|
mouseleave: function(event) {
|
1355
1360
|
var
|
1356
|
-
$subMenu = $(this).
|
1361
|
+
$subMenu = $(this).find(selector.menu)
|
1357
1362
|
;
|
1358
1363
|
if($subMenu.length > 0) {
|
1359
1364
|
clearTimeout(module.itemTimer);
|
1360
1365
|
module.itemTimer = setTimeout(function() {
|
1361
1366
|
module.verbose('Hiding sub-menu', $subMenu);
|
1362
|
-
|
1367
|
+
$subMenu.each(function() {
|
1368
|
+
module.animate.hide(false, $(this));
|
1369
|
+
});
|
1363
1370
|
}, settings.delay.hide);
|
1364
1371
|
}
|
1365
1372
|
},
|
@@ -1384,8 +1391,12 @@ $.fn.dropdown = function(parameters) {
|
|
1384
1391
|
if(settings.allowAdditions) {
|
1385
1392
|
module.remove.userAddition();
|
1386
1393
|
}
|
1394
|
+
module.remove.filteredItem();
|
1395
|
+
if(!module.is.visible()) {
|
1396
|
+
module.show();
|
1397
|
+
}
|
1387
1398
|
module.remove.searchTerm();
|
1388
|
-
if(!module.is.focusedOnSearch() &&
|
1399
|
+
if(!module.is.focusedOnSearch() && skipRefocus !== true) {
|
1389
1400
|
module.focusSearch(true);
|
1390
1401
|
}
|
1391
1402
|
}
|
@@ -1420,8 +1431,7 @@ $.fn.dropdown = function(parameters) {
|
|
1420
1431
|
isFocusedOnSearch = module.is.focusedOnSearch(),
|
1421
1432
|
isFocused = module.is.focused(),
|
1422
1433
|
caretAtStart = (isFocusedOnSearch && module.get.caretPosition(false) === 0),
|
1423
|
-
isSelectedSearch = (caretAtStart && module.get.caretPosition(true) !== 0)
|
1424
|
-
$nextLabel
|
1434
|
+
isSelectedSearch = (caretAtStart && module.get.caretPosition(true) !== 0)
|
1425
1435
|
;
|
1426
1436
|
if(isSearch && !hasActiveLabel && !isFocusedOnSearch) {
|
1427
1437
|
return;
|
@@ -1499,12 +1509,18 @@ $.fn.dropdown = function(parameters) {
|
|
1499
1509
|
}
|
1500
1510
|
$activeLabel.last().next(selector.siblingLabel).addClass(className.active);
|
1501
1511
|
module.remove.activeLabels($activeLabel);
|
1512
|
+
if(!module.is.visible()){
|
1513
|
+
module.show();
|
1514
|
+
}
|
1502
1515
|
event.preventDefault();
|
1503
1516
|
}
|
1504
1517
|
else if(caretAtStart && !isSelectedSearch && !hasActiveLabel && pressedKey == keys.backspace) {
|
1505
1518
|
module.verbose('Removing last label on input backspace');
|
1506
1519
|
$activeLabel = $label.last().addClass(className.active);
|
1507
1520
|
module.remove.activeLabels($activeLabel);
|
1521
|
+
if(!module.is.visible()){
|
1522
|
+
module.show();
|
1523
|
+
}
|
1508
1524
|
}
|
1509
1525
|
}
|
1510
1526
|
else {
|
@@ -1517,7 +1533,7 @@ $.fn.dropdown = function(parameters) {
|
|
1517
1533
|
keydown: function(event) {
|
1518
1534
|
var
|
1519
1535
|
pressedKey = event.which,
|
1520
|
-
isShortcutKey = module.is.inObject(pressedKey, keys)
|
1536
|
+
isShortcutKey = module.is.inObject(pressedKey, keys) || event.key === settings.delimiter
|
1521
1537
|
;
|
1522
1538
|
if(isShortcutKey) {
|
1523
1539
|
var
|
@@ -1535,16 +1551,17 @@ $.fn.dropdown = function(parameters) {
|
|
1535
1551
|
hasSubMenu = ($subMenu.length> 0),
|
1536
1552
|
hasSelectedItem = ($selectedItem.length > 0),
|
1537
1553
|
selectedIsSelectable = ($selectedItem.not(selector.unselectable).length > 0),
|
1538
|
-
delimiterPressed = (
|
1539
|
-
isAdditionWithoutMenu =
|
1554
|
+
delimiterPressed = (event.key === settings.delimiter && module.is.multiple()),
|
1555
|
+
isAdditionWithoutMenu = settings.allowAdditions && (pressedKey == keys.enter || delimiterPressed),
|
1540
1556
|
$nextItem,
|
1541
|
-
isSubMenuItem
|
1542
|
-
newIndex
|
1557
|
+
isSubMenuItem
|
1543
1558
|
;
|
1544
1559
|
// allow selection with menu closed
|
1545
1560
|
if(isAdditionWithoutMenu) {
|
1546
|
-
|
1547
|
-
|
1561
|
+
if (selectedIsSelectable && settings.hideAdditions) {
|
1562
|
+
module.verbose('Selecting item from keyboard shortcut', $selectedItem);
|
1563
|
+
module.event.item.click.call($selectedItem, event);
|
1564
|
+
}
|
1548
1565
|
if(module.is.searchSelection()) {
|
1549
1566
|
module.remove.searchTerm();
|
1550
1567
|
}
|
@@ -1633,7 +1650,7 @@ $.fn.dropdown = function(parameters) {
|
|
1633
1650
|
.addClass(className.selected)
|
1634
1651
|
;
|
1635
1652
|
module.set.scrollPosition($nextItem);
|
1636
|
-
if(settings.selectOnKeydown && module.is.single()) {
|
1653
|
+
if(settings.selectOnKeydown && module.is.single() && !$nextItem.hasClass(className.actionable)) {
|
1637
1654
|
module.set.selectedItem($nextItem);
|
1638
1655
|
}
|
1639
1656
|
}
|
@@ -1643,7 +1660,7 @@ $.fn.dropdown = function(parameters) {
|
|
1643
1660
|
// down arrow (traverse menu down)
|
1644
1661
|
if(pressedKey == keys.downArrow) {
|
1645
1662
|
$nextItem = (hasSelectedItem && inVisibleMenu)
|
1646
|
-
? $
|
1663
|
+
? $selectedItem.nextAll(selector.item + ':not(' + selector.unselectable + ')').eq(0)
|
1647
1664
|
: $item.eq(0)
|
1648
1665
|
;
|
1649
1666
|
if($nextItem.length === 0) {
|
@@ -1660,7 +1677,7 @@ $.fn.dropdown = function(parameters) {
|
|
1660
1677
|
.addClass(className.selected)
|
1661
1678
|
;
|
1662
1679
|
module.set.scrollPosition($nextItem);
|
1663
|
-
if(settings.selectOnKeydown && module.is.single()) {
|
1680
|
+
if(settings.selectOnKeydown && module.is.single() && !$nextItem.hasClass(className.actionable)) {
|
1664
1681
|
module.set.selectedItem($nextItem);
|
1665
1682
|
}
|
1666
1683
|
}
|
@@ -1681,12 +1698,13 @@ $.fn.dropdown = function(parameters) {
|
|
1681
1698
|
if(pressedKey == keys.escape) {
|
1682
1699
|
module.verbose('Escape key pressed, closing dropdown');
|
1683
1700
|
module.hide();
|
1701
|
+
event.stopPropagation();
|
1684
1702
|
}
|
1685
1703
|
|
1686
1704
|
}
|
1687
1705
|
else {
|
1688
1706
|
// delimiter key
|
1689
|
-
if(delimiterPressed) {
|
1707
|
+
if(pressedKey == keys.enter || delimiterPressed) {
|
1690
1708
|
event.preventDefault();
|
1691
1709
|
}
|
1692
1710
|
// down arrow (open menu)
|
@@ -1791,7 +1809,7 @@ $.fn.dropdown = function(parameters) {
|
|
1791
1809
|
;
|
1792
1810
|
if( module.can.activate( $(element) ) ) {
|
1793
1811
|
module.set.selected(value, $(element));
|
1794
|
-
if(!module.is.multiple()) {
|
1812
|
+
if(!module.is.multiple() && !(!settings.collapseOnActionable && $(element).hasClass(className.actionable))) {
|
1795
1813
|
module.hideAndClear();
|
1796
1814
|
}
|
1797
1815
|
}
|
@@ -1804,7 +1822,7 @@ $.fn.dropdown = function(parameters) {
|
|
1804
1822
|
;
|
1805
1823
|
if( module.can.activate( $(element) ) ) {
|
1806
1824
|
module.set.value(value, text, $(element));
|
1807
|
-
if(!module.is.multiple()) {
|
1825
|
+
if(!module.is.multiple() && !(!settings.collapseOnActionable && $(element).hasClass(className.actionable))) {
|
1808
1826
|
module.hideAndClear();
|
1809
1827
|
}
|
1810
1828
|
}
|
@@ -1855,7 +1873,7 @@ $.fn.dropdown = function(parameters) {
|
|
1855
1873
|
;
|
1856
1874
|
$sizer.text(value);
|
1857
1875
|
// prevent rounding issues
|
1858
|
-
return Math.ceil( $sizer.width() + 1);
|
1876
|
+
return Math.ceil( $sizer.width() + (module.is.edge() ? 3 : 1));
|
1859
1877
|
},
|
1860
1878
|
selectionCount: function() {
|
1861
1879
|
var
|
@@ -1882,7 +1900,7 @@ $.fn.dropdown = function(parameters) {
|
|
1882
1900
|
},
|
1883
1901
|
userValues: function() {
|
1884
1902
|
var
|
1885
|
-
values = module.get.values()
|
1903
|
+
values = module.get.values(true)
|
1886
1904
|
;
|
1887
1905
|
if(!values) {
|
1888
1906
|
return false;
|
@@ -1902,7 +1920,7 @@ $.fn.dropdown = function(parameters) {
|
|
1902
1920
|
},
|
1903
1921
|
caretPosition: function(returnEndPos) {
|
1904
1922
|
var
|
1905
|
-
input = $search
|
1923
|
+
input = $search[0],
|
1906
1924
|
range,
|
1907
1925
|
rangeLength
|
1908
1926
|
;
|
@@ -2397,7 +2415,6 @@ $.fn.dropdown = function(parameters) {
|
|
2397
2415
|
currentScroll = $menu.scrollTop(),
|
2398
2416
|
itemHeight = $item.eq(0).outerHeight(),
|
2399
2417
|
itemsPerPage = Math.floor(menuHeight / itemHeight),
|
2400
|
-
maxScroll = $menu.prop('scrollHeight'),
|
2401
2418
|
newScroll = (direction == 'up')
|
2402
2419
|
? currentScroll - (itemHeight * itemsPerPage)
|
2403
2420
|
: currentScroll + (itemHeight * itemsPerPage),
|
@@ -2428,7 +2445,7 @@ $.fn.dropdown = function(parameters) {
|
|
2428
2445
|
$nextSelectedItem
|
2429
2446
|
.addClass(className.selected)
|
2430
2447
|
;
|
2431
|
-
if(settings.selectOnKeydown && module.is.single()) {
|
2448
|
+
if(settings.selectOnKeydown && module.is.single() && !$nextItem.hasClass(className.actionable)) {
|
2432
2449
|
module.set.selectedItem($nextSelectedItem);
|
2433
2450
|
}
|
2434
2451
|
$menu
|
@@ -2514,7 +2531,7 @@ $.fn.dropdown = function(parameters) {
|
|
2514
2531
|
var
|
2515
2532
|
length = module.get.query().length
|
2516
2533
|
;
|
2517
|
-
$search.val( text.
|
2534
|
+
$search.val( text.slice(0, length));
|
2518
2535
|
},
|
2519
2536
|
scrollPosition: function($item, forceScroll) {
|
2520
2537
|
var
|
@@ -2522,7 +2539,6 @@ $.fn.dropdown = function(parameters) {
|
|
2522
2539
|
$menu,
|
2523
2540
|
hasActive,
|
2524
2541
|
offset,
|
2525
|
-
itemHeight,
|
2526
2542
|
itemOffset,
|
2527
2543
|
menuOffset,
|
2528
2544
|
menuScroll,
|
@@ -2561,7 +2577,7 @@ $.fn.dropdown = function(parameters) {
|
|
2561
2577
|
$menu.removeClass(className.loading);
|
2562
2578
|
}
|
2563
2579
|
},
|
2564
|
-
text: function(text) {
|
2580
|
+
text: function(text, isNotPlaceholder) {
|
2565
2581
|
if(settings.action === 'combo') {
|
2566
2582
|
module.debug('Changing combo button text', text, $combo);
|
2567
2583
|
if(settings.preserveHTML) {
|
@@ -2572,7 +2588,7 @@ $.fn.dropdown = function(parameters) {
|
|
2572
2588
|
}
|
2573
2589
|
}
|
2574
2590
|
else if(settings.action === 'activate') {
|
2575
|
-
if(text !== module.get.placeholderText()) {
|
2591
|
+
if(text !== module.get.placeholderText() || isNotPlaceholder) {
|
2576
2592
|
$text.removeClass(className.placeholder);
|
2577
2593
|
}
|
2578
2594
|
module.debug('Changing text', text, $text);
|
@@ -2591,7 +2607,7 @@ $.fn.dropdown = function(parameters) {
|
|
2591
2607
|
var
|
2592
2608
|
value = module.get.choiceValue($item),
|
2593
2609
|
searchText = module.get.choiceText($item, false),
|
2594
|
-
text = module.get.choiceText($item
|
2610
|
+
text = module.get.choiceText($item)
|
2595
2611
|
;
|
2596
2612
|
module.debug('Setting user selection to item', $item);
|
2597
2613
|
module.remove.activeItem();
|
@@ -2631,13 +2647,13 @@ $.fn.dropdown = function(parameters) {
|
|
2631
2647
|
module.set.scrollPosition($nextValue);
|
2632
2648
|
$selectedItem.removeClass(className.selected);
|
2633
2649
|
$nextValue.addClass(className.selected);
|
2634
|
-
if(settings.selectOnKeydown && module.is.single()) {
|
2650
|
+
if(settings.selectOnKeydown && module.is.single() && !$nextItem.hasClass(className.actionable)) {
|
2635
2651
|
module.set.selectedItem($nextValue);
|
2636
2652
|
}
|
2637
2653
|
}
|
2638
2654
|
},
|
2639
2655
|
direction: function($menu) {
|
2640
|
-
if(settings.direction
|
2656
|
+
if(settings.direction === 'auto') {
|
2641
2657
|
// reset position, remove upward if it's base menu
|
2642
2658
|
if (!$menu) {
|
2643
2659
|
module.remove.upward();
|
@@ -2656,7 +2672,7 @@ $.fn.dropdown = function(parameters) {
|
|
2656
2672
|
module.set.leftward($menu);
|
2657
2673
|
}
|
2658
2674
|
}
|
2659
|
-
else if(settings.direction
|
2675
|
+
else if(settings.direction === 'upward') {
|
2660
2676
|
module.set.upward($menu);
|
2661
2677
|
}
|
2662
2678
|
},
|
@@ -2669,6 +2685,11 @@ $.fn.dropdown = function(parameters) {
|
|
2669
2685
|
$element.addClass(className.leftward);
|
2670
2686
|
},
|
2671
2687
|
value: function(value, text, $selected, preventChangeTrigger) {
|
2688
|
+
if(typeof text === 'boolean') {
|
2689
|
+
preventChangeTrigger = text;
|
2690
|
+
$selected = undefined;
|
2691
|
+
text = undefined;
|
2692
|
+
}
|
2672
2693
|
if(value !== undefined && value !== '' && !(Array.isArray(value) && value.length === 0)) {
|
2673
2694
|
$input.removeClass(className.noselection);
|
2674
2695
|
} else {
|
@@ -2680,8 +2701,7 @@ $.fn.dropdown = function(parameters) {
|
|
2680
2701
|
currentValue = module.get.values(),
|
2681
2702
|
stringValue = (value !== undefined)
|
2682
2703
|
? String(value)
|
2683
|
-
: value
|
2684
|
-
newValue
|
2704
|
+
: value
|
2685
2705
|
;
|
2686
2706
|
if(hasInput) {
|
2687
2707
|
if(!settings.allowReselection && stringValue == currentValue) {
|
@@ -2732,12 +2752,21 @@ $.fn.dropdown = function(parameters) {
|
|
2732
2752
|
visible: function() {
|
2733
2753
|
$module.addClass(className.visible);
|
2734
2754
|
},
|
2735
|
-
exactly: function(value, $selectedItem) {
|
2755
|
+
exactly: function(value, $selectedItem, preventChangeTrigger) {
|
2756
|
+
if(typeof $selectedItem === 'boolean') {
|
2757
|
+
preventChangeTrigger = $selectedItem;
|
2758
|
+
$selectedItem = undefined;
|
2759
|
+
}
|
2736
2760
|
module.debug('Setting selected to exact values');
|
2737
2761
|
module.clear();
|
2738
|
-
module.set.selected(value, $selectedItem);
|
2762
|
+
module.set.selected(value, $selectedItem, preventChangeTrigger);
|
2739
2763
|
},
|
2740
2764
|
selected: function(value, $selectedItem, preventChangeTrigger, keepSearchTerm) {
|
2765
|
+
if(typeof $selectedItem === 'boolean') {
|
2766
|
+
keepSearchTerm = preventChangeTrigger;
|
2767
|
+
preventChangeTrigger = $selectedItem;
|
2768
|
+
$selectedItem = undefined;
|
2769
|
+
}
|
2741
2770
|
var
|
2742
2771
|
isMultiple = module.is.multiple()
|
2743
2772
|
;
|
@@ -2769,23 +2798,30 @@ $.fn.dropdown = function(parameters) {
|
|
2769
2798
|
|
2770
2799
|
isFiltered = $selected.hasClass(className.filtered),
|
2771
2800
|
isActive = $selected.hasClass(className.active),
|
2801
|
+
isActionable = $selected.hasClass(className.actionable),
|
2772
2802
|
isUserValue = $selected.hasClass(className.addition),
|
2773
|
-
shouldAnimate = (isMultiple && $selectedItem.length
|
2803
|
+
shouldAnimate = (isMultiple && $selectedItem && $selectedItem.length === 1)
|
2774
2804
|
;
|
2775
|
-
if(
|
2805
|
+
if(isActionable){
|
2806
|
+
if((!isMultiple || (!isActive || isUserValue)) && settings.apiSettings && settings.saveRemoteData) {
|
2807
|
+
module.save.remoteData(selectedText, selectedValue);
|
2808
|
+
}
|
2809
|
+
settings.onActionable.call(element, selectedValue, selectedText, $selected);
|
2810
|
+
}
|
2811
|
+
else if(isMultiple) {
|
2776
2812
|
if(!isActive || isUserValue) {
|
2777
2813
|
if(settings.apiSettings && settings.saveRemoteData) {
|
2778
2814
|
module.save.remoteData(selectedText, selectedValue);
|
2779
2815
|
}
|
2780
2816
|
if(settings.useLabels) {
|
2817
|
+
module.add.value(selectedValue, selectedText, $selected, preventChangeTrigger);
|
2781
2818
|
module.add.label(selectedValue, selectedText, shouldAnimate);
|
2782
|
-
module.add.value(selectedValue, selectedText, $selected);
|
2783
2819
|
module.set.activeItem($selected);
|
2784
2820
|
module.filterActive();
|
2785
2821
|
module.select.nextAvailable($selectedItem);
|
2786
2822
|
}
|
2787
2823
|
else {
|
2788
|
-
module.add.value(selectedValue, selectedText, $selected);
|
2824
|
+
module.add.value(selectedValue, selectedText, $selected, preventChangeTrigger);
|
2789
2825
|
module.set.text(module.add.variables(message.count));
|
2790
2826
|
module.set.activeItem($selected);
|
2791
2827
|
}
|
@@ -2799,8 +2835,8 @@ $.fn.dropdown = function(parameters) {
|
|
2799
2835
|
if(settings.apiSettings && settings.saveRemoteData) {
|
2800
2836
|
module.save.remoteData(selectedText, selectedValue);
|
2801
2837
|
}
|
2802
|
-
if (!keepSearchTerm) {
|
2803
|
-
module.set.text(selectedText);
|
2838
|
+
if (!keepSearchTerm && !$selected.hasClass(className.actionable)) {
|
2839
|
+
module.set.text(selectedText, true);
|
2804
2840
|
}
|
2805
2841
|
module.set.value(selectedValue, selectedText, $selected, preventChangeTrigger);
|
2806
2842
|
$selected
|
@@ -2813,6 +2849,10 @@ $.fn.dropdown = function(parameters) {
|
|
2813
2849
|
if (!keepSearchTerm) {
|
2814
2850
|
module.remove.searchTerm();
|
2815
2851
|
}
|
2852
|
+
if(module.is.allFiltered()) {
|
2853
|
+
module.set.empty();
|
2854
|
+
module.hideMenu();
|
2855
|
+
}
|
2816
2856
|
}
|
2817
2857
|
},
|
2818
2858
|
|
@@ -2851,6 +2891,7 @@ $.fn.dropdown = function(parameters) {
|
|
2851
2891
|
animation : settings.label.transition,
|
2852
2892
|
debug : settings.debug,
|
2853
2893
|
verbose : settings.verbose,
|
2894
|
+
silent : settings.silent,
|
2854
2895
|
duration : settings.label.duration
|
2855
2896
|
})
|
2856
2897
|
;
|
@@ -2873,7 +2914,7 @@ $.fn.dropdown = function(parameters) {
|
|
2873
2914
|
;
|
2874
2915
|
}
|
2875
2916
|
else {
|
2876
|
-
$
|
2917
|
+
$('<div/>')
|
2877
2918
|
.html(html)
|
2878
2919
|
.addClass(className.message)
|
2879
2920
|
.appendTo($menu)
|
@@ -2898,7 +2939,7 @@ $.fn.dropdown = function(parameters) {
|
|
2898
2939
|
$('<option/>')
|
2899
2940
|
.prop('value', escapedValue)
|
2900
2941
|
.addClass(className.addition)
|
2901
|
-
.
|
2942
|
+
.text(value)
|
2902
2943
|
.appendTo($input)
|
2903
2944
|
;
|
2904
2945
|
module.verbose('Adding user addition as an <option>', value);
|
@@ -2956,16 +2997,13 @@ $.fn.dropdown = function(parameters) {
|
|
2956
2997
|
hasCount = (message.search('{count}') !== -1),
|
2957
2998
|
hasMaxCount = (message.search('{maxCount}') !== -1),
|
2958
2999
|
hasTerm = (message.search('{term}') !== -1),
|
2959
|
-
count,
|
2960
3000
|
query
|
2961
3001
|
;
|
2962
3002
|
module.verbose('Adding templated variables to message', message);
|
2963
3003
|
if(hasCount) {
|
2964
|
-
|
2965
|
-
message = message.replace('{count}', count);
|
3004
|
+
message = message.replace('{count}', module.get.selectionCount());
|
2966
3005
|
}
|
2967
3006
|
if(hasMaxCount) {
|
2968
|
-
count = module.get.selectionCount();
|
2969
3007
|
message = message.replace('{maxCount}', settings.maxSelections);
|
2970
3008
|
}
|
2971
3009
|
if(hasTerm) {
|
@@ -2974,7 +3012,12 @@ $.fn.dropdown = function(parameters) {
|
|
2974
3012
|
}
|
2975
3013
|
return message;
|
2976
3014
|
},
|
2977
|
-
value: function(addedValue, addedText, $selectedItem) {
|
3015
|
+
value: function(addedValue, addedText, $selectedItem, preventChangeTrigger) {
|
3016
|
+
if(typeof addedText === 'boolean') {
|
3017
|
+
preventChangeTrigger = addedText;
|
3018
|
+
$selectedItem = undefined;
|
3019
|
+
addedText = undefined;
|
3020
|
+
}
|
2978
3021
|
var
|
2979
3022
|
currentValue = module.get.values(true),
|
2980
3023
|
newValue
|
@@ -2989,7 +3032,7 @@ $.fn.dropdown = function(parameters) {
|
|
2989
3032
|
}
|
2990
3033
|
// extend current array
|
2991
3034
|
if(Array.isArray(currentValue)) {
|
2992
|
-
newValue = currentValue.concat([addedValue]);
|
3035
|
+
newValue = $selectedItem && $selectedItem.hasClass(className.actionable) ? currentValue : currentValue.concat([addedValue]);
|
2993
3036
|
newValue = module.get.uniqueArray(newValue);
|
2994
3037
|
}
|
2995
3038
|
else {
|
@@ -3013,7 +3056,7 @@ $.fn.dropdown = function(parameters) {
|
|
3013
3056
|
else {
|
3014
3057
|
settings.onAdd.call(element, addedValue, addedText, $selectedItem);
|
3015
3058
|
}
|
3016
|
-
module.set.value(newValue, addedText, $selectedItem);
|
3059
|
+
module.set.value(newValue, addedText, $selectedItem, preventChangeTrigger);
|
3017
3060
|
module.check.maxSelections();
|
3018
3061
|
},
|
3019
3062
|
},
|
@@ -3142,10 +3185,9 @@ $.fn.dropdown = function(parameters) {
|
|
3142
3185
|
},
|
3143
3186
|
value: function(removedValue, removedText, $removedItem, preventChangeTrigger) {
|
3144
3187
|
var
|
3145
|
-
values = module.get.values(),
|
3188
|
+
values = module.get.values(true),
|
3146
3189
|
newValue
|
3147
3190
|
;
|
3148
|
-
removedValue = module.escape.htmlEntities(removedValue);
|
3149
3191
|
if( module.has.selectInput() ) {
|
3150
3192
|
module.verbose('Input is <select> removing selected option', removedValue);
|
3151
3193
|
newValue = module.remove.arrayValue(removedValue, values);
|
@@ -3375,8 +3417,14 @@ $.fn.dropdown = function(parameters) {
|
|
3375
3417
|
bubbledIconClick: function(event) {
|
3376
3418
|
return $(event.target).closest($icon).length > 0;
|
3377
3419
|
},
|
3420
|
+
edge: function() {
|
3421
|
+
return !!window.chrome && !!window.StyleMedia;
|
3422
|
+
},
|
3423
|
+
empty: function() {
|
3424
|
+
return $module.hasClass(className.empty);
|
3425
|
+
},
|
3378
3426
|
chrome: function() {
|
3379
|
-
return !!window.chrome &&
|
3427
|
+
return !!window.chrome && !window.StyleMedia;
|
3380
3428
|
},
|
3381
3429
|
alreadySetup: function() {
|
3382
3430
|
return ($module.is('select') && $module.parent(selector.dropdown).data(moduleNamespace) !== undefined && $module.prev().length === 0);
|
@@ -3404,7 +3452,7 @@ $.fn.dropdown = function(parameters) {
|
|
3404
3452
|
return (document.activeElement === $search[0]);
|
3405
3453
|
},
|
3406
3454
|
allFiltered: function() {
|
3407
|
-
return( (module.is.multiple() || module.has.search()) && !(settings.hideAdditions
|
3455
|
+
return( (module.is.multiple() || module.has.search()) && !(!settings.hideAdditions && module.has.userSuggestion()) && !module.has.message() && module.has.allResultsFiltered() );
|
3408
3456
|
},
|
3409
3457
|
hidden: function($subMenu) {
|
3410
3458
|
return !module.is.visible($subMenu);
|
@@ -3451,8 +3499,8 @@ $.fn.dropdown = function(parameters) {
|
|
3451
3499
|
search: function() {
|
3452
3500
|
return $module.hasClass(className.search);
|
3453
3501
|
},
|
3454
|
-
searchSelection: function() {
|
3455
|
-
return ( module.has.search() && $search.parent(selector.dropdown).length === 1 );
|
3502
|
+
searchSelection: function(deep) {
|
3503
|
+
return ( module.has.search() && (deep ? $search.parents(selector.dropdown) : $search.parent(selector.dropdown)).length === 1 );
|
3456
3504
|
},
|
3457
3505
|
selection: function() {
|
3458
3506
|
return $module.hasClass(className.selection);
|
@@ -3472,7 +3520,7 @@ $.fn.dropdown = function(parameters) {
|
|
3472
3520
|
},
|
3473
3521
|
verticallyScrollableContext: function() {
|
3474
3522
|
var
|
3475
|
-
overflowY = ($context
|
3523
|
+
overflowY = ($context[0] !== window)
|
3476
3524
|
? $context.css('overflow-y')
|
3477
3525
|
: false
|
3478
3526
|
;
|
@@ -3480,7 +3528,7 @@ $.fn.dropdown = function(parameters) {
|
|
3480
3528
|
},
|
3481
3529
|
horizontallyScrollableContext: function() {
|
3482
3530
|
var
|
3483
|
-
overflowX = ($context
|
3531
|
+
overflowX = ($context[0] !== window)
|
3484
3532
|
? $context.css('overflow-X')
|
3485
3533
|
: false
|
3486
3534
|
;
|
@@ -3490,22 +3538,17 @@ $.fn.dropdown = function(parameters) {
|
|
3490
3538
|
|
3491
3539
|
can: {
|
3492
3540
|
activate: function($item) {
|
3493
|
-
|
3494
|
-
|
3495
|
-
|
3496
|
-
|
3497
|
-
|
3498
|
-
}
|
3499
|
-
if(module.has.maxSelections() && $item.hasClass(className.active)) {
|
3500
|
-
return true;
|
3501
|
-
}
|
3502
|
-
return false;
|
3541
|
+
return (
|
3542
|
+
settings.useLabels ||
|
3543
|
+
!module.has.maxSelections() ||
|
3544
|
+
(module.has.maxSelections() && $item.hasClass(className.active))
|
3545
|
+
);
|
3503
3546
|
},
|
3504
3547
|
openDownward: function($subMenu) {
|
3505
3548
|
var
|
3506
3549
|
$currentMenu = $subMenu || $menu,
|
3507
|
-
canOpenDownward
|
3508
|
-
onScreen
|
3550
|
+
canOpenDownward,
|
3551
|
+
onScreen,
|
3509
3552
|
calculations
|
3510
3553
|
;
|
3511
3554
|
$currentMenu
|
@@ -3513,7 +3556,7 @@ $.fn.dropdown = function(parameters) {
|
|
3513
3556
|
;
|
3514
3557
|
calculations = {
|
3515
3558
|
context: {
|
3516
|
-
offset : ($context
|
3559
|
+
offset : ($context[0] === window)
|
3517
3560
|
? { top: 0, left: 0}
|
3518
3561
|
: $context.offset(),
|
3519
3562
|
scrollTop : $context.scrollTop(),
|
@@ -3561,7 +3604,7 @@ $.fn.dropdown = function(parameters) {
|
|
3561
3604
|
;
|
3562
3605
|
calculations = {
|
3563
3606
|
context: {
|
3564
|
-
offset : ($context
|
3607
|
+
offset : ($context[0] === window)
|
3565
3608
|
? { top: 0, left: 0}
|
3566
3609
|
: $context.offset(),
|
3567
3610
|
scrollLeft : $context.scrollLeft(),
|
@@ -3583,9 +3626,6 @@ $.fn.dropdown = function(parameters) {
|
|
3583
3626
|
$currentMenu.removeClass(className.loading);
|
3584
3627
|
return canOpenRightward;
|
3585
3628
|
},
|
3586
|
-
click: function() {
|
3587
|
-
return (hasTouch || settings.on == 'click');
|
3588
|
-
},
|
3589
3629
|
extendSelect: function() {
|
3590
3630
|
return settings.allowAdditions || settings.apiSettings;
|
3591
3631
|
},
|
@@ -3634,6 +3674,7 @@ $.fn.dropdown = function(parameters) {
|
|
3634
3674
|
animation : transition + ' in',
|
3635
3675
|
debug : settings.debug,
|
3636
3676
|
verbose : settings.verbose,
|
3677
|
+
silent : settings.silent,
|
3637
3678
|
duration : settings.transition.showDuration || settings.duration,
|
3638
3679
|
queue : true,
|
3639
3680
|
onStart : start,
|
@@ -3655,9 +3696,7 @@ $.fn.dropdown = function(parameters) {
|
|
3655
3696
|
start = ($subMenu)
|
3656
3697
|
? function() {}
|
3657
3698
|
: function() {
|
3658
|
-
|
3659
|
-
module.unbind.intent();
|
3660
|
-
}
|
3699
|
+
module.unbind.intent();
|
3661
3700
|
module.remove.active();
|
3662
3701
|
},
|
3663
3702
|
transition = settings.transition.hideMethod || module.get.transition($subMenu)
|
@@ -3683,6 +3722,7 @@ $.fn.dropdown = function(parameters) {
|
|
3683
3722
|
duration : settings.transition.hideDuration || settings.duration,
|
3684
3723
|
debug : settings.debug,
|
3685
3724
|
verbose : settings.verbose,
|
3725
|
+
silent : settings.silent,
|
3686
3726
|
queue : false,
|
3687
3727
|
onStart : start,
|
3688
3728
|
displayType: module.get.displayType(),
|
@@ -3768,7 +3808,7 @@ $.fn.dropdown = function(parameters) {
|
|
3768
3808
|
}
|
3769
3809
|
;
|
3770
3810
|
if(shouldEscape.test(string)) {
|
3771
|
-
string = string.replace(/&(?![a-z0-9#]{1,
|
3811
|
+
string = string.replace(/&(?![a-z0-9#]{1,12};)/gi, "&");
|
3772
3812
|
return string.replace(badChars, escapedChar);
|
3773
3813
|
}
|
3774
3814
|
return string;
|
@@ -3890,7 +3930,7 @@ $.fn.dropdown = function(parameters) {
|
|
3890
3930
|
response
|
3891
3931
|
;
|
3892
3932
|
passedArguments = passedArguments || queryArguments;
|
3893
|
-
context =
|
3933
|
+
context = context || element;
|
3894
3934
|
if(typeof query == 'string' && object !== undefined) {
|
3895
3935
|
query = query.split(/[\. ]/);
|
3896
3936
|
maxDepth = query.length - 1;
|
@@ -4020,6 +4060,8 @@ $.fn.dropdown.settings = {
|
|
4020
4060
|
|
4021
4061
|
headerDivider : true, // whether option headers should have an additional divider line underneath when converted from <select> <optgroup>
|
4022
4062
|
|
4063
|
+
collapseOnActionable : true, // whether the dropdown should collapse upon selection of an actionable item
|
4064
|
+
|
4023
4065
|
// label settings on multi-select
|
4024
4066
|
label: {
|
4025
4067
|
transition : 'scale',
|
@@ -4032,13 +4074,13 @@ $.fn.dropdown.settings = {
|
|
4032
4074
|
hide : 300,
|
4033
4075
|
show : 200,
|
4034
4076
|
search : 20,
|
4035
|
-
touch : 50
|
4036
4077
|
},
|
4037
4078
|
|
4038
4079
|
/* Callbacks */
|
4039
4080
|
onChange : function(value, text, $selected){},
|
4040
4081
|
onAdd : function(value, text, $selected){},
|
4041
4082
|
onRemove : function(value, text, $selected){},
|
4083
|
+
onActionable : function(value, text, $selected){},
|
4042
4084
|
onSearch : function(searchTerm){},
|
4043
4085
|
|
4044
4086
|
onLabelSelect : function($selectedLabels){},
|
@@ -4101,12 +4143,12 @@ $.fn.dropdown.settings = {
|
|
4101
4143
|
icon : 'icon', // optional icon name
|
4102
4144
|
iconClass : 'iconClass', // optional individual class for icon (for example to use flag instead)
|
4103
4145
|
class : 'class', // optional individual class for item/header
|
4104
|
-
divider : 'divider' // optional divider append for group headers
|
4146
|
+
divider : 'divider', // optional divider append for group headers
|
4147
|
+
actionable : 'actionable' // optional actionable item
|
4105
4148
|
},
|
4106
4149
|
|
4107
4150
|
keys : {
|
4108
4151
|
backspace : 8,
|
4109
|
-
delimiter : 188, // comma
|
4110
4152
|
deleteKey : 46,
|
4111
4153
|
enter : 13,
|
4112
4154
|
escape : 27,
|
@@ -4173,7 +4215,8 @@ $.fn.dropdown.settings = {
|
|
4173
4215
|
header : 'header',
|
4174
4216
|
divider : 'divider',
|
4175
4217
|
groupIcon : '',
|
4176
|
-
unfilterable : 'unfilterable'
|
4218
|
+
unfilterable : 'unfilterable',
|
4219
|
+
actionable : 'actionable'
|
4177
4220
|
}
|
4178
4221
|
|
4179
4222
|
};
|
@@ -4202,7 +4245,7 @@ $.fn.dropdown.settings.templates = {
|
|
4202
4245
|
}
|
4203
4246
|
;
|
4204
4247
|
if(shouldEscape.test(string)) {
|
4205
|
-
string = string.replace(/&(?![a-z0-9#]{1,
|
4248
|
+
string = string.replace(/&(?![a-z0-9#]{1,12};)/gi, "&");
|
4206
4249
|
return string.replace(badChars, escapedChar);
|
4207
4250
|
}
|
4208
4251
|
return string;
|
@@ -4212,7 +4255,8 @@ $.fn.dropdown.settings.templates = {
|
|
4212
4255
|
var
|
4213
4256
|
placeholder = select.placeholder || false,
|
4214
4257
|
html = '',
|
4215
|
-
escape = $.fn.dropdown.settings.templates.escape
|
4258
|
+
escape = $.fn.dropdown.settings.templates.escape,
|
4259
|
+
deQuote = $.fn.dropdown.settings.templates.deQuote
|
4216
4260
|
;
|
4217
4261
|
html += '<i class="dropdown icon"></i>';
|
4218
4262
|
if(placeholder) {
|
@@ -4221,7 +4265,7 @@ $.fn.dropdown.settings.templates = {
|
|
4221
4265
|
else {
|
4222
4266
|
html += '<div class="text"></div>';
|
4223
4267
|
}
|
4224
|
-
html += '<div class="'+className.menu+'">';
|
4268
|
+
html += '<div class="'+deQuote(className.menu)+'">';
|
4225
4269
|
html += $.fn.dropdown.settings.templates.menu(select, fields, preserveHTML,className);
|
4226
4270
|
html += '</div>';
|
4227
4271
|
return html;
|
@@ -4248,6 +4292,9 @@ $.fn.dropdown.settings.templates = {
|
|
4248
4292
|
maybeText = (option[fields.text])
|
4249
4293
|
? ' data-text="' + deQuote(option[fields.text],true) + '"'
|
4250
4294
|
: '',
|
4295
|
+
maybeActionable = (option[fields.actionable])
|
4296
|
+
? className.actionable+' '
|
4297
|
+
: '',
|
4251
4298
|
maybeDisabled = (option[fields.disabled])
|
4252
4299
|
? className.disabled+' '
|
4253
4300
|
: '',
|
@@ -4256,27 +4303,27 @@ $.fn.dropdown.settings.templates = {
|
|
4256
4303
|
: '',
|
4257
4304
|
hasDescription = (escape(option[fields.description] || '', preserveHTML) != '')
|
4258
4305
|
;
|
4259
|
-
html += '<div class="'+ maybeDisabled + maybeDescriptionVertical + (option[fields.class] ?
|
4306
|
+
html += '<div class="'+ deQuote(maybeActionable + maybeDisabled + maybeDescriptionVertical + (option[fields.class] ? option[fields.class] : className.item))+'" data-value="' + deQuote(option[fields.value],true) + '"' + maybeText + '>';
|
4260
4307
|
if (isMenu) {
|
4261
4308
|
html += '<i class="'+ (itemType.indexOf('left') !== -1 ? 'left' : '') + ' dropdown icon"></i>';
|
4262
4309
|
}
|
4263
4310
|
if(option[fields.image]) {
|
4264
|
-
html += '<img class="'+(option[fields.imageClass] ?
|
4311
|
+
html += '<img class="'+deQuote(option[fields.imageClass] ? option[fields.imageClass] : className.image)+'" src="' + deQuote(option[fields.image]) + '">';
|
4265
4312
|
}
|
4266
4313
|
if(option[fields.icon]) {
|
4267
|
-
html += '<i class="'+deQuote(option[fields.icon]
|
4314
|
+
html += '<i class="'+deQuote(option[fields.icon]+' '+(option[fields.iconClass] ? option[fields.iconClass] : className.icon))+'"></i>';
|
4268
4315
|
}
|
4269
4316
|
if(hasDescription){
|
4270
|
-
html += '<span class="'+ className.description +'">'+ escape(option[fields.description] || '', preserveHTML) + '</span>';
|
4271
|
-
html += (!isMenu) ? '<span class="'+ className.text + '">' : '';
|
4317
|
+
html += '<span class="'+ deQuote(className.description) +'">'+ escape(option[fields.description] || '', preserveHTML) + '</span>';
|
4318
|
+
html += (!isMenu) ? '<span class="'+ deQuote(className.text) + '">' : '';
|
4272
4319
|
}
|
4273
4320
|
if (isMenu) {
|
4274
|
-
html += '<span class="' + className.text + '">';
|
4321
|
+
html += '<span class="' + deQuote(className.text) + '">';
|
4275
4322
|
}
|
4276
4323
|
html += escape(option[fields.name] || '', preserveHTML);
|
4277
4324
|
if (isMenu) {
|
4278
4325
|
html += '</span>';
|
4279
|
-
html += '<div class="' + itemType + '">';
|
4326
|
+
html += '<div class="' + deQuote(itemType) + '">';
|
4280
4327
|
html += $.fn.dropdown.settings.templates.menu(option, fields, preserveHTML, className);
|
4281
4328
|
html += '</div>';
|
4282
4329
|
} else if(hasDescription){
|
@@ -4285,18 +4332,18 @@ $.fn.dropdown.settings.templates = {
|
|
4285
4332
|
html += '</div>';
|
4286
4333
|
} else if (itemType === 'header') {
|
4287
4334
|
var groupName = escape(option[fields.name] || '', preserveHTML),
|
4288
|
-
groupIcon = option[fields.icon] ?
|
4335
|
+
groupIcon = deQuote(option[fields.icon] ? option[fields.icon] : className.groupIcon)
|
4289
4336
|
;
|
4290
4337
|
if(groupName !== '' || groupIcon !== '') {
|
4291
|
-
html += '<div class="' + (option[fields.class] ?
|
4338
|
+
html += '<div class="' + deQuote(option[fields.class] ? option[fields.class] : className.header) + '">';
|
4292
4339
|
if (groupIcon !== '') {
|
4293
|
-
html += '<i class="' + groupIcon + ' ' + (option[fields.iconClass] ?
|
4340
|
+
html += '<i class="' + deQuote(groupIcon + ' ' + (option[fields.iconClass] ? option[fields.iconClass] : className.icon)) + '"></i>';
|
4294
4341
|
}
|
4295
4342
|
html += groupName;
|
4296
4343
|
html += '</div>';
|
4297
4344
|
}
|
4298
4345
|
if(option[fields.divider]){
|
4299
|
-
html += '<div class="'+className.divider+'"></div>';
|
4346
|
+
html += '<div class="'+deQuote(className.divider)+'"></div>';
|
4300
4347
|
}
|
4301
4348
|
}
|
4302
4349
|
});
|
@@ -4306,8 +4353,10 @@ $.fn.dropdown.settings.templates = {
|
|
4306
4353
|
// generates label for multiselect
|
4307
4354
|
label: function(value, text, preserveHTML, className) {
|
4308
4355
|
var
|
4309
|
-
escape = $.fn.dropdown.settings.templates.escape
|
4310
|
-
|
4356
|
+
escape = $.fn.dropdown.settings.templates.escape,
|
4357
|
+
deQuote = $.fn.dropdown.settings.templates.deQuote
|
4358
|
+
;
|
4359
|
+
return escape(text,preserveHTML) + '<i class="'+deQuote(className.delete)+' icon"></i>';
|
4311
4360
|
},
|
4312
4361
|
|
4313
4362
|
|