├── .gitignore ├── .editorconfig ├── .jshintignore ├── docs ├── README.md ├── index.html ├── options.html ├── community.html ├── options-old.html ├── examples.html └── announcements-4.0.html ├── src ├── js │ ├── jquery.mousewheel.shim.js │ ├── banner.end.js │ ├── banner.start.js │ ├── jquery.shim.js │ ├── select2 │ │ ├── keys.js │ │ ├── dropdown │ │ │ ├── attachContainer.js │ │ │ ├── stopPropagation.js │ │ │ ├── closeOnSelect.js │ │ │ ├── minimumResultsForSearch.js │ │ │ ├── hidePlaceholder.js │ │ │ ├── selectOnClose.js │ │ │ ├── infiniteScroll.js │ │ │ └── search.js │ │ ├── compat │ │ │ ├── query.js │ │ │ ├── matcher.js │ │ │ ├── utils.js │ │ │ ├── initSelection.js │ │ │ ├── dropdownCss.js │ │ │ └── containerCss.js │ │ ├── selection │ │ │ ├── clickMask.js │ │ │ ├── stopPropagation.js │ │ │ ├── eventRelay.js │ │ │ ├── placeholder.js │ │ │ └── single.js │ │ ├── i18n │ │ │ ├── az.js │ │ │ ├── zh-TW.js │ │ │ ├── ar.js │ │ │ ├── id.js │ │ │ ├── nb.js │ │ │ ├── fi.js │ │ │ ├── ms.js │ │ │ ├── hu.js │ │ │ ├── zh-CN.js │ │ │ ├── ja.js │ │ │ ├── ko.js │ │ │ ├── tk.js │ │ │ ├── tr.js │ │ │ ├── th.js │ │ │ ├── km.js │ │ │ ├── vi.js │ │ │ ├── da.js │ │ │ ├── sv.js │ │ │ ├── ka.js │ │ │ ├── hy.js │ │ │ ├── fr.js │ │ │ ├── is.js │ │ │ ├── fa.js │ │ │ ├── hi.js │ │ │ ├── de.js │ │ │ ├── pt.js │ │ │ ├── en.js │ │ │ ├── gl.js │ │ │ ├── af.js │ │ │ ├── hr.js │ │ │ ├── bg.js │ │ │ ├── mk.js │ │ │ ├── nl.js │ │ │ ├── pt-BR.js │ │ │ ├── ps.js │ │ │ ├── ro.js │ │ │ ├── et.js │ │ │ ├── sq.js │ │ │ ├── it.js │ │ │ ├── eu.js │ │ │ ├── uk.js │ │ │ ├── lv.js │ │ │ ├── ca.js │ │ │ ├── he.js │ │ │ ├── el.js │ │ │ ├── es.js │ │ │ ├── pl.js │ │ │ ├── sl.js │ │ │ ├── sr.js │ │ │ ├── bs.js │ │ │ ├── sr-Cyrl.js │ │ │ ├── lt.js │ │ │ ├── hsb.js │ │ │ ├── ru.js │ │ │ ├── dsb.js │ │ │ ├── cs.js │ │ │ └── sk.js │ │ ├── data │ │ │ ├── minimumInputLength.js │ │ │ ├── maximumInputLength.js │ │ │ ├── maximumSelectionLength.js │ │ │ ├── base.js │ │ │ └── array.js │ │ ├── translation.js │ │ └── dropdown.js │ ├── wrapper.end.js │ ├── wrapper.start.js │ └── jquery.select2.js └── scss │ ├── _single.scss │ ├── _multiple.scss │ ├── theme │ ├── classic │ │ ├── _defaults.scss │ │ ├── layout.scss │ │ ├── _multiple.scss │ │ └── _single.scss │ └── default │ │ ├── _single.scss │ │ ├── _multiple.scss │ │ └── layout.scss │ ├── mixins │ └── _gradients.scss │ ├── core.scss │ └── _dropdown.scss ├── .github ├── PULL_REQUEST_TEMPLATE.md └── ISSUE_TEMPLATE.md ├── bower.json ├── .jshintrc ├── component.json ├── composer.json ├── dist └── js │ └── i18n │ ├── zh-TW.js │ ├── az.js │ ├── zh-CN.js │ ├── ja.js │ ├── ko.js │ ├── vi.js │ ├── ar.js │ ├── id.js │ ├── is.js │ ├── nb.js │ ├── tk.js │ ├── tr.js │ ├── et.js │ ├── fi.js │ ├── th.js │ ├── sv.js │ ├── hu.js │ ├── km.js │ ├── bg.js │ ├── ms.js │ ├── da.js │ ├── en.js │ ├── he.js │ ├── hy.js │ ├── hi.js │ ├── fa.js │ ├── hr.js │ ├── mk.js │ ├── af.js │ ├── eu.js │ ├── de.js │ ├── pt-BR.js │ ├── lv.js │ ├── pt.js │ ├── ca.js │ ├── fr.js │ ├── it.js │ ├── ps.js │ ├── gl.js │ ├── sl.js │ ├── es.js │ ├── nl.js │ ├── ro.js │ ├── lt.js │ ├── pl.js │ ├── el.js │ ├── bs.js │ ├── sr.js │ ├── sr-Cyrl.js │ ├── uk.js │ ├── ru.js │ ├── hsb.js │ ├── dsb.js │ ├── cs.js │ └── sk.js ├── .travis.yml ├── tests ├── options │ ├── translation-tests.js │ ├── data-tests.js │ ├── ajax-tests.js │ └── width-tests.js ├── data │ └── base-tests.js ├── integration.html ├── dropdown │ └── stopPropagation-tests.js ├── utils │ └── escapeMarkup-tests.js ├── selection │ ├── stopPropagation-tests.js │ └── placeholder-tests.js ├── helpers.js ├── a11y │ └── search-tests.js └── integration │ └── jquery-calls.js ├── select2.jquery.json ├── LICENSE.md └── package.json /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist/js/i18n/build.txt 3 | .sass-cache 4 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | [*] 2 | indent_style = space 3 | end_of_line = lf 4 | 5 | [*.js] 6 | indent_size = 2 7 | -------------------------------------------------------------------------------- /.jshintignore: -------------------------------------------------------------------------------- 1 | src/js/banner.*.js 2 | src/js/wrapper.*.js 3 | tests/vendor/*.js 4 | tests/helpers.js 5 | -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | Effective beginning September 10, 2017, the Select2 documentation repository is now available at [`select2/docs`](https://github.com/select2/docs). 2 | -------------------------------------------------------------------------------- /src/js/jquery.mousewheel.shim.js: -------------------------------------------------------------------------------- 1 | define([ 2 | 'jquery' 3 | ], function ($) { 4 | // Used to shim jQuery.mousewheel for non-full builds. 5 | return $; 6 | }); 7 | -------------------------------------------------------------------------------- /src/js/banner.end.js: -------------------------------------------------------------------------------- 1 | // Return the AMD loader configuration so it can be used outside of this file 2 | return { 3 | define: S2.define, 4 | require: S2.require 5 | }; 6 | }()); 7 | -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | select2 6 | 7 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /docs/options.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | select2 6 | 7 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /docs/community.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | select2 6 | 7 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /docs/options-old.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | select2 6 | 7 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | This pull request includes a 2 | 3 | - [ ] Bug fix 4 | - [ ] New feature 5 | - [ ] Translation 6 | 7 | The following changes were made 8 | 9 | - 10 | - 11 | - 12 | 13 | If this is related to an existing ticket, include a link to it as well. 14 | -------------------------------------------------------------------------------- /docs/examples.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | select2 6 | 7 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /docs/announcements-4.0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | select2 6 | 7 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /src/js/banner.start.js: -------------------------------------------------------------------------------- 1 | (function () { 2 | // Restore the Select2 AMD loader so it can be used 3 | // Needed mostly in the language files, where the loader is not inserted 4 | if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) { 5 | var S2 = jQuery.fn.select2.amd; 6 | } 7 | -------------------------------------------------------------------------------- /src/js/jquery.shim.js: -------------------------------------------------------------------------------- 1 | /* global jQuery:false, $:false */ 2 | define(function () { 3 | var _$ = jQuery || $; 4 | 5 | if (_$ == null && console && console.error) { 6 | console.error( 7 | 'Select2: An instance of jQuery or a jQuery-compatible library was not ' + 8 | 'found. Make sure that you are including jQuery before Select2 on your ' + 9 | 'web page.' 10 | ); 11 | } 12 | 13 | return _$; 14 | }); 15 | -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "select2", 3 | "description": "Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.", 4 | "main": [ 5 | "dist/js/select2.js", 6 | "src/scss/core.scss" 7 | ], 8 | "license": "MIT", 9 | "repository": { 10 | "type": "git", 11 | "url": "git@github.com:select2/select2.git" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/js/select2/keys.js: -------------------------------------------------------------------------------- 1 | define([ 2 | 3 | ], function () { 4 | var KEYS = { 5 | BACKSPACE: 8, 6 | TAB: 9, 7 | ENTER: 13, 8 | SHIFT: 16, 9 | CTRL: 17, 10 | ALT: 18, 11 | ESC: 27, 12 | SPACE: 32, 13 | PAGE_UP: 33, 14 | PAGE_DOWN: 34, 15 | END: 35, 16 | HOME: 36, 17 | LEFT: 37, 18 | UP: 38, 19 | RIGHT: 39, 20 | DOWN: 40, 21 | DELETE: 46 22 | }; 23 | 24 | return KEYS; 25 | }); 26 | -------------------------------------------------------------------------------- /src/js/wrapper.end.js: -------------------------------------------------------------------------------- 1 | // Autoload the jQuery bindings 2 | // We know that all of the modules exist above this, so we're safe 3 | var select2 = S2.require('jquery.select2'); 4 | 5 | // Hold the AMD module references on the jQuery function that was just loaded 6 | // This allows Select2 to use the internal loader outside of this file, such 7 | // as in the language files. 8 | jQuery.fn.select2.amd = S2; 9 | 10 | // Return the Select2 instance for anyone who is importing it. 11 | return select2; 12 | })); 13 | -------------------------------------------------------------------------------- /.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "bitwise": true, 3 | "camelcase": true, 4 | "curly": true, 5 | "es3": true, 6 | "eqnull": true, 7 | "freeze": true, 8 | "globals": { 9 | "console": false, 10 | "define": false, 11 | "document": false, 12 | "MockContainer": false, 13 | "module": false, 14 | "QUnit": false, 15 | "require": false, 16 | "test": false, 17 | "window": false 18 | }, 19 | "indent": 2, 20 | "maxlen": 80, 21 | "noarg": true, 22 | "nonew": true, 23 | "quotmark": "single", 24 | "undef": true 25 | } 26 | -------------------------------------------------------------------------------- /component.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "select2", 3 | "repo": "select/select2", 4 | "description": "Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.", 5 | "version": "4.0.6-rc.1", 6 | "demo": "https://select2.org/", 7 | "keywords": [ 8 | "jquery" 9 | ], 10 | "main": "dist/js/select2.js", 11 | "styles": [ 12 | "dist/css/select2.css" 13 | ], 14 | "scripts": [ 15 | "dist/js/select2.js", 16 | "dist/js/i18n/*.js" 17 | ], 18 | "license": "MIT" 19 | } 20 | -------------------------------------------------------------------------------- /src/js/select2/dropdown/attachContainer.js: -------------------------------------------------------------------------------- 1 | define([ 2 | 3 | ], function () { 4 | function AttachContainer (decorated, $element, options) { 5 | decorated.call(this, $element, options); 6 | } 7 | 8 | AttachContainer.prototype.position = 9 | function (decorated, $dropdown, $container) { 10 | var $dropdownContainer = $container.find('.dropdown-wrapper'); 11 | $dropdownContainer.append($dropdown); 12 | 13 | $dropdown.addClass('select2-dropdown--below'); 14 | $container.addClass('select2-container--below'); 15 | }; 16 | 17 | return AttachContainer; 18 | }); 19 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "select2/select2", 3 | "description": "Select2 is a jQuery based replacement for select boxes.", 4 | "type": "component", 5 | "homepage": "https://select2.org/", 6 | "license": "MIT", 7 | "require": { 8 | "robloach/component-installer": "*" 9 | }, 10 | "extra": { 11 | "component": { 12 | "scripts": [ 13 | "dist/js/select2.js" 14 | ], 15 | "styles": [ 16 | "dist/css/select2.css" 17 | ], 18 | "files": [ 19 | "dist/js/select2.js", 20 | "dist/js/i18n/*.js", 21 | "dist/css/select2.css" 22 | ] 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /dist/js/i18n/zh-TW.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/zh-TW",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="請刪掉"+t+"個字元";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="請再輸入"+t+"個字元";return n},loadingMore:function(){return"載入中…"},maximumSelected:function(e){var t="你只能選擇最多"+e.maximum+"項";return t},noResults:function(){return"沒有找到相符的項目"},searching:function(){return"搜尋中…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /dist/js/i18n/az.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/az",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return t+" simvol silin"},inputTooShort:function(e){var t=e.minimum-e.input.length;return t+" simvol daxil edin"},loadingMore:function(){return"Daha çox nəticə yüklənir…"},maximumSelected:function(e){return"Sadəcə "+e.maximum+" element seçə bilərsiniz"},noResults:function(){return"Nəticə tapılmadı"},searching:function(){return"Axtarılır…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /dist/js/i18n/zh-CN.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/zh-CN",[],function(){return{errorLoading:function(){return"无法载入结果。"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="请删除"+t+"个字符";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="请再输入至少"+t+"个字符";return n},loadingMore:function(){return"载入更多结果…"},maximumSelected:function(e){var t="最多只能选择"+e.maximum+"个项目";return t},noResults:function(){return"未找到结果"},searching:function(){return"搜索中…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | 3 | sudo: false 4 | 5 | node_js: 6 | - 0.10 7 | 8 | env: 9 | global: 10 | - secure: XMNK8GVxkwKa6oLl7nJwgg/wmY1YDk5rrMd+UXz26EDCsMDbiy1P7GhN2fEiBSLaQ7YfEuvaDcmzQxTrT0YTHp1PDzb2o9J4tIDdEkqPcv1y8xMaYDfmsN0rBPdBwZEg9H5zUgi7OdUbrGswSYxsKCE3x8EOqK89104HyOo1LN4= 11 | - secure: BU5BPRx6H4O3WJ509YPixjUxg+hDF3z2BVJX6NiGmKWweqvCEYFfiiHLwDEgp/ynRcF9vGVi1V4Ly1jq7f8NIajbDZ5q443XchZFYFg78K/EwD5mK6LYt16zb7+Jn0KbzwHeGRGzc9AvcEYlW6i634cSCm4n3BnqtF5PpogSzdw= 12 | 13 | script: 14 | - grunt ci 15 | 16 | notifications: 17 | email: false 18 | irc: 19 | channels: 20 | - "chat.freenode.net#select2" 21 | on_success: change 22 | on_failure: always 23 | -------------------------------------------------------------------------------- /dist/js/i18n/ja.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ja",[],function(){return{errorLoading:function(){return"結果が読み込まれませんでした"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" 文字を削除してください";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="少なくとも "+t+" 文字を入力してください";return n},loadingMore:function(){return"読み込み中…"},maximumSelected:function(e){var t=e.maximum+" 件しか選択できません";return t},noResults:function(){return"対象が見つかりません"},searching:function(){return"検索しています…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/scss/_single.scss: -------------------------------------------------------------------------------- 1 | .select2-selection--single { 2 | box-sizing: border-box; 3 | 4 | cursor: pointer; 5 | display: block; 6 | 7 | height: 28px; 8 | 9 | user-select: none; 10 | -webkit-user-select: none; 11 | 12 | .select2-selection__rendered { 13 | display: block; 14 | padding-left: 8px; 15 | padding-right: 20px; 16 | 17 | overflow: hidden; 18 | text-overflow: ellipsis; 19 | white-space: nowrap; 20 | } 21 | 22 | .select2-selection__clear { 23 | position: relative; 24 | } 25 | } 26 | 27 | &[dir="rtl"] { 28 | .select2-selection--single { 29 | .select2-selection__rendered { 30 | padding-right: 8px; 31 | padding-left: 20px; 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /dist/js/i18n/ko.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ko",[],function(){return{errorLoading:function(){return"결과를 불러올 수 없습니다."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="너무 깁니다. "+t+" 글자 지워주세요.";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="너무 짧습니다. "+t+" 글자 더 입력해주세요.";return n},loadingMore:function(){return"불러오는 중…"},maximumSelected:function(e){var t="최대 "+e.maximum+"개까지만 선택 가능합니다.";return t},noResults:function(){return"결과가 없습니다."},searching:function(){return"검색 중…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /dist/js/i18n/vi.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/vi",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vui lòng nhập ít hơn "+t+" ký tự";return t!=1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vui lòng nhập nhiều hơn "+t+" ký tự";return n},loadingMore:function(){return"Đang lấy thêm kết quả…"},maximumSelected:function(e){var t="Chỉ có thể chọn được "+e.maximum+" lựa chọn";return t},noResults:function(){return"Không tìm thấy kết quả"},searching:function(){return"Đang tìm…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /dist/js/i18n/ar.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ar",[],function(){return{errorLoading:function(){return"لا يمكن تحميل النتائج"},inputTooLong:function(e){var t=e.input.length-e.maximum;return"الرجاء حذف "+t+" عناصر"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"الرجاء إضافة "+t+" عناصر"},loadingMore:function(){return"جاري تحميل نتائج إضافية..."},maximumSelected:function(e){return"تستطيع إختيار "+e.maximum+" بنود فقط"},noResults:function(){return"لم يتم العثور على أي نتائج"},searching:function(){return"جاري البحث…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /dist/js/i18n/id.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/id",[],function(){return{errorLoading:function(){return"Data tidak boleh diambil."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Hapuskan "+t+" huruf"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Masukkan "+t+" huruf lagi"},loadingMore:function(){return"Mengambil data…"},maximumSelected:function(e){return"Anda hanya dapat memilih "+e.maximum+" pilihan"},noResults:function(){return"Tidak ada data yang sesuai"},searching:function(){return"Mencari…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /dist/js/i18n/is.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/is",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vinsamlegast styttið texta um "+t+" staf";return t<=1?n:n+"i"},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vinsamlegast skrifið "+t+" staf";return t>1&&(n+="i"),n+=" í viðbót",n},loadingMore:function(){return"Sæki fleiri niðurstöður…"},maximumSelected:function(e){return"Þú getur aðeins valið "+e.maximum+" atriði"},noResults:function(){return"Ekkert fannst"},searching:function(){return"Leita…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /dist/js/i18n/nb.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/nb",[],function(){return{errorLoading:function(){return"Kunne ikke hente resultater."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Vennligst fjern "+t+" tegn"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Vennligst skriv inn "+t+" tegn til"},loadingMore:function(){return"Laster flere resultater…"},maximumSelected:function(e){return"Du kan velge maks "+e.maximum+" elementer"},noResults:function(){return"Ingen treff"},searching:function(){return"Søker…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /dist/js/i18n/tk.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/tk",[],function(){return{errorLoading:function(){return"Netije ýüklenmedi."},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" harp bozuň.";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Ýene-de iň az "+t+" harp ýazyň.";return n},loadingMore:function(){return"Köpräk netije görkezilýär…"},maximumSelected:function(e){var t="Diňe "+e.maximum+" sanysyny saýlaň.";return t},noResults:function(){return"Netije tapylmady."},searching:function(){return"Gözlenýär…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/scss/_multiple.scss: -------------------------------------------------------------------------------- 1 | .select2-selection--multiple { 2 | box-sizing: border-box; 3 | 4 | cursor: pointer; 5 | display: block; 6 | 7 | min-height: 32px; 8 | 9 | user-select: none; 10 | -webkit-user-select: none; 11 | 12 | .select2-selection__rendered { 13 | display: inline-block; 14 | overflow: hidden; 15 | padding-left: 8px; 16 | text-overflow: ellipsis; 17 | white-space: nowrap; 18 | } 19 | } 20 | 21 | .select2-search--inline { 22 | float: left; 23 | 24 | .select2-search__field { 25 | box-sizing: border-box; 26 | border: none; 27 | font-size: 100%; 28 | margin-top: 5px; 29 | padding: 0; 30 | 31 | &::-webkit-search-cancel-button { 32 | -webkit-appearance: none; 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /dist/js/i18n/tr.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/tr",[],function(){return{errorLoading:function(){return"Sonuç yüklenemedi"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" karakter daha girmelisiniz";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="En az "+t+" karakter daha girmelisiniz";return n},loadingMore:function(){return"Daha fazla…"},maximumSelected:function(e){var t="Sadece "+e.maximum+" seçim yapabilirsiniz";return t},noResults:function(){return"Sonuç bulunamadı"},searching:function(){return"Aranıyor…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /dist/js/i18n/et.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/et",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Sisesta "+t+" täht";return t!=1&&(n+="e"),n+=" vähem",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Sisesta "+t+" täht";return t!=1&&(n+="e"),n+=" rohkem",n},loadingMore:function(){return"Laen tulemusi…"},maximumSelected:function(e){var t="Saad vaid "+e.maximum+" tulemus";return e.maximum==1?t+="e":t+="t",t+=" valida",t},noResults:function(){return"Tulemused puuduvad"},searching:function(){return"Otsin…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /dist/js/i18n/fi.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fi",[],function(){return{errorLoading:function(){return"Tuloksia ei saatu ladattua."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Ole hyvä ja anna "+t+" merkkiä vähemmän"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Ole hyvä ja anna "+t+" merkkiä lisää"},loadingMore:function(){return"Ladataan lisää tuloksia…"},maximumSelected:function(e){return"Voit valita ainoastaan "+e.maximum+" kpl"},noResults:function(){return"Ei tuloksia"},searching:function(){return"Haetaan…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /dist/js/i18n/th.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/th",[],function(){return{errorLoading:function(){return"ไม่สามารถค้นข้อมูลได้"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="โปรดลบออก "+t+" ตัวอักษร";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="โปรดพิมพ์เพิ่มอีก "+t+" ตัวอักษร";return n},loadingMore:function(){return"กำลังค้นข้อมูลเพิ่ม…"},maximumSelected:function(e){var t="คุณสามารถเลือกได้ไม่เกิน "+e.maximum+" รายการ";return t},noResults:function(){return"ไม่พบข้อมูล"},searching:function(){return"กำลังค้นข้อมูล…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /dist/js/i18n/sv.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sv",[],function(){return{errorLoading:function(){return"Resultat kunde inte laddas."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vänligen sudda ut "+t+" tecken";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vänligen skriv in "+t+" eller fler tecken";return n},loadingMore:function(){return"Laddar fler resultat…"},maximumSelected:function(e){var t="Du kan max välja "+e.maximum+" element";return t},noResults:function(){return"Inga träffar"},searching:function(){return"Söker…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /tests/options/translation-tests.js: -------------------------------------------------------------------------------- 1 | module('Options - Translations'); 2 | 3 | var $ = require('jquery'); 4 | var Options = require('select2/options'); 5 | 6 | test('partial dictionaries can be passed', function (assert) { 7 | var options = new Options({ 8 | language: { 9 | searching: function () { 10 | return 'Something'; 11 | } 12 | } 13 | }); 14 | 15 | var translations = options.get('translations'); 16 | 17 | assert.equal( 18 | translations.get('searching')(), 19 | 'Something', 20 | 'The partial dictionary still overrides translations' 21 | ); 22 | 23 | assert.equal( 24 | translations.get('noResults')(), 25 | 'No results found', 26 | 'You can still get English translations for keys not passed in' 27 | ); 28 | }); 29 | -------------------------------------------------------------------------------- /dist/js/i18n/hu.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hu",[],function(){return{errorLoading:function(){return"Az eredmények betöltése nem sikerült."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Túl hosszú. "+t+" karakterrel több, mint kellene."},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Túl rövid. Még "+t+" karakter hiányzik."},loadingMore:function(){return"Töltés…"},maximumSelected:function(e){return"Csak "+e.maximum+" elemet lehet kiválasztani."},noResults:function(){return"Nincs találat."},searching:function(){return"Keresés…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /dist/js/i18n/km.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/km",[],function(){return{errorLoading:function(){return"មិនអាចទាញយកទិន្នន័យ"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="សូមលុបចេញ "+t+" អក្សរ";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="សូមបញ្ចូល"+t+" អក្សរ រឺ ច្រើនជាងនេះ";return n},loadingMore:function(){return"កំពុងទាញយកទិន្នន័យបន្ថែម..."},maximumSelected:function(e){var t="អ្នកអាចជ្រើសរើសបានតែ "+e.maximum+" ជម្រើសប៉ុណ្ណោះ";return t},noResults:function(){return"មិនមានលទ្ធផល"},searching:function(){return"កំពុងស្វែងរក..."}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /dist/js/i18n/bg.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/bg",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Моля въведете с "+t+" по-малко символ";return t>1&&(n+="a"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Моля въведете още "+t+" символ";return t>1&&(n+="a"),n},loadingMore:function(){return"Зареждат се още…"},maximumSelected:function(e){var t="Можете да направите до "+e.maximum+" ";return e.maximum>1?t+="избора":t+="избор",t},noResults:function(){return"Няма намерени съвпадения"},searching:function(){return"Търсене…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /dist/js/i18n/ms.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ms",[],function(){return{errorLoading:function(){return"Keputusan tidak berjaya dimuatkan."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Sila hapuskan "+t+" aksara"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Sila masukkan "+t+" atau lebih aksara"},loadingMore:function(){return"Sedang memuatkan keputusan…"},maximumSelected:function(e){return"Anda hanya boleh memilih "+e.maximum+" pilihan"},noResults:function(){return"Tiada padanan yang ditemui"},searching:function(){return"Mencari…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/js/select2/compat/query.js: -------------------------------------------------------------------------------- 1 | define([ 2 | 3 | ], function () { 4 | function Query (decorated, $element, options) { 5 | if (options.get('debug') && window.console && console.warn) { 6 | console.warn( 7 | 'Select2: The `query` option has been deprecated in favor of a ' + 8 | 'custom data adapter that overrides the `query` method. Support ' + 9 | 'will be removed for the `query` option in future versions of ' + 10 | 'Select2.' 11 | ); 12 | } 13 | 14 | decorated.call(this, $element, options); 15 | } 16 | 17 | Query.prototype.query = function (_, params, callback) { 18 | params.callback = callback; 19 | 20 | var query = this.options.get('query'); 21 | 22 | query.call(null, params); 23 | }; 24 | 25 | return Query; 26 | }); 27 | -------------------------------------------------------------------------------- /dist/js/i18n/da.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/da",[],function(){return{errorLoading:function(){return"Resultaterne kunne ikke indlæses."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Angiv venligst "+t+" tegn mindre"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Angiv venligst "+t+" tegn mere"},loadingMore:function(){return"Indlæser flere resultater…"},maximumSelected:function(e){var t="Du kan kun vælge "+e.maximum+" emne";return e.maximum!=1&&(t+="r"),t},noResults:function(){return"Ingen resultater fundet"},searching:function(){return"Søger…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/js/select2/selection/clickMask.js: -------------------------------------------------------------------------------- 1 | define([ 2 | 'jquery' 3 | ], function ($) { 4 | function ClickMask () { } 5 | 6 | ClickMask.prototype.bind = function (decorate, $container, container) { 7 | var self = this; 8 | 9 | decorate.call(this, $container, container); 10 | 11 | this.$mask = $( 12 | '
' 13 | ); 14 | 15 | this.$mask.on('mousedown touchstart click', function () { 16 | self.trigger('close', {}); 17 | }); 18 | }; 19 | 20 | ClickMask.prototype._attachCloseHandler = function (decorate, container) { 21 | $(document.body).append(this.$mask); 22 | }; 23 | 24 | ClickMask.prototype._detachCloseHandler = function (deocrate, container) { 25 | this.$mask.detach(); 26 | }; 27 | 28 | return ClickMask; 29 | }); 30 | -------------------------------------------------------------------------------- /tests/data/base-tests.js: -------------------------------------------------------------------------------- 1 | module('Data adapters - Base'); 2 | 3 | var BaseData = require('select2/data/base'); 4 | var $ = require('jquery'); 5 | var Options = require('select2/options'); 6 | 7 | var options = new Options({}); 8 | 9 | test('current is required', function (assert) { 10 | var data = new BaseData($('#qunit-fixture select'), options); 11 | 12 | assert.throws( 13 | function () { 14 | data.current(function () {}); 15 | }, 16 | 'current has no default implementation' 17 | ); 18 | }); 19 | 20 | test('query is required', function (assert) { 21 | var data = new BaseData($('#qunit-fixture select'), options); 22 | 23 | assert.throws( 24 | function () { 25 | data.query({}, function () {}); 26 | }, 27 | 'query has no default implementation' 28 | ); 29 | }); 30 | -------------------------------------------------------------------------------- /src/js/select2/i18n/az.js: -------------------------------------------------------------------------------- 1 | define(function () { 2 | // Azerbaijani 3 | return { 4 | inputTooLong: function (args) { 5 | var overChars = args.input.length - args.maximum; 6 | 7 | return overChars + ' simvol silin'; 8 | }, 9 | inputTooShort: function (args) { 10 | var remainingChars = args.minimum - args.input.length; 11 | 12 | return remainingChars + ' simvol daxil edin'; 13 | }, 14 | loadingMore: function () { 15 | return 'Daha çox nəticə yüklənir…'; 16 | }, 17 | maximumSelected: function (args) { 18 | return 'Sadəcə ' + args.maximum + ' element seçə bilərsiniz'; 19 | }, 20 | noResults: function () { 21 | return 'Nəticə tapılmadı'; 22 | }, 23 | searching: function () { 24 | return 'Axtarılır…'; 25 | } 26 | }; 27 | }); 28 | -------------------------------------------------------------------------------- /dist/js/i18n/en.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Please delete "+t+" character";return t!=1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Please enter "+t+" or more characters";return n},loadingMore:function(){return"Loading more results…"},maximumSelected:function(e){var t="You can only select "+e.maximum+" item";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No results found"},searching:function(){return"Searching…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /dist/js/i18n/he.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/he",[],function(){return{errorLoading:function(){return"שגיאה בטעינת התוצאות"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="נא למחוק ";return t===1?n+="תו אחד":n+=t+" תווים",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="נא להכניס ";return t===1?n+="תו אחד":n+=t+" תווים",n+=" או יותר",n},loadingMore:function(){return"טוען תוצאות נוספות…"},maximumSelected:function(e){var t="באפשרותך לבחור עד ";return e.maximum===1?t+="פריט אחד":t+=e.maximum+" פריטים",t},noResults:function(){return"לא נמצאו תוצאות"},searching:function(){return"מחפש…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /dist/js/i18n/hy.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hy",[],function(){return{errorLoading:function(){return"Արդյունքները հնարավոր չէ բեռնել։"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Խնդրում ենք հեռացնել "+t+" նշան";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Խնդրում ենք մուտքագրել "+t+" կամ ավել նշաններ";return n},loadingMore:function(){return"Բեռնվում են նոր արդյունքներ․․․"},maximumSelected:function(e){var t="Դուք կարող եք ընտրել առավելագույնը "+e.maximum+" կետ";return t},noResults:function(){return"Արդյունքներ չեն գտնվել"},searching:function(){return"Որոնում․․․"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /dist/js/i18n/hi.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hi",[],function(){return{errorLoading:function(){return"परिणामों को लोड नहीं किया जा सका।"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" अक्षर को हटा दें";return t>1&&(n=t+" अक्षरों को हटा दें "),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="कृपया "+t+" या अधिक अक्षर दर्ज करें";return n},loadingMore:function(){return"अधिक परिणाम लोड हो रहे है..."},maximumSelected:function(e){var t="आप केवल "+e.maximum+" आइटम का चयन कर सकते हैं";return t},noResults:function(){return"कोई परिणाम नहीं मिला"},searching:function(){return"खोज रहा है..."}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /dist/js/i18n/fa.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fa",[],function(){return{errorLoading:function(){return"امکان بارگذاری نتایج وجود ندارد."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="لطفاً "+t+" کاراکتر را حذف نمایید";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="لطفاً تعداد "+t+" کاراکتر یا بیشتر وارد نمایید";return n},loadingMore:function(){return"در حال بارگذاری نتایج بیشتر..."},maximumSelected:function(e){var t="شما تنها می‌توانید "+e.maximum+" آیتم را انتخاب نمایید";return t},noResults:function(){return"هیچ نتیجه‌ای یافت نشد"},searching:function(){return"در حال جستجو..."}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /dist/js/i18n/hr.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hr",[],function(){function e(e){var t=" "+e+" znak";return e%10<5&&e%10>0&&(e%100<5||e%100>19)?e%10>1&&(t+="a"):t+="ova",t}return{errorLoading:function(){return"Preuzimanje nije uspjelo."},inputTooLong:function(t){var n=t.input.length-t.maximum;return"Unesite "+e(n)},inputTooShort:function(t){var n=t.minimum-t.input.length;return"Unesite još "+e(n)},loadingMore:function(){return"Učitavanje rezultata…"},maximumSelected:function(e){return"Maksimalan broj odabranih stavki je "+e.maximum},noResults:function(){return"Nema rezultata"},searching:function(){return"Pretraga…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /dist/js/i18n/mk.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/mk",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Ве молиме внесете "+e.maximum+" помалку карактер";return e.maximum!==1&&(n+="и"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Ве молиме внесете уште "+e.maximum+" карактер";return e.maximum!==1&&(n+="и"),n},loadingMore:function(){return"Вчитување резултати…"},maximumSelected:function(e){var t="Можете да изберете само "+e.maximum+" ставк";return e.maximum===1?t+="а":t+="и",t},noResults:function(){return"Нема пронајдено совпаѓања"},searching:function(){return"Пребарување…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /dist/js/i18n/af.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/af",[],function(){return{errorLoading:function(){return"Die resultate kon nie gelaai word nie."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Verwyders asseblief "+t+" character";return t!=1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Voer asseblief "+t+" of meer karakters";return n},loadingMore:function(){return"Meer resultate word gelaai…"},maximumSelected:function(e){var t="Kies asseblief net "+e.maximum+" item";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"Geen resultate gevind"},searching:function(){return"Besig…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /dist/js/i18n/eu.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/eu",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Idatzi ";return t==1?n+="karaktere bat":n+=t+" karaktere",n+=" gutxiago",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Idatzi ";return t==1?n+="karaktere bat":n+=t+" karaktere",n+=" gehiago",n},loadingMore:function(){return"Emaitza gehiago kargatzen…"},maximumSelected:function(e){return e.maximum===1?"Elementu bakarra hauta dezakezu":e.maximum+" elementu hauta ditzakezu soilik"},noResults:function(){return"Ez da bat datorrenik aurkitu"},searching:function(){return"Bilatzen…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /dist/js/i18n/de.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/de",[],function(){return{errorLoading:function(){return"Die Ergebnisse konnten nicht geladen werden."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Bitte "+t+" Zeichen weniger eingeben"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Bitte "+t+" Zeichen mehr eingeben"},loadingMore:function(){return"Lade mehr Ergebnisse…"},maximumSelected:function(e){var t="Sie können nur "+e.maximum+" Eintr";return e.maximum===1?t+="ag":t+="äge",t+=" auswählen",t},noResults:function(){return"Keine Übereinstimmungen gefunden"},searching:function(){return"Suche…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/js/select2/data/minimumInputLength.js: -------------------------------------------------------------------------------- 1 | define([ 2 | 3 | ], function () { 4 | function MinimumInputLength (decorated, $e, options) { 5 | this.minimumInputLength = options.get('minimumInputLength'); 6 | 7 | decorated.call(this, $e, options); 8 | } 9 | 10 | MinimumInputLength.prototype.query = function (decorated, params, callback) { 11 | params.term = params.term || ''; 12 | 13 | if (params.term.length < this.minimumInputLength) { 14 | this.trigger('results:message', { 15 | message: 'inputTooShort', 16 | args: { 17 | minimum: this.minimumInputLength, 18 | input: params.term, 19 | params: params 20 | } 21 | }); 22 | 23 | return; 24 | } 25 | 26 | decorated.call(this, params, callback); 27 | }; 28 | 29 | return MinimumInputLength; 30 | }); 31 | -------------------------------------------------------------------------------- /dist/js/i18n/pt-BR.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pt-BR",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Apague "+t+" caracter";return t!=1&&(n+="es"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Digite "+t+" ou mais caracteres";return n},loadingMore:function(){return"Carregando mais resultados…"},maximumSelected:function(e){var t="Você só pode selecionar "+e.maximum+" ite";return e.maximum==1?t+="m":t+="ns",t},noResults:function(){return"Nenhum resultado encontrado"},searching:function(){return"Buscando…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /dist/js/i18n/lv.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/lv",[],function(){function e(e,t,n,r){return e===11?t:e%10===1?n:r}return{inputTooLong:function(t){var n=t.input.length-t.maximum,r="Lūdzu ievadiet par "+n;return r+=" simbol"+e(n,"iem","u","iem"),r+" mazāk"},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Lūdzu ievadiet vēl "+n;return r+=" simbol"+e(n,"us","u","us"),r},loadingMore:function(){return"Datu ielāde…"},maximumSelected:function(t){var n="Jūs varat izvēlēties ne vairāk kā "+t.maximum;return n+=" element"+e(t.maximum,"us","u","us"),n},noResults:function(){return"Sakritību nav"},searching:function(){return"Meklēšana…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /dist/js/i18n/pt.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pt",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Por favor apague "+t+" ";return n+=t!=1?"caracteres":"caractere",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Introduza "+t+" ou mais caracteres";return n},loadingMore:function(){return"A carregar mais resultados…"},maximumSelected:function(e){var t="Apenas pode seleccionar "+e.maximum+" ";return t+=e.maximum!=1?"itens":"item",t},noResults:function(){return"Sem resultados"},searching:function(){return"A procurar…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /dist/js/i18n/ca.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ca",[],function(){return{errorLoading:function(){return"La càrrega ha fallat"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Si us plau, elimina "+t+" car";return t==1?n+="àcter":n+="àcters",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Si us plau, introdueix "+t+" car";return t==1?n+="àcter":n+="àcters",n},loadingMore:function(){return"Carregant més resultats…"},maximumSelected:function(e){var t="Només es pot seleccionar "+e.maximum+" element";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No s'han trobat resultats"},searching:function(){return"Cercant…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /dist/js/i18n/fr.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fr",[],function(){return{errorLoading:function(){return"Les résultats ne peuvent pas être chargés."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Supprimez "+t+" caractère"+(t>1?"s":"")},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Saisissez au moins "+t+" caractère"+(t>1?"s":"")},loadingMore:function(){return"Chargement de résultats supplémentaires…"},maximumSelected:function(e){return"Vous pouvez seulement sélectionner "+e.maximum+" élément"+(e.maximum>1?"s":"")},noResults:function(){return"Aucun résultat trouvé"},searching:function(){return"Recherche en cours…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /dist/js/i18n/it.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/it",[],function(){return{errorLoading:function(){return"I risultati non possono essere caricati."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Per favore cancella "+t+" caratter";return t!==1?n+="i":n+="e",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Per favore inserisci "+t+" o più caratteri";return n},loadingMore:function(){return"Caricando più risultati…"},maximumSelected:function(e){var t="Puoi selezionare solo "+e.maximum+" element";return e.maximum!==1?t+="i":t+="o",t},noResults:function(){return"Nessun risultato trovato"},searching:function(){return"Sto cercando…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /dist/js/i18n/ps.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ps",[],function(){return{errorLoading:function(){return"پايلي نه سي ترلاسه کېدای"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="د مهربانۍ لمخي "+t+" توری ړنګ کړئ";return t!=1&&(n=n.replace("توری","توري")),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="لږ تر لږه "+t+" يا ډېر توري وليکئ";return n},loadingMore:function(){return"نوري پايلي ترلاسه کيږي..."},maximumSelected:function(e){var t="تاسو يوازي "+e.maximum+" قلم په نښه کولای سی";return e.maximum!=1&&(t=t.replace("قلم","قلمونه")),t},noResults:function(){return"پايلي و نه موندل سوې"},searching:function(){return"لټول کيږي..."}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/js/select2/dropdown/stopPropagation.js: -------------------------------------------------------------------------------- 1 | define([ 2 | 3 | ], function () { 4 | function StopPropagation () { } 5 | 6 | StopPropagation.prototype.bind = function (decorated, container, $container) { 7 | decorated.call(this, container, $container); 8 | 9 | var stoppedEvents = [ 10 | 'blur', 11 | 'change', 12 | 'click', 13 | 'dblclick', 14 | 'focus', 15 | 'focusin', 16 | 'focusout', 17 | 'input', 18 | 'keydown', 19 | 'keyup', 20 | 'keypress', 21 | 'mousedown', 22 | 'mouseenter', 23 | 'mouseleave', 24 | 'mousemove', 25 | 'mouseover', 26 | 'mouseup', 27 | 'search', 28 | 'touchend', 29 | 'touchstart' 30 | ]; 31 | 32 | this.$dropdown.on(stoppedEvents.join(' '), function (evt) { 33 | evt.stopPropagation(); 34 | }); 35 | }; 36 | 37 | return StopPropagation; 38 | }); 39 | -------------------------------------------------------------------------------- /dist/js/i18n/gl.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/gl",[],function(){return{errorLoading:function(){return"Non foi posíbel cargar os resultados."},inputTooLong:function(e){var t=e.input.length-e.maximum;return t===1?"Elimine un carácter":"Elimine "+t+" caracteres"},inputTooShort:function(e){var t=e.minimum-e.input.length;return t===1?"Engada un carácter":"Engada "+t+" caracteres"},loadingMore:function(){return"Cargando máis resultados…"},maximumSelected:function(e){return e.maximum===1?"Só pode seleccionar un elemento":"Só pode seleccionar "+e.maximum+" elementos"},noResults:function(){return"Non se atoparon resultados"},searching:function(){return"Buscando…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /dist/js/i18n/sl.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sl",[],function(){return{errorLoading:function(){return"Zadetkov iskanja ni bilo mogoče naložiti."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Prosim zbrišite "+t+" znak";return t==2?n+="a":t!=1&&(n+="e"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Prosim vpišite še "+t+" znak";return t==2?n+="a":t!=1&&(n+="e"),n},loadingMore:function(){return"Nalagam več zadetkov…"},maximumSelected:function(e){var t="Označite lahko največ "+e.maximum+" predmet";return e.maximum==2?t+="a":e.maximum!=1&&(t+="e"),t},noResults:function(){return"Ni zadetkov."},searching:function(){return"Iščem…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/js/select2/i18n/zh-TW.js: -------------------------------------------------------------------------------- 1 | define(function () { 2 | // Chinese (Traditional) 3 | return { 4 | inputTooLong: function (args) { 5 | var overChars = args.input.length - args.maximum; 6 | 7 | var message = '請刪掉' + overChars + '個字元'; 8 | 9 | return message; 10 | }, 11 | inputTooShort: function (args) { 12 | var remainingChars = args.minimum - args.input.length; 13 | 14 | var message = '請再輸入' + remainingChars + '個字元'; 15 | 16 | return message; 17 | }, 18 | loadingMore: function () { 19 | return '載入中…'; 20 | }, 21 | maximumSelected: function (args) { 22 | var message = '你只能選擇最多' + args.maximum + '項'; 23 | 24 | return message; 25 | }, 26 | noResults: function () { 27 | return '沒有找到相符的項目'; 28 | }, 29 | searching: function () { 30 | return '搜尋中…'; 31 | } 32 | }; 33 | }); 34 | -------------------------------------------------------------------------------- /dist/js/i18n/es.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/es",[],function(){return{errorLoading:function(){return"No se pudieron cargar los resultados"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Por favor, elimine "+t+" car";return t==1?n+="ácter":n+="acteres",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Por favor, introduzca "+t+" car";return t==1?n+="ácter":n+="acteres",n},loadingMore:function(){return"Cargando más resultados…"},maximumSelected:function(e){var t="Sólo puede seleccionar "+e.maximum+" elemento";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No se encontraron resultados"},searching:function(){return"Buscando…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/js/select2/data/maximumInputLength.js: -------------------------------------------------------------------------------- 1 | define([ 2 | 3 | ], function () { 4 | function MaximumInputLength (decorated, $e, options) { 5 | this.maximumInputLength = options.get('maximumInputLength'); 6 | 7 | decorated.call(this, $e, options); 8 | } 9 | 10 | MaximumInputLength.prototype.query = function (decorated, params, callback) { 11 | params.term = params.term || ''; 12 | 13 | if (this.maximumInputLength > 0 && 14 | params.term.length > this.maximumInputLength) { 15 | this.trigger('results:message', { 16 | message: 'inputTooLong', 17 | args: { 18 | maximum: this.maximumInputLength, 19 | input: params.term, 20 | params: params 21 | } 22 | }); 23 | 24 | return; 25 | } 26 | 27 | decorated.call(this, params, callback); 28 | }; 29 | 30 | return MaximumInputLength; 31 | }); 32 | -------------------------------------------------------------------------------- /dist/js/i18n/nl.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/nl",[],function(){return{errorLoading:function(){return"De resultaten konden niet worden geladen."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Gelieve "+t+" karakters te verwijderen";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Gelieve "+t+" of meer karakters in te voeren";return n},loadingMore:function(){return"Meer resultaten laden…"},maximumSelected:function(e){var t=e.maximum==1?"kan":"kunnen",n="Er "+t+" maar "+e.maximum+" item";return e.maximum!=1&&(n+="s"),n+=" worden geselecteerd",n},noResults:function(){return"Geen resultaten gevonden…"},searching:function(){return"Zoeken…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /dist/js/i18n/ro.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ro",[],function(){return{errorLoading:function(){return"Rezultatele nu au putut fi incărcate."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vă rugăm să ștergeți"+t+" caracter";return t!==1&&(n+="e"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vă rugăm să introduceți "+t+" sau mai multe caractere";return n},loadingMore:function(){return"Se încarcă mai multe rezultate…"},maximumSelected:function(e){var t="Aveți voie să selectați cel mult "+e.maximum;return t+=" element",e.maximum!==1&&(t+="e"),t},noResults:function(){return"Nu au fost găsite rezultate"},searching:function(){return"Căutare…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /dist/js/i18n/lt.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/lt",[],function(){function e(e,t,n,r){return e%10===1&&(e%100<11||e%100>19)?t:e%10>=2&&e%10<=9&&(e%100<11||e%100>19)?n:r}return{inputTooLong:function(t){var n=t.input.length-t.maximum,r="Pašalinkite "+n+" simbol";return r+=e(n,"į","ius","ių"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Įrašykite dar "+n+" simbol";return r+=e(n,"į","ius","ių"),r},loadingMore:function(){return"Kraunama daugiau rezultatų…"},maximumSelected:function(t){var n="Jūs galite pasirinkti tik "+t.maximum+" element";return n+=e(t.maximum,"ą","us","ų"),n},noResults:function(){return"Atitikmenų nerasta"},searching:function(){return"Ieškoma…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/js/select2/translation.js: -------------------------------------------------------------------------------- 1 | define([ 2 | 'jquery', 3 | 'require' 4 | ], function ($, require) { 5 | function Translation (dict) { 6 | this.dict = dict || {}; 7 | } 8 | 9 | Translation.prototype.all = function () { 10 | return this.dict; 11 | }; 12 | 13 | Translation.prototype.get = function (key) { 14 | return this.dict[key]; 15 | }; 16 | 17 | Translation.prototype.extend = function (translation) { 18 | this.dict = $.extend({}, translation.all(), this.dict); 19 | }; 20 | 21 | // Static functions 22 | 23 | Translation._cache = {}; 24 | 25 | Translation.loadPath = function (path) { 26 | if (!(path in Translation._cache)) { 27 | var translations = require(path); 28 | 29 | Translation._cache[path] = translations; 30 | } 31 | 32 | return new Translation(Translation._cache[path]); 33 | }; 34 | 35 | return Translation; 36 | }); 37 | -------------------------------------------------------------------------------- /dist/js/i18n/pl.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pl",[],function(){var e=["znak","znaki","znaków"],t=["element","elementy","elementów"],n=function(t,n){if(t===1)return n[0];if(t>1&&t<=4)return n[1];if(t>=5)return n[2]};return{errorLoading:function(){return"Nie można załadować wyników."},inputTooLong:function(t){var r=t.input.length-t.maximum;return"Usuń "+r+" "+n(r,e)},inputTooShort:function(t){var r=t.minimum-t.input.length;return"Podaj przynajmniej "+r+" "+n(r,e)},loadingMore:function(){return"Trwa ładowanie…"},maximumSelected:function(e){return"Możesz zaznaczyć tylko "+e.maximum+" "+n(e.maximum,t)},noResults:function(){return"Brak wyników"},searching:function(){return"Trwa wyszukiwanie…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/js/select2/i18n/ar.js: -------------------------------------------------------------------------------- 1 | define(function () { 2 | // Arabic 3 | return { 4 | errorLoading: function () { 5 | return 'لا يمكن تحميل النتائج'; 6 | }, 7 | inputTooLong: function (args) { 8 | var overChars = args.input.length - args.maximum; 9 | 10 | return 'الرجاء حذف ' + overChars + ' عناصر'; 11 | }, 12 | inputTooShort: function (args) { 13 | var remainingChars = args.minimum - args.input.length; 14 | 15 | return 'الرجاء إضافة ' + remainingChars + ' عناصر'; 16 | }, 17 | loadingMore: function () { 18 | return 'جاري تحميل نتائج إضافية...'; 19 | }, 20 | maximumSelected: function (args) { 21 | return 'تستطيع إختيار ' + args.maximum + ' بنود فقط'; 22 | }, 23 | noResults: function () { 24 | return 'لم يتم العثور على أي نتائج'; 25 | }, 26 | searching: function () { 27 | return 'جاري البحث…'; 28 | } 29 | }; 30 | }); -------------------------------------------------------------------------------- /src/js/select2/selection/stopPropagation.js: -------------------------------------------------------------------------------- 1 | define([ 2 | 3 | ], function () { 4 | function StopPropagation () { } 5 | 6 | StopPropagation.prototype.bind = function (decorated, container, $container) { 7 | decorated.call(this, container, $container); 8 | 9 | var stoppedEvents = [ 10 | 'blur', 11 | 'change', 12 | 'click', 13 | 'dblclick', 14 | 'focus', 15 | 'focusin', 16 | 'focusout', 17 | 'input', 18 | 'keydown', 19 | 'keyup', 20 | 'keypress', 21 | 'mousedown', 22 | 'mouseenter', 23 | 'mouseleave', 24 | 'mousemove', 25 | 'mouseover', 26 | 'mouseup', 27 | 'search', 28 | 'touchend', 29 | 'touchstart' 30 | ]; 31 | 32 | this.$selection.on(stoppedEvents.join(' '), function (evt) { 33 | evt.stopPropagation(); 34 | }); 35 | }; 36 | 37 | return StopPropagation; 38 | }); 39 | -------------------------------------------------------------------------------- /tests/integration.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/js/select2/i18n/id.js: -------------------------------------------------------------------------------- 1 | define(function () { 2 | // Indonesian 3 | return { 4 | errorLoading: function () { 5 | return 'Data tidak boleh diambil.'; 6 | }, 7 | inputTooLong: function (args) { 8 | var overChars = args.input.length - args.maximum; 9 | 10 | return 'Hapuskan ' + overChars + ' huruf'; 11 | }, 12 | inputTooShort: function (args) { 13 | var remainingChars = args.minimum - args.input.length; 14 | 15 | return 'Masukkan ' + remainingChars + ' huruf lagi'; 16 | }, 17 | loadingMore: function () { 18 | return 'Mengambil data…'; 19 | }, 20 | maximumSelected: function (args) { 21 | return 'Anda hanya dapat memilih ' + args.maximum + ' pilihan'; 22 | }, 23 | noResults: function () { 24 | return 'Tidak ada data yang sesuai'; 25 | }, 26 | searching: function () { 27 | return 'Mencari…'; 28 | } 29 | }; 30 | }); 31 | -------------------------------------------------------------------------------- /dist/js/i18n/el.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/el",[],function(){return{errorLoading:function(){return"Τα αποτελέσματα δεν μπόρεσαν να φορτώσουν."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Παρακαλώ διαγράψτε "+t+" χαρακτήρ";return t==1&&(n+="α"),t!=1&&(n+="ες"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Παρακαλώ συμπληρώστε "+t+" ή περισσότερους χαρακτήρες";return n},loadingMore:function(){return"Φόρτωση περισσότερων αποτελεσμάτων…"},maximumSelected:function(e){var t="Μπορείτε να επιλέξετε μόνο "+e.maximum+" επιλογ";return e.maximum==1&&(t+="ή"),e.maximum!=1&&(t+="ές"),t},noResults:function(){return"Δεν βρέθηκαν αποτελέσματα"},searching:function(){return"Αναζήτηση…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /dist/js/i18n/bs.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/bs",[],function(){function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?n:r}return{errorLoading:function(){return"Preuzimanje nije uspijelo."},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Obrišite "+n+" simbol";return r+=e(n,"","a","a"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Ukucajte bar još "+n+" simbol";return r+=e(n,"","a","a"),r},loadingMore:function(){return"Preuzimanje još rezultata…"},maximumSelected:function(t){var n="Možete izabrati samo "+t.maximum+" stavk";return n+=e(t.maximum,"u","e","i"),n},noResults:function(){return"Ništa nije pronađeno"},searching:function(){return"Pretraga…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /dist/js/i18n/sr.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sr",[],function(){function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?n:r}return{errorLoading:function(){return"Preuzimanje nije uspelo."},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Obrišite "+n+" simbol";return r+=e(n,"","a","a"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Ukucajte bar još "+n+" simbol";return r+=e(n,"","a","a"),r},loadingMore:function(){return"Preuzimanje još rezultata…"},maximumSelected:function(t){var n="Možete izabrati samo "+t.maximum+" stavk";return n+=e(t.maximum,"u","e","i"),n},noResults:function(){return"Ništa nije pronađeno"},searching:function(){return"Pretraga…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /dist/js/i18n/sr-Cyrl.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sr-Cyrl",[],function(){function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?n:r}return{errorLoading:function(){return"Преузимање није успело."},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Обришите "+n+" симбол";return r+=e(n,"","а","а"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Укуцајте бар још "+n+" симбол";return r+=e(n,"","а","а"),r},loadingMore:function(){return"Преузимање још резултата…"},maximumSelected:function(t){var n="Можете изабрати само "+t.maximum+" ставк";return n+=e(t.maximum,"у","е","и"),n},noResults:function(){return"Ништа није пронађено"},searching:function(){return"Претрага…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /dist/js/i18n/uk.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/uk",[],function(){function e(e,t,n,r){return e%100>10&&e%100<15?r:e%10===1?t:e%10>1&&e%10<5?n:r}return{errorLoading:function(){return"Неможливо завантажити результати"},inputTooLong:function(t){var n=t.input.length-t.maximum;return"Будь ласка, видаліть "+n+" "+e(t.maximum,"літеру","літери","літер")},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Будь ласка, введіть "+t+" або більше літер"},loadingMore:function(){return"Завантаження інших результатів…"},maximumSelected:function(t){return"Ви можете вибрати лише "+t.maximum+" "+e(t.maximum,"пункт","пункти","пунктів")},noResults:function(){return"Нічого не знайдено"},searching:function(){return"Пошук…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/js/select2/i18n/nb.js: -------------------------------------------------------------------------------- 1 | define(function () { 2 | // Norwegian (Bokmål) 3 | return { 4 | errorLoading: function () { 5 | return 'Kunne ikke hente resultater.'; 6 | }, 7 | inputTooLong: function (args) { 8 | var overChars = args.input.length - args.maximum; 9 | 10 | return 'Vennligst fjern ' + overChars + ' tegn'; 11 | }, 12 | inputTooShort: function (args) { 13 | var remainingChars = args.minimum - args.input.length; 14 | 15 | return 'Vennligst skriv inn ' + remainingChars + ' tegn til'; 16 | }, 17 | loadingMore: function () { 18 | return 'Laster flere resultater…'; 19 | }, 20 | maximumSelected: function (args) { 21 | return 'Du kan velge maks ' + args.maximum + ' elementer'; 22 | }, 23 | noResults: function () { 24 | return 'Ingen treff'; 25 | }, 26 | searching: function () { 27 | return 'Søker…'; 28 | } 29 | }; 30 | }); 31 | -------------------------------------------------------------------------------- /src/js/select2/i18n/fi.js: -------------------------------------------------------------------------------- 1 | define(function () { 2 | // Finnish 3 | return { 4 | errorLoading: function () { 5 | return 'Tuloksia ei saatu ladattua.'; 6 | }, 7 | inputTooLong: function (args) { 8 | var overChars = args.input.length - args.maximum; 9 | 10 | return 'Ole hyvä ja anna ' + overChars + ' merkkiä vähemmän'; 11 | }, 12 | inputTooShort: function (args) { 13 | var remainingChars = args.minimum - args.input.length; 14 | 15 | return 'Ole hyvä ja anna ' + remainingChars + ' merkkiä lisää'; 16 | }, 17 | loadingMore: function () { 18 | return 'Ladataan lisää tuloksia…'; 19 | }, 20 | maximumSelected: function (args) { 21 | return 'Voit valita ainoastaan ' + args.maximum + ' kpl'; 22 | }, 23 | noResults: function () { 24 | return 'Ei tuloksia'; 25 | }, 26 | searching: function () { 27 | return 'Haetaan…'; 28 | } 29 | }; 30 | }); 31 | -------------------------------------------------------------------------------- /src/js/select2/dropdown/closeOnSelect.js: -------------------------------------------------------------------------------- 1 | define([ 2 | 3 | ], function () { 4 | function CloseOnSelect () { } 5 | 6 | CloseOnSelect.prototype.bind = function (decorated, container, $container) { 7 | var self = this; 8 | 9 | decorated.call(this, container, $container); 10 | 11 | container.on('select', function (evt) { 12 | self._selectTriggered(evt); 13 | }); 14 | 15 | container.on('unselect', function (evt) { 16 | self._selectTriggered(evt); 17 | }); 18 | }; 19 | 20 | CloseOnSelect.prototype._selectTriggered = function (_, evt) { 21 | var originalEvent = evt.originalEvent; 22 | 23 | // Don't close if the control key is being held 24 | if (originalEvent && originalEvent.ctrlKey) { 25 | return; 26 | } 27 | 28 | this.trigger('close', { 29 | originalEvent: originalEvent, 30 | originalSelect2Event: evt 31 | }); 32 | }; 33 | 34 | return CloseOnSelect; 35 | }); 36 | -------------------------------------------------------------------------------- /src/js/select2/i18n/ms.js: -------------------------------------------------------------------------------- 1 | define(function () { 2 | // Malay 3 | return { 4 | errorLoading: function () { 5 | return 'Keputusan tidak berjaya dimuatkan.'; 6 | }, 7 | inputTooLong: function (args) { 8 | var overChars = args.input.length - args.maximum; 9 | 10 | return 'Sila hapuskan ' + overChars + ' aksara'; 11 | }, 12 | inputTooShort: function (args) { 13 | var remainingChars = args.minimum - args.input.length; 14 | 15 | return 'Sila masukkan ' + remainingChars + ' atau lebih aksara'; 16 | }, 17 | loadingMore: function () { 18 | return 'Sedang memuatkan keputusan…'; 19 | }, 20 | maximumSelected: function (args) { 21 | return 'Anda hanya boleh memilih ' + args.maximum + ' pilihan'; 22 | }, 23 | noResults: function () { 24 | return 'Tiada padanan yang ditemui'; 25 | }, 26 | searching: function () { 27 | return 'Mencari…'; 28 | } 29 | }; 30 | }); -------------------------------------------------------------------------------- /src/js/select2/i18n/hu.js: -------------------------------------------------------------------------------- 1 | define(function () { 2 | // Hungarian 3 | return { 4 | errorLoading: function () { 5 | return 'Az eredmények betöltése nem sikerült.'; 6 | }, 7 | inputTooLong: function (args) { 8 | var overChars = args.input.length - args.maximum; 9 | 10 | return 'Túl hosszú. ' + overChars + ' karakterrel több, mint kellene.'; 11 | }, 12 | inputTooShort: function (args) { 13 | var remainingChars = args.minimum - args.input.length; 14 | 15 | return 'Túl rövid. Még ' + remainingChars + ' karakter hiányzik.'; 16 | }, 17 | loadingMore: function () { 18 | return 'Töltés…'; 19 | }, 20 | maximumSelected: function (args) { 21 | return 'Csak ' + args.maximum + ' elemet lehet kiválasztani.'; 22 | }, 23 | noResults: function () { 24 | return 'Nincs találat.'; 25 | }, 26 | searching: function () { 27 | return 'Keresés…'; 28 | } 29 | }; 30 | }); 31 | -------------------------------------------------------------------------------- /dist/js/i18n/ru.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ru",[],function(){function e(e,t,n,r){return e%10<5&&e%10>0&&e%100<5||e%100>20?e%10>1?n:t:r}return{errorLoading:function(){return"Невозможно загрузить результаты"},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Пожалуйста, введите на "+n+" символ";return r+=e(n,"","a","ов"),r+=" меньше",r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Пожалуйста, введите еще хотя бы "+n+" символ";return r+=e(n,"","a","ов"),r},loadingMore:function(){return"Загрузка данных…"},maximumSelected:function(t){var n="Вы можете выбрать не более "+t.maximum+" элемент";return n+=e(t.maximum,"","a","ов"),n},noResults:function(){return"Совпадений не найдено"},searching:function(){return"Поиск…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/js/select2/i18n/zh-CN.js: -------------------------------------------------------------------------------- 1 | define(function () { 2 | // Chinese (Simplified) 3 | return { 4 | errorLoading: function () { 5 | return '无法载入结果。'; 6 | }, 7 | inputTooLong: function (args) { 8 | var overChars = args.input.length - args.maximum; 9 | 10 | var message = '请删除' + overChars + '个字符'; 11 | 12 | return message; 13 | }, 14 | inputTooShort: function (args) { 15 | var remainingChars = args.minimum - args.input.length; 16 | 17 | var message = '请再输入至少' + remainingChars + '个字符'; 18 | 19 | return message; 20 | }, 21 | loadingMore: function () { 22 | return '载入更多结果…'; 23 | }, 24 | maximumSelected: function (args) { 25 | var message = '最多只能选择' + args.maximum + '个项目'; 26 | 27 | return message; 28 | }, 29 | noResults: function () { 30 | return '未找到结果'; 31 | }, 32 | searching: function () { 33 | return '搜索中…'; 34 | } 35 | }; 36 | }); 37 | -------------------------------------------------------------------------------- /src/js/select2/i18n/ja.js: -------------------------------------------------------------------------------- 1 | define(function () { 2 | // Japanese 3 | return { 4 | errorLoading: function () { 5 | return '結果が読み込まれませんでした'; 6 | }, 7 | inputTooLong: function (args) { 8 | var overChars = args.input.length - args.maximum; 9 | 10 | var message = overChars + ' 文字を削除してください'; 11 | 12 | return message; 13 | }, 14 | inputTooShort: function (args) { 15 | var remainingChars = args.minimum - args.input.length; 16 | 17 | var message = '少なくとも ' + remainingChars + ' 文字を入力してください'; 18 | 19 | return message; 20 | }, 21 | loadingMore: function () { 22 | return '読み込み中…'; 23 | }, 24 | maximumSelected: function (args) { 25 | var message = args.maximum + ' 件しか選択できません'; 26 | 27 | return message; 28 | }, 29 | noResults: function () { 30 | return '対象が見つかりません'; 31 | }, 32 | searching: function () { 33 | return '検索しています…'; 34 | } 35 | }; 36 | }); 37 | -------------------------------------------------------------------------------- /dist/js/i18n/hsb.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hsb",[],function(){var e=["znamješko","znamješce","znamješka","znamješkow"],t=["zapisk","zapiskaj","zapiski","zapiskow"],n=function(t,n){if(t===1)return n[0];if(t===2)return n[1];if(t>2&&t<=4)return n[2];if(t>=5)return n[3]};return{errorLoading:function(){return"Wuslědki njedachu so začitać."},inputTooLong:function(t){var r=t.input.length-t.maximum;return"Prošu zhašej "+r+" "+n(r,e)},inputTooShort:function(t){var r=t.minimum-t.input.length;return"Prošu zapodaj znajmjeńša "+r+" "+n(r,e)},loadingMore:function(){return"Dalše wuslědki so začitaja…"},maximumSelected:function(e){return"Móžeš jenož "+e.maximum+" "+n(e.maximum,t)+"wubrać"},noResults:function(){return"Žane wuslědki namakane"},searching:function(){return"Pyta so…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/js/select2/i18n/ko.js: -------------------------------------------------------------------------------- 1 | define(function () { 2 | // Korean 3 | return { 4 | errorLoading: function () { 5 | return '결과를 불러올 수 없습니다.'; 6 | }, 7 | inputTooLong: function (args) { 8 | var overChars = args.input.length - args.maximum; 9 | 10 | var message = '너무 깁니다. ' + overChars + ' 글자 지워주세요.'; 11 | 12 | return message; 13 | }, 14 | inputTooShort: function (args) { 15 | var remainingChars = args.minimum - args.input.length; 16 | 17 | var message = '너무 짧습니다. ' + remainingChars + ' 글자 더 입력해주세요.'; 18 | 19 | return message; 20 | }, 21 | loadingMore: function () { 22 | return '불러오는 중…'; 23 | }, 24 | maximumSelected: function (args) { 25 | var message = '최대 ' + args.maximum + '개까지만 선택 가능합니다.'; 26 | 27 | return message; 28 | }, 29 | noResults: function () { 30 | return '결과가 없습니다.'; 31 | }, 32 | searching: function () { 33 | return '검색 중…'; 34 | } 35 | }; 36 | }); 37 | -------------------------------------------------------------------------------- /dist/js/i18n/dsb.js: -------------------------------------------------------------------------------- 1 | /*! Select2 4.0.6-rc.1 | https://github.com/select2/select2/blob/master/LICENSE.md */ 2 | 3 | (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/dsb",[],function(){var e=["znamuško","znamušce","znamuška","znamuškow"],t=["zapisk","zapiska","zapiski","zapiskow"],n=function(t,n){if(t===1)return n[0];if(t===2)return n[1];if(t>2&&t<=4)return n[2];if(t>=5)return n[3]};return{errorLoading:function(){return"Wuslědki njejsu se dali zacytaś."},inputTooLong:function(t){var r=t.input.length-t.maximum;return"Pšosym lašuj "+r+" "+n(r,e)},inputTooShort:function(t){var r=t.minimum-t.input.length;return"Pšosym zapódaj nanejmjenjej "+r+" "+n(r,e)},loadingMore:function(){return"Dalšne wuslědki se zacytaju…"},maximumSelected:function(e){return"Móžoš jano "+e.maximum+" "+n(e.maximum,t)+"wubraś."},noResults:function(){return"Žedne wuslědki namakane"},searching:function(){return"Pyta se…"}}}),{define:e.define,require:e.require}})(); -------------------------------------------------------------------------------- /src/js/select2/data/maximumSelectionLength.js: -------------------------------------------------------------------------------- 1 | define([ 2 | 3 | ], function (){ 4 | function MaximumSelectionLength (decorated, $e, options) { 5 | this.maximumSelectionLength = options.get('maximumSelectionLength'); 6 | 7 | decorated.call(this, $e, options); 8 | } 9 | 10 | MaximumSelectionLength.prototype.query = 11 | function (decorated, params, callback) { 12 | var self = this; 13 | 14 | this.current(function (currentData) { 15 | var count = currentData != null ? currentData.length : 0; 16 | if (self.maximumSelectionLength > 0 && 17 | count >= self.maximumSelectionLength) { 18 | self.trigger('results:message', { 19 | message: 'maximumSelected', 20 | args: { 21 | maximum: self.maximumSelectionLength 22 | } 23 | }); 24 | return; 25 | } 26 | decorated.call(self, params, callback); 27 | }); 28 | }; 29 | 30 | return MaximumSelectionLength; 31 | }); 32 | -------------------------------------------------------------------------------- /src/js/select2/i18n/tk.js: -------------------------------------------------------------------------------- 1 | define(function () { 2 | // Turkmen 3 | return { 4 | errorLoading: function (){ 5 | return 'Netije ýüklenmedi.'; 6 | }, 7 | inputTooLong: function (args) { 8 | var overChars = args.input.length - args.maximum; 9 | 10 | var message = overChars + ' harp bozuň.'; 11 | 12 | return message; 13 | }, 14 | inputTooShort: function (args) { 15 | var remainingChars = args.minimum - args.input.length; 16 | 17 | var message = 'Ýene-de iň az ' + remainingChars + ' harp ýazyň.'; 18 | 19 | return message; 20 | }, 21 | loadingMore: function () { 22 | return 'Köpräk netije görkezilýär…'; 23 | }, 24 | maximumSelected: function (args) { 25 | var message = 'Diňe ' + args.maximum + ' sanysyny saýlaň.'; 26 | 27 | return message; 28 | }, 29 | noResults: function () { 30 | return 'Netije tapylmady.'; 31 | }, 32 | searching: function () { 33 | return 'Gözlenýär…'; 34 | } 35 | }; 36 | }); 37 | -------------------------------------------------------------------------------- /select2.jquery.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "select2", 3 | "title": "Select2", 4 | "description": "Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.", 5 | "keywords": [ 6 | "select", 7 | "autocomplete", 8 | "typeahead", 9 | "dropdown", 10 | "multiselect", 11 | "tag", 12 | "tagging" 13 | ], 14 | "version": "4.0.6-rc.1", 15 | "author": { 16 | "name": "Kevin Brown", 17 | "url": "https://github.com/kevin-brown" 18 | }, 19 | "licenses": [ 20 | { 21 | "type": "MIT", 22 | "url": "http://opensource.org/licenses/MIT" 23 | } 24 | ], 25 | "bugs": "https://github.com/select2/select2/issues", 26 | "homepage": "https://select2.org", 27 | "docs": "https://select2.org", 28 | "download": "https://github.com/select2/select2/releases", 29 | "dependencies": { 30 | "jquery": ">=1.7.2" 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/js/select2/i18n/tr.js: -------------------------------------------------------------------------------- 1 | define(function () { 2 | // Turkish 3 | return { 4 | errorLoading: function (){ 5 | return 'Sonuç yüklenemedi'; 6 | }, 7 | inputTooLong: function (args) { 8 | var overChars = args.input.length - args.maximum; 9 | 10 | var message = overChars + ' karakter daha girmelisiniz'; 11 | 12 | return message; 13 | }, 14 | inputTooShort: function (args) { 15 | var remainingChars = args.minimum - args.input.length; 16 | 17 | var message = 'En az ' + remainingChars + ' karakter daha girmelisiniz'; 18 | 19 | return message; 20 | }, 21 | loadingMore: function () { 22 | return 'Daha fazla…'; 23 | }, 24 | maximumSelected: function (args) { 25 | var message = 'Sadece ' + args.maximum + ' seçim yapabilirsiniz'; 26 | 27 | return message; 28 | }, 29 | noResults: function () { 30 | return 'Sonuç bulunamadı'; 31 | }, 32 | searching: function () { 33 | return 'Aranıyor…'; 34 | } 35 | }; 36 | }); 37 | -------------------------------------------------------------------------------- /src/js/select2/i18n/th.js: -------------------------------------------------------------------------------- 1 | define(function () { 2 | // Thai 3 | return { 4 | errorLoading: function () { 5 | return 'ไม่สามารถค้นข้อมูลได้'; 6 | }, 7 | inputTooLong: function (args) { 8 | var overChars = args.input.length - args.maximum; 9 | 10 | var message = 'โปรดลบออก ' + overChars + ' ตัวอักษร'; 11 | 12 | return message; 13 | }, 14 | inputTooShort: function (args) { 15 | var remainingChars = args.minimum - args.input.length; 16 | 17 | var message = 'โปรดพิมพ์เพิ่มอีก ' + remainingChars + ' ตัวอักษร'; 18 | 19 | return message; 20 | }, 21 | loadingMore: function () { 22 | return 'กำลังค้นข้อมูลเพิ่ม…'; 23 | }, 24 | maximumSelected: function (args) { 25 | var message = 'คุณสามารถเลือกได้ไม่เกิน ' + args.maximum + ' รายการ'; 26 | 27 | return message; 28 | }, 29 | noResults: function () { 30 | return 'ไม่พบข้อมูล'; 31 | }, 32 | searching: function () { 33 | return 'กำลังค้นข้อมูล…'; 34 | } 35 | }; 36 | }); 37 | -------------------------------------------------------------------------------- /src/js/select2/i18n/km.js: -------------------------------------------------------------------------------- 1 | define(function () { 2 | // Khmer 3 | return { 4 | errorLoading: function () { 5 | return 'មិនអាចទាញយកទិន្នន័យ'; 6 | }, 7 | inputTooLong: function (args) { 8 | var overChars = args.input.length - args.maximum; 9 | 10 | var message = 'សូមលុបចេញ ' + overChars + ' អក្សរ'; 11 | 12 | return message; 13 | }, 14 | inputTooShort: function (args) { 15 | var remainingChars = args.minimum - args.input.length; 16 | 17 | var message = 'សូមបញ្ចូល' + remainingChars + ' អក្សរ រឺ ច្រើនជាងនេះ'; 18 | 19 | return message; 20 | }, 21 | loadingMore: function () { 22 | return 'កំពុងទាញយកទិន្នន័យបន្ថែម...'; 23 | }, 24 | maximumSelected: function (args) { 25 | var message = 'អ្នកអាចជ្រើសរើសបានតែ ' + args.maximum + ' ជម្រើសប៉ុណ្ណោះ'; 26 | 27 | return message; 28 | }, 29 | noResults: function () { 30 | return 'មិនមានលទ្ធផល'; 31 | }, 32 | searching: function () { 33 | return 'កំពុងស្វែងរក...'; 34 | } 35 | }; 36 | }); 37 | -------------------------------------------------------------------------------- /src/js/select2/i18n/vi.js: -------------------------------------------------------------------------------- 1 | define(function () { 2 | // Vietnamese 3 | return { 4 | inputTooLong: function (args) { 5 | var overChars = args.input.length - args.maximum; 6 | 7 | var message = 'Vui lòng nhập ít hơn ' + overChars + ' ký tự'; 8 | 9 | if (overChars != 1) { 10 | message += 's'; 11 | } 12 | 13 | return message; 14 | }, 15 | inputTooShort: function (args) { 16 | var remainingChars = args.minimum - args.input.length; 17 | 18 | var message = 'Vui lòng nhập nhiều hơn ' + remainingChars + ' ký tự'; 19 | 20 | return message; 21 | }, 22 | loadingMore: function () { 23 | return 'Đang lấy thêm kết quả…'; 24 | }, 25 | maximumSelected: function (args) { 26 | var message = 'Chỉ có thể chọn được ' + args.maximum + ' lựa chọn'; 27 | 28 | return message; 29 | }, 30 | noResults: function () { 31 | return 'Không tìm thấy kết quả'; 32 | }, 33 | searching: function () { 34 | return 'Đang tìm…'; 35 | } 36 | }; 37 | }); 38 | -------------------------------------------------------------------------------- /src/js/select2/i18n/da.js: -------------------------------------------------------------------------------- 1 | define(function () { 2 | // Danish 3 | return { 4 | errorLoading: function () { 5 | return 'Resultaterne kunne ikke indlæses.'; 6 | }, 7 | inputTooLong: function (args) { 8 | var overChars = args.input.length - args.maximum; 9 | 10 | return 'Angiv venligst ' + overChars + ' tegn mindre'; 11 | }, 12 | inputTooShort: function (args) { 13 | var remainingChars = args.minimum - args.input.length; 14 | 15 | return 'Angiv venligst ' + remainingChars + ' tegn mere'; 16 | }, 17 | loadingMore: function () { 18 | return 'Indlæser flere resultater…'; 19 | }, 20 | maximumSelected: function (args) { 21 | var message = 'Du kan kun vælge ' + args.maximum + ' emne'; 22 | 23 | if (args.maximum != 1) { 24 | message += 'r'; 25 | } 26 | 27 | return message; 28 | }, 29 | noResults: function () { 30 | return 'Ingen resultater fundet'; 31 | }, 32 | searching: function () { 33 | return 'Søger…'; 34 | } 35 | }; 36 | }); -------------------------------------------------------------------------------- /src/js/select2/i18n/sv.js: -------------------------------------------------------------------------------- 1 | define(function () { 2 | // Swedish 3 | return { 4 | errorLoading: function () { 5 | return 'Resultat kunde inte laddas.'; 6 | }, 7 | inputTooLong: function (args) { 8 | var overChars = args.input.length - args.maximum; 9 | 10 | var message = 'Vänligen sudda ut ' + overChars + ' tecken'; 11 | 12 | return message; 13 | }, 14 | inputTooShort: function (args) { 15 | var remainingChars = args.minimum - args.input.length; 16 | 17 | var message = 'Vänligen skriv in ' + remainingChars + 18 | ' eller fler tecken'; 19 | 20 | return message; 21 | }, 22 | loadingMore: function () { 23 | return 'Laddar fler resultat…'; 24 | }, 25 | maximumSelected: function (args) { 26 | var message = 'Du kan max välja ' + args.maximum + ' element'; 27 | 28 | return message; 29 | }, 30 | noResults: function () { 31 | return 'Inga träffar'; 32 | }, 33 | searching: function () { 34 | return 'Söker…'; 35 | } 36 | }; 37 | }); 38 | -------------------------------------------------------------------------------- /src/scss/theme/classic/_defaults.scss: -------------------------------------------------------------------------------- 1 | $remove-color: #888 !default; 2 | $remove-hover-color: #555 !default; 3 | $remove-width: 20px !default; 4 | 5 | $selection-color: #444 !default; 6 | 7 | $border-color: #aaa !default; 8 | $border-radius: 4px !default; 9 | 10 | $focus-border-color: #5897fb !default; 11 | 12 | $container-height: 28px !default; 13 | 14 | $selection-bg-top-color: white !default; 15 | $selection-bg-bottom-color: #eeeeee !default; 16 | 17 | $container-placeholder-color: #999 !default; 18 | 19 | $container-focus-border-color: blue !default; 20 | 21 | $selection-opened-bg-top-color: $selection-bg-bottom-color !default; 22 | $selection-opened-bg-bottom-color: $selection-bg-top-color !default; 23 | 24 | $dropdown-z-index: 1 !default; 25 | 26 | $dropdown-bg-color: $selection-bg-top-color !default; 27 | 28 | $results-max-height: 200px !default; 29 | $results-nested-padding: 20px !default; 30 | 31 | $results-choice-bg-hover-color: #3875d7 !default; 32 | $results-choice-fg-hover-color: white !default; 33 | 34 | $results-choice-fg-unselectable-color: grey !default; 35 | -------------------------------------------------------------------------------- /src/js/select2/dropdown/minimumResultsForSearch.js: -------------------------------------------------------------------------------- 1 | define([ 2 | 3 | ], function () { 4 | function countResults (data) { 5 | var count = 0; 6 | 7 | for (var d = 0; d < data.length; d++) { 8 | var item = data[d]; 9 | 10 | if (item.children) { 11 | count += countResults(item.children); 12 | } else { 13 | count++; 14 | } 15 | } 16 | 17 | return count; 18 | } 19 | 20 | function MinimumResultsForSearch (decorated, $element, options, dataAdapter) { 21 | this.minimumResultsForSearch = options.get('minimumResultsForSearch'); 22 | 23 | if (this.minimumResultsForSearch < 0) { 24 | this.minimumResultsForSearch = Infinity; 25 | } 26 | 27 | decorated.call(this, $element, options, dataAdapter); 28 | } 29 | 30 | MinimumResultsForSearch.prototype.showSearch = function (decorated, params) { 31 | if (countResults(params.data.results) < this.minimumResultsForSearch) { 32 | return false; 33 | } 34 | 35 | return decorated.call(this, params); 36 | }; 37 | 38 | return MinimumResultsForSearch; 39 | }); 40 | -------------------------------------------------------------------------------- /src/js/select2/i18n/ka.js: -------------------------------------------------------------------------------- 1 | define(function () { 2 | // Georgian 3 | return { 4 | errorLoading: function () { 5 | return 'მონაცემების ჩატვირთვა შეუძლებელია.'; 6 | }, 7 | inputTooLong: function (args) { 8 | var overChars = args.input.length - args.maximum; 9 | 10 | var message = 'გთხოვთ აკრიფეთ ' + overChars + ' სიმბოლოთი ნაკლები'; 11 | 12 | return message; 13 | }, 14 | inputTooShort: function (args) { 15 | var remainingChars = args.minimum - args.input.length; 16 | 17 | var message = 'გთხოვთ აკრიფეთ ' + remainingChars + ' სიმბოლო ან მეტი'; 18 | 19 | return message; 20 | }, 21 | loadingMore: function () { 22 | return 'მონაცემების ჩატვირთვა…'; 23 | }, 24 | maximumSelected: function (args) { 25 | var message = 'თქვენ შეგიძლიათ აირჩიოთ არაუმეტეს ' + args.maximum + 26 | ' ელემენტი'; 27 | 28 | return message; 29 | }, 30 | noResults: function () { 31 | return 'რეზულტატი არ მოიძებნა'; 32 | }, 33 | searching: function () { 34 | return 'ძიება…'; 35 | } 36 | }; 37 | }); 38 | -------------------------------------------------------------------------------- /src/scss/mixins/_gradients.scss: -------------------------------------------------------------------------------- 1 | // https://github.com/twbs/bootstrap-sass/blob/3.3-stable/assets/stylesheets/bootstrap/mixins/_gradients.scss#L17-L27 2 | 3 | // Vertical gradient, from top to bottom 4 | // 5 | // Creates two color stops, start and end, by specifying a color and position for each color stop. 6 | // Color stops are not available in IE9 and below. 7 | @mixin gradient-vertical($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) { 8 | background-image: -webkit-linear-gradient(top, $start-color $start-percent, $end-color $end-percent); // Safari 5.1-6, Chrome 10+ 9 | background-image: -o-linear-gradient(top, $start-color $start-percent, $end-color $end-percent); // Opera 12 10 | background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+ 11 | background-repeat: repeat-x; 12 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=0); // IE9 and down 13 | } 14 | -------------------------------------------------------------------------------- /tests/dropdown/stopPropagation-tests.js: -------------------------------------------------------------------------------- 1 | module('Dropdown - Stoping event propagation'); 2 | 3 | var Dropdown = require('select2/dropdown'); 4 | var StopPropagation = require('select2/dropdown/stopPropagation'); 5 | 6 | var $ = require('jquery'); 7 | var Options = require('select2/options'); 8 | var Utils = require('select2/utils'); 9 | 10 | var CustomDropdown = Utils.Decorate(Dropdown, StopPropagation); 11 | 12 | var options = new Options(); 13 | 14 | test('click event does not propagate', function (assert) { 15 | assert.expect(1); 16 | 17 | var $container = $('#qunit-fixture .event-container'); 18 | var container = new MockContainer(); 19 | 20 | var dropdown = new CustomDropdown($('#qunit-fixture select'), options); 21 | 22 | var $dropdown = dropdown.render(); 23 | dropdown.bind(container, $container); 24 | 25 | $container.append($dropdown); 26 | $container.on('click', function () { 27 | assert.ok(false, 'The click event should have been stopped'); 28 | }); 29 | 30 | $dropdown.trigger('click'); 31 | 32 | assert.ok(true, 'Something went wrong if this failed'); 33 | }); 34 | -------------------------------------------------------------------------------- /src/js/select2/dropdown.js: -------------------------------------------------------------------------------- 1 | define([ 2 | 'jquery', 3 | './utils' 4 | ], function ($, Utils) { 5 | function Dropdown ($element, options) { 6 | this.$element = $element; 7 | this.options = options; 8 | 9 | Dropdown.__super__.constructor.call(this); 10 | } 11 | 12 | Utils.Extend(Dropdown, Utils.Observable); 13 | 14 | Dropdown.prototype.render = function () { 15 | var $dropdown = $( 16 | '' + 17 | '' + 18 | '' 19 | ); 20 | 21 | $dropdown.attr('dir', this.options.get('dir')); 22 | 23 | this.$dropdown = $dropdown; 24 | 25 | return $dropdown; 26 | }; 27 | 28 | Dropdown.prototype.bind = function () { 29 | // Should be implemented in subclasses 30 | }; 31 | 32 | Dropdown.prototype.position = function ($dropdown, $container) { 33 | // Should be implmented in subclasses 34 | }; 35 | 36 | Dropdown.prototype.destroy = function () { 37 | // Remove the dropdown from the DOM 38 | this.$dropdown.remove(); 39 | }; 40 | 41 | return Dropdown; 42 | }); 43 | -------------------------------------------------------------------------------- /src/js/select2/i18n/hy.js: -------------------------------------------------------------------------------- 1 | define(function () { 2 | // Armenian 3 | return { 4 | errorLoading: function () { 5 | return 'Արդյունքները հնարավոր չէ բեռնել։'; 6 | }, 7 | inputTooLong: function (args) { 8 | var overChars = args.input.length - args.maximum; 9 | 10 | var message = 'Խնդրում ենք հեռացնել ' + overChars + ' նշան'; 11 | 12 | return message; 13 | }, 14 | inputTooShort: function (args) { 15 | var remainingChars = args.minimum - args.input.length; 16 | 17 | var message = 'Խնդրում ենք մուտքագրել ' + remainingChars + 18 | ' կամ ավել նշաններ'; 19 | 20 | return message; 21 | }, 22 | loadingMore: function () { 23 | return 'Բեռնվում են նոր արդյունքներ․․․'; 24 | }, 25 | maximumSelected: function (args) { 26 | var message = 'Դուք կարող եք ընտրել առավելագույնը ' + args.maximum + 27 | ' կետ'; 28 | 29 | return message; 30 | }, 31 | noResults: function () { 32 | return 'Արդյունքներ չեն գտնվել'; 33 | }, 34 | searching: function () { 35 | return 'Որոնում․․․'; 36 | } 37 | }; 38 | }); 39 | -------------------------------------------------------------------------------- /src/js/select2/i18n/fr.js: -------------------------------------------------------------------------------- 1 | define(function () { 2 | // French 3 | return { 4 | errorLoading: function () { 5 | return 'Les résultats ne peuvent pas être chargés.'; 6 | }, 7 | inputTooLong: function (args) { 8 | var overChars = args.input.length - args.maximum; 9 | 10 | return 'Supprimez ' + overChars + ' caractère' + 11 | ((overChars > 1) ? 's' : ''); 12 | }, 13 | inputTooShort: function (args) { 14 | var remainingChars = args.minimum - args.input.length; 15 | 16 | return 'Saisissez au moins ' + remainingChars + ' caractère' + 17 | ((remainingChars > 1) ? 's' : ''); 18 | }, 19 | loadingMore: function () { 20 | return 'Chargement de résultats supplémentaires…'; 21 | }, 22 | maximumSelected: function (args) { 23 | return 'Vous pouvez seulement sélectionner ' + args.maximum + 24 | ' élément' + ((args.maximum > 1) ? 's' : ''); 25 | }, 26 | noResults: function () { 27 | return 'Aucun résultat trouvé'; 28 | }, 29 | searching: function () { 30 | return 'Recherche en cours…'; 31 | } 32 | }; 33 | }); 34 | -------------------------------------------------------------------------------- /src/js/select2/i18n/is.js: -------------------------------------------------------------------------------- 1 | define(function () { 2 | // Icelandic 3 | return { 4 | inputTooLong: function (args) { 5 | var overChars = args.input.length - args.maximum; 6 | 7 | var message = 'Vinsamlegast styttið texta um ' + overChars + ' staf'; 8 | 9 | if (overChars <= 1) { 10 | return message; 11 | } 12 | 13 | return message + 'i'; 14 | }, 15 | inputTooShort: function (args) { 16 | var remainingChars = args.minimum - args.input.length; 17 | 18 | var message = 'Vinsamlegast skrifið ' + remainingChars + ' staf'; 19 | 20 | if (remainingChars > 1) { 21 | message += 'i'; 22 | } 23 | 24 | message += ' í viðbót'; 25 | 26 | return message; 27 | }, 28 | loadingMore: function () { 29 | return 'Sæki fleiri niðurstöður…'; 30 | }, 31 | maximumSelected: function (args) { 32 | return 'Þú getur aðeins valið ' + args.maximum + ' atriði'; 33 | }, 34 | noResults: function () { 35 | return 'Ekkert fannst'; 36 | }, 37 | searching: function () { 38 | return 'Leita…'; 39 | } 40 | }; 41 | }); 42 | -------------------------------------------------------------------------------- /tests/utils/escapeMarkup-tests.js: -------------------------------------------------------------------------------- 1 | module('Utils - escapeMarkup'); 2 | 3 | var Utils = require('select2/utils'); 4 | 5 | test('text passes through', function (assert) { 6 | var text = 'testing this'; 7 | var escaped = Utils.escapeMarkup(text); 8 | 9 | assert.equal(text, escaped); 10 | }); 11 | 12 | test('html tags are escaped', function (assert) { 13 | var text = ''; 14 | var escaped = Utils.escapeMarkup(text); 15 | 16 | assert.notEqual(text, escaped); 17 | assert.equal(escaped.indexOf('