locomotivecms 4.1.1 → 4.2.0.alpha1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/MIT-LICENSE +1 -1
- data/README.md +4 -3
- data/Rakefile +4 -0
- data/app/api/locomotive/api.rb +1 -1
- data/app/assets/config/locomotive_manifest.js +2 -0
- data/app/assets/javascripts/locomotive.js +2 -2
- data/app/assets/stylesheets/locomotive/account.scss +0 -1
- data/app/assets/stylesheets/locomotive/application.scss +0 -1
- data/app/assets/stylesheets/locomotive/live_editing_error.scss +0 -1
- data/app/assets/stylesheets/locomotive/live_editing_iframe.scss +0 -1
- data/app/controllers/locomotive/base_controller.rb +1 -1
- data/app/controllers/locomotive/concerns/authorization_controller.rb +1 -1
- data/app/controllers/locomotive/concerns/redirect_to_main_host_controller.rb +1 -1
- data/app/controllers/locomotive/concerns/site_dispatcher_controller.rb +1 -1
- data/app/controllers/locomotive/errors_controller.rb +1 -1
- data/app/controllers/locomotive/my_account_controller.rb +1 -1
- data/app/controllers/locomotive/passwords_controller.rb +3 -1
- data/app/controllers/locomotive/registrations_controller.rb +3 -1
- data/app/controllers/locomotive/sessions_controller.rb +3 -1
- data/app/controllers/locomotive/sites_controller.rb +1 -1
- data/app/helpers/locomotive/base_helper.rb +2 -2
- data/app/helpers/locomotive/custom_fields_helper.rb +2 -2
- data/app/helpers/locomotive/shared/activities_helper.rb +1 -1
- data/app/inputs/locomotive/api_key_input.rb +1 -1
- data/app/mailers/locomotive/notifications.rb +1 -1
- data/app/models/locomotive/account.rb +1 -1
- data/app/models/locomotive/concerns/account/api_key.rb +1 -1
- data/app/models/locomotive/concerns/content_entry/csv.rb +1 -1
- data/app/models/locomotive/concerns/content_entry/slug.rb +5 -5
- data/app/models/locomotive/concerns/content_type/entry_template.rb +3 -3
- data/app/models/locomotive/concerns/page/templatized.rb +1 -1
- data/app/models/locomotive/concerns/shared/json_attribute.rb +21 -2
- data/app/models/locomotive/concerns/site/routes.rb +1 -1
- data/app/models/locomotive/content_entry.rb +2 -2
- data/app/models/locomotive/page.rb +3 -3
- data/app/models/locomotive/section.rb +1 -1
- data/app/models/locomotive/snippet.rb +1 -1
- data/app/models/locomotive/translation.rb +1 -1
- data/app/services/locomotive/content_entry_import_service.rb +1 -1
- data/app/services/locomotive/content_entry_service.rb +2 -2
- data/app/services/locomotive/content_type_service.rb +13 -3
- data/app/services/locomotive/custom_field_service.rb +2 -2
- data/app/services/locomotive/editor_service.rb +1 -1
- data/app/uploaders/locomotive/base_uploader.rb +0 -10
- data/app/views/locomotive/dashboard/_activity.html.slim +1 -1
- data/app/views/locomotive/page_content/_edit.json.jbuilder +50 -0
- data/app/views/locomotive/page_content/edit.html.erb +1 -1
- data/app/views/locomotive/page_content/edit.json.jbuilder +52 -50
- data/config/initializers/devise.rb +5 -2
- data/lib/generators/locomotive/install/templates/locomotive.rb +0 -5
- data/lib/locomotive/action_controller/responder.rb +1 -1
- data/lib/locomotive/configuration.rb +2 -2
- data/lib/locomotive/dependencies.rb +0 -2
- data/lib/locomotive/engine.rb +14 -2
- data/lib/locomotive/mongoid/patches.rb +25 -65
- data/lib/locomotive/steam/services/api_entry_submission_service.rb +1 -0
- data/lib/locomotive/version.rb +1 -1
- data/vendor/assets/javascripts/locomotive/codemirror/addons/comment/comment.js +203 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/comment/continuecomment.js +85 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/dialog/dialog.js +157 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/display/autorefresh.js +47 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/display/fullscreen.js +41 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/display/panel.js +112 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/display/placeholder.js +62 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/display/rulers.js +51 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/edit/closebrackets.js +195 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/edit/closetag.js +169 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/edit/continuelist.js +51 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/edit/matchbrackets.js +120 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/edit/matchtags.js +66 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/edit/trailingspace.js +27 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/fold/brace-fold.js +105 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/fold/comment-fold.js +59 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/fold/foldcode.js +150 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/fold/foldgutter.js +146 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/fold/indent-fold.js +44 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/fold/markdown-fold.js +49 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/fold/xml-fold.js +182 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/hint/anyword-hint.js +41 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/hint/css-hint.js +60 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/hint/html-hint.js +348 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/hint/javascript-hint.js +146 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/hint/show-hint.js +437 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/hint/sql-hint.js +271 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/hint/xml-hint.js +110 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/lint/coffeescript-lint.js +41 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/lint/css-lint.js +35 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/lint/html-lint.js +46 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/lint/javascript-lint.js +136 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/lint/json-lint.js +31 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/lint/lint.js +239 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/lint/yaml-lint.js +28 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/merge/merge.js +773 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/mode/loadmode.js +64 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/mode/multiplex.js +123 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/mode/overlay.js +85 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/mode/simple.js +213 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/runmode/colorize.js +40 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/runmode/runmode-standalone.js +157 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/runmode/runmode.js +72 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/runmode/runmode.node.js +179 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/scroll/annotatescrollbar.js +118 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/scroll/scrollpastend.js +48 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/scroll/simplescrollbars.js +152 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/search/jump-to-line.js +49 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/search/match-highlighter.js +146 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/search/matchesonscrollbar.js +97 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/search/search.js +249 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/search/searchcursor.js +189 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/selection/active-line.js +74 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/selection/mark-selection.js +118 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/selection/selection-pointer.js +98 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/tern/tern.js +701 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/tern/worker.js +44 -0
- data/vendor/assets/javascripts/locomotive/codemirror/addons/wrap/hardwrap.js +144 -0
- data/vendor/assets/javascripts/locomotive/codemirror/keymaps/emacs.js +412 -0
- data/vendor/assets/javascripts/locomotive/codemirror/keymaps/sublime.js +580 -0
- data/vendor/assets/javascripts/locomotive/codemirror/keymaps/vim.js +5065 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/apl.js +174 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/asciiarmor.js +73 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/asn.1.js +204 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/asterisk.js +196 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/brainfuck.js +85 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/clike.js +786 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/clojure.js +306 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/cmake.js +97 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/cobol.js +255 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/coffeescript.js +355 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/commonlisp.js +123 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/crystal.js +391 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/css.js +825 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/cypher.js +146 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/d.js +218 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/dart.js +157 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/diff.js +47 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/django.js +356 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/dockerfile.js +79 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/dtd.js +142 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/dylan.js +344 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/ebnf.js +195 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/ecl.js +206 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/eiffel.js +160 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/elm.js +205 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/erlang.js +618 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/factor.js +83 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/fcl.js +173 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/forth.js +180 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/fortran.js +188 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/gas.js +345 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/gfm.js +130 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/gherkin.js +178 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/go.js +185 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/groovy.js +230 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/haml.js +161 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/handlebars.js +62 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/haskell-literate.js +43 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/haskell.js +267 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/haxe.js +515 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/htmlembedded.js +28 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/htmlmixed.js +152 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/http.js +113 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/idl.js +290 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/jade.js +590 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/javascript.js +748 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/jinja2.js +142 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/jsx.js +147 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/julia.js +392 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/livescript.js +280 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/lua.js +159 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/markdown.js +797 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/mathematica.js +176 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/mbox.js +129 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/mirc.js +193 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/mllike.js +205 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/modelica.js +245 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/mscgen.js +169 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/mumps.js +148 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/nginx.js +178 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/nsis.js +95 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/ntriples.js +186 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/octave.js +135 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/oz.js +252 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/pascal.js +109 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/pegjs.js +114 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/perl.js +837 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/php.js +234 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/pig.js +178 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/powershell.js +396 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/properties.js +78 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/protobuf.js +68 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/puppet.js +220 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/python.js +340 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/q.js +139 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/r.js +164 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/rpm.js +109 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/rst.js +557 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/ruby.js +285 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/rust.js +71 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/sas.js +315 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/sass.js +414 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/scheme.js +249 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/shell.js +139 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/sieve.js +193 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/slim.js +575 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/smalltalk.js +168 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/smarty.js +225 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/solr.js +104 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/soy.js +199 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/sparql.js +180 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/spreadsheet.js +112 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/sql.js +413 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/stex.js +251 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/stylus.js +769 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/swift.js +202 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/tcl.js +139 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/textile.js +469 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/tiddlywiki.js +308 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/tiki.js +312 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/toml.js +88 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/tornado.js +68 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/troff.js +84 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/ttcn-cfg.js +214 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/ttcn.js +283 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/turtle.js +162 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/twig.js +141 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/vb.js +276 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/vbscript.js +350 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/velocity.js +201 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/verilog.js +537 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/vhdl.js +189 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/vue.js +69 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/webidl.js +195 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/xml.js +394 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/xquery.js +437 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/yacas.js +204 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/yaml-frontmatter.js +68 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/yaml.js +117 -0
- data/vendor/assets/javascripts/locomotive/codemirror/modes/z80.js +116 -0
- data/vendor/assets/javascripts/locomotive/codemirror.js +8922 -0
- data/vendor/assets/javascripts/locomotive/select2.js +436 -175
- data/vendor/assets/javascripts/locomotive/wysihtml5x-toolbar.js +1346 -564
- data/vendor/assets/stylesheets/locomotive/codemirror/addons/dialog/dialog.css +32 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/addons/display/fullscreen.css +6 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/addons/fold/foldgutter.css +20 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/addons/hint/show-hint.css +37 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/addons/lint/lint.css +73 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/addons/merge/merge.css +113 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/addons/scroll/simplescrollbars.css +66 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/addons/search/matchesonscrollbar.css +8 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/addons/tern/tern.css +87 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/modes/tiddlywiki.css +14 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/modes/tiki.css +26 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/3024-day.css +41 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/3024-night.css +39 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/abcdef.css +32 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/ambiance-mobile.css +5 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/ambiance.css +74 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/base16-dark.css +38 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/base16-light.css +38 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/bespin.css +34 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/blackboard.css +32 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/cobalt.css +25 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/colorforth.css +33 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/dracula.css +41 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/eclipse.css +23 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/elegant.css +13 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/erlang-dark.css +34 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/hopscotch.css +34 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/icecoder.css +43 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/isotope.css +34 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/lesser-dark.css +47 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/liquibyte.css +95 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/material.css +53 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/mbo.css +37 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/mdn-like.css +46 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/midnight.css +45 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/monokai.css +36 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/neat.css +12 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/neo.css +43 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/night.css +27 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/paraiso-dark.css +38 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/paraiso-light.css +38 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/pastel-on-dark.css +53 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/railscasts.css +34 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/rubyblue.css +25 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/seti.css +44 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/solarized.css +169 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/the-matrix.css +30 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/tomorrow-night-bright.css +35 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/tomorrow-night-eighties.css +38 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/ttcn.css +64 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/twilight.css +32 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/vibrant-ink.css +34 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/xq-dark.css +53 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/xq-light.css +43 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/yeti.css +44 -0
- data/vendor/assets/stylesheets/locomotive/codemirror/themes/zenburn.css +37 -0
- data/vendor/assets/stylesheets/locomotive/codemirror.css +347 -0
- data/vendor/assets/stylesheets/locomotive/select2.css +3 -6
- metadata +349 -128
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* Select2 4.0.
|
2
|
+
* Select2 4.0.13
|
3
3
|
* https://select2.github.io
|
4
4
|
*
|
5
5
|
* Released under the MIT license
|
@@ -777,9 +777,9 @@ S2.define('select2/utils',[
|
|
777
777
|
|
778
778
|
var id = 0;
|
779
779
|
Utils.GetUniqueElementId = function (element) {
|
780
|
-
// Get a unique element Id. If element has no id,
|
781
|
-
// creates a new unique number, stores it in the id
|
782
|
-
// attribute and returns the new id.
|
780
|
+
// Get a unique element Id. If element has no id,
|
781
|
+
// creates a new unique number, stores it in the id
|
782
|
+
// attribute and returns the new id.
|
783
783
|
// If an id already exists, it simply returns it.
|
784
784
|
|
785
785
|
var select2Id = element.getAttribute('data-select2-id');
|
@@ -798,7 +798,7 @@ S2.define('select2/utils',[
|
|
798
798
|
|
799
799
|
Utils.StoreData = function (element, name, value) {
|
800
800
|
// Stores an item in the cache for a specified element.
|
801
|
-
// name is the cache key.
|
801
|
+
// name is the cache key.
|
802
802
|
var id = Utils.GetUniqueElementId(element);
|
803
803
|
if (!Utils.__cache[id]) {
|
804
804
|
Utils.__cache[id] = {};
|
@@ -809,19 +809,20 @@ S2.define('select2/utils',[
|
|
809
809
|
|
810
810
|
Utils.GetData = function (element, name) {
|
811
811
|
// Retrieves a value from the cache by its key (name)
|
812
|
-
// name is optional. If no name specified, return
|
812
|
+
// name is optional. If no name specified, return
|
813
813
|
// all cache items for the specified element.
|
814
814
|
// and for a specified element.
|
815
815
|
var id = Utils.GetUniqueElementId(element);
|
816
816
|
if (name) {
|
817
817
|
if (Utils.__cache[id]) {
|
818
|
-
|
819
|
-
|
820
|
-
|
818
|
+
if (Utils.__cache[id][name] != null) {
|
819
|
+
return Utils.__cache[id][name];
|
820
|
+
}
|
821
|
+
return $(element).data(name); // Fallback to HTML5 data attribs.
|
821
822
|
}
|
822
823
|
return $(element).data(name); // Fallback to HTML5 data attribs.
|
823
824
|
} else {
|
824
|
-
return Utils.__cache[id];
|
825
|
+
return Utils.__cache[id];
|
825
826
|
}
|
826
827
|
};
|
827
828
|
|
@@ -831,6 +832,8 @@ S2.define('select2/utils',[
|
|
831
832
|
if (Utils.__cache[id] != null) {
|
832
833
|
delete Utils.__cache[id];
|
833
834
|
}
|
835
|
+
|
836
|
+
element.removeAttribute('data-select2-id');
|
834
837
|
};
|
835
838
|
|
836
839
|
return Utils;
|
@@ -852,7 +855,7 @@ S2.define('select2/results',[
|
|
852
855
|
|
853
856
|
Results.prototype.render = function () {
|
854
857
|
var $results = $(
|
855
|
-
'<ul class="select2-results__options" role="
|
858
|
+
'<ul class="select2-results__options" role="listbox"></ul>'
|
856
859
|
);
|
857
860
|
|
858
861
|
if (this.options.get('multiple')) {
|
@@ -875,7 +878,7 @@ S2.define('select2/results',[
|
|
875
878
|
this.hideLoading();
|
876
879
|
|
877
880
|
var $message = $(
|
878
|
-
'<li role="
|
881
|
+
'<li role="alert" aria-live="assertive"' +
|
879
882
|
' class="select2-results__option"></li>'
|
880
883
|
);
|
881
884
|
|
@@ -1009,11 +1012,16 @@ S2.define('select2/results',[
|
|
1009
1012
|
option.className = 'select2-results__option';
|
1010
1013
|
|
1011
1014
|
var attrs = {
|
1012
|
-
'role': '
|
1015
|
+
'role': 'option',
|
1013
1016
|
'aria-selected': 'false'
|
1014
1017
|
};
|
1015
1018
|
|
1016
|
-
|
1019
|
+
var matches = window.Element.prototype.matches ||
|
1020
|
+
window.Element.prototype.msMatchesSelector ||
|
1021
|
+
window.Element.prototype.webkitMatchesSelector;
|
1022
|
+
|
1023
|
+
if ((data.element != null && matches.call(data.element, ':disabled')) ||
|
1024
|
+
(data.element == null && data.disabled)) {
|
1017
1025
|
delete attrs['aria-selected'];
|
1018
1026
|
attrs['aria-disabled'] = 'true';
|
1019
1027
|
}
|
@@ -1114,7 +1122,10 @@ S2.define('select2/results',[
|
|
1114
1122
|
}
|
1115
1123
|
|
1116
1124
|
self.setClasses();
|
1117
|
-
|
1125
|
+
|
1126
|
+
if (self.options.get('scrollAfterSelect')) {
|
1127
|
+
self.highlightFirstItem();
|
1128
|
+
}
|
1118
1129
|
});
|
1119
1130
|
|
1120
1131
|
container.on('unselect', function () {
|
@@ -1123,7 +1134,10 @@ S2.define('select2/results',[
|
|
1123
1134
|
}
|
1124
1135
|
|
1125
1136
|
self.setClasses();
|
1126
|
-
|
1137
|
+
|
1138
|
+
if (self.options.get('scrollAfterSelect')) {
|
1139
|
+
self.highlightFirstItem();
|
1140
|
+
}
|
1127
1141
|
});
|
1128
1142
|
|
1129
1143
|
container.on('open', function () {
|
@@ -1177,7 +1191,7 @@ S2.define('select2/results',[
|
|
1177
1191
|
|
1178
1192
|
var currentIndex = $options.index($highlighted);
|
1179
1193
|
|
1180
|
-
// If we are already at
|
1194
|
+
// If we are already at the top, don't move further
|
1181
1195
|
// If no options, currentIndex will be -1
|
1182
1196
|
if (currentIndex <= 0) {
|
1183
1197
|
return;
|
@@ -1418,6 +1432,7 @@ S2.define('select2/selection/base',[
|
|
1418
1432
|
|
1419
1433
|
$selection.attr('title', this.$element.attr('title'));
|
1420
1434
|
$selection.attr('tabindex', this._tabindex);
|
1435
|
+
$selection.attr('aria-disabled', 'false');
|
1421
1436
|
|
1422
1437
|
this.$selection = $selection;
|
1423
1438
|
|
@@ -1427,7 +1442,6 @@ S2.define('select2/selection/base',[
|
|
1427
1442
|
BaseSelection.prototype.bind = function (container, $container) {
|
1428
1443
|
var self = this;
|
1429
1444
|
|
1430
|
-
var id = container.id + '-container';
|
1431
1445
|
var resultsId = container.id + '-results';
|
1432
1446
|
|
1433
1447
|
this.container = container;
|
@@ -1470,20 +1484,19 @@ S2.define('select2/selection/base',[
|
|
1470
1484
|
self.$selection.removeAttr('aria-activedescendant');
|
1471
1485
|
self.$selection.removeAttr('aria-owns');
|
1472
1486
|
|
1473
|
-
self.$selection.focus
|
1474
|
-
window.setTimeout(function () {
|
1475
|
-
self.$selection.focus();
|
1476
|
-
}, 0);
|
1487
|
+
self.$selection.trigger('focus');
|
1477
1488
|
|
1478
1489
|
self._detachCloseHandler(container);
|
1479
1490
|
});
|
1480
1491
|
|
1481
1492
|
container.on('enable', function () {
|
1482
1493
|
self.$selection.attr('tabindex', self._tabindex);
|
1494
|
+
self.$selection.attr('aria-disabled', 'false');
|
1483
1495
|
});
|
1484
1496
|
|
1485
1497
|
container.on('disable', function () {
|
1486
1498
|
self.$selection.attr('tabindex', '-1');
|
1499
|
+
self.$selection.attr('aria-disabled', 'true');
|
1487
1500
|
});
|
1488
1501
|
};
|
1489
1502
|
|
@@ -1506,7 +1519,6 @@ S2.define('select2/selection/base',[
|
|
1506
1519
|
};
|
1507
1520
|
|
1508
1521
|
BaseSelection.prototype._attachCloseHandler = function (container) {
|
1509
|
-
var self = this;
|
1510
1522
|
|
1511
1523
|
$(document.body).on('mousedown.select2.' + container.id, function (e) {
|
1512
1524
|
var $target = $(e.target);
|
@@ -1516,8 +1528,6 @@ S2.define('select2/selection/base',[
|
|
1516
1528
|
var $all = $('.select2.select2-container--open');
|
1517
1529
|
|
1518
1530
|
$all.each(function () {
|
1519
|
-
var $this = $(this);
|
1520
|
-
|
1521
1531
|
if (this == $select[0]) {
|
1522
1532
|
return;
|
1523
1533
|
}
|
@@ -1546,6 +1556,27 @@ S2.define('select2/selection/base',[
|
|
1546
1556
|
throw new Error('The `update` method must be defined in child classes.');
|
1547
1557
|
};
|
1548
1558
|
|
1559
|
+
/**
|
1560
|
+
* Helper method to abstract the "enabled" (not "disabled") state of this
|
1561
|
+
* object.
|
1562
|
+
*
|
1563
|
+
* @return {true} if the instance is not disabled.
|
1564
|
+
* @return {false} if the instance is disabled.
|
1565
|
+
*/
|
1566
|
+
BaseSelection.prototype.isEnabled = function () {
|
1567
|
+
return !this.isDisabled();
|
1568
|
+
};
|
1569
|
+
|
1570
|
+
/**
|
1571
|
+
* Helper method to abstract the "disabled" state of this object.
|
1572
|
+
*
|
1573
|
+
* @return {true} if the disabled option is true.
|
1574
|
+
* @return {false} if the disabled option is false.
|
1575
|
+
*/
|
1576
|
+
BaseSelection.prototype.isDisabled = function () {
|
1577
|
+
return this.options.get('disabled');
|
1578
|
+
};
|
1579
|
+
|
1549
1580
|
return BaseSelection;
|
1550
1581
|
});
|
1551
1582
|
|
@@ -1610,7 +1641,7 @@ S2.define('select2/selection/single',[
|
|
1610
1641
|
|
1611
1642
|
container.on('focus', function (evt) {
|
1612
1643
|
if (!container.isOpen()) {
|
1613
|
-
self.$selection.focus
|
1644
|
+
self.$selection.trigger('focus');
|
1614
1645
|
}
|
1615
1646
|
});
|
1616
1647
|
};
|
@@ -1644,7 +1675,14 @@ S2.define('select2/selection/single',[
|
|
1644
1675
|
var formatted = this.display(selection, $rendered);
|
1645
1676
|
|
1646
1677
|
$rendered.empty().append(formatted);
|
1647
|
-
|
1678
|
+
|
1679
|
+
var title = selection.title || selection.text;
|
1680
|
+
|
1681
|
+
if (title) {
|
1682
|
+
$rendered.attr('title', title);
|
1683
|
+
} else {
|
1684
|
+
$rendered.removeAttr('title');
|
1685
|
+
}
|
1648
1686
|
};
|
1649
1687
|
|
1650
1688
|
return SingleSelection;
|
@@ -1689,7 +1727,7 @@ S2.define('select2/selection/multiple',[
|
|
1689
1727
|
'.select2-selection__choice__remove',
|
1690
1728
|
function (evt) {
|
1691
1729
|
// Ignore the event if it is disabled
|
1692
|
-
if (self.
|
1730
|
+
if (self.isDisabled()) {
|
1693
1731
|
return;
|
1694
1732
|
}
|
1695
1733
|
|
@@ -1747,7 +1785,12 @@ S2.define('select2/selection/multiple',[
|
|
1747
1785
|
var formatted = this.display(selection, $selection);
|
1748
1786
|
|
1749
1787
|
$selection.append(formatted);
|
1750
|
-
|
1788
|
+
|
1789
|
+
var title = selection.title || selection.text;
|
1790
|
+
|
1791
|
+
if (title) {
|
1792
|
+
$selection.attr('title', title);
|
1793
|
+
}
|
1751
1794
|
|
1752
1795
|
Utils.StoreData($selection[0], 'data', selection);
|
1753
1796
|
|
@@ -1845,7 +1888,7 @@ S2.define('select2/selection/allowClear',[
|
|
1845
1888
|
|
1846
1889
|
AllowClear.prototype._handleClear = function (_, evt) {
|
1847
1890
|
// Ignore the event if it is disabled
|
1848
|
-
if (this.
|
1891
|
+
if (this.isDisabled()) {
|
1849
1892
|
return;
|
1850
1893
|
}
|
1851
1894
|
|
@@ -1888,7 +1931,7 @@ S2.define('select2/selection/allowClear',[
|
|
1888
1931
|
}
|
1889
1932
|
}
|
1890
1933
|
|
1891
|
-
this.$element.trigger('change');
|
1934
|
+
this.$element.trigger('input').trigger('change');
|
1892
1935
|
|
1893
1936
|
this.trigger('toggle', {});
|
1894
1937
|
};
|
@@ -1911,8 +1954,10 @@ S2.define('select2/selection/allowClear',[
|
|
1911
1954
|
return;
|
1912
1955
|
}
|
1913
1956
|
|
1957
|
+
var removeAll = this.options.get('translations').get('removeAllItems');
|
1958
|
+
|
1914
1959
|
var $remove = $(
|
1915
|
-
'<span class="select2-selection__clear">' +
|
1960
|
+
'<span class="select2-selection__clear" title="' + removeAll() +'">' +
|
1916
1961
|
'×' +
|
1917
1962
|
'</span>'
|
1918
1963
|
);
|
@@ -1938,7 +1983,7 @@ S2.define('select2/selection/search',[
|
|
1938
1983
|
'<li class="select2-search select2-search--inline">' +
|
1939
1984
|
'<input class="select2-search__field" type="search" tabindex="-1"' +
|
1940
1985
|
' autocomplete="off" autocorrect="off" autocapitalize="none"' +
|
1941
|
-
' spellcheck="false" role="
|
1986
|
+
' spellcheck="false" role="searchbox" aria-autocomplete="list" />' +
|
1942
1987
|
'</li>'
|
1943
1988
|
);
|
1944
1989
|
|
@@ -1955,14 +2000,18 @@ S2.define('select2/selection/search',[
|
|
1955
2000
|
Search.prototype.bind = function (decorated, container, $container) {
|
1956
2001
|
var self = this;
|
1957
2002
|
|
2003
|
+
var resultsId = container.id + '-results';
|
2004
|
+
|
1958
2005
|
decorated.call(this, container, $container);
|
1959
2006
|
|
1960
2007
|
container.on('open', function () {
|
2008
|
+
self.$search.attr('aria-controls', resultsId);
|
1961
2009
|
self.$search.trigger('focus');
|
1962
2010
|
});
|
1963
2011
|
|
1964
2012
|
container.on('close', function () {
|
1965
2013
|
self.$search.val('');
|
2014
|
+
self.$search.removeAttr('aria-controls');
|
1966
2015
|
self.$search.removeAttr('aria-activedescendant');
|
1967
2016
|
self.$search.trigger('focus');
|
1968
2017
|
});
|
@@ -1982,7 +2031,11 @@ S2.define('select2/selection/search',[
|
|
1982
2031
|
});
|
1983
2032
|
|
1984
2033
|
container.on('results:focus', function (params) {
|
1985
|
-
|
2034
|
+
if (params.data._resultId) {
|
2035
|
+
self.$search.attr('aria-activedescendant', params.data._resultId);
|
2036
|
+
} else {
|
2037
|
+
self.$search.removeAttr('aria-activedescendant');
|
2038
|
+
}
|
1986
2039
|
});
|
1987
2040
|
|
1988
2041
|
this.$selection.on('focusin', '.select2-search--inline', function (evt) {
|
@@ -2016,6 +2069,12 @@ S2.define('select2/selection/search',[
|
|
2016
2069
|
}
|
2017
2070
|
});
|
2018
2071
|
|
2072
|
+
this.$selection.on('click', '.select2-search--inline', function (evt) {
|
2073
|
+
if (self.$search.val()) {
|
2074
|
+
evt.stopPropagation();
|
2075
|
+
}
|
2076
|
+
});
|
2077
|
+
|
2019
2078
|
// Try to detect the IE version should the `documentMode` property that
|
2020
2079
|
// is stored on the document. This is only implemented in IE and is
|
2021
2080
|
// slightly cleaner than doing a user agent check.
|
@@ -2101,13 +2160,7 @@ S2.define('select2/selection/search',[
|
|
2101
2160
|
|
2102
2161
|
this.resizeSearch();
|
2103
2162
|
if (searchHadFocus) {
|
2104
|
-
|
2105
|
-
if (isTagInput) {
|
2106
|
-
// fix IE11 bug where tag input lost focus
|
2107
|
-
this.$element.focus();
|
2108
|
-
} else {
|
2109
|
-
this.$search.focus();
|
2110
|
-
}
|
2163
|
+
this.$search.trigger('focus');
|
2111
2164
|
}
|
2112
2165
|
};
|
2113
2166
|
|
@@ -2140,7 +2193,7 @@ S2.define('select2/selection/search',[
|
|
2140
2193
|
var width = '';
|
2141
2194
|
|
2142
2195
|
if (this.$search.attr('placeholder') !== '') {
|
2143
|
-
width = this.$selection.find('.select2-selection__rendered').
|
2196
|
+
width = this.$selection.find('.select2-selection__rendered').width();
|
2144
2197
|
} else {
|
2145
2198
|
var minimumWidth = this.$search.val().length + 1;
|
2146
2199
|
|
@@ -2503,6 +2556,7 @@ S2.define('select2/diacritics',[
|
|
2503
2556
|
'\u019F': 'O',
|
2504
2557
|
'\uA74A': 'O',
|
2505
2558
|
'\uA74C': 'O',
|
2559
|
+
'\u0152': 'OE',
|
2506
2560
|
'\u01A2': 'OI',
|
2507
2561
|
'\uA74E': 'OO',
|
2508
2562
|
'\u0222': 'OU',
|
@@ -2912,6 +2966,7 @@ S2.define('select2/diacritics',[
|
|
2912
2966
|
'\uA74B': 'o',
|
2913
2967
|
'\uA74D': 'o',
|
2914
2968
|
'\u0275': 'o',
|
2969
|
+
'\u0153': 'oe',
|
2915
2970
|
'\u01A3': 'oi',
|
2916
2971
|
'\u0223': 'ou',
|
2917
2972
|
'\uA74F': 'oo',
|
@@ -3080,8 +3135,9 @@ S2.define('select2/diacritics',[
|
|
3080
3135
|
'\u03CD': '\u03C5',
|
3081
3136
|
'\u03CB': '\u03C5',
|
3082
3137
|
'\u03B0': '\u03C5',
|
3083
|
-
'\
|
3084
|
-
'\u03C2': '\u03C3'
|
3138
|
+
'\u03CE': '\u03C9',
|
3139
|
+
'\u03C2': '\u03C3',
|
3140
|
+
'\u2019': '\''
|
3085
3141
|
};
|
3086
3142
|
|
3087
3143
|
return diacritics;
|
@@ -3166,7 +3222,7 @@ S2.define('select2/data/select',[
|
|
3166
3222
|
if ($(data.element).is('option')) {
|
3167
3223
|
data.element.selected = true;
|
3168
3224
|
|
3169
|
-
this.$element.trigger('change');
|
3225
|
+
this.$element.trigger('input').trigger('change');
|
3170
3226
|
|
3171
3227
|
return;
|
3172
3228
|
}
|
@@ -3187,13 +3243,13 @@ S2.define('select2/data/select',[
|
|
3187
3243
|
}
|
3188
3244
|
|
3189
3245
|
self.$element.val(val);
|
3190
|
-
self.$element.trigger('change');
|
3246
|
+
self.$element.trigger('input').trigger('change');
|
3191
3247
|
});
|
3192
3248
|
} else {
|
3193
3249
|
var val = data.id;
|
3194
3250
|
|
3195
3251
|
this.$element.val(val);
|
3196
|
-
this.$element.trigger('change');
|
3252
|
+
this.$element.trigger('input').trigger('change');
|
3197
3253
|
}
|
3198
3254
|
};
|
3199
3255
|
|
@@ -3209,7 +3265,7 @@ S2.define('select2/data/select',[
|
|
3209
3265
|
if ($(data.element).is('option')) {
|
3210
3266
|
data.element.selected = false;
|
3211
3267
|
|
3212
|
-
this.$element.trigger('change');
|
3268
|
+
this.$element.trigger('input').trigger('change');
|
3213
3269
|
|
3214
3270
|
return;
|
3215
3271
|
}
|
@@ -3227,7 +3283,7 @@ S2.define('select2/data/select',[
|
|
3227
3283
|
|
3228
3284
|
self.$element.val(val);
|
3229
3285
|
|
3230
|
-
self.$element.trigger('change');
|
3286
|
+
self.$element.trigger('input').trigger('change');
|
3231
3287
|
});
|
3232
3288
|
};
|
3233
3289
|
|
@@ -3420,15 +3476,19 @@ S2.define('select2/data/array',[
|
|
3420
3476
|
'jquery'
|
3421
3477
|
], function (SelectAdapter, Utils, $) {
|
3422
3478
|
function ArrayAdapter ($element, options) {
|
3423
|
-
|
3479
|
+
this._dataToConvert = options.get('data') || [];
|
3424
3480
|
|
3425
3481
|
ArrayAdapter.__super__.constructor.call(this, $element, options);
|
3426
|
-
|
3427
|
-
this.addOptions(this.convertToOptions(data));
|
3428
3482
|
}
|
3429
3483
|
|
3430
3484
|
Utils.Extend(ArrayAdapter, SelectAdapter);
|
3431
3485
|
|
3486
|
+
ArrayAdapter.prototype.bind = function (container, $container) {
|
3487
|
+
ArrayAdapter.__super__.bind.call(this, container, $container);
|
3488
|
+
|
3489
|
+
this.addOptions(this.convertToOptions(this._dataToConvert));
|
3490
|
+
};
|
3491
|
+
|
3432
3492
|
ArrayAdapter.prototype.select = function (data) {
|
3433
3493
|
var $option = this.$element.find('option').filter(function (i, elm) {
|
3434
3494
|
return elm.value == data.id.toString();
|
@@ -3718,8 +3778,6 @@ S2.define('select2/data/tags',[
|
|
3718
3778
|
};
|
3719
3779
|
|
3720
3780
|
Tags.prototype._removeOldTags = function (_) {
|
3721
|
-
var tag = this._lastTag;
|
3722
|
-
|
3723
3781
|
var $options = this.$element.find('option[data-select2-tag]');
|
3724
3782
|
|
3725
3783
|
$options.each(function () {
|
@@ -3794,7 +3852,7 @@ S2.define('select2/data/tokenizer',[
|
|
3794
3852
|
// Replace the search term if we have the search box
|
3795
3853
|
if (this.$search.length) {
|
3796
3854
|
this.$search.val(tokenData.term);
|
3797
|
-
this.$search.focus
|
3855
|
+
this.$search.trigger('focus');
|
3798
3856
|
}
|
3799
3857
|
|
3800
3858
|
params.term = tokenData.term;
|
@@ -3923,10 +3981,30 @@ S2.define('select2/data/maximumSelectionLength',[
|
|
3923
3981
|
decorated.call(this, $e, options);
|
3924
3982
|
}
|
3925
3983
|
|
3984
|
+
MaximumSelectionLength.prototype.bind =
|
3985
|
+
function (decorated, container, $container) {
|
3986
|
+
var self = this;
|
3987
|
+
|
3988
|
+
decorated.call(this, container, $container);
|
3989
|
+
|
3990
|
+
container.on('select', function () {
|
3991
|
+
self._checkIfMaximumSelected();
|
3992
|
+
});
|
3993
|
+
};
|
3994
|
+
|
3926
3995
|
MaximumSelectionLength.prototype.query =
|
3927
3996
|
function (decorated, params, callback) {
|
3928
3997
|
var self = this;
|
3929
3998
|
|
3999
|
+
this._checkIfMaximumSelected(function () {
|
4000
|
+
decorated.call(self, params, callback);
|
4001
|
+
});
|
4002
|
+
};
|
4003
|
+
|
4004
|
+
MaximumSelectionLength.prototype._checkIfMaximumSelected =
|
4005
|
+
function (_, successCallback) {
|
4006
|
+
var self = this;
|
4007
|
+
|
3930
4008
|
this.current(function (currentData) {
|
3931
4009
|
var count = currentData != null ? currentData.length : 0;
|
3932
4010
|
if (self.maximumSelectionLength > 0 &&
|
@@ -3939,7 +4017,10 @@ S2.define('select2/data/maximumSelectionLength',[
|
|
3939
4017
|
});
|
3940
4018
|
return;
|
3941
4019
|
}
|
3942
|
-
|
4020
|
+
|
4021
|
+
if (successCallback) {
|
4022
|
+
successCallback();
|
4023
|
+
}
|
3943
4024
|
});
|
3944
4025
|
};
|
3945
4026
|
|
@@ -3978,7 +4059,7 @@ S2.define('select2/dropdown',[
|
|
3978
4059
|
};
|
3979
4060
|
|
3980
4061
|
Dropdown.prototype.position = function ($dropdown, $container) {
|
3981
|
-
// Should be
|
4062
|
+
// Should be implemented in subclasses
|
3982
4063
|
};
|
3983
4064
|
|
3984
4065
|
Dropdown.prototype.destroy = function () {
|
@@ -4002,7 +4083,7 @@ S2.define('select2/dropdown/search',[
|
|
4002
4083
|
'<span class="select2-search select2-search--dropdown">' +
|
4003
4084
|
'<input class="select2-search__field" type="search" tabindex="-1"' +
|
4004
4085
|
' autocomplete="off" autocorrect="off" autocapitalize="none"' +
|
4005
|
-
' spellcheck="false" role="
|
4086
|
+
' spellcheck="false" role="searchbox" aria-autocomplete="list" />' +
|
4006
4087
|
'</span>'
|
4007
4088
|
);
|
4008
4089
|
|
@@ -4017,6 +4098,8 @@ S2.define('select2/dropdown/search',[
|
|
4017
4098
|
Search.prototype.bind = function (decorated, container, $container) {
|
4018
4099
|
var self = this;
|
4019
4100
|
|
4101
|
+
var resultsId = container.id + '-results';
|
4102
|
+
|
4020
4103
|
decorated.call(this, container, $container);
|
4021
4104
|
|
4022
4105
|
this.$search.on('keydown', function (evt) {
|
@@ -4039,24 +4122,27 @@ S2.define('select2/dropdown/search',[
|
|
4039
4122
|
|
4040
4123
|
container.on('open', function () {
|
4041
4124
|
self.$search.attr('tabindex', 0);
|
4125
|
+
self.$search.attr('aria-controls', resultsId);
|
4042
4126
|
|
4043
|
-
self.$search.focus
|
4127
|
+
self.$search.trigger('focus');
|
4044
4128
|
|
4045
4129
|
window.setTimeout(function () {
|
4046
|
-
self.$search.focus
|
4130
|
+
self.$search.trigger('focus');
|
4047
4131
|
}, 0);
|
4048
4132
|
});
|
4049
4133
|
|
4050
4134
|
container.on('close', function () {
|
4051
4135
|
self.$search.attr('tabindex', -1);
|
4136
|
+
self.$search.removeAttr('aria-controls');
|
4137
|
+
self.$search.removeAttr('aria-activedescendant');
|
4052
4138
|
|
4053
4139
|
self.$search.val('');
|
4054
|
-
self.$search.blur
|
4140
|
+
self.$search.trigger('blur');
|
4055
4141
|
});
|
4056
4142
|
|
4057
4143
|
container.on('focus', function () {
|
4058
4144
|
if (!container.isOpen()) {
|
4059
|
-
self.$search.focus
|
4145
|
+
self.$search.trigger('focus');
|
4060
4146
|
}
|
4061
4147
|
});
|
4062
4148
|
|
@@ -4071,6 +4157,14 @@ S2.define('select2/dropdown/search',[
|
|
4071
4157
|
}
|
4072
4158
|
}
|
4073
4159
|
});
|
4160
|
+
|
4161
|
+
container.on('results:focus', function (params) {
|
4162
|
+
if (params.data._resultId) {
|
4163
|
+
self.$search.attr('aria-activedescendant', params.data._resultId);
|
4164
|
+
} else {
|
4165
|
+
self.$search.removeAttr('aria-activedescendant');
|
4166
|
+
}
|
4167
|
+
});
|
4074
4168
|
};
|
4075
4169
|
|
4076
4170
|
Search.prototype.handleSearch = function (evt) {
|
@@ -4155,6 +4249,7 @@ S2.define('select2/dropdown/infiniteScroll',[
|
|
4155
4249
|
|
4156
4250
|
if (this.showLoadingMore(data)) {
|
4157
4251
|
this.$results.append(this.$loadingMore);
|
4252
|
+
this.loadMoreIfNeeded();
|
4158
4253
|
}
|
4159
4254
|
};
|
4160
4255
|
|
@@ -4173,25 +4268,27 @@ S2.define('select2/dropdown/infiniteScroll',[
|
|
4173
4268
|
self.loading = true;
|
4174
4269
|
});
|
4175
4270
|
|
4176
|
-
this.$results.on('scroll',
|
4177
|
-
|
4178
|
-
document.documentElement,
|
4179
|
-
self.$loadingMore[0]
|
4180
|
-
);
|
4271
|
+
this.$results.on('scroll', this.loadMoreIfNeeded.bind(this));
|
4272
|
+
};
|
4181
4273
|
|
4182
|
-
|
4183
|
-
|
4184
|
-
|
4274
|
+
InfiniteScroll.prototype.loadMoreIfNeeded = function () {
|
4275
|
+
var isLoadMoreVisible = $.contains(
|
4276
|
+
document.documentElement,
|
4277
|
+
this.$loadingMore[0]
|
4278
|
+
);
|
4185
4279
|
|
4186
|
-
|
4187
|
-
|
4188
|
-
|
4189
|
-
self.$loadingMore.outerHeight(false);
|
4280
|
+
if (this.loading || !isLoadMoreVisible) {
|
4281
|
+
return;
|
4282
|
+
}
|
4190
4283
|
|
4191
|
-
|
4192
|
-
|
4193
|
-
|
4194
|
-
|
4284
|
+
var currentOffset = this.$results.offset().top +
|
4285
|
+
this.$results.outerHeight(false);
|
4286
|
+
var loadingMoreOffset = this.$loadingMore.offset().top +
|
4287
|
+
this.$loadingMore.outerHeight(false);
|
4288
|
+
|
4289
|
+
if (currentOffset + 50 >= loadingMoreOffset) {
|
4290
|
+
this.loadMore();
|
4291
|
+
}
|
4195
4292
|
};
|
4196
4293
|
|
4197
4294
|
InfiniteScroll.prototype.loadMore = function () {
|
@@ -4212,7 +4309,7 @@ S2.define('select2/dropdown/infiniteScroll',[
|
|
4212
4309
|
var $option = $(
|
4213
4310
|
'<li ' +
|
4214
4311
|
'class="select2-results__option select2-results__option--load-more"' +
|
4215
|
-
'role="
|
4312
|
+
'role="option" aria-disabled="true"></li>'
|
4216
4313
|
);
|
4217
4314
|
|
4218
4315
|
var message = this.options.get('translations').get('loadingMore');
|
@@ -4230,7 +4327,7 @@ S2.define('select2/dropdown/attachBody',[
|
|
4230
4327
|
'../utils'
|
4231
4328
|
], function ($, Utils) {
|
4232
4329
|
function AttachBody (decorated, $element, options) {
|
4233
|
-
this.$dropdownParent = options.get('dropdownParent') ||
|
4330
|
+
this.$dropdownParent = $(options.get('dropdownParent') || document.body);
|
4234
4331
|
|
4235
4332
|
decorated.call(this, $element, options);
|
4236
4333
|
}
|
@@ -4238,27 +4335,14 @@ S2.define('select2/dropdown/attachBody',[
|
|
4238
4335
|
AttachBody.prototype.bind = function (decorated, container, $container) {
|
4239
4336
|
var self = this;
|
4240
4337
|
|
4241
|
-
var setupResultsEvents = false;
|
4242
|
-
|
4243
4338
|
decorated.call(this, container, $container);
|
4244
4339
|
|
4245
4340
|
container.on('open', function () {
|
4246
4341
|
self._showDropdown();
|
4247
4342
|
self._attachPositioningHandler(container);
|
4248
4343
|
|
4249
|
-
|
4250
|
-
|
4251
|
-
|
4252
|
-
container.on('results:all', function () {
|
4253
|
-
self._positionDropdown();
|
4254
|
-
self._resizeDropdown();
|
4255
|
-
});
|
4256
|
-
|
4257
|
-
container.on('results:append', function () {
|
4258
|
-
self._positionDropdown();
|
4259
|
-
self._resizeDropdown();
|
4260
|
-
});
|
4261
|
-
}
|
4344
|
+
// Must bind after the results handlers to ensure correct sizing
|
4345
|
+
self._bindContainerResultHandlers(container);
|
4262
4346
|
});
|
4263
4347
|
|
4264
4348
|
container.on('close', function () {
|
@@ -4307,6 +4391,44 @@ S2.define('select2/dropdown/attachBody',[
|
|
4307
4391
|
this.$dropdownContainer.detach();
|
4308
4392
|
};
|
4309
4393
|
|
4394
|
+
AttachBody.prototype._bindContainerResultHandlers =
|
4395
|
+
function (decorated, container) {
|
4396
|
+
|
4397
|
+
// These should only be bound once
|
4398
|
+
if (this._containerResultsHandlersBound) {
|
4399
|
+
return;
|
4400
|
+
}
|
4401
|
+
|
4402
|
+
var self = this;
|
4403
|
+
|
4404
|
+
container.on('results:all', function () {
|
4405
|
+
self._positionDropdown();
|
4406
|
+
self._resizeDropdown();
|
4407
|
+
});
|
4408
|
+
|
4409
|
+
container.on('results:append', function () {
|
4410
|
+
self._positionDropdown();
|
4411
|
+
self._resizeDropdown();
|
4412
|
+
});
|
4413
|
+
|
4414
|
+
container.on('results:message', function () {
|
4415
|
+
self._positionDropdown();
|
4416
|
+
self._resizeDropdown();
|
4417
|
+
});
|
4418
|
+
|
4419
|
+
container.on('select', function () {
|
4420
|
+
self._positionDropdown();
|
4421
|
+
self._resizeDropdown();
|
4422
|
+
});
|
4423
|
+
|
4424
|
+
container.on('unselect', function () {
|
4425
|
+
self._positionDropdown();
|
4426
|
+
self._resizeDropdown();
|
4427
|
+
});
|
4428
|
+
|
4429
|
+
this._containerResultsHandlersBound = true;
|
4430
|
+
};
|
4431
|
+
|
4310
4432
|
AttachBody.prototype._attachPositioningHandler =
|
4311
4433
|
function (decorated, container) {
|
4312
4434
|
var self = this;
|
@@ -4383,16 +4505,26 @@ S2.define('select2/dropdown/attachBody',[
|
|
4383
4505
|
top: container.bottom
|
4384
4506
|
};
|
4385
4507
|
|
4386
|
-
// Determine what the parent element is to use for
|
4508
|
+
// Determine what the parent element is to use for calculating the offset
|
4387
4509
|
var $offsetParent = this.$dropdownParent;
|
4388
4510
|
|
4389
|
-
// For statically
|
4511
|
+
// For statically positioned elements, we need to get the element
|
4390
4512
|
// that is determining the offset
|
4391
4513
|
if ($offsetParent.css('position') === 'static') {
|
4392
4514
|
$offsetParent = $offsetParent.offsetParent();
|
4393
4515
|
}
|
4394
4516
|
|
4395
|
-
var parentOffset =
|
4517
|
+
var parentOffset = {
|
4518
|
+
top: 0,
|
4519
|
+
left: 0
|
4520
|
+
};
|
4521
|
+
|
4522
|
+
if (
|
4523
|
+
$.contains(document.body, $offsetParent[0]) ||
|
4524
|
+
$offsetParent[0].isConnected
|
4525
|
+
) {
|
4526
|
+
parentOffset = $offsetParent.offset();
|
4527
|
+
}
|
4396
4528
|
|
4397
4529
|
css.top -= parentOffset.top;
|
4398
4530
|
css.left -= parentOffset.left;
|
@@ -4562,7 +4694,7 @@ S2.define('select2/dropdown/closeOnSelect',[
|
|
4562
4694
|
var originalEvent = evt.originalEvent;
|
4563
4695
|
|
4564
4696
|
// Don't close if the control key is being held
|
4565
|
-
if (originalEvent && originalEvent.ctrlKey) {
|
4697
|
+
if (originalEvent && (originalEvent.ctrlKey || originalEvent.metaKey)) {
|
4566
4698
|
return;
|
4567
4699
|
}
|
4568
4700
|
|
@@ -4616,6 +4748,9 @@ S2.define('select2/i18n/en',[],function () {
|
|
4616
4748
|
},
|
4617
4749
|
searching: function () {
|
4618
4750
|
return 'Searching…';
|
4751
|
+
},
|
4752
|
+
removeAllItems: function () {
|
4753
|
+
return 'Remove all items';
|
4619
4754
|
}
|
4620
4755
|
};
|
4621
4756
|
});
|
@@ -4854,66 +4989,29 @@ S2.define('select2/defaults',[
|
|
4854
4989
|
);
|
4855
4990
|
}
|
4856
4991
|
|
4857
|
-
|
4858
|
-
|
4859
|
-
|
4860
|
-
// Extract the region information if it is included
|
4861
|
-
var languageParts = options.language.split('-');
|
4862
|
-
var baseLanguage = languageParts[0];
|
4863
|
-
|
4864
|
-
options.language = [options.language, baseLanguage];
|
4865
|
-
} else {
|
4866
|
-
options.language = [options.language];
|
4867
|
-
}
|
4868
|
-
}
|
4992
|
+
// If the defaults were not previously applied from an element, it is
|
4993
|
+
// possible for the language option to have not been resolved
|
4994
|
+
options.language = this._resolveLanguage(options.language);
|
4869
4995
|
|
4870
|
-
|
4871
|
-
|
4872
|
-
options.language.push('en');
|
4996
|
+
// Always fall back to English since it will always be complete
|
4997
|
+
options.language.push('en');
|
4873
4998
|
|
4874
|
-
|
4999
|
+
var uniqueLanguages = [];
|
4875
5000
|
|
4876
|
-
|
4877
|
-
|
4878
|
-
var language = {};
|
5001
|
+
for (var l = 0; l < options.language.length; l++) {
|
5002
|
+
var language = options.language[l];
|
4879
5003
|
|
4880
|
-
|
4881
|
-
|
4882
|
-
language = Translation.loadPath(name);
|
4883
|
-
} catch (e) {
|
4884
|
-
try {
|
4885
|
-
// If we couldn't load it, check if it wasn't the full path
|
4886
|
-
name = this.defaults.amdLanguageBase + name;
|
4887
|
-
language = Translation.loadPath(name);
|
4888
|
-
} catch (ex) {
|
4889
|
-
// The translation could not be loaded at all. Sometimes this is
|
4890
|
-
// because of a configuration problem, other times this can be
|
4891
|
-
// because of how Select2 helps load all possible translation files.
|
4892
|
-
if (options.debug && window.console && console.warn) {
|
4893
|
-
console.warn(
|
4894
|
-
'Select2: The language file for "' + name + '" could not be ' +
|
4895
|
-
'automatically loaded. A fallback will be used instead.'
|
4896
|
-
);
|
4897
|
-
}
|
4898
|
-
|
4899
|
-
continue;
|
4900
|
-
}
|
4901
|
-
}
|
4902
|
-
|
4903
|
-
languages.extend(language);
|
5004
|
+
if (uniqueLanguages.indexOf(language) === -1) {
|
5005
|
+
uniqueLanguages.push(language);
|
4904
5006
|
}
|
5007
|
+
}
|
4905
5008
|
|
4906
|
-
|
4907
|
-
} else {
|
4908
|
-
var baseTranslation = Translation.loadPath(
|
4909
|
-
this.defaults.amdLanguageBase + 'en'
|
4910
|
-
);
|
4911
|
-
var customTranslation = new Translation(options.language);
|
4912
|
-
|
4913
|
-
customTranslation.extend(baseTranslation);
|
5009
|
+
options.language = uniqueLanguages;
|
4914
5010
|
|
4915
|
-
|
4916
|
-
|
5011
|
+
options.translations = this._processTranslations(
|
5012
|
+
options.language,
|
5013
|
+
options.debug
|
5014
|
+
);
|
4917
5015
|
|
4918
5016
|
return options;
|
4919
5017
|
};
|
@@ -4980,13 +5078,14 @@ S2.define('select2/defaults',[
|
|
4980
5078
|
debug: false,
|
4981
5079
|
dropdownAutoWidth: false,
|
4982
5080
|
escapeMarkup: Utils.escapeMarkup,
|
4983
|
-
language:
|
5081
|
+
language: {},
|
4984
5082
|
matcher: matcher,
|
4985
5083
|
minimumInputLength: 0,
|
4986
5084
|
maximumInputLength: 0,
|
4987
5085
|
maximumSelectionLength: 0,
|
4988
5086
|
minimumResultsForSearch: 0,
|
4989
5087
|
selectOnClose: false,
|
5088
|
+
scrollAfterSelect: false,
|
4990
5089
|
sorter: function (data) {
|
4991
5090
|
return data;
|
4992
5091
|
},
|
@@ -5001,6 +5100,103 @@ S2.define('select2/defaults',[
|
|
5001
5100
|
};
|
5002
5101
|
};
|
5003
5102
|
|
5103
|
+
Defaults.prototype.applyFromElement = function (options, $element) {
|
5104
|
+
var optionLanguage = options.language;
|
5105
|
+
var defaultLanguage = this.defaults.language;
|
5106
|
+
var elementLanguage = $element.prop('lang');
|
5107
|
+
var parentLanguage = $element.closest('[lang]').prop('lang');
|
5108
|
+
|
5109
|
+
var languages = Array.prototype.concat.call(
|
5110
|
+
this._resolveLanguage(elementLanguage),
|
5111
|
+
this._resolveLanguage(optionLanguage),
|
5112
|
+
this._resolveLanguage(defaultLanguage),
|
5113
|
+
this._resolveLanguage(parentLanguage)
|
5114
|
+
);
|
5115
|
+
|
5116
|
+
options.language = languages;
|
5117
|
+
|
5118
|
+
return options;
|
5119
|
+
};
|
5120
|
+
|
5121
|
+
Defaults.prototype._resolveLanguage = function (language) {
|
5122
|
+
if (!language) {
|
5123
|
+
return [];
|
5124
|
+
}
|
5125
|
+
|
5126
|
+
if ($.isEmptyObject(language)) {
|
5127
|
+
return [];
|
5128
|
+
}
|
5129
|
+
|
5130
|
+
if ($.isPlainObject(language)) {
|
5131
|
+
return [language];
|
5132
|
+
}
|
5133
|
+
|
5134
|
+
var languages;
|
5135
|
+
|
5136
|
+
if (!$.isArray(language)) {
|
5137
|
+
languages = [language];
|
5138
|
+
} else {
|
5139
|
+
languages = language;
|
5140
|
+
}
|
5141
|
+
|
5142
|
+
var resolvedLanguages = [];
|
5143
|
+
|
5144
|
+
for (var l = 0; l < languages.length; l++) {
|
5145
|
+
resolvedLanguages.push(languages[l]);
|
5146
|
+
|
5147
|
+
if (typeof languages[l] === 'string' && languages[l].indexOf('-') > 0) {
|
5148
|
+
// Extract the region information if it is included
|
5149
|
+
var languageParts = languages[l].split('-');
|
5150
|
+
var baseLanguage = languageParts[0];
|
5151
|
+
|
5152
|
+
resolvedLanguages.push(baseLanguage);
|
5153
|
+
}
|
5154
|
+
}
|
5155
|
+
|
5156
|
+
return resolvedLanguages;
|
5157
|
+
};
|
5158
|
+
|
5159
|
+
Defaults.prototype._processTranslations = function (languages, debug) {
|
5160
|
+
var translations = new Translation();
|
5161
|
+
|
5162
|
+
for (var l = 0; l < languages.length; l++) {
|
5163
|
+
var languageData = new Translation();
|
5164
|
+
|
5165
|
+
var language = languages[l];
|
5166
|
+
|
5167
|
+
if (typeof language === 'string') {
|
5168
|
+
try {
|
5169
|
+
// Try to load it with the original name
|
5170
|
+
languageData = Translation.loadPath(language);
|
5171
|
+
} catch (e) {
|
5172
|
+
try {
|
5173
|
+
// If we couldn't load it, check if it wasn't the full path
|
5174
|
+
language = this.defaults.amdLanguageBase + language;
|
5175
|
+
languageData = Translation.loadPath(language);
|
5176
|
+
} catch (ex) {
|
5177
|
+
// The translation could not be loaded at all. Sometimes this is
|
5178
|
+
// because of a configuration problem, other times this can be
|
5179
|
+
// because of how Select2 helps load all possible translation files
|
5180
|
+
if (debug && window.console && console.warn) {
|
5181
|
+
console.warn(
|
5182
|
+
'Select2: The language file for "' + language + '" could ' +
|
5183
|
+
'not be automatically loaded. A fallback will be used instead.'
|
5184
|
+
);
|
5185
|
+
}
|
5186
|
+
}
|
5187
|
+
}
|
5188
|
+
} else if ($.isPlainObject(language)) {
|
5189
|
+
languageData = new Translation(language);
|
5190
|
+
} else {
|
5191
|
+
languageData = language;
|
5192
|
+
}
|
5193
|
+
|
5194
|
+
translations.extend(languageData);
|
5195
|
+
}
|
5196
|
+
|
5197
|
+
return translations;
|
5198
|
+
};
|
5199
|
+
|
5004
5200
|
Defaults.prototype.set = function (key, value) {
|
5005
5201
|
var camelKey = $.camelCase(key);
|
5006
5202
|
|
@@ -5030,6 +5226,10 @@ S2.define('select2/options',[
|
|
5030
5226
|
this.fromElement($element);
|
5031
5227
|
}
|
5032
5228
|
|
5229
|
+
if ($element != null) {
|
5230
|
+
this.options = Defaults.applyFromElement(this.options, $element);
|
5231
|
+
}
|
5232
|
+
|
5033
5233
|
this.options = Defaults.apply(this.options);
|
5034
5234
|
|
5035
5235
|
if ($element && $element.is('input')) {
|
@@ -5053,14 +5253,6 @@ S2.define('select2/options',[
|
|
5053
5253
|
this.options.disabled = $e.prop('disabled');
|
5054
5254
|
}
|
5055
5255
|
|
5056
|
-
if (this.options.language == null) {
|
5057
|
-
if ($e.prop('lang')) {
|
5058
|
-
this.options.language = $e.prop('lang').toLowerCase();
|
5059
|
-
} else if ($e.closest('[lang]').prop('lang')) {
|
5060
|
-
this.options.language = $e.closest('[lang]').prop('lang');
|
5061
|
-
}
|
5062
|
-
}
|
5063
|
-
|
5064
5256
|
if (this.options.dir == null) {
|
5065
5257
|
if ($e.prop('dir')) {
|
5066
5258
|
this.options.dir = $e.prop('dir');
|
@@ -5098,20 +5290,43 @@ S2.define('select2/options',[
|
|
5098
5290
|
|
5099
5291
|
$e.attr('ajax--url', Utils.GetData($e[0], 'ajaxUrl'));
|
5100
5292
|
Utils.StoreData($e[0], 'ajax-Url', Utils.GetData($e[0], 'ajaxUrl'));
|
5101
|
-
|
5102
5293
|
}
|
5103
5294
|
|
5104
5295
|
var dataset = {};
|
5105
5296
|
|
5297
|
+
function upperCaseLetter(_, letter) {
|
5298
|
+
return letter.toUpperCase();
|
5299
|
+
}
|
5300
|
+
|
5301
|
+
// Pre-load all of the attributes which are prefixed with `data-`
|
5302
|
+
for (var attr = 0; attr < $e[0].attributes.length; attr++) {
|
5303
|
+
var attributeName = $e[0].attributes[attr].name;
|
5304
|
+
var prefix = 'data-';
|
5305
|
+
|
5306
|
+
if (attributeName.substr(0, prefix.length) == prefix) {
|
5307
|
+
// Get the contents of the attribute after `data-`
|
5308
|
+
var dataName = attributeName.substring(prefix.length);
|
5309
|
+
|
5310
|
+
// Get the data contents from the consistent source
|
5311
|
+
// This is more than likely the jQuery data helper
|
5312
|
+
var dataValue = Utils.GetData($e[0], dataName);
|
5313
|
+
|
5314
|
+
// camelCase the attribute name to match the spec
|
5315
|
+
var camelDataName = dataName.replace(/-([a-z])/g, upperCaseLetter);
|
5316
|
+
|
5317
|
+
// Store the data attribute contents into the dataset since
|
5318
|
+
dataset[camelDataName] = dataValue;
|
5319
|
+
}
|
5320
|
+
}
|
5321
|
+
|
5106
5322
|
// Prefer the element's `dataset` attribute if it exists
|
5107
5323
|
// jQuery 1.x does not correctly handle data attributes with multiple dashes
|
5108
5324
|
if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {
|
5109
|
-
dataset = $.extend(true, {}, $e[0].dataset,
|
5110
|
-
} else {
|
5111
|
-
dataset = Utils.GetData($e[0]);
|
5325
|
+
dataset = $.extend(true, {}, $e[0].dataset, dataset);
|
5112
5326
|
}
|
5113
5327
|
|
5114
|
-
|
5328
|
+
// Prefer our internal data cache if it exists
|
5329
|
+
var data = $.extend(true, {}, Utils.GetData($e[0]), dataset);
|
5115
5330
|
|
5116
5331
|
data = Utils._convertData(data);
|
5117
5332
|
|
@@ -5305,6 +5520,12 @@ S2.define('select2/core',[
|
|
5305
5520
|
return null;
|
5306
5521
|
}
|
5307
5522
|
|
5523
|
+
if (method == 'computedstyle') {
|
5524
|
+
var computedStyle = window.getComputedStyle($element[0]);
|
5525
|
+
|
5526
|
+
return computedStyle.width;
|
5527
|
+
}
|
5528
|
+
|
5308
5529
|
return method;
|
5309
5530
|
};
|
5310
5531
|
|
@@ -5345,8 +5566,8 @@ S2.define('select2/core',[
|
|
5345
5566
|
|
5346
5567
|
if (observer != null) {
|
5347
5568
|
this._observer = new observer(function (mutations) {
|
5348
|
-
|
5349
|
-
|
5569
|
+
self._syncA();
|
5570
|
+
self._syncS(null, mutations);
|
5350
5571
|
});
|
5351
5572
|
this._observer.observe(this.$element[0], {
|
5352
5573
|
attributes: true,
|
@@ -5468,7 +5689,7 @@ S2.define('select2/core',[
|
|
5468
5689
|
if (self.isOpen()) {
|
5469
5690
|
if (key === KEYS.ESC || key === KEYS.TAB ||
|
5470
5691
|
(key === KEYS.UP && evt.altKey)) {
|
5471
|
-
self.close();
|
5692
|
+
self.close(evt);
|
5472
5693
|
|
5473
5694
|
evt.preventDefault();
|
5474
5695
|
} else if (key === KEYS.ENTER) {
|
@@ -5502,7 +5723,7 @@ S2.define('select2/core',[
|
|
5502
5723
|
Select2.prototype._syncAttributes = function () {
|
5503
5724
|
this.options.set('disabled', this.$element.prop('disabled'));
|
5504
5725
|
|
5505
|
-
if (this.
|
5726
|
+
if (this.isDisabled()) {
|
5506
5727
|
if (this.isOpen()) {
|
5507
5728
|
this.close();
|
5508
5729
|
}
|
@@ -5513,7 +5734,7 @@ S2.define('select2/core',[
|
|
5513
5734
|
}
|
5514
5735
|
};
|
5515
5736
|
|
5516
|
-
Select2.prototype.
|
5737
|
+
Select2.prototype._isChangeMutation = function (evt, mutations) {
|
5517
5738
|
var changed = false;
|
5518
5739
|
var self = this;
|
5519
5740
|
|
@@ -5541,7 +5762,22 @@ S2.define('select2/core',[
|
|
5541
5762
|
}
|
5542
5763
|
} else if (mutations.removedNodes && mutations.removedNodes.length > 0) {
|
5543
5764
|
changed = true;
|
5765
|
+
} else if ($.isArray(mutations)) {
|
5766
|
+
$.each(mutations, function(evt, mutation) {
|
5767
|
+
if (self._isChangeMutation(evt, mutation)) {
|
5768
|
+
// We've found a change mutation.
|
5769
|
+
// Let's escape from the loop and continue
|
5770
|
+
changed = true;
|
5771
|
+
return false;
|
5772
|
+
}
|
5773
|
+
});
|
5544
5774
|
}
|
5775
|
+
return changed;
|
5776
|
+
};
|
5777
|
+
|
5778
|
+
Select2.prototype._syncSubtree = function (evt, mutations) {
|
5779
|
+
var changed = this._isChangeMutation(evt, mutations);
|
5780
|
+
var self = this;
|
5545
5781
|
|
5546
5782
|
// Only re-pull the data if we think there is a change
|
5547
5783
|
if (changed) {
|
@@ -5592,7 +5828,7 @@ S2.define('select2/core',[
|
|
5592
5828
|
};
|
5593
5829
|
|
5594
5830
|
Select2.prototype.toggleDropdown = function () {
|
5595
|
-
if (this.
|
5831
|
+
if (this.isDisabled()) {
|
5596
5832
|
return;
|
5597
5833
|
}
|
5598
5834
|
|
@@ -5608,15 +5844,40 @@ S2.define('select2/core',[
|
|
5608
5844
|
return;
|
5609
5845
|
}
|
5610
5846
|
|
5847
|
+
if (this.isDisabled()) {
|
5848
|
+
return;
|
5849
|
+
}
|
5850
|
+
|
5611
5851
|
this.trigger('query', {});
|
5612
5852
|
};
|
5613
5853
|
|
5614
|
-
Select2.prototype.close = function () {
|
5854
|
+
Select2.prototype.close = function (evt) {
|
5615
5855
|
if (!this.isOpen()) {
|
5616
5856
|
return;
|
5617
5857
|
}
|
5618
5858
|
|
5619
|
-
this.trigger('close', {});
|
5859
|
+
this.trigger('close', { originalEvent : evt });
|
5860
|
+
};
|
5861
|
+
|
5862
|
+
/**
|
5863
|
+
* Helper method to abstract the "enabled" (not "disabled") state of this
|
5864
|
+
* object.
|
5865
|
+
*
|
5866
|
+
* @return {true} if the instance is not disabled.
|
5867
|
+
* @return {false} if the instance is disabled.
|
5868
|
+
*/
|
5869
|
+
Select2.prototype.isEnabled = function () {
|
5870
|
+
return !this.isDisabled();
|
5871
|
+
};
|
5872
|
+
|
5873
|
+
/**
|
5874
|
+
* Helper method to abstract the "disabled" state of this object.
|
5875
|
+
*
|
5876
|
+
* @return {true} if the disabled option is true.
|
5877
|
+
* @return {false} if the disabled option is false.
|
5878
|
+
*/
|
5879
|
+
Select2.prototype.isDisabled = function () {
|
5880
|
+
return this.options.get('disabled');
|
5620
5881
|
};
|
5621
5882
|
|
5622
5883
|
Select2.prototype.isOpen = function () {
|
@@ -5693,7 +5954,7 @@ S2.define('select2/core',[
|
|
5693
5954
|
});
|
5694
5955
|
}
|
5695
5956
|
|
5696
|
-
this.$element.val(newVal).trigger('change');
|
5957
|
+
this.$element.val(newVal).trigger('input').trigger('change');
|
5697
5958
|
};
|
5698
5959
|
|
5699
5960
|
Select2.prototype.destroy = function () {
|