[Mapbender-commits] r9346 - in trunk/mapbender/http/extensions: . bootstrap-select-1.9.3 bootstrap-select-1.9.3/dist bootstrap-select-1.9.3/dist/css bootstrap-select-1.9.3/dist/js bootstrap-select-1.9.3/dist/js/i18n bootstrap-select-1.9.3/docs bootstrap-select-1.9.3/docs/custom_theme bootstrap-select-1.9.3/docs/custom_theme/js bootstrap-select-1.9.3/docs/docs bootstrap-select-1.9.3/docs/docs/css bootstrap-select-1.9.3/js bootstrap-select-1.9.3/js/i18n bootstrap-select-1.9.3/less bootstrap-select-1.9.3/sass
svn_mapbender at osgeo.org
svn_mapbender at osgeo.org
Tue Jan 12 07:49:39 PST 2016
Author: armin11
Date: 2016-01-12 07:49:39 -0800 (Tue, 12 Jan 2016)
New Revision: 9346
Added:
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/.gitignore
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/CONTRIBUTING.md
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/Gruntfile.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/LICENSE
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/README.md
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/bower.json
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/composer.json
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/css/
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/css/bootstrap-select.css
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/css/bootstrap-select.css.map
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/css/bootstrap-select.min.css
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/bootstrap-select.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/bootstrap-select.js.map
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/bootstrap-select.min.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-ar_AR.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-ar_AR.min.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-bg_BG.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-bg_BG.min.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-cs_CZ.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-cs_CZ.min.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-da_DK.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-da_DK.min.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-de_DE.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-de_DE.min.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-en_US.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-en_US.min.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-es_CL.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-es_CL.min.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-eu.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-eu.min.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-fa_IR.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-fa_IR.min.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-fi_FI.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-fi_FI.min.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-fr_FR.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-fr_FR.min.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-hu_HU.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-hu_HU.min.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-id_ID.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-id_ID.min.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-it_IT.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-it_IT.min.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-ko_KR.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-ko_KR.min.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-nb_NO.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-nb_NO.min.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-nl_NL.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-nl_NL.min.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-pl_PL.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-pl_PL.min.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-pt_BR.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-pt_BR.min.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-pt_PT.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-pt_PT.min.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-ro_RO.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-ro_RO.min.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-ru_RU.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-ru_RU.min.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-sk_SK.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-sk_SK.min.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-sl_SI.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-sl_SI.min.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-sv_SE.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-sv_SE.min.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-tr_TR.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-tr_TR.min.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-ua_UA.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-ua_UA.min.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-zh_CN.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-zh_CN.min.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-zh_TW.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-zh_TW.min.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/custom_theme/
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/custom_theme/base.html
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/custom_theme/js/
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/custom_theme/js/base.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/custom_theme/nav.html
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/custom_theme/toc.html
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/docs/
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/docs/css/
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/docs/css/custom.css
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/docs/examples.md
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/docs/index.md
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/docs/methods.md
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/docs/options.md
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/mkdocs.yml
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/.jshintrc
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/bootstrap-select.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-ar_AR.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-bg_BG.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-cs_CZ.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-da_DK.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-de_DE.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-en_US.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-es_CL.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-eu.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-fa_IR.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-fi_FI.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-fr_FR.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-hu_HU.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-id_ID.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-it_IT.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-ko_KR.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-nb_NO.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-nl_NL.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-pl_PL.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-pt_BR.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-pt_PT.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-ro_RO.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-ru_RU.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-sk_SK.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-sl_SI.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-sv_SE.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-tr_TR.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-ua_UA.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-zh_CN.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-zh_TW.js
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/less/
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/less/bootstrap-select.less
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/less/variables.less
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/package.json
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/sass/
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/sass/bootstrap-select.scss
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/sass/variables.scss
trunk/mapbender/http/extensions/bootstrap-select-1.9.3/test.html
Log:
Bootstrap version for selectboxes - MIT licence
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/.gitignore
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/.gitignore (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/.gitignore 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,13 @@
+# OS or Editor folders
+.DS_Store
+.idea
+
+# Folders to ignore
+node_modules
+bower_components
+.sass-cache
+
+# Dist zip
+bootstrap-select-*.zip
+
+docs/site
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/CONTRIBUTING.md
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/CONTRIBUTING.md (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/CONTRIBUTING.md 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,114 @@
+# Contributing to this project
+
+Please take a moment to review this document in order to make the contribution
+process easy and effective for everyone involved.
+
+Following these guidelines helps to communicate that you respect the time of
+the developers managing and developing this open source project. In return,
+they should reciprocate that respect in addressing your issue or assessing
+patches and features.
+
+
+## Using the issue tracker
+
+The issue tracker is the preferred channel for [bug reports](#bug-reports),
+[features requests](#feature-requests) and submitting pull requests, but please
+respect the following restrictions:
+
+* Please **do not** use the issue tracker for personal support requests (use
+ [Stack Overflow](http://stackoverflow.com) or IRC).
+
+* Please **do not** derail or troll issues. Keep the discussion on topic and
+ respect the opinions of others.
+
+
+## Bug reports
+
+A bug is a _demonstrable problem_ that is caused by the code in the repository.
+Good bug reports are extremely helpful - thank you!
+
+Guidelines for bug reports:
+
+1. **Use the GitHub issue search.** Check if the issue has already been
+ reported.
+
+2. **Check if the issue has been fixed.** Try to reproduce it using the
+ latest `master` or development branch in the repository.
+
+3. **Provide environment details.** Provide your operating system, browser(s),
+ jQuery version, Bootstrap version, and bootstrap-select version.
+
+4. **Create an isolated and reproducible test case.** Create a [reduced test
+ case](http://css-tricks.com/6263-reduced-test-cases/).
+
+5. **Include a live example.** Make use of jsFiddle or jsBin to share your
+ isolated test cases.
+
+A good bug report shouldn't leave others needing to chase you up for more
+information. Please try to be as detailed as possible in your report. What is
+your environment? What steps will reproduce the issue? What browser(s) and OS
+experience the problem? What would you expect to be the outcome? All these
+details will help people to fix any potential bugs.
+
+Example:
+
+> Short and descriptive example bug report title
+>
+> A summary of the issue and the browser/OS environment in which it occurs. If
+> suitable, include the steps required to reproduce the bug.
+>
+> 1. This is the first step
+> 2. This is the second step
+> 3. Further steps, etc.
+>
+> `<url>` - a link to the reduced test case
+>
+> Any other information you want to share that is relevant to the issue being
+> reported. This might include the lines of code that you have identified as
+> causing the bug, and potential solutions (and your opinions on their
+> merits).
+
+
+## Feature requests
+
+Feature requests are welcome. But take a moment to find out whether your idea
+fits with the scope and aims of the project. It's up to *you* to make a strong
+case to convince the project's developers of the merits of this feature. Please
+provide as much detail and context as possible.
+
+## Pull Request Guidelines
+
+You must understand that by contributing code to this project, you are granting
+the authors (and/or leaders) of the project a non-exclusive license to
+re-distribute your code under the current license and possibly re-license the
+code as deemed necessary.
+
+* To instantiate a context or use it, use the variable **that** instead of
+ **_this**.
+* Please check to make sure that there aren't existing pull requests attempting
+ to address the issue mentioned. We also recommend checking for issues related
+ to the issue on the tracker, as a team member may be working on the issue in
+ a branch or fork.
+* Non-trivial changes should be discussed in an issue first
+* If your change affects the distributed files, re-generate them using the
+ [grunt procedure](#using-grunt)
+* If possible, add relevant tests to cover the change
+* Write a convincing description of your PR and why we should land it
+
+## Using Grunt
+
+We are using node and grunt to build and (in the future) test this project.
+This means that you must setup a local development environment:
+
+1. Install `node` and `npm` using your preferred method
+2. Install the grunt CLI: `npm install -g grunt-cli`
+3. Install the project's development dependencies: `npm install`
+4. Run the various grunt tasks as needed:
+ - `grunt`: clean the distribution files and re-build them
+ - `grunt dist`: build the distribution files
+ - `grunt clean`: clean the distribution files
+ - `grunt dist-css`: build the css distribution files
+ - `grunt dist-js`: build the javascript distribution files
+ - `grunt watch`: watch for changes in the source files and build the
+ distribution files as needed
+
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/Gruntfile.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/Gruntfile.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/Gruntfile.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,274 @@
+module.exports = function (grunt) {
+
+ // From TWBS
+ RegExp.quote = function (string) {
+ return string.replace(/[-\\^$*+?.()|[\]{}]/g, '\\$&');
+ };
+
+ // Project configuration.
+ grunt.initConfig({
+
+ // Metadata.
+ pkg: grunt.file.readJSON('package.json'),
+ banner: '/*!\n' +
+ ' * Bootstrap-select v<%= pkg.version %> (<%= pkg.homepage %>)\n' +
+ ' *\n' +
+ ' * Copyright 2013-<%= grunt.template.today(\'yyyy\') %> bootstrap-select\n' +
+ ' * Licensed under <%= pkg.license %> (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)\n' +
+ ' */\n',
+
+ // Task configuration.
+
+ clean: {
+ css: 'dist/css',
+ js: 'dist/js'
+ },
+
+ jshint: {
+ options: {
+ jshintrc: 'js/.jshintrc'
+ },
+ gruntfile: {
+ options: {
+ 'node': true
+ },
+ src: 'Gruntfile.js'
+ },
+ main: {
+ src: 'js/*.js'
+ },
+ i18n: {
+ src: 'js/i18n/*.js'
+ }
+ },
+
+ concat: {
+ options: {
+ stripBanners: true
+ },
+ main: {
+ src: '<%= jshint.main.src %>',
+ dest: 'dist/js/<%= pkg.name %>.js'
+ },
+ i18n: {
+ expand: true,
+ src: '<%= jshint.i18n.src %>',
+ dest: 'dist/'
+ }
+ },
+
+ umd: {
+ main: {
+ options: {
+ deps: {
+ 'default': ['jQuery'],
+ amd: ['jquery'],
+ cjs: ['jquery'],
+ global: ['jQuery']
+ }
+ },
+ src: '<%= concat.main.dest %>'
+ },
+ i18n: {
+ options: {
+ deps: {
+ 'default': ['jQuery'],
+ amd: ['jquery'],
+ cjs: ['jquery'],
+ global: ['jQuery']
+ }
+ },
+ src: 'dist/<%= jshint.i18n.src %>',
+ dest: '.'
+ }
+ },
+
+ uglify: {
+ options: {
+ preserveComments: 'some'
+ },
+ main: {
+ src: '<%= concat.main.dest %>',
+ dest: 'dist/js/<%= pkg.name %>.min.js',
+ options: {
+ sourceMap: true,
+ sourceMapName: 'dist/js/<%= pkg.name %>.js.map'
+ }
+ },
+ i18n: {
+ expand: true,
+ src: 'dist/<%= jshint.i18n.src %>',
+ ext: '.min.js'
+ }
+ },
+
+ less: {
+ options: {
+ strictMath: true,
+ sourceMap: true,
+ outputSourceFiles: true,
+ sourceMapURL: '<%= pkg.name %>.css.map',
+ sourceMapFilename: '<%= less.css.dest %>.map'
+ },
+ css: {
+ src: 'less/bootstrap-select.less',
+ dest: 'dist/css/<%= pkg.name %>.css'
+ }
+ },
+
+ usebanner: {
+ css: {
+ options: {
+ banner: '<%= banner %>'
+ },
+ src: '<%= less.css.dest %>'
+ },
+ js: {
+ options: {
+ banner: '<%= banner %>'
+ },
+ src: [
+ '<%= concat.main.dest %>',
+ '<%= uglify.main.dest %>',
+ 'dist/<%= jshint.i18n.src %>',
+ ]
+ }
+ },
+
+ cssmin: {
+ options: {
+ compatibility: 'ie8',
+ keepSpecialComments: '*',
+ advanced: false
+ },
+ css: {
+ src: '<%= less.css.dest %>',
+ dest: 'dist/css/<%= pkg.name %>.min.css'
+ }
+ },
+
+ csslint: {
+ options: {
+ 'adjoining-classes': false,
+ 'box-sizing': false,
+ 'box-model': false,
+ 'compatible-vendor-prefixes': false,
+ 'floats': false,
+ 'font-sizes': false,
+ 'gradients': false,
+ 'important': false,
+ 'known-properties': false,
+ 'outline-none': false,
+ 'qualified-headings': false,
+ 'regex-selectors': false,
+ 'shorthand': false,
+ 'text-indent': false,
+ 'unique-headings': false,
+ 'universal-selector': false,
+ 'unqualified-attributes': false,
+ 'overqualified-elements': false
+ },
+ css: {
+ src: '<%= less.css.dest %>'
+ }
+ },
+
+ sed: {
+ versionNumber: {
+ path: [
+ 'js/<%= pkg.name %>.js',
+ 'composer.json',
+ 'package.json'
+ ],
+ pattern: (function () {
+ var old = grunt.option('old');
+ return old ? RegExp.quote(old) : old;
+ })(),
+ replacement: grunt.option('new'),
+ recursive: true
+ }
+ },
+
+ autoprefixer: {
+ options: {
+ browsers: [
+ 'Android 2.3',
+ 'Android >= 4',
+ 'Chrome >= 20',
+ 'Firefox >= 24', // Firefox 24 is the latest ESR
+ 'Explorer >= 8',
+ 'iOS >= 6',
+ 'Opera >= 12',
+ 'Safari >= 6'
+ ]
+ },
+ css: {
+ options: {
+ map: true
+ },
+ src: '<%= less.css.dest %>'
+ }
+ },
+
+ compress: {
+ zip: {
+ options: {
+ archive: 'bootstrap-select-<%= pkg.version %>.zip',
+ mode: 'zip'
+ },
+ files: [
+ {
+ expand: true,
+ cwd: 'dist/',
+ src: '**',
+ dest: 'bootstrap-select-<%= pkg.version %>/'
+ }, {
+ src: ['bower.json', 'composer.json', 'package.json'],
+ dest: 'bootstrap-select-<%= pkg.version %>/'
+ }
+ ]
+ }
+ },
+
+ watch: {
+ gruntfile: {
+ files: '<%= jshint.gruntfile.src %>',
+ tasks: 'jshint:gruntfile'
+ },
+ js: {
+ files: ['<%= jshint.main.src %>', '<%= jshint.i18n.src %>'],
+ tasks: 'build-js'
+ },
+ less: {
+ files: 'less/*.less',
+ tasks: 'build-css'
+ }
+ }
+ });
+
+ // These plugins provide necessary tasks.
+ require('load-grunt-tasks')(grunt, {
+ scope: 'devDependencies'
+ });
+
+ // Version numbering task.
+ // grunt change-version-number --old=A.B.C --new=X.Y.Z
+ // This can be overzealous, so its changes should always be manually reviewed!
+ grunt.registerTask('change-version-number', 'sed');
+
+ // CSS distribution
+ grunt.registerTask('build-css', ['clean:css', 'less', 'autoprefixer', 'usebanner:css', 'cssmin']);
+
+ // JS distribution
+ grunt.registerTask('build-js', ['clean:js', 'concat', 'umd', 'usebanner:js', 'uglify']);
+
+ // Development watch
+ grunt.registerTask('dev-watch', ['build-css', 'build-js', 'watch']);
+
+ // Full distribution
+ grunt.registerTask('dist', ['build-css', 'build-js', 'compress']);
+
+ // Default task.
+ grunt.registerTask('default', ['build-css', 'build-js']);
+
+};
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/LICENSE
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/LICENSE (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/LICENSE 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2013-2015 bootstrap-select
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/README.md
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/README.md (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/README.md 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,73 @@
+bootstrap-select
+================
+
+[![Latest release](https://img.shields.io/github/release/silviomoreto/bootstrap-select.svg)](https://github.com/silviomoreto/bootstrap-select/releases/latest)
+[![Bower](https://img.shields.io/bower/v/bootstrap-select.svg)]()
+[![npm](https://img.shields.io/npm/v/bootstrap-select.svg)](https://www.npmjs.com/package/bootstrap-select)
+[![NuGet](https://img.shields.io/nuget/v/bootstrap-select.svg)](https://www.nuget.org/packages/bootstrap-select/)
+
+[![License](https://img.shields.io/badge/license-MIT-brightgreen.svg)](LICENSE)
+[![Dependency Status](https://david-dm.org/silviomoreto/bootstrap-select.svg)](https://david-dm.org/silviomoreto/bootstrap-select)
+[![devDependency Status](https://david-dm.org/silviomoreto/bootstrap-select/dev-status.svg)](https://david-dm.org/silviomoreto/bootstrap-select#info=devDependencies)
+
+Bootstrap-select is a jQuery plugin that utilizes Bootstrap's dropdown.js to style and bring additional functionality to normal select boxes.
+
+## Demo and Documentation
+
+See a Bootstrap 3 example [here](http://silviomoreto.github.io/bootstrap-select).
+
+## Authors
+
+[Silvio Moreto](https://github.com/silviomoreto),
+[Ana Carolina](https://github.com/anacarolinats),
+[caseyjhol](https://github.com/caseyjhol),
+[Matt Bryson](https://github.com/mattbryson), and
+[t0xicCode](https://github.com/t0xicCode).
+
+## Usage
+
+Create your `<select>` with the `.selectpicker` class.
+```html
+<select class="selectpicker">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Barbecue</option>
+</select>
+```
+
+If you use a 1.6.3 or newer, you don't need to do anything else, as the data-api automatically picks up the `<select>`s with the `selectpicker` class.
+
+If you use an older version, you need to add the following either at the bottom of the page (after the last selectpicker), or in a [`$(document).ready()`](http://api.jquery.com/ready/) block.
+```js
+// To style only <select>s with the selectpicker class
+$('.selectpicker').selectpicker();
+```
+Or
+```js
+// To style all <select>s
+$('select').selectpicker();
+```
+
+Checkout the [documentation](http://silviomoreto.github.io/bootstrap-select) for further information.
+
+## CDN
+
+**N.B.**: The CDN is updated after the release is made public, which means that there is a delay between the publishing of a release and its availability on the CDN. Check [the GitHub page](https://github.com/silviomoreto/bootstrap-select/releases) for the latest release.
+
+* [//cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.9.3/css/bootstrap-select.min.css](//cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.9.3/css/bootstrap-select.min.css)
+* [//cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.9.3/js/bootstrap-select.min.js](//cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.9.3/js/bootstrap-select.min.js)
+* //cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.9.3/js/i18n/defaults-*.min.js (The translation files)
+
+## Bugs and feature requests
+
+Anyone and everyone is welcome to contribute. **Please take a moment to
+review the [guidelines for contributing](CONTRIBUTING.md)**. Make sure you're using the latest version of bootstrap-select before submitting an issue.
+
+* [Bug reports](CONTRIBUTING.md#bug-reports)
+* [Feature requests](CONTRIBUTING.md#feature-requests)
+
+## Copyright and license
+
+Copyright (C) 2013-2015 bootstrap-select
+
+Licensed under [the MIT license](LICENSE).
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/bower.json
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/bower.json (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/bower.json 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,31 @@
+{
+ "name": "bootstrap-select",
+ "main": [
+ "less/bootstrap-select.less",
+ "dist/css/bootstrap-select.css",
+ "dist/js/bootstrap-select.js"
+ ],
+ "homepage": "http://silviomoreto.github.io/bootstrap-select",
+ "authors": [
+ "silviomoreto"
+ ],
+ "keywords": [
+ "form",
+ "bootstrap",
+ "select",
+ "replacement"
+ ],
+ "dependencies": {
+ "jquery": ">=1.8"
+ },
+ "license": "MIT",
+ "ignore": [
+ ".gitignore",
+ "CONTRIBUTING.md",
+ "Gruntfile.js",
+ "README.md",
+ "composer.json",
+ "package.json",
+ "test.html"
+ ]
+}
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/composer.json
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/composer.json (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/composer.json 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,23 @@
+{
+ "name": "bootstrap-select/bootstrap-select",
+ "description": "A custom <select> for Bootstrap using button dropdown as replacement",
+ "keywords": [
+ "form",
+ "bootstrap",
+ "select",
+ "replacement"
+ ],
+ "homepage": "http://silviomoreto.github.io/bootstrap-select",
+ "version": "1.9.3",
+ "authors": [
+ {
+ "name": "Silvio Moreto",
+ "homepage": "https://github.com/silviomoreto"
+ }
+ ],
+ "license": "MIT",
+ "suggest": {
+ "components/jquery": ">=1.8",
+ "twbs/bootstrap": "~3.0.0"
+ }
+}
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/css/bootstrap-select.css
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/css/bootstrap-select.css (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/css/bootstrap-select.css 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,277 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+.bootstrap-select {
+ width: 220px \0;
+ /*IE9 and below*/
+}
+.bootstrap-select > .dropdown-toggle {
+ width: 100%;
+ padding-right: 25px;
+ z-index: 1;
+}
+.bootstrap-select > select {
+ position: absolute !important;
+ bottom: 0;
+ left: 50%;
+ width: 0.11px !important;
+ height: 100% !important;
+ padding: 0 !important;
+ opacity: 0 !important;
+ border: none;
+}
+.bootstrap-select > select.mobile-device {
+ top: 0;
+ left: 0;
+ display: block !important;
+ width: 100% !important;
+ z-index: 2;
+}
+.has-error .bootstrap-select .dropdown-toggle,
+.error .bootstrap-select .dropdown-toggle {
+ border-color: #b94a48;
+}
+.bootstrap-select.fit-width {
+ width: auto !important;
+}
+.bootstrap-select:not([class*="col-"]):not([class*="form-control"]):not(.input-group-btn) {
+ width: 220px;
+}
+.bootstrap-select .dropdown-toggle:focus {
+ outline: thin dotted #333333 !important;
+ outline: 5px auto -webkit-focus-ring-color !important;
+ outline-offset: -2px;
+}
+.bootstrap-select.form-control {
+ margin-bottom: 0;
+ padding: 0;
+ border: none;
+}
+.bootstrap-select.form-control:not([class*="col-"]) {
+ width: 100%;
+}
+.bootstrap-select.form-control.input-group-btn {
+ z-index: auto;
+}
+.bootstrap-select.btn-group:not(.input-group-btn),
+.bootstrap-select.btn-group[class*="col-"] {
+ float: none;
+ display: inline-block;
+ margin-left: 0;
+}
+.bootstrap-select.btn-group.dropdown-menu-right,
+.bootstrap-select.btn-group[class*="col-"].dropdown-menu-right,
+.row .bootstrap-select.btn-group[class*="col-"].dropdown-menu-right {
+ float: right;
+}
+.form-inline .bootstrap-select.btn-group,
+.form-horizontal .bootstrap-select.btn-group,
+.form-group .bootstrap-select.btn-group {
+ margin-bottom: 0;
+}
+.form-group-lg .bootstrap-select.btn-group.form-control,
+.form-group-sm .bootstrap-select.btn-group.form-control {
+ padding: 0;
+}
+.form-inline .bootstrap-select.btn-group .form-control {
+ width: 100%;
+}
+.bootstrap-select.btn-group.disabled,
+.bootstrap-select.btn-group > .disabled {
+ cursor: not-allowed;
+}
+.bootstrap-select.btn-group.disabled:focus,
+.bootstrap-select.btn-group > .disabled:focus {
+ outline: none !important;
+}
+.bootstrap-select.btn-group.bs-container {
+ position: absolute;
+}
+.bootstrap-select.btn-group.bs-container .dropdown-menu {
+ z-index: 1060;
+}
+.bootstrap-select.btn-group .dropdown-toggle .filter-option {
+ display: inline-block;
+ overflow: hidden;
+ width: 100%;
+ text-align: left;
+}
+.bootstrap-select.btn-group .dropdown-toggle .caret {
+ position: absolute;
+ top: 50%;
+ right: 12px;
+ margin-top: -2px;
+ vertical-align: middle;
+}
+.bootstrap-select.btn-group[class*="col-"] .dropdown-toggle {
+ width: 100%;
+}
+.bootstrap-select.btn-group .dropdown-menu {
+ min-width: 100%;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+.bootstrap-select.btn-group .dropdown-menu.inner {
+ position: static;
+ float: none;
+ border: 0;
+ padding: 0;
+ margin: 0;
+ border-radius: 0;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+.bootstrap-select.btn-group .dropdown-menu li {
+ position: relative;
+}
+.bootstrap-select.btn-group .dropdown-menu li.active small {
+ color: #fff;
+}
+.bootstrap-select.btn-group .dropdown-menu li.disabled a {
+ cursor: not-allowed;
+}
+.bootstrap-select.btn-group .dropdown-menu li a {
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.bootstrap-select.btn-group .dropdown-menu li a.opt {
+ position: relative;
+ padding-left: 2.25em;
+}
+.bootstrap-select.btn-group .dropdown-menu li a span.check-mark {
+ display: none;
+}
+.bootstrap-select.btn-group .dropdown-menu li a span.text {
+ display: inline-block;
+}
+.bootstrap-select.btn-group .dropdown-menu li small {
+ padding-left: 0.5em;
+}
+.bootstrap-select.btn-group .dropdown-menu .notify {
+ position: absolute;
+ bottom: 5px;
+ width: 96%;
+ margin: 0 2%;
+ min-height: 26px;
+ padding: 3px 5px;
+ background: #f5f5f5;
+ border: 1px solid #e3e3e3;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+ pointer-events: none;
+ opacity: 0.9;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+.bootstrap-select.btn-group .no-results {
+ padding: 3px;
+ background: #f5f5f5;
+ margin: 0 5px;
+ white-space: nowrap;
+}
+.bootstrap-select.btn-group.fit-width .dropdown-toggle .filter-option {
+ position: static;
+}
+.bootstrap-select.btn-group.fit-width .dropdown-toggle .caret {
+ position: static;
+ top: auto;
+ margin-top: -1px;
+}
+.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a span.check-mark {
+ position: absolute;
+ display: inline-block;
+ right: 15px;
+ margin-top: 5px;
+}
+.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text {
+ margin-right: 34px;
+}
+.bootstrap-select.show-menu-arrow.open > .dropdown-toggle {
+ z-index: 1061;
+}
+.bootstrap-select.show-menu-arrow .dropdown-toggle:before {
+ content: '';
+ border-left: 7px solid transparent;
+ border-right: 7px solid transparent;
+ border-bottom: 7px solid rgba(204, 204, 204, 0.2);
+ position: absolute;
+ bottom: -4px;
+ left: 9px;
+ display: none;
+}
+.bootstrap-select.show-menu-arrow .dropdown-toggle:after {
+ content: '';
+ border-left: 6px solid transparent;
+ border-right: 6px solid transparent;
+ border-bottom: 6px solid white;
+ position: absolute;
+ bottom: -4px;
+ left: 10px;
+ display: none;
+}
+.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before {
+ bottom: auto;
+ top: -3px;
+ border-top: 7px solid rgba(204, 204, 204, 0.2);
+ border-bottom: 0;
+}
+.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after {
+ bottom: auto;
+ top: -3px;
+ border-top: 6px solid white;
+ border-bottom: 0;
+}
+.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before {
+ right: 12px;
+ left: auto;
+}
+.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after {
+ right: 13px;
+ left: auto;
+}
+.bootstrap-select.show-menu-arrow.open > .dropdown-toggle:before,
+.bootstrap-select.show-menu-arrow.open > .dropdown-toggle:after {
+ display: block;
+}
+.bs-searchbox,
+.bs-actionsbox,
+.bs-donebutton {
+ padding: 4px 8px;
+}
+.bs-actionsbox {
+ width: 100%;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+.bs-actionsbox .btn-group button {
+ width: 50%;
+}
+.bs-donebutton {
+ float: left;
+ width: 100%;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+.bs-donebutton .btn-group button {
+ width: 100%;
+}
+.bs-searchbox + .bs-actionsbox {
+ padding: 0 8px 4px;
+}
+.bs-searchbox .form-control {
+ margin-bottom: 0;
+ width: 100%;
+ float: none;
+}
+/*# sourceMappingURL=bootstrap-select.css.map */
\ No newline at end of file
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/css/bootstrap-select.css.map
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/css/bootstrap-select.css.map (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/css/bootstrap-select.css.map 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1 @@
+{"version":3,"sources":["less/bootstrap-select.less","bootstrap-select.css"],"names":[],"mappings":"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","file":"bootstrap-select.css","sourcesContent":["@import \"variables\";\n\n// Mixins\n.cursor-disabled() {\n cursor: not-allowed;\n}\n\n// Rules\n.bootstrap-select {\n width: 220px \\0; /*IE9 and below*/\n\n // The selectpicker button\n > .dropdown-toggle {\n width: 100%;\n padding-right: 25px;\n z-index: 1;\n }\n\n > select {\n position: absolute !important;\n bottom: 0;\n left: 50%;\n width: 0.11px !important;\n height: 100% !important;\n padding: 0 !important;\n opacity: 0 !important;\n border: none;\n\n &.mobile-device {\n top: 0;\n left: 0;\n display: block !important;\n width:
100% !important;\n z-index: 2;\n }\n }\n\n // Error display\n .has-error & .dropdown-toggle,\n .error & .dropdown-toggle {\n border-color: @color-red-error;\n }\n\n &.fit-width {\n width: auto !important;\n }\n\n &:not([class*=\"col-\"]):not([class*=\"form-control\"]):not(.input-group-btn) {\n width: @width-default;\n }\n\n .dropdown-toggle:focus {\n outline: thin dotted #333333 !important;\n outline: 5px auto -webkit-focus-ring-color !important;\n outline-offset: -2px;\n }\n}\n\n.bootstrap-select.form-control {\n margin-bottom: 0;\n padding: 0;\n border: none;\n\n &:not([class*=\"col-\"]) {\n width: 100%;\n }\n\n &.input-group-btn {\n z-index: auto;\n }\n}\n\n// The selectpicker components\n.bootstrap-select.btn-group {\n &:not(.input-group-btn),\n &[class*=\"col-\"] {\n float: none;\n display: inline-block;\n margin-left: 0;\n }\n\n // Forces the pull to the right, if necessary\n &,\n &[class*=\"col-\"],\n .row &[cl
ass*=\"col-\"] {\n &.dropdown-menu-right {\n float: right;\n }\n }\n\n .form-inline &,\n .form-horizontal &,\n .form-group & {\n margin-bottom: 0;\n }\n\n .form-group-lg &.form-control,\n .form-group-sm &.form-control {\n padding: 0;\n }\n\n // Set the width of the live search (and any other form control within an inline form)\n // see https://github.com/silviomoreto/bootstrap-select/issues/685\n .form-inline & .form-control {\n width: 100%;\n }\n\n &.disabled,\n > .disabled {\n .cursor-disabled();\n\n &:focus {\n outline: none !important;\n }\n }\n\n &.bs-container {\n position: absolute;\n \n .dropdown-menu {\n z-index: @zindex-select-dropdown;\n }\n }\n\n // The selectpicker button\n .dropdown-toggle {\n .filter-option {\n display: inline-block;\n overflow: hidden;\n width: 100%;\n text-align: left;\n }\n\n .caret {\n position: absolute;\n top: 50%;\n right: 12px;\n
margin-top: -2px;\n vertical-align: middle;\n }\n }\n\n &[class*=\"col-\"] .dropdown-toggle {\n width: 100%;\n }\n\n // The selectpicker dropdown\n .dropdown-menu {\n min-width: 100%;\n box-sizing: border-box;\n\n &.inner {\n position: static;\n float: none;\n border: 0;\n padding: 0;\n margin: 0;\n border-radius: 0;\n box-shadow: none;\n }\n\n li {\n position: relative;\n\n &.active small {\n color: #fff;\n }\n\n &.disabled a {\n .cursor-disabled();\n }\n\n a {\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n\n &.opt {\n position: relative;\n padding-left: 2.25em;\n }\n\n span.check-mark {\n display: none;\n }\n\n span.text {\n display: inline-block;\n }\n }\n\n
small {\n padding-left: 0.5em;\n }\n }\n\n .notify {\n position: absolute;\n bottom: 5px;\n width: 96%;\n margin: 0 2%;\n min-height: 26px;\n padding: 3px 5px;\n background: rgb(245, 245, 245);\n border: 1px solid rgb(227, 227, 227);\n box-shadow: inset 0 1px 1px fade(rgb(0, 0, 0), 5%);\n pointer-events: none;\n opacity: 0.9;\n box-sizing: border-box;\n }\n }\n\n .no-results {\n padding: 3px;\n background: #f5f5f5;\n margin: 0 5px;\n white-space: nowrap;\n }\n\n &.fit-width .dropdown-toggle {\n .filter-option {\n position: static;\n }\n\n .caret {\n position: static;\n top: auto;\n margin-top: -1px;\n }\n }\n\n &.show-tick .dropdown-menu li {\n &.selected a span.check-mark {\n position: absolute;\n display: inline-block;\n right: 15px;\n margin-top: 5px;\n }\n\n a span.text {\n margin-right: 34px;\n }\n }\n}\n\n.boot
strap-select.show-menu-arrow {\n &.open > .dropdown-toggle {\n z-index: (@zindex-select-dropdown + 1);\n }\n\n .dropdown-toggle {\n &:before {\n content: '';\n border-left: 7px solid transparent;\n border-right: 7px solid transparent;\n border-bottom: 7px solid @color-grey-arrow;\n position: absolute;\n bottom: -4px;\n left: 9px;\n display: none;\n }\n\n &:after {\n content: '';\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid white;\n position: absolute;\n bottom: -4px;\n left: 10px;\n display: none;\n }\n }\n\n &.dropup .dropdown-toggle {\n &:before {\n bottom: auto;\n top: -3px;\n border-top: 7px solid @color-grey-arrow;\n border-bottom: 0;\n }\n\n &:after {\n bottom: auto;\n top: -3px;\n border-top: 6px solid white;\n border-bottom: 0;\n }\n }\n\n &.pull-right .dropdown-tog
gle {\n &:before {\n right: 12px;\n left: auto;\n }\n\n &:after {\n right: 13px;\n left: auto;\n }\n }\n\n &.open > .dropdown-toggle {\n &:before,\n &:after {\n display: block;\n }\n }\n}\n\n.bs-searchbox,\n.bs-actionsbox,\n.bs-donebutton {\n padding: 4px 8px;\n}\n\n.bs-actionsbox {\n width: 100%;\n box-sizing: border-box;\n\n & .btn-group button {\n width: 50%;\n }\n}\n\n.bs-donebutton {\n float: left;\n width: 100%;\n box-sizing: border-box;\n\n & .btn-group button {\n width: 100%;\n }\n}\n\n.bs-searchbox {\n & + .bs-actionsbox {\n padding: 0 8px 4px;\n }\n\n & .form-control {\n margin-bottom: 0;\n width: 100%;\n float: none;\n }\n}\n",".bootstrap-select {\n width: 220px \\0;\n /*IE9 and below*/\n}\n.bootstrap-select > .dropdown-toggle {\n width: 100%;\n padding-right: 25px;\n z-index: 1;\n}\n.bootstrap-select > select {\n position: absolute !important;\n bottom: 0;\n left: 50%;\n width: 0.11
px !important;\n height: 100% !important;\n padding: 0 !important;\n opacity: 0 !important;\n border: none;\n}\n.bootstrap-select > select.mobile-device {\n top: 0;\n left: 0;\n display: block !important;\n width: 100% !important;\n z-index: 2;\n}\n.has-error .bootstrap-select .dropdown-toggle,\n.error .bootstrap-select .dropdown-toggle {\n border-color: #b94a48;\n}\n.bootstrap-select.fit-width {\n width: auto !important;\n}\n.bootstrap-select:not([class*=\"col-\"]):not([class*=\"form-control\"]):not(.input-group-btn) {\n width: 220px;\n}\n.bootstrap-select .dropdown-toggle:focus {\n outline: thin dotted #333333 !important;\n outline: 5px auto -webkit-focus-ring-color !important;\n outline-offset: -2px;\n}\n.bootstrap-select.form-control {\n margin-bottom: 0;\n padding: 0;\n border: none;\n}\n.bootstrap-select.form-control:not([class*=\"col-\"]) {\n width: 100%;\n}\n.bootstrap-select.form-control.input-group-btn {\n z-index: auto;\n}\n.bootstrap-select.btn-group:
not(.input-group-btn),\n.bootstrap-select.btn-group[class*=\"col-\"] {\n float: none;\n display: inline-block;\n margin-left: 0;\n}\n.bootstrap-select.btn-group.dropdown-menu-right,\n.bootstrap-select.btn-group[class*=\"col-\"].dropdown-menu-right,\n.row .bootstrap-select.btn-group[class*=\"col-\"].dropdown-menu-right {\n float: right;\n}\n.form-inline .bootstrap-select.btn-group,\n.form-horizontal .bootstrap-select.btn-group,\n.form-group .bootstrap-select.btn-group {\n margin-bottom: 0;\n}\n.form-group-lg .bootstrap-select.btn-group.form-control,\n.form-group-sm .bootstrap-select.btn-group.form-control {\n padding: 0;\n}\n.form-inline .bootstrap-select.btn-group .form-control {\n width: 100%;\n}\n.bootstrap-select.btn-group.disabled,\n.bootstrap-select.btn-group > .disabled {\n cursor: not-allowed;\n}\n.bootstrap-select.btn-group.disabled:focus,\n.bootstrap-select.btn-group > .disabled:focus {\n outline: none !important;\n}\n.bootstrap-select.btn-group.bs-container {\n p
osition: absolute;\n}\n.bootstrap-select.btn-group.bs-container .dropdown-menu {\n z-index: 1060;\n}\n.bootstrap-select.btn-group .dropdown-toggle .filter-option {\n display: inline-block;\n overflow: hidden;\n width: 100%;\n text-align: left;\n}\n.bootstrap-select.btn-group .dropdown-toggle .caret {\n position: absolute;\n top: 50%;\n right: 12px;\n margin-top: -2px;\n vertical-align: middle;\n}\n.bootstrap-select.btn-group[class*=\"col-\"] .dropdown-toggle {\n width: 100%;\n}\n.bootstrap-select.btn-group .dropdown-menu {\n min-width: 100%;\n box-sizing: border-box;\n}\n.bootstrap-select.btn-group .dropdown-menu.inner {\n position: static;\n float: none;\n border: 0;\n padding: 0;\n margin: 0;\n border-radius: 0;\n box-shadow: none;\n}\n.bootstrap-select.btn-group .dropdown-menu li {\n position: relative;\n}\n.bootstrap-select.btn-group .dropdown-menu li.active small {\n color: #fff;\n}\n.bootstrap-select.btn-group .dropdown-menu li.disabled a {\n cursor: not
-allowed;\n}\n.bootstrap-select.btn-group .dropdown-menu li a {\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.bootstrap-select.btn-group .dropdown-menu li a.opt {\n position: relative;\n padding-left: 2.25em;\n}\n.bootstrap-select.btn-group .dropdown-menu li a span.check-mark {\n display: none;\n}\n.bootstrap-select.btn-group .dropdown-menu li a span.text {\n display: inline-block;\n}\n.bootstrap-select.btn-group .dropdown-menu li small {\n padding-left: 0.5em;\n}\n.bootstrap-select.btn-group .dropdown-menu .notify {\n position: absolute;\n bottom: 5px;\n width: 96%;\n margin: 0 2%;\n min-height: 26px;\n padding: 3px 5px;\n background: #f5f5f5;\n border: 1px solid #e3e3e3;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n pointer-events: none;\n opacity: 0.9;\n box-sizing: border-box;\n}\n.bootstrap-select.btn-group .no-results {\n padding: 3px;\n background: #f5f5f5;\n margin:
0 5px;\n white-space: nowrap;\n}\n.bootstrap-select.btn-group.fit-width .dropdown-toggle .filter-option {\n position: static;\n}\n.bootstrap-select.btn-group.fit-width .dropdown-toggle .caret {\n position: static;\n top: auto;\n margin-top: -1px;\n}\n.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a span.check-mark {\n position: absolute;\n display: inline-block;\n right: 15px;\n margin-top: 5px;\n}\n.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text {\n margin-right: 34px;\n}\n.bootstrap-select.show-menu-arrow.open > .dropdown-toggle {\n z-index: 1061;\n}\n.bootstrap-select.show-menu-arrow .dropdown-toggle:before {\n content: '';\n border-left: 7px solid transparent;\n border-right: 7px solid transparent;\n border-bottom: 7px solid rgba(204, 204, 204, 0.2);\n position: absolute;\n bottom: -4px;\n left: 9px;\n display: none;\n}\n.bootstrap-select.show-menu-arrow .dropdown-toggle:after {\n content: '';\n border-left: 6px solid t
ransparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid white;\n position: absolute;\n bottom: -4px;\n left: 10px;\n display: none;\n}\n.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before {\n bottom: auto;\n top: -3px;\n border-top: 7px solid rgba(204, 204, 204, 0.2);\n border-bottom: 0;\n}\n.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after {\n bottom: auto;\n top: -3px;\n border-top: 6px solid white;\n border-bottom: 0;\n}\n.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before {\n right: 12px;\n left: auto;\n}\n.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after {\n right: 13px;\n left: auto;\n}\n.bootstrap-select.show-menu-arrow.open > .dropdown-toggle:before,\n.bootstrap-select.show-menu-arrow.open > .dropdown-toggle:after {\n display: block;\n}\n.bs-searchbox,\n.bs-actionsbox,\n.bs-donebutton {\n padding: 4px 8px;\n}\n.bs-actionsbox {\n width: 100%;\n box-sizing: border-box;\n}\
n.bs-actionsbox .btn-group button {\n width: 50%;\n}\n.bs-donebutton {\n float: left;\n width: 100%;\n box-sizing: border-box;\n}\n.bs-donebutton .btn-group button {\n width: 100%;\n}\n.bs-searchbox + .bs-actionsbox {\n padding: 0 8px 4px;\n}\n.bs-searchbox .form-control {\n margin-bottom: 0;\n width: 100%;\n float: none;\n}\n/*# sourceMappingURL=bootstrap-select.css.map */"]}
\ No newline at end of file
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/css/bootstrap-select.min.css
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/css/bootstrap-select.min.css (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/css/bootstrap-select.min.css 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,6 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */.bootstrap-select{width:220px\9}.bootstrap-select>.dropdown-toggle{width:100%;padding-right:25px;z-index:1}.bootstrap-select>select{position:absolute!important;bottom:0;left:50%;width:.11px!important;height:100%!important;padding:0!important;opacity:0!important;border:none}.bootstrap-select>select.mobile-device{top:0;left:0;display:block!important;width:100%!important;z-index:2}.error .bootstrap-select .dropdown-toggle,.has-error .bootstrap-select .dropdown-toggle{border-color:#b94a48}.bootstrap-select.fit-width{width:auto!important}.bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn){width:220px}.bootstrap-select .dropdown-toggle:focus{outline:thin dotted #333!important;outline:5px auto -webkit-focus-ring-color!important;outline-offset:-2px}.bootstrap-select.form-control{margin-bottom:0;padding:0;border:none}.bootstrap-select.form-control:not([class*=col-]){width:100%}.bootstrap-select.form-control.input-group-btn{z-index:auto}.bootstrap-select.b
tn-group:not(.input-group-btn),.bootstrap-select.btn-group[class*=col-]{float:none;display:inline-block;margin-left:0}.bootstrap-select.btn-group.dropdown-menu-right,.bootstrap-select.btn-group[class*=col-].dropdown-menu-right,.row .bootstrap-select.btn-group[class*=col-].dropdown-menu-right{float:right}.form-group .bootstrap-select.btn-group,.form-horizontal .bootstrap-select.btn-group,.form-inline .bootstrap-select.btn-group{margin-bottom:0}.form-group-lg .bootstrap-select.btn-group.form-control,.form-group-sm .bootstrap-select.btn-group.form-control{padding:0}.form-inline .bootstrap-select.btn-group .form-control{width:100%}.bootstrap-select.btn-group.disabled,.bootstrap-select.btn-group>.disabled{cursor:not-allowed}.bootstrap-select.btn-group.disabled:focus,.bootstrap-select.btn-group>.disabled:focus{outline:0!important}.bootstrap-select.btn-group.bs-container{position:absolute}.bootstrap-select.btn-group.bs-container .dropdown-menu{z-index:1060}.bootstrap-select.btn-group .drop
down-toggle .filter-option{display:inline-block;overflow:hidden;width:100%;text-align:left}.bootstrap-select.btn-group .dropdown-toggle .caret{position:absolute;top:50%;right:12px;margin-top:-2px;vertical-align:middle}.bootstrap-select.btn-group[class*=col-] .dropdown-toggle{width:100%}.bootstrap-select.btn-group .dropdown-menu{min-width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .dropdown-menu.inner{position:static;float:none;border:0;padding:0;margin:0;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.bootstrap-select.btn-group .dropdown-menu li{position:relative}.bootstrap-select.btn-group .dropdown-menu li.active small{color:#fff}.bootstrap-select.btn-group .dropdown-menu li.disabled a{cursor:not-allowed}.bootstrap-select.btn-group .dropdown-menu li a{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.bootstrap-select.btn-group .dropdown-menu li a.opt{pos
ition:relative;padding-left:2.25em}.bootstrap-select.btn-group .dropdown-menu li a span.check-mark{display:none}.bootstrap-select.btn-group .dropdown-menu li a span.text{display:inline-block}.bootstrap-select.btn-group .dropdown-menu li small{padding-left:.5em}.bootstrap-select.btn-group .dropdown-menu .notify{position:absolute;bottom:5px;width:96%;margin:0 2%;min-height:26px;padding:3px 5px;background:#f5f5f5;border:1px solid #e3e3e3;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05);pointer-events:none;opacity:.9;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .no-results{padding:3px;background:#f5f5f5;margin:0 5px;white-space:nowrap}.bootstrap-select.btn-group.fit-width .dropdown-toggle .filter-option{position:static}.bootstrap-select.btn-group.fit-width .dropdown-toggle .caret{position:static;top:auto;margin-top:-1px}.bootstrap-select.btn-group.show-tick .dropdown-menu li.select
ed a span.check-mark{position:absolute;display:inline-block;right:15px;margin-top:5px}.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text{margin-right:34px}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle{z-index:1061}.bootstrap-select.show-menu-arrow .dropdown-toggle:before{content:'';border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid rgba(204,204,204,.2);position:absolute;bottom:-4px;left:9px;display:none}.bootstrap-select.show-menu-arrow .dropdown-toggle:after{content:'';border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;bottom:-4px;left:10px;display:none}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before{bottom:auto;top:-3px;border-top:7px solid rgba(204,204,204,.2);border-bottom:0}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after{bottom:auto;top:-3px;border-top:6px solid #fff;border-bottom:0}.bootstrap-select.show-menu-arr
ow.pull-right .dropdown-toggle:before{right:12px;left:auto}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after{right:13px;left:auto}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:after,.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:before{display:block}.bs-actionsbox,.bs-donebutton,.bs-searchbox{padding:4px 8px}.bs-actionsbox{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-actionsbox .btn-group button{width:50%}.bs-donebutton{float:left;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-donebutton .btn-group button{width:100%}.bs-searchbox+.bs-actionsbox{padding:0 8px 4px}.bs-searchbox .form-control{margin-bottom:0;width:100%;float:none}
\ No newline at end of file
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/bootstrap-select.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/bootstrap-select.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/bootstrap-select.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,1710 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function (jQuery) {
+
+(function ($) {
+ 'use strict';
+
+ //<editor-fold desc="Shims">
+ if (!String.prototype.includes) {
+ (function () {
+ 'use strict'; // needed to support `apply`/`call` with `undefined`/`null`
+ var toString = {}.toString;
+ var defineProperty = (function () {
+ // IE 8 only supports `Object.defineProperty` on DOM elements
+ try {
+ var object = {};
+ var $defineProperty = Object.defineProperty;
+ var result = $defineProperty(object, object, object) && $defineProperty;
+ } catch (error) {
+ }
+ return result;
+ }());
+ var indexOf = ''.indexOf;
+ var includes = function (search) {
+ if (this == null) {
+ throw new TypeError();
+ }
+ var string = String(this);
+ if (search && toString.call(search) == '[object RegExp]') {
+ throw new TypeError();
+ }
+ var stringLength = string.length;
+ var searchString = String(search);
+ var searchLength = searchString.length;
+ var position = arguments.length > 1 ? arguments[1] : undefined;
+ // `ToInteger`
+ var pos = position ? Number(position) : 0;
+ if (pos != pos) { // better `isNaN`
+ pos = 0;
+ }
+ var start = Math.min(Math.max(pos, 0), stringLength);
+ // Avoid the `indexOf` call if no match is possible
+ if (searchLength + start > stringLength) {
+ return false;
+ }
+ return indexOf.call(string, searchString, pos) != -1;
+ };
+ if (defineProperty) {
+ defineProperty(String.prototype, 'includes', {
+ 'value': includes,
+ 'configurable': true,
+ 'writable': true
+ });
+ } else {
+ String.prototype.includes = includes;
+ }
+ }());
+ }
+
+ if (!String.prototype.startsWith) {
+ (function () {
+ 'use strict'; // needed to support `apply`/`call` with `undefined`/`null`
+ var defineProperty = (function () {
+ // IE 8 only supports `Object.defineProperty` on DOM elements
+ try {
+ var object = {};
+ var $defineProperty = Object.defineProperty;
+ var result = $defineProperty(object, object, object) && $defineProperty;
+ } catch (error) {
+ }
+ return result;
+ }());
+ var toString = {}.toString;
+ var startsWith = function (search) {
+ if (this == null) {
+ throw new TypeError();
+ }
+ var string = String(this);
+ if (search && toString.call(search) == '[object RegExp]') {
+ throw new TypeError();
+ }
+ var stringLength = string.length;
+ var searchString = String(search);
+ var searchLength = searchString.length;
+ var position = arguments.length > 1 ? arguments[1] : undefined;
+ // `ToInteger`
+ var pos = position ? Number(position) : 0;
+ if (pos != pos) { // better `isNaN`
+ pos = 0;
+ }
+ var start = Math.min(Math.max(pos, 0), stringLength);
+ // Avoid the `indexOf` call if no match is possible
+ if (searchLength + start > stringLength) {
+ return false;
+ }
+ var index = -1;
+ while (++index < searchLength) {
+ if (string.charCodeAt(start + index) != searchString.charCodeAt(index)) {
+ return false;
+ }
+ }
+ return true;
+ };
+ if (defineProperty) {
+ defineProperty(String.prototype, 'startsWith', {
+ 'value': startsWith,
+ 'configurable': true,
+ 'writable': true
+ });
+ } else {
+ String.prototype.startsWith = startsWith;
+ }
+ }());
+ }
+
+ if (!Object.keys) {
+ Object.keys = function (
+ o, // object
+ k, // key
+ r // result array
+ ){
+ // initialize object and result
+ r=[];
+ // iterate over object keys
+ for (k in o)
+ // fill result array with non-prototypical keys
+ r.hasOwnProperty.call(o, k) && r.push(k);
+ // return result
+ return r;
+ };
+ }
+
+ $.fn.triggerNative = function (eventName) {
+ var el = this[0],
+ event;
+
+ if (el.dispatchEvent) {
+ if (typeof Event === 'function') {
+ // For modern browsers
+ event = new Event(eventName, {
+ bubbles: true
+ });
+ } else {
+ // For IE since it doesn't support Event constructor
+ event = document.createEvent('Event');
+ event.initEvent(eventName, true, false);
+ }
+
+ el.dispatchEvent(event);
+ } else {
+ if (el.fireEvent) {
+ event = document.createEventObject();
+ event.eventType = eventName;
+ el.fireEvent('on' + eventName, event);
+ }
+
+ this.trigger(eventName);
+ }
+ };
+ //</editor-fold>
+
+ // Case insensitive contains search
+ $.expr[':'].icontains = function (obj, index, meta) {
+ var $obj = $(obj);
+ var haystack = ($obj.data('tokens') || $obj.text()).toUpperCase();
+ return haystack.includes(meta[3].toUpperCase());
+ };
+
+ // Case insensitive begins search
+ $.expr[':'].ibegins = function (obj, index, meta) {
+ var $obj = $(obj);
+ var haystack = ($obj.data('tokens') || $obj.text()).toUpperCase();
+ return haystack.startsWith(meta[3].toUpperCase());
+ };
+
+ // Case and accent insensitive contains search
+ $.expr[':'].aicontains = function (obj, index, meta) {
+ var $obj = $(obj);
+ var haystack = ($obj.data('tokens') || $obj.data('normalizedText') || $obj.text()).toUpperCase();
+ return haystack.includes(meta[3].toUpperCase());
+ };
+
+ // Case and accent insensitive begins search
+ $.expr[':'].aibegins = function (obj, index, meta) {
+ var $obj = $(obj);
+ var haystack = ($obj.data('tokens') || $obj.data('normalizedText') || $obj.text()).toUpperCase();
+ return haystack.startsWith(meta[3].toUpperCase());
+ };
+
+ /**
+ * Remove all diatrics from the given text.
+ * @access private
+ * @param {String} text
+ * @returns {String}
+ */
+ function normalizeToBase(text) {
+ var rExps = [
+ {re: /[\xC0-\xC6]/g, ch: "A"},
+ {re: /[\xE0-\xE6]/g, ch: "a"},
+ {re: /[\xC8-\xCB]/g, ch: "E"},
+ {re: /[\xE8-\xEB]/g, ch: "e"},
+ {re: /[\xCC-\xCF]/g, ch: "I"},
+ {re: /[\xEC-\xEF]/g, ch: "i"},
+ {re: /[\xD2-\xD6]/g, ch: "O"},
+ {re: /[\xF2-\xF6]/g, ch: "o"},
+ {re: /[\xD9-\xDC]/g, ch: "U"},
+ {re: /[\xF9-\xFC]/g, ch: "u"},
+ {re: /[\xC7-\xE7]/g, ch: "c"},
+ {re: /[\xD1]/g, ch: "N"},
+ {re: /[\xF1]/g, ch: "n"}
+ ];
+ $.each(rExps, function () {
+ text = text.replace(this.re, this.ch);
+ });
+ return text;
+ }
+
+
+ function htmlEscape(html) {
+ var escapeMap = {
+ '&': '&',
+ '<': '<',
+ '>': '>',
+ '"': '"',
+ "'": ''',
+ '`': '`'
+ };
+ var source = '(?:' + Object.keys(escapeMap).join('|') + ')',
+ testRegexp = new RegExp(source),
+ replaceRegexp = new RegExp(source, 'g'),
+ string = html == null ? '' : '' + html;
+ return testRegexp.test(string) ? string.replace(replaceRegexp, function (match) {
+ return escapeMap[match];
+ }) : string;
+ }
+
+ var Selectpicker = function (element, options, e) {
+ if (e) {
+ e.stopPropagation();
+ e.preventDefault();
+ }
+
+ this.$element = $(element);
+ this.$newElement = null;
+ this.$button = null;
+ this.$menu = null;
+ this.$lis = null;
+ this.options = options;
+
+ // If we have no title yet, try to pull it from the html title attribute (jQuery doesnt' pick it up as it's not a
+ // data-attribute)
+ if (this.options.title === null) {
+ this.options.title = this.$element.attr('title');
+ }
+
+ //Expose public methods
+ this.val = Selectpicker.prototype.val;
+ this.render = Selectpicker.prototype.render;
+ this.refresh = Selectpicker.prototype.refresh;
+ this.setStyle = Selectpicker.prototype.setStyle;
+ this.selectAll = Selectpicker.prototype.selectAll;
+ this.deselectAll = Selectpicker.prototype.deselectAll;
+ this.destroy = Selectpicker.prototype.destroy;
+ this.remove = Selectpicker.prototype.remove;
+ this.show = Selectpicker.prototype.show;
+ this.hide = Selectpicker.prototype.hide;
+
+ this.init();
+ };
+
+ Selectpicker.VERSION = '1.9.3';
+
+ // part of this is duplicated in i18n/defaults-en_US.js. Make sure to update both.
+ Selectpicker.DEFAULTS = {
+ noneSelectedText: 'Nothing selected',
+ noneResultsText: 'No results matched {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ return (numSelected == 1) ? "{0} item selected" : "{0} items selected";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ (numAll == 1) ? 'Limit reached ({n} item max)' : 'Limit reached ({n} items max)',
+ (numGroup == 1) ? 'Group limit reached ({n} item max)' : 'Group limit reached ({n} items max)'
+ ];
+ },
+ selectAllText: 'Select All',
+ deselectAllText: 'Deselect All',
+ doneButton: false,
+ doneButtonText: 'Close',
+ multipleSeparator: ', ',
+ styleBase: 'btn',
+ style: 'btn-default',
+ size: 'auto',
+ title: null,
+ selectedTextFormat: 'values',
+ width: false,
+ container: false,
+ hideDisabled: false,
+ showSubtext: false,
+ showIcon: true,
+ showContent: true,
+ dropupAuto: true,
+ header: false,
+ liveSearch: false,
+ liveSearchPlaceholder: null,
+ liveSearchNormalize: false,
+ liveSearchStyle: 'contains',
+ actionsBox: false,
+ iconBase: 'glyphicon',
+ tickIcon: 'glyphicon-ok',
+ template: {
+ caret: '<span class="caret"></span>'
+ },
+ maxOptions: false,
+ mobile: false,
+ selectOnTab: false,
+ dropdownAlignRight: false
+ };
+
+ Selectpicker.prototype = {
+
+ constructor: Selectpicker,
+
+ init: function () {
+ var that = this,
+ id = this.$element.attr('id');
+
+ // store originalIndex (key) and newIndex (value) in this.liObj for fast accessibility
+ // allows us to do this.$lis.eq(that.liObj[index]) instead of this.$lis.filter('[data-original-index="' + index + '"]')
+ this.liObj = {};
+ this.multiple = this.$element.prop('multiple');
+ this.autofocus = this.$element.prop('autofocus');
+ this.$newElement = this.createView();
+ this.$element
+ .after(this.$newElement)
+ .appendTo(this.$newElement);
+ this.$button = this.$newElement.children('button');
+ this.$menu = this.$newElement.children('.dropdown-menu');
+ this.$menuInner = this.$menu.children('.inner');
+ this.$searchbox = this.$menu.find('input');
+
+ if (this.options.dropdownAlignRight)
+ this.$menu.addClass('dropdown-menu-right');
+
+ if (typeof id !== 'undefined') {
+ this.$button.attr('data-id', id);
+ $('label[for="' + id + '"]').click(function (e) {
+ e.preventDefault();
+ that.$button.focus();
+ });
+ }
+
+ this.checkDisabled();
+ this.clickListener();
+ if (this.options.liveSearch) this.liveSearchListener();
+ this.render();
+ this.setStyle();
+ this.setWidth();
+ if (this.options.container) this.selectPosition();
+ this.$menu.data('this', this);
+ this.$newElement.data('this', this);
+ if (this.options.mobile) this.mobile();
+
+ this.$newElement.on({
+ 'hide.bs.dropdown': function (e) {
+ that.$element.trigger('hide.bs.select', e);
+ },
+ 'hidden.bs.dropdown': function (e) {
+ that.$element.trigger('hidden.bs.select', e);
+ },
+ 'show.bs.dropdown': function (e) {
+ that.$element.trigger('show.bs.select', e);
+ },
+ 'shown.bs.dropdown': function (e) {
+ that.$element.trigger('shown.bs.select', e);
+ }
+ });
+
+ if (that.$element[0].hasAttribute('required')) {
+ this.$element.on('invalid', function () {
+ that.$button
+ .addClass('bs-invalid')
+ .focus();
+
+ that.$element.on({
+ 'focus.bs.select': function () {
+ that.$button.focus();
+ that.$element.off('focus.bs.select');
+ },
+ 'shown.bs.select': function () {
+ that.$element
+ .val(that.$element.val()) // set the value to hide the validation message in Chrome when menu is opened
+ .off('shown.bs.select');
+ },
+ 'rendered.bs.select': function () {
+ // if select is no longer invalid, remove the bs-invalid class
+ if (this.validity.valid) that.$button.removeClass('bs-invalid');
+ that.$element.off('rendered.bs.select');
+ }
+ });
+
+ });
+ }
+
+ setTimeout(function () {
+ that.$element.trigger('loaded.bs.select');
+ });
+ },
+
+ createDropdown: function () {
+ // Options
+ // If we are multiple, then add the show-tick class by default
+ var multiple = this.multiple ? ' show-tick' : '',
+ inputGroup = this.$element.parent().hasClass('input-group') ? ' input-group-btn' : '',
+ autofocus = this.autofocus ? ' autofocus' : '';
+ // Elements
+ var header = this.options.header ? '<div class="popover-title"><button type="button" class="close" aria-hidden="true">×</button>' + this.options.header + '</div>' : '';
+ var searchbox = this.options.liveSearch ?
+ '<div class="bs-searchbox">' +
+ '<input type="text" class="form-control" autocomplete="off"' +
+ (null === this.options.liveSearchPlaceholder ? '' : ' placeholder="' + htmlEscape(this.options.liveSearchPlaceholder) + '"') + '>' +
+ '</div>'
+ : '';
+ var actionsbox = this.multiple && this.options.actionsBox ?
+ '<div class="bs-actionsbox">' +
+ '<div class="btn-group btn-group-sm btn-block">' +
+ '<button type="button" class="actions-btn bs-select-all btn btn-default">' +
+ this.options.selectAllText +
+ '</button>' +
+ '<button type="button" class="actions-btn bs-deselect-all btn btn-default">' +
+ this.options.deselectAllText +
+ '</button>' +
+ '</div>' +
+ '</div>'
+ : '';
+ var donebutton = this.multiple && this.options.doneButton ?
+ '<div class="bs-donebutton">' +
+ '<div class="btn-group btn-block">' +
+ '<button type="button" class="btn btn-sm btn-default">' +
+ this.options.doneButtonText +
+ '</button>' +
+ '</div>' +
+ '</div>'
+ : '';
+ var drop =
+ '<div class="btn-group bootstrap-select' + multiple + inputGroup + '">' +
+ '<button type="button" class="' + this.options.styleBase + ' dropdown-toggle" data-toggle="dropdown"' + autofocus + '>' +
+ '<span class="filter-option pull-left"></span> ' +
+ '<span class="bs-caret">' +
+ this.options.template.caret +
+ '</span>' +
+ '</button>' +
+ '<div class="dropdown-menu open">' +
+ header +
+ searchbox +
+ actionsbox +
+ '<ul class="dropdown-menu inner" role="menu">' +
+ '</ul>' +
+ donebutton +
+ '</div>' +
+ '</div>';
+
+ return $(drop);
+ },
+
+ createView: function () {
+ var $drop = this.createDropdown(),
+ li = this.createLi();
+
+ $drop.find('ul')[0].innerHTML = li;
+ return $drop;
+ },
+
+ reloadLi: function () {
+ //Remove all children.
+ this.destroyLi();
+ //Re build
+ var li = this.createLi();
+ this.$menuInner[0].innerHTML = li;
+ },
+
+ destroyLi: function () {
+ this.$menu.find('li').remove();
+ },
+
+ createLi: function () {
+ var that = this,
+ _li = [],
+ optID = 0,
+ titleOption = document.createElement('option'),
+ liIndex = -1; // increment liIndex whenever a new <li> element is created to ensure liObj is correct
+
+ // Helper functions
+ /**
+ * @param content
+ * @param [index]
+ * @param [classes]
+ * @param [optgroup]
+ * @returns {string}
+ */
+ var generateLI = function (content, index, classes, optgroup) {
+ return '<li' +
+ ((typeof classes !== 'undefined' & '' !== classes) ? ' class="' + classes + '"' : '') +
+ ((typeof index !== 'undefined' & null !== index) ? ' data-original-index="' + index + '"' : '') +
+ ((typeof optgroup !== 'undefined' & null !== optgroup) ? 'data-optgroup="' + optgroup + '"' : '') +
+ '>' + content + '</li>';
+ };
+
+ /**
+ * @param text
+ * @param [classes]
+ * @param [inline]
+ * @param [tokens]
+ * @returns {string}
+ */
+ var generateA = function (text, classes, inline, tokens) {
+ return '<a tabindex="0"' +
+ (typeof classes !== 'undefined' ? ' class="' + classes + '"' : '') +
+ (typeof inline !== 'undefined' ? ' style="' + inline + '"' : '') +
+ (that.options.liveSearchNormalize ? ' data-normalized-text="' + normalizeToBase(htmlEscape(text)) + '"' : '') +
+ (typeof tokens !== 'undefined' || tokens !== null ? ' data-tokens="' + tokens + '"' : '') +
+ '>' + text +
+ '<span class="' + that.options.iconBase + ' ' + that.options.tickIcon + ' check-mark"></span>' +
+ '</a>';
+ };
+
+ if (this.options.title && !this.multiple) {
+ // this option doesn't create a new <li> element, but does add a new option, so liIndex is decreased
+ // since liObj is recalculated on every refresh, liIndex needs to be decreased even if the titleOption is already appended
+ liIndex--;
+
+ if (!this.$element.find('.bs-title-option').length) {
+ // Use native JS to prepend option (faster)
+ var element = this.$element[0];
+ titleOption.className = 'bs-title-option';
+ titleOption.appendChild(document.createTextNode(this.options.title));
+ titleOption.value = '';
+ element.insertBefore(titleOption, element.firstChild);
+ // Check if selected attribute is already set on an option. If not, select the titleOption option.
+ if ($(element.options[element.selectedIndex]).attr('selected') === undefined) titleOption.selected = true;
+ }
+ }
+
+ this.$element.find('option').each(function (index) {
+ var $this = $(this);
+
+ liIndex++;
+
+ if ($this.hasClass('bs-title-option')) return;
+
+ // Get the class and text for the option
+ var optionClass = this.className || '',
+ inline = this.style.cssText,
+ text = $this.data('content') ? $this.data('content') : $this.html(),
+ tokens = $this.data('tokens') ? $this.data('tokens') : null,
+ subtext = typeof $this.data('subtext') !== 'undefined' ? '<small class="text-muted">' + $this.data('subtext') + '</small>' : '',
+ icon = typeof $this.data('icon') !== 'undefined' ? '<span class="' + that.options.iconBase + ' ' + $this.data('icon') + '"></span> ' : '',
+ isDisabled = this.disabled || (this.parentNode.tagName === 'OPTGROUP' && this.parentNode.disabled);
+
+ if (icon !== '' && isDisabled) {
+ icon = '<span>' + icon + '</span>';
+ }
+
+ if (that.options.hideDisabled && isDisabled) {
+ liIndex--;
+ return;
+ }
+
+ if (!$this.data('content')) {
+ // Prepend any icon and append any subtext to the main text.
+ text = icon + '<span class="text">' + text + subtext + '</span>';
+ }
+
+ if (this.parentNode.tagName === 'OPTGROUP' && $this.data('divider') !== true) {
+ var optGroupClass = ' ' + this.parentNode.className || '';
+
+ if ($this.index() === 0) { // Is it the first option of the optgroup?
+ optID += 1;
+
+ // Get the opt group label
+ var label = this.parentNode.label,
+ labelSubtext = typeof $this.parent().data('subtext') !== 'undefined' ? '<small class="text-muted">' + $this.parent().data('subtext') + '</small>' : '',
+ labelIcon = $this.parent().data('icon') ? '<span class="' + that.options.iconBase + ' ' + $this.parent().data('icon') + '"></span> ' : '';
+
+ label = labelIcon + '<span class="text">' + label + labelSubtext + '</span>';
+
+ if (index !== 0 && _li.length > 0) { // Is it NOT the first option of the select && are there elements in the dropdown?
+ liIndex++;
+ _li.push(generateLI('', null, 'divider', optID + 'div'));
+ }
+ liIndex++;
+ _li.push(generateLI(label, null, 'dropdown-header' + optGroupClass, optID));
+ }
+ _li.push(generateLI(generateA(text, 'opt ' + optionClass + optGroupClass, inline, tokens), index, '', optID));
+ } else if ($this.data('divider') === true) {
+ _li.push(generateLI('', index, 'divider'));
+ } else if ($this.data('hidden') === true) {
+ _li.push(generateLI(generateA(text, optionClass, inline, tokens), index, 'hidden is-hidden'));
+ } else {
+ if (this.previousElementSibling && this.previousElementSibling.tagName === 'OPTGROUP') {
+ liIndex++;
+ _li.push(generateLI('', null, 'divider', optID + 'div'));
+ }
+ _li.push(generateLI(generateA(text, optionClass, inline, tokens), index));
+ }
+
+ that.liObj[index] = liIndex;
+ });
+
+ //If we are not multiple, we don't have a selected item, and we don't have a title, select the first element so something is set in the button
+ if (!this.multiple && this.$element.find('option:selected').length === 0 && !this.options.title) {
+ this.$element.find('option').eq(0).prop('selected', true).attr('selected', 'selected');
+ }
+
+ return _li.join('');
+ },
+
+ findLis: function () {
+ if (this.$lis == null) this.$lis = this.$menu.find('li');
+ return this.$lis;
+ },
+
+ /**
+ * @param [updateLi] defaults to true
+ */
+ render: function (updateLi) {
+ var that = this,
+ notDisabled;
+
+ //Update the LI to match the SELECT
+ if (updateLi !== false) {
+ this.$element.find('option').each(function (index) {
+ var $lis = that.findLis().eq(that.liObj[index]);
+
+ that.setDisabled(index, this.disabled || this.parentNode.tagName === 'OPTGROUP' && this.parentNode.disabled, $lis);
+ that.setSelected(index, this.selected, $lis);
+ });
+ }
+
+ this.tabIndex();
+
+ var selectedItems = this.$element.find('option').map(function () {
+ if (this.selected) {
+ if (that.options.hideDisabled && (this.disabled || this.parentNode.tagName === 'OPTGROUP' && this.parentNode.disabled)) return;
+
+ var $this = $(this),
+ icon = $this.data('icon') && that.options.showIcon ? '<i class="' + that.options.iconBase + ' ' + $this.data('icon') + '"></i> ' : '',
+ subtext;
+
+ if (that.options.showSubtext && $this.data('subtext') && !that.multiple) {
+ subtext = ' <small class="text-muted">' + $this.data('subtext') + '</small>';
+ } else {
+ subtext = '';
+ }
+ if (typeof $this.attr('title') !== 'undefined') {
+ return $this.attr('title');
+ } else if ($this.data('content') && that.options.showContent) {
+ return $this.data('content');
+ } else {
+ return icon + $this.html() + subtext;
+ }
+ }
+ }).toArray();
+
+ //Fixes issue in IE10 occurring when no default option is selected and at least one option is disabled
+ //Convert all the values into a comma delimited string
+ var title = !this.multiple ? selectedItems[0] : selectedItems.join(this.options.multipleSeparator);
+
+ //If this is multi select, and the selectText type is count, the show 1 of 2 selected etc..
+ if (this.multiple && this.options.selectedTextFormat.indexOf('count') > -1) {
+ var max = this.options.selectedTextFormat.split('>');
+ if ((max.length > 1 && selectedItems.length > max[1]) || (max.length == 1 && selectedItems.length >= 2)) {
+ notDisabled = this.options.hideDisabled ? ', [disabled]' : '';
+ var totalCount = this.$element.find('option').not('[data-divider="true"], [data-hidden="true"]' + notDisabled).length,
+ tr8nText = (typeof this.options.countSelectedText === 'function') ? this.options.countSelectedText(selectedItems.length, totalCount) : this.options.countSelectedText;
+ title = tr8nText.replace('{0}', selectedItems.length.toString()).replace('{1}', totalCount.toString());
+ }
+ }
+
+ if (this.options.title == undefined) {
+ this.options.title = this.$element.attr('title');
+ }
+
+ if (this.options.selectedTextFormat == 'static') {
+ title = this.options.title;
+ }
+
+ //If we dont have a title, then use the default, or if nothing is set at all, use the not selected text
+ if (!title) {
+ title = typeof this.options.title !== 'undefined' ? this.options.title : this.options.noneSelectedText;
+ }
+
+ //strip all html-tags and trim the result
+ this.$button.attr('title', $.trim(title.replace(/<[^>]*>?/g, '')));
+ this.$button.children('.filter-option').html(title);
+
+ this.$element.trigger('rendered.bs.select');
+ },
+
+ /**
+ * @param [style]
+ * @param [status]
+ */
+ setStyle: function (style, status) {
+ if (this.$element.attr('class')) {
+ this.$newElement.addClass(this.$element.attr('class').replace(/selectpicker|mobile-device|bs-select-hidden|validate\[.*\]/gi, ''));
+ }
+
+ var buttonClass = style ? style : this.options.style;
+
+ if (status == 'add') {
+ this.$button.addClass(buttonClass);
+ } else if (status == 'remove') {
+ this.$button.removeClass(buttonClass);
+ } else {
+ this.$button.removeClass(this.options.style);
+ this.$button.addClass(buttonClass);
+ }
+ },
+
+ liHeight: function (refresh) {
+ if (!refresh && (this.options.size === false || this.sizeInfo)) return;
+
+ var newElement = document.createElement('div'),
+ menu = document.createElement('div'),
+ menuInner = document.createElement('ul'),
+ divider = document.createElement('li'),
+ li = document.createElement('li'),
+ a = document.createElement('a'),
+ text = document.createElement('span'),
+ header = this.options.header && this.$menu.find('.popover-title').length > 0 ? this.$menu.find('.popover-title')[0].cloneNode(true) : null,
+ search = this.options.liveSearch ? document.createElement('div') : null,
+ actions = this.options.actionsBox && this.multiple && this.$menu.find('.bs-actionsbox').length > 0 ? this.$menu.find('.bs-actionsbox')[0].cloneNode(true) : null,
+ doneButton = this.options.doneButton && this.multiple && this.$menu.find('.bs-donebutton').length > 0 ? this.$menu.find('.bs-donebutton')[0].cloneNode(true) : null;
+
+ text.className = 'text';
+ newElement.className = this.$menu[0].parentNode.className + ' open';
+ menu.className = 'dropdown-menu open';
+ menuInner.className = 'dropdown-menu inner';
+ divider.className = 'divider';
+
+ text.appendChild(document.createTextNode('Inner text'));
+ a.appendChild(text);
+ li.appendChild(a);
+ menuInner.appendChild(li);
+ menuInner.appendChild(divider);
+ if (header) menu.appendChild(header);
+ if (search) {
+ // create a span instead of input as creating an input element is slower
+ var input = document.createElement('span');
+ search.className = 'bs-searchbox';
+ input.className = 'form-control';
+ search.appendChild(input);
+ menu.appendChild(search);
+ }
+ if (actions) menu.appendChild(actions);
+ menu.appendChild(menuInner);
+ if (doneButton) menu.appendChild(doneButton);
+ newElement.appendChild(menu);
+
+ document.body.appendChild(newElement);
+
+ var liHeight = a.offsetHeight,
+ headerHeight = header ? header.offsetHeight : 0,
+ searchHeight = search ? search.offsetHeight : 0,
+ actionsHeight = actions ? actions.offsetHeight : 0,
+ doneButtonHeight = doneButton ? doneButton.offsetHeight : 0,
+ dividerHeight = $(divider).outerHeight(true),
+ // fall back to jQuery if getComputedStyle is not supported
+ menuStyle = typeof getComputedStyle === 'function' ? getComputedStyle(menu) : false,
+ $menu = menuStyle ? null : $(menu),
+ menuPadding = parseInt(menuStyle ? menuStyle.paddingTop : $menu.css('paddingTop')) +
+ parseInt(menuStyle ? menuStyle.paddingBottom : $menu.css('paddingBottom')) +
+ parseInt(menuStyle ? menuStyle.borderTopWidth : $menu.css('borderTopWidth')) +
+ parseInt(menuStyle ? menuStyle.borderBottomWidth : $menu.css('borderBottomWidth')),
+ menuExtras = menuPadding +
+ parseInt(menuStyle ? menuStyle.marginTop : $menu.css('marginTop')) +
+ parseInt(menuStyle ? menuStyle.marginBottom : $menu.css('marginBottom')) + 2;
+
+ document.body.removeChild(newElement);
+
+ this.sizeInfo = {
+ liHeight: liHeight,
+ headerHeight: headerHeight,
+ searchHeight: searchHeight,
+ actionsHeight: actionsHeight,
+ doneButtonHeight: doneButtonHeight,
+ dividerHeight: dividerHeight,
+ menuPadding: menuPadding,
+ menuExtras: menuExtras
+ };
+ },
+
+ setSize: function () {
+ this.findLis();
+ this.liHeight();
+
+ if (this.options.header) this.$menu.css('padding-top', 0);
+ if (this.options.size === false) return;
+
+ var that = this,
+ $menu = this.$menu,
+ $menuInner = this.$menuInner,
+ $window = $(window),
+ selectHeight = this.$newElement[0].offsetHeight,
+ liHeight = this.sizeInfo['liHeight'],
+ headerHeight = this.sizeInfo['headerHeight'],
+ searchHeight = this.sizeInfo['searchHeight'],
+ actionsHeight = this.sizeInfo['actionsHeight'],
+ doneButtonHeight = this.sizeInfo['doneButtonHeight'],
+ divHeight = this.sizeInfo['dividerHeight'],
+ menuPadding = this.sizeInfo['menuPadding'],
+ menuExtras = this.sizeInfo['menuExtras'],
+ notDisabled = this.options.hideDisabled ? '.disabled' : '',
+ menuHeight,
+ getHeight,
+ selectOffsetTop,
+ selectOffsetBot,
+ posVert = function () {
+ selectOffsetTop = that.$newElement.offset().top - $window.scrollTop();
+ selectOffsetBot = $window.height() - selectOffsetTop - selectHeight;
+ };
+
+ posVert();
+
+ if (this.options.size === 'auto') {
+ var getSize = function () {
+ var minHeight,
+ hasClass = function (className, include) {
+ return function (element) {
+ if (include) {
+ return (element.classList ? element.classList.contains(className) : $(element).hasClass(className));
+ } else {
+ return !(element.classList ? element.classList.contains(className) : $(element).hasClass(className));
+ }
+ };
+ },
+ lis = that.$menuInner[0].getElementsByTagName('li'),
+ lisVisible = Array.prototype.filter ? Array.prototype.filter.call(lis, hasClass('hidden', false)) : that.$lis.not('.hidden'),
+ optGroup = Array.prototype.filter ? Array.prototype.filter.call(lisVisible, hasClass('dropdown-header', true)) : lisVisible.filter('.dropdown-header');
+
+ posVert();
+ menuHeight = selectOffsetBot - menuExtras;
+
+ if (that.options.container) {
+ if (!$menu.data('height')) $menu.data('height', $menu.height());
+ getHeight = $menu.data('height');
+ } else {
+ getHeight = $menu.height();
+ }
+
+ if (that.options.dropupAuto) {
+ that.$newElement.toggleClass('dropup', selectOffsetTop > selectOffsetBot && (menuHeight - menuExtras) < getHeight);
+ }
+ if (that.$newElement.hasClass('dropup')) {
+ menuHeight = selectOffsetTop - menuExtras;
+ }
+
+ if ((lisVisible.length + optGroup.length) > 3) {
+ minHeight = liHeight * 3 + menuExtras - 2;
+ } else {
+ minHeight = 0;
+ }
+
+ $menu.css({
+ 'max-height': menuHeight + 'px',
+ 'overflow': 'hidden',
+ 'min-height': minHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight + 'px'
+ });
+ $menuInner.css({
+ 'max-height': menuHeight - headerHeight - searchHeight - actionsHeight - doneButtonHeight - menuPadding + 'px',
+ 'overflow-y': 'auto',
+ 'min-height': Math.max(minHeight - menuPadding, 0) + 'px'
+ });
+ };
+ getSize();
+ this.$searchbox.off('input.getSize propertychange.getSize').on('input.getSize propertychange.getSize', getSize);
+ $window.off('resize.getSize scroll.getSize').on('resize.getSize scroll.getSize', getSize);
+ } else if (this.options.size && this.options.size != 'auto' && this.$lis.not(notDisabled).length > this.options.size) {
+ var optIndex = this.$lis.not('.divider').not(notDisabled).children().slice(0, this.options.size).last().parent().index(),
+ divLength = this.$lis.slice(0, optIndex + 1).filter('.divider').length;
+ menuHeight = liHeight * this.options.size + divLength * divHeight + menuPadding;
+
+ if (that.options.container) {
+ if (!$menu.data('height')) $menu.data('height', $menu.height());
+ getHeight = $menu.data('height');
+ } else {
+ getHeight = $menu.height();
+ }
+
+ if (that.options.dropupAuto) {
+ //noinspection JSUnusedAssignment
+ this.$newElement.toggleClass('dropup', selectOffsetTop > selectOffsetBot && (menuHeight - menuExtras) < getHeight);
+ }
+ $menu.css({
+ 'max-height': menuHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight + 'px',
+ 'overflow': 'hidden',
+ 'min-height': ''
+ });
+ $menuInner.css({
+ 'max-height': menuHeight - menuPadding + 'px',
+ 'overflow-y': 'auto',
+ 'min-height': ''
+ });
+ }
+ },
+
+ setWidth: function () {
+ if (this.options.width === 'auto') {
+ this.$menu.css('min-width', '0');
+
+ // Get correct width if element is hidden
+ var $selectClone = this.$menu.parent().clone().appendTo('body'),
+ $selectClone2 = this.options.container ? this.$newElement.clone().appendTo('body') : $selectClone,
+ ulWidth = $selectClone.children('.dropdown-menu').outerWidth(),
+ btnWidth = $selectClone2.css('width', 'auto').children('button').outerWidth();
+
+ $selectClone.remove();
+ $selectClone2.remove();
+
+ // Set width to whatever's larger, button title or longest option
+ this.$newElement.css('width', Math.max(ulWidth, btnWidth) + 'px');
+ } else if (this.options.width === 'fit') {
+ // Remove inline min-width so width can be changed from 'auto'
+ this.$menu.css('min-width', '');
+ this.$newElement.css('width', '').addClass('fit-width');
+ } else if (this.options.width) {
+ // Remove inline min-width so width can be changed from 'auto'
+ this.$menu.css('min-width', '');
+ this.$newElement.css('width', this.options.width);
+ } else {
+ // Remove inline min-width/width so width can be changed
+ this.$menu.css('min-width', '');
+ this.$newElement.css('width', '');
+ }
+ // Remove fit-width class if width is changed programmatically
+ if (this.$newElement.hasClass('fit-width') && this.options.width !== 'fit') {
+ this.$newElement.removeClass('fit-width');
+ }
+ },
+
+ selectPosition: function () {
+ this.$bsContainer = $('<div class="bs-container" />');
+
+ var that = this,
+ pos,
+ actualHeight,
+ getPlacement = function ($element) {
+ that.$bsContainer.addClass($element.attr('class').replace(/form-control|fit-width/gi, '')).toggleClass('dropup', $element.hasClass('dropup'));
+ pos = $element.offset();
+ actualHeight = $element.hasClass('dropup') ? 0 : $element[0].offsetHeight;
+ that.$bsContainer.css({
+ 'top': pos.top + actualHeight,
+ 'left': pos.left,
+ 'width': $element[0].offsetWidth
+ });
+ };
+
+ this.$button.on('click', function () {
+ var $this = $(this);
+
+ if (that.isDisabled()) {
+ return;
+ }
+
+ getPlacement(that.$newElement);
+
+ that.$bsContainer
+ .appendTo(that.options.container)
+ .toggleClass('open', !$this.hasClass('open'))
+ .append(that.$menu);
+ });
+
+ $(window).on('resize scroll', function () {
+ getPlacement(that.$newElement);
+ });
+
+ this.$element.on('hide.bs.select', function () {
+ that.$menu.data('height', that.$menu.height());
+ that.$bsContainer.detach();
+ });
+ },
+
+ setSelected: function (index, selected, $lis) {
+ if (!$lis) {
+ $lis = this.findLis().eq(this.liObj[index]);
+ }
+
+ $lis.toggleClass('selected', selected);
+ },
+
+ setDisabled: function (index, disabled, $lis) {
+ if (!$lis) {
+ $lis = this.findLis().eq(this.liObj[index]);
+ }
+
+ if (disabled) {
+ $lis.addClass('disabled').children('a').attr('href', '#').attr('tabindex', -1);
+ } else {
+ $lis.removeClass('disabled').children('a').removeAttr('href').attr('tabindex', 0);
+ }
+ },
+
+ isDisabled: function () {
+ return this.$element[0].disabled;
+ },
+
+ checkDisabled: function () {
+ var that = this;
+
+ if (this.isDisabled()) {
+ this.$newElement.addClass('disabled');
+ this.$button.addClass('disabled').attr('tabindex', -1);
+ } else {
+ if (this.$button.hasClass('disabled')) {
+ this.$newElement.removeClass('disabled');
+ this.$button.removeClass('disabled');
+ }
+
+ if (this.$button.attr('tabindex') == -1 && !this.$element.data('tabindex')) {
+ this.$button.removeAttr('tabindex');
+ }
+ }
+
+ this.$button.click(function () {
+ return !that.isDisabled();
+ });
+ },
+
+ tabIndex: function () {
+ if (this.$element.data('tabindex') !== this.$element.attr('tabindex') &&
+ (this.$element.attr('tabindex') !== -98 && this.$element.attr('tabindex') !== '-98')) {
+ this.$element.data('tabindex', this.$element.attr('tabindex'));
+ this.$button.attr('tabindex', this.$element.data('tabindex'));
+ }
+
+ this.$element.attr('tabindex', -98);
+ },
+
+ clickListener: function () {
+ var that = this,
+ $document = $(document);
+
+ this.$newElement.on('touchstart.dropdown', '.dropdown-menu', function (e) {
+ e.stopPropagation();
+ });
+
+ $document.data('spaceSelect', false);
+
+ this.$button.on('keyup', function (e) {
+ if (/(32)/.test(e.keyCode.toString(10)) && $document.data('spaceSelect')) {
+ e.preventDefault();
+ $document.data('spaceSelect', false);
+ }
+ });
+
+ this.$button.on('click', function () {
+ that.setSize();
+ that.$element.on('shown.bs.select', function () {
+ if (!that.options.liveSearch && !that.multiple) {
+ that.$menuInner.find('.selected a').focus();
+ } else if (!that.multiple) {
+ var selectedIndex = that.liObj[that.$element[0].selectedIndex];
+
+ if (typeof selectedIndex !== 'number' || that.options.size === false) return;
+
+ // scroll to selected option
+ var offset = that.$lis.eq(selectedIndex)[0].offsetTop - that.$menuInner[0].offsetTop;
+ offset = offset - that.$menuInner[0].offsetHeight/2 + that.sizeInfo.liHeight/2;
+ that.$menuInner[0].scrollTop = offset;
+ }
+ });
+ });
+
+ this.$menuInner.on('click', 'li a', function (e) {
+ var $this = $(this),
+ clickedIndex = $this.parent().data('originalIndex'),
+ prevValue = that.$element.val(),
+ prevIndex = that.$element.prop('selectedIndex');
+
+ // Don't close on multi choice menu
+ if (that.multiple) {
+ e.stopPropagation();
+ }
+
+ e.preventDefault();
+
+ //Don't run if we have been disabled
+ if (!that.isDisabled() && !$this.parent().hasClass('disabled')) {
+ var $options = that.$element.find('option'),
+ $option = $options.eq(clickedIndex),
+ state = $option.prop('selected'),
+ $optgroup = $option.parent('optgroup'),
+ maxOptions = that.options.maxOptions,
+ maxOptionsGrp = $optgroup.data('maxOptions') || false;
+
+ if (!that.multiple) { // Deselect all others if not multi select box
+ $options.prop('selected', false);
+ $option.prop('selected', true);
+ that.$menuInner.find('.selected').removeClass('selected');
+ that.setSelected(clickedIndex, true);
+ } else { // Toggle the one we have chosen if we are multi select.
+ $option.prop('selected', !state);
+ that.setSelected(clickedIndex, !state);
+ $this.blur();
+
+ if (maxOptions !== false || maxOptionsGrp !== false) {
+ var maxReached = maxOptions < $options.filter(':selected').length,
+ maxReachedGrp = maxOptionsGrp < $optgroup.find('option:selected').length;
+
+ if ((maxOptions && maxReached) || (maxOptionsGrp && maxReachedGrp)) {
+ if (maxOptions && maxOptions == 1) {
+ $options.prop('selected', false);
+ $option.prop('selected', true);
+ that.$menuInner.find('.selected').removeClass('selected');
+ that.setSelected(clickedIndex, true);
+ } else if (maxOptionsGrp && maxOptionsGrp == 1) {
+ $optgroup.find('option:selected').prop('selected', false);
+ $option.prop('selected', true);
+ var optgroupID = $this.parent().data('optgroup');
+ that.$menuInner.find('[data-optgroup="' + optgroupID + '"]').removeClass('selected');
+ that.setSelected(clickedIndex, true);
+ } else {
+ var maxOptionsArr = (typeof that.options.maxOptionsText === 'function') ?
+ that.options.maxOptionsText(maxOptions, maxOptionsGrp) : that.options.maxOptionsText,
+ maxTxt = maxOptionsArr[0].replace('{n}', maxOptions),
+ maxTxtGrp = maxOptionsArr[1].replace('{n}', maxOptionsGrp),
+ $notify = $('<div class="notify"></div>');
+ // If {var} is set in array, replace it
+ /** @deprecated */
+ if (maxOptionsArr[2]) {
+ maxTxt = maxTxt.replace('{var}', maxOptionsArr[2][maxOptions > 1 ? 0 : 1]);
+ maxTxtGrp = maxTxtGrp.replace('{var}', maxOptionsArr[2][maxOptionsGrp > 1 ? 0 : 1]);
+ }
+
+ $option.prop('selected', false);
+
+ that.$menu.append($notify);
+
+ if (maxOptions && maxReached) {
+ $notify.append($('<div>' + maxTxt + '</div>'));
+ that.$element.trigger('maxReached.bs.select');
+ }
+
+ if (maxOptionsGrp && maxReachedGrp) {
+ $notify.append($('<div>' + maxTxtGrp + '</div>'));
+ that.$element.trigger('maxReachedGrp.bs.select');
+ }
+
+ setTimeout(function () {
+ that.setSelected(clickedIndex, false);
+ }, 10);
+
+ $notify.delay(750).fadeOut(300, function () {
+ $(this).remove();
+ });
+ }
+ }
+ }
+ }
+
+ if (!that.multiple) {
+ that.$button.focus();
+ } else if (that.options.liveSearch) {
+ that.$searchbox.focus();
+ }
+
+ // Trigger select 'change'
+ if ((prevValue != that.$element.val() && that.multiple) || (prevIndex != that.$element.prop('selectedIndex') && !that.multiple)) {
+ that.$element.triggerNative('change');
+ // $option.prop('selected') is current option state (selected/unselected). state is previous option state.
+ that.$element.trigger('changed.bs.select', [clickedIndex, $option.prop('selected'), state]);
+ }
+ }
+ });
+
+ this.$menu.on('click', 'li.disabled a, .popover-title, .popover-title :not(.close)', function (e) {
+ if (e.currentTarget == this) {
+ e.preventDefault();
+ e.stopPropagation();
+ if (that.options.liveSearch && !$(e.target).hasClass('close')) {
+ that.$searchbox.focus();
+ } else {
+ that.$button.focus();
+ }
+ }
+ });
+
+ this.$menuInner.on('click', '.divider, .dropdown-header', function (e) {
+ e.preventDefault();
+ e.stopPropagation();
+ if (that.options.liveSearch) {
+ that.$searchbox.focus();
+ } else {
+ that.$button.focus();
+ }
+ });
+
+ this.$menu.on('click', '.popover-title .close', function () {
+ that.$button.click();
+ });
+
+ this.$searchbox.on('click', function (e) {
+ e.stopPropagation();
+ });
+
+ this.$menu.on('click', '.actions-btn', function (e) {
+ if (that.options.liveSearch) {
+ that.$searchbox.focus();
+ } else {
+ that.$button.focus();
+ }
+
+ e.preventDefault();
+ e.stopPropagation();
+
+ if ($(this).hasClass('bs-select-all')) {
+ that.selectAll();
+ } else {
+ that.deselectAll();
+ }
+ that.$element.triggerNative('change');
+ });
+
+ this.$element.change(function () {
+ that.render(false);
+ });
+ },
+
+ liveSearchListener: function () {
+ var that = this,
+ $no_results = $('<li class="no-results"></li>');
+
+ this.$button.on('click.dropdown.data-api touchstart.dropdown.data-api', function () {
+ that.$menuInner.find('.active').removeClass('active');
+ if (!!that.$searchbox.val()) {
+ that.$searchbox.val('');
+ that.$lis.not('.is-hidden').removeClass('hidden');
+ if (!!$no_results.parent().length) $no_results.remove();
+ }
+ if (!that.multiple) that.$menuInner.find('.selected').addClass('active');
+ setTimeout(function () {
+ that.$searchbox.focus();
+ }, 10);
+ });
+
+ this.$searchbox.on('click.dropdown.data-api focus.dropdown.data-api touchend.dropdown.data-api', function (e) {
+ e.stopPropagation();
+ });
+
+ this.$searchbox.on('input propertychange', function () {
+ if (that.$searchbox.val()) {
+ var $searchBase = that.$lis.not('.is-hidden').removeClass('hidden').children('a');
+ if (that.options.liveSearchNormalize) {
+ $searchBase = $searchBase.not(':a' + that._searchStyle() + '("' + normalizeToBase(that.$searchbox.val()) + '")');
+ } else {
+ $searchBase = $searchBase.not(':' + that._searchStyle() + '("' + that.$searchbox.val() + '")');
+ }
+ $searchBase.parent().addClass('hidden');
+
+ that.$lis.filter('.dropdown-header').each(function () {
+ var $this = $(this),
+ optgroup = $this.data('optgroup');
+
+ if (that.$lis.filter('[data-optgroup=' + optgroup + ']').not($this).not('.hidden').length === 0) {
+ $this.addClass('hidden');
+ that.$lis.filter('[data-optgroup=' + optgroup + 'div]').addClass('hidden');
+ }
+ });
+
+ var $lisVisible = that.$lis.not('.hidden');
+
+ // hide divider if first or last visible, or if followed by another divider
+ $lisVisible.each(function (index) {
+ var $this = $(this);
+
+ if ($this.hasClass('divider') && (
+ $this.index() === $lisVisible.first().index() ||
+ $this.index() === $lisVisible.last().index() ||
+ $lisVisible.eq(index + 1).hasClass('divider'))) {
+ $this.addClass('hidden');
+ }
+ });
+
+ if (!that.$lis.not('.hidden, .no-results').length) {
+ if (!!$no_results.parent().length) {
+ $no_results.remove();
+ }
+ $no_results.html(that.options.noneResultsText.replace('{0}', '"' + htmlEscape(that.$searchbox.val()) + '"')).show();
+ that.$menuInner.append($no_results);
+ } else if (!!$no_results.parent().length) {
+ $no_results.remove();
+ }
+ } else {
+ that.$lis.not('.is-hidden').removeClass('hidden');
+ if (!!$no_results.parent().length) {
+ $no_results.remove();
+ }
+ }
+
+ that.$lis.filter('.active').removeClass('active');
+ if (that.$searchbox.val()) that.$lis.not('.hidden, .divider, .dropdown-header').eq(0).addClass('active').children('a').focus();
+ $(this).focus();
+ });
+ },
+
+ _searchStyle: function () {
+ var styles = {
+ begins: 'ibegins',
+ startsWith: 'ibegins'
+ };
+
+ return styles[this.options.liveSearchStyle] || 'icontains';
+ },
+
+ val: function (value) {
+ if (typeof value !== 'undefined') {
+ this.$element.val(value);
+ this.render();
+
+ return this.$element;
+ } else {
+ return this.$element.val();
+ }
+ },
+
+ changeAll: function (status) {
+ if (typeof status === 'undefined') status = true;
+
+ this.findLis();
+
+ var $options = this.$element.find('option'),
+ $lisVisible = this.$lis.not('.divider, .dropdown-header, .disabled, .hidden').toggleClass('selected', status),
+ lisVisLen = $lisVisible.length,
+ selectedOptions = [];
+
+ for (var i = 0; i < lisVisLen; i++) {
+ var origIndex = $lisVisible[i].getAttribute('data-original-index');
+ selectedOptions[selectedOptions.length] = $options.eq(origIndex)[0];
+ }
+
+ $(selectedOptions).prop('selected', status);
+
+ this.render(false);
+ },
+
+ selectAll: function () {
+ return this.changeAll(true);
+ },
+
+ deselectAll: function () {
+ return this.changeAll(false);
+ },
+
+ keydown: function (e) {
+ var $this = $(this),
+ $parent = $this.is('input') ? $this.parent().parent() : $this.parent(),
+ $items,
+ that = $parent.data('this'),
+ index,
+ next,
+ first,
+ last,
+ prev,
+ nextPrev,
+ prevIndex,
+ isActive,
+ selector = ':not(.disabled, .hidden, .dropdown-header, .divider)',
+ keyCodeMap = {
+ 32: ' ',
+ 48: '0',
+ 49: '1',
+ 50: '2',
+ 51: '3',
+ 52: '4',
+ 53: '5',
+ 54: '6',
+ 55: '7',
+ 56: '8',
+ 57: '9',
+ 59: ';',
+ 65: 'a',
+ 66: 'b',
+ 67: 'c',
+ 68: 'd',
+ 69: 'e',
+ 70: 'f',
+ 71: 'g',
+ 72: 'h',
+ 73: 'i',
+ 74: 'j',
+ 75: 'k',
+ 76: 'l',
+ 77: 'm',
+ 78: 'n',
+ 79: 'o',
+ 80: 'p',
+ 81: 'q',
+ 82: 'r',
+ 83: 's',
+ 84: 't',
+ 85: 'u',
+ 86: 'v',
+ 87: 'w',
+ 88: 'x',
+ 89: 'y',
+ 90: 'z',
+ 96: '0',
+ 97: '1',
+ 98: '2',
+ 99: '3',
+ 100: '4',
+ 101: '5',
+ 102: '6',
+ 103: '7',
+ 104: '8',
+ 105: '9'
+ };
+
+ if (that.options.liveSearch) $parent = $this.parent().parent();
+
+ if (that.options.container) $parent = that.$menu;
+
+ $items = $('[role=menu] li', $parent);
+
+ isActive = that.$newElement.hasClass('open');
+
+ if (!isActive && (e.keyCode >= 48 && e.keyCode <= 57 || e.keyCode >= 96 && e.keyCode <= 105 || e.keyCode >= 65 && e.keyCode <= 90)) {
+ if (!that.options.container) {
+ that.setSize();
+ that.$menu.parent().addClass('open');
+ isActive = true;
+ } else {
+ that.$button.trigger('click');
+ }
+ that.$searchbox.focus();
+ }
+
+ if (that.options.liveSearch) {
+ if (/(^9$|27)/.test(e.keyCode.toString(10)) && isActive && that.$menu.find('.active').length === 0) {
+ e.preventDefault();
+ that.$menu.parent().removeClass('open');
+ if (that.options.container) that.$newElement.removeClass('open');
+ that.$button.focus();
+ }
+ // $items contains li elements when liveSearch is enabled
+ $items = $('[role=menu] li' + selector, $parent);
+ if (!$this.val() && !/(38|40)/.test(e.keyCode.toString(10))) {
+ if ($items.filter('.active').length === 0) {
+ $items = that.$menuInner.find('li');
+ if (that.options.liveSearchNormalize) {
+ $items = $items.filter(':a' + that._searchStyle() + '(' + normalizeToBase(keyCodeMap[e.keyCode]) + ')');
+ } else {
+ $items = $items.filter(':' + that._searchStyle() + '(' + keyCodeMap[e.keyCode] + ')');
+ }
+ }
+ }
+ }
+
+ if (!$items.length) return;
+
+ if (/(38|40)/.test(e.keyCode.toString(10))) {
+ index = $items.index($items.find('a').filter(':focus').parent());
+ first = $items.filter(selector).first().index();
+ last = $items.filter(selector).last().index();
+ next = $items.eq(index).nextAll(selector).eq(0).index();
+ prev = $items.eq(index).prevAll(selector).eq(0).index();
+ nextPrev = $items.eq(next).prevAll(selector).eq(0).index();
+
+ if (that.options.liveSearch) {
+ $items.each(function (i) {
+ if (!$(this).hasClass('disabled')) {
+ $(this).data('index', i);
+ }
+ });
+ index = $items.index($items.filter('.active'));
+ first = $items.first().data('index');
+ last = $items.last().data('index');
+ next = $items.eq(index).nextAll().eq(0).data('index');
+ prev = $items.eq(index).prevAll().eq(0).data('index');
+ nextPrev = $items.eq(next).prevAll().eq(0).data('index');
+ }
+
+ prevIndex = $this.data('prevIndex');
+
+ if (e.keyCode == 38) {
+ if (that.options.liveSearch) index--;
+ if (index != nextPrev && index > prev) index = prev;
+ if (index < first) index = first;
+ if (index == prevIndex) index = last;
+ } else if (e.keyCode == 40) {
+ if (that.options.liveSearch) index++;
+ if (index == -1) index = 0;
+ if (index != nextPrev && index < next) index = next;
+ if (index > last) index = last;
+ if (index == prevIndex) index = first;
+ }
+
+ $this.data('prevIndex', index);
+
+ if (!that.options.liveSearch) {
+ $items.eq(index).children('a').focus();
+ } else {
+ e.preventDefault();
+ if (!$this.hasClass('dropdown-toggle')) {
+ $items.removeClass('active').eq(index).addClass('active').children('a').focus();
+ $this.focus();
+ }
+ }
+
+ } else if (!$this.is('input')) {
+ var keyIndex = [],
+ count,
+ prevKey;
+
+ $items.each(function () {
+ if (!$(this).hasClass('disabled')) {
+ if ($.trim($(this).children('a').text().toLowerCase()).substring(0, 1) == keyCodeMap[e.keyCode]) {
+ keyIndex.push($(this).index());
+ }
+ }
+ });
+
+ count = $(document).data('keycount');
+ count++;
+ $(document).data('keycount', count);
+
+ prevKey = $.trim($(':focus').text().toLowerCase()).substring(0, 1);
+
+ if (prevKey != keyCodeMap[e.keyCode]) {
+ count = 1;
+ $(document).data('keycount', count);
+ } else if (count >= keyIndex.length) {
+ $(document).data('keycount', 0);
+ if (count > keyIndex.length) count = 1;
+ }
+
+ $items.eq(keyIndex[count - 1]).children('a').focus();
+ }
+
+ // Select focused option if "Enter", "Spacebar" or "Tab" (when selectOnTab is true) are pressed inside the menu.
+ if ((/(13|32)/.test(e.keyCode.toString(10)) || (/(^9$)/.test(e.keyCode.toString(10)) && that.options.selectOnTab)) && isActive) {
+ if (!/(32)/.test(e.keyCode.toString(10))) e.preventDefault();
+ if (!that.options.liveSearch) {
+ var elem = $(':focus');
+ elem.click();
+ // Bring back focus for multiselects
+ elem.focus();
+ // Prevent screen from scrolling if the user hit the spacebar
+ e.preventDefault();
+ // Fixes spacebar selection of dropdown items in FF & IE
+ $(document).data('spaceSelect', true);
+ } else if (!/(32)/.test(e.keyCode.toString(10))) {
+ that.$menuInner.find('.active a').click();
+ $this.focus();
+ }
+ $(document).data('keycount', 0);
+ }
+
+ if ((/(^9$|27)/.test(e.keyCode.toString(10)) && isActive && (that.multiple || that.options.liveSearch)) || (/(27)/.test(e.keyCode.toString(10)) && !isActive)) {
+ that.$menu.parent().removeClass('open');
+ if (that.options.container) that.$newElement.removeClass('open');
+ that.$button.focus();
+ }
+ },
+
+ mobile: function () {
+ this.$element.addClass('mobile-device');
+ },
+
+ refresh: function () {
+ this.$lis = null;
+ this.liObj = {};
+ this.reloadLi();
+ this.render();
+ this.checkDisabled();
+ this.liHeight(true);
+ this.setStyle();
+ this.setWidth();
+ if (this.$lis) this.$searchbox.trigger('propertychange');
+
+ this.$element.trigger('refreshed.bs.select');
+ },
+
+ hide: function () {
+ this.$newElement.hide();
+ },
+
+ show: function () {
+ this.$newElement.show();
+ },
+
+ remove: function () {
+ this.$newElement.remove();
+ this.$element.remove();
+ },
+
+ destroy: function () {
+ this.$newElement.remove();
+
+ if (this.$bsContainer) {
+ this.$bsContainer.remove();
+ } else {
+ this.$menu.remove();
+ }
+
+ this.$element
+ .off('.bs.select')
+ .removeData('selectpicker')
+ .removeClass('bs-select-hidden selectpicker');
+ }
+ };
+
+ // SELECTPICKER PLUGIN DEFINITION
+ // ==============================
+ function Plugin(option, event) {
+ // get the args of the outer function..
+ var args = arguments;
+ // The arguments of the function are explicitly re-defined from the argument list, because the shift causes them
+ // to get lost/corrupted in android 2.3 and IE9 #715 #775
+ var _option = option,
+ _event = event;
+ [].shift.apply(args);
+
+ var value;
+ var chain = this.each(function () {
+ var $this = $(this);
+ if ($this.is('select')) {
+ var data = $this.data('selectpicker'),
+ options = typeof _option == 'object' && _option;
+
+ if (!data) {
+ var config = $.extend({}, Selectpicker.DEFAULTS, $.fn.selectpicker.defaults || {}, $this.data(), options);
+ config.template = $.extend({}, Selectpicker.DEFAULTS.template, ($.fn.selectpicker.defaults ? $.fn.selectpicker.defaults.template : {}), $this.data().template, options.template);
+ $this.data('selectpicker', (data = new Selectpicker(this, config, _event)));
+ } else if (options) {
+ for (var i in options) {
+ if (options.hasOwnProperty(i)) {
+ data.options[i] = options[i];
+ }
+ }
+ }
+
+ if (typeof _option == 'string') {
+ if (data[_option] instanceof Function) {
+ value = data[_option].apply(data, args);
+ } else {
+ value = data.options[_option];
+ }
+ }
+ }
+ });
+
+ if (typeof value !== 'undefined') {
+ //noinspection JSUnusedAssignment
+ return value;
+ } else {
+ return chain;
+ }
+ }
+
+ var old = $.fn.selectpicker;
+ $.fn.selectpicker = Plugin;
+ $.fn.selectpicker.Constructor = Selectpicker;
+
+ // SELECTPICKER NO CONFLICT
+ // ========================
+ $.fn.selectpicker.noConflict = function () {
+ $.fn.selectpicker = old;
+ return this;
+ };
+
+ $(document)
+ .data('keycount', 0)
+ .on('keydown.bs.select', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input', Selectpicker.prototype.keydown)
+ .on('focusin.modal', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input', function (e) {
+ e.stopPropagation();
+ });
+
+ // SELECTPICKER DATA-API
+ // =====================
+ $(window).on('load.bs.select.data-api', function () {
+ $('.selectpicker').each(function () {
+ var $selectpicker = $(this);
+ Plugin.call($selectpicker, $selectpicker.data());
+ })
+ });
+})(jQuery);
+
+
+}));
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/bootstrap-select.js.map
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/bootstrap-select.js.map (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/bootstrap-select.js.map 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1 @@
+{"version":3,"sources":["bootstrap-select.js"],"names":["root","factory","define","amd","a0","exports","module","require","jQuery","this","$","normalizeToBase","text","rExps","re","ch","each","replace","htmlEscape","html","escapeMap","&","<",">","\"","'","`","source","Object","keys","join","testRegexp","RegExp","replaceRegexp","string","test","match","Plugin","option","event","args","arguments","_option","_event","shift","apply","value","chain","$this","is","data","options","i","hasOwnProperty","config","extend","Selectpicker","DEFAULTS","fn","selectpicker","defaults","template","Function","String","prototype","includes","toString","defineProperty","object","$defineProperty","result","error","indexOf","search","TypeError","call","stringLength","length","searchString","searchLength","position","undefined","pos","Number","start","Math","min","max","configurable","writable","startsWith","index","charCodeAt","o","k","r","push","triggerNative","eventName","el","dispatchEvent","Event","bu
bbles","document","createEvent","initEvent","fireEvent","createEventObject","eventType","trigger","expr","icontains","obj","meta","$obj","haystack","toUpperCase","ibegins","aicontains","aibegins","element","e","stopPropagation","preventDefault","$element","$newElement","$button","$menu","$lis","title","attr","val","render","refresh","setStyle","selectAll","deselectAll","destroy","remove","show","hide","init","VERSION","noneSelectedText","noneResultsText","countSelectedText","numSelected","numTotal","maxOptionsText","numAll","numGroup","selectAllText","deselectAllText","doneButton","doneButtonText","multipleSeparator","styleBase","style","size","selectedTextFormat","width","container","hideDisabled","showSubtext","showIcon","showContent","dropupAuto","header","liveSearch","liveSearchPlaceholder","liveSearchNormalize","liveSearchStyle","actionsBox","iconBase","tickIcon","caret","maxOptions","mobile","selectOnTab","dropdownAlignRight","constructor","that","id","liObj","multiple","prop"
,"autofocus","createView","after","appendTo","children","$menuInner","$searchbox","find","addClass","click","focus","checkDisabled","clickListener","liveSearchListener","setWidth","selectPosition","on","hide.bs.dropdown","hidden.bs.dropdown","show.bs.dropdown","shown.bs.dropdown","hasAttribute","focus.bs.select","off","shown.bs.select","rendered.bs.select","validity","valid","removeClass","setTimeout","createDropdown","inputGroup","parent","hasClass","searchbox","actionsbox","donebutton","drop","$drop","li","createLi","innerHTML","reloadLi","destroyLi","_li","optID","titleOption","createElement","liIndex","generateLI","content","classes","optgroup","generateA","inline","tokens","className","appendChild","createTextNode","insertBefore","firstChild","selectedIndex","selected","optionClass","cssText","subtext","icon","isDisabled","disabled","parentNode","tagName","optGroupClass","label","labelSubtext","labelIcon","previousElementSibling","eq","findLis","updateLi","notDisabled","setDisa
bled","setSelected","tabIndex","selectedItems","map","toArray","split","totalCount","not","tr8nText","trim","status","buttonClass","liHeight","sizeInfo","newElement","menu","menuInner","divider","a","cloneNode","actions","input","body","offsetHeight","headerHeight","searchHeight","actionsHeight","doneButtonHeight","dividerHeight","outerHeight","menuStyle","getComputedStyle","menuPadding","parseInt","paddingTop","css","paddingBottom","borderTopWidth","borderBottomWidth","menuExtras","marginTop","marginBottom","removeChild","setSize","menuHeight","getHeight","selectOffsetTop","selectOffsetBot","$window","window","selectHeight","divHeight","posVert","offset","top","scrollTop","height","getSize","minHeight","include","classList","contains","lis","getElementsByTagName","lisVisible","Array","filter","optGroup","toggleClass","max-height","overflow","min-height","overflow-y","optIndex","slice","last","divLength","$selectClone","clone","$selectClone2","ulWidth","outerWidth","btnWidth","$bsCo
ntainer","actualHeight","getPlacement","left","offsetWidth","append","detach","removeAttr","$document","keyCode","offsetTop","clickedIndex","prevValue","prevIndex","$options","$option","state","$optgroup","maxOptionsGrp","blur","maxReached","maxReachedGrp","optgroupID","maxOptionsArr","maxTxt","maxTxtGrp","$notify","delay","fadeOut","currentTarget","target","change","$no_results","$searchBase","_searchStyle","$lisVisible","first","styles","begins","changeAll","lisVisLen","selectedOptions","origIndex","getAttribute","keydown","$items","next","prev","nextPrev","isActive","$parent","selector","keyCodeMap",32,48,49,50,51,52,53,54,55,56,57,59,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,96,97,98,99,100,101,102,103,104,105,"nextAll","prevAll","count","prevKey","keyIndex","toLowerCase","substring","elem","removeData","old","Constructor","noConflict","$selectpicker"],"mappings":"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","file":"bootstrap-select.min.js"}
\ No newline at end of file
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/bootstrap-select.min.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/bootstrap-select.min.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/bootstrap-select.min.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,8 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){"use strict";function b(b){var c=[{re:/[\xC0-\xC6]/g,ch:"A"},{re:/[\xE0-\xE6]/g,ch:"a"},{re:/[\xC8-\xCB]/g,ch:"E"},{re:/[\xE8-\xEB]/g,ch:"e"},{re:/[\xCC-\xCF]/g,ch:"I"},{re:/[\xEC-\xEF]/g,ch:"i"},{re:/[\xD2-\xD6]/g,ch:"O"},{re:/[\xF2-\xF6]/g,ch:"o"},{re:/[\xD9-\xDC]/g,ch:"U"},{re:/[\xF9-\xFC]/g,ch:"u"},{re:/[\xC7-\xE7]/g,ch:"c"},{re:/[\xD1]/g,ch:"N"},{re:/[\xF1]/g,ch:"n"}];return a.each(c,function(){b=b.replace(this.re,this.ch)}),b}function c(a){var b={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},c="(?:"+Object.keys(b).join("|")+")",d=new RegExp(c),e=new RegExp(c,"g"),f=null==a?"":""+a;return d.test(f)?f.replace(e,function(a){return b[a]}):f}function d(b,c){var d=arguments,f=b,g=c;[].shift.apply(d);var h,i=this.each(function(){var b=a(this);if(b.is("select"))
{var c=b.data("selectpicker"),i="object"==typeof f&&f;if(c){if(i)for(var j in i)i.hasOwnProperty(j)&&(c.options[j]=i[j])}else{var k=a.extend({},e.DEFAULTS,a.fn.selectpicker.defaults||{},b.data(),i);k.template=a.extend({},e.DEFAULTS.template,a.fn.selectpicker.defaults?a.fn.selectpicker.defaults.template:{},b.data().template,i.template),b.data("selectpicker",c=new e(this,k,g))}"string"==typeof f&&(h=c[f]instanceof Function?c[f].apply(c,d):c.options[f])}});return"undefined"!=typeof h?h:i}String.prototype.includes||!function(){var a={}.toString,b=function(){try{var a={},b=Object.defineProperty,c=b(a,a,a)&&b}catch(d){}return c}(),c="".indexOf,d=function(b){if(null==this)throw new TypeError;var d=String(this);if(b&&"[object RegExp]"==a.call(b))throw new TypeError;var e=d.length,f=String(b),g=f.length,h=arguments.length>1?arguments[1]:void 0,i=h?Number(h):0;i!=i&&(i=0);var j=Math.min(Math.max(i,0),e);return g+j>e?!1:-1!=c.call(d,f,i)};b?b(String.prototype,"includes",{value:d,configurable:!
0,writable:!0}):String.prototype.includes=d}(),String.prototype.startsWith||!function(){var a=function(){try{var a={},b=Object.defineProperty,c=b(a,a,a)&&b}catch(d){}return c}(),b={}.toString,c=function(a){if(null==this)throw new TypeError;var c=String(this);if(a&&"[object RegExp]"==b.call(a))throw new TypeError;var d=c.length,e=String(a),f=e.length,g=arguments.length>1?arguments[1]:void 0,h=g?Number(g):0;h!=h&&(h=0);var i=Math.min(Math.max(h,0),d);if(f+i>d)return!1;for(var j=-1;++j<f;)if(c.charCodeAt(i+j)!=e.charCodeAt(j))return!1;return!0};a?a(String.prototype,"startsWith",{value:c,configurable:!0,writable:!0}):String.prototype.startsWith=c}(),Object.keys||(Object.keys=function(a,b,c){c=[];for(b in a)c.hasOwnProperty.call(a,b)&&c.push(b);return c}),a.fn.triggerNative=function(a){var b,c=this[0];c.dispatchEvent?("function"==typeof Event?b=new Event(a,{bubbles:!0}):(b=document.createEvent("Event"),b.initEvent(a,!0,!1)),c.dispatchEvent(b)):(c.fireEvent&&(b=document.createEventObject(
),b.eventType=a,c.fireEvent("on"+a,b)),this.trigger(a))},a.expr[":"].icontains=function(b,c,d){var e=a(b),f=(e.data("tokens")||e.text()).toUpperCase();return f.includes(d[3].toUpperCase())},a.expr[":"].ibegins=function(b,c,d){var e=a(b),f=(e.data("tokens")||e.text()).toUpperCase();return f.startsWith(d[3].toUpperCase())},a.expr[":"].aicontains=function(b,c,d){var e=a(b),f=(e.data("tokens")||e.data("normalizedText")||e.text()).toUpperCase();return f.includes(d[3].toUpperCase())},a.expr[":"].aibegins=function(b,c,d){var e=a(b),f=(e.data("tokens")||e.data("normalizedText")||e.text()).toUpperCase();return f.startsWith(d[3].toUpperCase())};var e=function(b,c,d){d&&(d.stopPropagation(),d.preventDefault()),this.$element=a(b),this.$newElement=null,this.$button=null,this.$menu=null,this.$lis=null,this.options=c,null===this.options.title&&(this.options.title=this.$element.attr("title")),this.val=e.prototype.val,this.render=e.prototype.render,this.refresh=e.prototype.refresh,this.setStyle=e.pr
ototype.setStyle,this.selectAll=e.prototype.selectAll,this.deselectAll=e.prototype.deselectAll,this.destroy=e.prototype.destroy,this.remove=e.prototype.remove,this.show=e.prototype.show,this.hide=e.prototype.hide,this.init()};e.VERSION="1.9.3",e.DEFAULTS={noneSelectedText:"Nothing selected",noneResultsText:"No results matched {0}",countSelectedText:function(a,b){return 1==a?"{0} item selected":"{0} items selected"},maxOptionsText:function(a,b){return[1==a?"Limit reached ({n} item max)":"Limit reached ({n} items max)",1==b?"Group limit reached ({n} item max)":"Group limit reached ({n} items max)"]},selectAllText:"Select All",deselectAllText:"Deselect All",doneButton:!1,doneButtonText:"Close",multipleSeparator:", ",styleBase:"btn",style:"btn-default",size:"auto",title:null,selectedTextFormat:"values",width:!1,container:!1,hideDisabled:!1,showSubtext:!1,showIcon:!0,showContent:!0,dropupAuto:!0,header:!1,liveSearch:!1,liveSearchPlaceholder:null,liveSearchNormalize:!1,liveSearchStyle:"co
ntains",actionsBox:!1,iconBase:"glyphicon",tickIcon:"glyphicon-ok",template:{caret:'<span class="caret"></span>'},maxOptions:!1,mobile:!1,selectOnTab:!1,dropdownAlignRight:!1},e.prototype={constructor:e,init:function(){var b=this,c=this.$element.attr("id");this.liObj={},this.multiple=this.$element.prop("multiple"),this.autofocus=this.$element.prop("autofocus"),this.$newElement=this.createView(),this.$element.after(this.$newElement).appendTo(this.$newElement),this.$button=this.$newElement.children("button"),this.$menu=this.$newElement.children(".dropdown-menu"),this.$menuInner=this.$menu.children(".inner"),this.$searchbox=this.$menu.find("input"),this.options.dropdownAlignRight&&this.$menu.addClass("dropdown-menu-right"),"undefined"!=typeof c&&(this.$button.attr("data-id",c),a('label[for="'+c+'"]').click(function(a){a.preventDefault(),b.$button.focus()})),this.checkDisabled(),this.clickListener(),this.options.liveSearch&&this.liveSearchListener(),this.render(),this.setStyle(),this.se
tWidth(),this.options.container&&this.selectPosition(),this.$menu.data("this",this),this.$newElement.data("this",this),this.options.mobile&&this.mobile(),this.$newElement.on({"hide.bs.dropdown":function(a){b.$element.trigger("hide.bs.select",a)},"hidden.bs.dropdown":function(a){b.$element.trigger("hidden.bs.select",a)},"show.bs.dropdown":function(a){b.$element.trigger("show.bs.select",a)},"shown.bs.dropdown":function(a){b.$element.trigger("shown.bs.select",a)}}),b.$element[0].hasAttribute("required")&&this.$element.on("invalid",function(){b.$button.addClass("bs-invalid").focus(),b.$element.on({"focus.bs.select":function(){b.$button.focus(),b.$element.off("focus.bs.select")},"shown.bs.select":function(){b.$element.val(b.$element.val()).off("shown.bs.select")},"rendered.bs.select":function(){this.validity.valid&&b.$button.removeClass("bs-invalid"),b.$element.off("rendered.bs.select")}})}),setTimeout(function(){b.$element.trigger("loaded.bs.select")})},createDropdown:function(){var b=t
his.multiple?" show-tick":"",d=this.$element.parent().hasClass("input-group")?" input-group-btn":"",e=this.autofocus?" autofocus":"",f=this.options.header?'<div class="popover-title"><button type="button" class="close" aria-hidden="true">×</button>'+this.options.header+"</div>":"",g=this.options.liveSearch?'<div class="bs-searchbox"><input type="text" class="form-control" autocomplete="off"'+(null===this.options.liveSearchPlaceholder?"":' placeholder="'+c(this.options.liveSearchPlaceholder)+'"')+"></div>":"",h=this.multiple&&this.options.actionsBox?'<div class="bs-actionsbox"><div class="btn-group btn-group-sm btn-block"><button type="button" class="actions-btn bs-select-all btn btn-default">'+this.options.selectAllText+'</button><button type="button" class="actions-btn bs-deselect-all btn btn-default">'+this.options.deselectAllText+"</button></div></div>":"",i=this.multiple&&this.options.doneButton?'<div class="bs-donebutton"><div class="btn-group btn-block"><button type="but
ton" class="btn btn-sm btn-default">'+this.options.doneButtonText+"</button></div></div>":"",j='<div class="btn-group bootstrap-select'+b+d+'"><button type="button" class="'+this.options.styleBase+' dropdown-toggle" data-toggle="dropdown"'+e+'><span class="filter-option pull-left"></span> <span class="bs-caret">'+this.options.template.caret+'</span></button><div class="dropdown-menu open">'+f+g+h+'<ul class="dropdown-menu inner" role="menu"></ul>'+i+"</div></div>";return a(j)},createView:function(){var a=this.createDropdown(),b=this.createLi();return a.find("ul")[0].innerHTML=b,a},reloadLi:function(){this.destroyLi();var a=this.createLi();this.$menuInner[0].innerHTML=a},destroyLi:function(){this.$menu.find("li").remove()},createLi:function(){var d=this,e=[],f=0,g=document.createElement("option"),h=-1,i=function(a,b,c,d){return"<li"+("undefined"!=typeof c&""!==c?' class="'+c+'"':"")+("undefined"!=typeof b&null!==b?' data-original-index="'+b+'"':"")+("undefined"!=typeof d&null!==
d?'data-optgroup="'+d+'"':"")+">"+a+"</li>"},j=function(a,e,f,g){return'<a tabindex="0"'+("undefined"!=typeof e?' class="'+e+'"':"")+("undefined"!=typeof f?' style="'+f+'"':"")+(d.options.liveSearchNormalize?' data-normalized-text="'+b(c(a))+'"':"")+("undefined"!=typeof g||null!==g?' data-tokens="'+g+'"':"")+">"+a+'<span class="'+d.options.iconBase+" "+d.options.tickIcon+' check-mark"></span></a>'};if(this.options.title&&!this.multiple&&(h--,!this.$element.find(".bs-title-option").length)){var k=this.$element[0];g.className="bs-title-option",g.appendChild(document.createTextNode(this.options.title)),g.value="",k.insertBefore(g,k.firstChild),void 0===a(k.options[k.selectedIndex]).attr("selected")&&(g.selected=!0)}return this.$element.find("option").each(function(b){var c=a(this);if(h++,!c.hasClass("bs-title-option")){var g=this.className||"",k=this.style.cssText,l=c.data("content")?c.data("content"):c.html(),m=c.data("tokens")?c.data("tokens"):null,n="undefined"!=typeof c.data("subte
xt")?'<small class="text-muted">'+c.data("subtext")+"</small>":"",o="undefined"!=typeof c.data("icon")?'<span class="'+d.options.iconBase+" "+c.data("icon")+'"></span> ':"",p=this.disabled||"OPTGROUP"===this.parentNode.tagName&&this.parentNode.disabled;if(""!==o&&p&&(o="<span>"+o+"</span>"),d.options.hideDisabled&&p)return void h--;if(c.data("content")||(l=o+'<span class="text">'+l+n+"</span>"),"OPTGROUP"===this.parentNode.tagName&&c.data("divider")!==!0){var q=" "+this.parentNode.className||"";if(0===c.index()){f+=1;var r=this.parentNode.label,s="undefined"!=typeof c.parent().data("subtext")?'<small class="text-muted">'+c.parent().data("subtext")+"</small>":"",t=c.parent().data("icon")?'<span class="'+d.options.iconBase+" "+c.parent().data("icon")+'"></span> ':"";r=t+'<span class="text">'+r+s+"</span>",0!==b&&e.length>0&&(h++,e.push(i("",null,"divider",f+"div"))),h++,e.push(i(r,null,"dropdown-header"+q,f))}e.push(i(j(l,"opt "+g+q,k,m),b,"",f))}else c.data("divider")===!0?e.push(i("
",b,"divider")):c.data("hidden")===!0?e.push(i(j(l,g,k,m),b,"hidden is-hidden")):(this.previousElementSibling&&"OPTGROUP"===this.previousElementSibling.tagName&&(h++,e.push(i("",null,"divider",f+"div"))),e.push(i(j(l,g,k,m),b)));d.liObj[b]=h}}),this.multiple||0!==this.$element.find("option:selected").length||this.options.title||this.$element.find("option").eq(0).prop("selected",!0).attr("selected","selected"),e.join("")},findLis:function(){return null==this.$lis&&(this.$lis=this.$menu.find("li")),this.$lis},render:function(b){var c,d=this;b!==!1&&this.$element.find("option").each(function(a){var b=d.findLis().eq(d.liObj[a]);d.setDisabled(a,this.disabled||"OPTGROUP"===this.parentNode.tagName&&this.parentNode.disabled,b),d.setSelected(a,this.selected,b)}),this.tabIndex();var e=this.$element.find("option").map(function(){if(this.selected){if(d.options.hideDisabled&&(this.disabled||"OPTGROUP"===this.parentNode.tagName&&this.parentNode.disabled))return;var b,c=a(this),e=c.data("icon")&&d
.options.showIcon?'<i class="'+d.options.iconBase+" "+c.data("icon")+'"></i> ':"";return b=d.options.showSubtext&&c.data("subtext")&&!d.multiple?' <small class="text-muted">'+c.data("subtext")+"</small>":"","undefined"!=typeof c.attr("title")?c.attr("title"):c.data("content")&&d.options.showContent?c.data("content"):e+c.html()+b}}).toArray(),f=this.multiple?e.join(this.options.multipleSeparator):e[0];if(this.multiple&&this.options.selectedTextFormat.indexOf("count")>-1){var g=this.options.selectedTextFormat.split(">");if(g.length>1&&e.length>g[1]||1==g.length&&e.length>=2){c=this.options.hideDisabled?", [disabled]":"";var h=this.$element.find("option").not('[data-divider="true"], [data-hidden="true"]'+c).length,i="function"==typeof this.options.countSelectedText?this.options.countSelectedText(e.length,h):this.options.countSelectedText;f=i.replace("{0}",e.length.toString()).replace("{1}",h.toString())}}void 0==this.options.title&&(this.options.title=this.$element.attr("title")),"stat
ic"==this.options.selectedTextFormat&&(f=this.options.title),f||(f="undefined"!=typeof this.options.title?this.options.title:this.options.noneSelectedText),this.$button.attr("title",a.trim(f.replace(/<[^>]*>?/g,""))),this.$button.children(".filter-option").html(f),this.$element.trigger("rendered.bs.select")},setStyle:function(a,b){this.$element.attr("class")&&this.$newElement.addClass(this.$element.attr("class").replace(/selectpicker|mobile-device|bs-select-hidden|validate\[.*\]/gi,""));var c=a?a:this.options.style;"add"==b?this.$button.addClass(c):"remove"==b?this.$button.removeClass(c):(this.$button.removeClass(this.options.style),this.$button.addClass(c))},liHeight:function(b){if(b||this.options.size!==!1&&!this.sizeInfo){var c=document.createElement("div"),d=document.createElement("div"),e=document.createElement("ul"),f=document.createElement("li"),g=document.createElement("li"),h=document.createElement("a"),i=document.createElement("span"),j=this.options.header&&this.$menu.find
(".popover-title").length>0?this.$menu.find(".popover-title")[0].cloneNode(!0):null,k=this.options.liveSearch?document.createElement("div"):null,l=this.options.actionsBox&&this.multiple&&this.$menu.find(".bs-actionsbox").length>0?this.$menu.find(".bs-actionsbox")[0].cloneNode(!0):null,m=this.options.doneButton&&this.multiple&&this.$menu.find(".bs-donebutton").length>0?this.$menu.find(".bs-donebutton")[0].cloneNode(!0):null;if(i.className="text",c.className=this.$menu[0].parentNode.className+" open",d.className="dropdown-menu open",e.className="dropdown-menu inner",f.className="divider",i.appendChild(document.createTextNode("Inner text")),h.appendChild(i),g.appendChild(h),e.appendChild(g),e.appendChild(f),j&&d.appendChild(j),k){var n=document.createElement("span");k.className="bs-searchbox",n.className="form-control",k.appendChild(n),d.appendChild(k)}l&&d.appendChild(l),d.appendChild(e),m&&d.appendChild(m),c.appendChild(d),document.body.appendChild(c);var o=h.offsetHeight,p=j?j.offse
tHeight:0,q=k?k.offsetHeight:0,r=l?l.offsetHeight:0,s=m?m.offsetHeight:0,t=a(f).outerHeight(!0),u="function"==typeof getComputedStyle?getComputedStyle(d):!1,v=u?null:a(d),w=parseInt(u?u.paddingTop:v.css("paddingTop"))+parseInt(u?u.paddingBottom:v.css("paddingBottom"))+parseInt(u?u.borderTopWidth:v.css("borderTopWidth"))+parseInt(u?u.borderBottomWidth:v.css("borderBottomWidth")),x=w+parseInt(u?u.marginTop:v.css("marginTop"))+parseInt(u?u.marginBottom:v.css("marginBottom"))+2;document.body.removeChild(c),this.sizeInfo={liHeight:o,headerHeight:p,searchHeight:q,actionsHeight:r,doneButtonHeight:s,dividerHeight:t,menuPadding:w,menuExtras:x}}},setSize:function(){if(this.findLis(),this.liHeight(),this.options.header&&this.$menu.css("padding-top",0),this.options.size!==!1){var b,c,d,e,f=this,g=this.$menu,h=this.$menuInner,i=a(window),j=this.$newElement[0].offsetHeight,k=this.sizeInfo.liHeight,l=this.sizeInfo.headerHeight,m=this.sizeInfo.searchHeight,n=this.sizeInfo.actionsHeight,o=this.sizeI
nfo.doneButtonHeight,p=this.sizeInfo.dividerHeight,q=this.sizeInfo.menuPadding,r=this.sizeInfo.menuExtras,s=this.options.hideDisabled?".disabled":"",t=function(){d=f.$newElement.offset().top-i.scrollTop(),e=i.height()-d-j};if(t(),"auto"===this.options.size){var u=function(){var i,j=function(b,c){return function(d){return c?d.classList?d.classList.contains(b):a(d).hasClass(b):!(d.classList?d.classList.contains(b):a(d).hasClass(b))}},p=f.$menuInner[0].getElementsByTagName("li"),s=Array.prototype.filter?Array.prototype.filter.call(p,j("hidden",!1)):f.$lis.not(".hidden"),u=Array.prototype.filter?Array.prototype.filter.call(s,j("dropdown-header",!0)):s.filter(".dropdown-header");t(),b=e-r,f.options.container?(g.data("height")||g.data("height",g.height()),c=g.data("height")):c=g.height(),f.options.dropupAuto&&f.$newElement.toggleClass("dropup",d>e&&c>b-r),f.$newElement.hasClass("dropup")&&(b=d-r),i=s.length+u.length>3?3*k+r-2:0,g.css({"max-height":b+"px",overflow:"hidden","min-height":i+l
+m+n+o+"px"}),h.css({"max-height":b-l-m-n-o-q+"px","overflow-y":"auto","min-height":Math.max(i-q,0)+"px"})};u(),this.$searchbox.off("input.getSize propertychange.getSize").on("input.getSize propertychange.getSize",u),i.off("resize.getSize scroll.getSize").on("resize.getSize scroll.getSize",u)}else if(this.options.size&&"auto"!=this.options.size&&this.$lis.not(s).length>this.options.size){var v=this.$lis.not(".divider").not(s).children().slice(0,this.options.size).last().parent().index(),w=this.$lis.slice(0,v+1).filter(".divider").length;b=k*this.options.size+w*p+q,f.options.container?(g.data("height")||g.data("height",g.height()),c=g.data("height")):c=g.height(),f.options.dropupAuto&&this.$newElement.toggleClass("dropup",d>e&&c>b-r),g.css({"max-height":b+l+m+n+o+"px",overflow:"hidden","min-height":""}),h.css({"max-height":b-q+"px","overflow-y":"auto","min-height":""})}}},setWidth:function(){if("auto"===this.options.width){this.$menu.css("min-width","0");var a=this.$menu.parent().clo
ne().appendTo("body"),b=this.options.container?this.$newElement.clone().appendTo("body"):a,c=a.children(".dropdown-menu").outerWidth(),d=b.css("width","auto").children("button").outerWidth();a.remove(),b.remove(),this.$newElement.css("width",Math.max(c,d)+"px")}else"fit"===this.options.width?(this.$menu.css("min-width",""),this.$newElement.css("width","").addClass("fit-width")):this.options.width?(this.$menu.css("min-width",""),this.$newElement.css("width",this.options.width)):(this.$menu.css("min-width",""),this.$newElement.css("width",""));this.$newElement.hasClass("fit-width")&&"fit"!==this.options.width&&this.$newElement.removeClass("fit-width")},selectPosition:function(){this.$bsContainer=a('<div class="bs-container" />');var b,c,d=this,e=function(a){d.$bsContainer.addClass(a.attr("class").replace(/form-control|fit-width/gi,"")).toggleClass("dropup",a.hasClass("dropup")),b=a.offset(),c=a.hasClass("dropup")?0:a[0].offsetHeight,d.$bsContainer.css({top:b.top+c,left:b.left,width:a[
0].offsetWidth})};this.$button.on("click",function(){var b=a(this);d.isDisabled()||(e(d.$newElement),d.$bsContainer.appendTo(d.options.container).toggleClass("open",!b.hasClass("open")).append(d.$menu))}),a(window).on("resize scroll",function(){e(d.$newElement)}),this.$element.on("hide.bs.select",function(){d.$menu.data("height",d.$menu.height()),d.$bsContainer.detach()})},setSelected:function(a,b,c){c||(c=this.findLis().eq(this.liObj[a])),c.toggleClass("selected",b)},setDisabled:function(a,b,c){c||(c=this.findLis().eq(this.liObj[a])),b?c.addClass("disabled").children("a").attr("href","#").attr("tabindex",-1):c.removeClass("disabled").children("a").removeAttr("href").attr("tabindex",0)},isDisabled:function(){return this.$element[0].disabled},checkDisabled:function(){var a=this;this.isDisabled()?(this.$newElement.addClass("disabled"),this.$button.addClass("disabled").attr("tabindex",-1)):(this.$button.hasClass("disabled")&&(this.$newElement.removeClass("disabled"),this.$button.remove
Class("disabled")),-1!=this.$button.attr("tabindex")||this.$element.data("tabindex")||this.$button.removeAttr("tabindex")),this.$button.click(function(){return!a.isDisabled()})},tabIndex:function(){this.$element.data("tabindex")!==this.$element.attr("tabindex")&&-98!==this.$element.attr("tabindex")&&"-98"!==this.$element.attr("tabindex")&&(this.$element.data("tabindex",this.$element.attr("tabindex")),this.$button.attr("tabindex",this.$element.data("tabindex"))),this.$element.attr("tabindex",-98)},clickListener:function(){var b=this,c=a(document);this.$newElement.on("touchstart.dropdown",".dropdown-menu",function(a){a.stopPropagation()}),c.data("spaceSelect",!1),this.$button.on("keyup",function(a){/(32)/.test(a.keyCode.toString(10))&&c.data("spaceSelect")&&(a.preventDefault(),c.data("spaceSelect",!1))}),this.$button.on("click",function(){b.setSize(),b.$element.on("shown.bs.select",function(){if(b.options.liveSearch||b.multiple){if(!b.multiple){var a=b.liObj[b.$element[0].selectedInde
x];if("number"!=typeof a||b.options.size===!1)return;var c=b.$lis.eq(a)[0].offsetTop-b.$menuInner[0].offsetTop;c=c-b.$menuInner[0].offsetHeight/2+b.sizeInfo.liHeight/2,b.$menuInner[0].scrollTop=c}}else b.$menuInner.find(".selected a").focus()})}),this.$menuInner.on("click","li a",function(c){var d=a(this),e=d.parent().data("originalIndex"),f=b.$element.val(),g=b.$element.prop("selectedIndex");if(b.multiple&&c.stopPropagation(),c.preventDefault(),!b.isDisabled()&&!d.parent().hasClass("disabled")){var h=b.$element.find("option"),i=h.eq(e),j=i.prop("selected"),k=i.parent("optgroup"),l=b.options.maxOptions,m=k.data("maxOptions")||!1;if(b.multiple){if(i.prop("selected",!j),b.setSelected(e,!j),d.blur(),l!==!1||m!==!1){var n=l<h.filter(":selected").length,o=m<k.find("option:selected").length;if(l&&n||m&&o)if(l&&1==l)h.prop("selected",!1),i.prop("selected",!0),b.$menuInner.find(".selected").removeClass("selected"),b.setSelected(e,!0);else if(m&&1==m){k.find("option:selected").prop("selected
",!1),i.prop("selected",!0);var p=d.parent().data("optgroup");b.$menuInner.find('[data-optgroup="'+p+'"]').removeClass("selected"),b.setSelected(e,!0)}else{var q="function"==typeof b.options.maxOptionsText?b.options.maxOptionsText(l,m):b.options.maxOptionsText,r=q[0].replace("{n}",l),s=q[1].replace("{n}",m),t=a('<div class="notify"></div>');q[2]&&(r=r.replace("{var}",q[2][l>1?0:1]),s=s.replace("{var}",q[2][m>1?0:1])),i.prop("selected",!1),b.$menu.append(t),l&&n&&(t.append(a("<div>"+r+"</div>")),b.$element.trigger("maxReached.bs.select")),m&&o&&(t.append(a("<div>"+s+"</div>")),b.$element.trigger("maxReachedGrp.bs.select")),setTimeout(function(){b.setSelected(e,!1)},10),t.delay(750).fadeOut(300,function(){a(this).remove()})}}}else h.prop("selected",!1),i.prop("selected",!0),b.$menuInner.find(".selected").removeClass("selected"),b.setSelected(e,!0);b.multiple?b.options.liveSearch&&b.$searchbox.focus():b.$button.focus(),(f!=b.$element.val()&&b.multiple||g!=b.$element.prop("selectedIndex
")&&!b.multiple)&&(b.$element.triggerNative("change"),b.$element.trigger("changed.bs.select",[e,i.prop("selected"),j]))}}),this.$menu.on("click","li.disabled a, .popover-title, .popover-title :not(.close)",function(c){c.currentTarget==this&&(c.preventDefault(),c.stopPropagation(),b.options.liveSearch&&!a(c.target).hasClass("close")?b.$searchbox.focus():b.$button.focus())}),this.$menuInner.on("click",".divider, .dropdown-header",function(a){a.preventDefault(),a.stopPropagation(),b.options.liveSearch?b.$searchbox.focus():b.$button.focus()}),this.$menu.on("click",".popover-title .close",function(){b.$button.click()}),this.$searchbox.on("click",function(a){a.stopPropagation()}),this.$menu.on("click",".actions-btn",function(c){b.options.liveSearch?b.$searchbox.focus():b.$button.focus(),c.preventDefault(),c.stopPropagation(),a(this).hasClass("bs-select-all")?b.selectAll():b.deselectAll(),b.$element.triggerNative("change")}),this.$element.change(function(){b.render(!1)})},liveSearchListene
r:function(){var d=this,e=a('<li class="no-results"></li>');this.$button.on("click.dropdown.data-api touchstart.dropdown.data-api",function(){d.$menuInner.find(".active").removeClass("active"),d.$searchbox.val()&&(d.$searchbox.val(""),d.$lis.not(".is-hidden").removeClass("hidden"),e.parent().length&&e.remove()),d.multiple||d.$menuInner.find(".selected").addClass("active"),setTimeout(function(){d.$searchbox.focus()},10)}),this.$searchbox.on("click.dropdown.data-api focus.dropdown.data-api touchend.dropdown.data-api",function(a){a.stopPropagation()}),this.$searchbox.on("input propertychange",function(){if(d.$searchbox.val()){var f=d.$lis.not(".is-hidden").removeClass("hidden").children("a");f=d.options.liveSearchNormalize?f.not(":a"+d._searchStyle()+'("'+b(d.$searchbox.val())+'")'):f.not(":"+d._searchStyle()+'("'+d.$searchbox.val()+'")'),f.parent().addClass("hidden"),d.$lis.filter(".dropdown-header").each(function(){var b=a(this),c=b.data("optgroup");0===d.$lis.filter("[data-optgroup=
"+c+"]").not(b).not(".hidden").length&&(b.addClass("hidden"),d.$lis.filter("[data-optgroup="+c+"div]").addClass("hidden"))});var g=d.$lis.not(".hidden");g.each(function(b){var c=a(this);c.hasClass("divider")&&(c.index()===g.first().index()||c.index()===g.last().index()||g.eq(b+1).hasClass("divider"))&&c.addClass("hidden")}),d.$lis.not(".hidden, .no-results").length?e.parent().length&&e.remove():(e.parent().length&&e.remove(),e.html(d.options.noneResultsText.replace("{0}",'"'+c(d.$searchbox.val())+'"')).show(),d.$menuInner.append(e))}else d.$lis.not(".is-hidden").removeClass("hidden"),e.parent().length&&e.remove();d.$lis.filter(".active").removeClass("active"),d.$searchbox.val()&&d.$lis.not(".hidden, .divider, .dropdown-header").eq(0).addClass("active").children("a").focus(),a(this).focus()})},_searchStyle:function(){var a={begins:"ibegins",startsWith:"ibegins"};return a[this.options.liveSearchStyle]||"icontains"},val:function(a){return"undefined"!=typeof a?(this.$element.val(a),this
.render(),this.$element):this.$element.val()},changeAll:function(b){"undefined"==typeof b&&(b=!0),this.findLis();for(var c=this.$element.find("option"),d=this.$lis.not(".divider, .dropdown-header, .disabled, .hidden").toggleClass("selected",b),e=d.length,f=[],g=0;e>g;g++){var h=d[g].getAttribute("data-original-index");f[f.length]=c.eq(h)[0]}a(f).prop("selected",b),this.render(!1)},selectAll:function(){return this.changeAll(!0)},deselectAll:function(){return this.changeAll(!1)},keydown:function(c){var d,e,f,g,h,i,j,k,l,m=a(this),n=m.is("input")?m.parent().parent():m.parent(),o=n.data("this"),p=":not(.disabled, .hidden, .dropdown-header, .divider)",q={32:" ",48:"0",49:"1",50:"2",51:"3",52:"4",53:"5",54:"6",55:"7",56:"8",57:"9",59:";",65:"a",66:"b",67:"c",68:"d",69:"e",70:"f",71:"g",72:"h",73:"i",74:"j",75:"k",76:"l",77:"m",78:"n",79:"o",80:"p",81:"q",82:"r",83:"s",84:"t",85:"u",86:"v",87:"w",88:"x",89:"y",90:"z",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"
9"};if(o.options.liveSearch&&(n=m.parent().parent()),o.options.container&&(n=o.$menu),d=a("[role=menu] li",n),l=o.$newElement.hasClass("open"),!l&&(c.keyCode>=48&&c.keyCode<=57||c.keyCode>=96&&c.keyCode<=105||c.keyCode>=65&&c.keyCode<=90)&&(o.options.container?o.$button.trigger("click"):(o.setSize(),o.$menu.parent().addClass("open"),l=!0),o.$searchbox.focus()),o.options.liveSearch&&(/(^9$|27)/.test(c.keyCode.toString(10))&&l&&0===o.$menu.find(".active").length&&(c.preventDefault(),o.$menu.parent().removeClass("open"),o.options.container&&o.$newElement.removeClass("open"),o.$button.focus()),d=a("[role=menu] li"+p,n),m.val()||/(38|40)/.test(c.keyCode.toString(10))||0===d.filter(".active").length&&(d=o.$menuInner.find("li"),d=o.options.liveSearchNormalize?d.filter(":a"+o._searchStyle()+"("+b(q[c.keyCode])+")"):d.filter(":"+o._searchStyle()+"("+q[c.keyCode]+")"))),d.length){if(/(38|40)/.test(c.keyCode.toString(10)))e=d.index(d.find("a").filter(":focus").parent()),g=d.filter(p).first().i
ndex(),h=d.filter(p).last().index(),f=d.eq(e).nextAll(p).eq(0).index(),i=d.eq(e).prevAll(p).eq(0).index(),j=d.eq(f).prevAll(p).eq(0).index(),o.options.liveSearch&&(d.each(function(b){a(this).hasClass("disabled")||a(this).data("index",b)}),e=d.index(d.filter(".active")),g=d.first().data("index"),h=d.last().data("index"),f=d.eq(e).nextAll().eq(0).data("index"),i=d.eq(e).prevAll().eq(0).data("index"),j=d.eq(f).prevAll().eq(0).data("index")),k=m.data("prevIndex"),38==c.keyCode?(o.options.liveSearch&&e--,e!=j&&e>i&&(e=i),g>e&&(e=g),e==k&&(e=h)):40==c.keyCode&&(o.options.liveSearch&&e++,-1==e&&(e=0),e!=j&&f>e&&(e=f),e>h&&(e=h),e==k&&(e=g)),m.data("prevIndex",e),o.options.liveSearch?(c.preventDefault(),m.hasClass("dropdown-toggle")||(d.removeClass("active").eq(e).addClass("active").children("a").focus(),m.focus())):d.eq(e).children("a").focus();else if(!m.is("input")){var r,s,t=[];d.each(function(){a(this).hasClass("disabled")||a.trim(a(this).children("a").text().toLowerCase()).substring(0
,1)==q[c.keyCode]&&t.push(a(this).index())}),r=a(document).data("keycount"),r++,a(document).data("keycount",r),s=a.trim(a(":focus").text().toLowerCase()).substring(0,1),s!=q[c.keyCode]?(r=1,a(document).data("keycount",r)):r>=t.length&&(a(document).data("keycount",0),r>t.length&&(r=1)),d.eq(t[r-1]).children("a").focus()}if((/(13|32)/.test(c.keyCode.toString(10))||/(^9$)/.test(c.keyCode.toString(10))&&o.options.selectOnTab)&&l){if(/(32)/.test(c.keyCode.toString(10))||c.preventDefault(),o.options.liveSearch)/(32)/.test(c.keyCode.toString(10))||(o.$menuInner.find(".active a").click(),m.focus());else{var u=a(":focus");u.click(),u.focus(),c.preventDefault(),a(document).data("spaceSelect",!0)}a(document).data("keycount",0)}(/(^9$|27)/.test(c.keyCode.toString(10))&&l&&(o.multiple||o.options.liveSearch)||/(27)/.test(c.keyCode.toString(10))&&!l)&&(o.$menu.parent().removeClass("open"),o.options.container&&o.$newElement.removeClass("open"),o.$button.focus())}},mobile:function(){this.$element.ad
dClass("mobile-device")},refresh:function(){this.$lis=null,this.liObj={},this.reloadLi(),this.render(),this.checkDisabled(),this.liHeight(!0),this.setStyle(),this.setWidth(),this.$lis&&this.$searchbox.trigger("propertychange"),this.$element.trigger("refreshed.bs.select")},hide:function(){this.$newElement.hide()},show:function(){this.$newElement.show()},remove:function(){this.$newElement.remove(),this.$element.remove()},destroy:function(){this.$newElement.remove(),this.$bsContainer?this.$bsContainer.remove():this.$menu.remove(),this.$element.off(".bs.select").removeData("selectpicker").removeClass("bs-select-hidden selectpicker")}};var f=a.fn.selectpicker;a.fn.selectpicker=d,a.fn.selectpicker.Constructor=e,a.fn.selectpicker.noConflict=function(){return a.fn.selectpicker=f,this},a(document).data("keycount",0).on("keydown.bs.select",'.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input',e.prototype.keydown).on("focusin.modal",'.bootstrap-select
[data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input',function(a){a.stopPropagation()}),a(window).on("load.bs.select.data-api",function(){a(".selectpicker").each(function(){var b=a(this);d.call(b,b.data())})})}(a)});
+//# sourceMappingURL=bootstrap-select.js.map
\ No newline at end of file
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-ar_AR.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-ar_AR.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-ar_AR.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,49 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function (jQuery) {
+
+/*!
+ * Translated default messages for bootstrap-select.
+ * Locale: AR (Arabic)
+ * Author: Yasser Lotfy <y_l at alive.com>
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'لم يتم إختيار شئ',
+ noneResultsText: 'لا توجد نتائج مطابقة لـ {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ return (numSelected == 1) ? "{0} خيار تم إختياره" : "{0} خيارات تمت إختيارها";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ (numAll == 1) ? 'تخطى الحد المسموح ({n} خيار بحد أقصى)' : 'تخطى الحد المسموح ({n} خيارات بحد أقصى)',
+ (numGroup == 1) ? 'تخطى الحد المسموح للمجموعة ({n} خيار بحد أقصى)' : 'تخطى الحد المسموح للمجموعة ({n} خيارات بحد أقصى)'
+ ];
+ },
+ selectAllText: 'إختيار الجميع',
+ deselectAllText: 'إلغاء إختيار الجميع',
+ multipleSeparator: '، '
+ };
+})(jQuery);
+
+
+}));
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-ar_AR.min.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-ar_AR.min.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-ar_AR.min.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,12 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){/*!
+ * Translated default messages for bootstrap-select.
+ * Locale: AR (Arabic)
+ * Author: Yasser Lotfy <y_l at alive.com>
+ */
+!function(a){a.fn.selectpicker.defaults={noneSelectedText:"لم يتم إختيار شئ",noneResultsText:"لا توجد نتائج مطابقة لـ {0}",countSelectedText:function(a,b){return 1==a?"{0} خيار تم إختياره":"{0} خيارات تمت إختيارها"},maxOptionsText:function(a,b){return[1==a?"تخطى الحد المسموح ({n} خيار بحد أقصى)":"تخطى الحد المسموح ({n} خيارات بحد أقصى)",1==b?"تخطى الحد المسموح للمجموعة ({n} خيار بحد أقصى)":"تخطى الحد المسموح للمجموعة ({n} خيارات بحد أقصى)"]},selectAllText:"إختيار الجميع",deselectAllText:"إلغاء إختيار الجميع",multipleSeparator:"، "}}(a)});
\ No newline at end of file
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-bg_BG.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-bg_BG.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-bg_BG.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,44 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function (jQuery) {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Нищо избрано',
+ noneResultsText: 'Няма резултат за {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ return (numSelected == 1) ? "{0} избран елемент" : "{0} избрани елемента";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ (numAll == 1) ? 'Лимита е достигнат ({n} елемент максимум)' : 'Лимита е достигнат ({n} елемента максимум)',
+ (numGroup == 1) ? 'Груповия лимит е достигнат ({n} елемент максимум)' : 'Груповия лимит е достигнат ({n} елемента максимум)'
+ ];
+ },
+ selectAllText: 'Избери всички',
+ deselectAllText: 'Размаркирай всички',
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-bg_BG.min.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-bg_BG.min.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-bg_BG.min.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Нищо избрано",noneResultsText:"Няма резултат за {0}",countSelectedText:function(a,b){return 1==a?"{0} избран елемент":"{0} избрани елемента"},maxOptionsText:function(a,b){return[1==a?"Лимита е достигнат ({n} елемент максимум)":"Лимита е достигнат ({n} елемента максимум)",1==b?"Груповия лимит е достигнат ({n} елемент максимум)":"Груповия лимит е достигнат ({n} елемента максимум)"]},selectAllText:"Избери всички",deselectAllText:"Размаркирай всички",multipleSeparator:", "}}(a)});
\ No newline at end of file
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-cs_CZ.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-cs_CZ.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-cs_CZ.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,35 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function (jQuery) {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Nic není vybráno',
+ noneResultsText: 'Žádné výsledky {0}',
+ countSelectedText: 'Označeno {0} z {1}',
+ maxOptionsText: ['Limit překročen ({n} {var} max)', 'Limit skupiny překročen ({n} {var} max)', ['položek', 'položka']],
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-cs_CZ.min.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-cs_CZ.min.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-cs_CZ.min.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nic není vybráno",noneResultsText:"Žádné výsledky {0}",countSelectedText:"Označeno {0} z {1}",maxOptionsText:["Limit překročen ({n} {var} max)","Limit skupiny překročen ({n} {var} max)",["položek","položka"]],multipleSeparator:", "}}(a)});
\ No newline at end of file
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-da_DK.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-da_DK.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-da_DK.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,44 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function (jQuery) {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Intet valgt',
+ noneResultsText: 'Ingen resultater fundet {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ return (numSelected == 1) ? "{0} valgt" : "{0} valgt";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ (numAll == 1) ? 'Begrænsning nået (max {n} valgt)' : 'Begrænsning nået (max {n} valgte)',
+ (numGroup == 1) ? 'Gruppe-begrænsning nået (max {n} valgt)' : 'Gruppe-begrænsning nået (max {n} valgte)'
+ ];
+ },
+ selectAllText: 'Markér alle',
+ deselectAllText: 'Afmarkér alle',
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-da_DK.min.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-da_DK.min.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-da_DK.min.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Intet valgt",noneResultsText:"Ingen resultater fundet {0}",countSelectedText:function(a,b){return"{0} valgt"},maxOptionsText:function(a,b){return[1==a?"Begrænsning nået (max {n} valgt)":"Begrænsning nået (max {n} valgte)",1==b?"Gruppe-begrænsning nået (max {n} valgt)":"Gruppe-begrænsning nået (max {n} valgte)"]},selectAllText:"Markér alle",deselectAllText:"Afmarkér alle",multipleSeparator:", "}}(a)});
\ No newline at end of file
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-de_DE.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-de_DE.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-de_DE.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,35 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function (jQuery) {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Bitte wählen...',
+ noneResultsText: 'Keine Ergebnisse für {0}',
+ countSelectedText: '{0} von {1} ausgewählt',
+ maxOptionsText: ['Limit erreicht ({n} {var} max.)', 'Gruppen-Limit erreicht ({n} {var} max.)', ['Eintrag', 'Einträge']],
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-de_DE.min.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-de_DE.min.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-de_DE.min.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Bitte wählen...",noneResultsText:"Keine Ergebnisse für {0}",countSelectedText:"{0} von {1} ausgewählt",maxOptionsText:["Limit erreicht ({n} {var} max.)","Gruppen-Limit erreicht ({n} {var} max.)",["Eintrag","Einträge"]],multipleSeparator:", "}}(a)});
\ No newline at end of file
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-en_US.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-en_US.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-en_US.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,44 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function (jQuery) {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Nothing selected',
+ noneResultsText: 'No results match {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ return (numSelected == 1) ? "{0} item selected" : "{0} items selected";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ (numAll == 1) ? 'Limit reached ({n} item max)' : 'Limit reached ({n} items max)',
+ (numGroup == 1) ? 'Group limit reached ({n} item max)' : 'Group limit reached ({n} items max)'
+ ];
+ },
+ selectAllText: 'Select All',
+ deselectAllText: 'Deselect All',
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-en_US.min.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-en_US.min.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-en_US.min.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nothing selected",noneResultsText:"No results match {0}",countSelectedText:function(a,b){return 1==a?"{0} item selected":"{0} items selected"},maxOptionsText:function(a,b){return[1==a?"Limit reached ({n} item max)":"Limit reached ({n} items max)",1==b?"Group limit reached ({n} item max)":"Group limit reached ({n} items max)"]},selectAllText:"Select All",deselectAllText:"Deselect All",multipleSeparator:", "}}(a)});
\ No newline at end of file
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-es_CL.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-es_CL.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-es_CL.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,35 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function (jQuery) {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'No hay selección',
+ noneResultsText: 'No hay resultados {0}',
+ countSelectedText: 'Seleccionados {0} de {1}',
+ maxOptionsText: ['Límite alcanzado ({n} {var} max)', 'Límite del grupo alcanzado({n} {var} max)', ['elementos', 'element']],
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-es_CL.min.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-es_CL.min.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-es_CL.min.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"No hay selección",noneResultsText:"No hay resultados {0}",countSelectedText:"Seleccionados {0} de {1}",maxOptionsText:["Límite alcanzado ({n} {var} max)","Límite del grupo alcanzado({n} {var} max)",["elementos","element"]],multipleSeparator:", "}}(a)});
\ No newline at end of file
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-eu.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-eu.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-eu.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,35 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function (jQuery) {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Hautapenik ez',
+ noneResultsText: 'Emaitzarik ez {0}',
+ countSelectedText: '{1}(e)tik {0} hautatuta',
+ maxOptionsText: ['Mugara iritsita ({n} {var} gehienez)', 'Taldearen mugara iritsita ({n} {var} gehienez)', ['elementu', 'elementu']],
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-eu.min.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-eu.min.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-eu.min.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Hautapenik ez",noneResultsText:"Emaitzarik ez {0}",countSelectedText:"{1}(e)tik {0} hautatuta",maxOptionsText:["Mugara iritsita ({n} {var} gehienez)","Taldearen mugara iritsita ({n} {var} gehienez)",["elementu","elementu"]],multipleSeparator:", "}}(a)});
\ No newline at end of file
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-fa_IR.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-fa_IR.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-fa_IR.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,37 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function (jQuery) {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'چیزی انتخاب نشده است',
+ noneResultsText: 'هیج مشابهی برای {0} پیدا نشد',
+ countSelectedText: "{0} از {1} مورد انتخاب شده",
+ maxOptionsText: ['بیشتر ممکن نیست {حداکثر {n} عدد}', 'بیشتر ممکن نیست {حداکثر {n} عدد}'],
+ selectAllText: 'انتخاب همه',
+ deselectAllText: 'انتخاب هیچ کدام',
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-fa_IR.min.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-fa_IR.min.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-fa_IR.min.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"چیزی انتخاب نشده است",noneResultsText:"هیج مشابهی برای {0} پیدا نشد",countSelectedText:"{0} از {1} مورد انتخاب شده",maxOptionsText:["بیشتر ممکن نیست {حداکثر {n} عدد}","بیشتر ممکن نیست {حداکثر {n} عدد}"],selectAllText:"انتخاب همه",deselectAllText:"انتخاب هیچ کدام",multipleSeparator:", "}}(a)});
\ No newline at end of file
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-fi_FI.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-fi_FI.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-fi_FI.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,44 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function (jQuery) {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Ei valintoja',
+ noneResultsText: 'Ei hakutuloksia {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ return (numSelected == 1) ? "{0} valittu" : "{0} valitut";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ (numAll == 1) ? 'Valintojen maksimimäärä ({n} saavutettu)' : 'Valintojen maksimimäärä ({n} saavutettu)',
+ (numGroup == 1) ? 'Ryhmän maksimimäärä ({n} saavutettu)' : 'Ryhmän maksimimäärä ({n} saavutettu)'
+ ];
+ },
+ selectAllText: 'Valitse kaikki',
+ deselectAllText: 'Poista kaikki',
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-fi_FI.min.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-fi_FI.min.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-fi_FI.min.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Ei valintoja",noneResultsText:"Ei hakutuloksia {0}",countSelectedText:function(a,b){return 1==a?"{0} valittu":"{0} valitut"},maxOptionsText:function(a,b){return["Valintojen maksimimäärä ({n} saavutettu)","Ryhmän maksimimäärä ({n} saavutettu)"]},selectAllText:"Valitse kaikki",deselectAllText:"Poista kaikki",multipleSeparator:", "}}(a)});
\ No newline at end of file
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-fr_FR.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-fr_FR.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-fr_FR.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,42 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function (jQuery) {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Aucune sélection',
+ noneResultsText: 'Aucun résultat pour {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ return (numSelected > 1) ? "{0} éléments sélectionnés" : "{0} élément sélectionné";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ (numAll > 1) ? 'Limite atteinte ({n} éléments max)' : 'Limite atteinte ({n} élément max)',
+ (numGroup > 1) ? 'Limite du groupe atteinte ({n} éléments max)' : 'Limite du groupe atteinte ({n} élément max)'
+ ];
+ },
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-fr_FR.min.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-fr_FR.min.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-fr_FR.min.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Aucune sélection",noneResultsText:"Aucun résultat pour {0}",countSelectedText:function(a,b){return a>1?"{0} éléments sélectionnés":"{0} élément sélectionné"},maxOptionsText:function(a,b){return[a>1?"Limite atteinte ({n} éléments max)":"Limite atteinte ({n} élément max)",b>1?"Limite du groupe atteinte ({n} éléments max)":"Limite du groupe atteinte ({n} élément max)"]},multipleSeparator:", "}}(a)});
\ No newline at end of file
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-hu_HU.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-hu_HU.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-hu_HU.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,44 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function (jQuery) {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Válasszon!',
+ noneResultsText: 'Nincs találat {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ return '{0} elem kiválasztva';
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ 'Legfeljebb {n} elem választható',
+ 'A csoportban legfeljebb {n} elem választható'
+ ];
+ },
+ selectAllText: 'Mind',
+ deselectAllText: 'Egyik sem',
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-hu_HU.min.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-hu_HU.min.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-hu_HU.min.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Válasszon!",noneResultsText:"Nincs találat {0}",countSelectedText:function(a,b){return"{0} elem kiválasztva"},maxOptionsText:function(a,b){return["Legfeljebb {n} elem választható","A csoportban legfeljebb {n} elem választható"]},selectAllText:"Mind",deselectAllText:"Egyik sem",multipleSeparator:", "}}(a)});
\ No newline at end of file
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-id_ID.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-id_ID.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-id_ID.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,37 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function (jQuery) {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Tidak ada yang dipilih',
+ noneResultsText: 'Tidak ada yang cocok {0}',
+ countSelectedText: '{0} terpilih',
+ maxOptionsText: ['Mencapai batas (maksimum {n})', 'Mencapai batas grup (maksimum {n})'],
+ selectAllText: 'Pilih Semua',
+ deselectAllText: 'Hapus Semua',
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-id_ID.min.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-id_ID.min.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-id_ID.min.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Tidak ada yang dipilih",noneResultsText:"Tidak ada yang cocok {0}",countSelectedText:"{0} terpilih",maxOptionsText:["Mencapai batas (maksimum {n})","Mencapai batas grup (maksimum {n})"],selectAllText:"Pilih Semua",deselectAllText:"Hapus Semua",multipleSeparator:", "}}(a)});
\ No newline at end of file
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-it_IT.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-it_IT.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-it_IT.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,35 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function (jQuery) {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Nessuna selezione',
+ noneResultsText: 'Nessun risultato per {0}',
+ countSelectedText: 'Selezionati {0} di {1}',
+ maxOptionsText: ['Limite raggiunto ({n} {var} max)', 'Limite del gruppo raggiunto ({n} {var} max)', ['elementi', 'elemento']],
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-it_IT.min.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-it_IT.min.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-it_IT.min.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nessuna selezione",noneResultsText:"Nessun risultato per {0}",countSelectedText:"Selezionati {0} di {1}",maxOptionsText:["Limite raggiunto ({n} {var} max)","Limite del gruppo raggiunto ({n} {var} max)",["elementi","elemento"]],multipleSeparator:", "}}(a)});
\ No newline at end of file
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-ko_KR.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-ko_KR.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-ko_KR.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,44 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function (jQuery) {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: '항목을 선택해주세요',
+ noneResultsText: '{0} 검색 결과가 없습니다',
+ countSelectedText: function (numSelected, numTotal) {
+ return "{0}개를 선택하였습니다";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ '{n}개까지 선택 가능합니다',
+ '해당 그룹은 {n}개까지 선택 가능합니다'
+ ];
+ },
+ selectAllText: '전체선택',
+ deselectAllText: '전체해제',
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-ko_KR.min.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-ko_KR.min.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-ko_KR.min.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"항목을 선택해주세요",noneResultsText:"{0} 검색 결과가 없습니다",countSelectedText:function(a,b){return"{0}개를 선택하였습니다"},maxOptionsText:function(a,b){return["{n}개까지 선택 가능합니다","해당 그룹은 {n}개까지 선택 가능합니다"]},selectAllText:"전체선택",deselectAllText:"전체해제",multipleSeparator:", "}}(a)});
\ No newline at end of file
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-nb_NO.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-nb_NO.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-nb_NO.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,70 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function (jQuery) {
+
+/*!
+ * Bootstrap-select v1.8.1 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function (jQuery) {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Ingen valgt',
+ noneResultsText: 'Søket gir ingen treff {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ return (numSelected == 1) ? "{0} alternativ valgt" : "{0} alternativer valgt";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ (numAll == 1) ? 'Grense nådd (maks {n} valg)' : 'Grense nådd (maks {n} valg)',
+ (numGroup == 1) ? 'Grense for grupper nådd (maks {n} grupper)' : 'Grense for grupper nådd (maks {n} grupper)'
+ ];
+ },
+ selectAllText: 'Merk alle',
+ deselectAllText: 'Fjern alle',
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
+
+
+}));
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-nb_NO.min.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-nb_NO.min.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-nb_NO.min.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,13 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){/*!
+ * Bootstrap-select v1.8.1 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(b,c){"function"==typeof define&&define.amd?define(["jquery"],function(a){return c(a)}):"object"==typeof exports?module.exports=c(require("jquery")):c(a)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Ingen valgt",noneResultsText:"Søket gir ingen treff {0}",countSelectedText:function(a,b){return 1==a?"{0} alternativ valgt":"{0} alternativer valgt"},maxOptionsText:function(a,b){return["Grense nådd (maks {n} valg)","Grense for grupper nådd (maks {n} grupper)"]},selectAllText:"Merk alle",deselectAllText:"Fjern alle",multipleSeparator:", "}}(a)})});
\ No newline at end of file
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-nl_NL.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-nl_NL.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-nl_NL.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,35 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function (jQuery) {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Niets geselecteerd',
+ noneResultsText: 'Geen resultaten gevonden voor {0}',
+ countSelectedText: '{0} van {1} geselecteerd',
+ maxOptionsText: ['Limiet bereikt ({n} {var} max)', 'Groep limiet bereikt ({n} {var} max)', ['items', 'item']],
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-nl_NL.min.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-nl_NL.min.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-nl_NL.min.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Niets geselecteerd",noneResultsText:"Geen resultaten gevonden voor {0}",countSelectedText:"{0} van {1} geselecteerd",maxOptionsText:["Limiet bereikt ({n} {var} max)","Groep limiet bereikt ({n} {var} max)",["items","item"]],multipleSeparator:", "}}(a)});
\ No newline at end of file
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-pl_PL.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-pl_PL.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-pl_PL.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,37 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function (jQuery) {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Nic nie zaznaczono',
+ noneResultsText: 'Brak wyników wyszukiwania {0}',
+ countSelectedText: 'Zaznaczono {0} z {1}',
+ maxOptionsText: ['Osiągnięto limit ({n} {var} max)', 'Limit grupy osiągnięty ({n} {var} max)', ['elementy', 'element']],
+ selectAll: 'Zaznacz wszystkie',
+ deselectAll: 'Odznacz wszystkie',
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-pl_PL.min.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-pl_PL.min.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-pl_PL.min.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nic nie zaznaczono",noneResultsText:"Brak wyników wyszukiwania {0}",countSelectedText:"Zaznaczono {0} z {1}",maxOptionsText:["Osiągnięto limit ({n} {var} max)","Limit grupy osiągnięty ({n} {var} max)",["elementy","element"]],selectAll:"Zaznacz wszystkie",deselectAll:"Odznacz wszystkie",multipleSeparator:", "}}(a)});
\ No newline at end of file
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-pt_BR.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-pt_BR.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-pt_BR.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,35 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function (jQuery) {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Nada selecionado',
+ noneResultsText: 'Nada encontrado contendo {0}',
+ countSelectedText: 'Selecionado {0} de {1}',
+ maxOptionsText: ['Limite excedido (máx. {n} {var})', 'Limite do grupo excedido (máx. {n} {var})', ['itens', 'item']],
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-pt_BR.min.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-pt_BR.min.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-pt_BR.min.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nada selecionado",noneResultsText:"Nada encontrado contendo {0}",countSelectedText:"Selecionado {0} de {1}",maxOptionsText:["Limite excedido (máx. {n} {var})","Limite do grupo excedido (máx. {n} {var})",["itens","item"]],multipleSeparator:", "}}(a)});
\ No newline at end of file
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-pt_PT.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-pt_PT.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-pt_PT.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,35 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function (jQuery) {
+
+(function ($) {
+$.fn.selectpicker.defaults = {
+noneSelectedText: 'Nenhum seleccionado',
+noneResultsText: 'Sem resultados contendo {0}',
+countSelectedText: 'Selecionado {0} de {1}',
+maxOptionsText: ['Limite ultrapassado (máx. {n} {var})', 'Limite de seleções ultrapassado (máx. {n} {var})', ['itens', 'item']],
+multipleSeparator: ', '
+};
+})(jQuery);
+
+
+}));
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-pt_PT.min.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-pt_PT.min.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-pt_PT.min.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nenhum seleccionado",noneResultsText:"Sem resultados contendo {0}",countSelectedText:"Selecionado {0} de {1}",maxOptionsText:["Limite ultrapassado (máx. {n} {var})","Limite de seleções ultrapassado (máx. {n} {var})",["itens","item"]],multipleSeparator:", "}}(a)});
\ No newline at end of file
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-ro_RO.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-ro_RO.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-ro_RO.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,35 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function (jQuery) {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Nu a fost selectat nimic',
+ noneResultsText: 'Nu exista niciun rezultat {0}',
+ countSelectedText: '{0} din {1} selectat(e)',
+ maxOptionsText: ['Limita a fost atinsa ({n} {var} max)', 'Limita de grup a fost atinsa ({n} {var} max)', ['iteme', 'item']],
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-ro_RO.min.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-ro_RO.min.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-ro_RO.min.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nu a fost selectat nimic",noneResultsText:"Nu exista niciun rezultat {0}",countSelectedText:"{0} din {1} selectat(e)",maxOptionsText:["Limita a fost atinsa ({n} {var} max)","Limita de grup a fost atinsa ({n} {var} max)",["iteme","item"]],multipleSeparator:", "}}(a)});
\ No newline at end of file
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-ru_RU.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-ru_RU.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-ru_RU.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,36 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function (jQuery) {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Ничего не выбрано',
+ noneResultsText: 'Совпадений не найдено {0}',
+ countSelectedText: 'Выбрано {0} из {1}',
+ maxOptionsText: ['Достигнут предел ({n} {var} максимум)', 'Достигнут предел в группе ({n} {var} максимум)', ['items', 'item']],
+ doneButtonText: 'Закрыть',
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-ru_RU.min.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-ru_RU.min.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-ru_RU.min.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Ничего не выбрано",noneResultsText:"Совпадений не найдено {0}",countSelectedText:"Выбрано {0} из {1}",maxOptionsText:["Достигнут предел ({n} {var} максимум)","Достигнут предел в группе ({n} {var} максимум)",["items","item"]],doneButtonText:"Закрыть",multipleSeparator:", "}}(a)});
\ No newline at end of file
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-sk_SK.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-sk_SK.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-sk_SK.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,37 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function (jQuery) {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Vyberte zo zoznamu',
+ noneResultsText: 'Pre výraz {0} neboli nájdené žiadne výsledky',
+ countSelectedText: 'Vybrané {0} z {1}',
+ maxOptionsText: ['Limit prekročený ({n} {var} max)', 'Limit skupiny prekročený ({n} {var} max)', ['položiek', 'položka']],
+ selectAllText: 'Vybrať všetky',
+ deselectAllText: 'Zrušiť výber',
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-sk_SK.min.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-sk_SK.min.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-sk_SK.min.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Vyberte zo zoznamu",noneResultsText:"Pre výraz {0} neboli nájdené žiadne výsledky",countSelectedText:"Vybrané {0} z {1}",maxOptionsText:["Limit prekročený ({n} {var} max)","Limit skupiny prekročený ({n} {var} max)",["položiek","položka"]],selectAllText:"Vybrať všetky",deselectAllText:"Zrušiť výber",multipleSeparator:", "}}(a)});
\ No newline at end of file
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-sl_SI.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-sl_SI.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-sl_SI.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,44 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function (jQuery) {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Nič izbranega',
+ noneResultsText: 'Ni zadetkov za {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ "Število izbranih: {0}";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ 'Omejitev dosežena (max. izbranih: {n})',
+ 'Omejitev skupine dosežena (max. izbranih: {n})'
+ ];
+ },
+ selectAllText: 'Izberi vse',
+ deselectAllText: 'Počisti izbor',
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-sl_SI.min.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-sl_SI.min.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-sl_SI.min.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nič izbranega",noneResultsText:"Ni zadetkov za {0}",countSelectedText:function(a,b){"Število izbranih: {0}"},maxOptionsText:function(a,b){return["Omejitev dosežena (max. izbranih: {n})","Omejitev skupine dosežena (max. izbranih: {n})"]},selectAllText:"Izberi vse",deselectAllText:"Počisti izbor",multipleSeparator:", "}}(a)});
\ No newline at end of file
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-sv_SE.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-sv_SE.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-sv_SE.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,44 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function (jQuery) {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Inget valt',
+ noneResultsText: 'Inget sökresultat matchar {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ return (numSelected === 1) ? "{0} alternativ valt" : "{0} alternativ valda";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ 'Gräns uppnåd (max {n} alternativ)',
+ 'Gräns uppnåd (max {n} gruppalternativ)'
+ ];
+ },
+ selectAllText: 'Markera alla',
+ deselectAllText: 'Avmarkera alla',
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-sv_SE.min.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-sv_SE.min.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-sv_SE.min.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Inget valt",noneResultsText:"Inget sökresultat matchar {0}",countSelectedText:function(a,b){return 1===a?"{0} alternativ valt":"{0} alternativ valda"},maxOptionsText:function(a,b){return["Gräns uppnåd (max {n} alternativ)","Gräns uppnåd (max {n} gruppalternativ)"]},selectAllText:"Markera alla",deselectAllText:"Avmarkera alla",multipleSeparator:", "}}(a)});
\ No newline at end of file
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-tr_TR.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-tr_TR.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-tr_TR.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,44 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function (jQuery) {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Hiçbiri seçilmedi',
+ noneResultsText: 'Hiçbir sonuç bulunamadı {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ return (numSelected == 1) ? "{0} öğe seçildi" : "{0} öğe seçildi";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ (numAll == 1) ? 'Limit aşıldı (maksimum {n} sayıda öğe )' : 'Limit aşıldı (maksimum {n} sayıda öğe)',
+ (numGroup == 1) ? 'Grup limiti aşıldı (maksimum {n} sayıda öğe)' : 'Grup limiti aşıldı (maksimum {n} sayıda öğe)'
+ ];
+ },
+ selectAllText: 'Tümünü Seç',
+ deselectAllText: 'Seçiniz',
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-tr_TR.min.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-tr_TR.min.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-tr_TR.min.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Hiçbiri seçilmedi",noneResultsText:"Hiçbir sonuç bulunamadı {0}",countSelectedText:function(a,b){return"{0} öğe seçildi"},maxOptionsText:function(a,b){return[1==a?"Limit aşıldı (maksimum {n} sayıda öğe )":"Limit aşıldı (maksimum {n} sayıda öğe)","Grup limiti aşıldı (maksimum {n} sayıda öğe)"]},selectAllText:"Tümünü Seç",deselectAllText:"Seçiniz",multipleSeparator:", "}}(a)});
\ No newline at end of file
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-ua_UA.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-ua_UA.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-ua_UA.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,35 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function (jQuery) {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Нічого не вибрано',
+ noneResultsText: 'Збігів не знайдено {0}',
+ countSelectedText: 'Вибрано {0} із {1}',
+ maxOptionsText: ['Досягнута межа ({n} {var} максимум)', 'Досягнута межа в групі ({n} {var} максимум)', ['items', 'item']],
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-ua_UA.min.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-ua_UA.min.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-ua_UA.min.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Нічого не вибрано",noneResultsText:"Збігів не знайдено {0}",countSelectedText:"Вибрано {0} із {1}",maxOptionsText:["Досягнута межа ({n} {var} максимум)","Досягнута межа в групі ({n} {var} максимум)",["items","item"]],multipleSeparator:", "}}(a)});
\ No newline at end of file
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-zh_CN.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-zh_CN.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-zh_CN.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,35 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function (jQuery) {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: '没有选中任何项',
+ noneResultsText: '没有找到匹配项',
+ countSelectedText: '选中{1}中的{0}项',
+ maxOptionsText: ['超出限制 (最多选择{n}项)', '组选择超出限制(最多选择{n}组)'],
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-zh_CN.min.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-zh_CN.min.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-zh_CN.min.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"没有选中任何项",noneResultsText:"没有找到匹配项",countSelectedText:"选中{1}中的{0}项",maxOptionsText:["超出限制 (最多选择{n}项)","组选择超出限制(最多选择{n}组)"],multipleSeparator:", "}}(a)});
\ No newline at end of file
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-zh_TW.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-zh_TW.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-zh_TW.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,37 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function (jQuery) {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: '沒有選取任何項目',
+ noneResultsText: '沒有找到符合的結果',
+ countSelectedText: '已經選取{0}個項目',
+ maxOptionsText: ['超過限制 (最多選擇{n}項)', '超過限制(最多選擇{n}組)'],
+ selectAllText: '選取全部',
+ deselectAllText: '全部取消',
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-zh_TW.min.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-zh_TW.min.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/dist/js/i18n/defaults-zh_TW.min.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-select v1.9.3 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"沒有選取任何項目",noneResultsText:"沒有找到符合的結果",countSelectedText:"已經選取{0}個項目",maxOptionsText:["超過限制 (最多選擇{n}項)","超過限制(最多選擇{n}組)"],selectAllText:"選取全部",deselectAllText:"全部取消",multipleSeparator:", "}}(a)});
\ No newline at end of file
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/custom_theme/base.html
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/custom_theme/base.html (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/custom_theme/base.html 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,88 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ {% if page_description %}<meta name="description" content="{{ page_description }}">{% endif %}
+ {% if site_author %}<meta name="author" content="{{ site_author }}">{% endif %}
+ {% if canonical_url %}<link rel="canonical" href="{{ canonical_url }}">{% endif %}
+ {% if favicon %}<link rel="shortcut icon" href="{{ favicon }}">
+ {% else %}<link rel="shortcut icon" href="{{ base_url }}/img/favicon.ico">{% endif %}
+
+ <title>{% if page_title %}{{ page_title }} - {% endif %}{{ site_name }}</title>
+
+ <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet">
+ <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet">
+ <link href="{{ base_url }}/css/highlight.css" rel="stylesheet">
+ <link href="{{ base_url }}/css/base.css" rel="stylesheet">
+ <link href="//cdnjs.cloudflare.com/ajax/libs/bootstrap-select/{{ config.extra.version }}/css/bootstrap-select.min.css" rel="stylesheet">
+ {%- for path in extra_css %}
+ <link href="{{ path }}" rel="stylesheet">
+ {%- endfor %}
+
+ <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
+ <!--[if lt IE 9]>
+ <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
+ <script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
+ <![endif]-->
+</head>
+
+<body>
+
+{% include "nav.html" %}
+
+{% if current_page and current_page.is_homepage %}
+<div class="jumbotron bs-docs-header">
+ <div class="container text-center">
+ <h1>bootstrap-select</h1>
+ <p class="lead">Bootstrap-select is a jQuery plugin that utilizes Bootstrap's dropdown.js to style and bring additional functionality to normal select boxes.</p>
+ <a class="btn btn-outline-inverse btn-lg" href="//github.com/silviomoreto/bootstrap-select/archive/v{{ config.extra.version }}.zip" role="button">
+ <i class="fa fa-download"></i> Download (v{{ config.extra.version }})
+ </a>
+ </div>
+</div>
+<div class="container">
+{% include "content.html" %}
+</div>
+{% else %}
+<div class="container">
+ <div class="col-md-3">{% include "toc.html" %}</div>
+ <div class="col-md-9" role="main">{% include "content.html" %}</div>
+</div>
+{% endif %}
+
+ <div class="footer">
+ <div class="container text-center">
+ <p class="text-muted">Bootstrap-select is maintained by <a href="https://github.com/caseyjhol">caseyjhol</a>,
+ <a href="https://github.com/t0xicCode">t0xicCode</a>, and the community.</p>
+ </div>
+ </div>
+
+<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
+<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
+<script src="{{ base_url }}/js/highlight.pack.js"></script>
+<script src="{{ base_url }}/js/base.js"></script>
+<script src="//cdnjs.cloudflare.com/ajax/libs/bootstrap-select/{{ config.extra.version }}/js/bootstrap-select.min.js"></script>
+{%- for path in extra_javascript %}
+<script src="{{ path }}"></script>
+{%- endfor %}
+
+{% if google_analytics %}
+<script type="text/javascript">
+ var _gaq = _gaq || [];
+ _gaq.push(['_setAccount', 'UA-35848102-1']);
+ _gaq.push(['_trackPageview']);
+
+ (function () {
+ var ga = document.createElement('script');
+ ga.type = 'text/javascript';
+ ga.async = true;
+ ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+ var s = document.getElementsByTagName('script')[0];
+ s.parentNode.insertBefore(ga, s);
+ })();
+</script>
+{% endif %}
+</body>
+</html>
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/custom_theme/js/base.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/custom_theme/js/base.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/custom_theme/js/base.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,15 @@
+/* Highlight */
+$( document ).ready(function() {
+ hljs.initHighlightingOnLoad();
+ $('table').addClass('table table-striped table-hover');
+ $('pre').addClass('highlight');
+});
+
+$('body').scrollspy({
+ target: '.bs-sidebar',
+});
+
+/* Prevent disabled links from causing a page reload */
+$("li.disabled a").click(function() {
+ event.preventDefault();
+});
\ No newline at end of file
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/custom_theme/nav.html
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/custom_theme/nav.html (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/custom_theme/nav.html 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,60 @@
+<div class="navbar navbar-default navbar-fixed-top" role="navigation">
+ <div class="container">
+
+ <!-- Collapsed navigation -->
+ <div class="navbar-header">
+ {% if include_nav or include_next_prev or repo_url %}
+ <!-- Expander button -->
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ {% endif %}
+
+ <!-- Main title -->
+ <a class="navbar-brand" href="{{ homepage_url }}">{{ site_name }}</a>
+ </div>
+
+ <!-- Expanded navigation -->
+ <div class="navbar-collapse collapse">
+ {% if include_nav %}
+ <!-- Main navigation -->
+ <ul class="nav navbar-nav">
+ {% for nav_item in nav %}
+ {% if nav_item.children %}
+ <li class="dropdown{% if nav_item.active %} active{% endif %}">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">{{ nav_item.title }} <b class="caret"></b></a>
+ <ul class="dropdown-menu">
+ {% for nav_item in nav_item.children %}
+ {% include "nav-sub.html" %}
+ {% endfor %}
+ </ul>
+ </li>
+ {% else %}
+ <li {% if nav_item.active %}class="active"{% endif %}>
+ <a href="{{ nav_item.url }}">{{ nav_item.title }}</a>
+ </li>
+ {% endif %}
+ {% endfor %}
+ </ul>
+ {% endif %}
+
+ <ul class="nav navbar-nav navbar-right">
+ {% if repo_url %}
+ <li>
+ <a href="{{ repo_url }}">
+ {% if repo_name == 'GitHub' %}
+ <i class="fa fa-github"></i>
+ {% elif repo_name == 'Bitbucket' %}
+ <i class="fa fa-bitbucket"></i>
+ {% endif %}
+ {{ repo_name }}
+ </a>
+ </li>
+ {% endif %}
+ </ul>
+ </div>
+ </div>
+</div>
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/custom_theme/toc.html
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/custom_theme/toc.html (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/custom_theme/toc.html 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,14 @@
+<div class="bs-sidebar hidden-print affix" role="complementary">
+ <ul class="nav bs-sidenav">
+ {% for toc_item in toc %}
+ <li class="main {% if toc_item.active %}active{% endif %}">
+ <a href="{{ toc_item.url }}">{{ toc_item.title }}</a>
+ <ul class="nav">
+ {% for toc_item in toc_item.children %}
+ <li><a href="{{ toc_item.url }}">{{ toc_item.title }}</a></li>
+ {% endfor %}
+ </ul>
+ </li>
+ {% endfor %}
+ </ul>
+</div>
\ No newline at end of file
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/docs/css/custom.css
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/docs/css/custom.css (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/docs/css/custom.css 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,198 @@
+html {
+ position: relative;
+ min-height: 100%;
+}
+body {
+ padding-top: 51px;
+ /* Margin bottom by footer height */
+ margin-bottom: 60px;
+}
+label {
+ display: block;
+}
+/* hide "Home" in navbar */
+.nav.navbar-nav:first-child > li:first-child {
+ display: none;
+}
+
+ul.nav li.main {
+ font-weight: normal;
+}
+
+.footer {
+ position: absolute;
+ bottom: 0;
+ width: 100%;
+ /* Set the fixed height of the footer here */
+ height: 60px;
+ background-color: #f5f5f5;
+}
+
+.footer .container .text-muted {
+ margin: 20px 0;
+}
+
+.footer .container {
+ padding-right: 15px;
+ padding-left: 15px;
+}
+
+/* Outline button for use within the docs */
+.btn-outline {
+ color: #337ab7;
+ background-color: transparent;
+ border-color: #337ab7;
+}
+.btn-outline:hover,
+.btn-outline:focus,
+.btn-outline:active {
+ color: #fff;
+ background-color: #337ab7;
+ border-color: #337ab7;
+}
+
+/* Inverted outline button (white on dark) */
+.btn-outline-inverse {
+ color: #fff;
+ background-color: transparent;
+ border-color: #fff;
+}
+.btn-outline-inverse:hover,
+.btn-outline-inverse:focus,
+.btn-outline-inverse:active {
+ color: #337ab7;
+ text-shadow: none;
+ background-color: #fff;
+ border-color: #fff;
+}
+
+.bs-docs-header {
+ margin-bottom: 0;
+ background: #337ab7;
+ color: #fff;
+}
+
+.bs-docs-header .btn {
+ padding: 15px 30px;
+ font-size: 20px
+}
+
+.bs-docs-header h1 {
+ margin-bottom: 30px;
+}
+
+.bs-docs-header .lead {
+ margin: 0 auto 30px;
+}
+
+.bs-docs-sub-header {
+ padding-top: 20px;
+ padding-bottom: 20px;
+}
+
+.content h1:first-of-type,
+.content h1:first-of-type + p:first-of-type {
+ text-align: center;
+}
+
+.bs-docs-example > p {
+ margin-top: 20px;
+}
+
+.bs-docs-example > p:last-child {
+ margin-bottom: 0;
+}
+
+.bs-docs-example .table,
+.bs-docs-example .progress,
+.bs-docs-example .well,
+.bs-docs-example .alert,
+.bs-docs-example .hero-unit,
+.bs-docs-example .pagination,
+.bs-docs-example .navbar,
+.bs-docs-example > .nav,
+.bs-docs-example blockquote {
+ margin-bottom: 5px;
+}
+
+.bs-docs-example .pagination {
+ margin-top: 0;
+}
+
+.special {
+ font-weight: bold !important;
+ color: #fff !important;
+ background: #bc0000 !important;
+ text-transform: uppercase;
+}
+
+.bs-docs-example {
+ position: relative;
+ padding: 45px 15px 15px;
+ margin: 0 -15px 15px;
+ border-color: #e5e5e5 #eee #eee;
+ border-style: solid;
+ border-width: 1px 0;
+ -webkit-box-shadow: inset 0 3px 6px rgba(0,0,0,.05);
+ box-shadow: inset 0 3px 6px rgba(0,0,0,.05);
+}
+
+/* Echo out a label for the example */
+.bs-docs-example:after {
+ position: absolute;
+ top: 15px;
+ left: 15px;
+ font-size: 12px;
+ font-weight: 700;
+ color: #959595;
+ text-transform: uppercase;
+ letter-spacing: 1px;
+ content: "Example";
+}
+
+.highlight {
+ padding: 9px 14px;
+ margin-bottom: 14px;
+ background-color: #f7f7f9;
+ border: 1px solid #e1e1e8;
+ border-radius: 4px;
+}
+
+.bs-docs-example + .highlight {
+ margin: -15px -15px 15px;
+ border-width: 0 0 1px;
+ border-radius: 0;
+}
+
+ at media (min-width: 768px) {
+ .bs-docs-example {
+ margin-right: 0;
+ margin-left: 0;
+ background-color: #fff;
+ border-color: #ddd;
+ border-width: 1px;
+ border-radius: 4px 4px 0 0;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ }
+
+ .bs-docs-example.no-code {
+ border-radius: 4px;
+ }
+
+
+ .bs-docs-example + .highlight {
+ margin-top: -16px;
+ margin-right: 0;
+ margin-left: 0;
+ border-width: 1px;
+ border-bottom-right-radius: 4px;
+ border-bottom-left-radius: 4px;
+ }
+}
+
+ at media (min-width: 992px){
+ .bs-docs-header .lead {
+ width: 80%;
+ }
+}
\ No newline at end of file
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/docs/examples.md
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/docs/examples.md (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/docs/examples.md 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,903 @@
+# Basic examples
+
+---
+## Standard select boxes
+
+<div class="bs-docs-example">
+ <p>Make this:</p>
+
+ <select>
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ </select>
+
+ <p>Become this:</p>
+
+ <select class="selectpicker">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ </select>
+</div>
+
+```html
+<select class="selectpicker">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+</select>
+```
+
+<div id="optgroup"></div>
+## Select boxes with optgroups
+
+<div class="bs-docs-example">
+ <select class="selectpicker">
+ <optgroup label="Picnic">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ </optgroup>
+ <optgroup label="Camping">
+ <option>Tent</option>
+ <option>Flashlight</option>
+ <option>Toilet Paper</option>
+ </optgroup>
+ </select>
+</div>
+
+```html
+<select class="selectpicker">
+ <optgroup label="Picnic">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ </optgroup>
+ <optgroup label="Camping">
+ <option>Tent</option>
+ <option>Flashlight</option>
+ <option>Toilet Paper</option>
+ </optgroup>
+</select>
+```
+
+## Multiple select boxes
+
+<div class="bs-docs-example">
+ <select class="selectpicker" multiple>
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ </select>
+</div>
+
+```html
+<select class="selectpicker" multiple>
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+</select>
+```
+
+# Live search
+
+---
+
+## Live search
+
+You can add a search input by passing `data-live-search="true"` attribute:
+
+<div class="bs-docs-example no-code">
+ <select class="selectpicker" data-live-search="true">
+ <option>Hot Dog, Fries and a Soda</option>
+ <option>Burger, Shake and a Smile</option>
+ <option>Sugar, Spice and all things nice</option>
+ </select>
+</div>
+
+## Key words
+
+Add key words to options to improve their searchability using `data-tokens`.
+
+<div class="bs-docs-example">
+ <select class="selectpicker" data-live-search="true">
+ <option data-tokens="ketchup mustard">Hot Dog, Fries and a Soda</option>
+ <option data-tokens="mustard">Burger, Shake and a Smile</option>
+ <option data-tokens="frosting">Sugar, Spice and all things nice</option>
+ </select>
+</div>
+
+```html
+<select class="selectpicker" data-live-search="true">
+ <option data-tokens="ketchup mustard">Hot Dog, Fries and a Soda</option>
+ <option data-tokens="mustard">Burger, Shake and a Smile</option>
+ <option data-tokens="frosting">Sugar, Spice and all things nice</option>
+</select>
+```
+
+# Limit the number of selections
+
+Limit the number of options that can be selected via the `data-max-options` attribute. It also works for option groups. Customize the message displayed when the limit is reached with `maxOptionsText`.
+
+<div class="bs-docs-example">
+ <select class="selectpicker" multiple data-max-options="2">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ </select>
+
+ <select class="selectpicker" multiple>
+ <optgroup label="Condiments" data-max-options="2">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ </optgroup>
+ <optgroup label="Breads" data-max-options="2">
+ <option>Plain</option>
+ <option>Steamed</option>
+ <option>Toasted</option>
+ </optgroup>
+ </select>
+</div>
+
+```html
+<select class="selectpicker" multiple data-max-options="2">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+</select>
+
+<select class="selectpicker" multiple>
+ <optgroup label="Condiments" data-max-options="2">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ </optgroup>
+ <optgroup label="Breads" data-max-options="2">
+ <option>Plain</option>
+ <option>Steamed</option>
+ <option>Toasted</option>
+ </optgroup>
+</select>
+```
+
+# Custom button text
+
+---
+
+## Placeholder
+<p id="titleMultiples"></p>
+Using the `title` attribute will set the default placeholder text when nothing is selected. This works for both multiple and standard select boxes:
+
+<div class="bs-docs-example">
+ <div class="form-group">
+ <label>Multiple</label>
+ <select class="selectpicker" multiple title="Choose one of the following...">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ </select>
+ </div>
+
+ <div class="form-group">
+ <label>Standard</label>
+ <select class="selectpicker" title="Choose one of the following...">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ </select>
+ </div>
+</div>
+
+```html
+<select class="selectpicker" multiple title="Choose one of the following...">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+</select>
+```
+
+## Selected text
+
+<p id="title"></p>
+Set the `title` attribute on individual options to display alternative text when the option is selected:
+
+<div class="bs-docs-example no-code">
+ <select class="selectpicker">
+ <option title="Combo 1">Hot Dog, Fries and a Soda</option>
+ <option title="Combo 2">Burger, Shake and a Smile</option>
+ <option title="Combo 3">Sugar, Spice and all things nice</option>
+ </select>
+</div>
+
+```html
+<select class="selectpicker">
+ <option title="Combo 1">Hot Dog, Fries and a Soda</option>
+ <option title="Combo 2">Burger, Shake and a Smile</option>
+ <option title="Combo 3">Sugar, Spice and all things nice</option>
+</select>
+```
+## Selected text format
+
+<p id="titleMultiplesFormat"></p>
+Specify how the selection is displayed with the `data-selected-text-format` attribute on a multiple select.
+
+The supported values are:
+
+* `values`: A comma delimited list of selected values (default)
+* `count`: If one item is selected, then the option value is shown. If more than one is selected then the number of selected items is displayed, e.g. `2 of 6 selected`
+* `count > x`: Where `x` is the number of items selected when the display format changes from `values` to `count`
+* `static`: Always show the select title (placeholder), regardless of selection
+
+<div class="bs-docs-example">
+ <select class="selectpicker" multiple data-selected-text-format="count">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ </select>
+</div>
+
+```html
+<select class="selectpicker" multiple data-selected-text-format="count">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+</select>
+```
+
+<div class="bs-docs-example">
+ <select class="selectpicker" multiple data-selected-text-format="count > 3">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ <option>Onions</option>
+ </select>
+</div>
+
+```html
+<select class="selectpicker" multiple data-selected-text-format="count > 3">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ <option>Onions</option>
+</select>
+```
+
+# Styling
+
+---
+
+## Button classes
+
+You can set the button classes via the `data-style` attribute:
+
+<div class="bs-docs-example">
+ <div class="form-group">
+ <select class="selectpicker" data-style="btn-primary">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ </select>
+ </div>
+ <div class="form-group">
+ <select class="selectpicker" data-style="btn-info">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ </select>
+ </div>
+ <div class="form-group">
+ <select class="selectpicker" data-style="btn-success">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ </select>
+ </div>
+ <div class="form-group">
+ <select class="selectpicker" data-style="btn-warning">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ </select>
+ </div>
+ <div class="form-group">
+ <select class="selectpicker" data-style="btn-danger">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ </select>
+ </div>
+</div>
+
+```html
+<select class="selectpicker" data-style="btn-primary">
+ ...
+</select>
+
+<select class="selectpicker" data-style="btn-info">
+ ...
+</select>
+
+<select class="selectpicker" data-style="btn-success">
+ ...
+</select>
+
+<select class="selectpicker" data-style="btn-warning">
+ ...
+</select>
+
+<select class="selectpicker" data-style="btn-danger">
+ ...
+</select>
+```
+
+## Checkmark on selected option
+
+You can also show the checkmark icon on standard select boxes with the `show-tick` class:
+
+<div class="bs-docs-example">
+ <select class="selectpicker show-tick">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ </select>
+</div>
+
+```html
+<select class="selectpicker show-tick">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+</select>
+```
+
+## Menu arrow
+
+The Bootstrap menu arrow can be added with the `show-menu-arrow` class:
+
+<div class="bs-docs-example">
+ <select class="selectpicker show-menu-arrow">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ </select>
+</div>
+
+```html
+<select class="selectpicker show-menu-arrow">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+</select>
+```
+
+## Style individual options
+
+<p id="classes"></p>
+Classes added to options are transferred to the select box:
+
+<div class="bs-docs-example">
+ <select class="selectpicker">
+ <option>Mustard</option>
+ <option class="special">Ketchup</option>
+ <option>Relish</option>
+ </select>
+</div>
+
+```html
+<select class="selectpicker">
+ <option>Mustard</option>
+ <option class="special">Ketchup</option>
+ <option>Relish</option>
+</select>
+```
+
+```css
+.special {
+ font-weight: bold !important;
+ color: #fff !important;
+ background: #bc0000 !important;
+ text-transform: uppercase;
+}
+```
+
+## Width
+
+<p id="grid"></p>
+Wrap selects in grid columns, or any custom parent element, to easily enforce desired widths.
+
+<div class="bs-docs-example">
+ <div class="row">
+ <div class="col-xs-3">
+ <div class="form-group">
+ <select class="selectpicker form-control">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ </select>
+ </div>
+ </div>
+ <div class="col-xs-9">
+ <div class="form-group">
+ <select class="selectpicker form-control">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ </select>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-xs-4">
+ <div class="form-group">
+ <select class="selectpicker form-control">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ </select>
+ </div>
+ </div>
+ <div class="col-xs-8">
+ <div class="form-group">
+ <select class="selectpicker form-control">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ </select>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-xs-5">
+ <div class="form-group">
+ <select class="selectpicker form-control">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ </select>
+ </div>
+ </div>
+ <div class="col-xs-7">
+ <div class="form-group">
+ <select class="selectpicker form-control">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ </select>
+ </div>
+ </div>
+ </div>
+</div>
+
+```html
+<div class="row">
+ <div class="col-xs-3">
+ <div class="form-group">
+ <select class="selectpicker form-control">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ </select>
+ </div>
+ </div>
+</div>
+```
+
+<div id="data-width"></div>
+
+Alternatively, use the `data-width` attribute to set the width of the select. Set `data-width` to `'auto'` to automatically adjust the width of the select to its widest option. `'fit'` automatically adjusts the width of the select to the width of its currently selected option. An exact value can also be specified, e.g., `300px` or `50%`.
+
+<div class="bs-docs-example">
+ <div class="row">
+ <div class="col-xs-12">
+ <div class="form-group">
+ <label>width: 'auto'</label>
+ <select class="selectpicker form-control" data-width="auto">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ <option>All of the above (and much, much more!)</option>
+ </select>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-xs-12">
+ <div class="form-group">
+ <label>width: 'fit'</label>
+ <select class="selectpicker form-control" data-width="fit">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ <option>All of the above (and much, much more!)</option>
+ </select>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-xs-12">
+ <div class="form-group">
+ <label>width: '100px'</label>
+ <select class="selectpicker form-control" data-width="100px">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ <option>All of the above (and much, much more!)</option>
+ </select>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-xs-12">
+ <div class="form-group">
+ <label>width: '75%'</label>
+ <select class="selectpicker form-control" data-width="75%">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ <option>All of the above (and much, much more!)</option>
+ </select>
+ </div>
+ </div>
+ </div>
+</div>
+
+```html
+<select class="selectpicker" data-width="auto">
+ ...
+</select>
+<select class="selectpicker" data-width="fit">
+ ...
+</select>
+<select class="selectpicker" data-width="100px">
+ ...
+</select>
+<select class="selectpicker" data-width="75%">
+ ...
+</select>
+```
+
+# Customize options
+
+---
+
+## Icons
+
+Add an icon to an option or optgroup with the `data-icon` attribute:
+
+<div class="bs-docs-example">
+ <select class="selectpicker">
+ <option data-icon="glyphicon-glass">Mustard</option>
+ <option data-icon="glyphicon-heart">Ketchup</option>
+ <option data-icon="glyphicon-film">Relish</option>
+ <option data-icon="glyphicon-home">Mayonnaise</option>
+ <option data-icon="glyphicon-print">Barbecue Sauce</option>
+ </select>
+</div>
+
+```html
+<select class="selectpicker">
+ <option data-icon="glyphicon-heart">Ketchup</option>
+</select>
+```
+
+## Custom content
+
+Insert custom HTML into the option with the `data-content` attribute:
+
+<div class="bs-docs-example">
+ <select class="selectpicker">
+ <option data-content="<span class='label label-warning'>Mustard</span>">Mustard</option>
+ <option data-content="<span class='label label-danger label-important'>Ketchup</span>">Ketchup</option>
+ <option data-content="<span class='label label-success'>Relish</span>">Relish</option>
+ <option data-content="<span class='label label-info'>Mayonnaise</span>">Mayonnaise</option>
+ </select>
+</div>
+
+```html
+<select class="selectpicker">
+ <option data-content="<span class='label label-success'>Relish</span>">Relish</option>
+</select>
+```
+
+## Subtext
+Add subtext to an option or optgroup with the `data-subtext` attribute:
+
+<div class="bs-docs-example">
+ <div class="form-group">
+ <select class="selectpicker">
+ <option data-subtext="French's">Mustard</option>
+ <option data-subtext="Heinz">Ketchup</option>
+ <option data-subtext="Sweet">Relish</option>
+ <option data-subtext="Miracle Whip">Mayonnaise</option>
+ <option data-divider="true"></option>
+ <option data-subtext="Honey">Barbecue Sauce</option>
+ <option data-subtext="Ranch">Salad Dressing</option>
+ <option data-subtext="Sweet & Spicy">Tabasco</option>
+ <option data-subtext="Chunky">Salsa</option>
+ </select>
+ </div>
+
+ <div class="form-group">
+ <select class="selectpicker" data-show-subtext="true">
+ <option data-subtext="French's">Mustard</option>
+ <option data-subtext="Heinz">Ketchup</option>
+ <option data-subtext="Sweet">Relish</option>
+ <option data-subtext="Miracle Whip">Mayonnaise</option>
+ <option data-divider="true"></option>
+ <option data-subtext="Honey">Barbecue Sauce</option>
+ <option data-subtext="Ranch">Salad Dressing</option>
+ <option data-subtext="Sweet & Spicy">Tabasco</option>
+ <option data-subtext="Chunky">Salsa</option>
+ </select>
+ <span class="help-block">With <code>showSubtext</code> set to true.</span>
+ </div>
+</div>
+
+```html
+<select class="selectpicker" data-size="5">
+ <option data-subtext="Heinz">Ketchup</option>
+</select>
+```
+
+# Customize menu
+
+---
+
+## Menu size
+
+The `size` option is set to `'auto'` by default. When `size` is set to `'auto'`, the menu always opens up to show as many items as the window will allow without being cut off. Set `size` to `false` to always show all items. The size of the menu can also be specifed using the `data-size` attribute.
+
+<div class="bs-docs-example">
+ <select class="selectpicker">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ <option>Mayonnaise</option>
+ <option>Barbecue Sauce</option>
+ <option>Salad Dressing</option>
+ <option>Tabasco</option>
+ <option>Salsa</option>
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ <option>Mayonnaise</option>
+ <option>Barbecue Sauce</option>
+ <option>Salad Dressing</option>
+ <option>Tabasco</option>
+ <option>Salsa</option>
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ <option>Mayonnaise</option>
+ <option>Barbecue Sauce</option>
+ <option>Salad Dressing</option>
+ <option>Tabasco</option>
+ <option>Salsa</option>
+ </select>
+</div>
+
+<p id="data-size"></p>
+Specify a number for `data-size` to choose the maximum number of items to show in the menu.
+
+<div class="bs-docs-example">
+ <select class="selectpicker" data-size="5">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ <option>Mayonnaise</option>
+ <option>Barbecue Sauce</option>
+ <option>Salad Dressing</option>
+ <option>Tabasco</option>
+ <option>Salsa</option>
+ </select>
+</div>
+
+```html
+<select class="selectpicker" data-size="5">
+ ...
+</select>
+```
+
+## Select/deselect all options
+
+Adds two buttons to the top of the menu - **Select All** & **Deselect All** with `data-actions-box="true"`.
+
+<div class="bs-docs-example">
+ <select class="selectpicker" multiple data-actions-box="true">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ </select>
+</div>
+
+```html
+<select class="selectpicker" multiple data-actions-box="true">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+</select>
+```
+
+## Divider
+
+Add `data-divider="true"` to an option to turn it into a divider.
+
+<div class="bs-docs-example">
+ <select class="selectpicker">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ <option>Mayonnaise</option>
+ <option data-divider="true"></option>
+ <option>Barbecue Sauce</option>
+ <option>Salad Dressing</option>
+ <option>Tabasco</option>
+ <option>Salsa</option>
+ </select>
+</div>
+
+```html
+<select class="selectpicker" data-size="5">
+ <option data-divider="true"></option>
+</select>
+```
+
+## Menu header
+
+Add a header to the dropdown menu, e.g. `header: 'Select a condiment'` or `data-header="Select a condiment"`
+
+<div class="bs-docs-example">
+ <div class="row-fluid">
+ <select class="selectpicker" data-header="Select a condiment">
+ <option data-subtext="French's">Mustard</option>
+ <option data-subtext="Heinz">Ketchup</option>
+ <option data-subtext="Sweet">Relish</option>
+ <option data-subtext="Miracle Whip">Mayonnaise</option>
+ <option data-divider="true"></option>
+ <option data-subtext="Honey">Barbecue Sauce</option>
+ <option data-subtext="Ranch">Salad Dressing</option>
+ <option data-subtext="Sweet & Spicy">Tabasco</option>
+ <option data-subtext="Chunky">Salsa</option>
+ </select>
+ </div>
+</div>
+
+```html
+<select class="selectpicker" data-header="Select a condiment">
+ ...
+</select>
+```
+
+## Container
+
+Append the select to a specific element, e.g. `container: 'body'` or `data-container=".main-content"`
+
+<div class="bs-docs-example" style="overflow:hidden;">
+ <div class="row-fluid">
+ <select class="selectpicker">
+ <option data-subtext="French's">Mustard</option>
+ <option data-subtext="Heinz">Ketchup</option>
+ <option data-subtext="Sweet">Relish</option>
+ <option data-subtext="Miracle Whip">Mayonnaise</option>
+ <option data-divider="true"></option>
+ <option data-subtext="Honey">Barbecue Sauce</option>
+ <option data-subtext="Ranch">Salad Dressing</option>
+ <option data-subtext="Sweet & Spicy">Tabasco</option>
+ <option data-subtext="Chunky">Salsa</option>
+ </select>
+ <select class="selectpicker" data-container="body">
+ <option data-subtext="French's">Mustard</option>
+ <option data-subtext="Heinz">Ketchup</option>
+ <option data-subtext="Sweet">Relish</option>
+ <option data-subtext="Miracle Whip">Mayonnaise</option>
+ <option data-divider="true"></option>
+ <option data-subtext="Honey">Barbecue Sauce</option>
+ <option data-subtext="Ranch">Salad Dressing</option>
+ <option data-subtext="Sweet & Spicy">Tabasco</option>
+ <option data-subtext="Chunky">Salsa</option>
+ </select>
+ </div>
+</div>
+
+```html
+<div style="overflow:hidden;">
+ <select class="selectpicker">
+ ...
+ </select>
+ <select class="selectpicker" data-container="body">
+ ...
+ </select>
+</div>
+```
+
+## Dropup menu
+
+`dropupAuto` is set to true by default, which automatically determines whether or not the menu should display above or below the select box. If `dropupAuto` is set to false, manually make the select a dropup menu by adding the `.dropup` class to the select.
+
+<div class="bs-docs-example">
+ <select class="selectpicker dropup">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ </select>
+</div>
+
+```html
+<select class="selectpicker dropup">
+ ...
+</select>
+```
+
+# Disabled
+
+---
+
+## Disabled select box
+
+<div class="bs-docs-example">
+ <select class="selectpicker" disabled>
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ </select>
+</div>
+
+```html
+<select class="selectpicker" disabled>
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+</select>
+```
+
+## Disabled options
+
+<div class="bs-docs-example">
+ <select class="selectpicker">
+ <option>Mustard</option>
+ <option disabled>Ketchup</option>
+ <option>Relish</option>
+ </select>
+</div>
+
+```html
+<select class="selectpicker">
+ <option>Mustard</option>
+ <option disabled>Ketchup</option>
+ <option>Relish</option>
+</select>
+```
+
+## Disabled option groups
+
+<div class="bs-docs-example">
+ <select class="selectpicker test">
+ <optgroup label="Picnic" disabled>
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ </optgroup>
+ <optgroup label="Camping">
+ <option>Tent</option>
+ <option>Flashlight</option>
+ <option>Toilet Paper</option>
+ </optgroup>
+ </select>
+</div>
+
+```html
+<select class="selectpicker test">
+ <optgroup label="Picnic" disabled>
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+ </optgroup>
+ <optgroup label="Camping">
+ <option>Tent</option>
+ <option>Flashlight</option>
+ <option>Toilet Paper</option>
+ </optgroup>
+</select>
+```
\ No newline at end of file
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/docs/index.md
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/docs/index.md (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/docs/index.md 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,70 @@
+# Getting Started
+
+---
+
+## Dependencies
+
+Requires jQuery v1.8.0+, Bootstrap’s dropdown.js component, and Bootstrap's CSS. If you're not already using Bootstrap in your project, a precompiled version of the minimum requirements can be downloaded [here](http://getbootstrap.com/customize/?id=7830063837006f6fc84f).
+
+## CDN
+
+The folks at CDNJS host a copy of the library. Just use these links:
+
+```html
+<!-- Latest compiled and minified CSS -->
+<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.8.1/css/bootstrap-select.min.css">
+
+<!-- Latest compiled and minified JavaScript -->
+<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.8.1/js/bootstrap-select.min.js"></script>
+
+<!-- (Optional) Latest compiled and minified JavaScript translation files -->
+<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.8.1/js/i18n/defaults-*.min.js"></script>
+```
+
+## Install with Bower
+
+You can also install bootstrap-select using [Bower](http://bower.io):
+
+```elixir
+$ bower install bootstrap-select
+```
+
+## Install with npm
+
+You can also install bootstrap-select using [npm](https://www.npmjs.com/package/bootstrap-select):
+
+```elixir
+$ npm install bootstrap-select
+```
+
+## Install with NuGet
+
+You can also install bootstrap-select using [NuGet](https://www.nuget.org/packages/bootstrap-select):
+
+```elixir
+$ Install-Package bootstrap-select
+```
+
+# Usage
+
+---
+
+Bootstrap-select requires bootstrap and jquery. Create your `<select>` with the `.selectpicker` class. The data-api will automatically theme these elements.
+
+```html
+<select class="selectpicker">
+ <option>Mustard</option>
+ <option>Ketchup</option>
+ <option>Relish</option>
+</select>
+```
+
+Options can be passed via data attributes or JavaScript.
+
+```js
+$('.selectpicker').selectpicker({
+ style: 'btn-info',
+ size: 4
+});
+```
+
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/docs/methods.md
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/docs/methods.md (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/docs/methods.md 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,221 @@
+# Methods
+
+Interface with bootstrap-select.
+
+---
+
+## val()
+
+You can set the selected value by calling the `val` method on the element.
+
+```js
+$('.selectpicker').selectpicker('val', 'Mustard');
+$('.selectpicker').selectpicker('val', ['Mustard','Relish']);
+```
+
+This is different to calling `val()` directly on the `select` element. If you call `val()` on the element directly, the bootstrap-select ui will not refresh (as the change event only fires from user interaction). You will have to call the ui refresh method yourself.
+
+```js
+$('.selectpicker').val('Mustard');
+$('.selectpicker').selectpicker('render');
+
+// this is the equivalent of the above
+$('.selectpicker').selectpicker('val', 'Mustard');
+```
+
+---
+
+## selectAll()
+
+This will select all items in a multi-select.
+
+```js
+$('.selectpicker').selectpicker('selectAll');
+```
+
+---
+
+## deselectAll()
+
+This will deselect all items in a multi-select.
+
+```js
+$('.selectpicker').selectpicker('deselectAll');
+```
+
+---
+
+## render()
+
+You can force a re-render of the bootstrap-select ui with the `render` method. This is useful if you programatically change any underlying values that affect the layout of the element.
+
+```js
+$('.selectpicker').selectpicker('render');
+```
+
+---
+
+## mobile()
+
+Enable mobile scrolling by calling `$('.selectpicker').selectpicker('mobile')`. This enables the device's native menu for select menus.
+
+The method for detecting the browser is left up to the user.
+
+```js
+if( /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ) {
+ $('.selectpicker').selectpicker('mobile');
+}
+```
+
+---
+
+## setStyle()
+
+Modify the class(es) associated with either the button itself or its container.
+
+If changing the class on the container:
+
+```js
+$('.selectpicker').addClass('col-lg-12').selectpicker('setStyle');
+```
+
+If changing the class(es) on the button (altering data-style):
+
+```js
+// Replace Class
+$('.selectpicker').selectpicker('setStyle', 'btn-danger');
+
+// Add Class
+$('.selectpicker').selectpicker('setStyle', 'btn-large', 'add');
+
+// Remove Class
+$('.selectpicker').selectpicker('setStyle', 'btn-large', 'remove');
+```
+
+
+---
+
+## refresh()
+
+To programmatically update a select with JavaScript, first manipulate the select, then use the `refresh` method to
+update the UI to match the new state. This is necessary when removing or adding options, or when disabling/enabling a
+select via JavaScript.
+
+```js
+$('.selectpicker').selectpicker('refresh');
+```
+
+<div class="bs-docs-example">
+ <div class="form-group">
+ <select class="selectpicker remove-example">
+ <option value="Mustard">Mustard</option>
+ <option value="Ketchup">Ketchup</option>
+ <option value="Relish">Relish</option>
+ </select>
+ </div>
+
+ <button class="btn btn-warning rm-mustard">Remove Mustard</button>
+ <button class="btn btn-danger rm-ketchup">Remove Ketchup</button>
+ <button class="btn btn-success rm-relish">Remove Relish</button>
+</div>
+
+```html
+<select class="selectpicker remove-example">
+ <option value="Mustard">Mustard</option>
+ <option value="Ketchup">Ketchup</option>
+ <option value="Relish">Relish</option>
+</select>
+
+<button class="btn btn-warning rm-mustard">Remove Mustard</button>
+<button class="btn btn-danger rm-ketchup">Remove Ketchup</button>
+<button class="btn btn-success rm-relish">Remove Relish</button>
+```
+```js
+$('.rm-mustard').click(function () {
+ $('.remove-example').find('[value=Mustard]').remove();
+ $('.remove-example').selectpicker('refresh');
+});
+```
+
+<div class="bs-docs-example">
+ <div class="form-group">
+ <select class="selectpicker disable-example">
+ <option value="Mustard">Mustard</option>
+ <option value="Ketchup">Ketchup</option>
+ <option value="Relish">Relish</option>
+ </select>
+ </div>
+
+ <button class="btn btn-default ex-disable"><i class="icon-remove"></i> Disable</button>
+ <button class="btn btn-default ex-enable"><i class="icon-ok"></i> Enable</button>
+</div>
+
+```js
+$('.ex-disable').click(function () {
+ $('.disable-example').prop('disabled', true);
+ $('.disable-example').selectpicker('refresh');
+});
+
+$('.ex-enable').click(function () {
+ $('.disable-example').prop('disabled', false);
+ $('.disable-example').selectpicker('refresh');
+});
+```
+
+<script type="text/javascript">
+ window.onload = function () {
+ var $re = $('.remove-example'),
+ $de = $('.disable-example');
+
+ $('.rm-mustard').click(function () {
+ $re.find('[value=Mustard]').remove();
+ $re.selectpicker('refresh');
+ });
+ $('.rm-ketchup').click(function () {
+ $re.find('[value=Ketchup]').remove();
+ $re.selectpicker('refresh');
+ });
+ $('.rm-relish').click(function () {
+ $re.find('[value=Relish]').remove();
+ $re.selectpicker('refresh');
+ });
+ $('.ex-disable').click(function () {
+ $de.prop('disabled', true);
+ $de.selectpicker('refresh');
+ });
+ $('.ex-enable').click(function () {
+ $de.prop('disabled', false);
+ $de.selectpicker('refresh');
+ });
+ };
+</script>
+
+---
+
+## hide()
+
+To programmatically hide the bootstrap-select use the `hide` method.
+
+```js
+$('.selectpicker').selectpicker('hide');
+```
+
+---
+
+## show()
+
+To programmatically show the bootstrap-select use the `show` method.
+
+```js
+$('.selectpicker').selectpicker('show');
+```
+
+---
+
+## destroy()
+
+To programmatically destroy the bootstrap-select, use the `destroy` method.
+
+```js
+$('.selectpicker').selectpicker('destroy');
+```
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/docs/options.md
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/docs/options.md (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/docs/options.md 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,197 @@
+# Options
+
+Configure bootstrap-select.
+
+---
+
+Options can be passed via data attributes or JavaScript. For data attributes, append the option name to `data-`, as in
+`data-style=""` or `data-selected-text-format="count"`.
+
+<table class="table table-bordered table-striped">
+ <thead>
+ <tr>
+ <th style="width: 15%;">Name</th>
+ <th style="width: 32%;">Type</th>
+ <th style="width: 10%;">Default</th>
+ <th style="width: 43%;">Description</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>actionsBox</td>
+ <td>boolean</td>
+ <td><code>false</code></td>
+ <td>
+ <p>When set to <code>true</code>, adds two buttons to the top of the dropdown menu (<strong>Select All</strong> & <strong>Deselect All</strong>).</p>
+ </td>
+ </tr>
+ <tr>
+ <td>container</td>
+ <td>string | false</td>
+ <td><code>false</code></td>
+ <td>
+ <p>When set to a string, appends the select to a specific element or selector, e.g.,
+ <code>container: 'body' | '.main-body'</code></p>
+ </td>
+ </tr>
+ <tr>
+ <td>countSelectedText</td>
+ <td>string | function</td>
+ <td><code>function</code></td>
+ <td>
+ <p>Sets the format for the text displayed when selectedTextFormat is <code>count</code> or <code>count >
+ #</code>. {0} is the selected amount. {1} is total available for selection.</p>
+ <p>When set to a function, the first parameter is the number of selected options, and the second is the total number of
+ options. The function must return a string.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>dropupAuto</td>
+ <td>boolean</td>
+ <td><code>true</code></td>
+ <td>
+ <p>checks to see which has more room, above or below. If the dropup has enough room to fully open normally, but
+ there is more room above, the dropup still opens normally. Otherwise, it becomes a dropup. If dropupAuto is
+ set to false, dropups must be called manually.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>header</td>
+ <td>string</td>
+ <td><code>false</code></td>
+ <td>
+ <p>adds a header to the top of the menu; includes a close button by default</p>
+ </td>
+ </tr>
+ <tr>
+ <td>hideDisabled</td>
+ <td>boolean</td>
+ <td><code>false</code></td>
+ <td>
+ <p>removes disabled options and optgroups from the menu <code>data-hide-disabled: true</code></p>
+ </td>
+ </tr>
+ <tr>
+ <td>liveSearch</td>
+ <td>boolean</td>
+ <td><code>false</code></td>
+ <td>
+ <p>When set to <code>true</code>, adds a search box to the top of the selectpicker dropdown.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>maxOptions</td>
+ <td>integer | false</td>
+ <td><code>false</code></td>
+ <td>
+ <p>When set to an integer and in a multi-select, the number of selected options cannot exceed the given value.</p>
+ <p>This option can also exist as a data-attribute for an <code><optgroup></code>, in which case it only
+ applies to that <code><optgroup></code>.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>mobile</td>
+ <td>boolean</td>
+ <td><code>false</code></td>
+ <td>
+ <p>When set to <code>true</code>, enables the device's native menu for select menus.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>multipleSeparator</td>
+ <td>string</td>
+ <td><code>', '</code></td>
+ <td>
+ <p>Set the character displayed in the button that separates selected options.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>noneSelectedText</td>
+ <td>string</td>
+ <td><code>'Nothing selected'</code></td>
+ <td>
+ <p>The text that is displayed when a multiple select has no selected options.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>selectedTextFormat</td>
+ <td><code>'values'</code> | <code>'static'</code> | <code>'count'</code> | <code>'count > x'</code> (where x is an integer)</td>
+ <td><code>'values'</code></td>
+ <td>
+ <p>Specifies how the selection is displayed with a multiple select.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>selectOnTab</td>
+ <td>boolean</td>
+ <td><code>false</code></td>
+ <td>
+ <p>When set to <code>true</code>, treats the tab character like the enter or space characters within the
+ selectpicker dropdown.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>showSubtext</td>
+ <td>boolean</td>
+ <td><code>false</code></td>
+ <td>
+ <p>When set to <code>true</code>, display subtext associated with a selected option in the button.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>showIcon</td>
+ <td>boolean</td>
+ <td><code>true</code></td>
+ <td>
+ <p>When set to <code>true</code>, display icon(s) associated with selected option(s) in the button.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>showContent</td>
+ <td>boolean</td>
+ <td><code>true</code></td>
+ <td>
+ <p>When set to <code>true</code>, display custom HTML associated with selected option(s) in the button. When set
+ to <code>false</code>, the option value will be displayed instead.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>size</td>
+ <td><code>'auto'</code> | integer | false</td>
+ <td><code>'auto'</code></td>
+ <td>
+ <p>When set to <code>'auto'</code>, the menu always opens up to show as many items as the window will allow
+ without being cut off.</p>
+ <p>When set to an integer, the menu will show the given number of items, even if the dropdown is cut off.</p>
+ <p>When set to <code>false</code>, the menu will always show all items.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>style</td>
+ <td>string | null</td>
+ <td><code>null</code></td>
+ <td>
+ <p>When set to a string, add the value to the button's style.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>title</td>
+ <td>string | null</td>
+ <td><code>null</code></td>
+ <td>
+ <p>The default title for the selectpicker.</p>
+ </td>
+ </tr>
+ <tr>
+ <td>width</td>
+ <td><code>'auto'</code> | <code>'fit'</code> | css-width | false (where <code>css-width</code> is a CSS width with units, e.g. <code>100px</code>)</td>
+ <td><code>false</code></td>
+ <td>
+ <p>When set to <code>auto</code>, the width of the selectpicker is automatically adjusted to accommodate the
+ widest option.</p>
+ <p>When set to a css-width, the width of the selectpicker is forced inline to the given value.</p>
+ <p>When set to <code>false</code>, all width information is removed.</p>
+ </td>
+ </tr>
+ </tbody>
+</table>
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/mkdocs.yml
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/mkdocs.yml (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/docs/mkdocs.yml 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,14 @@
+site_name: bootstrap-select
+site_description: Bootstrap-select is a jQuery plugin that utilizes Bootstrap's dropdown.js to style and bring additional functionality to normal select boxes.
+repo_url: https://github.com/silviomoreto/bootstrap-select
+theme: bootstrap
+theme_dir: custom_theme
+extra_css:
+- css/custom.css
+pages:
+- Bootstrap-select: index.md
+- Examples: examples.md
+- Options: options.md
+- Methods: methods.md
+extra:
+ version: 1.8.1
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/.jshintrc
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/.jshintrc (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/.jshintrc 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,15 @@
+{
+ "curly": true,
+ "eqeqeq": true,
+ "immed": true,
+ "latedef": true,
+ "newcap": true,
+ "noarg": true,
+ "sub": true,
+ "undef": true,
+ "unused": true,
+ "boss": true,
+ "eqnull": true,
+ "browser": true,
+ "jquery": true
+}
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/bootstrap-select.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/bootstrap-select.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/bootstrap-select.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,1684 @@
+(function ($) {
+ 'use strict';
+
+ //<editor-fold desc="Shims">
+ if (!String.prototype.includes) {
+ (function () {
+ 'use strict'; // needed to support `apply`/`call` with `undefined`/`null`
+ var toString = {}.toString;
+ var defineProperty = (function () {
+ // IE 8 only supports `Object.defineProperty` on DOM elements
+ try {
+ var object = {};
+ var $defineProperty = Object.defineProperty;
+ var result = $defineProperty(object, object, object) && $defineProperty;
+ } catch (error) {
+ }
+ return result;
+ }());
+ var indexOf = ''.indexOf;
+ var includes = function (search) {
+ if (this == null) {
+ throw new TypeError();
+ }
+ var string = String(this);
+ if (search && toString.call(search) == '[object RegExp]') {
+ throw new TypeError();
+ }
+ var stringLength = string.length;
+ var searchString = String(search);
+ var searchLength = searchString.length;
+ var position = arguments.length > 1 ? arguments[1] : undefined;
+ // `ToInteger`
+ var pos = position ? Number(position) : 0;
+ if (pos != pos) { // better `isNaN`
+ pos = 0;
+ }
+ var start = Math.min(Math.max(pos, 0), stringLength);
+ // Avoid the `indexOf` call if no match is possible
+ if (searchLength + start > stringLength) {
+ return false;
+ }
+ return indexOf.call(string, searchString, pos) != -1;
+ };
+ if (defineProperty) {
+ defineProperty(String.prototype, 'includes', {
+ 'value': includes,
+ 'configurable': true,
+ 'writable': true
+ });
+ } else {
+ String.prototype.includes = includes;
+ }
+ }());
+ }
+
+ if (!String.prototype.startsWith) {
+ (function () {
+ 'use strict'; // needed to support `apply`/`call` with `undefined`/`null`
+ var defineProperty = (function () {
+ // IE 8 only supports `Object.defineProperty` on DOM elements
+ try {
+ var object = {};
+ var $defineProperty = Object.defineProperty;
+ var result = $defineProperty(object, object, object) && $defineProperty;
+ } catch (error) {
+ }
+ return result;
+ }());
+ var toString = {}.toString;
+ var startsWith = function (search) {
+ if (this == null) {
+ throw new TypeError();
+ }
+ var string = String(this);
+ if (search && toString.call(search) == '[object RegExp]') {
+ throw new TypeError();
+ }
+ var stringLength = string.length;
+ var searchString = String(search);
+ var searchLength = searchString.length;
+ var position = arguments.length > 1 ? arguments[1] : undefined;
+ // `ToInteger`
+ var pos = position ? Number(position) : 0;
+ if (pos != pos) { // better `isNaN`
+ pos = 0;
+ }
+ var start = Math.min(Math.max(pos, 0), stringLength);
+ // Avoid the `indexOf` call if no match is possible
+ if (searchLength + start > stringLength) {
+ return false;
+ }
+ var index = -1;
+ while (++index < searchLength) {
+ if (string.charCodeAt(start + index) != searchString.charCodeAt(index)) {
+ return false;
+ }
+ }
+ return true;
+ };
+ if (defineProperty) {
+ defineProperty(String.prototype, 'startsWith', {
+ 'value': startsWith,
+ 'configurable': true,
+ 'writable': true
+ });
+ } else {
+ String.prototype.startsWith = startsWith;
+ }
+ }());
+ }
+
+ if (!Object.keys) {
+ Object.keys = function (
+ o, // object
+ k, // key
+ r // result array
+ ){
+ // initialize object and result
+ r=[];
+ // iterate over object keys
+ for (k in o)
+ // fill result array with non-prototypical keys
+ r.hasOwnProperty.call(o, k) && r.push(k);
+ // return result
+ return r;
+ };
+ }
+
+ $.fn.triggerNative = function (eventName) {
+ var el = this[0],
+ event;
+
+ if (el.dispatchEvent) {
+ if (typeof Event === 'function') {
+ // For modern browsers
+ event = new Event(eventName, {
+ bubbles: true
+ });
+ } else {
+ // For IE since it doesn't support Event constructor
+ event = document.createEvent('Event');
+ event.initEvent(eventName, true, false);
+ }
+
+ el.dispatchEvent(event);
+ } else {
+ if (el.fireEvent) {
+ event = document.createEventObject();
+ event.eventType = eventName;
+ el.fireEvent('on' + eventName, event);
+ }
+
+ this.trigger(eventName);
+ }
+ };
+ //</editor-fold>
+
+ // Case insensitive contains search
+ $.expr[':'].icontains = function (obj, index, meta) {
+ var $obj = $(obj);
+ var haystack = ($obj.data('tokens') || $obj.text()).toUpperCase();
+ return haystack.includes(meta[3].toUpperCase());
+ };
+
+ // Case insensitive begins search
+ $.expr[':'].ibegins = function (obj, index, meta) {
+ var $obj = $(obj);
+ var haystack = ($obj.data('tokens') || $obj.text()).toUpperCase();
+ return haystack.startsWith(meta[3].toUpperCase());
+ };
+
+ // Case and accent insensitive contains search
+ $.expr[':'].aicontains = function (obj, index, meta) {
+ var $obj = $(obj);
+ var haystack = ($obj.data('tokens') || $obj.data('normalizedText') || $obj.text()).toUpperCase();
+ return haystack.includes(meta[3].toUpperCase());
+ };
+
+ // Case and accent insensitive begins search
+ $.expr[':'].aibegins = function (obj, index, meta) {
+ var $obj = $(obj);
+ var haystack = ($obj.data('tokens') || $obj.data('normalizedText') || $obj.text()).toUpperCase();
+ return haystack.startsWith(meta[3].toUpperCase());
+ };
+
+ /**
+ * Remove all diatrics from the given text.
+ * @access private
+ * @param {String} text
+ * @returns {String}
+ */
+ function normalizeToBase(text) {
+ var rExps = [
+ {re: /[\xC0-\xC6]/g, ch: "A"},
+ {re: /[\xE0-\xE6]/g, ch: "a"},
+ {re: /[\xC8-\xCB]/g, ch: "E"},
+ {re: /[\xE8-\xEB]/g, ch: "e"},
+ {re: /[\xCC-\xCF]/g, ch: "I"},
+ {re: /[\xEC-\xEF]/g, ch: "i"},
+ {re: /[\xD2-\xD6]/g, ch: "O"},
+ {re: /[\xF2-\xF6]/g, ch: "o"},
+ {re: /[\xD9-\xDC]/g, ch: "U"},
+ {re: /[\xF9-\xFC]/g, ch: "u"},
+ {re: /[\xC7-\xE7]/g, ch: "c"},
+ {re: /[\xD1]/g, ch: "N"},
+ {re: /[\xF1]/g, ch: "n"}
+ ];
+ $.each(rExps, function () {
+ text = text.replace(this.re, this.ch);
+ });
+ return text;
+ }
+
+
+ function htmlEscape(html) {
+ var escapeMap = {
+ '&': '&',
+ '<': '<',
+ '>': '>',
+ '"': '"',
+ "'": ''',
+ '`': '`'
+ };
+ var source = '(?:' + Object.keys(escapeMap).join('|') + ')',
+ testRegexp = new RegExp(source),
+ replaceRegexp = new RegExp(source, 'g'),
+ string = html == null ? '' : '' + html;
+ return testRegexp.test(string) ? string.replace(replaceRegexp, function (match) {
+ return escapeMap[match];
+ }) : string;
+ }
+
+ var Selectpicker = function (element, options, e) {
+ if (e) {
+ e.stopPropagation();
+ e.preventDefault();
+ }
+
+ this.$element = $(element);
+ this.$newElement = null;
+ this.$button = null;
+ this.$menu = null;
+ this.$lis = null;
+ this.options = options;
+
+ // If we have no title yet, try to pull it from the html title attribute (jQuery doesnt' pick it up as it's not a
+ // data-attribute)
+ if (this.options.title === null) {
+ this.options.title = this.$element.attr('title');
+ }
+
+ //Expose public methods
+ this.val = Selectpicker.prototype.val;
+ this.render = Selectpicker.prototype.render;
+ this.refresh = Selectpicker.prototype.refresh;
+ this.setStyle = Selectpicker.prototype.setStyle;
+ this.selectAll = Selectpicker.prototype.selectAll;
+ this.deselectAll = Selectpicker.prototype.deselectAll;
+ this.destroy = Selectpicker.prototype.destroy;
+ this.remove = Selectpicker.prototype.remove;
+ this.show = Selectpicker.prototype.show;
+ this.hide = Selectpicker.prototype.hide;
+
+ this.init();
+ };
+
+ Selectpicker.VERSION = '1.9.3';
+
+ // part of this is duplicated in i18n/defaults-en_US.js. Make sure to update both.
+ Selectpicker.DEFAULTS = {
+ noneSelectedText: 'Nothing selected',
+ noneResultsText: 'No results matched {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ return (numSelected == 1) ? "{0} item selected" : "{0} items selected";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ (numAll == 1) ? 'Limit reached ({n} item max)' : 'Limit reached ({n} items max)',
+ (numGroup == 1) ? 'Group limit reached ({n} item max)' : 'Group limit reached ({n} items max)'
+ ];
+ },
+ selectAllText: 'Select All',
+ deselectAllText: 'Deselect All',
+ doneButton: false,
+ doneButtonText: 'Close',
+ multipleSeparator: ', ',
+ styleBase: 'btn',
+ style: 'btn-default',
+ size: 'auto',
+ title: null,
+ selectedTextFormat: 'values',
+ width: false,
+ container: false,
+ hideDisabled: false,
+ showSubtext: false,
+ showIcon: true,
+ showContent: true,
+ dropupAuto: true,
+ header: false,
+ liveSearch: false,
+ liveSearchPlaceholder: null,
+ liveSearchNormalize: false,
+ liveSearchStyle: 'contains',
+ actionsBox: false,
+ iconBase: 'glyphicon',
+ tickIcon: 'glyphicon-ok',
+ template: {
+ caret: '<span class="caret"></span>'
+ },
+ maxOptions: false,
+ mobile: false,
+ selectOnTab: false,
+ dropdownAlignRight: false
+ };
+
+ Selectpicker.prototype = {
+
+ constructor: Selectpicker,
+
+ init: function () {
+ var that = this,
+ id = this.$element.attr('id');
+
+ // store originalIndex (key) and newIndex (value) in this.liObj for fast accessibility
+ // allows us to do this.$lis.eq(that.liObj[index]) instead of this.$lis.filter('[data-original-index="' + index + '"]')
+ this.liObj = {};
+ this.multiple = this.$element.prop('multiple');
+ this.autofocus = this.$element.prop('autofocus');
+ this.$newElement = this.createView();
+ this.$element
+ .after(this.$newElement)
+ .appendTo(this.$newElement);
+ this.$button = this.$newElement.children('button');
+ this.$menu = this.$newElement.children('.dropdown-menu');
+ this.$menuInner = this.$menu.children('.inner');
+ this.$searchbox = this.$menu.find('input');
+
+ if (this.options.dropdownAlignRight)
+ this.$menu.addClass('dropdown-menu-right');
+
+ if (typeof id !== 'undefined') {
+ this.$button.attr('data-id', id);
+ $('label[for="' + id + '"]').click(function (e) {
+ e.preventDefault();
+ that.$button.focus();
+ });
+ }
+
+ this.checkDisabled();
+ this.clickListener();
+ if (this.options.liveSearch) this.liveSearchListener();
+ this.render();
+ this.setStyle();
+ this.setWidth();
+ if (this.options.container) this.selectPosition();
+ this.$menu.data('this', this);
+ this.$newElement.data('this', this);
+ if (this.options.mobile) this.mobile();
+
+ this.$newElement.on({
+ 'hide.bs.dropdown': function (e) {
+ that.$element.trigger('hide.bs.select', e);
+ },
+ 'hidden.bs.dropdown': function (e) {
+ that.$element.trigger('hidden.bs.select', e);
+ },
+ 'show.bs.dropdown': function (e) {
+ that.$element.trigger('show.bs.select', e);
+ },
+ 'shown.bs.dropdown': function (e) {
+ that.$element.trigger('shown.bs.select', e);
+ }
+ });
+
+ if (that.$element[0].hasAttribute('required')) {
+ this.$element.on('invalid', function () {
+ that.$button
+ .addClass('bs-invalid')
+ .focus();
+
+ that.$element.on({
+ 'focus.bs.select': function () {
+ that.$button.focus();
+ that.$element.off('focus.bs.select');
+ },
+ 'shown.bs.select': function () {
+ that.$element
+ .val(that.$element.val()) // set the value to hide the validation message in Chrome when menu is opened
+ .off('shown.bs.select');
+ },
+ 'rendered.bs.select': function () {
+ // if select is no longer invalid, remove the bs-invalid class
+ if (this.validity.valid) that.$button.removeClass('bs-invalid');
+ that.$element.off('rendered.bs.select');
+ }
+ });
+
+ });
+ }
+
+ setTimeout(function () {
+ that.$element.trigger('loaded.bs.select');
+ });
+ },
+
+ createDropdown: function () {
+ // Options
+ // If we are multiple, then add the show-tick class by default
+ var multiple = this.multiple ? ' show-tick' : '',
+ inputGroup = this.$element.parent().hasClass('input-group') ? ' input-group-btn' : '',
+ autofocus = this.autofocus ? ' autofocus' : '';
+ // Elements
+ var header = this.options.header ? '<div class="popover-title"><button type="button" class="close" aria-hidden="true">×</button>' + this.options.header + '</div>' : '';
+ var searchbox = this.options.liveSearch ?
+ '<div class="bs-searchbox">' +
+ '<input type="text" class="form-control" autocomplete="off"' +
+ (null === this.options.liveSearchPlaceholder ? '' : ' placeholder="' + htmlEscape(this.options.liveSearchPlaceholder) + '"') + '>' +
+ '</div>'
+ : '';
+ var actionsbox = this.multiple && this.options.actionsBox ?
+ '<div class="bs-actionsbox">' +
+ '<div class="btn-group btn-group-sm btn-block">' +
+ '<button type="button" class="actions-btn bs-select-all btn btn-default">' +
+ this.options.selectAllText +
+ '</button>' +
+ '<button type="button" class="actions-btn bs-deselect-all btn btn-default">' +
+ this.options.deselectAllText +
+ '</button>' +
+ '</div>' +
+ '</div>'
+ : '';
+ var donebutton = this.multiple && this.options.doneButton ?
+ '<div class="bs-donebutton">' +
+ '<div class="btn-group btn-block">' +
+ '<button type="button" class="btn btn-sm btn-default">' +
+ this.options.doneButtonText +
+ '</button>' +
+ '</div>' +
+ '</div>'
+ : '';
+ var drop =
+ '<div class="btn-group bootstrap-select' + multiple + inputGroup + '">' +
+ '<button type="button" class="' + this.options.styleBase + ' dropdown-toggle" data-toggle="dropdown"' + autofocus + '>' +
+ '<span class="filter-option pull-left"></span> ' +
+ '<span class="bs-caret">' +
+ this.options.template.caret +
+ '</span>' +
+ '</button>' +
+ '<div class="dropdown-menu open">' +
+ header +
+ searchbox +
+ actionsbox +
+ '<ul class="dropdown-menu inner" role="menu">' +
+ '</ul>' +
+ donebutton +
+ '</div>' +
+ '</div>';
+
+ return $(drop);
+ },
+
+ createView: function () {
+ var $drop = this.createDropdown(),
+ li = this.createLi();
+
+ $drop.find('ul')[0].innerHTML = li;
+ return $drop;
+ },
+
+ reloadLi: function () {
+ //Remove all children.
+ this.destroyLi();
+ //Re build
+ var li = this.createLi();
+ this.$menuInner[0].innerHTML = li;
+ },
+
+ destroyLi: function () {
+ this.$menu.find('li').remove();
+ },
+
+ createLi: function () {
+ var that = this,
+ _li = [],
+ optID = 0,
+ titleOption = document.createElement('option'),
+ liIndex = -1; // increment liIndex whenever a new <li> element is created to ensure liObj is correct
+
+ // Helper functions
+ /**
+ * @param content
+ * @param [index]
+ * @param [classes]
+ * @param [optgroup]
+ * @returns {string}
+ */
+ var generateLI = function (content, index, classes, optgroup) {
+ return '<li' +
+ ((typeof classes !== 'undefined' & '' !== classes) ? ' class="' + classes + '"' : '') +
+ ((typeof index !== 'undefined' & null !== index) ? ' data-original-index="' + index + '"' : '') +
+ ((typeof optgroup !== 'undefined' & null !== optgroup) ? 'data-optgroup="' + optgroup + '"' : '') +
+ '>' + content + '</li>';
+ };
+
+ /**
+ * @param text
+ * @param [classes]
+ * @param [inline]
+ * @param [tokens]
+ * @returns {string}
+ */
+ var generateA = function (text, classes, inline, tokens) {
+ return '<a tabindex="0"' +
+ (typeof classes !== 'undefined' ? ' class="' + classes + '"' : '') +
+ (typeof inline !== 'undefined' ? ' style="' + inline + '"' : '') +
+ (that.options.liveSearchNormalize ? ' data-normalized-text="' + normalizeToBase(htmlEscape(text)) + '"' : '') +
+ (typeof tokens !== 'undefined' || tokens !== null ? ' data-tokens="' + tokens + '"' : '') +
+ '>' + text +
+ '<span class="' + that.options.iconBase + ' ' + that.options.tickIcon + ' check-mark"></span>' +
+ '</a>';
+ };
+
+ if (this.options.title && !this.multiple) {
+ // this option doesn't create a new <li> element, but does add a new option, so liIndex is decreased
+ // since liObj is recalculated on every refresh, liIndex needs to be decreased even if the titleOption is already appended
+ liIndex--;
+
+ if (!this.$element.find('.bs-title-option').length) {
+ // Use native JS to prepend option (faster)
+ var element = this.$element[0];
+ titleOption.className = 'bs-title-option';
+ titleOption.appendChild(document.createTextNode(this.options.title));
+ titleOption.value = '';
+ element.insertBefore(titleOption, element.firstChild);
+ // Check if selected attribute is already set on an option. If not, select the titleOption option.
+ if ($(element.options[element.selectedIndex]).attr('selected') === undefined) titleOption.selected = true;
+ }
+ }
+
+ this.$element.find('option').each(function (index) {
+ var $this = $(this);
+
+ liIndex++;
+
+ if ($this.hasClass('bs-title-option')) return;
+
+ // Get the class and text for the option
+ var optionClass = this.className || '',
+ inline = this.style.cssText,
+ text = $this.data('content') ? $this.data('content') : $this.html(),
+ tokens = $this.data('tokens') ? $this.data('tokens') : null,
+ subtext = typeof $this.data('subtext') !== 'undefined' ? '<small class="text-muted">' + $this.data('subtext') + '</small>' : '',
+ icon = typeof $this.data('icon') !== 'undefined' ? '<span class="' + that.options.iconBase + ' ' + $this.data('icon') + '"></span> ' : '',
+ isDisabled = this.disabled || (this.parentNode.tagName === 'OPTGROUP' && this.parentNode.disabled);
+
+ if (icon !== '' && isDisabled) {
+ icon = '<span>' + icon + '</span>';
+ }
+
+ if (that.options.hideDisabled && isDisabled) {
+ liIndex--;
+ return;
+ }
+
+ if (!$this.data('content')) {
+ // Prepend any icon and append any subtext to the main text.
+ text = icon + '<span class="text">' + text + subtext + '</span>';
+ }
+
+ if (this.parentNode.tagName === 'OPTGROUP' && $this.data('divider') !== true) {
+ var optGroupClass = ' ' + this.parentNode.className || '';
+
+ if ($this.index() === 0) { // Is it the first option of the optgroup?
+ optID += 1;
+
+ // Get the opt group label
+ var label = this.parentNode.label,
+ labelSubtext = typeof $this.parent().data('subtext') !== 'undefined' ? '<small class="text-muted">' + $this.parent().data('subtext') + '</small>' : '',
+ labelIcon = $this.parent().data('icon') ? '<span class="' + that.options.iconBase + ' ' + $this.parent().data('icon') + '"></span> ' : '';
+
+ label = labelIcon + '<span class="text">' + label + labelSubtext + '</span>';
+
+ if (index !== 0 && _li.length > 0) { // Is it NOT the first option of the select && are there elements in the dropdown?
+ liIndex++;
+ _li.push(generateLI('', null, 'divider', optID + 'div'));
+ }
+ liIndex++;
+ _li.push(generateLI(label, null, 'dropdown-header' + optGroupClass, optID));
+ }
+ _li.push(generateLI(generateA(text, 'opt ' + optionClass + optGroupClass, inline, tokens), index, '', optID));
+ } else if ($this.data('divider') === true) {
+ _li.push(generateLI('', index, 'divider'));
+ } else if ($this.data('hidden') === true) {
+ _li.push(generateLI(generateA(text, optionClass, inline, tokens), index, 'hidden is-hidden'));
+ } else {
+ if (this.previousElementSibling && this.previousElementSibling.tagName === 'OPTGROUP') {
+ liIndex++;
+ _li.push(generateLI('', null, 'divider', optID + 'div'));
+ }
+ _li.push(generateLI(generateA(text, optionClass, inline, tokens), index));
+ }
+
+ that.liObj[index] = liIndex;
+ });
+
+ //If we are not multiple, we don't have a selected item, and we don't have a title, select the first element so something is set in the button
+ if (!this.multiple && this.$element.find('option:selected').length === 0 && !this.options.title) {
+ this.$element.find('option').eq(0).prop('selected', true).attr('selected', 'selected');
+ }
+
+ return _li.join('');
+ },
+
+ findLis: function () {
+ if (this.$lis == null) this.$lis = this.$menu.find('li');
+ return this.$lis;
+ },
+
+ /**
+ * @param [updateLi] defaults to true
+ */
+ render: function (updateLi) {
+ var that = this,
+ notDisabled;
+
+ //Update the LI to match the SELECT
+ if (updateLi !== false) {
+ this.$element.find('option').each(function (index) {
+ var $lis = that.findLis().eq(that.liObj[index]);
+
+ that.setDisabled(index, this.disabled || this.parentNode.tagName === 'OPTGROUP' && this.parentNode.disabled, $lis);
+ that.setSelected(index, this.selected, $lis);
+ });
+ }
+
+ this.tabIndex();
+
+ var selectedItems = this.$element.find('option').map(function () {
+ if (this.selected) {
+ if (that.options.hideDisabled && (this.disabled || this.parentNode.tagName === 'OPTGROUP' && this.parentNode.disabled)) return;
+
+ var $this = $(this),
+ icon = $this.data('icon') && that.options.showIcon ? '<i class="' + that.options.iconBase + ' ' + $this.data('icon') + '"></i> ' : '',
+ subtext;
+
+ if (that.options.showSubtext && $this.data('subtext') && !that.multiple) {
+ subtext = ' <small class="text-muted">' + $this.data('subtext') + '</small>';
+ } else {
+ subtext = '';
+ }
+ if (typeof $this.attr('title') !== 'undefined') {
+ return $this.attr('title');
+ } else if ($this.data('content') && that.options.showContent) {
+ return $this.data('content');
+ } else {
+ return icon + $this.html() + subtext;
+ }
+ }
+ }).toArray();
+
+ //Fixes issue in IE10 occurring when no default option is selected and at least one option is disabled
+ //Convert all the values into a comma delimited string
+ var title = !this.multiple ? selectedItems[0] : selectedItems.join(this.options.multipleSeparator);
+
+ //If this is multi select, and the selectText type is count, the show 1 of 2 selected etc..
+ if (this.multiple && this.options.selectedTextFormat.indexOf('count') > -1) {
+ var max = this.options.selectedTextFormat.split('>');
+ if ((max.length > 1 && selectedItems.length > max[1]) || (max.length == 1 && selectedItems.length >= 2)) {
+ notDisabled = this.options.hideDisabled ? ', [disabled]' : '';
+ var totalCount = this.$element.find('option').not('[data-divider="true"], [data-hidden="true"]' + notDisabled).length,
+ tr8nText = (typeof this.options.countSelectedText === 'function') ? this.options.countSelectedText(selectedItems.length, totalCount) : this.options.countSelectedText;
+ title = tr8nText.replace('{0}', selectedItems.length.toString()).replace('{1}', totalCount.toString());
+ }
+ }
+
+ if (this.options.title == undefined) {
+ this.options.title = this.$element.attr('title');
+ }
+
+ if (this.options.selectedTextFormat == 'static') {
+ title = this.options.title;
+ }
+
+ //If we dont have a title, then use the default, or if nothing is set at all, use the not selected text
+ if (!title) {
+ title = typeof this.options.title !== 'undefined' ? this.options.title : this.options.noneSelectedText;
+ }
+
+ //strip all html-tags and trim the result
+ this.$button.attr('title', $.trim(title.replace(/<[^>]*>?/g, '')));
+ this.$button.children('.filter-option').html(title);
+
+ this.$element.trigger('rendered.bs.select');
+ },
+
+ /**
+ * @param [style]
+ * @param [status]
+ */
+ setStyle: function (style, status) {
+ if (this.$element.attr('class')) {
+ this.$newElement.addClass(this.$element.attr('class').replace(/selectpicker|mobile-device|bs-select-hidden|validate\[.*\]/gi, ''));
+ }
+
+ var buttonClass = style ? style : this.options.style;
+
+ if (status == 'add') {
+ this.$button.addClass(buttonClass);
+ } else if (status == 'remove') {
+ this.$button.removeClass(buttonClass);
+ } else {
+ this.$button.removeClass(this.options.style);
+ this.$button.addClass(buttonClass);
+ }
+ },
+
+ liHeight: function (refresh) {
+ if (!refresh && (this.options.size === false || this.sizeInfo)) return;
+
+ var newElement = document.createElement('div'),
+ menu = document.createElement('div'),
+ menuInner = document.createElement('ul'),
+ divider = document.createElement('li'),
+ li = document.createElement('li'),
+ a = document.createElement('a'),
+ text = document.createElement('span'),
+ header = this.options.header && this.$menu.find('.popover-title').length > 0 ? this.$menu.find('.popover-title')[0].cloneNode(true) : null,
+ search = this.options.liveSearch ? document.createElement('div') : null,
+ actions = this.options.actionsBox && this.multiple && this.$menu.find('.bs-actionsbox').length > 0 ? this.$menu.find('.bs-actionsbox')[0].cloneNode(true) : null,
+ doneButton = this.options.doneButton && this.multiple && this.$menu.find('.bs-donebutton').length > 0 ? this.$menu.find('.bs-donebutton')[0].cloneNode(true) : null;
+
+ text.className = 'text';
+ newElement.className = this.$menu[0].parentNode.className + ' open';
+ menu.className = 'dropdown-menu open';
+ menuInner.className = 'dropdown-menu inner';
+ divider.className = 'divider';
+
+ text.appendChild(document.createTextNode('Inner text'));
+ a.appendChild(text);
+ li.appendChild(a);
+ menuInner.appendChild(li);
+ menuInner.appendChild(divider);
+ if (header) menu.appendChild(header);
+ if (search) {
+ // create a span instead of input as creating an input element is slower
+ var input = document.createElement('span');
+ search.className = 'bs-searchbox';
+ input.className = 'form-control';
+ search.appendChild(input);
+ menu.appendChild(search);
+ }
+ if (actions) menu.appendChild(actions);
+ menu.appendChild(menuInner);
+ if (doneButton) menu.appendChild(doneButton);
+ newElement.appendChild(menu);
+
+ document.body.appendChild(newElement);
+
+ var liHeight = a.offsetHeight,
+ headerHeight = header ? header.offsetHeight : 0,
+ searchHeight = search ? search.offsetHeight : 0,
+ actionsHeight = actions ? actions.offsetHeight : 0,
+ doneButtonHeight = doneButton ? doneButton.offsetHeight : 0,
+ dividerHeight = $(divider).outerHeight(true),
+ // fall back to jQuery if getComputedStyle is not supported
+ menuStyle = typeof getComputedStyle === 'function' ? getComputedStyle(menu) : false,
+ $menu = menuStyle ? null : $(menu),
+ menuPadding = parseInt(menuStyle ? menuStyle.paddingTop : $menu.css('paddingTop')) +
+ parseInt(menuStyle ? menuStyle.paddingBottom : $menu.css('paddingBottom')) +
+ parseInt(menuStyle ? menuStyle.borderTopWidth : $menu.css('borderTopWidth')) +
+ parseInt(menuStyle ? menuStyle.borderBottomWidth : $menu.css('borderBottomWidth')),
+ menuExtras = menuPadding +
+ parseInt(menuStyle ? menuStyle.marginTop : $menu.css('marginTop')) +
+ parseInt(menuStyle ? menuStyle.marginBottom : $menu.css('marginBottom')) + 2;
+
+ document.body.removeChild(newElement);
+
+ this.sizeInfo = {
+ liHeight: liHeight,
+ headerHeight: headerHeight,
+ searchHeight: searchHeight,
+ actionsHeight: actionsHeight,
+ doneButtonHeight: doneButtonHeight,
+ dividerHeight: dividerHeight,
+ menuPadding: menuPadding,
+ menuExtras: menuExtras
+ };
+ },
+
+ setSize: function () {
+ this.findLis();
+ this.liHeight();
+
+ if (this.options.header) this.$menu.css('padding-top', 0);
+ if (this.options.size === false) return;
+
+ var that = this,
+ $menu = this.$menu,
+ $menuInner = this.$menuInner,
+ $window = $(window),
+ selectHeight = this.$newElement[0].offsetHeight,
+ liHeight = this.sizeInfo['liHeight'],
+ headerHeight = this.sizeInfo['headerHeight'],
+ searchHeight = this.sizeInfo['searchHeight'],
+ actionsHeight = this.sizeInfo['actionsHeight'],
+ doneButtonHeight = this.sizeInfo['doneButtonHeight'],
+ divHeight = this.sizeInfo['dividerHeight'],
+ menuPadding = this.sizeInfo['menuPadding'],
+ menuExtras = this.sizeInfo['menuExtras'],
+ notDisabled = this.options.hideDisabled ? '.disabled' : '',
+ menuHeight,
+ getHeight,
+ selectOffsetTop,
+ selectOffsetBot,
+ posVert = function () {
+ selectOffsetTop = that.$newElement.offset().top - $window.scrollTop();
+ selectOffsetBot = $window.height() - selectOffsetTop - selectHeight;
+ };
+
+ posVert();
+
+ if (this.options.size === 'auto') {
+ var getSize = function () {
+ var minHeight,
+ hasClass = function (className, include) {
+ return function (element) {
+ if (include) {
+ return (element.classList ? element.classList.contains(className) : $(element).hasClass(className));
+ } else {
+ return !(element.classList ? element.classList.contains(className) : $(element).hasClass(className));
+ }
+ };
+ },
+ lis = that.$menuInner[0].getElementsByTagName('li'),
+ lisVisible = Array.prototype.filter ? Array.prototype.filter.call(lis, hasClass('hidden', false)) : that.$lis.not('.hidden'),
+ optGroup = Array.prototype.filter ? Array.prototype.filter.call(lisVisible, hasClass('dropdown-header', true)) : lisVisible.filter('.dropdown-header');
+
+ posVert();
+ menuHeight = selectOffsetBot - menuExtras;
+
+ if (that.options.container) {
+ if (!$menu.data('height')) $menu.data('height', $menu.height());
+ getHeight = $menu.data('height');
+ } else {
+ getHeight = $menu.height();
+ }
+
+ if (that.options.dropupAuto) {
+ that.$newElement.toggleClass('dropup', selectOffsetTop > selectOffsetBot && (menuHeight - menuExtras) < getHeight);
+ }
+ if (that.$newElement.hasClass('dropup')) {
+ menuHeight = selectOffsetTop - menuExtras;
+ }
+
+ if ((lisVisible.length + optGroup.length) > 3) {
+ minHeight = liHeight * 3 + menuExtras - 2;
+ } else {
+ minHeight = 0;
+ }
+
+ $menu.css({
+ 'max-height': menuHeight + 'px',
+ 'overflow': 'hidden',
+ 'min-height': minHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight + 'px'
+ });
+ $menuInner.css({
+ 'max-height': menuHeight - headerHeight - searchHeight - actionsHeight - doneButtonHeight - menuPadding + 'px',
+ 'overflow-y': 'auto',
+ 'min-height': Math.max(minHeight - menuPadding, 0) + 'px'
+ });
+ };
+ getSize();
+ this.$searchbox.off('input.getSize propertychange.getSize').on('input.getSize propertychange.getSize', getSize);
+ $window.off('resize.getSize scroll.getSize').on('resize.getSize scroll.getSize', getSize);
+ } else if (this.options.size && this.options.size != 'auto' && this.$lis.not(notDisabled).length > this.options.size) {
+ var optIndex = this.$lis.not('.divider').not(notDisabled).children().slice(0, this.options.size).last().parent().index(),
+ divLength = this.$lis.slice(0, optIndex + 1).filter('.divider').length;
+ menuHeight = liHeight * this.options.size + divLength * divHeight + menuPadding;
+
+ if (that.options.container) {
+ if (!$menu.data('height')) $menu.data('height', $menu.height());
+ getHeight = $menu.data('height');
+ } else {
+ getHeight = $menu.height();
+ }
+
+ if (that.options.dropupAuto) {
+ //noinspection JSUnusedAssignment
+ this.$newElement.toggleClass('dropup', selectOffsetTop > selectOffsetBot && (menuHeight - menuExtras) < getHeight);
+ }
+ $menu.css({
+ 'max-height': menuHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight + 'px',
+ 'overflow': 'hidden',
+ 'min-height': ''
+ });
+ $menuInner.css({
+ 'max-height': menuHeight - menuPadding + 'px',
+ 'overflow-y': 'auto',
+ 'min-height': ''
+ });
+ }
+ },
+
+ setWidth: function () {
+ if (this.options.width === 'auto') {
+ this.$menu.css('min-width', '0');
+
+ // Get correct width if element is hidden
+ var $selectClone = this.$menu.parent().clone().appendTo('body'),
+ $selectClone2 = this.options.container ? this.$newElement.clone().appendTo('body') : $selectClone,
+ ulWidth = $selectClone.children('.dropdown-menu').outerWidth(),
+ btnWidth = $selectClone2.css('width', 'auto').children('button').outerWidth();
+
+ $selectClone.remove();
+ $selectClone2.remove();
+
+ // Set width to whatever's larger, button title or longest option
+ this.$newElement.css('width', Math.max(ulWidth, btnWidth) + 'px');
+ } else if (this.options.width === 'fit') {
+ // Remove inline min-width so width can be changed from 'auto'
+ this.$menu.css('min-width', '');
+ this.$newElement.css('width', '').addClass('fit-width');
+ } else if (this.options.width) {
+ // Remove inline min-width so width can be changed from 'auto'
+ this.$menu.css('min-width', '');
+ this.$newElement.css('width', this.options.width);
+ } else {
+ // Remove inline min-width/width so width can be changed
+ this.$menu.css('min-width', '');
+ this.$newElement.css('width', '');
+ }
+ // Remove fit-width class if width is changed programmatically
+ if (this.$newElement.hasClass('fit-width') && this.options.width !== 'fit') {
+ this.$newElement.removeClass('fit-width');
+ }
+ },
+
+ selectPosition: function () {
+ this.$bsContainer = $('<div class="bs-container" />');
+
+ var that = this,
+ pos,
+ actualHeight,
+ getPlacement = function ($element) {
+ that.$bsContainer.addClass($element.attr('class').replace(/form-control|fit-width/gi, '')).toggleClass('dropup', $element.hasClass('dropup'));
+ pos = $element.offset();
+ actualHeight = $element.hasClass('dropup') ? 0 : $element[0].offsetHeight;
+ that.$bsContainer.css({
+ 'top': pos.top + actualHeight,
+ 'left': pos.left,
+ 'width': $element[0].offsetWidth
+ });
+ };
+
+ this.$button.on('click', function () {
+ var $this = $(this);
+
+ if (that.isDisabled()) {
+ return;
+ }
+
+ getPlacement(that.$newElement);
+
+ that.$bsContainer
+ .appendTo(that.options.container)
+ .toggleClass('open', !$this.hasClass('open'))
+ .append(that.$menu);
+ });
+
+ $(window).on('resize scroll', function () {
+ getPlacement(that.$newElement);
+ });
+
+ this.$element.on('hide.bs.select', function () {
+ that.$menu.data('height', that.$menu.height());
+ that.$bsContainer.detach();
+ });
+ },
+
+ setSelected: function (index, selected, $lis) {
+ if (!$lis) {
+ $lis = this.findLis().eq(this.liObj[index]);
+ }
+
+ $lis.toggleClass('selected', selected);
+ },
+
+ setDisabled: function (index, disabled, $lis) {
+ if (!$lis) {
+ $lis = this.findLis().eq(this.liObj[index]);
+ }
+
+ if (disabled) {
+ $lis.addClass('disabled').children('a').attr('href', '#').attr('tabindex', -1);
+ } else {
+ $lis.removeClass('disabled').children('a').removeAttr('href').attr('tabindex', 0);
+ }
+ },
+
+ isDisabled: function () {
+ return this.$element[0].disabled;
+ },
+
+ checkDisabled: function () {
+ var that = this;
+
+ if (this.isDisabled()) {
+ this.$newElement.addClass('disabled');
+ this.$button.addClass('disabled').attr('tabindex', -1);
+ } else {
+ if (this.$button.hasClass('disabled')) {
+ this.$newElement.removeClass('disabled');
+ this.$button.removeClass('disabled');
+ }
+
+ if (this.$button.attr('tabindex') == -1 && !this.$element.data('tabindex')) {
+ this.$button.removeAttr('tabindex');
+ }
+ }
+
+ this.$button.click(function () {
+ return !that.isDisabled();
+ });
+ },
+
+ tabIndex: function () {
+ if (this.$element.data('tabindex') !== this.$element.attr('tabindex') &&
+ (this.$element.attr('tabindex') !== -98 && this.$element.attr('tabindex') !== '-98')) {
+ this.$element.data('tabindex', this.$element.attr('tabindex'));
+ this.$button.attr('tabindex', this.$element.data('tabindex'));
+ }
+
+ this.$element.attr('tabindex', -98);
+ },
+
+ clickListener: function () {
+ var that = this,
+ $document = $(document);
+
+ this.$newElement.on('touchstart.dropdown', '.dropdown-menu', function (e) {
+ e.stopPropagation();
+ });
+
+ $document.data('spaceSelect', false);
+
+ this.$button.on('keyup', function (e) {
+ if (/(32)/.test(e.keyCode.toString(10)) && $document.data('spaceSelect')) {
+ e.preventDefault();
+ $document.data('spaceSelect', false);
+ }
+ });
+
+ this.$button.on('click', function () {
+ that.setSize();
+ that.$element.on('shown.bs.select', function () {
+ if (!that.options.liveSearch && !that.multiple) {
+ that.$menuInner.find('.selected a').focus();
+ } else if (!that.multiple) {
+ var selectedIndex = that.liObj[that.$element[0].selectedIndex];
+
+ if (typeof selectedIndex !== 'number' || that.options.size === false) return;
+
+ // scroll to selected option
+ var offset = that.$lis.eq(selectedIndex)[0].offsetTop - that.$menuInner[0].offsetTop;
+ offset = offset - that.$menuInner[0].offsetHeight/2 + that.sizeInfo.liHeight/2;
+ that.$menuInner[0].scrollTop = offset;
+ }
+ });
+ });
+
+ this.$menuInner.on('click', 'li a', function (e) {
+ var $this = $(this),
+ clickedIndex = $this.parent().data('originalIndex'),
+ prevValue = that.$element.val(),
+ prevIndex = that.$element.prop('selectedIndex');
+
+ // Don't close on multi choice menu
+ if (that.multiple) {
+ e.stopPropagation();
+ }
+
+ e.preventDefault();
+
+ //Don't run if we have been disabled
+ if (!that.isDisabled() && !$this.parent().hasClass('disabled')) {
+ var $options = that.$element.find('option'),
+ $option = $options.eq(clickedIndex),
+ state = $option.prop('selected'),
+ $optgroup = $option.parent('optgroup'),
+ maxOptions = that.options.maxOptions,
+ maxOptionsGrp = $optgroup.data('maxOptions') || false;
+
+ if (!that.multiple) { // Deselect all others if not multi select box
+ $options.prop('selected', false);
+ $option.prop('selected', true);
+ that.$menuInner.find('.selected').removeClass('selected');
+ that.setSelected(clickedIndex, true);
+ } else { // Toggle the one we have chosen if we are multi select.
+ $option.prop('selected', !state);
+ that.setSelected(clickedIndex, !state);
+ $this.blur();
+
+ if (maxOptions !== false || maxOptionsGrp !== false) {
+ var maxReached = maxOptions < $options.filter(':selected').length,
+ maxReachedGrp = maxOptionsGrp < $optgroup.find('option:selected').length;
+
+ if ((maxOptions && maxReached) || (maxOptionsGrp && maxReachedGrp)) {
+ if (maxOptions && maxOptions == 1) {
+ $options.prop('selected', false);
+ $option.prop('selected', true);
+ that.$menuInner.find('.selected').removeClass('selected');
+ that.setSelected(clickedIndex, true);
+ } else if (maxOptionsGrp && maxOptionsGrp == 1) {
+ $optgroup.find('option:selected').prop('selected', false);
+ $option.prop('selected', true);
+ var optgroupID = $this.parent().data('optgroup');
+ that.$menuInner.find('[data-optgroup="' + optgroupID + '"]').removeClass('selected');
+ that.setSelected(clickedIndex, true);
+ } else {
+ var maxOptionsArr = (typeof that.options.maxOptionsText === 'function') ?
+ that.options.maxOptionsText(maxOptions, maxOptionsGrp) : that.options.maxOptionsText,
+ maxTxt = maxOptionsArr[0].replace('{n}', maxOptions),
+ maxTxtGrp = maxOptionsArr[1].replace('{n}', maxOptionsGrp),
+ $notify = $('<div class="notify"></div>');
+ // If {var} is set in array, replace it
+ /** @deprecated */
+ if (maxOptionsArr[2]) {
+ maxTxt = maxTxt.replace('{var}', maxOptionsArr[2][maxOptions > 1 ? 0 : 1]);
+ maxTxtGrp = maxTxtGrp.replace('{var}', maxOptionsArr[2][maxOptionsGrp > 1 ? 0 : 1]);
+ }
+
+ $option.prop('selected', false);
+
+ that.$menu.append($notify);
+
+ if (maxOptions && maxReached) {
+ $notify.append($('<div>' + maxTxt + '</div>'));
+ that.$element.trigger('maxReached.bs.select');
+ }
+
+ if (maxOptionsGrp && maxReachedGrp) {
+ $notify.append($('<div>' + maxTxtGrp + '</div>'));
+ that.$element.trigger('maxReachedGrp.bs.select');
+ }
+
+ setTimeout(function () {
+ that.setSelected(clickedIndex, false);
+ }, 10);
+
+ $notify.delay(750).fadeOut(300, function () {
+ $(this).remove();
+ });
+ }
+ }
+ }
+ }
+
+ if (!that.multiple) {
+ that.$button.focus();
+ } else if (that.options.liveSearch) {
+ that.$searchbox.focus();
+ }
+
+ // Trigger select 'change'
+ if ((prevValue != that.$element.val() && that.multiple) || (prevIndex != that.$element.prop('selectedIndex') && !that.multiple)) {
+ that.$element.triggerNative('change');
+ // $option.prop('selected') is current option state (selected/unselected). state is previous option state.
+ that.$element.trigger('changed.bs.select', [clickedIndex, $option.prop('selected'), state]);
+ }
+ }
+ });
+
+ this.$menu.on('click', 'li.disabled a, .popover-title, .popover-title :not(.close)', function (e) {
+ if (e.currentTarget == this) {
+ e.preventDefault();
+ e.stopPropagation();
+ if (that.options.liveSearch && !$(e.target).hasClass('close')) {
+ that.$searchbox.focus();
+ } else {
+ that.$button.focus();
+ }
+ }
+ });
+
+ this.$menuInner.on('click', '.divider, .dropdown-header', function (e) {
+ e.preventDefault();
+ e.stopPropagation();
+ if (that.options.liveSearch) {
+ that.$searchbox.focus();
+ } else {
+ that.$button.focus();
+ }
+ });
+
+ this.$menu.on('click', '.popover-title .close', function () {
+ that.$button.click();
+ });
+
+ this.$searchbox.on('click', function (e) {
+ e.stopPropagation();
+ });
+
+ this.$menu.on('click', '.actions-btn', function (e) {
+ if (that.options.liveSearch) {
+ that.$searchbox.focus();
+ } else {
+ that.$button.focus();
+ }
+
+ e.preventDefault();
+ e.stopPropagation();
+
+ if ($(this).hasClass('bs-select-all')) {
+ that.selectAll();
+ } else {
+ that.deselectAll();
+ }
+ that.$element.triggerNative('change');
+ });
+
+ this.$element.change(function () {
+ that.render(false);
+ });
+ },
+
+ liveSearchListener: function () {
+ var that = this,
+ $no_results = $('<li class="no-results"></li>');
+
+ this.$button.on('click.dropdown.data-api touchstart.dropdown.data-api', function () {
+ that.$menuInner.find('.active').removeClass('active');
+ if (!!that.$searchbox.val()) {
+ that.$searchbox.val('');
+ that.$lis.not('.is-hidden').removeClass('hidden');
+ if (!!$no_results.parent().length) $no_results.remove();
+ }
+ if (!that.multiple) that.$menuInner.find('.selected').addClass('active');
+ setTimeout(function () {
+ that.$searchbox.focus();
+ }, 10);
+ });
+
+ this.$searchbox.on('click.dropdown.data-api focus.dropdown.data-api touchend.dropdown.data-api', function (e) {
+ e.stopPropagation();
+ });
+
+ this.$searchbox.on('input propertychange', function () {
+ if (that.$searchbox.val()) {
+ var $searchBase = that.$lis.not('.is-hidden').removeClass('hidden').children('a');
+ if (that.options.liveSearchNormalize) {
+ $searchBase = $searchBase.not(':a' + that._searchStyle() + '("' + normalizeToBase(that.$searchbox.val()) + '")');
+ } else {
+ $searchBase = $searchBase.not(':' + that._searchStyle() + '("' + that.$searchbox.val() + '")');
+ }
+ $searchBase.parent().addClass('hidden');
+
+ that.$lis.filter('.dropdown-header').each(function () {
+ var $this = $(this),
+ optgroup = $this.data('optgroup');
+
+ if (that.$lis.filter('[data-optgroup=' + optgroup + ']').not($this).not('.hidden').length === 0) {
+ $this.addClass('hidden');
+ that.$lis.filter('[data-optgroup=' + optgroup + 'div]').addClass('hidden');
+ }
+ });
+
+ var $lisVisible = that.$lis.not('.hidden');
+
+ // hide divider if first or last visible, or if followed by another divider
+ $lisVisible.each(function (index) {
+ var $this = $(this);
+
+ if ($this.hasClass('divider') && (
+ $this.index() === $lisVisible.first().index() ||
+ $this.index() === $lisVisible.last().index() ||
+ $lisVisible.eq(index + 1).hasClass('divider'))) {
+ $this.addClass('hidden');
+ }
+ });
+
+ if (!that.$lis.not('.hidden, .no-results').length) {
+ if (!!$no_results.parent().length) {
+ $no_results.remove();
+ }
+ $no_results.html(that.options.noneResultsText.replace('{0}', '"' + htmlEscape(that.$searchbox.val()) + '"')).show();
+ that.$menuInner.append($no_results);
+ } else if (!!$no_results.parent().length) {
+ $no_results.remove();
+ }
+ } else {
+ that.$lis.not('.is-hidden').removeClass('hidden');
+ if (!!$no_results.parent().length) {
+ $no_results.remove();
+ }
+ }
+
+ that.$lis.filter('.active').removeClass('active');
+ if (that.$searchbox.val()) that.$lis.not('.hidden, .divider, .dropdown-header').eq(0).addClass('active').children('a').focus();
+ $(this).focus();
+ });
+ },
+
+ _searchStyle: function () {
+ var styles = {
+ begins: 'ibegins',
+ startsWith: 'ibegins'
+ };
+
+ return styles[this.options.liveSearchStyle] || 'icontains';
+ },
+
+ val: function (value) {
+ if (typeof value !== 'undefined') {
+ this.$element.val(value);
+ this.render();
+
+ return this.$element;
+ } else {
+ return this.$element.val();
+ }
+ },
+
+ changeAll: function (status) {
+ if (typeof status === 'undefined') status = true;
+
+ this.findLis();
+
+ var $options = this.$element.find('option'),
+ $lisVisible = this.$lis.not('.divider, .dropdown-header, .disabled, .hidden').toggleClass('selected', status),
+ lisVisLen = $lisVisible.length,
+ selectedOptions = [];
+
+ for (var i = 0; i < lisVisLen; i++) {
+ var origIndex = $lisVisible[i].getAttribute('data-original-index');
+ selectedOptions[selectedOptions.length] = $options.eq(origIndex)[0];
+ }
+
+ $(selectedOptions).prop('selected', status);
+
+ this.render(false);
+ },
+
+ selectAll: function () {
+ return this.changeAll(true);
+ },
+
+ deselectAll: function () {
+ return this.changeAll(false);
+ },
+
+ keydown: function (e) {
+ var $this = $(this),
+ $parent = $this.is('input') ? $this.parent().parent() : $this.parent(),
+ $items,
+ that = $parent.data('this'),
+ index,
+ next,
+ first,
+ last,
+ prev,
+ nextPrev,
+ prevIndex,
+ isActive,
+ selector = ':not(.disabled, .hidden, .dropdown-header, .divider)',
+ keyCodeMap = {
+ 32: ' ',
+ 48: '0',
+ 49: '1',
+ 50: '2',
+ 51: '3',
+ 52: '4',
+ 53: '5',
+ 54: '6',
+ 55: '7',
+ 56: '8',
+ 57: '9',
+ 59: ';',
+ 65: 'a',
+ 66: 'b',
+ 67: 'c',
+ 68: 'd',
+ 69: 'e',
+ 70: 'f',
+ 71: 'g',
+ 72: 'h',
+ 73: 'i',
+ 74: 'j',
+ 75: 'k',
+ 76: 'l',
+ 77: 'm',
+ 78: 'n',
+ 79: 'o',
+ 80: 'p',
+ 81: 'q',
+ 82: 'r',
+ 83: 's',
+ 84: 't',
+ 85: 'u',
+ 86: 'v',
+ 87: 'w',
+ 88: 'x',
+ 89: 'y',
+ 90: 'z',
+ 96: '0',
+ 97: '1',
+ 98: '2',
+ 99: '3',
+ 100: '4',
+ 101: '5',
+ 102: '6',
+ 103: '7',
+ 104: '8',
+ 105: '9'
+ };
+
+ if (that.options.liveSearch) $parent = $this.parent().parent();
+
+ if (that.options.container) $parent = that.$menu;
+
+ $items = $('[role=menu] li', $parent);
+
+ isActive = that.$newElement.hasClass('open');
+
+ if (!isActive && (e.keyCode >= 48 && e.keyCode <= 57 || e.keyCode >= 96 && e.keyCode <= 105 || e.keyCode >= 65 && e.keyCode <= 90)) {
+ if (!that.options.container) {
+ that.setSize();
+ that.$menu.parent().addClass('open');
+ isActive = true;
+ } else {
+ that.$button.trigger('click');
+ }
+ that.$searchbox.focus();
+ }
+
+ if (that.options.liveSearch) {
+ if (/(^9$|27)/.test(e.keyCode.toString(10)) && isActive && that.$menu.find('.active').length === 0) {
+ e.preventDefault();
+ that.$menu.parent().removeClass('open');
+ if (that.options.container) that.$newElement.removeClass('open');
+ that.$button.focus();
+ }
+ // $items contains li elements when liveSearch is enabled
+ $items = $('[role=menu] li' + selector, $parent);
+ if (!$this.val() && !/(38|40)/.test(e.keyCode.toString(10))) {
+ if ($items.filter('.active').length === 0) {
+ $items = that.$menuInner.find('li');
+ if (that.options.liveSearchNormalize) {
+ $items = $items.filter(':a' + that._searchStyle() + '(' + normalizeToBase(keyCodeMap[e.keyCode]) + ')');
+ } else {
+ $items = $items.filter(':' + that._searchStyle() + '(' + keyCodeMap[e.keyCode] + ')');
+ }
+ }
+ }
+ }
+
+ if (!$items.length) return;
+
+ if (/(38|40)/.test(e.keyCode.toString(10))) {
+ index = $items.index($items.find('a').filter(':focus').parent());
+ first = $items.filter(selector).first().index();
+ last = $items.filter(selector).last().index();
+ next = $items.eq(index).nextAll(selector).eq(0).index();
+ prev = $items.eq(index).prevAll(selector).eq(0).index();
+ nextPrev = $items.eq(next).prevAll(selector).eq(0).index();
+
+ if (that.options.liveSearch) {
+ $items.each(function (i) {
+ if (!$(this).hasClass('disabled')) {
+ $(this).data('index', i);
+ }
+ });
+ index = $items.index($items.filter('.active'));
+ first = $items.first().data('index');
+ last = $items.last().data('index');
+ next = $items.eq(index).nextAll().eq(0).data('index');
+ prev = $items.eq(index).prevAll().eq(0).data('index');
+ nextPrev = $items.eq(next).prevAll().eq(0).data('index');
+ }
+
+ prevIndex = $this.data('prevIndex');
+
+ if (e.keyCode == 38) {
+ if (that.options.liveSearch) index--;
+ if (index != nextPrev && index > prev) index = prev;
+ if (index < first) index = first;
+ if (index == prevIndex) index = last;
+ } else if (e.keyCode == 40) {
+ if (that.options.liveSearch) index++;
+ if (index == -1) index = 0;
+ if (index != nextPrev && index < next) index = next;
+ if (index > last) index = last;
+ if (index == prevIndex) index = first;
+ }
+
+ $this.data('prevIndex', index);
+
+ if (!that.options.liveSearch) {
+ $items.eq(index).children('a').focus();
+ } else {
+ e.preventDefault();
+ if (!$this.hasClass('dropdown-toggle')) {
+ $items.removeClass('active').eq(index).addClass('active').children('a').focus();
+ $this.focus();
+ }
+ }
+
+ } else if (!$this.is('input')) {
+ var keyIndex = [],
+ count,
+ prevKey;
+
+ $items.each(function () {
+ if (!$(this).hasClass('disabled')) {
+ if ($.trim($(this).children('a').text().toLowerCase()).substring(0, 1) == keyCodeMap[e.keyCode]) {
+ keyIndex.push($(this).index());
+ }
+ }
+ });
+
+ count = $(document).data('keycount');
+ count++;
+ $(document).data('keycount', count);
+
+ prevKey = $.trim($(':focus').text().toLowerCase()).substring(0, 1);
+
+ if (prevKey != keyCodeMap[e.keyCode]) {
+ count = 1;
+ $(document).data('keycount', count);
+ } else if (count >= keyIndex.length) {
+ $(document).data('keycount', 0);
+ if (count > keyIndex.length) count = 1;
+ }
+
+ $items.eq(keyIndex[count - 1]).children('a').focus();
+ }
+
+ // Select focused option if "Enter", "Spacebar" or "Tab" (when selectOnTab is true) are pressed inside the menu.
+ if ((/(13|32)/.test(e.keyCode.toString(10)) || (/(^9$)/.test(e.keyCode.toString(10)) && that.options.selectOnTab)) && isActive) {
+ if (!/(32)/.test(e.keyCode.toString(10))) e.preventDefault();
+ if (!that.options.liveSearch) {
+ var elem = $(':focus');
+ elem.click();
+ // Bring back focus for multiselects
+ elem.focus();
+ // Prevent screen from scrolling if the user hit the spacebar
+ e.preventDefault();
+ // Fixes spacebar selection of dropdown items in FF & IE
+ $(document).data('spaceSelect', true);
+ } else if (!/(32)/.test(e.keyCode.toString(10))) {
+ that.$menuInner.find('.active a').click();
+ $this.focus();
+ }
+ $(document).data('keycount', 0);
+ }
+
+ if ((/(^9$|27)/.test(e.keyCode.toString(10)) && isActive && (that.multiple || that.options.liveSearch)) || (/(27)/.test(e.keyCode.toString(10)) && !isActive)) {
+ that.$menu.parent().removeClass('open');
+ if (that.options.container) that.$newElement.removeClass('open');
+ that.$button.focus();
+ }
+ },
+
+ mobile: function () {
+ this.$element.addClass('mobile-device');
+ },
+
+ refresh: function () {
+ this.$lis = null;
+ this.liObj = {};
+ this.reloadLi();
+ this.render();
+ this.checkDisabled();
+ this.liHeight(true);
+ this.setStyle();
+ this.setWidth();
+ if (this.$lis) this.$searchbox.trigger('propertychange');
+
+ this.$element.trigger('refreshed.bs.select');
+ },
+
+ hide: function () {
+ this.$newElement.hide();
+ },
+
+ show: function () {
+ this.$newElement.show();
+ },
+
+ remove: function () {
+ this.$newElement.remove();
+ this.$element.remove();
+ },
+
+ destroy: function () {
+ this.$newElement.remove();
+
+ if (this.$bsContainer) {
+ this.$bsContainer.remove();
+ } else {
+ this.$menu.remove();
+ }
+
+ this.$element
+ .off('.bs.select')
+ .removeData('selectpicker')
+ .removeClass('bs-select-hidden selectpicker');
+ }
+ };
+
+ // SELECTPICKER PLUGIN DEFINITION
+ // ==============================
+ function Plugin(option, event) {
+ // get the args of the outer function..
+ var args = arguments;
+ // The arguments of the function are explicitly re-defined from the argument list, because the shift causes them
+ // to get lost/corrupted in android 2.3 and IE9 #715 #775
+ var _option = option,
+ _event = event;
+ [].shift.apply(args);
+
+ var value;
+ var chain = this.each(function () {
+ var $this = $(this);
+ if ($this.is('select')) {
+ var data = $this.data('selectpicker'),
+ options = typeof _option == 'object' && _option;
+
+ if (!data) {
+ var config = $.extend({}, Selectpicker.DEFAULTS, $.fn.selectpicker.defaults || {}, $this.data(), options);
+ config.template = $.extend({}, Selectpicker.DEFAULTS.template, ($.fn.selectpicker.defaults ? $.fn.selectpicker.defaults.template : {}), $this.data().template, options.template);
+ $this.data('selectpicker', (data = new Selectpicker(this, config, _event)));
+ } else if (options) {
+ for (var i in options) {
+ if (options.hasOwnProperty(i)) {
+ data.options[i] = options[i];
+ }
+ }
+ }
+
+ if (typeof _option == 'string') {
+ if (data[_option] instanceof Function) {
+ value = data[_option].apply(data, args);
+ } else {
+ value = data.options[_option];
+ }
+ }
+ }
+ });
+
+ if (typeof value !== 'undefined') {
+ //noinspection JSUnusedAssignment
+ return value;
+ } else {
+ return chain;
+ }
+ }
+
+ var old = $.fn.selectpicker;
+ $.fn.selectpicker = Plugin;
+ $.fn.selectpicker.Constructor = Selectpicker;
+
+ // SELECTPICKER NO CONFLICT
+ // ========================
+ $.fn.selectpicker.noConflict = function () {
+ $.fn.selectpicker = old;
+ return this;
+ };
+
+ $(document)
+ .data('keycount', 0)
+ .on('keydown.bs.select', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input', Selectpicker.prototype.keydown)
+ .on('focusin.modal', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input', function (e) {
+ e.stopPropagation();
+ });
+
+ // SELECTPICKER DATA-API
+ // =====================
+ $(window).on('load.bs.select.data-api', function () {
+ $('.selectpicker').each(function () {
+ var $selectpicker = $(this);
+ Plugin.call($selectpicker, $selectpicker.data());
+ })
+ });
+})(jQuery);
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-ar_AR.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-ar_AR.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-ar_AR.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,23 @@
+/*!
+ * Translated default messages for bootstrap-select.
+ * Locale: AR (Arabic)
+ * Author: Yasser Lotfy <y_l at alive.com>
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'لم يتم إختيار شئ',
+ noneResultsText: 'لا توجد نتائج مطابقة لـ {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ return (numSelected == 1) ? "{0} خيار تم إختياره" : "{0} خيارات تمت إختيارها";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ (numAll == 1) ? 'تخطى الحد المسموح ({n} خيار بحد أقصى)' : 'تخطى الحد المسموح ({n} خيارات بحد أقصى)',
+ (numGroup == 1) ? 'تخطى الحد المسموح للمجموعة ({n} خيار بحد أقصى)' : 'تخطى الحد المسموح للمجموعة ({n} خيارات بحد أقصى)'
+ ];
+ },
+ selectAllText: 'إختيار الجميع',
+ deselectAllText: 'إلغاء إختيار الجميع',
+ multipleSeparator: '، '
+ };
+})(jQuery);
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-bg_BG.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-bg_BG.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-bg_BG.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: BG (Bulgaria)
+ * Region: BG (Bulgaria)
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Нищо избрано',
+ noneResultsText: 'Няма резултат за {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ return (numSelected == 1) ? "{0} избран елемент" : "{0} избрани елемента";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ (numAll == 1) ? 'Лимита е достигнат ({n} елемент максимум)' : 'Лимита е достигнат ({n} елемента максимум)',
+ (numGroup == 1) ? 'Груповия лимит е достигнат ({n} елемент максимум)' : 'Груповия лимит е достигнат ({n} елемента максимум)'
+ ];
+ },
+ selectAllText: 'Избери всички',
+ deselectAllText: 'Размаркирай всички',
+ multipleSeparator: ', '
+ };
+})(jQuery);
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-cs_CZ.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-cs_CZ.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-cs_CZ.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,14 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: CS
+ * Region: CZ (Czech Republic)
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Nic není vybráno',
+ noneResultsText: 'Žádné výsledky {0}',
+ countSelectedText: 'Označeno {0} z {1}',
+ maxOptionsText: ['Limit překročen ({n} {var} max)', 'Limit skupiny překročen ({n} {var} max)', ['položek', 'položka']],
+ multipleSeparator: ', '
+ };
+})(jQuery);
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-da_DK.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-da_DK.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-da_DK.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: DA (Danish)
+ * Region: DK (Denmark)
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Intet valgt',
+ noneResultsText: 'Ingen resultater fundet {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ return (numSelected == 1) ? "{0} valgt" : "{0} valgt";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ (numAll == 1) ? 'Begrænsning nået (max {n} valgt)' : 'Begrænsning nået (max {n} valgte)',
+ (numGroup == 1) ? 'Gruppe-begrænsning nået (max {n} valgt)' : 'Gruppe-begrænsning nået (max {n} valgte)'
+ ];
+ },
+ selectAllText: 'Markér alle',
+ deselectAllText: 'Afmarkér alle',
+ multipleSeparator: ', '
+ };
+})(jQuery);
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-de_DE.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-de_DE.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-de_DE.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,14 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: DE (German, deutsch)
+ * Region: DE (Germany, Deutschland)
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Bitte wählen...',
+ noneResultsText: 'Keine Ergebnisse für {0}',
+ countSelectedText: '{0} von {1} ausgewählt',
+ maxOptionsText: ['Limit erreicht ({n} {var} max.)', 'Gruppen-Limit erreicht ({n} {var} max.)', ['Eintrag', 'Einträge']],
+ multipleSeparator: ', '
+ };
+})(jQuery);
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-en_US.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-en_US.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-en_US.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: EN (English)
+ * Region: US (United States)
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Nothing selected',
+ noneResultsText: 'No results match {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ return (numSelected == 1) ? "{0} item selected" : "{0} items selected";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ (numAll == 1) ? 'Limit reached ({n} item max)' : 'Limit reached ({n} items max)',
+ (numGroup == 1) ? 'Group limit reached ({n} item max)' : 'Group limit reached ({n} items max)'
+ ];
+ },
+ selectAllText: 'Select All',
+ deselectAllText: 'Deselect All',
+ multipleSeparator: ', '
+ };
+})(jQuery);
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-es_CL.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-es_CL.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-es_CL.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,14 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: ES (Spanish)
+ * Region: CL (Chile)
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'No hay selección',
+ noneResultsText: 'No hay resultados {0}',
+ countSelectedText: 'Seleccionados {0} de {1}',
+ maxOptionsText: ['Límite alcanzado ({n} {var} max)', 'Límite del grupo alcanzado({n} {var} max)', ['elementos', 'element']],
+ multipleSeparator: ', '
+ };
+})(jQuery);
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-eu.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-eu.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-eu.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,14 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: EU (Basque)
+ * Region:
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Hautapenik ez',
+ noneResultsText: 'Emaitzarik ez {0}',
+ countSelectedText: '{1}(e)tik {0} hautatuta',
+ maxOptionsText: ['Mugara iritsita ({n} {var} gehienez)', 'Taldearen mugara iritsita ({n} {var} gehienez)', ['elementu', 'elementu']],
+ multipleSeparator: ', '
+ };
+})(jQuery);
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-fa_IR.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-fa_IR.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-fa_IR.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,16 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: FA (Farsi)
+ * Region: IR (Iran)
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'چیزی انتخاب نشده است',
+ noneResultsText: 'هیج مشابهی برای {0} پیدا نشد',
+ countSelectedText: "{0} از {1} مورد انتخاب شده",
+ maxOptionsText: ['بیشتر ممکن نیست {حداکثر {n} عدد}', 'بیشتر ممکن نیست {حداکثر {n} عدد}'],
+ selectAllText: 'انتخاب همه',
+ deselectAllText: 'انتخاب هیچ کدام',
+ multipleSeparator: ', '
+ };
+})(jQuery);
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-fi_FI.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-fi_FI.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-fi_FI.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: FI (Finnish)
+ * Region: FI (Finland)
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Ei valintoja',
+ noneResultsText: 'Ei hakutuloksia {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ return (numSelected == 1) ? "{0} valittu" : "{0} valitut";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ (numAll == 1) ? 'Valintojen maksimimäärä ({n} saavutettu)' : 'Valintojen maksimimäärä ({n} saavutettu)',
+ (numGroup == 1) ? 'Ryhmän maksimimäärä ({n} saavutettu)' : 'Ryhmän maksimimäärä ({n} saavutettu)'
+ ];
+ },
+ selectAllText: 'Valitse kaikki',
+ deselectAllText: 'Poista kaikki',
+ multipleSeparator: ', '
+ };
+})(jQuery);
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-fr_FR.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-fr_FR.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-fr_FR.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,21 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: FR (French; Français)
+ * Region: FR (France)
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Aucune sélection',
+ noneResultsText: 'Aucun résultat pour {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ return (numSelected > 1) ? "{0} éléments sélectionnés" : "{0} élément sélectionné";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ (numAll > 1) ? 'Limite atteinte ({n} éléments max)' : 'Limite atteinte ({n} élément max)',
+ (numGroup > 1) ? 'Limite du groupe atteinte ({n} éléments max)' : 'Limite du groupe atteinte ({n} élément max)'
+ ];
+ },
+ multipleSeparator: ', '
+ };
+})(jQuery);
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-hu_HU.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-hu_HU.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-hu_HU.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: HU (Hungarian)
+ * Region: HU (Hungary)
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Válasszon!',
+ noneResultsText: 'Nincs találat {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ return '{0} elem kiválasztva';
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ 'Legfeljebb {n} elem választható',
+ 'A csoportban legfeljebb {n} elem választható'
+ ];
+ },
+ selectAllText: 'Mind',
+ deselectAllText: 'Egyik sem',
+ multipleSeparator: ', '
+ };
+})(jQuery);
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-id_ID.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-id_ID.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-id_ID.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,16 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: ID (Indonesian; Bahasa Indonesia)
+ * Region: ID (Indonesia)
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Tidak ada yang dipilih',
+ noneResultsText: 'Tidak ada yang cocok {0}',
+ countSelectedText: '{0} terpilih',
+ maxOptionsText: ['Mencapai batas (maksimum {n})', 'Mencapai batas grup (maksimum {n})'],
+ selectAllText: 'Pilih Semua',
+ deselectAllText: 'Hapus Semua',
+ multipleSeparator: ', '
+ };
+})(jQuery);
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-it_IT.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-it_IT.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-it_IT.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,15 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: IT (Italian; italiano)
+ * Region: IT (Italy; Italia)
+ * Author: Michele Beltrame <mb at cattlegrid.info>
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Nessuna selezione',
+ noneResultsText: 'Nessun risultato per {0}',
+ countSelectedText: 'Selezionati {0} di {1}',
+ maxOptionsText: ['Limite raggiunto ({n} {var} max)', 'Limite del gruppo raggiunto ({n} {var} max)', ['elementi', 'elemento']],
+ multipleSeparator: ', '
+ };
+})(jQuery);
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-ko_KR.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-ko_KR.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-ko_KR.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: KO (Korean)
+ * Region: KR (South Korea)
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: '항목을 선택해주세요',
+ noneResultsText: '{0} 검색 결과가 없습니다',
+ countSelectedText: function (numSelected, numTotal) {
+ return "{0}개를 선택하였습니다";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ '{n}개까지 선택 가능합니다',
+ '해당 그룹은 {n}개까지 선택 가능합니다'
+ ];
+ },
+ selectAllText: '전체선택',
+ deselectAllText: '전체해제',
+ multipleSeparator: ', '
+ };
+})(jQuery);
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-nb_NO.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-nb_NO.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-nb_NO.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,44 @@
+/*!
+ * Bootstrap-select v1.8.1 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module unless amdModuleId is set
+ define(["jquery"], function (a0) {
+ return (factory(a0));
+ });
+ } else if (typeof exports === 'object') {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(jQuery);
+ }
+}(this, function (jQuery) {
+
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Ingen valgt',
+ noneResultsText: 'Søket gir ingen treff {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ return (numSelected == 1) ? "{0} alternativ valgt" : "{0} alternativer valgt";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ (numAll == 1) ? 'Grense nådd (maks {n} valg)' : 'Grense nådd (maks {n} valg)',
+ (numGroup == 1) ? 'Grense for grupper nådd (maks {n} grupper)' : 'Grense for grupper nådd (maks {n} grupper)'
+ ];
+ },
+ selectAllText: 'Merk alle',
+ deselectAllText: 'Fjern alle',
+ multipleSeparator: ', '
+ };
+})(jQuery);
+
+
+}));
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-nl_NL.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-nl_NL.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-nl_NL.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,15 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: NL (Dutch; Nederlands)
+ * Region: NL (Europe)
+ * Author: Daan Rosbergen (Badmuts)
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Niets geselecteerd',
+ noneResultsText: 'Geen resultaten gevonden voor {0}',
+ countSelectedText: '{0} van {1} geselecteerd',
+ maxOptionsText: ['Limiet bereikt ({n} {var} max)', 'Groep limiet bereikt ({n} {var} max)', ['items', 'item']],
+ multipleSeparator: ', '
+ };
+})(jQuery);
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-pl_PL.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-pl_PL.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-pl_PL.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,16 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: PL (Polish)
+ * Region: EU (Europe)
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Nic nie zaznaczono',
+ noneResultsText: 'Brak wyników wyszukiwania {0}',
+ countSelectedText: 'Zaznaczono {0} z {1}',
+ maxOptionsText: ['Osiągnięto limit ({n} {var} max)', 'Limit grupy osiągnięty ({n} {var} max)', ['elementy', 'element']],
+ selectAll: 'Zaznacz wszystkie',
+ deselectAll: 'Odznacz wszystkie',
+ multipleSeparator: ', '
+ };
+})(jQuery);
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-pt_BR.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-pt_BR.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-pt_BR.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,15 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: PT (Portuguese; português)
+ * Region: BR (Brazil; Brasil)
+ * Author: Rodrigo de Avila <rodrigo at avila.net.br>
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Nada selecionado',
+ noneResultsText: 'Nada encontrado contendo {0}',
+ countSelectedText: 'Selecionado {0} de {1}',
+ maxOptionsText: ['Limite excedido (máx. {n} {var})', 'Limite do grupo excedido (máx. {n} {var})', ['itens', 'item']],
+ multipleSeparator: ', '
+ };
+})(jQuery);
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-pt_PT.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-pt_PT.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-pt_PT.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,15 @@
+/*
+* Translated default messages for bootstrap-select.
+* Locale: PT (Portuguese; português)
+* Region: PT (Portugal; Portugal)
+* Author: Burnspirit <burnspirit at gmail.com>
+*/
+(function ($) {
+$.fn.selectpicker.defaults = {
+noneSelectedText: 'Nenhum seleccionado',
+noneResultsText: 'Sem resultados contendo {0}',
+countSelectedText: 'Selecionado {0} de {1}',
+maxOptionsText: ['Limite ultrapassado (máx. {n} {var})', 'Limite de seleções ultrapassado (máx. {n} {var})', ['itens', 'item']],
+multipleSeparator: ', '
+};
+})(jQuery);
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-ro_RO.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-ro_RO.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-ro_RO.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,15 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: RO (Romanian)
+ * Region: RO (Romania)
+ * Alex Florea <alecz.fia at gmail.com>
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Nu a fost selectat nimic',
+ noneResultsText: 'Nu exista niciun rezultat {0}',
+ countSelectedText: '{0} din {1} selectat(e)',
+ maxOptionsText: ['Limita a fost atinsa ({n} {var} max)', 'Limita de grup a fost atinsa ({n} {var} max)', ['iteme', 'item']],
+ multipleSeparator: ', '
+ };
+})(jQuery);
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-ru_RU.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-ru_RU.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-ru_RU.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,15 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: RU (Russian; Русский)
+ * Region: RU (Russian Federation)
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Ничего не выбрано',
+ noneResultsText: 'Совпадений не найдено {0}',
+ countSelectedText: 'Выбрано {0} из {1}',
+ maxOptionsText: ['Достигнут предел ({n} {var} максимум)', 'Достигнут предел в группе ({n} {var} максимум)', ['items', 'item']],
+ doneButtonText: 'Закрыть',
+ multipleSeparator: ', '
+ };
+})(jQuery);
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-sk_SK.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-sk_SK.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-sk_SK.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,16 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: SK
+ * Region: SK (Slovak Republic)
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Vyberte zo zoznamu',
+ noneResultsText: 'Pre výraz {0} neboli nájdené žiadne výsledky',
+ countSelectedText: 'Vybrané {0} z {1}',
+ maxOptionsText: ['Limit prekročený ({n} {var} max)', 'Limit skupiny prekročený ({n} {var} max)', ['položiek', 'položka']],
+ selectAllText: 'Vybrať všetky',
+ deselectAllText: 'Zrušiť výber',
+ multipleSeparator: ', '
+ };
+})(jQuery);
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-sl_SI.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-sl_SI.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-sl_SI.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: SL (Slovenian)
+ * Region: SI (Slovenia)
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Nič izbranega',
+ noneResultsText: 'Ni zadetkov za {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ "Število izbranih: {0}";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ 'Omejitev dosežena (max. izbranih: {n})',
+ 'Omejitev skupine dosežena (max. izbranih: {n})'
+ ];
+ },
+ selectAllText: 'Izberi vse',
+ deselectAllText: 'Počisti izbor',
+ multipleSeparator: ', '
+ };
+})(jQuery);
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-sv_SE.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-sv_SE.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-sv_SE.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: SV (Swedish)
+ * Region: SE (Sweden)
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Inget valt',
+ noneResultsText: 'Inget sökresultat matchar {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ return (numSelected === 1) ? "{0} alternativ valt" : "{0} alternativ valda";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ 'Gräns uppnåd (max {n} alternativ)',
+ 'Gräns uppnåd (max {n} gruppalternativ)'
+ ];
+ },
+ selectAllText: 'Markera alla',
+ deselectAllText: 'Avmarkera alla',
+ multipleSeparator: ', '
+ };
+})(jQuery);
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-tr_TR.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-tr_TR.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-tr_TR.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,24 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: TR (Turkey)
+ * Region: TR (Europe)
+ * Author: Serhan Güney
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Hiçbiri seçilmedi',
+ noneResultsText: 'Hiçbir sonuç bulunamadı {0}',
+ countSelectedText: function (numSelected, numTotal) {
+ return (numSelected == 1) ? "{0} öğe seçildi" : "{0} öğe seçildi";
+ },
+ maxOptionsText: function (numAll, numGroup) {
+ return [
+ (numAll == 1) ? 'Limit aşıldı (maksimum {n} sayıda öğe )' : 'Limit aşıldı (maksimum {n} sayıda öğe)',
+ (numGroup == 1) ? 'Grup limiti aşıldı (maksimum {n} sayıda öğe)' : 'Grup limiti aşıldı (maksimum {n} sayıda öğe)'
+ ];
+ },
+ selectAllText: 'Tümünü Seç',
+ deselectAllText: 'Seçiniz',
+ multipleSeparator: ', '
+ };
+})(jQuery);
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-ua_UA.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-ua_UA.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-ua_UA.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,14 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: UA (Ukrainian; Українська)
+ * Region: UA (Ukraine)
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: 'Нічого не вибрано',
+ noneResultsText: 'Збігів не знайдено {0}',
+ countSelectedText: 'Вибрано {0} із {1}',
+ maxOptionsText: ['Досягнута межа ({n} {var} максимум)', 'Досягнута межа в групі ({n} {var} максимум)', ['items', 'item']],
+ multipleSeparator: ', '
+ };
+})(jQuery);
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-zh_CN.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-zh_CN.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-zh_CN.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,14 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: ZH (Chinese)
+ * Region: CN (China)
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: '没有选中任何项',
+ noneResultsText: '没有找到匹配项',
+ countSelectedText: '选中{1}中的{0}项',
+ maxOptionsText: ['超出限制 (最多选择{n}项)', '组选择超出限制(最多选择{n}组)'],
+ multipleSeparator: ', '
+ };
+})(jQuery);
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-zh_TW.js
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-zh_TW.js (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/js/i18n/defaults-zh_TW.js 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,16 @@
+/*
+ * Translated default messages for bootstrap-select.
+ * Locale: ZH (Chinese)
+ * Region: TW (Taiwan)
+ */
+(function ($) {
+ $.fn.selectpicker.defaults = {
+ noneSelectedText: '沒有選取任何項目',
+ noneResultsText: '沒有找到符合的結果',
+ countSelectedText: '已經選取{0}個項目',
+ maxOptionsText: ['超過限制 (最多選擇{n}項)', '超過限制(最多選擇{n}組)'],
+ selectAllText: '選取全部',
+ deselectAllText: '全部取消',
+ multipleSeparator: ', '
+ };
+})(jQuery);
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/less/bootstrap-select.less
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/less/bootstrap-select.less (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/less/bootstrap-select.less 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,348 @@
+ at import "variables";
+
+// Mixins
+.cursor-disabled() {
+ cursor: not-allowed;
+}
+
+// Rules
+.bootstrap-select {
+ width: 220px \0; /*IE9 and below*/
+
+ // The selectpicker button
+ > .dropdown-toggle {
+ width: 100%;
+ padding-right: 25px;
+ z-index: 1;
+ }
+
+ > select {
+ position: absolute !important;
+ bottom: 0;
+ left: 50%;
+ width: 0.11px !important;
+ height: 100% !important;
+ padding: 0 !important;
+ opacity: 0 !important;
+ border: none;
+
+ &.mobile-device {
+ top: 0;
+ left: 0;
+ display: block !important;
+ width: 100% !important;
+ z-index: 2;
+ }
+ }
+
+ // Error display
+ .has-error & .dropdown-toggle,
+ .error & .dropdown-toggle {
+ border-color: @color-red-error;
+ }
+
+ &.fit-width {
+ width: auto !important;
+ }
+
+ &:not([class*="col-"]):not([class*="form-control"]):not(.input-group-btn) {
+ width: @width-default;
+ }
+
+ .dropdown-toggle:focus {
+ outline: thin dotted #333333 !important;
+ outline: 5px auto -webkit-focus-ring-color !important;
+ outline-offset: -2px;
+ }
+}
+
+.bootstrap-select.form-control {
+ margin-bottom: 0;
+ padding: 0;
+ border: none;
+
+ &:not([class*="col-"]) {
+ width: 100%;
+ }
+
+ &.input-group-btn {
+ z-index: auto;
+ }
+}
+
+// The selectpicker components
+.bootstrap-select.btn-group {
+ &:not(.input-group-btn),
+ &[class*="col-"] {
+ float: none;
+ display: inline-block;
+ margin-left: 0;
+ }
+
+ // Forces the pull to the right, if necessary
+ &,
+ &[class*="col-"],
+ .row &[class*="col-"] {
+ &.dropdown-menu-right {
+ float: right;
+ }
+ }
+
+ .form-inline &,
+ .form-horizontal &,
+ .form-group & {
+ margin-bottom: 0;
+ }
+
+ .form-group-lg &.form-control,
+ .form-group-sm &.form-control {
+ padding: 0;
+ }
+
+ // Set the width of the live search (and any other form control within an inline form)
+ // see https://github.com/silviomoreto/bootstrap-select/issues/685
+ .form-inline & .form-control {
+ width: 100%;
+ }
+
+ &.disabled,
+ > .disabled {
+ .cursor-disabled();
+
+ &:focus {
+ outline: none !important;
+ }
+ }
+
+ &.bs-container {
+ position: absolute;
+
+ .dropdown-menu {
+ z-index: @zindex-select-dropdown;
+ }
+ }
+
+ // The selectpicker button
+ .dropdown-toggle {
+ .filter-option {
+ display: inline-block;
+ overflow: hidden;
+ width: 100%;
+ text-align: left;
+ }
+
+ .caret {
+ position: absolute;
+ top: 50%;
+ right: 12px;
+ margin-top: -2px;
+ vertical-align: middle;
+ }
+ }
+
+ &[class*="col-"] .dropdown-toggle {
+ width: 100%;
+ }
+
+ // The selectpicker dropdown
+ .dropdown-menu {
+ min-width: 100%;
+ box-sizing: border-box;
+
+ &.inner {
+ position: static;
+ float: none;
+ border: 0;
+ padding: 0;
+ margin: 0;
+ border-radius: 0;
+ box-shadow: none;
+ }
+
+ li {
+ position: relative;
+
+ &.active small {
+ color: #fff;
+ }
+
+ &.disabled a {
+ .cursor-disabled();
+ }
+
+ a {
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+
+ &.opt {
+ position: relative;
+ padding-left: 2.25em;
+ }
+
+ span.check-mark {
+ display: none;
+ }
+
+ span.text {
+ display: inline-block;
+ }
+ }
+
+ small {
+ padding-left: 0.5em;
+ }
+ }
+
+ .notify {
+ position: absolute;
+ bottom: 5px;
+ width: 96%;
+ margin: 0 2%;
+ min-height: 26px;
+ padding: 3px 5px;
+ background: rgb(245, 245, 245);
+ border: 1px solid rgb(227, 227, 227);
+ box-shadow: inset 0 1px 1px fade(rgb(0, 0, 0), 5%);
+ pointer-events: none;
+ opacity: 0.9;
+ box-sizing: border-box;
+ }
+ }
+
+ .no-results {
+ padding: 3px;
+ background: #f5f5f5;
+ margin: 0 5px;
+ white-space: nowrap;
+ }
+
+ &.fit-width .dropdown-toggle {
+ .filter-option {
+ position: static;
+ }
+
+ .caret {
+ position: static;
+ top: auto;
+ margin-top: -1px;
+ }
+ }
+
+ &.show-tick .dropdown-menu li {
+ &.selected a span.check-mark {
+ position: absolute;
+ display: inline-block;
+ right: 15px;
+ margin-top: 5px;
+ }
+
+ a span.text {
+ margin-right: 34px;
+ }
+ }
+}
+
+.bootstrap-select.show-menu-arrow {
+ &.open > .dropdown-toggle {
+ z-index: (@zindex-select-dropdown + 1);
+ }
+
+ .dropdown-toggle {
+ &:before {
+ content: '';
+ border-left: 7px solid transparent;
+ border-right: 7px solid transparent;
+ border-bottom: 7px solid @color-grey-arrow;
+ position: absolute;
+ bottom: -4px;
+ left: 9px;
+ display: none;
+ }
+
+ &:after {
+ content: '';
+ border-left: 6px solid transparent;
+ border-right: 6px solid transparent;
+ border-bottom: 6px solid white;
+ position: absolute;
+ bottom: -4px;
+ left: 10px;
+ display: none;
+ }
+ }
+
+ &.dropup .dropdown-toggle {
+ &:before {
+ bottom: auto;
+ top: -3px;
+ border-top: 7px solid @color-grey-arrow;
+ border-bottom: 0;
+ }
+
+ &:after {
+ bottom: auto;
+ top: -3px;
+ border-top: 6px solid white;
+ border-bottom: 0;
+ }
+ }
+
+ &.pull-right .dropdown-toggle {
+ &:before {
+ right: 12px;
+ left: auto;
+ }
+
+ &:after {
+ right: 13px;
+ left: auto;
+ }
+ }
+
+ &.open > .dropdown-toggle {
+ &:before,
+ &:after {
+ display: block;
+ }
+ }
+}
+
+.bs-searchbox,
+.bs-actionsbox,
+.bs-donebutton {
+ padding: 4px 8px;
+}
+
+.bs-actionsbox {
+ width: 100%;
+ box-sizing: border-box;
+
+ & .btn-group button {
+ width: 50%;
+ }
+}
+
+.bs-donebutton {
+ float: left;
+ width: 100%;
+ box-sizing: border-box;
+
+ & .btn-group button {
+ width: 100%;
+ }
+}
+
+.bs-searchbox {
+ & + .bs-actionsbox {
+ padding: 0 8px 4px;
+ }
+
+ & .form-control {
+ margin-bottom: 0;
+ width: 100%;
+ float: none;
+ }
+}
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/less/variables.less
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/less/variables.less (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/less/variables.less 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,6 @@
+ at color-red-error: rgb(185, 74, 72);
+ at color-grey-arrow: rgba(204, 204, 204, 0.2);
+
+ at width-default: 220px; // 3 960px-grid columns
+
+ at zindex-select-dropdown: 1060; // must be higher than a modal background (1050)
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/package.json
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/package.json (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/package.json 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,65 @@
+{
+ "name": "bootstrap-select",
+ "title": "bootstrap-select",
+ "main": "dist/js/bootstrap-select.js",
+ "description": "A custom <select> for Bootstrap using button dropdown as replacement",
+ "version": "1.9.3",
+ "homepage": "http://silviomoreto.github.io/bootstrap-select",
+ "author": {
+ "name": "Silvio Moreto",
+ "url": "https://github.com/silviomoreto"
+ },
+ "contributors": [
+ {
+ "name": "Silvio Moreto",
+ "url": "https://github.com/silviomoreto"
+ },
+ {
+ "name": "Ana Carolina",
+ "url": "https://github.com/anacarolinats"
+ },
+ {
+ "name": "caseyjhol",
+ "url": "https://github.com/caseyjhol"
+ },
+ {
+ "name": "Matt Bryson",
+ "url": "https://github.com/mattbryson"
+ },
+ {
+ "name": "t0xicCode",
+ "url": "https://github.com/t0xicCode"
+ }
+ ],
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/silviomoreto/bootstrap-select.git"
+ },
+ "license": "MIT",
+ "dependencies": {
+ "jquery": ">=1.8"
+ },
+ "devDependencies": {
+ "grunt": "~0.4.5",
+ "grunt-autoprefixer": "~1.0.0",
+ "grunt-banner": "~0.3.1",
+ "grunt-contrib-clean": "~0.6.0",
+ "grunt-contrib-compress": "~0.13.0",
+ "grunt-contrib-concat": "~0.5.0",
+ "grunt-contrib-csslint": "~0.2.0",
+ "grunt-contrib-cssmin": "~0.11.0",
+ "grunt-contrib-jshint": "~0.10.0",
+ "grunt-contrib-less": "~0.11.3",
+ "grunt-contrib-uglify": "~0.7.0",
+ "grunt-contrib-watch": "~0.6.1",
+ "grunt-sed": "~0.1.1",
+ "grunt-umd": "~2.3.3",
+ "load-grunt-tasks": "~2.0.0"
+ },
+ "keywords": [
+ "form",
+ "bootstrap",
+ "select",
+ "replacement"
+ ]
+}
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/sass/bootstrap-select.scss
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/sass/bootstrap-select.scss (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/sass/bootstrap-select.scss 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,373 @@
+/*!
+ * Bootstrap-select v1.8.0 (http://silviomoreto.github.io/bootstrap-select)
+ *
+ * Copyright 2013-2015 bootstrap-select
+ * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
+ */
+
+ at import "variables";
+
+// Mixins
+ at mixin cursor-disabled() {
+ cursor: not-allowed;
+}
+
+ at mixin box-sizing($fmt) {
+ -webkit-box-sizing: $fmt;
+ -moz-box-sizing: $fmt;
+ box-sizing: $fmt;
+}
+
+ at mixin box-shadow($fmt) {
+ -webkit-box-shadow: $fmt;
+ box-shadow: $fmt;
+}
+
+ at function fade($color, $amnt) {
+ @if $amnt > 1 {
+ $amnt: $amnt / 100; // convert to percentage if int
+ }
+ @return rgba($color, $amnt);
+}
+
+// Rules
+.bootstrap-select {
+ width: 220px \0; /*IE9 and below*/
+
+ // The selectpicker button
+ > .dropdown-toggle {
+ width: 100%;
+ padding-right: 25px;
+ z-index: 1;
+ }
+
+ > select {
+ position: absolute !important;
+ bottom: 0;
+ left: 50%;
+ width: 0.11px !important;
+ height: 100% !important;
+ padding: 0 !important;
+ opacity: 0 !important;
+ border: none;
+
+ &.mobile-device {
+ top: 0;
+ left: 0;
+ display: block !important;
+ width: 100% !important;
+ z-index: 2;
+ }
+ }
+
+ // Error display
+ .has-error & .dropdown-toggle,
+ .error & .dropdown-toggle {
+ border-color: $color-red-error;
+ }
+
+ &.fit-width {
+ width: auto !important;
+ }
+
+ &:not([class*="col-"]):not([class*="form-control"]):not(.input-group-btn) {
+ width: $width-default;
+ }
+
+ .dropdown-toggle:focus {
+ outline: thin dotted #333333 !important;
+ outline: 5px auto -webkit-focus-ring-color !important;
+ outline-offset: -2px;
+ }
+}
+
+.bootstrap-select.form-control {
+ margin-bottom: 0;
+ padding: 0;
+ border: none;
+
+ &:not([class*="col-"]) {
+ width: 100%;
+ }
+
+ &.input-group-btn {
+ z-index: auto;
+ }
+}
+
+// The selectpicker components
+.bootstrap-select.btn-group {
+ &:not(.input-group-btn),
+ &[class*="col-"] {
+ float: none;
+ display: inline-block;
+ margin-left: 0;
+ }
+
+ // Forces the pull to the right, if necessary
+ &,
+ &[class*="col-"],
+ .row &[class*="col-"] {
+ &.dropdown-menu-right {
+ float: right;
+ }
+ }
+
+ .form-inline &,
+ .form-horizontal &,
+ .form-group & {
+ margin-bottom: 0;
+ }
+
+ .form-group-lg &.form-control,
+ .form-group-sm &.form-control {
+ padding: 0;
+ }
+
+ // Set the width of the live search (and any other form control within an inline form)
+ // see https://github.com/silviomoreto/bootstrap-select/issues/685
+ .form-inline & .form-control {
+ width: 100%;
+ }
+
+ &.disabled,
+ > .disabled {
+ @include cursor-disabled();
+
+ &:focus {
+ outline: none !important;
+ }
+ }
+
+ &.bs-container {
+ position: absolute;
+
+ .dropdown-menu {
+ z-index: $zindex-select-dropdown;
+ }
+ }
+
+ // The selectpicker button
+ .dropdown-toggle {
+ .filter-option {
+ display: inline-block;
+ overflow: hidden;
+ width: 100%;
+ text-align: left;
+ }
+
+ .caret {
+ position: absolute;
+ top: 50%;
+ right: 12px;
+ margin-top: -2px;
+ vertical-align: middle;
+ }
+ }
+
+ &[class*="col-"] .dropdown-toggle {
+ width: 100%;
+ }
+
+ // The selectpicker dropdown
+ .dropdown-menu {
+ min-width: 100%;
+ @include box-sizing(border-box);
+
+ &.inner {
+ position: static;
+ float: none;
+ border: 0;
+ padding: 0;
+ margin: 0;
+ border-radius: 0;
+ box-shadow: none;
+ }
+
+ li {
+ position: relative;
+
+ &.active small {
+ color: #fff;
+ }
+
+ &.disabled a {
+ @include cursor-disabled();
+ }
+
+ a {
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+
+ &.opt {
+ position: relative;
+ padding-left: 2.25em;
+ }
+
+ span.check-mark {
+ display: none;
+ }
+
+ span.text {
+ display: inline-block;
+ }
+ }
+
+ small {
+ padding-left: 0.5em;
+ }
+ }
+
+ .notify {
+ position: absolute;
+ bottom: 5px;
+ width: 96%;
+ margin: 0 2%;
+ min-height: 26px;
+ padding: 3px 5px;
+ background: rgb(245, 245, 245);
+ border: 1px solid rgb(227, 227, 227);
+ @include box-shadow(inset 0 1px 1px fade(rgb(0, 0, 0), 5));
+ pointer-events: none;
+ opacity: 0.9;
+ @include box-sizing(border-box);
+ }
+ }
+
+ .no-results {
+ padding: 3px;
+ background: #f5f5f5;
+ margin: 0 5px;
+ white-space: nowrap;
+ }
+
+ &.fit-width .dropdown-toggle {
+ .filter-option {
+ position: static;
+ }
+
+ .caret {
+ position: static;
+ top: auto;
+ margin-top: -1px;
+ }
+ }
+
+ &.show-tick .dropdown-menu li {
+ &.selected a span.check-mark {
+ position: absolute;
+ display: inline-block;
+ right: 15px;
+ margin-top: 5px;
+ }
+
+ a span.text {
+ margin-right: 34px;
+ }
+ }
+}
+
+.bootstrap-select.show-menu-arrow {
+ &.open > .dropdown-toggle {
+ z-index: ($zindex-select-dropdown + 1);
+ }
+
+ .dropdown-toggle {
+ &:before {
+ content: '';
+ border-left: 7px solid transparent;
+ border-right: 7px solid transparent;
+ border-bottom: 7px solid $color-grey-arrow;
+ position: absolute;
+ bottom: -4px;
+ left: 9px;
+ display: none;
+ }
+
+ &:after {
+ content: '';
+ border-left: 6px solid transparent;
+ border-right: 6px solid transparent;
+ border-bottom: 6px solid white;
+ position: absolute;
+ bottom: -4px;
+ left: 10px;
+ display: none;
+ }
+ }
+
+ &.dropup .dropdown-toggle {
+ &:before {
+ bottom: auto;
+ top: -3px;
+ border-top: 7px solid $color-grey-arrow;
+ border-bottom: 0;
+ }
+
+ &:after {
+ bottom: auto;
+ top: -3px;
+ border-top: 6px solid white;
+ border-bottom: 0;
+ }
+ }
+
+ &.pull-right .dropdown-toggle {
+ &:before {
+ right: 12px;
+ left: auto;
+ }
+
+ &:after {
+ right: 13px;
+ left: auto;
+ }
+ }
+
+ &.open > .dropdown-toggle {
+ &:before,
+ &:after {
+ display: block;
+ }
+ }
+}
+
+.bs-searchbox,
+.bs-actionsbox,
+.bs-donebutton {
+ padding: 4px 8px;
+}
+
+.bs-actionsbox {
+ width: 100%;
+ @include box-sizing(border-box);
+
+ & .btn-group button {
+ width: 50%;
+ }
+}
+
+.bs-donebutton {
+ float: left;
+ width: 100%;
+ @include box-sizing(border-box);
+
+ & .btn-group button {
+ width: 100%;
+ }
+}
+
+.bs-searchbox {
+ & + .bs-actionsbox {
+ padding: 0 8px 4px;
+ }
+
+ & .form-control {
+ margin-bottom: 0;
+ width: 100%;
+ float: none;
+ }
+}
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/sass/variables.scss
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/sass/variables.scss (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/sass/variables.scss 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,6 @@
+$color-red-error: rgb(185, 74, 72);
+$color-grey-arrow: rgba(204, 204, 204, 0.2);
+
+$width-default: 220px; // 3 960px-grid columns
+
+$zindex-select-dropdown: 1060; // must be higher than a modal background (1050)
Added: trunk/mapbender/http/extensions/bootstrap-select-1.9.3/test.html
===================================================================
--- trunk/mapbender/http/extensions/bootstrap-select-1.9.3/test.html (rev 0)
+++ trunk/mapbender/http/extensions/bootstrap-select-1.9.3/test.html 2016-01-12 15:49:39 UTC (rev 9346)
@@ -0,0 +1,316 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Bootstrap-select test page</title>
+
+ <meta charset="utf-8">
+
+ <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
+ <link rel="stylesheet" href="dist/css/bootstrap-select.css">
+
+ <style>
+ body {
+ padding-top: 70px;
+ }
+ </style>
+
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
+ <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
+ <script src="dist/js/bootstrap-select.js"></script>
+</head>
+<body>
+<nav class="navbar navbar-default navbar-fixed-top" role="navigation">
+ <div class="container">
+ <div class="navbar-header">
+ <a class="navbar-brand" href="#">Bootstrap-select usability tests</a>
+ </div>
+ </div>
+</nav>
+
+<div class="container">
+ <form class="form-horizontal" role="form">
+ <div class="form-group">
+ <label for="basic" class="col-lg-2 control-label">"Basic" (liveSearch disabled)</label>
+
+ <div class="col-lg-10">
+ <select id="basic" class="selectpicker show-tick form-control">
+ <option>cow</option>
+ <option data-subtext="option subtext">bull</option>
+ <option class="get-class" disabled>ox</option>
+ <optgroup label="test" data-subtext="optgroup subtext">
+ <option>ASD</option>
+ <option selected>Bla</option>
+ <option>Ble</option>
+ </optgroup>
+ </select>
+ </div>
+ </div>
+ </form>
+
+ <hr>
+
+ <form class="form-horizontal" role="form">
+ <div class="form-group">
+ <label for="basic" class="col-lg-2 control-label">"Basic" (liveSearch enabled)</label>
+
+ <div class="col-lg-10">
+ <select id="basic" class="selectpicker show-tick form-control" data-live-search="true">
+ <option>cow</option>
+ <option data-subtext="option subtext">bull</option>
+ <option class="get-class" disabled>ox</option>
+ <optgroup label="test" data-subtext="optgroup subtext">
+ <option>ASD</option>
+ <option selected>Bla</option>
+ <option>Ble</option>
+ </optgroup>
+ </select>
+ </div>
+ </div>
+ </form>
+
+ <hr>
+ <form class="form-horizontal" role="form">
+ <div class="form-group">
+ <label for="basic2" class="col-lg-2 control-label">"Basic" (multiple, maxOptions=1)</label>
+
+ <div class="col-lg-10">
+ <select id="basic2" class="show-tick form-control" multiple>
+ <option>cow</option>
+ <option>bull</option>
+ <option class="get-class" disabled>ox</option>
+ <optgroup label="test" data-subtext="another test">
+ <option>ASD</option>
+ <option selected>Bla</option>
+ <option>Ble</option>
+ </optgroup>
+ </select>
+ </div>
+ </div>
+ </form>
+
+ <hr>
+ <form class="form-horizontal" role="form">
+ <div class="form-group">
+ <label for="maxOption2" class="col-lg-2 control-label">multiple, show-menu-arrow, maxOptions=2</label>
+
+ <div class="col-lg-10">
+ <select id="maxOption2" class="selectpicker show-menu-arrow form-control" multiple data-max-options="2">
+ <option>chicken</option>
+ <option>turkey</option>
+ <option disabled>duck</option>
+ <option>goose</option>
+ </select>
+ </div>
+ </div>
+ </form>
+
+ <hr>
+ <form class="form-inline">
+ <div class="form-group">
+ <label class="col-md-1 control-label" for="lunch">Lunch:</label>
+ </div>
+ <div class="form-group">
+ <select id="lunch" class="selectpicker" data-live-search="true" title="Please select a lunch ...">
+ <option>Hot Dog, Fries and a Soda</option>
+ <option>Burger, Shake and a Smile</option>
+ <option>Sugar, Spice and all things nice</option>
+ <option>Baby Back Ribs</option>
+ <option>A really really long option made to illustrate an issue with the live search in an inline form</option>
+ </select>
+ </div>
+ </form>
+
+ <hr>
+ <form class="form-horizontal" role="form">
+ <div class="form-group form-group-lg">
+ <label for="error" class="col-lg-2 control-label">error</label>
+
+ <div class="col-lg-10 error">
+ <select id="error" class="selectpicker show-tick form-control">
+ <option>pen</option>
+ <option>pencil</option>
+ <option selected>brush</option>
+ </select>
+ </div>
+ </div>
+ </form>
+
+ <hr>
+ <form class="form-horizontal" role="form">
+ <div class="form-group has-error form-group-lg">
+ <label class="control-label col-lg-2" for="country">error type 2</label>
+
+ <div class="col-lg-10">
+ <select id="country" name="country" class="form-control selectpicker">
+ <option>Argentina</option>
+ <option>United State</option>
+ <option>Mexico</option>
+ </select>
+
+ <p class="help-block">No service available in the selected country</p>
+ </div>
+ </div>
+ </form>
+
+ <hr>
+ <nav class="navbar navbar-default" role="navigation">
+ <div class="container-fluid">
+ <div class="navbar-header">
+ <a class="navbar-brand" href="#">Navbar</a>
+ </div>
+
+ <form class="navbar-form navbar-left" role="search">
+ <div class="form-group">
+ <select class="selectpicker" multiple data-live-search="true" data-live-search-placeholder="Search" data-actions-box="true">
+ <optgroup label="filter1">
+ <option>option1</option>
+ <option>option2</option>
+ <option>option3</option>
+ <option>option4</option>
+ </optgroup>
+ <optgroup label="filter2">
+ <option>option1</option>
+ <option>option2</option>
+ <option>option3</option>
+ <option>option4</option>
+ </optgroup>
+ <optgroup label="filter3">
+ <option>option1</option>
+ <option>option2</option>
+ <option>option3</option>
+ <option>option4</option>
+ </optgroup>
+ </select>
+ </div>
+
+ <div class="input-group">
+ <input type="text" class="form-control" placeholder="Search" name="q">
+
+ <div class="input-group-btn">
+ <button class="btn btn-default" type="submit"><i class="glyphicon glyphicon-search"></i></button>
+ </div>
+ </div>
+ <button type="submit" class="btn btn-default">Search</button>
+ </form>
+
+ </div>
+ <!-- .container-fluid -->
+ </nav>
+
+ <hr>
+ <select id="first-disabled" class="selectpicker" data-hide-disabled="true" data-live-search="true">
+ <optgroup disabled="disabled" label="disabled">
+ <option>Hidden</option>
+ </optgroup>
+ <optgroup label="Fruit">
+ <option>Apple</option>
+ <option>Orange</option>
+ </optgroup>
+ <optgroup label="Vegetable">
+ <option>Corn</option>
+ <option>Carrot</option>
+ </optgroup>
+ </select>
+
+ <hr>
+ <select id="first-disabled2" class="selectpicker" multiple data-hide-disabled="true" data-size="5">
+ <option>Apple</option>
+ <option>Banana</option>
+ <option>Orange</option>
+ <option>Pineapple</option>
+ <option>Apple2</option>
+ <option>Banana2</option>
+ <option>Orange2</option>
+ <option>Pineapple2</option>
+ <option>Apple2</option>
+ <option>Banana2</option>
+ <option>Orange2</option>
+ <option>Pineapple2</option>
+ </select>
+ <button id="special" class="btn btn-default">Hide selected by disabling</button>
+ <button id="special2" class="btn btn-default">Reset</button>
+ <p>Just select 1st element, click button and check list again</p>
+
+ <hr>
+ <div class="input-group">
+ <span class="input-group-addon">@</span>
+ <select class="form-control selectpicker">
+ <option>One</option>
+ <option>Two</option>
+ <option>Three</option>
+ </select>
+ </div>
+
+ <hr>
+ <div class="input-group">
+ <span class="input-group-addon">@</span>
+ <select class="form-control selectpicker" data-mobile="true">
+ <option>One</option>
+ <option>Two</option>
+ <option>Three</option>
+ </select>
+ </div>
+ <p>With <code>data-mobile="true"</code> option.</p>
+
+ <hr>
+ <select id="done" class="selectpicker" multiple data-done-button="true">
+ <option>Apple</option>
+ <option>Banana</option>
+ <option>Orange</option>
+ <option>Pineapple</option>
+ <option>Apple2</option>
+ <option>Banana2</option>
+ <option>Orange2</option>
+ <option>Pineapple2</option>
+ <option>Apple2</option>
+ <option>Banana2</option>
+ <option>Orange2</option>
+ <option>Pineapple2</option>
+ </select>
+
+ <hr>
+ <select id="tokens" class="selectpicker" multiple data-live-search="true">
+ <option data-tokens="first">I actually am called "first"</option>
+ <option data-tokens="second">And me "second"</option>
+ <option data-tokens="last">I am "last"</option>
+ </select>
+
+ <hr>
+ <form class="form-inline">
+ <div class="form-group">
+ <label class="col-md-1 control-label" for="lunchBegins">Lunch (Begins search):</label>
+ </div>
+ <div class="form-group">
+ <select id="lunchBegins" class="selectpicker" data-live-search="true" data-live-search-style="begins" title="Please select a lunch ...">
+ <option>Hot Dog, Fries and a Soda</option>
+ <option>Burger, Shake and a Smile</option>
+ <option>Sugar, Spice and all things nice</option>
+ <option>Baby Back Ribs</option>
+ <option>A really really long option made to illustrate an issue with the live search in an inline form</option>
+ </select>
+ </div>
+ </form>
+</div>
+
+<script>
+ $(document).ready(function () {
+ var mySelect = $('#first-disabled2');
+
+ $('#special').on('click', function () {
+ mySelect.find('option:selected').prop('disabled', true);
+ mySelect.selectpicker('refresh');
+ });
+
+ $('#special2').on('click', function () {
+ mySelect.find('option:disabled').prop('disabled', false);
+ mySelect.selectpicker('refresh');
+ });
+
+ $('#basic2').selectpicker({
+ liveSearch: true,
+ maxOptions: 1
+ });
+ });
+</script>
+</body>
+</html>
More information about the Mapbender_commits
mailing list