├── .browserslistrc ├── .cspell-words.txt ├── .cspell.json ├── .editorconfig ├── .github ├── FUNDING.yml ├── dependabot.yml └── workflows │ ├── deploy.yml │ └── test.yml ├── .gitignore ├── .npmignore ├── CHANGELOG.md ├── LICENSE ├── README.md ├── bower.json ├── dist ├── locale │ ├── multiple-select-cz-CS.js │ ├── multiple-select-cz-CS.min.js │ ├── multiple-select-da-DK.js │ ├── multiple-select-da-DK.min.js │ ├── multiple-select-en-US.js │ ├── multiple-select-en-US.min.js │ ├── multiple-select-es-ES.js │ ├── multiple-select-es-ES.min.js │ ├── multiple-select-fr-FR.js │ ├── multiple-select-fr-FR.min.js │ ├── multiple-select-hu-HU.js │ ├── multiple-select-hu-HU.min.js │ ├── multiple-select-id-ID.js │ ├── multiple-select-id-ID.min.js │ ├── multiple-select-it-IT.js │ ├── multiple-select-it-IT.min.js │ ├── multiple-select-ja-JP.js │ ├── multiple-select-ja-JP.min.js │ ├── multiple-select-pt-BR.js │ ├── multiple-select-pt-BR.min.js │ ├── multiple-select-ru-RU.js │ ├── multiple-select-ru-RU.min.js │ ├── multiple-select-vi-VN.js │ ├── multiple-select-vi-VN.min.js │ ├── multiple-select-zh-CN.js │ ├── multiple-select-zh-CN.min.js │ ├── multiple-select-zh-TW.js │ └── multiple-select-zh-TW.min.js ├── multiple-select-locale-all.js ├── multiple-select-locale-all.min.js ├── multiple-select-vue.js ├── multiple-select-vue.umd.js ├── multiple-select.css ├── multiple-select.js ├── multiple-select.min.css ├── multiple-select.min.js └── themes │ ├── bootstrap.css │ └── bootstrap.min.css ├── eslint.config.js ├── index.d.ts ├── multiple-select.jquery.json ├── package.json ├── rollup.config.js ├── site ├── .gitignore ├── crowdin.yaml ├── docs │ ├── browser.md │ ├── component.md │ ├── download.md │ ├── events.md │ ├── introduction.md │ ├── localizations.md │ ├── methods.md │ ├── options.md │ ├── themes.md │ ├── usage.md │ ├── webpack.md │ └── whats-include.md └── website │ ├── core │ └── Footer.js │ ├── languages.js │ ├── package.json │ ├── pages │ ├── en │ │ ├── help-with-translations.js │ │ └── index.js │ └── examples.html │ ├── sidebars.json │ ├── siteConfig.js │ └── static │ ├── CNAME │ ├── css │ ├── custom.css │ ├── examples.css │ └── template.css │ ├── img │ └── favicon.png │ ├── js │ ├── examples.js │ └── template.js │ └── templates │ ├── animate.html │ ├── auto-width.html │ ├── basic.html │ ├── check-uncheck.html │ ├── checkAll-uncheckAll.html │ ├── checkInvert.html │ ├── classes.html │ ├── container.html │ ├── custom-dropdown-width.html │ ├── custom-filter.html │ ├── data.html │ ├── destroy.html │ ├── disabled.html │ ├── display-delimiter.html │ ├── display-title.html │ ├── display-values.html │ ├── divider.html │ ├── ellipsis.html │ ├── enable-disable.html │ ├── events.html │ ├── filter-accept-on-enter.html │ ├── filter-by-data-length.html │ ├── filter-group.html │ ├── filter-placeholder.html │ ├── filter-select-all.html │ ├── filter.html │ ├── focus-blur.html │ ├── getData.html │ ├── getOptions.html │ ├── hide-optgroup-checkboxes.html │ ├── hide-select-all.html │ ├── i18n.html │ ├── is-open.html │ ├── keep-open.html │ ├── label-template.html │ ├── large-select.html │ ├── locale.html │ ├── max-height-unit.html │ ├── max-height.html │ ├── minimum-count-selected.html │ ├── multiple-items.html │ ├── open-close.html │ ├── open-on-hover.html │ ├── placeholder.html │ ├── position.html │ ├── refresh.html │ ├── refreshOptions.html │ ├── resetFilter.html │ ├── selected-disabled.html │ ├── setSelects-getSelects.html │ ├── show-clear.html │ ├── single-radio.html │ ├── single-row.html │ ├── styler.html │ ├── submit-select.html │ ├── template.html │ ├── text-template.html │ ├── themes.html │ └── vue-component.html ├── src ├── MultipleSelect.js ├── constants │ └── index.js ├── locale │ ├── multiple-select-cz-CS.js │ ├── multiple-select-da-DK.js │ ├── multiple-select-de-DE.js │ ├── multiple-select-en-US.js │ ├── multiple-select-es-ES.js │ ├── multiple-select-fr-FR.js │ ├── multiple-select-hu-HU.js │ ├── multiple-select-id-ID.js │ ├── multiple-select-it-IT.js │ ├── multiple-select-ja-JP.js │ ├── multiple-select-pt-BR.js │ ├── multiple-select-ru-RU.js │ ├── multiple-select-vi-VN.js │ ├── multiple-select-zh-CN.js │ └── multiple-select-zh-TW.js ├── multiple-select.js ├── multiple-select.scss ├── themes │ └── bootstrap.scss ├── utils │ └── index.js ├── virtual-scroll │ └── index.js └── vue │ ├── MultipleSelect.vue │ ├── MultipleSelectVue2.vue │ └── index.js ├── stylelint.config.js ├── tools ├── example.tpl └── template.js ├── vite.config.js ├── vue-examples ├── .eslintrc.js ├── .gitignore ├── README.md ├── index.html ├── index.prod.html ├── package.json ├── src │ ├── App.vue │ ├── assets │ │ └── MS.json │ ├── components │ │ └── Ads.vue │ ├── examples │ │ ├── Animate.vue │ │ ├── AutoWidth.vue │ │ ├── Basic.vue │ │ ├── CheckAllUncheckAll.vue │ │ ├── CheckInvert.vue │ │ ├── CheckUncheck.vue │ │ ├── Container.vue │ │ ├── CustomDropdownWidth.vue │ │ ├── CustomFilter.vue │ │ ├── Data.vue │ │ ├── Destroy.vue │ │ ├── Disabled.vue │ │ ├── DisplayDelimiter.vue │ │ ├── DisplayTitle.vue │ │ ├── DisplayValues.vue │ │ ├── Divider.vue │ │ ├── Ellipsis.vue │ │ ├── EnableDisable.vue │ │ ├── Events.vue │ │ ├── Filter.vue │ │ ├── FilterAcceptOnEnter.vue │ │ ├── FilterByDataLength.vue │ │ ├── FilterGroup.vue │ │ ├── FilterPlaceholder.vue │ │ ├── FocusBlur.vue │ │ ├── GetOptions.vue │ │ ├── HideOptgroupCheckboxes.vue │ │ ├── HideSelectAll.vue │ │ ├── I18n.vue │ │ ├── IsOpen.vue │ │ ├── KeepOpen.vue │ │ ├── LabelTemplate.vue │ │ ├── LargeSelect.vue │ │ ├── Locale.vue │ │ ├── MaxHeight.vue │ │ ├── MaxHeightUnit.vue │ │ ├── MinimumCountSelected.vue │ │ ├── MultipleItems.vue │ │ ├── OpenClose.vue │ │ ├── OpenOnHover.vue │ │ ├── Placeholder.vue │ │ ├── Position.vue │ │ ├── Refresh.vue │ │ ├── RefreshOptions.vue │ │ ├── SelectedDisabled.vue │ │ ├── SetSelectsGetSelects.vue │ │ ├── ShowClear.vue │ │ ├── SingleRadio.vue │ │ ├── SingleRow.vue │ │ ├── Styler.vue │ │ ├── SubmitSelect.vue │ │ ├── TextTemplate.vue │ │ ├── Themes.vue │ │ └── VModel.vue │ ├── main.js │ ├── plugins │ │ ├── jquery.js │ │ └── select.js │ ├── registry.js │ ├── router │ │ └── index.js │ └── views │ │ └── Main.vue └── vite.config.js ├── vue-starter ├── .gitignore ├── README.md ├── index.html ├── package.json ├── postcss.config.js ├── public │ └── favicon.ico ├── src │ ├── App.vue │ ├── assets │ │ └── logo.png │ ├── components │ │ └── HelloWorld.vue │ ├── main.js │ └── plugins │ │ ├── jquery.js │ │ └── select.js └── vite.config.js └── yarn.lock /.browserslistrc: -------------------------------------------------------------------------------- 1 | # https://github.com/browserslist/browserslist#readme 2 | 3 | >= 1% 4 | last 1 major version 5 | not dead 6 | Chrome >= 45 7 | Firefox >= 38 8 | Edge >= 12 9 | Explorer >= 10 10 | iOS >= 9 11 | Safari >= 9 12 | Android >= 4.4 13 | Opera >= 30 14 | -------------------------------------------------------------------------------- /.cspell-words.txt: -------------------------------------------------------------------------------- 1 | autocorrect 2 | optgroups 3 | zhixin 4 | -------------------------------------------------------------------------------- /.cspell.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://raw.githubusercontent.com/streetsidesoftware/cspell/main/cspell.schema.json", 3 | "version": "0.2", 4 | "dictionaries": [ 5 | "cspell-words" 6 | ], 7 | "dictionaryDefinitions": [ 8 | { 9 | "name": "cspell-words", 10 | "path": "./.cspell-words.txt", 11 | "addWords": true 12 | } 13 | ], 14 | "ignorePaths": [ 15 | "src/locale/**", 16 | "tools/**" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | end_of_line = lf 6 | indent_size = 2 7 | indent_style = space 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: wenzhixin 4 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # To get started with Dependabot version updates, you'll need to specify which 2 | # package ecosystems to update and where the package manifests are located. 3 | # Please see the documentation for all configuration options: 4 | # https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file 5 | 6 | version: 2 7 | updates: 8 | - package-ecosystem: "" # See documentation for possible values 9 | directory: "/" # Location of package manifests 10 | schedule: 11 | interval: "weekly" 12 | -------------------------------------------------------------------------------- /.github/workflows/deploy.yml: -------------------------------------------------------------------------------- 1 | name: Deploy Site 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | 8 | jobs: 9 | deploy: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v3 13 | with: 14 | fetch-depth: '0' 15 | 16 | - uses: actions/setup-node@v3 17 | with: 18 | node-version: 20 19 | cache: 'yarn' 20 | 21 | - name: Build theme with node 22 | run: | 23 | VERSION=`git rev-list --count ${{ github.ref }}` 24 | cd ${{ github.workspace }}/vue-examples 25 | yarn install 26 | yarn build 27 | cd .. 28 | yarn docs 29 | cp -r site/website/static/vue-examples/assets/* site/website/build/multiple-select/vue-examples/assets/ 30 | mv site/website/build/multiple-select _gh_pages 31 | find _gh_pages -type f -exec sed -i "s/v=VERSION/v=$VERSION/g" {} \; 32 | 33 | - name: Deploy to GitHub Pages 34 | uses: JamesIves/github-pages-deploy-action@v4.3.3 35 | with: 36 | branch: gh-pages 37 | folder: _gh_pages 38 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: Test 2 | 3 | on: 4 | pull_request: 5 | 6 | jobs: 7 | test: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: actions/checkout@v3 11 | 12 | - uses: actions/setup-node@v3 13 | with: 14 | node-version: 20 15 | cache: 'yarn' 16 | 17 | - name: Lint Code 18 | run: | 19 | yarn install --frozen-lockfile 20 | yarn lint 21 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | 3 | # docs site 4 | build 5 | docs_ 6 | 7 | # use scss instead 8 | src/**/*.css 9 | src/**/*.css.map 10 | 11 | # Common IDE files 12 | nbproject 13 | .~lock.* 14 | package-lock.json 15 | .buildpath 16 | .idea 17 | .project 18 | .settings 19 | *.iml 20 | 21 | # OS X Finder internal system files 22 | .DS_Store 23 | .localized 24 | Icon 25 | .vscode 26 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | docs_ 2 | site 3 | tools 4 | vue-examples 5 | vue-starter 6 | .browserslistrc 7 | .cspell-words.txt 8 | .cspell.json 9 | .editorconfig 10 | .github 11 | *.sh 12 | *.config.js 13 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright (c) 2012-2014 Zhixin Wen 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Multiple Select 2 | 3 | [![Build Status](https://travis-ci.org/wenzhixin/multiple-select.svg)](https://travis-ci.org/wenzhixin/multiple-select) 4 | [![GitHub version](https://badge.fury.io/gh/wenzhixin%2Fmultiple-select.svg)](http://badge.fury.io/gh/wenzhixin%2Fmultiple-select) 5 | [![Donate](https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif)](https://www.paypal.com/paypalme/wenzhixin) 6 | [![Package Quality](https://npm.packagequality.com/shield/multiple-select.svg)](https://packagequality.com/#?package=multiple-select) 7 | 8 | Multiple select is a jQuery plugin to select multiple elements with checkboxes :). 9 | 10 | To get started checkout examples and documentation at . 11 | 12 | > [!NOTE] 13 | > Version 2.x of this package is compatible with Vue 3 default. If you're still on Vue 2, install the previous version with `npm i multiple-select@1` 14 | 15 | ## Examples 16 | 17 | * http://multiple-select.wenzhixin.net.cn/examples 18 | * http://multiple-select.wenzhixin.net.cn/vue-examples 19 | * http://multiple-select-live.wenzhixin.net.cn/ 20 | 21 | ## Changelog 22 | 23 | [CHANGELOG](https://github.com/wenzhixin/multiple-select/blob/master/CHANGELOG.md) 24 | 25 | ## LICENSE 26 | 27 | [The MIT License](https://github.com/wenzhixin/multiple-select/blob/master/LICENSE) 28 | -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "multiple-select", 3 | "homepage": "https://github.com/wenzhixin/multiple-select", 4 | "authors": [ 5 | "zhixin " 6 | ], 7 | "description": "A jQuery plugin to select multiple elements with checkboxes :)", 8 | "main": [ 9 | "dist/multiple-select.min.css", 10 | "dist/multiple-select.min.js" 11 | ], 12 | "keywords": [ 13 | "multiple.select", 14 | "select.list", 15 | "multiple.choose", 16 | "checkbox" 17 | ], 18 | "license": "MIT", 19 | "ignore": [ 20 | "**/.*", 21 | "node_modules", 22 | "bower_components", 23 | "docs" 24 | ] 25 | } 26 | -------------------------------------------------------------------------------- /dist/locale/multiple-select-cz-CS.js: -------------------------------------------------------------------------------- 1 | (function (global, factory) { 2 | typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('jquery')) : 3 | typeof define === 'function' && define.amd ? define(['jquery'], factory) : 4 | (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.jQuery)); 5 | })(this, (function ($) { 'use strict'; 6 | 7 | /** 8 | * Multiple Select cz-CS translation 9 | * Author: Matej Puhony 10 | */ 11 | 12 | $.fn.multipleSelect.locales['cz-CS'] = { 13 | formatSelectAll() { 14 | return '[Vybrat vše]'; 15 | }, 16 | formatAllSelected() { 17 | return 'Vše vybráno'; 18 | }, 19 | formatCountSelected(count, total) { 20 | return `${count} z ${total} vybráno`; 21 | }, 22 | formatNoMatchesFound() { 23 | return 'Nebylo nalezeno'; 24 | } 25 | }; 26 | $.extend($.fn.multipleSelect.defaults, $.fn.multipleSelect.locales['cz-CS']); 27 | 28 | })); 29 | -------------------------------------------------------------------------------- /dist/locale/multiple-select-cz-CS.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * multiple-select - Multiple select is a jQuery plugin to select multiple elements with checkboxes :). 3 | * 4 | * @version v2.1.1 5 | * @homepage http://multiple-select.wenzhixin.net.cn 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).jQuery)}(this,(function(e){"use strict";e.fn.multipleSelect.locales["cz-CS"]={formatSelectAll:()=>"[Vybrat vše]",formatAllSelected:()=>"Vše vybráno",formatCountSelected:(e,t)=>`${e} z ${t} vybráno`,formatNoMatchesFound:()=>"Nebylo nalezeno"},e.extend(e.fn.multipleSelect.defaults,e.fn.multipleSelect.locales["cz-CS"])})); 11 | -------------------------------------------------------------------------------- /dist/locale/multiple-select-da-DK.js: -------------------------------------------------------------------------------- 1 | (function (global, factory) { 2 | typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('jquery')) : 3 | typeof define === 'function' && define.amd ? define(['jquery'], factory) : 4 | (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.jQuery)); 5 | })(this, (function ($) { 'use strict'; 6 | 7 | /** 8 | * Multiple Select da-DK translation 9 | * Author: HThuren 10 | */ 11 | 12 | $.fn.multipleSelect.locales['da-DK'] = { 13 | formatSelectAll() { 14 | return '[Vælg/fravælg alle]'; 15 | }, 16 | formatAllSelected() { 17 | return 'Alle valgt'; 18 | }, 19 | formatCountSelected(count, total) { 20 | return `${count} af ${total} valgt`; 21 | }, 22 | formatNoMatchesFound() { 23 | return 'Søgning uden resultat'; 24 | } 25 | }; 26 | $.extend($.fn.multipleSelect.defaults, $.fn.multipleSelect.locales['da-DK']); 27 | 28 | })); 29 | -------------------------------------------------------------------------------- /dist/locale/multiple-select-da-DK.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * multiple-select - Multiple select is a jQuery plugin to select multiple elements with checkboxes :). 3 | * 4 | * @version v2.1.1 5 | * @homepage http://multiple-select.wenzhixin.net.cn 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | !function(e,l){"object"==typeof exports&&"undefined"!=typeof module?l(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],l):l((e="undefined"!=typeof globalThis?globalThis:e||self).jQuery)}(this,(function(e){"use strict";e.fn.multipleSelect.locales["da-DK"]={formatSelectAll:()=>"[Vælg/fravælg alle]",formatAllSelected:()=>"Alle valgt",formatCountSelected:(e,l)=>`${e} af ${l} valgt`,formatNoMatchesFound:()=>"Søgning uden resultat"},e.extend(e.fn.multipleSelect.defaults,e.fn.multipleSelect.locales["da-DK"])})); 11 | -------------------------------------------------------------------------------- /dist/locale/multiple-select-en-US.js: -------------------------------------------------------------------------------- 1 | (function (global, factory) { 2 | typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('jquery')) : 3 | typeof define === 'function' && define.amd ? define(['jquery'], factory) : 4 | (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.jQuery)); 5 | })(this, (function ($) { 'use strict'; 6 | 7 | /** 8 | * Multiple Select en-US translation 9 | * Author: Zhixin Wen 10 | */ 11 | 12 | $.fn.multipleSelect.locales['en-US'] = { 13 | formatSelectAll() { 14 | return '[Select all]'; 15 | }, 16 | formatAllSelected() { 17 | return 'All selected'; 18 | }, 19 | formatCountSelected(count, total) { 20 | return `${count} of ${total} selected`; 21 | }, 22 | formatNoMatchesFound() { 23 | return 'No matches found'; 24 | } 25 | }; 26 | $.extend($.fn.multipleSelect.defaults, $.fn.multipleSelect.locales['en-US']); 27 | 28 | })); 29 | -------------------------------------------------------------------------------- /dist/locale/multiple-select-en-US.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * multiple-select - Multiple select is a jQuery plugin to select multiple elements with checkboxes :). 3 | * 4 | * @version v2.1.1 5 | * @homepage http://multiple-select.wenzhixin.net.cn 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | !function(e,l){"object"==typeof exports&&"undefined"!=typeof module?l(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],l):l((e="undefined"!=typeof globalThis?globalThis:e||self).jQuery)}(this,(function(e){"use strict";e.fn.multipleSelect.locales["en-US"]={formatSelectAll:()=>"[Select all]",formatAllSelected:()=>"All selected",formatCountSelected:(e,l)=>`${e} of ${l} selected`,formatNoMatchesFound:()=>"No matches found"},e.extend(e.fn.multipleSelect.defaults,e.fn.multipleSelect.locales["en-US"])})); 11 | -------------------------------------------------------------------------------- /dist/locale/multiple-select-es-ES.js: -------------------------------------------------------------------------------- 1 | (function (global, factory) { 2 | typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('jquery')) : 3 | typeof define === 'function' && define.amd ? define(['jquery'], factory) : 4 | (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.jQuery)); 5 | })(this, (function ($) { 'use strict'; 6 | 7 | /** 8 | * Multiple Select es-ES translation 9 | * Author: Zhixin Wen 10 | */ 11 | 12 | $.fn.multipleSelect.locales['es-ES'] = { 13 | formatSelectAll() { 14 | return '[Seleccionar todo]'; 15 | }, 16 | formatAllSelected() { 17 | return 'Todos seleccionados'; 18 | }, 19 | formatCountSelected(count, total) { 20 | return `${count} de ${total} seleccionado`; 21 | }, 22 | formatNoMatchesFound() { 23 | return 'No se encontraron coincidencias'; 24 | } 25 | }; 26 | $.extend($.fn.multipleSelect.defaults, $.fn.multipleSelect.locales['es-ES']); 27 | 28 | })); 29 | -------------------------------------------------------------------------------- /dist/locale/multiple-select-es-ES.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * multiple-select - Multiple select is a jQuery plugin to select multiple elements with checkboxes :). 3 | * 4 | * @version v2.1.1 5 | * @homepage http://multiple-select.wenzhixin.net.cn 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | !function(e,o){"object"==typeof exports&&"undefined"!=typeof module?o(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],o):o((e="undefined"!=typeof globalThis?globalThis:e||self).jQuery)}(this,(function(e){"use strict";e.fn.multipleSelect.locales["es-ES"]={formatSelectAll:()=>"[Seleccionar todo]",formatAllSelected:()=>"Todos seleccionados",formatCountSelected:(e,o)=>`${e} de ${o} seleccionado`,formatNoMatchesFound:()=>"No se encontraron coincidencias"},e.extend(e.fn.multipleSelect.defaults,e.fn.multipleSelect.locales["es-ES"])})); 11 | -------------------------------------------------------------------------------- /dist/locale/multiple-select-fr-FR.js: -------------------------------------------------------------------------------- 1 | (function (global, factory) { 2 | typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('jquery')) : 3 | typeof define === 'function' && define.amd ? define(['jquery'], factory) : 4 | (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.jQuery)); 5 | })(this, (function ($) { 'use strict'; 6 | 7 | /** 8 | * Multiple Select fr-FR translation 9 | * Author: Francis Perron 10 | */ 11 | 12 | $.fn.multipleSelect.locales['fr-FR'] = { 13 | formatSelectAll() { 14 | return '[Tout sélectionner]'; 15 | }, 16 | formatAllSelected() { 17 | return 'Tous sélectionnés'; 18 | }, 19 | formatCountSelected(count, total) { 20 | return `${count} de ${total} sélectionnés`; 21 | }, 22 | formatNoMatchesFound() { 23 | return 'Aucun résultat'; 24 | } 25 | }; 26 | $.extend($.fn.multipleSelect.defaults, $.fn.multipleSelect.locales['fr-FR']); 27 | 28 | })); 29 | -------------------------------------------------------------------------------- /dist/locale/multiple-select-fr-FR.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * multiple-select - Multiple select is a jQuery plugin to select multiple elements with checkboxes :). 3 | * 4 | * @version v2.1.1 5 | * @homepage http://multiple-select.wenzhixin.net.cn 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).jQuery)}(this,(function(e){"use strict";e.fn.multipleSelect.locales["fr-FR"]={formatSelectAll:()=>"[Tout sélectionner]",formatAllSelected:()=>"Tous sélectionnés",formatCountSelected:(e,t)=>`${e} de ${t} sélectionnés`,formatNoMatchesFound:()=>"Aucun résultat"},e.extend(e.fn.multipleSelect.defaults,e.fn.multipleSelect.locales["fr-FR"])})); 11 | -------------------------------------------------------------------------------- /dist/locale/multiple-select-hu-HU.js: -------------------------------------------------------------------------------- 1 | (function (global, factory) { 2 | typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('jquery')) : 3 | typeof define === 'function' && define.amd ? define(['jquery'], factory) : 4 | (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.jQuery)); 5 | })(this, (function ($) { 'use strict'; 6 | 7 | /** 8 | * Multiple Select hu-HU translation 9 | * Author: Péter Báthory 10 | */ 11 | 12 | $.fn.multipleSelect.locales['hu-HU'] = { 13 | formatSelectAll() { 14 | return '[Összes kiválasztása]'; 15 | }, 16 | formatAllSelected() { 17 | return 'Összes kiválasztva'; 18 | }, 19 | formatCountSelected(count, total) { 20 | return `${count} / ${total} kiválasztva`; 21 | }, 22 | formatNoMatchesFound() { 23 | return 'Nincs találat'; 24 | } 25 | }; 26 | $.extend($.fn.multipleSelect.defaults, $.fn.multipleSelect.locales['hu-HU']); 27 | 28 | })); 29 | -------------------------------------------------------------------------------- /dist/locale/multiple-select-hu-HU.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * multiple-select - Multiple select is a jQuery plugin to select multiple elements with checkboxes :). 3 | * 4 | * @version v2.1.1 5 | * @homepage http://multiple-select.wenzhixin.net.cn 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).jQuery)}(this,(function(e){"use strict";e.fn.multipleSelect.locales["hu-HU"]={formatSelectAll:()=>"[Összes kiválasztása]",formatAllSelected:()=>"Összes kiválasztva",formatCountSelected:(e,t)=>`${e} / ${t} kiválasztva`,formatNoMatchesFound:()=>"Nincs találat"},e.extend(e.fn.multipleSelect.defaults,e.fn.multipleSelect.locales["hu-HU"])})); 11 | -------------------------------------------------------------------------------- /dist/locale/multiple-select-id-ID.js: -------------------------------------------------------------------------------- 1 | (function (global, factory) { 2 | typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('jquery')) : 3 | typeof define === 'function' && define.amd ? define(['jquery'], factory) : 4 | (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.jQuery)); 5 | })(this, (function ($) { 'use strict'; 6 | 7 | /** 8 | * Multiple Select id-ID translation 9 | * Author: AdjadTea 10 | */ 11 | 12 | $.fn.multipleSelect.locales['id-ID'] = { 13 | formatSelectAll() { 14 | return '[Pilih Semua]'; 15 | }, 16 | formatAllSelected() { 17 | return 'Semua Dipilih'; 18 | }, 19 | formatCountSelected(count, total) { 20 | return `${count} of ${total} dipilih`; 21 | }, 22 | formatNoMatchesFound() { 23 | return 'Tidak ditemukan'; 24 | } 25 | }; 26 | $.extend($.fn.multipleSelect.defaults, $.fn.multipleSelect.locales['id-ID']); 27 | 28 | })); 29 | -------------------------------------------------------------------------------- /dist/locale/multiple-select-id-ID.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * multiple-select - Multiple select is a jQuery plugin to select multiple elements with checkboxes :). 3 | * 4 | * @version v2.1.1 5 | * @homepage http://multiple-select.wenzhixin.net.cn 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | !function(e,l){"object"==typeof exports&&"undefined"!=typeof module?l(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],l):l((e="undefined"!=typeof globalThis?globalThis:e||self).jQuery)}(this,(function(e){"use strict";e.fn.multipleSelect.locales["id-ID"]={formatSelectAll:()=>"[Pilih Semua]",formatAllSelected:()=>"Semua Dipilih",formatCountSelected:(e,l)=>`${e} of ${l} dipilih`,formatNoMatchesFound:()=>"Tidak ditemukan"},e.extend(e.fn.multipleSelect.defaults,e.fn.multipleSelect.locales["id-ID"])})); 11 | -------------------------------------------------------------------------------- /dist/locale/multiple-select-it-IT.js: -------------------------------------------------------------------------------- 1 | (function (global, factory) { 2 | typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('jquery')) : 3 | typeof define === 'function' && define.amd ? define(['jquery'], factory) : 4 | (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.jQuery)); 5 | })(this, (function ($) { 'use strict'; 6 | 7 | /** 8 | * Multiple Select it-IT translation 9 | * Author: Giuseppe Lodi Rizzini 10 | */ 11 | 12 | $.fn.multipleSelect.locales['it-IT'] = { 13 | formatSelectAll() { 14 | return '[Seleziona tutti]'; 15 | }, 16 | formatAllSelected() { 17 | return 'Tutti selezionati'; 18 | }, 19 | formatCountSelected(count, total) { 20 | return `${count} di ${total} selezionati`; 21 | }, 22 | formatNoMatchesFound() { 23 | return 'Nessun risultato'; 24 | } 25 | }; 26 | $.extend($.fn.multipleSelect.defaults, $.fn.multipleSelect.locales['it-IT']); 27 | 28 | })); 29 | -------------------------------------------------------------------------------- /dist/locale/multiple-select-it-IT.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * multiple-select - Multiple select is a jQuery plugin to select multiple elements with checkboxes :). 3 | * 4 | * @version v2.1.1 5 | * @homepage http://multiple-select.wenzhixin.net.cn 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).jQuery)}(this,(function(e){"use strict";e.fn.multipleSelect.locales["it-IT"]={formatSelectAll:()=>"[Seleziona tutti]",formatAllSelected:()=>"Tutti selezionati",formatCountSelected:(e,t)=>`${e} di ${t} selezionati`,formatNoMatchesFound:()=>"Nessun risultato"},e.extend(e.fn.multipleSelect.defaults,e.fn.multipleSelect.locales["it-IT"])})); 11 | -------------------------------------------------------------------------------- /dist/locale/multiple-select-ja-JP.js: -------------------------------------------------------------------------------- 1 | (function (global, factory) { 2 | typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('jquery')) : 3 | typeof define === 'function' && define.amd ? define(['jquery'], factory) : 4 | (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.jQuery)); 5 | })(this, (function ($) { 'use strict'; 6 | 7 | /** 8 | * Multiple Select ja-JP translation 9 | * Author: Nozomi Anzai 10 | */ 11 | 12 | $.fn.multipleSelect.locales['ja-JP'] = { 13 | formatSelectAll() { 14 | return '[すべて選択]'; 15 | }, 16 | formatAllSelected() { 17 | return 'すべて選択'; 18 | }, 19 | formatCountSelected(count, total) { 20 | return `${total} 件中 ${count} 件選択`; 21 | }, 22 | formatNoMatchesFound() { 23 | return '見つかりません'; 24 | } 25 | }; 26 | $.extend($.fn.multipleSelect.defaults, $.fn.multipleSelect.locales['ja-JP']); 27 | 28 | })); 29 | -------------------------------------------------------------------------------- /dist/locale/multiple-select-ja-JP.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * multiple-select - Multiple select is a jQuery plugin to select multiple elements with checkboxes :). 3 | * 4 | * @version v2.1.1 5 | * @homepage http://multiple-select.wenzhixin.net.cn 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).jQuery)}(this,(function(e){"use strict";e.fn.multipleSelect.locales["ja-JP"]={formatSelectAll:()=>"[すべて選択]",formatAllSelected:()=>"すべて選択",formatCountSelected:(e,t)=>`${t} 件中 ${e} 件選択`,formatNoMatchesFound:()=>"見つかりません"},e.extend(e.fn.multipleSelect.defaults,e.fn.multipleSelect.locales["ja-JP"])})); 11 | -------------------------------------------------------------------------------- /dist/locale/multiple-select-pt-BR.js: -------------------------------------------------------------------------------- 1 | (function (global, factory) { 2 | typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('jquery')) : 3 | typeof define === 'function' && define.amd ? define(['jquery'], factory) : 4 | (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.jQuery)); 5 | })(this, (function ($) { 'use strict'; 6 | 7 | /** 8 | * Multiple Select pt-BR translation 9 | * Author: Lucas Aguiar 10 | */ 11 | 12 | $.fn.multipleSelect.locales['pt-BR'] = { 13 | formatSelectAll() { 14 | return '[Selecionar todos]'; 15 | }, 16 | formatAllSelected() { 17 | return 'Todos selecionados'; 18 | }, 19 | formatCountSelected(count, total) { 20 | return `${count} de ${total} selecionado(s)`; 21 | }, 22 | formatNoMatchesFound() { 23 | return 'Nenhum resultado encontrado'; 24 | } 25 | }; 26 | $.extend($.fn.multipleSelect.defaults, $.fn.multipleSelect.locales['pt-BR']); 27 | 28 | })); 29 | -------------------------------------------------------------------------------- /dist/locale/multiple-select-pt-BR.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * multiple-select - Multiple select is a jQuery plugin to select multiple elements with checkboxes :). 3 | * 4 | * @version v2.1.1 5 | * @homepage http://multiple-select.wenzhixin.net.cn 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).jQuery)}(this,(function(e){"use strict";e.fn.multipleSelect.locales["pt-BR"]={formatSelectAll:()=>"[Selecionar todos]",formatAllSelected:()=>"Todos selecionados",formatCountSelected:(e,t)=>`${e} de ${t} selecionado(s)`,formatNoMatchesFound:()=>"Nenhum resultado encontrado"},e.extend(e.fn.multipleSelect.defaults,e.fn.multipleSelect.locales["pt-BR"])})); 11 | -------------------------------------------------------------------------------- /dist/locale/multiple-select-ru-RU.js: -------------------------------------------------------------------------------- 1 | (function (global, factory) { 2 | typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('jquery')) : 3 | typeof define === 'function' && define.amd ? define(['jquery'], factory) : 4 | (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.jQuery)); 5 | })(this, (function ($) { 'use strict'; 6 | 7 | /** 8 | * Multiple Select ru-RU translation 9 | * Author: Zhixin Wen 10 | */ 11 | 12 | $.fn.multipleSelect.locales['ru-RU'] = { 13 | formatSelectAll() { 14 | return '[Выбрать все]'; 15 | }, 16 | formatAllSelected() { 17 | return 'Выбрано все'; 18 | }, 19 | formatCountSelected(count, total) { 20 | return `${count} из ${total} выбрано`; 21 | }, 22 | formatNoMatchesFound() { 23 | return 'Совпадений не найдено'; 24 | } 25 | }; 26 | $.extend($.fn.multipleSelect.defaults, $.fn.multipleSelect.locales['ru-RU']); 27 | 28 | })); 29 | -------------------------------------------------------------------------------- /dist/locale/multiple-select-ru-RU.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * multiple-select - Multiple select is a jQuery plugin to select multiple elements with checkboxes :). 3 | * 4 | * @version v2.1.1 5 | * @homepage http://multiple-select.wenzhixin.net.cn 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).jQuery)}(this,(function(e){"use strict";e.fn.multipleSelect.locales["ru-RU"]={formatSelectAll:()=>"[Выбрать все]",formatAllSelected:()=>"Выбрано все",formatCountSelected:(e,t)=>`${e} из ${t} выбрано`,formatNoMatchesFound:()=>"Совпадений не найдено"},e.extend(e.fn.multipleSelect.defaults,e.fn.multipleSelect.locales["ru-RU"])})); 11 | -------------------------------------------------------------------------------- /dist/locale/multiple-select-vi-VN.js: -------------------------------------------------------------------------------- 1 | (function (global, factory) { 2 | typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('jquery')) : 3 | typeof define === 'function' && define.amd ? define(['jquery'], factory) : 4 | (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.jQuery)); 5 | })(this, (function ($) { 'use strict'; 6 | 7 | /** 8 | * Multiple Select vi-VN translation 9 | * Author: hoangbaovu 10 | */ 11 | 12 | $.fn.multipleSelect.locales['vi-VN'] = { 13 | formatSelectAll() { 14 | return '[Tất cả]'; 15 | }, 16 | formatAllSelected() { 17 | return 'Chọn tất cả'; 18 | }, 19 | formatCountSelected(count, total) { 20 | return `Đã chọn ${count} trong ${total}`; 21 | }, 22 | formatNoMatchesFound() { 23 | return 'Không tìm thấy kết quả.'; 24 | } 25 | }; 26 | $.extend($.fn.multipleSelect.defaults, $.fn.multipleSelect.locales['vi-VN']); 27 | 28 | })); 29 | -------------------------------------------------------------------------------- /dist/locale/multiple-select-vi-VN.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * multiple-select - Multiple select is a jQuery plugin to select multiple elements with checkboxes :). 3 | * 4 | * @version v2.1.1 5 | * @homepage http://multiple-select.wenzhixin.net.cn 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).jQuery)}(this,(function(e){"use strict";e.fn.multipleSelect.locales["vi-VN"]={formatSelectAll:()=>"[Tất cả]",formatAllSelected:()=>"Chọn tất cả",formatCountSelected:(e,t)=>`Đã chọn ${e} trong ${t}`,formatNoMatchesFound:()=>"Không tìm thấy kết quả."},e.extend(e.fn.multipleSelect.defaults,e.fn.multipleSelect.locales["vi-VN"])})); 11 | -------------------------------------------------------------------------------- /dist/locale/multiple-select-zh-CN.js: -------------------------------------------------------------------------------- 1 | (function (global, factory) { 2 | typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('jquery')) : 3 | typeof define === 'function' && define.amd ? define(['jquery'], factory) : 4 | (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.jQuery)); 5 | })(this, (function ($) { 'use strict'; 6 | 7 | /** 8 | * Multiple Select zh-CN translation 9 | * Author: Zhixin Wen 10 | */ 11 | 12 | $.fn.multipleSelect.locales['zh-CN'] = { 13 | formatSelectAll() { 14 | return '[全选]'; 15 | }, 16 | formatAllSelected() { 17 | return '已选择所有记录'; 18 | }, 19 | formatCountSelected(count, total) { 20 | return `已从${total}条记录中选择${count}条`; 21 | }, 22 | formatNoMatchesFound() { 23 | return '没有找到记录'; 24 | } 25 | }; 26 | $.extend($.fn.multipleSelect.defaults, $.fn.multipleSelect.locales['zh-CN']); 27 | 28 | })); 29 | -------------------------------------------------------------------------------- /dist/locale/multiple-select-zh-CN.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * multiple-select - Multiple select is a jQuery plugin to select multiple elements with checkboxes :). 3 | * 4 | * @version v2.1.1 5 | * @homepage http://multiple-select.wenzhixin.net.cn 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).jQuery)}(this,(function(e){"use strict";e.fn.multipleSelect.locales["zh-CN"]={formatSelectAll:()=>"[全选]",formatAllSelected:()=>"已选择所有记录",formatCountSelected:(e,t)=>`已从${t}条记录中选择${e}条`,formatNoMatchesFound:()=>"没有找到记录"},e.extend(e.fn.multipleSelect.defaults,e.fn.multipleSelect.locales["zh-CN"])})); 11 | -------------------------------------------------------------------------------- /dist/locale/multiple-select-zh-TW.js: -------------------------------------------------------------------------------- 1 | (function (global, factory) { 2 | typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('jquery')) : 3 | typeof define === 'function' && define.amd ? define(['jquery'], factory) : 4 | (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.jQuery)); 5 | })(this, (function ($) { 'use strict'; 6 | 7 | /** 8 | * Multiple Select zh-TW translation 9 | * Author: Zhixin Wen 10 | */ 11 | 12 | $.fn.multipleSelect.locales['zh-TW'] = { 13 | formatSelectAll() { 14 | return '[全選]'; 15 | }, 16 | formatAllSelected() { 17 | return '已選擇所有記錄'; 18 | }, 19 | formatCountSelected(count, total) { 20 | return `已從${total}條記錄中選擇${count}條`; 21 | }, 22 | formatNoMatchesFound() { 23 | return '沒有找到記錄'; 24 | } 25 | }; 26 | $.extend($.fn.multipleSelect.defaults, $.fn.multipleSelect.locales['zh-TW']); 27 | 28 | })); 29 | -------------------------------------------------------------------------------- /dist/locale/multiple-select-zh-TW.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * multiple-select - Multiple select is a jQuery plugin to select multiple elements with checkboxes :). 3 | * 4 | * @version v2.1.1 5 | * @homepage http://multiple-select.wenzhixin.net.cn 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).jQuery)}(this,(function(e){"use strict";e.fn.multipleSelect.locales["zh-TW"]={formatSelectAll:()=>"[全選]",formatAllSelected:()=>"已選擇所有記錄",formatCountSelected:(e,t)=>`已從${t}條記錄中選擇${e}條`,formatNoMatchesFound:()=>"沒有找到記錄"},e.extend(e.fn.multipleSelect.defaults,e.fn.multipleSelect.locales["zh-TW"])})); 11 | -------------------------------------------------------------------------------- /dist/themes/bootstrap.css: -------------------------------------------------------------------------------- 1 | .ms-parent.form-control { 2 | padding: 0; 3 | border-radius: 0.2rem; 4 | display: inline-block; 5 | height: calc(1.5em + 0.75rem + 2px); 6 | } 7 | .ms-parent.form-control .ms-choice { 8 | height: 100%; 9 | border: 0; 10 | } 11 | .ms-parent.form-control .ms-choice > span { 12 | top: 50%; 13 | transform: translateY(-50%); 14 | } 15 | .ms-parent.form-control .ms-drop ul > li:not(.hide-radio) label { 16 | padding-left: calc(1.2em + 4px); 17 | overflow: hidden; 18 | white-space: nowrap; 19 | text-overflow: ellipsis; 20 | } 21 | .ms-parent.form-control .ms-drop ul > li:not(.hide-radio) label input[type=radio], 22 | .ms-parent.form-control .ms-drop ul > li:not(.hide-radio) label input[type=checkbox] { 23 | position: absolute; 24 | top: 50%; 25 | margin-top: -0.5em; 26 | margin-left: calc(-1.2em - 4px); 27 | } 28 | .ms-parent.form-control .input-group-btn .ms-choice { 29 | border-top-left-radius: 0; 30 | border-bottom-left-radius: 0; 31 | } 32 | .ms-parent.form-control .input-group-btn.is-left .ms-choice { 33 | border-radius: 4px 0 0 4px; 34 | margin-left: 0; 35 | } 36 | .ms-parent.form-control .input-group-btn.is-left + .form-control { 37 | margin-left: -1px; 38 | } 39 | .ms-parent.form-control.form-control-sm { 40 | height: calc(1.5em + 0.5rem + 2px); 41 | } 42 | .ms-parent.form-control.form-control-lg { 43 | height: calc(1.5em + 1rem + 2px); 44 | } 45 | .ms-parent.form-control.ms-dropdown .ms-drop ul > li.group.hide-radio label.optgroup { 46 | margin-bottom: 0; 47 | font-size: 87.5%; 48 | color: #6c757d; 49 | white-space: nowrap; 50 | opacity: 1; 51 | } 52 | .ms-parent.form-control.ms-dropdown .ms-drop ul > li.hide-radio.option-level-1 label { 53 | padding-left: 8px; 54 | } 55 | .ms-parent.form-control.ms-dropdown.ms-dropdown-divider .ms-drop ul > li.group.hide-radio label.optgroup { 56 | border-top: 1px solid #e9ecef; 57 | } 58 | .ms-parent.form-control.ms-dropdown.ms-dropdown-divider .ms-drop ul > li.group:first-child label.optgroup { 59 | border-top: none; 60 | } 61 | 62 | /*# sourceMappingURL=bootstrap.css.map */ 63 | -------------------------------------------------------------------------------- /dist/themes/bootstrap.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * multiple-select - Multiple select is a jQuery plugin to select multiple elements with checkboxes :). 3 | * 4 | * @version v2.1.1 5 | * @homepage http://multiple-select.wenzhixin.net.cn 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | .ms-parent.form-control{padding:0;border-radius:.2rem;display:inline-block;height:calc(1.5em + .75rem + 2px)}.ms-parent.form-control .ms-choice{height:100%;border:0}.ms-parent.form-control .ms-choice>span{top:50%;transform:translateY(-50%)}.ms-parent.form-control .ms-drop ul>li:not(.hide-radio) label{padding-left:calc(1.2em + 4px);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ms-parent.form-control .ms-drop ul>li:not(.hide-radio) label input[type=checkbox],.ms-parent.form-control .ms-drop ul>li:not(.hide-radio) label input[type=radio]{position:absolute;top:50%;margin-top:-.5em;margin-left:calc(-1.2em - 4px)}.ms-parent.form-control .input-group-btn .ms-choice{border-top-left-radius:0;border-bottom-left-radius:0}.ms-parent.form-control .input-group-btn.is-left .ms-choice{border-radius:4px 0 0 4px;margin-left:0}.ms-parent.form-control .input-group-btn.is-left+.form-control{margin-left:-1px}.ms-parent.form-control.form-control-sm{height:calc(1.5em + .5rem + 2px)}.ms-parent.form-control.form-control-lg{height:calc(1.5em + 1rem + 2px)}.ms-parent.form-control.ms-dropdown .ms-drop ul>li.group.hide-radio label.optgroup{margin-bottom:0;font-size:87.5%;color:#6c757d;white-space:nowrap;opacity:1}.ms-parent.form-control.ms-dropdown .ms-drop ul>li.hide-radio.option-level-1 label{padding-left:8px}.ms-parent.form-control.ms-dropdown.ms-dropdown-divider .ms-drop ul>li.group.hide-radio label.optgroup{border-top:1px solid #e9ecef}.ms-parent.form-control.ms-dropdown.ms-dropdown-divider .ms-drop ul>li.group:first-child label.optgroup{border-top:none} -------------------------------------------------------------------------------- /index.d.ts: -------------------------------------------------------------------------------- 1 | interface JQuery { 2 | 3 | multipleSelect(options: object): JQuery; 4 | 5 | multipleSelect(method: string, ...parameters: any[]): JQuery | any; 6 | 7 | } 8 | -------------------------------------------------------------------------------- /multiple-select.jquery.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "multiple-select", 3 | "version": "2.1.1", 4 | "title": "Multiple Select", 5 | "description": "Multiple select is a jQuery plugin to select multiple elements with checkboxes :).", 6 | "author": { 7 | "name": "zhixin wen", 8 | "email": "wenzhixin2010@gmail.com", 9 | "url": "http://wenzhixin.net.cn/" 10 | }, 11 | "licenses": [ 12 | { 13 | "type": "MIT License", 14 | "url": "http://opensource.org/licenses/MIT" 15 | } 16 | ], 17 | "dependencies": { 18 | "jquery": ">=1.7" 19 | }, 20 | "keywords": ["multiple.select", "select.list", "multiple.choose", "checkbox"], 21 | "homepage": "http://wenzhixin.net.cn/p/multiple-select/", 22 | "demo": "http://wenzhixin.net.cn/p/multiple-select/#examples", 23 | "bugs": { 24 | "url": "https://github.com/wenzhixin/multiple-select/issues" 25 | }, 26 | "docs": "http://wenzhixin.net.cn/p/multiple-select/#documentation", 27 | "download": "https://github.com/wenzhixin/multiple-select/archive/master.zip" 28 | } 29 | -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | import { globSync } from 'glob' 2 | import { babel } from '@rollup/plugin-babel' 3 | import { nodeResolve } from '@rollup/plugin-node-resolve' 4 | import commonjs from '@rollup/plugin-commonjs' 5 | import terser from '@rollup/plugin-terser' 6 | import inject from '@rollup/plugin-inject' 7 | import multiEntry from '@rollup/plugin-multi-entry' 8 | 9 | const files = globSync('src/**/*.js', { 10 | ignore: [ 11 | 'src/constants/**', 12 | 'src/utils/**', 13 | 'src/virtual-scroll/**', 14 | 'src/vue/**', 15 | 'src/MultipleSelect.js' 16 | ] 17 | }) 18 | const external = ['jquery'] 19 | const globals = { 20 | jquery: 'jQuery' 21 | } 22 | const config = [] 23 | const plugins = [ 24 | inject({ 25 | include: '**/*.js', 26 | exclude: 'node_modules/**', 27 | $: 'jquery' 28 | }), 29 | nodeResolve(), 30 | commonjs(), 31 | babel({ 32 | babelHelpers: 'bundled', 33 | exclude: 'node_modules/**' 34 | }) 35 | ] 36 | 37 | if (process.env.NODE_ENV === 'production') { 38 | plugins.push(terser({ 39 | output: { 40 | comments () { 41 | return false 42 | } 43 | } 44 | })) 45 | } 46 | 47 | for (const file of files) { 48 | let out = `dist/${file.replace('src/', '')}` 49 | 50 | if (process.env.NODE_ENV === 'production') { 51 | out = out.replace(/.js$/, '.min.js') 52 | } 53 | config.push({ 54 | input: file, 55 | output: { 56 | name: 'MultipleSelect', 57 | file: out, 58 | format: 'umd', 59 | globals 60 | }, 61 | external, 62 | plugins 63 | }) 64 | } 65 | 66 | let out = 'dist/multiple-select-locale-all.js' 67 | 68 | if (process.env.NODE_ENV === 'production') { 69 | out = out.replace(/.js$/, '.min.js') 70 | } 71 | config.push({ 72 | input: 'src/locale/**/*.js', 73 | output: { 74 | name: 'MultipleSelect', 75 | file: out, 76 | format: 'umd', 77 | globals 78 | }, 79 | external, 80 | plugins: [ 81 | multiEntry(), 82 | ...plugins 83 | ] 84 | }) 85 | 86 | export default config 87 | -------------------------------------------------------------------------------- /site/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | 3 | node_modules 4 | 5 | lib/core/metadata.js 6 | lib/core/MetadataBlog.js 7 | 8 | website/translated_docs 9 | website/build/ 10 | website/yarn.lock 11 | website/node_modules 12 | website/i18n/* 13 | website/pages/vue-examples.html 14 | website/static/vue-examples/ 15 | -------------------------------------------------------------------------------- /site/crowdin.yaml: -------------------------------------------------------------------------------- 1 | project_identifier_env: CROWDIN_DOCUSAURUS_PROJECT_ID 2 | api_key_env: CROWDIN_DOCUSAURUS_API_KEY 3 | base_path: "./" 4 | preserve_hierarchy: true 5 | 6 | files: 7 | - 8 | source: '/docs/*.md' 9 | translation: '/website/translated_docs/%locale%/%original_file_name%' 10 | languages_mapping: &anchor 11 | locale: 12 | 'af': 'af' 13 | 'ar': 'ar' 14 | 'bs-BA': 'bs-BA' 15 | 'ca': 'ca' 16 | 'cs': 'cs' 17 | 'da': 'da' 18 | 'de': 'de' 19 | 'el': 'el' 20 | 'es-ES': 'es-ES' 21 | 'fa': 'fa-IR' 22 | 'fi': 'fi' 23 | 'fr': 'fr' 24 | 'he': 'he' 25 | 'hu': 'hu' 26 | 'id': 'id-ID' 27 | 'it': 'it' 28 | 'ja': 'ja' 29 | 'ko': 'ko' 30 | 'mr': 'mr-IN' 31 | 'nl': 'nl' 32 | 'no': 'no-NO' 33 | 'pl': 'pl' 34 | 'pt-BR': 'pt-BR' 35 | 'pt-PT': 'pt-PT' 36 | 'ro': 'ro' 37 | 'ru': 'ru' 38 | 'sk': 'sk-SK' 39 | 'sr': 'sr' 40 | 'sv-SE': 'sv-SE' 41 | 'tr': 'tr' 42 | 'uk': 'uk' 43 | 'vi': 'vi' 44 | 'zh-CN': 'zh-CN' 45 | 'zh-TW': 'zh-TW' 46 | - 47 | source: '/website/i18n/en.json' 48 | translation: '/website/i18n/%locale%.json' 49 | languages_mapping: *anchor 50 | -------------------------------------------------------------------------------- /site/docs/download.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: download 3 | title: Download 4 | --- 5 | 6 | Multiple Select offers several easy ways to quickly get started, each appealing to a different skill level and use case. Read through to see what suits your particular needs. 7 | 8 |
9 | 10 | ## Source code 11 | 12 | Source CSS, JavaScript, locales, and our docs. 13 | 14 | Download source 15 | 16 | ## Clone or fork via GitHub 17 | 18 | Via GitHub 19 | 20 | ## CDN 21 | 22 | The folks over at [UNPKG](https://unpkg.com/multiple-select) graciously provide CDN support for Multiple Select's CSS and JavaScript. Just use these CDN links. 23 | 24 | ```html 25 | 26 | 27 | 28 | 29 | 30 | ``` 31 | 32 | ## NPM 33 | 34 | Install and manage Multiple Select's CSS and JavaScript using [NPM](http://npmjs.com). 35 | 36 | ```bash 37 | $ npm install multiple-select 38 | ``` 39 | -------------------------------------------------------------------------------- /site/docs/events.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: events 3 | title: Events 4 | --- 5 | 6 | The events API of Multiple Select. 7 | 8 |
9 | 10 | To use event syntax: 11 | 12 | ```js 13 | $('#select').multipleSelect({ 14 | onEventName: function (arg1, arg2, ...) { 15 | // ... 16 | } 17 | }) 18 | ``` 19 | 20 | Example: [The Event](/examples#events.html) 21 | 22 | ## onOpen 23 | 24 | - **Parameter:** - 25 | 26 | - **Detail:** Fires when the dropdown list is open. 27 | 28 | ## onClose 29 | 30 | - **Parameter:** - 31 | 32 | - **Detail:** Fires when the dropdown list is closed. 33 | 34 | ## onCheckAll 35 | 36 | - **Parameter:** - 37 | 38 | - **Detail:** Fires when all the options are checked by clicking the "Select all" checkbox or when the "checkAll" method is programmatically called. 39 | 40 | ## onUncheckAll 41 | 42 | - **Parameter:** - 43 | 44 | - **Detail:** Fires when all the options are unchecked by either clicking the "Select all" checkbox or when the "uncheckAll" method is programmatically called. 45 | 46 | ## onFocus 47 | 48 | - **Parameter:** - 49 | 50 | - **Detail:** Bind an event handler to the "focus". 51 | 52 | ## onBlur 53 | 54 | - **Parameter:** - 55 | 56 | - **Detail:** Bind an event handler to the "blur". 57 | 58 | ## onOptgroupClick 59 | 60 | - **Parameter:** `view` 61 | 62 | - **Detail:** Fires when a an optgroup label is clicked on. The `view` parameter is an object, it contains `label, selected, children, data`, the `children` contains `text, value, selected, disabled, data`. 63 | 64 | ## onBeforeClick 65 | 66 | - **Parameter:** `view` 67 | 68 | - **Detail:** Fires before a checkbox is clicked. The `view` parameter is an object, it contains `text, value, selected, data`. Return `false` to prevent the click event. 69 | 70 | ## onClick 71 | 72 | - **Parameter:** `view` 73 | 74 | - **Detail:** Fires when a checkbox is checked or unchecked. The `view` parameter is an object, it contains `text, value, selected, data`. 75 | 76 | ## onClear 77 | 78 | - **Parameter:** - 79 | 80 | - **Detail:** Fires when clicking the clear icon. 81 | 82 | ## onFilter 83 | 84 | - **Parameter:** `text` 85 | 86 | - **Detail:** Fires after the Multiple Select is on the filter. 87 | 88 | ## onAfterCreate 89 | 90 | - **Parameter:** - 91 | 92 | - **Detail:** Fires after the Multiple Select is created. 93 | -------------------------------------------------------------------------------- /site/docs/introduction.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: introduction 3 | title: Introduction 4 | --- 5 | 6 | We have a Multiple Select Component for [Vue.js 2.0+](https://vuejs.org), and it should work with the full [API](/docs/en/options/). 7 | 8 |
9 | 10 | ## Installation 11 | 12 | ### Dependencies 13 | 14 | * [Vue.js](https://vuejs.org) (2.0+) 15 | * [jQuery](http://jquery.com) 16 | 17 | ### NPM 18 | 19 | Install and manage CSS, JavaScript, and locales of Multiple Select using [npm](https://www.npmjs.com/package/multiple-select). 20 | 21 | ```sh 22 | npm install multiple-select 23 | ``` 24 | 25 | ### UNPKG 26 | 27 | The folks over at [UNPKG](https://unpkg.com/multiple-select@2.1.1/dist/) graciously provide CDN support for Multiple Select's CSS and JavaScript. Just use these links. 28 | 29 | ```html 30 | https://unpkg.com/multiple-select@2.1.1 31 | ``` 32 | 33 | ## Build Files 34 | 35 | `dist/` folder includes the following vue component files: 36 | 37 | ``` 38 | multiple-select/ 39 | └── dist/ 40 | ├── multiple-select-vue.js 41 | ├── multiple-select-vue.min.js 42 | ├── multiple-select-vue-es.js 43 | └── multiple-select-vue-es.min.js 44 | ``` 45 | 46 | * **multiple-select-vue.js:** UMD builds can be used directly in the browser via a ` 9 | 10 | 15 | 16 |
17 |
18 | 21 | 22 |
23 |
24 | 28 |
29 |
30 | 34 |
35 |
36 | 40 |
41 |
42 |
43 | 44 |
45 | 48 | 49 |
50 | 64 |
65 |
66 |
67 | 68 | 79 | -------------------------------------------------------------------------------- /site/website/static/templates/check-uncheck.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 |
17 |
18 | 21 | 22 |
23 | 24 | 25 |
26 |
27 | 28 |
29 | 32 | 33 |
34 | 38 |
39 |
40 | 41 |
42 | 45 | 46 |
47 | 51 |
52 |
53 | 54 |
55 | 58 | 59 |
60 | 70 |
71 |
72 |
73 | 74 | 89 | -------------------------------------------------------------------------------- /site/website/static/templates/container.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | 18 | 19 |
20 |
21 | 24 | 25 |
26 |
27 | 41 |
42 |
43 |
44 | 45 |
46 | 49 | 50 |
51 |
52 | 66 |
67 |
68 |
69 |
70 | 71 | 76 | -------------------------------------------------------------------------------- /site/website/static/templates/custom-dropdown-width.html: -------------------------------------------------------------------------------- 1 | 9 |
10 |
11 | 14 | 15 |
16 | 48 |
49 |
50 |
51 | 52 | 62 | -------------------------------------------------------------------------------- /site/website/static/templates/custom-filter.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 |
17 |
18 | 21 | 22 |
23 | 49 |
50 |
51 |
52 | 53 | 66 | -------------------------------------------------------------------------------- /site/website/static/templates/destroy.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 |
17 |
18 | 21 | 22 |
23 | 24 | 25 |
26 |
27 | 28 |
29 | 32 | 33 |
34 | 48 |
49 |
50 |
51 | 52 | 67 | -------------------------------------------------------------------------------- /site/website/static/templates/disabled.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 |
17 |
18 | 21 | 22 |
23 | 37 |
38 |
39 |
40 | 41 | 46 | -------------------------------------------------------------------------------- /site/website/static/templates/display-delimiter.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 |
17 |
18 | 21 | 22 |
23 | 37 |
38 |
39 |
40 | 41 | 48 | -------------------------------------------------------------------------------- /site/website/static/templates/display-title.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 |
17 |
18 | 21 | 22 |
23 | 37 |
38 |
39 |
40 | 41 | 48 | -------------------------------------------------------------------------------- /site/website/static/templates/display-values.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 |
17 |
18 | 21 | 22 |
23 | 37 |
38 |
39 |
40 | 41 | 48 | -------------------------------------------------------------------------------- /site/website/static/templates/ellipsis.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 |
17 |
18 | 21 | 22 |
23 | 37 |
38 |
39 |
40 | 41 | 49 | -------------------------------------------------------------------------------- /site/website/static/templates/enable-disable.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 |
17 |
18 | 21 | 22 |
23 | 24 | 25 |
26 |
27 | 28 |
29 | 32 | 33 |
34 | 48 |
49 |
50 |
51 | 52 | 67 | -------------------------------------------------------------------------------- /site/website/static/templates/filter-group.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 |
17 |
18 | 21 | 22 |
23 | 51 |
52 |
53 |
54 | 55 | 63 | -------------------------------------------------------------------------------- /site/website/static/templates/filter-placeholder.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 |
17 |
18 | 21 | 22 |
23 | 56 |
57 |
58 |
59 | 60 | 68 | -------------------------------------------------------------------------------- /site/website/static/templates/filter-select-all.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 |
17 |
18 | 21 | 22 |
23 | 56 |
57 |
58 |
59 | 60 | 68 | -------------------------------------------------------------------------------- /site/website/static/templates/focus-blur.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 |
17 |
18 | 21 | 22 |
23 | 24 | 25 |
26 |
27 | 28 |
29 | 32 | 33 |
34 | 48 |
49 |
50 |
51 | 52 | 67 | -------------------------------------------------------------------------------- /site/website/static/templates/getData.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 |
17 |
18 | 21 | 22 |
23 | 24 |
25 |
26 | 27 |
28 | 31 | 32 |
33 | 38 |
39 |
40 |
41 | 42 | 55 | -------------------------------------------------------------------------------- /site/website/static/templates/getOptions.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 |
17 |
18 | 21 | 22 |
23 | 24 |
25 |
26 | 27 |
28 | 31 | 32 |
33 | 38 |
39 |
40 |
41 | 42 | 55 | -------------------------------------------------------------------------------- /site/website/static/templates/hide-optgroup-checkboxes.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 |
17 |
18 | 21 | 22 |
23 | 46 |
47 |
48 |
49 | 50 | 59 | -------------------------------------------------------------------------------- /site/website/static/templates/hide-select-all.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 |
17 |
18 | 21 | 22 |
23 | 29 |
30 |
31 |
32 | 33 | 40 | -------------------------------------------------------------------------------- /site/website/static/templates/i18n.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 |
17 |
18 | 21 | 22 |
23 | 37 |
38 |
39 |
40 | 41 | 60 | -------------------------------------------------------------------------------- /site/website/static/templates/is-open.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 |
17 |
18 | 21 | 22 |
23 | 37 |
38 |
39 |
40 | 41 | 48 | -------------------------------------------------------------------------------- /site/website/static/templates/keep-open.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 |
17 |
18 | 21 | 22 |
23 | 37 |
38 |
39 |
40 | 41 | 48 | -------------------------------------------------------------------------------- /site/website/static/templates/label-template.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 |
17 |
18 | 21 | 22 |
23 | 40 |
41 |
42 |
43 | 44 | 53 | -------------------------------------------------------------------------------- /site/website/static/templates/large-select.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 |
17 |
18 | 21 | 22 |
23 | 27 | 28 | 29 | 30 | 31 | 32 |
33 |
34 | 35 |
36 | 39 | 40 |
41 | 55 |
56 |
57 |
58 | 59 | 72 | -------------------------------------------------------------------------------- /site/website/static/templates/max-height.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | 16 | 17 |
18 |
19 | 22 | 23 |
24 | 38 |
39 |
40 |
41 | 42 | 49 | -------------------------------------------------------------------------------- /site/website/static/templates/minimum-count-selected.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 |
17 |
18 | 21 | 22 |
23 | 37 |
38 |
39 |
40 | 41 | 48 | -------------------------------------------------------------------------------- /site/website/static/templates/open-close.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 |
17 |
18 | 21 | 22 |
23 | 24 | 25 |
26 |
27 | 28 |
29 | 32 | 33 |
34 | 48 |
49 |
50 |
51 | 52 | 69 | -------------------------------------------------------------------------------- /site/website/static/templates/open-on-hover.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 |
17 |
18 | 21 | 22 |
23 | 37 |
38 |
39 |
40 | 41 | 48 | -------------------------------------------------------------------------------- /site/website/static/templates/placeholder.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 |
17 |
18 | 21 | 22 |
23 | 40 |
41 |
42 | 43 |
44 | 47 | 48 |
49 | 66 |
67 |
68 |
69 | 70 | 78 | -------------------------------------------------------------------------------- /site/website/static/templates/position.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | 19 | 20 |
21 |
22 | 25 | 26 |
27 | 41 |
42 |
43 |
44 | 45 | 52 | -------------------------------------------------------------------------------- /site/website/static/templates/refreshOptions.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 |
17 |
18 | 21 | 22 |
23 | 24 |
25 |
26 | 27 |
28 | 31 | 32 |
33 | 38 |
39 |
40 |
41 | 42 | 57 | -------------------------------------------------------------------------------- /site/website/static/templates/resetFilter.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 |
17 |
18 | 21 | 22 |
23 | 24 |
25 |
26 | 27 |
28 | 31 | 32 |
33 | 66 |
67 |
68 |
69 | 70 | 85 | -------------------------------------------------------------------------------- /site/website/static/templates/selected-disabled.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 |
17 |
18 | 21 | 22 |
23 | 37 |
38 |
39 | 40 |
41 | 44 | 45 |
46 | 63 |
64 |
65 |
66 | 67 | 72 | -------------------------------------------------------------------------------- /site/website/static/templates/setSelects-getSelects.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 |
17 |
18 | 21 | 22 |
23 | 24 | 25 | 26 | 27 |
28 |
29 | 30 |
31 | 34 | 35 |
36 | 50 |
51 |
52 |
53 | 54 | 77 | -------------------------------------------------------------------------------- /site/website/static/templates/single-radio.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 |
17 |
18 | 21 | 22 |
23 | 29 |
30 |
31 | 32 |
33 | 36 | 37 |
38 | 55 |
56 |
57 |
58 | 59 | 66 | -------------------------------------------------------------------------------- /site/website/static/templates/submit-select.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | 16 | 17 |
18 |
19 |
20 | 23 | 24 |
25 | 31 |
32 |
33 | 34 |
35 | 38 | 39 |
40 | 46 |
47 |
48 | 49 |
50 |
51 | 52 |
53 |
54 |
55 |
56 | 57 | 67 | -------------------------------------------------------------------------------- /site/website/static/templates/template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 |
21 |
22 |

23 | 24 |

25 |

26 |
27 |
28 |
29 | 30 |
31 |
32 |
33 | 34 |
35 |
36 |
37 |
38 | 39 | 40 | -------------------------------------------------------------------------------- /site/website/static/templates/text-template.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 |
17 |
18 | 21 | 22 |
23 | 37 |
38 |
39 |
40 | 41 | 54 | -------------------------------------------------------------------------------- /src/locale/multiple-select-cz-CS.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Multiple Select cz-CS translation 3 | * Author: Matej Puhony 4 | */ 5 | 6 | $.fn.multipleSelect.locales['cz-CS'] = { 7 | formatSelectAll () { 8 | return '[Vybrat vše]' 9 | }, 10 | formatAllSelected () { 11 | return 'Vše vybráno' 12 | }, 13 | formatCountSelected (count, total) { 14 | return `${count} z ${total} vybráno` 15 | }, 16 | formatNoMatchesFound () { 17 | return 'Nebylo nalezeno' 18 | } 19 | } 20 | 21 | $.extend($.fn.multipleSelect.defaults, $.fn.multipleSelect.locales['cz-CS']) 22 | -------------------------------------------------------------------------------- /src/locale/multiple-select-da-DK.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Multiple Select da-DK translation 3 | * Author: HThuren 4 | */ 5 | 6 | $.fn.multipleSelect.locales['da-DK'] = { 7 | formatSelectAll () { 8 | return '[Vælg/fravælg alle]' 9 | }, 10 | formatAllSelected () { 11 | return 'Alle valgt' 12 | }, 13 | formatCountSelected (count, total) { 14 | return `${count} af ${total} valgt` 15 | }, 16 | formatNoMatchesFound () { 17 | return 'Søgning uden resultat' 18 | } 19 | } 20 | 21 | $.extend($.fn.multipleSelect.defaults, $.fn.multipleSelect.locales['da-DK']) 22 | -------------------------------------------------------------------------------- /src/locale/multiple-select-de-DE.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Multiple Select de-DE translation 3 | * Author: Igor Clukas 4 | */ 5 | 6 | $.fn.multipleSelect.locales['de-DE'] = { 7 | formatSelectAll () { 8 | return '[Alle auswählen]' 9 | }, 10 | formatAllSelected () { 11 | return 'Alle ausgewählt' 12 | }, 13 | formatCountSelected (count, total) { 14 | return `${count} von ${total} ausgewählt` 15 | }, 16 | formatNoMatchesFound () { 17 | return 'Keine Treffer' 18 | } 19 | } 20 | 21 | $.extend($.fn.multipleSelect.defaults, $.fn.multipleSelect.locales['de-DE']) 22 | -------------------------------------------------------------------------------- /src/locale/multiple-select-en-US.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Multiple Select en-US translation 3 | * Author: Zhixin Wen 4 | */ 5 | 6 | $.fn.multipleSelect.locales['en-US'] = { 7 | formatSelectAll () { 8 | return '[Select all]' 9 | }, 10 | formatAllSelected () { 11 | return 'All selected' 12 | }, 13 | formatCountSelected (count, total) { 14 | return `${count} of ${total} selected` 15 | }, 16 | formatNoMatchesFound () { 17 | return 'No matches found' 18 | } 19 | } 20 | 21 | $.extend($.fn.multipleSelect.defaults, $.fn.multipleSelect.locales['en-US']) 22 | -------------------------------------------------------------------------------- /src/locale/multiple-select-es-ES.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Multiple Select es-ES translation 3 | * Author: Zhixin Wen 4 | */ 5 | 6 | $.fn.multipleSelect.locales['es-ES'] = { 7 | formatSelectAll () { 8 | return '[Seleccionar todo]' 9 | }, 10 | formatAllSelected () { 11 | return 'Todos seleccionados' 12 | }, 13 | formatCountSelected (count, total) { 14 | return `${count} de ${total} seleccionado` 15 | }, 16 | formatNoMatchesFound () { 17 | return 'No se encontraron coincidencias' 18 | } 19 | } 20 | 21 | $.extend($.fn.multipleSelect.defaults, $.fn.multipleSelect.locales['es-ES']) 22 | -------------------------------------------------------------------------------- /src/locale/multiple-select-fr-FR.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Multiple Select fr-FR translation 3 | * Author: Francis Perron 4 | */ 5 | 6 | $.fn.multipleSelect.locales['fr-FR'] = { 7 | formatSelectAll () { 8 | return '[Tout sélectionner]' 9 | }, 10 | formatAllSelected () { 11 | return 'Tous sélectionnés' 12 | }, 13 | formatCountSelected (count, total) { 14 | return `${count} de ${total} sélectionnés` 15 | }, 16 | formatNoMatchesFound () { 17 | return 'Aucun résultat' 18 | } 19 | } 20 | 21 | $.extend($.fn.multipleSelect.defaults, $.fn.multipleSelect.locales['fr-FR']) 22 | -------------------------------------------------------------------------------- /src/locale/multiple-select-hu-HU.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Multiple Select hu-HU translation 3 | * Author: Péter Báthory 4 | */ 5 | 6 | $.fn.multipleSelect.locales['hu-HU'] = { 7 | formatSelectAll () { 8 | return '[Összes kiválasztása]' 9 | }, 10 | formatAllSelected () { 11 | return 'Összes kiválasztva' 12 | }, 13 | formatCountSelected (count, total) { 14 | return `${count} / ${total} kiválasztva` 15 | }, 16 | formatNoMatchesFound () { 17 | return 'Nincs találat' 18 | } 19 | } 20 | 21 | $.extend($.fn.multipleSelect.defaults, $.fn.multipleSelect.locales['hu-HU']) 22 | -------------------------------------------------------------------------------- /src/locale/multiple-select-id-ID.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Multiple Select id-ID translation 3 | * Author: AdjadTea 4 | */ 5 | 6 | $.fn.multipleSelect.locales['id-ID'] = { 7 | formatSelectAll () { 8 | return '[Pilih Semua]' 9 | }, 10 | formatAllSelected () { 11 | return 'Semua Dipilih' 12 | }, 13 | formatCountSelected (count, total) { 14 | return `${count} of ${total} dipilih` 15 | }, 16 | formatNoMatchesFound () { 17 | return 'Tidak ditemukan' 18 | } 19 | } 20 | 21 | $.extend($.fn.multipleSelect.defaults, $.fn.multipleSelect.locales['id-ID']) 22 | -------------------------------------------------------------------------------- /src/locale/multiple-select-it-IT.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Multiple Select it-IT translation 3 | * Author: Giuseppe Lodi Rizzini 4 | */ 5 | 6 | $.fn.multipleSelect.locales['it-IT'] = { 7 | formatSelectAll () { 8 | return '[Seleziona tutti]' 9 | }, 10 | formatAllSelected () { 11 | return 'Tutti selezionati' 12 | }, 13 | formatCountSelected (count, total) { 14 | return `${count} di ${total} selezionati` 15 | }, 16 | formatNoMatchesFound () { 17 | return 'Nessun risultato' 18 | } 19 | } 20 | 21 | $.extend($.fn.multipleSelect.defaults, $.fn.multipleSelect.locales['it-IT']) 22 | -------------------------------------------------------------------------------- /src/locale/multiple-select-ja-JP.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Multiple Select ja-JP translation 3 | * Author: Nozomi Anzai 4 | */ 5 | 6 | $.fn.multipleSelect.locales['ja-JP'] = { 7 | formatSelectAll () { 8 | return '[すべて選択]' 9 | }, 10 | formatAllSelected () { 11 | return 'すべて選択' 12 | }, 13 | formatCountSelected (count, total) { 14 | return `${total} 件中 ${count} 件選択` 15 | }, 16 | formatNoMatchesFound () { 17 | return '見つかりません' 18 | } 19 | } 20 | 21 | $.extend($.fn.multipleSelect.defaults, $.fn.multipleSelect.locales['ja-JP']) 22 | -------------------------------------------------------------------------------- /src/locale/multiple-select-pt-BR.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Multiple Select pt-BR translation 3 | * Author: Lucas Aguiar 4 | */ 5 | 6 | $.fn.multipleSelect.locales['pt-BR'] = { 7 | formatSelectAll () { 8 | return '[Selecionar todos]' 9 | }, 10 | formatAllSelected () { 11 | return 'Todos selecionados' 12 | }, 13 | formatCountSelected (count, total) { 14 | return `${count} de ${total} selecionado(s)` 15 | }, 16 | formatNoMatchesFound () { 17 | return 'Nenhum resultado encontrado' 18 | } 19 | } 20 | 21 | $.extend($.fn.multipleSelect.defaults, $.fn.multipleSelect.locales['pt-BR']) 22 | -------------------------------------------------------------------------------- /src/locale/multiple-select-ru-RU.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Multiple Select ru-RU translation 3 | * Author: Zhixin Wen 4 | */ 5 | 6 | $.fn.multipleSelect.locales['ru-RU'] = { 7 | formatSelectAll () { 8 | return '[Выбрать все]' 9 | }, 10 | formatAllSelected () { 11 | return 'Выбрано все' 12 | }, 13 | formatCountSelected (count, total) { 14 | return `${count} из ${total} выбрано` 15 | }, 16 | formatNoMatchesFound () { 17 | return 'Совпадений не найдено' 18 | } 19 | } 20 | 21 | $.extend($.fn.multipleSelect.defaults, $.fn.multipleSelect.locales['ru-RU']) 22 | -------------------------------------------------------------------------------- /src/locale/multiple-select-vi-VN.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Multiple Select vi-VN translation 3 | * Author: hoangbaovu 4 | */ 5 | 6 | $.fn.multipleSelect.locales['vi-VN'] = { 7 | formatSelectAll () { 8 | return '[Tất cả]' 9 | }, 10 | formatAllSelected () { 11 | return 'Chọn tất cả' 12 | }, 13 | formatCountSelected (count, total) { 14 | return `Đã chọn ${count} trong ${total}` 15 | }, 16 | formatNoMatchesFound () { 17 | return 'Không tìm thấy kết quả.' 18 | } 19 | } 20 | 21 | $.extend($.fn.multipleSelect.defaults, $.fn.multipleSelect.locales['vi-VN']) 22 | -------------------------------------------------------------------------------- /src/locale/multiple-select-zh-CN.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Multiple Select zh-CN translation 3 | * Author: Zhixin Wen 4 | */ 5 | 6 | $.fn.multipleSelect.locales['zh-CN'] = { 7 | formatSelectAll () { 8 | return '[全选]' 9 | }, 10 | formatAllSelected () { 11 | return '已选择所有记录' 12 | }, 13 | formatCountSelected (count, total) { 14 | return `已从${total}条记录中选择${count}条` 15 | }, 16 | formatNoMatchesFound () { 17 | return '没有找到记录' 18 | } 19 | } 20 | 21 | $.extend($.fn.multipleSelect.defaults, $.fn.multipleSelect.locales['zh-CN']) 22 | -------------------------------------------------------------------------------- /src/locale/multiple-select-zh-TW.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Multiple Select zh-TW translation 3 | * Author: Zhixin Wen 4 | */ 5 | 6 | $.fn.multipleSelect.locales['zh-TW'] = { 7 | formatSelectAll () { 8 | return '[全選]' 9 | }, 10 | formatAllSelected () { 11 | return '已選擇所有記錄' 12 | }, 13 | formatCountSelected (count, total) { 14 | return `已從${total}條記錄中選擇${count}條` 15 | }, 16 | formatNoMatchesFound () { 17 | return '沒有找到記錄' 18 | } 19 | } 20 | 21 | $.extend($.fn.multipleSelect.defaults, $.fn.multipleSelect.locales['zh-TW']) 22 | -------------------------------------------------------------------------------- /src/multiple-select.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author zhixin wen 3 | * @version 2.1.1 4 | * 5 | * http://wenzhixin.net.cn/p/multiple-select/ 6 | */ 7 | 8 | import Constants from './constants/index.js' 9 | import MultipleSelect from './MultipleSelect.js' 10 | 11 | $.fn.multipleSelect = function (option, ...args) { 12 | let value 13 | 14 | this.each((i, el) => { 15 | const $this = $(el) 16 | let data = $this.data('multipleSelect') 17 | 18 | const options = $.extend( 19 | {}, 20 | $this.data(), 21 | typeof option === 'object' && option 22 | ) 23 | 24 | if (!data) { 25 | data = new MultipleSelect($this, options) 26 | $this.data('multipleSelect', data) 27 | } 28 | 29 | if (typeof option === 'string') { 30 | if ($.inArray(option, Constants.METHODS) < 0) { 31 | throw new Error(`Unknown method: ${option}`) 32 | } 33 | value = data[option](...args) 34 | 35 | if (option === 'destroy') { 36 | $this.removeData('multipleSelect') 37 | } 38 | } else { 39 | data.init() 40 | } 41 | }) 42 | 43 | return typeof value !== 'undefined' ? value : this 44 | } 45 | 46 | $.fn.multipleSelect.Constructor = MultipleSelect 47 | $.fn.multipleSelect.defaults = Constants.DEFAULTS 48 | $.fn.multipleSelect.locales = Constants.LOCALES 49 | $.fn.multipleSelect.methods = Constants.METHODS 50 | -------------------------------------------------------------------------------- /src/themes/bootstrap.scss: -------------------------------------------------------------------------------- 1 | .ms-parent.form-control { 2 | --ms-form-control-height: calc(1.5em + .75rem); 3 | 4 | &.form-control-sm { 5 | --ms-form-control-height: calc(1.5em + .5rem); 6 | } 7 | 8 | &.form-control-lg { 9 | --ms-form-control-height: calc(1.5em + 1rem); 10 | } 11 | 12 | padding: 0; 13 | border-radius: .2rem; 14 | display: inline-block; 15 | height: calc(var(--ms-form-control-height) + 2px); 16 | 17 | .icon-close::before { 18 | line-height: var(--ms-form-control-height); 19 | } 20 | 21 | .ms-choice { 22 | height: 100%; 23 | border: 0; 24 | 25 | > span { 26 | top: 50%; 27 | transform: translateY(-50%); 28 | } 29 | } 30 | 31 | .ms-drop { 32 | ul > li { 33 | label { 34 | overflow: hidden; 35 | white-space: nowrap; 36 | text-overflow: ellipsis; 37 | } 38 | 39 | &:not(.hide-radio) label { 40 | padding-left: calc(1.2em + 4px); 41 | 42 | input[type="radio"], 43 | input[type="checkbox"] { 44 | position: absolute; 45 | top: 50%; 46 | margin-top: -0.5em; 47 | margin-left: calc(-1.2em - 4px); 48 | } 49 | } 50 | } 51 | } 52 | 53 | &.ms-dropdown { 54 | .ms-drop ul > li { 55 | &.group.hide-radio label.optgroup { 56 | margin-bottom: 0; 57 | font-size: 87.5%; 58 | color: #6c757d; 59 | white-space: nowrap; 60 | opacity: 1; 61 | } 62 | 63 | &.hide-radio.option-level-1 label { 64 | padding-left: 8px; 65 | } 66 | } 67 | 68 | &.ms-dropdown-divider { 69 | .ms-drop ul > li { 70 | &.group.hide-radio label.optgroup { 71 | border-top: 1px solid #e9ecef; 72 | } 73 | 74 | &.group:first-child label.optgroup { 75 | border-top: none; 76 | } 77 | } 78 | } 79 | } 80 | } 81 | 82 | .input-group-btn { 83 | .ms-choice { 84 | border-top-left-radius: 0; 85 | border-bottom-left-radius: 0; 86 | } 87 | 88 | &.is-left { 89 | .ms-choice { 90 | border-radius: 4px 0 0 4px; 91 | margin-left: 0; 92 | } 93 | 94 | + .form-control { 95 | margin-left: -1px; 96 | } 97 | } 98 | } 99 | -------------------------------------------------------------------------------- /src/vue/index.js: -------------------------------------------------------------------------------- 1 | import MultipleSelect from './MultipleSelect.vue' 2 | 3 | export default MultipleSelect 4 | -------------------------------------------------------------------------------- /stylelint.config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | extends: 'stylelint-config-standard-scss', 3 | rules: { 4 | 'alpha-value-notation': null, 5 | 'color-function-notation': null, 6 | 'hue-degree-notation': null, 7 | 'no-descending-specificity': null, 8 | 'scss/no-global-function-names': null, 9 | 'selector-not-notation': null 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /tools/example.tpl: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 | 30 | 31 | 36 | -------------------------------------------------------------------------------- /tools/template.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs').promises 2 | const getopts = require('getopts') 3 | 4 | const options = getopts(process.argv.slice(2), { 5 | alias: { 6 | h: 'help', 7 | n: 'name', 8 | t: 'title', 9 | d: 'desc' 10 | } 11 | }) 12 | 13 | /** 14 | * Logs help. 15 | * @returns {void} 16 | */ 17 | function showHelp () { 18 | const baseCmd = 'node tools/template.js' 19 | 20 | console.info(`usage: 21 | -h, --help show help info 22 | -n, --name set the example name 23 | -t, --title set the example title 24 | -d, --desc set the example desc 25 | `) 26 | 27 | console.info(`example: 28 | ${baseCmd} -n 'name' -d 'desc' 29 | `) 30 | } 31 | 32 | /** 33 | * Perform document file writing. 34 | * @returns {Promise} process 35 | */ 36 | async function run () { 37 | if (options.help || Object.keys(options).length === 1) { 38 | showHelp() 39 | return 40 | } 41 | if (!options.name) { 42 | console.error('You need to input -n, --name argv') 43 | return 44 | } 45 | if (!options.title) { 46 | options.title = options.name.split('-').join(' ') 47 | } 48 | 49 | let content = (await fs.readFile(`${__dirname}/example.tpl`)).toString() 50 | 51 | content = content.replace(/@title@/, options.title || '') 52 | .replace(/@desc@/, options.desc || '') 53 | 54 | await fs.writeFile(`${__dirname}/../docs/examples/${options.name}.html`, content) 55 | console.info(`${options.name}.html`) 56 | 57 | let list = (await fs.readFile(`${__dirname}/../docs/_includes/example-list.md`)).toString() 58 | 59 | list += `
  • ${options.title}
  • \n` 60 | await fs.writeFile(`${__dirname}/../docs/_includes/example-list.md`, list) 61 | } 62 | 63 | run() 64 | -------------------------------------------------------------------------------- /vite.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import vue from '@vitejs/plugin-vue' 3 | 4 | export default defineConfig({ 5 | define: { 6 | 'process.env': {} 7 | }, 8 | build: { 9 | lib: { 10 | entry: 'src/vue/index.js', 11 | name: 'MultipleSelect', 12 | fileName: 'multiple-select-vue', 13 | formats: ['es', 'umd'] 14 | }, 15 | rollupOptions: { 16 | external: ['vue'], 17 | output: { 18 | globals: { 19 | vue: 'Vue' 20 | } 21 | } 22 | }, 23 | emptyOutDir: false, 24 | minify: false 25 | }, 26 | plugins: [vue()] 27 | }) 28 | -------------------------------------------------------------------------------- /vue-examples/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | # local env files 6 | .env.local 7 | .env.*.local 8 | 9 | # Log files 10 | npm-debug.log* 11 | yarn-debug.log* 12 | yarn-error.log* 13 | 14 | # Editor directories and files 15 | .idea 16 | .vscode 17 | *.suo 18 | *.ntvs* 19 | *.njsproj 20 | *.sln 21 | *.sw? 22 | -------------------------------------------------------------------------------- /vue-examples/README.md: -------------------------------------------------------------------------------- 1 | # vue-examples 2 | 3 | ## Project setup 4 | ``` 5 | yarn install 6 | ``` 7 | 8 | ### Compiles and hot-reloads for development 9 | ``` 10 | yarn run serve 11 | ``` 12 | 13 | ### Compiles and minifies for production 14 | ``` 15 | yarn run build 16 | ``` 17 | 18 | ### Run your tests 19 | ``` 20 | yarn run test 21 | ``` 22 | 23 | ### Lints and fixes files 24 | ``` 25 | yarn run lint 26 | ``` 27 | 28 | ### Customize configuration 29 | See [Configuration Reference](https://cli.vuejs.org/config/). 30 | -------------------------------------------------------------------------------- /vue-examples/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | vue-examples 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 18 |
    19 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /vue-examples/index.prod.html: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 |
    9 | 10 | -------------------------------------------------------------------------------- /vue-examples/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue-examples", 3 | "version": "2.1.0", 4 | "private": true, 5 | "scripts": { 6 | "serve": "vite", 7 | "build": "vite build && mv dist/index.prod.html ../site/website/pages/vue-examples.html && rm -rf ../site/website/static/vue-examples && mv dist ../site/website/static/vue-examples", 8 | "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs --fix --ignore-path .gitignore" 9 | }, 10 | "dependencies": { 11 | "highlight.js": "^11.11.1", 12 | "jquery": "^3.7.1", 13 | "multiple-select": "^2.1.1", 14 | "vue": "^3.5.13", 15 | "vue-router": "^4.5.0" 16 | }, 17 | "devDependencies": { 18 | "@vitejs/plugin-vue": "^5.2.1", 19 | "autoprefixer": "^10.4.20", 20 | "eslint": "^9.21.0", 21 | "eslint-plugin-vue": "^9.32.0", 22 | "sass": "^1.85.1", 23 | "vite": "^6.2.0" 24 | }, 25 | "eslintConfig": { 26 | "root": true, 27 | "env": { 28 | "node": true 29 | }, 30 | "extends": [ 31 | "plugin:vue/vue3-essential", 32 | "eslint:recommended" 33 | ], 34 | "rules": {}, 35 | "parserOptions": { 36 | "ecmaVersion": "latest" 37 | } 38 | }, 39 | "postcss": { 40 | "plugins": { 41 | "autoprefixer": {} 42 | } 43 | }, 44 | "browserslist": [ 45 | "> 1%", 46 | "last 2 versions" 47 | ] 48 | } 49 | -------------------------------------------------------------------------------- /vue-examples/src/components/Ads.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 18 | 19 | 50 | -------------------------------------------------------------------------------- /vue-examples/src/examples/Destroy.vue: -------------------------------------------------------------------------------- 1 | 75 | 76 | 89 | 90 | 95 | -------------------------------------------------------------------------------- /vue-examples/src/examples/Disabled.vue: -------------------------------------------------------------------------------- 1 | 59 | 60 | 65 | -------------------------------------------------------------------------------- /vue-examples/src/examples/DisplayDelimiter.vue: -------------------------------------------------------------------------------- 1 | 54 | 55 | 66 | 67 | 72 | -------------------------------------------------------------------------------- /vue-examples/src/examples/DisplayTitle.vue: -------------------------------------------------------------------------------- 1 | 54 | 55 | 66 | 67 | 72 | -------------------------------------------------------------------------------- /vue-examples/src/examples/DisplayValues.vue: -------------------------------------------------------------------------------- 1 | 54 | 55 | 66 | 67 | 72 | -------------------------------------------------------------------------------- /vue-examples/src/examples/Ellipsis.vue: -------------------------------------------------------------------------------- 1 | 54 | 55 | 67 | 68 | 73 | -------------------------------------------------------------------------------- /vue-examples/src/examples/EnableDisable.vue: -------------------------------------------------------------------------------- 1 | 75 | 76 | 89 | 90 | 95 | -------------------------------------------------------------------------------- /vue-examples/src/examples/FilterGroup.vue: -------------------------------------------------------------------------------- 1 | 80 | 81 | 93 | 94 | 99 | -------------------------------------------------------------------------------- /vue-examples/src/examples/FocusBlur.vue: -------------------------------------------------------------------------------- 1 | 75 | 76 | 88 | 89 | 94 | -------------------------------------------------------------------------------- /vue-examples/src/examples/GetOptions.vue: -------------------------------------------------------------------------------- 1 | 42 | 43 | 60 | 61 | 66 | -------------------------------------------------------------------------------- /vue-examples/src/examples/HideOptgroupCheckboxes.vue: -------------------------------------------------------------------------------- 1 | 69 | 70 | 83 | 84 | 89 | -------------------------------------------------------------------------------- /vue-examples/src/examples/HideSelectAll.vue: -------------------------------------------------------------------------------- 1 | 30 | 31 | 42 | 43 | 48 | -------------------------------------------------------------------------------- /vue-examples/src/examples/I18n.vue: -------------------------------------------------------------------------------- 1 | 54 | 55 | 78 | 79 | 84 | -------------------------------------------------------------------------------- /vue-examples/src/examples/IsOpen.vue: -------------------------------------------------------------------------------- 1 | 54 | 55 | 66 | 67 | 72 | -------------------------------------------------------------------------------- /vue-examples/src/examples/KeepOpen.vue: -------------------------------------------------------------------------------- 1 | 54 | 55 | 66 | 67 | 72 | -------------------------------------------------------------------------------- /vue-examples/src/examples/LabelTemplate.vue: -------------------------------------------------------------------------------- 1 | 51 | 52 | 65 | 66 | 71 | -------------------------------------------------------------------------------- /vue-examples/src/examples/LargeSelect.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 35 | 36 | 41 | -------------------------------------------------------------------------------- /vue-examples/src/examples/Locale.vue: -------------------------------------------------------------------------------- 1 | 79 | 80 | 91 | 92 | 97 | -------------------------------------------------------------------------------- /vue-examples/src/examples/MaxHeight.vue: -------------------------------------------------------------------------------- 1 | 54 | 55 | 66 | 67 | 72 | -------------------------------------------------------------------------------- /vue-examples/src/examples/MinimumCountSelected.vue: -------------------------------------------------------------------------------- 1 | 54 | 55 | 66 | 67 | 72 | -------------------------------------------------------------------------------- /vue-examples/src/examples/OpenClose.vue: -------------------------------------------------------------------------------- 1 | 75 | 76 | 91 | 92 | 97 | -------------------------------------------------------------------------------- /vue-examples/src/examples/OpenOnHover.vue: -------------------------------------------------------------------------------- 1 | 54 | 55 | 66 | 67 | 72 | -------------------------------------------------------------------------------- /vue-examples/src/examples/Position.vue: -------------------------------------------------------------------------------- 1 | 54 | 55 | 66 | 67 | 76 | -------------------------------------------------------------------------------- /vue-examples/src/examples/RefreshOptions.vue: -------------------------------------------------------------------------------- 1 | 43 | 44 | 62 | 63 | 68 | -------------------------------------------------------------------------------- /vue-examples/src/examples/SingleRadio.vue: -------------------------------------------------------------------------------- 1 | 75 | 76 | 87 | 88 | 93 | -------------------------------------------------------------------------------- /vue-examples/src/examples/SubmitSelect.vue: -------------------------------------------------------------------------------- 1 | 69 | 70 | 82 | 83 | 88 | -------------------------------------------------------------------------------- /vue-examples/src/examples/TextTemplate.vue: -------------------------------------------------------------------------------- 1 | 54 | 55 | 74 | 75 | 80 | -------------------------------------------------------------------------------- /vue-examples/src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue' 2 | import App from './App.vue' 3 | import './plugins/select' 4 | import router from './router' 5 | 6 | import MultipleSelect from 'multiple-select/src/vue/MultipleSelect.vue' 7 | 8 | const app = createApp(App) 9 | 10 | app.use(router) 11 | app.component('MultipleSelect', MultipleSelect) 12 | app.__VUE_PROD_DEVTOOLS__ = process.env.NODE_ENV === 'development' 13 | 14 | app.mount('#app') 15 | -------------------------------------------------------------------------------- /vue-examples/src/plugins/jquery.js: -------------------------------------------------------------------------------- 1 | import jQuery from 'jquery' 2 | window.$ = window.jQuery = jQuery 3 | -------------------------------------------------------------------------------- /vue-examples/src/plugins/select.js: -------------------------------------------------------------------------------- 1 | import 'multiple-select/src/multiple-select.scss' 2 | 3 | import './jquery' 4 | import $ from 'jquery' 5 | import 'multiple-select/src/multiple-select.js' 6 | import 'multiple-select/src/locale/multiple-select-en-US' 7 | import 'multiple-select/src/locale/multiple-select-zh-CN' 8 | 9 | $.extend($.fn.multipleSelect.defaults, $.fn.multipleSelect.locales['en-US']) 10 | -------------------------------------------------------------------------------- /vue-examples/src/registry.js: -------------------------------------------------------------------------------- 1 | const modules = import.meta.glob('./examples/*.vue') 2 | const raws = import.meta.glob('./examples/*.vue', { as: 'raw' }) 3 | const components = [] 4 | 5 | for (const path in modules) { 6 | if (!modules[path]) { 7 | continue 8 | } 9 | const name = (/examples\/(.*).vue/.exec(path))[1] 10 | 11 | components.push({ 12 | path: '/' + name, 13 | component: modules[path], 14 | name, 15 | source: raws[path] 16 | }) 17 | } 18 | 19 | export default { 20 | components 21 | } 22 | -------------------------------------------------------------------------------- /vue-examples/src/router/index.js: -------------------------------------------------------------------------------- 1 | import { createRouter, createWebHashHistory } from 'vue-router' 2 | import Main from '../views/Main.vue' 3 | 4 | const routes = [ 5 | { 6 | path: '/:current', 7 | name: 'current', 8 | component: Main, 9 | props: true 10 | }, 11 | { 12 | path: '/:current/view-source', 13 | name: 'view-source', 14 | component: Main, 15 | props: true 16 | }, 17 | { 18 | path: '/:pathMatch(.*)*', 19 | redirect: '/single-row' 20 | } 21 | ] 22 | 23 | const router = createRouter({ 24 | history: createWebHashHistory(), 25 | routes 26 | }) 27 | 28 | export default router 29 | -------------------------------------------------------------------------------- /vue-examples/vite.config.js: -------------------------------------------------------------------------------- 1 | import { fileURLToPath, URL } from 'node:url' 2 | 3 | import { defineConfig } from 'vite' 4 | import vue from '@vitejs/plugin-vue' 5 | 6 | // https://vitejs.dev/config/ 7 | export default defineConfig({ 8 | base: './', 9 | plugins: [ 10 | vue() 11 | ], 12 | resolve: { 13 | alias: { 14 | '@': fileURLToPath(new URL('./src', import.meta.url)), 15 | ...process.env.NODE_ENV === 'production' ? 16 | {} : 17 | { 18 | 'multiple-select': fileURLToPath(new URL('../', import.meta.url)) 19 | } 20 | }, 21 | extensions: ['.js', '.vue', '.json'] 22 | }, 23 | build: { 24 | rollupOptions: { 25 | input: process.env.NODE_ENV === 'production' ? 'index.prod.html' : 'index.html' 26 | } 27 | } 28 | }) 29 | -------------------------------------------------------------------------------- /vue-starter/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | # local env files 6 | .env.local 7 | .env.*.local 8 | 9 | # Log files 10 | npm-debug.log* 11 | yarn-debug.log* 12 | yarn-error.log* 13 | 14 | # Editor directories and files 15 | .idea 16 | .vscode 17 | *.suo 18 | *.ntvs* 19 | *.njsproj 20 | *.sln 21 | *.sw? 22 | -------------------------------------------------------------------------------- /vue-starter/README.md: -------------------------------------------------------------------------------- 1 | # vue-starter 2 | 3 | ## Project setup 4 | ``` 5 | yarn install 6 | ``` 7 | 8 | ### Compiles and hot-reloads for development 9 | ``` 10 | yarn run serve 11 | ``` 12 | 13 | ### Compiles and minifies for production 14 | ``` 15 | yarn run build 16 | ``` 17 | 18 | ### Run your tests 19 | ``` 20 | yarn run test 21 | ``` 22 | 23 | ### Lints and fixes files 24 | ``` 25 | yarn run lint 26 | ``` 27 | 28 | ### Customize configuration 29 | See [Configuration Reference](https://cli.vuejs.org/config/). 30 | -------------------------------------------------------------------------------- /vue-starter/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | vue-starter 9 | 10 | 11 | 14 |
    15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /vue-starter/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue-starter", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "serve": "vite", 7 | "build": "vite build", 8 | "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs --fix --ignore-path .gitignore" 9 | }, 10 | "dependencies": { 11 | "jquery": "^3.4.1", 12 | "multiple-select": "^2.0.0", 13 | "vue": "^3.4.0" 14 | }, 15 | "devDependencies": { 16 | "@vitejs/plugin-vue": "^5.0.4", 17 | "autoprefixer": "^10.4.18", 18 | "eslint": "^8.49.0", 19 | "eslint-plugin-vue": "^9.17.0", 20 | "vite": "^5.1.5" 21 | }, 22 | "eslintConfig": { 23 | "root": true, 24 | "env": { 25 | "node": true 26 | }, 27 | "extends": [ 28 | "plugin:vue/vue3-essential", 29 | "eslint:recommended" 30 | ], 31 | "rules": {}, 32 | "parserOptions": { 33 | "ecmaVersion": "latest" 34 | } 35 | }, 36 | "postcss": { 37 | "plugins": { 38 | "autoprefixer": {} 39 | } 40 | }, 41 | "browserslist": [ 42 | "> 1%", 43 | "last 2 versions" 44 | ] 45 | } 46 | -------------------------------------------------------------------------------- /vue-starter/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | autoprefixer: {} 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /vue-starter/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenzhixin/multiple-select/bfdbc0c721b5d1dbe029583055848678fe1f4560/vue-starter/public/favicon.ico -------------------------------------------------------------------------------- /vue-starter/src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 17 | -------------------------------------------------------------------------------- /vue-starter/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenzhixin/multiple-select/bfdbc0c721b5d1dbe029583055848678fe1f4560/vue-starter/src/assets/logo.png -------------------------------------------------------------------------------- /vue-starter/src/components/HelloWorld.vue: -------------------------------------------------------------------------------- 1 | 29 | 30 | 53 | -------------------------------------------------------------------------------- /vue-starter/src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue' 2 | import App from './App.vue' 3 | import './plugins/select' 4 | 5 | import MultipleSelect from 'multiple-select/src/vue/MultipleSelect.vue' 6 | 7 | const app = createApp(App) 8 | app.__VUE_PROD_DEVTOOLS__ = process.env.NODE_ENV === 'development' 9 | app.component('MultipleSelect', MultipleSelect) 10 | app.mount('#app') 11 | 12 | -------------------------------------------------------------------------------- /vue-starter/src/plugins/jquery.js: -------------------------------------------------------------------------------- 1 | import jQuery from 'jquery' 2 | window.$ = window.jQuery = jQuery 3 | -------------------------------------------------------------------------------- /vue-starter/src/plugins/select.js: -------------------------------------------------------------------------------- 1 | import 'multiple-select/dist/multiple-select.css' 2 | import './jquery.js' 3 | import 'multiple-select/dist/multiple-select.js' 4 | 5 | -------------------------------------------------------------------------------- /vue-starter/vite.config.js: -------------------------------------------------------------------------------- 1 | import { fileURLToPath, URL } from 'node:url' 2 | 3 | import { defineConfig } from 'vite' 4 | import vue from '@vitejs/plugin-vue' 5 | 6 | // https://vitejs.dev/config/ 7 | export default defineConfig({ 8 | plugins: [ 9 | vue(), 10 | ], 11 | resolve: { 12 | alias: { 13 | '@': fileURLToPath(new URL('./src', import.meta.url)) 14 | } 15 | } 16 | }) 17 | --------------------------------------------------------------------------------