kms 0.9.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/{vendor/assets/bower_components/Responsive-Dashboard/src/img → app/assets/images}/avatar.jpg +0 -0
- data/app/assets/javascripts/kms/application.js +3 -0
- data/app/assets/javascripts/kms/application/controllers/assets_controller.coffee.erb +14 -7
- data/app/assets/javascripts/kms/application/controllers/pages_controller.coffee.erb +11 -3
- data/app/assets/javascripts/kms/application/controllers/snippets_controller.coffee.erb +3 -0
- data/app/assets/javascripts/kms/application/controllers/templates_controller.coffee.erb +3 -0
- data/app/assets/javascripts/kms/application/controllers/users_controller.coffee +4 -4
- data/app/assets/javascripts/kms/application/routes.coffee.erb +1 -1
- data/app/assets/javascripts/kms/application/services/transliteration_service.js +160 -0
- data/app/assets/javascripts/templates/assets/edit.html.slim +24 -2
- data/app/assets/javascripts/templates/assets/form.html.slim +23 -0
- data/app/assets/javascripts/templates/assets/index.html.slim +13 -12
- data/app/assets/javascripts/templates/assets/new.html.slim +1 -15
- data/app/assets/javascripts/templates/help.html.slim +1 -1
- data/app/assets/javascripts/templates/pages/index.html.slim +16 -5
- data/app/assets/javascripts/templates/snippets/index.html.slim +16 -5
- data/app/assets/javascripts/templates/templates/index.html.slim +16 -6
- data/app/assets/stylesheets/kms/application.css +2 -2
- data/app/assets/stylesheets/kms/custom.css.scss +38 -0
- data/app/controllers/kms/assets_controller.rb +8 -9
- data/app/controllers/kms/pages_controller.rb +10 -11
- data/app/controllers/kms/public/pages_controller.rb +5 -4
- data/app/controllers/kms/public/search_controller.rb +2 -0
- data/app/controllers/kms/settings_controller.rb +1 -1
- data/app/controllers/kms/snippets_controller.rb +2 -1
- data/app/controllers/kms/templates_controller.rb +6 -5
- data/app/controllers/kms/users_controller.rb +11 -8
- data/app/models/ability.rb +1 -0
- data/app/models/concerns/kms/permalinkable.rb +1 -1
- data/app/models/kms/page.rb +13 -4
- data/app/serializers/kms/asset_serializer.rb +6 -0
- data/app/serializers/kms/page_serializer.rb +5 -0
- data/app/serializers/kms/template_serializer.rb +5 -0
- data/app/serializers/kms/user_serializer.rb +5 -0
- data/app/services/kms/page_fetcher.rb +30 -0
- data/app/services/kms/search_service.rb +28 -3
- data/app/services/kms/template_processor.rb +19 -0
- data/app/views/devise/passwords/edit.html.erb +1 -1
- data/app/views/devise/passwords/new.html.erb +1 -1
- data/app/views/devise/registrations/new.html.erb +1 -1
- data/app/views/devise/sessions/new.html.erb +1 -1
- data/app/views/layouts/kms/devise.html.erb +1 -1
- data/app/views/layouts/kms/kms.html.erb +47 -18
- data/config/initializers/externals.rb +6 -32
- data/config/initializers/search.rb +1 -0
- data/config/locales/en.yml +17 -1
- data/config/locales/ru.yml +17 -1
- data/config/routes.rb +7 -6
- data/lib/kms/dependencies.rb +1 -4
- data/lib/kms/engine.rb +1 -2
- data/lib/kms/search_item.rb +18 -0
- data/lib/kms/version.rb +1 -1
- data/spec/controllers/kms/assets_controller_spec.rb +51 -0
- data/spec/controllers/kms/pages_controller_spec.rb +82 -0
- data/spec/controllers/kms/public/pages_controller_spec.rb +30 -0
- data/spec/controllers/kms/snippets_controller_spec.rb +61 -47
- data/spec/controllers/kms/templates_controller_spec.rb +51 -0
- data/spec/controllers/kms/users_controller_spec.rb +56 -0
- data/spec/factories/assets.rb +8 -0
- data/spec/factories/pages.rb +33 -0
- data/spec/factories/templates.rb +20 -0
- data/spec/factories/users.rb +9 -4
- data/spec/internal/config/routes.rb +12 -1
- data/spec/internal/log/test.log +81239 -0
- data/spec/internal/public/404.html +67 -0
- data/spec/internal/public/avatar.jpg +0 -0
- data/spec/internal/public/style.css +1 -0
- data/spec/internal/public/uploads/kms/asset/file/1/avatar.jpg +0 -0
- data/spec/internal/public/uploads/kms/asset/file/2/avatar.jpg +0 -0
- data/spec/internal/public/uploads/kms/asset/file/2/style.css +1 -0
- data/spec/internal/public/uploads/kms/asset/file/3/style.css +1 -0
- data/spec/internal/public/uploads/kms/asset/file/4/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500976987-41025-0002-0883/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500977082-41195-0002-6495/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500977109-41364-0002-4518/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500977152-41405-0002-2345/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500977327-41694-0002-5448/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500977376-41732-0002-7916/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500977392-41759-0002-7593/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500977410-42259-0002-7527/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500977429-42306-0002-5937/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500977437-42324-0002-5880/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500983228-53594-0002-4559/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500983284-53632-0002-6590/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500983360-53784-0002-7289/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500983469-54321-0002-0386/avatar.jpg +0 -0
- data/spec/internal/public/uploads/tmp/1500983469-54321-0004-5691/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500983511-54352-0002-5720/avatar.jpg +0 -0
- data/spec/internal/public/uploads/tmp/1500983511-54352-0004-1399/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500983610-54507-0002-4280/avatar.jpg +0 -0
- data/spec/internal/public/uploads/tmp/1500983610-54507-0004-9758/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500984466-57012-0002-4146/avatar.jpg +0 -0
- data/spec/internal/public/uploads/tmp/1500984466-57012-0004-5895/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500984509-57158-0002-9657/avatar.jpg +0 -0
- data/spec/internal/public/uploads/tmp/1500984509-57158-0004-5003/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500984616-57697-0002-7201/avatar.jpg +0 -0
- data/spec/internal/public/uploads/tmp/1500984616-57697-0004-6255/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500985257-58947-0002-3629/avatar.jpg +0 -0
- data/spec/internal/public/uploads/tmp/1500985257-58947-0004-5338/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500985407-58947-0006-5929/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500985473-59264-0002-0397/avatar.jpg +0 -0
- data/spec/internal/public/uploads/tmp/1500985473-59264-0004-6493/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500985475-59264-0007-8674/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500985538-59468-0002-9206/avatar.jpg +0 -0
- data/spec/internal/public/uploads/tmp/1500985538-59468-0004-2586/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500985538-59468-0007-6200/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500988358-65877-0002-4528/avatar.jpg +0 -0
- data/spec/internal/public/uploads/tmp/1500988358-65877-0004-5904/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500988358-65877-0007-7320/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500988407-65916-0002-3138/avatar.jpg +0 -0
- data/spec/internal/public/uploads/tmp/1500988407-65916-0004-5400/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500988407-65916-0007-1655/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500988421-65950-0002-9415/avatar.jpg +0 -0
- data/spec/internal/public/uploads/tmp/1500988421-65950-0004-7130/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500988421-65950-0007-9886/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500988435-65981-0002-3228/avatar.jpg +0 -0
- data/spec/internal/public/uploads/tmp/1500988435-65981-0004-3682/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500988435-65981-0007-1582/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500988475-66122-0002-9516/avatar.jpg +0 -0
- data/spec/internal/public/uploads/tmp/1500988475-66122-0004-5634/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500988530-66122-0007-2272/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500988554-66315-0002-6262/avatar.jpg +0 -0
- data/spec/internal/public/uploads/tmp/1500988554-66315-0004-6099/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500988554-66315-0007-1632/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500991751-73722-0002-9937/avatar.jpg +0 -0
- data/spec/internal/public/uploads/tmp/1500991751-73722-0004-8034/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1500991751-73722-0007-7763/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1501233238-34385-0002-3210/avatar.jpg +0 -0
- data/spec/internal/public/uploads/tmp/1501233238-34385-0004-5881/style.css +1 -0
- data/spec/internal/public/uploads/tmp/1501233238-34385-0007-6280/style.css +1 -0
- data/spec/models/kms/page_spec.rb +31 -0
- data/spec/models/kms/template_spec.rb +15 -0
- data/spec/services/kms/page_fetcher_spec.rb +36 -0
- data/spec/services/kms/search_service_spec.rb +53 -0
- data/spec/services/kms/template_processor_spec.rb +20 -0
- data/spec/support/controller_macros.rb +9 -1
- data/vendor/assets/bower.json +3 -2
- data/vendor/assets/bower_components/angular-ui-select/CHANGELOG.md +169 -0
- data/vendor/assets/bower_components/angular-ui-select/CONTRIBUTING.md +161 -0
- data/vendor/assets/bower_components/angular-ui-select/README.md +27 -13
- data/vendor/assets/bower_components/angular-ui-select/bower.json +6 -3
- data/vendor/assets/bower_components/angular-ui-select/composer.json +29 -0
- data/vendor/assets/bower_components/angular-ui-select/deploy-docs.sh +31 -0
- data/vendor/assets/bower_components/angular-ui-select/dist/select.css +48 -2
- data/vendor/assets/bower_components/angular-ui-select/dist/select.js +454 -111
- data/vendor/assets/bower_components/angular-ui-select/dist/select.min.css +2 -2
- data/vendor/assets/bower_components/angular-ui-select/dist/select.min.js +2 -2
- data/vendor/assets/bower_components/angular-ui-select/docs/assets/app.js +1 -0
- data/vendor/assets/bower_components/angular-ui-select/docs/assets/demo.js +461 -0
- data/vendor/assets/bower_components/angular-ui-select/docs/assets/docs.css +339 -0
- data/vendor/assets/bower_components/angular-ui-select/docs/assets/plunkr.js +110 -0
- data/vendor/assets/bower_components/angular-ui-select/docs/index.html +191 -0
- data/vendor/assets/bower_components/angular-ui-select/docs/partials/_footer.html +2 -0
- data/vendor/assets/bower_components/angular-ui-select/docs/partials/_header.html +64 -0
- data/vendor/assets/bower_components/angular-ui-select/index.js +2 -0
- data/vendor/assets/bower_components/angular-ui-select/package.json +36 -15
- data/vendor/assets/bower_components/bootstrap/CHANGELOG.md +5 -0
- data/vendor/assets/bower_components/bootstrap/Gemfile +6 -0
- data/vendor/assets/bower_components/bootstrap/Gemfile.lock +43 -0
- data/vendor/assets/bower_components/bootstrap/Gruntfile.js +176 -145
- data/vendor/assets/bower_components/bootstrap/ISSUE_TEMPLATE.md +22 -0
- data/vendor/assets/bower_components/bootstrap/LICENSE +1 -1
- data/vendor/assets/bower_components/bootstrap/README.md +55 -40
- data/vendor/assets/bower_components/bootstrap/bower.json +5 -9
- data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap-theme.css +204 -59
- data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap-theme.css.map +1 -1
- data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap-theme.min.css +4 -3
- data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap-theme.min.css.map +1 -0
- data/vendor/assets/bower_components/bootstrap/dist/css/{bootstrap.less → bootstrap.css} +881 -327
- data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap.css.map +1 -1
- data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap.min.css +6 -0
- data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap.min.css.map +1 -0
- data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot +0 -0
- data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg +272 -213
- data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff +0 -0
- data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 +0 -0
- data/vendor/assets/bower_components/bootstrap/dist/js/bootstrap.js +549 -286
- data/vendor/assets/bower_components/bootstrap/dist/js/bootstrap.min.js +5 -4
- data/vendor/assets/bower_components/bootstrap/dist/js/npm.js +13 -0
- data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.eot +0 -0
- data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.svg +272 -213
- data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff +0 -0
- data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff2 +0 -0
- data/vendor/assets/bower_components/bootstrap/grunt/bs-commonjs-generator.js +30 -0
- data/vendor/assets/bower_components/bootstrap/grunt/bs-glyphicons-data-generator.js +5 -4
- data/vendor/assets/bower_components/bootstrap/grunt/bs-lessdoc-parser.js +13 -12
- data/vendor/assets/bower_components/bootstrap/grunt/bs-raw-files-generator.js +6 -8
- data/vendor/assets/bower_components/bootstrap/grunt/change-version.js +109 -0
- data/vendor/assets/bower_components/bootstrap/grunt/configBridge.json +46 -0
- data/vendor/assets/bower_components/bootstrap/grunt/npm-shrinkwrap.json +2679 -0
- data/vendor/assets/bower_components/bootstrap/grunt/sauce_browsers.yml +5 -5
- data/vendor/assets/bower_components/bootstrap/js/affix.js +46 -26
- data/vendor/assets/bower_components/bootstrap/js/alert.js +8 -6
- data/vendor/assets/bower_components/bootstrap/js/button.js +34 -19
- data/vendor/assets/bower_components/bootstrap/js/carousel.js +35 -21
- data/vendor/assets/bower_components/bootstrap/js/collapse.js +69 -27
- data/vendor/assets/bower_components/bootstrap/js/dropdown.js +55 -41
- data/vendor/assets/bower_components/bootstrap/js/modal.js +91 -32
- data/vendor/assets/bower_components/bootstrap/js/popover.js +5 -10
- data/vendor/assets/bower_components/bootstrap/js/scrollspy.js +28 -26
- data/vendor/assets/bower_components/bootstrap/js/tab.js +45 -18
- data/vendor/assets/bower_components/bootstrap/js/tooltip.js +117 -54
- data/vendor/assets/bower_components/bootstrap/js/transition.js +2 -2
- data/vendor/assets/bower_components/bootstrap/less/alerts.less +5 -0
- data/vendor/assets/bower_components/bootstrap/less/badges.less +14 -3
- data/vendor/assets/bower_components/bootstrap/less/bootstrap.less +6 -0
- data/vendor/assets/bower_components/bootstrap/less/button-groups.less +22 -18
- data/vendor/assets/bower_components/bootstrap/less/buttons.less +19 -10
- data/vendor/assets/bower_components/bootstrap/less/carousel.less +34 -7
- data/vendor/assets/bower_components/bootstrap/less/close.less +1 -0
- data/vendor/assets/bower_components/bootstrap/less/code.less +1 -0
- data/vendor/assets/bower_components/bootstrap/less/component-animations.less +3 -1
- data/vendor/assets/bower_components/bootstrap/less/dropdowns.less +9 -8
- data/vendor/assets/bower_components/bootstrap/less/forms.less +123 -50
- data/vendor/assets/bower_components/bootstrap/less/glyphicons.less +75 -3
- data/vendor/assets/bower_components/bootstrap/less/input-groups.less +8 -3
- data/vendor/assets/bower_components/bootstrap/less/jumbotron.less +10 -4
- data/vendor/assets/bower_components/bootstrap/less/list-group.less +10 -11
- data/vendor/assets/bower_components/bootstrap/less/media.less +40 -30
- data/vendor/assets/bower_components/bootstrap/less/mixins.less +1 -0
- data/vendor/assets/bower_components/bootstrap/less/mixins/background-variant.less +2 -1
- data/vendor/assets/bower_components/bootstrap/less/mixins/buttons.less +19 -4
- data/vendor/assets/bower_components/bootstrap/less/mixins/forms.less +5 -1
- data/vendor/assets/bower_components/bootstrap/less/mixins/grid-framework.less +4 -4
- data/vendor/assets/bower_components/bootstrap/less/mixins/grid.less +4 -4
- data/vendor/assets/bower_components/bootstrap/less/mixins/hide-text.less +2 -2
- data/vendor/assets/bower_components/bootstrap/less/mixins/image.less +0 -1
- data/vendor/assets/bower_components/bootstrap/less/mixins/labels.less +1 -1
- data/vendor/assets/bower_components/bootstrap/less/mixins/list-group.less +2 -1
- data/vendor/assets/bower_components/bootstrap/less/mixins/pagination.less +2 -1
- data/vendor/assets/bower_components/bootstrap/less/mixins/reset-text.less +18 -0
- data/vendor/assets/bower_components/bootstrap/less/mixins/responsive-visibility.less +1 -1
- data/vendor/assets/bower_components/bootstrap/less/mixins/tab-focus.less +3 -3
- data/vendor/assets/bower_components/bootstrap/less/mixins/text-emphasis.less +2 -1
- data/vendor/assets/bower_components/bootstrap/less/mixins/vendor-prefixes.less +8 -5
- data/vendor/assets/bower_components/bootstrap/less/modals.less +3 -3
- data/vendor/assets/bower_components/bootstrap/less/navbar.less +30 -25
- data/vendor/assets/bower_components/bootstrap/less/navs.less +1 -1
- data/vendor/assets/bower_components/bootstrap/less/normalize.less +12 -13
- data/vendor/assets/bower_components/bootstrap/less/pager.less +1 -2
- data/vendor/assets/bower_components/bootstrap/less/pagination.less +5 -4
- data/vendor/assets/bower_components/bootstrap/less/panels.less +33 -5
- data/vendor/assets/bower_components/bootstrap/less/popovers.less +5 -7
- data/vendor/assets/bower_components/bootstrap/less/print.less +96 -96
- data/vendor/assets/bower_components/bootstrap/less/progress-bars.less +1 -19
- data/vendor/assets/bower_components/bootstrap/less/responsive-embed.less +10 -9
- data/vendor/assets/bower_components/bootstrap/less/scaffolding.less +13 -2
- data/vendor/assets/bower_components/bootstrap/less/tables.less +14 -13
- data/vendor/assets/bower_components/bootstrap/less/theme.less +49 -16
- data/vendor/assets/bower_components/bootstrap/less/thumbnails.less +1 -1
- data/vendor/assets/bower_components/bootstrap/less/tooltip.less +13 -7
- data/vendor/assets/bower_components/bootstrap/less/type.less +2 -13
- data/vendor/assets/bower_components/bootstrap/less/utilities.less +0 -2
- data/vendor/assets/bower_components/bootstrap/less/variables.less +45 -22
- data/vendor/assets/bower_components/bootstrap/nuget/MyGet.ps1 +8 -0
- data/vendor/assets/bower_components/bootstrap/nuget/bootstrap.less.nuspec +28 -0
- data/vendor/assets/bower_components/bootstrap/nuget/bootstrap.nuspec +28 -0
- data/vendor/assets/bower_components/bootstrap/package.js +32 -0
- data/vendor/assets/bower_components/bootstrap/package.json +49 -41
- data/vendor/assets/bower_components/flow.js/README.md +79 -64
- data/vendor/assets/bower_components/flow.js/bower.json +6 -2
- data/vendor/assets/bower_components/flow.js/dist/flow.js +1635 -1532
- data/vendor/assets/bower_components/flow.js/dist/flow.min.js +2 -2
- data/vendor/assets/bower_components/flow.js/package.js +24 -0
- data/vendor/assets/bower_components/flow.js/travis.sh +19 -0
- data/vendor/assets/bower_components/font-awesome/scss/_path.scss +5 -5
- data/vendor/assets/bower_components/font-awesome/scss/_variables.scss +1 -2
- data/vendor/assets/bower_components/ng-flow/bower.json +1 -1
- data/vendor/assets/bower_components/ng-flow/dist/ng-flow-standalone.js +1655 -1542
- data/vendor/assets/bower_components/ng-flow/dist/ng-flow-standalone.min.js +2 -2
- data/vendor/assets/bower_components/ng-flow/dist/ng-flow.js +19 -9
- data/vendor/assets/bower_components/ng-flow/dist/ng-flow.min.js +2 -2
- data/vendor/assets/bower_components/ng-flow/index.js +3 -0
- data/vendor/assets/bower_components/ng-flow/package.js +25 -0
- data/vendor/assets/bower_components/ng-flow/src/directives/drag-events.js +2 -1
- data/vendor/assets/bower_components/ng-flow/src/directives/events.js +2 -1
- data/vendor/assets/bower_components/ng-flow/src/directives/init.js +7 -1
- data/vendor/assets/bower_components/ng-flow/travis.sh +19 -0
- data/vendor/assets/bower_components/{Responsive-Dashboard → rdash-ui}/LICENSE +21 -21
- data/vendor/assets/bower_components/rdash-ui/README.md +55 -0
- data/vendor/assets/bower_components/rdash-ui/bower.json +33 -0
- data/vendor/assets/bower_components/rdash-ui/dist/css/rdash.min.css +1 -0
- data/vendor/assets/bower_components/rdash-ui/dist/css/rdash.scss +489 -0
- data/vendor/assets/bower_components/{Responsive-Dashboard/src → rdash-ui/dist}/fonts/montserrat-regular-webfont.eot +0 -0
- data/vendor/assets/bower_components/{Responsive-Dashboard/src → rdash-ui/dist}/fonts/montserrat-regular-webfont.svg +1316 -1316
- data/vendor/assets/bower_components/{Responsive-Dashboard/src → rdash-ui/dist}/fonts/montserrat-regular-webfont.ttf +0 -0
- data/vendor/assets/bower_components/{Responsive-Dashboard/src → rdash-ui/dist}/fonts/montserrat-regular-webfont.woff +0 -0
- metadata +227 -180
- data/config/initializers/bower_rails.rb +0 -16
- data/vendor/assets/bower_components/Responsive-Dashboard/CONTRIBUTING.md +0 -21
- data/vendor/assets/bower_components/Responsive-Dashboard/README.md +0 -119
- data/vendor/assets/bower_components/Responsive-Dashboard/bower.json +0 -32
- data/vendor/assets/bower_components/Responsive-Dashboard/gulpfile.js +0 -81
- data/vendor/assets/bower_components/Responsive-Dashboard/package.json +0 -21
- data/vendor/assets/bower_components/Responsive-Dashboard/src/index.html +0 -413
- data/vendor/assets/bower_components/Responsive-Dashboard/src/js/dashboard/controllers/alerts-ctrl.js +0 -19
- data/vendor/assets/bower_components/Responsive-Dashboard/src/js/dashboard/controllers/master-ctrl.js +0 -51
- data/vendor/assets/bower_components/Responsive-Dashboard/src/js/dashboard/directives/loading.js +0 -13
- data/vendor/assets/bower_components/Responsive-Dashboard/src/js/dashboard/directives/widget-body.js +0 -16
- data/vendor/assets/bower_components/Responsive-Dashboard/src/js/dashboard/directives/widget-header.js +0 -17
- data/vendor/assets/bower_components/Responsive-Dashboard/src/js/dashboard/directives/widget.js +0 -16
- data/vendor/assets/bower_components/Responsive-Dashboard/src/js/dashboard/module.js +0 -1
- data/vendor/assets/bower_components/Responsive-Dashboard/src/js/dashboard/routes.js +0 -22
- data/vendor/assets/bower_components/Responsive-Dashboard/src/less/dashboard/content.less +0 -19
- data/vendor/assets/bower_components/Responsive-Dashboard/src/less/dashboard/hamburg.less +0 -29
- data/vendor/assets/bower_components/Responsive-Dashboard/src/less/dashboard/header.less +0 -92
- data/vendor/assets/bower_components/Responsive-Dashboard/src/less/dashboard/loading.less +0 -40
- data/vendor/assets/bower_components/Responsive-Dashboard/src/less/dashboard/main.less +0 -73
- data/vendor/assets/bower_components/Responsive-Dashboard/src/less/dashboard/mixins.less +0 -5
- data/vendor/assets/bower_components/Responsive-Dashboard/src/less/dashboard/sidebar.less +0 -122
- data/vendor/assets/bower_components/Responsive-Dashboard/src/less/dashboard/variables.less +0 -10
- data/vendor/assets/bower_components/Responsive-Dashboard/src/less/dashboard/widgets.less +0 -95
- data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap.min.css.erb +0 -5
- data/vendor/assets/bower_components/flow.js/CHANGELOG.md +0 -37
- data/vendor/assets/bower_components/flow.js/Gruntfile.js +0 -132
- data/vendor/assets/bower_components/flow.js/karma.conf.js +0 -114
- data/vendor/assets/bower_components/flow.js/package.json +0 -50
- data/vendor/assets/bower_components/flow.js/src/flow.js +0 -1532
- data/vendor/assets/bower_components/jquery/MIT-LICENSE.txt +0 -21
- data/vendor/assets/bower_components/jquery/bower.json +0 -27
- data/vendor/assets/bower_components/jquery/dist/jquery.js +0 -9190
- data/vendor/assets/bower_components/jquery/dist/jquery.min.js +0 -5
- data/vendor/assets/bower_components/jquery/dist/jquery.min.map +0 -1
- data/vendor/assets/bower_components/jquery/src/ajax.js +0 -806
- data/vendor/assets/bower_components/jquery/src/ajax/jsonp.js +0 -89
- data/vendor/assets/bower_components/jquery/src/ajax/load.js +0 -75
- data/vendor/assets/bower_components/jquery/src/ajax/parseJSON.js +0 -13
- data/vendor/assets/bower_components/jquery/src/ajax/parseXML.js +0 -28
- data/vendor/assets/bower_components/jquery/src/ajax/script.js +0 -64
- data/vendor/assets/bower_components/jquery/src/ajax/var/nonce.js +0 -5
- data/vendor/assets/bower_components/jquery/src/ajax/var/rquery.js +0 -3
- data/vendor/assets/bower_components/jquery/src/ajax/xhr.js +0 -135
- data/vendor/assets/bower_components/jquery/src/attributes.js +0 -11
- data/vendor/assets/bower_components/jquery/src/attributes/attr.js +0 -143
- data/vendor/assets/bower_components/jquery/src/attributes/classes.js +0 -158
- data/vendor/assets/bower_components/jquery/src/attributes/prop.js +0 -96
- data/vendor/assets/bower_components/jquery/src/attributes/support.js +0 -35
- data/vendor/assets/bower_components/jquery/src/attributes/val.js +0 -163
- data/vendor/assets/bower_components/jquery/src/callbacks.js +0 -205
- data/vendor/assets/bower_components/jquery/src/core.js +0 -498
- data/vendor/assets/bower_components/jquery/src/core/access.js +0 -60
- data/vendor/assets/bower_components/jquery/src/core/init.js +0 -123
- data/vendor/assets/bower_components/jquery/src/core/parseHTML.js +0 -39
- data/vendor/assets/bower_components/jquery/src/core/ready.js +0 -97
- data/vendor/assets/bower_components/jquery/src/core/var/rsingleTag.js +0 -4
- data/vendor/assets/bower_components/jquery/src/css.js +0 -451
- data/vendor/assets/bower_components/jquery/src/css/addGetHookIf.js +0 -24
- data/vendor/assets/bower_components/jquery/src/css/curCSS.js +0 -57
- data/vendor/assets/bower_components/jquery/src/css/defaultDisplay.js +0 -70
- data/vendor/assets/bower_components/jquery/src/css/hiddenVisibleSelectors.js +0 -15
- data/vendor/assets/bower_components/jquery/src/css/support.js +0 -91
- data/vendor/assets/bower_components/jquery/src/css/swap.js +0 -28
- data/vendor/assets/bower_components/jquery/src/css/var/cssExpand.js +0 -3
- data/vendor/assets/bower_components/jquery/src/css/var/getStyles.js +0 -5
- data/vendor/assets/bower_components/jquery/src/css/var/isHidden.js +0 -13
- data/vendor/assets/bower_components/jquery/src/css/var/rmargin.js +0 -3
- data/vendor/assets/bower_components/jquery/src/css/var/rnumnonpx.js +0 -5
- data/vendor/assets/bower_components/jquery/src/data.js +0 -179
- data/vendor/assets/bower_components/jquery/src/data/Data.js +0 -181
- data/vendor/assets/bower_components/jquery/src/data/accepts.js +0 -20
- data/vendor/assets/bower_components/jquery/src/data/var/data_priv.js +0 -5
- data/vendor/assets/bower_components/jquery/src/data/var/data_user.js +0 -5
- data/vendor/assets/bower_components/jquery/src/deferred.js +0 -149
- data/vendor/assets/bower_components/jquery/src/deprecated.js +0 -13
- data/vendor/assets/bower_components/jquery/src/dimensions.js +0 -50
- data/vendor/assets/bower_components/jquery/src/effects.js +0 -649
- data/vendor/assets/bower_components/jquery/src/effects/Tween.js +0 -114
- data/vendor/assets/bower_components/jquery/src/effects/animatedSelector.js +0 -13
- data/vendor/assets/bower_components/jquery/src/event.js +0 -868
- data/vendor/assets/bower_components/jquery/src/event/alias.js +0 -39
- data/vendor/assets/bower_components/jquery/src/event/support.js +0 -9
- data/vendor/assets/bower_components/jquery/src/exports/amd.js +0 -24
- data/vendor/assets/bower_components/jquery/src/exports/global.js +0 -32
- data/vendor/assets/bower_components/jquery/src/intro.js +0 -44
- data/vendor/assets/bower_components/jquery/src/jquery.js +0 -36
- data/vendor/assets/bower_components/jquery/src/manipulation.js +0 -582
- data/vendor/assets/bower_components/jquery/src/manipulation/_evalUrl.js +0 -18
- data/vendor/assets/bower_components/jquery/src/manipulation/support.js +0 -31
- data/vendor/assets/bower_components/jquery/src/manipulation/var/rcheckableType.js +0 -3
- data/vendor/assets/bower_components/jquery/src/offset.js +0 -204
- data/vendor/assets/bower_components/jquery/src/outro.js +0 -1
- data/vendor/assets/bower_components/jquery/src/queue.js +0 -142
- data/vendor/assets/bower_components/jquery/src/queue/delay.js +0 -22
- data/vendor/assets/bower_components/jquery/src/selector-native.js +0 -172
- data/vendor/assets/bower_components/jquery/src/selector-sizzle.js +0 -14
- data/vendor/assets/bower_components/jquery/src/selector.js +0 -1
- data/vendor/assets/bower_components/jquery/src/serialize.js +0 -111
- data/vendor/assets/bower_components/jquery/src/sizzle/dist/sizzle.js +0 -2044
- data/vendor/assets/bower_components/jquery/src/sizzle/dist/sizzle.min.js +0 -3
- data/vendor/assets/bower_components/jquery/src/sizzle/dist/sizzle.min.map +0 -1
- data/vendor/assets/bower_components/jquery/src/traversing.js +0 -200
- data/vendor/assets/bower_components/jquery/src/traversing/findFilter.js +0 -100
- data/vendor/assets/bower_components/jquery/src/traversing/var/rneedsContext.js +0 -6
- data/vendor/assets/bower_components/jquery/src/var/arr.js +0 -3
- data/vendor/assets/bower_components/jquery/src/var/class2type.js +0 -4
- data/vendor/assets/bower_components/jquery/src/var/concat.js +0 -5
- data/vendor/assets/bower_components/jquery/src/var/hasOwn.js +0 -5
- data/vendor/assets/bower_components/jquery/src/var/indexOf.js +0 -5
- data/vendor/assets/bower_components/jquery/src/var/pnum.js +0 -3
- data/vendor/assets/bower_components/jquery/src/var/push.js +0 -5
- data/vendor/assets/bower_components/jquery/src/var/rnotwhite.js +0 -3
- data/vendor/assets/bower_components/jquery/src/var/slice.js +0 -5
- data/vendor/assets/bower_components/jquery/src/var/strundefined.js +0 -3
- data/vendor/assets/bower_components/jquery/src/var/support.js +0 -4
- data/vendor/assets/bower_components/jquery/src/var/toString.js +0 -5
- data/vendor/assets/bower_components/jquery/src/wrap.js +0 -78
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,16 +1,26 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Bootstrap v3.
|
|
3
|
-
* Copyright 2011-
|
|
4
|
-
* Licensed under MIT
|
|
2
|
+
* Bootstrap v3.3.7 (http://getbootstrap.com)
|
|
3
|
+
* Copyright 2011-2016 Twitter, Inc.
|
|
4
|
+
* Licensed under the MIT license
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
if (typeof jQuery === 'undefined') {
|
|
7
|
+
if (typeof jQuery === 'undefined') {
|
|
8
|
+
throw new Error('Bootstrap\'s JavaScript requires jQuery')
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
+function ($) {
|
|
12
|
+
'use strict';
|
|
13
|
+
var version = $.fn.jquery.split(' ')[0].split('.')
|
|
14
|
+
if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) {
|
|
15
|
+
throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4')
|
|
16
|
+
}
|
|
17
|
+
}(jQuery);
|
|
8
18
|
|
|
9
19
|
/* ========================================================================
|
|
10
|
-
* Bootstrap: transition.js v3.
|
|
20
|
+
* Bootstrap: transition.js v3.3.7
|
|
11
21
|
* http://getbootstrap.com/javascript/#transitions
|
|
12
22
|
* ========================================================================
|
|
13
|
-
* Copyright 2011-
|
|
23
|
+
* Copyright 2011-2016 Twitter, Inc.
|
|
14
24
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
|
15
25
|
* ======================================================================== */
|
|
16
26
|
|
|
@@ -67,10 +77,10 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
67
77
|
}(jQuery);
|
|
68
78
|
|
|
69
79
|
/* ========================================================================
|
|
70
|
-
* Bootstrap: alert.js v3.
|
|
80
|
+
* Bootstrap: alert.js v3.3.7
|
|
71
81
|
* http://getbootstrap.com/javascript/#alerts
|
|
72
82
|
* ========================================================================
|
|
73
|
-
* Copyright 2011-
|
|
83
|
+
* Copyright 2011-2016 Twitter, Inc.
|
|
74
84
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
|
75
85
|
* ======================================================================== */
|
|
76
86
|
|
|
@@ -86,7 +96,9 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
86
96
|
$(el).on('click', dismiss, this.close)
|
|
87
97
|
}
|
|
88
98
|
|
|
89
|
-
Alert.VERSION = '3.
|
|
99
|
+
Alert.VERSION = '3.3.7'
|
|
100
|
+
|
|
101
|
+
Alert.TRANSITION_DURATION = 150
|
|
90
102
|
|
|
91
103
|
Alert.prototype.close = function (e) {
|
|
92
104
|
var $this = $(this)
|
|
@@ -97,12 +109,12 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
97
109
|
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
|
|
98
110
|
}
|
|
99
111
|
|
|
100
|
-
var $parent = $(selector)
|
|
112
|
+
var $parent = $(selector === '#' ? [] : selector)
|
|
101
113
|
|
|
102
114
|
if (e) e.preventDefault()
|
|
103
115
|
|
|
104
116
|
if (!$parent.length) {
|
|
105
|
-
$parent = $this.
|
|
117
|
+
$parent = $this.closest('.alert')
|
|
106
118
|
}
|
|
107
119
|
|
|
108
120
|
$parent.trigger(e = $.Event('close.bs.alert'))
|
|
@@ -119,7 +131,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
119
131
|
$.support.transition && $parent.hasClass('fade') ?
|
|
120
132
|
$parent
|
|
121
133
|
.one('bsTransitionEnd', removeElement)
|
|
122
|
-
.emulateTransitionEnd(
|
|
134
|
+
.emulateTransitionEnd(Alert.TRANSITION_DURATION) :
|
|
123
135
|
removeElement()
|
|
124
136
|
}
|
|
125
137
|
|
|
@@ -160,10 +172,10 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
160
172
|
}(jQuery);
|
|
161
173
|
|
|
162
174
|
/* ========================================================================
|
|
163
|
-
* Bootstrap: button.js v3.
|
|
175
|
+
* Bootstrap: button.js v3.3.7
|
|
164
176
|
* http://getbootstrap.com/javascript/#buttons
|
|
165
177
|
* ========================================================================
|
|
166
|
-
* Copyright 2011-
|
|
178
|
+
* Copyright 2011-2016 Twitter, Inc.
|
|
167
179
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
|
168
180
|
* ======================================================================== */
|
|
169
181
|
|
|
@@ -180,7 +192,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
180
192
|
this.isLoading = false
|
|
181
193
|
}
|
|
182
194
|
|
|
183
|
-
Button.VERSION = '3.
|
|
195
|
+
Button.VERSION = '3.3.7'
|
|
184
196
|
|
|
185
197
|
Button.DEFAULTS = {
|
|
186
198
|
loadingText: 'loading...'
|
|
@@ -192,20 +204,20 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
192
204
|
var val = $el.is('input') ? 'val' : 'html'
|
|
193
205
|
var data = $el.data()
|
|
194
206
|
|
|
195
|
-
state
|
|
207
|
+
state += 'Text'
|
|
196
208
|
|
|
197
209
|
if (data.resetText == null) $el.data('resetText', $el[val]())
|
|
198
210
|
|
|
199
|
-
$el[val](data[state] == null ? this.options[state] : data[state])
|
|
200
|
-
|
|
201
211
|
// push to event loop to allow forms to submit
|
|
202
212
|
setTimeout($.proxy(function () {
|
|
213
|
+
$el[val](data[state] == null ? this.options[state] : data[state])
|
|
214
|
+
|
|
203
215
|
if (state == 'loadingText') {
|
|
204
216
|
this.isLoading = true
|
|
205
|
-
$el.addClass(d).attr(d, d)
|
|
217
|
+
$el.addClass(d).attr(d, d).prop(d, true)
|
|
206
218
|
} else if (this.isLoading) {
|
|
207
219
|
this.isLoading = false
|
|
208
|
-
$el.removeClass(d).removeAttr(d)
|
|
220
|
+
$el.removeClass(d).removeAttr(d).prop(d, false)
|
|
209
221
|
}
|
|
210
222
|
}, this), 0)
|
|
211
223
|
}
|
|
@@ -217,13 +229,19 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
217
229
|
if ($parent.length) {
|
|
218
230
|
var $input = this.$element.find('input')
|
|
219
231
|
if ($input.prop('type') == 'radio') {
|
|
220
|
-
if ($input.prop('checked')
|
|
221
|
-
|
|
232
|
+
if ($input.prop('checked')) changed = false
|
|
233
|
+
$parent.find('.active').removeClass('active')
|
|
234
|
+
this.$element.addClass('active')
|
|
235
|
+
} else if ($input.prop('type') == 'checkbox') {
|
|
236
|
+
if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false
|
|
237
|
+
this.$element.toggleClass('active')
|
|
222
238
|
}
|
|
223
|
-
|
|
239
|
+
$input.prop('checked', this.$element.hasClass('active'))
|
|
240
|
+
if (changed) $input.trigger('change')
|
|
241
|
+
} else {
|
|
242
|
+
this.$element.attr('aria-pressed', !this.$element.hasClass('active'))
|
|
243
|
+
this.$element.toggleClass('active')
|
|
224
244
|
}
|
|
225
|
-
|
|
226
|
-
if (changed) this.$element.toggleClass('active')
|
|
227
245
|
}
|
|
228
246
|
|
|
229
247
|
|
|
@@ -261,20 +279,29 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
261
279
|
// BUTTON DATA-API
|
|
262
280
|
// ===============
|
|
263
281
|
|
|
264
|
-
$(document)
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
282
|
+
$(document)
|
|
283
|
+
.on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
|
|
284
|
+
var $btn = $(e.target).closest('.btn')
|
|
285
|
+
Plugin.call($btn, 'toggle')
|
|
286
|
+
if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) {
|
|
287
|
+
// Prevent double click on radios, and the double selections (so cancellation) on checkboxes
|
|
288
|
+
e.preventDefault()
|
|
289
|
+
// The target component still receive the focus
|
|
290
|
+
if ($btn.is('input,button')) $btn.trigger('focus')
|
|
291
|
+
else $btn.find('input:visible,button:visible').first().trigger('focus')
|
|
292
|
+
}
|
|
293
|
+
})
|
|
294
|
+
.on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
|
|
295
|
+
$(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))
|
|
296
|
+
})
|
|
270
297
|
|
|
271
298
|
}(jQuery);
|
|
272
299
|
|
|
273
300
|
/* ========================================================================
|
|
274
|
-
* Bootstrap: carousel.js v3.
|
|
301
|
+
* Bootstrap: carousel.js v3.3.7
|
|
275
302
|
* http://getbootstrap.com/javascript/#carousel
|
|
276
303
|
* ========================================================================
|
|
277
|
-
* Copyright 2011-
|
|
304
|
+
* Copyright 2011-2016 Twitter, Inc.
|
|
278
305
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
|
279
306
|
* ======================================================================== */
|
|
280
307
|
|
|
@@ -286,29 +313,35 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
286
313
|
// =========================
|
|
287
314
|
|
|
288
315
|
var Carousel = function (element, options) {
|
|
289
|
-
this.$element = $(element)
|
|
316
|
+
this.$element = $(element)
|
|
290
317
|
this.$indicators = this.$element.find('.carousel-indicators')
|
|
291
318
|
this.options = options
|
|
292
|
-
this.paused =
|
|
293
|
-
this.sliding =
|
|
294
|
-
this.interval =
|
|
295
|
-
this.$active =
|
|
319
|
+
this.paused = null
|
|
320
|
+
this.sliding = null
|
|
321
|
+
this.interval = null
|
|
322
|
+
this.$active = null
|
|
296
323
|
this.$items = null
|
|
297
324
|
|
|
298
|
-
this.options.
|
|
325
|
+
this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))
|
|
326
|
+
|
|
327
|
+
this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element
|
|
299
328
|
.on('mouseenter.bs.carousel', $.proxy(this.pause, this))
|
|
300
329
|
.on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
|
|
301
330
|
}
|
|
302
331
|
|
|
303
|
-
Carousel.VERSION = '3.
|
|
332
|
+
Carousel.VERSION = '3.3.7'
|
|
333
|
+
|
|
334
|
+
Carousel.TRANSITION_DURATION = 600
|
|
304
335
|
|
|
305
336
|
Carousel.DEFAULTS = {
|
|
306
337
|
interval: 5000,
|
|
307
338
|
pause: 'hover',
|
|
308
|
-
wrap: true
|
|
339
|
+
wrap: true,
|
|
340
|
+
keyboard: true
|
|
309
341
|
}
|
|
310
342
|
|
|
311
343
|
Carousel.prototype.keydown = function (e) {
|
|
344
|
+
if (/input|textarea/i.test(e.target.tagName)) return
|
|
312
345
|
switch (e.which) {
|
|
313
346
|
case 37: this.prev(); break
|
|
314
347
|
case 39: this.next(); break
|
|
@@ -335,6 +368,16 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
335
368
|
return this.$items.index(item || this.$active)
|
|
336
369
|
}
|
|
337
370
|
|
|
371
|
+
Carousel.prototype.getItemForDirection = function (direction, active) {
|
|
372
|
+
var activeIndex = this.getItemIndex(active)
|
|
373
|
+
var willWrap = (direction == 'prev' && activeIndex === 0)
|
|
374
|
+
|| (direction == 'next' && activeIndex == (this.$items.length - 1))
|
|
375
|
+
if (willWrap && !this.options.wrap) return active
|
|
376
|
+
var delta = direction == 'prev' ? -1 : 1
|
|
377
|
+
var itemIndex = (activeIndex + delta) % this.$items.length
|
|
378
|
+
return this.$items.eq(itemIndex)
|
|
379
|
+
}
|
|
380
|
+
|
|
338
381
|
Carousel.prototype.to = function (pos) {
|
|
339
382
|
var that = this
|
|
340
383
|
var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))
|
|
@@ -344,7 +387,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
344
387
|
if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid"
|
|
345
388
|
if (activeIndex == pos) return this.pause().cycle()
|
|
346
389
|
|
|
347
|
-
return this.slide(pos > activeIndex ? 'next' : 'prev',
|
|
390
|
+
return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))
|
|
348
391
|
}
|
|
349
392
|
|
|
350
393
|
Carousel.prototype.pause = function (e) {
|
|
@@ -372,17 +415,11 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
372
415
|
|
|
373
416
|
Carousel.prototype.slide = function (type, next) {
|
|
374
417
|
var $active = this.$element.find('.item.active')
|
|
375
|
-
var $next = next || $active
|
|
418
|
+
var $next = next || this.getItemForDirection(type, $active)
|
|
376
419
|
var isCycling = this.interval
|
|
377
420
|
var direction = type == 'next' ? 'left' : 'right'
|
|
378
|
-
var fallback = type == 'next' ? 'first' : 'last'
|
|
379
421
|
var that = this
|
|
380
422
|
|
|
381
|
-
if (!$next.length) {
|
|
382
|
-
if (!this.options.wrap) return
|
|
383
|
-
$next = this.$element.find('.item')[fallback]()
|
|
384
|
-
}
|
|
385
|
-
|
|
386
423
|
if ($next.hasClass('active')) return (this.sliding = false)
|
|
387
424
|
|
|
388
425
|
var relatedTarget = $next[0]
|
|
@@ -418,7 +455,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
418
455
|
that.$element.trigger(slidEvent)
|
|
419
456
|
}, 0)
|
|
420
457
|
})
|
|
421
|
-
.emulateTransitionEnd(
|
|
458
|
+
.emulateTransitionEnd(Carousel.TRANSITION_DURATION)
|
|
422
459
|
} else {
|
|
423
460
|
$active.removeClass('active')
|
|
424
461
|
$next.addClass('active')
|
|
@@ -467,7 +504,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
467
504
|
// CAROUSEL DATA-API
|
|
468
505
|
// =================
|
|
469
506
|
|
|
470
|
-
|
|
507
|
+
var clickHandler = function (e) {
|
|
471
508
|
var href
|
|
472
509
|
var $this = $(this)
|
|
473
510
|
var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
|
|
@@ -483,7 +520,11 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
483
520
|
}
|
|
484
521
|
|
|
485
522
|
e.preventDefault()
|
|
486
|
-
}
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
$(document)
|
|
526
|
+
.on('click.bs.carousel.data-api', '[data-slide]', clickHandler)
|
|
527
|
+
.on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)
|
|
487
528
|
|
|
488
529
|
$(window).on('load', function () {
|
|
489
530
|
$('[data-ride="carousel"]').each(function () {
|
|
@@ -495,13 +536,14 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
495
536
|
}(jQuery);
|
|
496
537
|
|
|
497
538
|
/* ========================================================================
|
|
498
|
-
* Bootstrap: collapse.js v3.
|
|
539
|
+
* Bootstrap: collapse.js v3.3.7
|
|
499
540
|
* http://getbootstrap.com/javascript/#collapse
|
|
500
541
|
* ========================================================================
|
|
501
|
-
* Copyright 2011-
|
|
542
|
+
* Copyright 2011-2016 Twitter, Inc.
|
|
502
543
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
|
503
544
|
* ======================================================================== */
|
|
504
545
|
|
|
546
|
+
/* jshint latedef: false */
|
|
505
547
|
|
|
506
548
|
+function ($) {
|
|
507
549
|
'use strict';
|
|
@@ -512,13 +554,22 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
512
554
|
var Collapse = function (element, options) {
|
|
513
555
|
this.$element = $(element)
|
|
514
556
|
this.options = $.extend({}, Collapse.DEFAULTS, options)
|
|
557
|
+
this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' +
|
|
558
|
+
'[data-toggle="collapse"][data-target="#' + element.id + '"]')
|
|
515
559
|
this.transitioning = null
|
|
516
560
|
|
|
517
|
-
if (this.options.parent)
|
|
561
|
+
if (this.options.parent) {
|
|
562
|
+
this.$parent = this.getParent()
|
|
563
|
+
} else {
|
|
564
|
+
this.addAriaAndCollapsedClass(this.$element, this.$trigger)
|
|
565
|
+
}
|
|
566
|
+
|
|
518
567
|
if (this.options.toggle) this.toggle()
|
|
519
568
|
}
|
|
520
569
|
|
|
521
|
-
Collapse.VERSION = '3.
|
|
570
|
+
Collapse.VERSION = '3.3.7'
|
|
571
|
+
|
|
572
|
+
Collapse.TRANSITION_DURATION = 350
|
|
522
573
|
|
|
523
574
|
Collapse.DEFAULTS = {
|
|
524
575
|
toggle: true
|
|
@@ -532,17 +583,21 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
532
583
|
Collapse.prototype.show = function () {
|
|
533
584
|
if (this.transitioning || this.$element.hasClass('in')) return
|
|
534
585
|
|
|
586
|
+
var activesData
|
|
587
|
+
var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')
|
|
588
|
+
|
|
589
|
+
if (actives && actives.length) {
|
|
590
|
+
activesData = actives.data('bs.collapse')
|
|
591
|
+
if (activesData && activesData.transitioning) return
|
|
592
|
+
}
|
|
593
|
+
|
|
535
594
|
var startEvent = $.Event('show.bs.collapse')
|
|
536
595
|
this.$element.trigger(startEvent)
|
|
537
596
|
if (startEvent.isDefaultPrevented()) return
|
|
538
597
|
|
|
539
|
-
var actives = this.$parent && this.$parent.find('> .panel > .in')
|
|
540
|
-
|
|
541
598
|
if (actives && actives.length) {
|
|
542
|
-
var hasData = actives.data('bs.collapse')
|
|
543
|
-
if (hasData && hasData.transitioning) return
|
|
544
599
|
Plugin.call(actives, 'hide')
|
|
545
|
-
|
|
600
|
+
activesData || actives.data('bs.collapse', null)
|
|
546
601
|
}
|
|
547
602
|
|
|
548
603
|
var dimension = this.dimension()
|
|
@@ -550,6 +605,11 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
550
605
|
this.$element
|
|
551
606
|
.removeClass('collapse')
|
|
552
607
|
.addClass('collapsing')[dimension](0)
|
|
608
|
+
.attr('aria-expanded', true)
|
|
609
|
+
|
|
610
|
+
this.$trigger
|
|
611
|
+
.removeClass('collapsed')
|
|
612
|
+
.attr('aria-expanded', true)
|
|
553
613
|
|
|
554
614
|
this.transitioning = 1
|
|
555
615
|
|
|
@@ -568,7 +628,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
568
628
|
|
|
569
629
|
this.$element
|
|
570
630
|
.one('bsTransitionEnd', $.proxy(complete, this))
|
|
571
|
-
.emulateTransitionEnd(
|
|
631
|
+
.emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])
|
|
572
632
|
}
|
|
573
633
|
|
|
574
634
|
Collapse.prototype.hide = function () {
|
|
@@ -584,17 +644,21 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
584
644
|
|
|
585
645
|
this.$element
|
|
586
646
|
.addClass('collapsing')
|
|
587
|
-
.removeClass('collapse')
|
|
588
|
-
.
|
|
647
|
+
.removeClass('collapse in')
|
|
648
|
+
.attr('aria-expanded', false)
|
|
649
|
+
|
|
650
|
+
this.$trigger
|
|
651
|
+
.addClass('collapsed')
|
|
652
|
+
.attr('aria-expanded', false)
|
|
589
653
|
|
|
590
654
|
this.transitioning = 1
|
|
591
655
|
|
|
592
656
|
var complete = function () {
|
|
593
657
|
this.transitioning = 0
|
|
594
658
|
this.$element
|
|
595
|
-
.trigger('hidden.bs.collapse')
|
|
596
659
|
.removeClass('collapsing')
|
|
597
660
|
.addClass('collapse')
|
|
661
|
+
.trigger('hidden.bs.collapse')
|
|
598
662
|
}
|
|
599
663
|
|
|
600
664
|
if (!$.support.transition) return complete.call(this)
|
|
@@ -602,13 +666,40 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
602
666
|
this.$element
|
|
603
667
|
[dimension](0)
|
|
604
668
|
.one('bsTransitionEnd', $.proxy(complete, this))
|
|
605
|
-
.emulateTransitionEnd(
|
|
669
|
+
.emulateTransitionEnd(Collapse.TRANSITION_DURATION)
|
|
606
670
|
}
|
|
607
671
|
|
|
608
672
|
Collapse.prototype.toggle = function () {
|
|
609
673
|
this[this.$element.hasClass('in') ? 'hide' : 'show']()
|
|
610
674
|
}
|
|
611
675
|
|
|
676
|
+
Collapse.prototype.getParent = function () {
|
|
677
|
+
return $(this.options.parent)
|
|
678
|
+
.find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
|
|
679
|
+
.each($.proxy(function (i, element) {
|
|
680
|
+
var $element = $(element)
|
|
681
|
+
this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)
|
|
682
|
+
}, this))
|
|
683
|
+
.end()
|
|
684
|
+
}
|
|
685
|
+
|
|
686
|
+
Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {
|
|
687
|
+
var isOpen = $element.hasClass('in')
|
|
688
|
+
|
|
689
|
+
$element.attr('aria-expanded', isOpen)
|
|
690
|
+
$trigger
|
|
691
|
+
.toggleClass('collapsed', !isOpen)
|
|
692
|
+
.attr('aria-expanded', isOpen)
|
|
693
|
+
}
|
|
694
|
+
|
|
695
|
+
function getTargetFromTrigger($trigger) {
|
|
696
|
+
var href
|
|
697
|
+
var target = $trigger.attr('data-target')
|
|
698
|
+
|| (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
|
|
699
|
+
|
|
700
|
+
return $(target)
|
|
701
|
+
}
|
|
702
|
+
|
|
612
703
|
|
|
613
704
|
// COLLAPSE PLUGIN DEFINITION
|
|
614
705
|
// ==========================
|
|
@@ -619,7 +710,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
619
710
|
var data = $this.data('bs.collapse')
|
|
620
711
|
var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
|
|
621
712
|
|
|
622
|
-
if (!data && options.toggle && option
|
|
713
|
+
if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false
|
|
623
714
|
if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
|
|
624
715
|
if (typeof option == 'string') data[option]()
|
|
625
716
|
})
|
|
@@ -644,21 +735,13 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
644
735
|
// =================
|
|
645
736
|
|
|
646
737
|
$(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) {
|
|
647
|
-
var href
|
|
648
738
|
var $this = $(this)
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
var $target = $
|
|
739
|
+
|
|
740
|
+
if (!$this.attr('data-target')) e.preventDefault()
|
|
741
|
+
|
|
742
|
+
var $target = getTargetFromTrigger($this)
|
|
653
743
|
var data = $target.data('bs.collapse')
|
|
654
744
|
var option = data ? 'toggle' : $this.data()
|
|
655
|
-
var parent = $this.attr('data-parent')
|
|
656
|
-
var $parent = parent && $(parent)
|
|
657
|
-
|
|
658
|
-
if (!data || !data.transitioning) {
|
|
659
|
-
if ($parent) $parent.find('[data-toggle="collapse"][data-parent="' + parent + '"]').not($this).addClass('collapsed')
|
|
660
|
-
$this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
|
|
661
|
-
}
|
|
662
745
|
|
|
663
746
|
Plugin.call($target, option)
|
|
664
747
|
})
|
|
@@ -666,10 +749,10 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
666
749
|
}(jQuery);
|
|
667
750
|
|
|
668
751
|
/* ========================================================================
|
|
669
|
-
* Bootstrap: dropdown.js v3.
|
|
752
|
+
* Bootstrap: dropdown.js v3.3.7
|
|
670
753
|
* http://getbootstrap.com/javascript/#dropdowns
|
|
671
754
|
* ========================================================================
|
|
672
|
-
* Copyright 2011-
|
|
755
|
+
* Copyright 2011-2016 Twitter, Inc.
|
|
673
756
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
|
674
757
|
* ======================================================================== */
|
|
675
758
|
|
|
@@ -686,7 +769,41 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
686
769
|
$(element).on('click.bs.dropdown', this.toggle)
|
|
687
770
|
}
|
|
688
771
|
|
|
689
|
-
Dropdown.VERSION = '3.
|
|
772
|
+
Dropdown.VERSION = '3.3.7'
|
|
773
|
+
|
|
774
|
+
function getParent($this) {
|
|
775
|
+
var selector = $this.attr('data-target')
|
|
776
|
+
|
|
777
|
+
if (!selector) {
|
|
778
|
+
selector = $this.attr('href')
|
|
779
|
+
selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
|
|
780
|
+
}
|
|
781
|
+
|
|
782
|
+
var $parent = selector && $(selector)
|
|
783
|
+
|
|
784
|
+
return $parent && $parent.length ? $parent : $this.parent()
|
|
785
|
+
}
|
|
786
|
+
|
|
787
|
+
function clearMenus(e) {
|
|
788
|
+
if (e && e.which === 3) return
|
|
789
|
+
$(backdrop).remove()
|
|
790
|
+
$(toggle).each(function () {
|
|
791
|
+
var $this = $(this)
|
|
792
|
+
var $parent = getParent($this)
|
|
793
|
+
var relatedTarget = { relatedTarget: this }
|
|
794
|
+
|
|
795
|
+
if (!$parent.hasClass('open')) return
|
|
796
|
+
|
|
797
|
+
if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return
|
|
798
|
+
|
|
799
|
+
$parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
|
|
800
|
+
|
|
801
|
+
if (e.isDefaultPrevented()) return
|
|
802
|
+
|
|
803
|
+
$this.attr('aria-expanded', 'false')
|
|
804
|
+
$parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))
|
|
805
|
+
})
|
|
806
|
+
}
|
|
690
807
|
|
|
691
808
|
Dropdown.prototype.toggle = function (e) {
|
|
692
809
|
var $this = $(this)
|
|
@@ -701,7 +818,10 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
701
818
|
if (!isActive) {
|
|
702
819
|
if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
|
|
703
820
|
// if mobile we use a backdrop because click events don't delegate
|
|
704
|
-
$('
|
|
821
|
+
$(document.createElement('div'))
|
|
822
|
+
.addClass('dropdown-backdrop')
|
|
823
|
+
.insertAfter($(this))
|
|
824
|
+
.on('click', clearMenus)
|
|
705
825
|
}
|
|
706
826
|
|
|
707
827
|
var relatedTarget = { relatedTarget: this }
|
|
@@ -709,18 +829,20 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
709
829
|
|
|
710
830
|
if (e.isDefaultPrevented()) return
|
|
711
831
|
|
|
712
|
-
$this
|
|
832
|
+
$this
|
|
833
|
+
.trigger('focus')
|
|
834
|
+
.attr('aria-expanded', 'true')
|
|
713
835
|
|
|
714
836
|
$parent
|
|
715
837
|
.toggleClass('open')
|
|
716
|
-
.trigger('shown.bs.dropdown', relatedTarget)
|
|
838
|
+
.trigger($.Event('shown.bs.dropdown', relatedTarget))
|
|
717
839
|
}
|
|
718
840
|
|
|
719
841
|
return false
|
|
720
842
|
}
|
|
721
843
|
|
|
722
844
|
Dropdown.prototype.keydown = function (e) {
|
|
723
|
-
if (!/(38|40|27)/.test(e.
|
|
845
|
+
if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return
|
|
724
846
|
|
|
725
847
|
var $this = $(this)
|
|
726
848
|
|
|
@@ -732,51 +854,25 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
732
854
|
var $parent = getParent($this)
|
|
733
855
|
var isActive = $parent.hasClass('open')
|
|
734
856
|
|
|
735
|
-
if (!isActive ||
|
|
857
|
+
if (!isActive && e.which != 27 || isActive && e.which == 27) {
|
|
736
858
|
if (e.which == 27) $parent.find(toggle).trigger('focus')
|
|
737
859
|
return $this.trigger('click')
|
|
738
860
|
}
|
|
739
861
|
|
|
740
|
-
var desc = ' li:not(.
|
|
741
|
-
var $items = $parent.find('
|
|
862
|
+
var desc = ' li:not(.disabled):visible a'
|
|
863
|
+
var $items = $parent.find('.dropdown-menu' + desc)
|
|
742
864
|
|
|
743
865
|
if (!$items.length) return
|
|
744
866
|
|
|
745
|
-
var index = $items.index(
|
|
867
|
+
var index = $items.index(e.target)
|
|
746
868
|
|
|
747
|
-
if (e.
|
|
748
|
-
if (e.
|
|
749
|
-
if (!~index)
|
|
869
|
+
if (e.which == 38 && index > 0) index-- // up
|
|
870
|
+
if (e.which == 40 && index < $items.length - 1) index++ // down
|
|
871
|
+
if (!~index) index = 0
|
|
750
872
|
|
|
751
873
|
$items.eq(index).trigger('focus')
|
|
752
874
|
}
|
|
753
875
|
|
|
754
|
-
function clearMenus(e) {
|
|
755
|
-
if (e && e.which === 3) return
|
|
756
|
-
$(backdrop).remove()
|
|
757
|
-
$(toggle).each(function () {
|
|
758
|
-
var $parent = getParent($(this))
|
|
759
|
-
var relatedTarget = { relatedTarget: this }
|
|
760
|
-
if (!$parent.hasClass('open')) return
|
|
761
|
-
$parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
|
|
762
|
-
if (e.isDefaultPrevented()) return
|
|
763
|
-
$parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)
|
|
764
|
-
})
|
|
765
|
-
}
|
|
766
|
-
|
|
767
|
-
function getParent($this) {
|
|
768
|
-
var selector = $this.attr('data-target')
|
|
769
|
-
|
|
770
|
-
if (!selector) {
|
|
771
|
-
selector = $this.attr('href')
|
|
772
|
-
selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
|
|
773
|
-
}
|
|
774
|
-
|
|
775
|
-
var $parent = selector && $(selector)
|
|
776
|
-
|
|
777
|
-
return $parent && $parent.length ? $parent : $this.parent()
|
|
778
|
-
}
|
|
779
|
-
|
|
780
876
|
|
|
781
877
|
// DROPDOWN PLUGIN DEFINITION
|
|
782
878
|
// ==========================
|
|
@@ -813,15 +909,16 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
813
909
|
.on('click.bs.dropdown.data-api', clearMenus)
|
|
814
910
|
.on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
|
|
815
911
|
.on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
|
|
816
|
-
.on('keydown.bs.dropdown.data-api', toggle
|
|
912
|
+
.on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
|
|
913
|
+
.on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)
|
|
817
914
|
|
|
818
915
|
}(jQuery);
|
|
819
916
|
|
|
820
917
|
/* ========================================================================
|
|
821
|
-
* Bootstrap: modal.js v3.
|
|
918
|
+
* Bootstrap: modal.js v3.3.7
|
|
822
919
|
* http://getbootstrap.com/javascript/#modals
|
|
823
920
|
* ========================================================================
|
|
824
|
-
* Copyright 2011-
|
|
921
|
+
* Copyright 2011-2016 Twitter, Inc.
|
|
825
922
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
|
826
923
|
* ======================================================================== */
|
|
827
924
|
|
|
@@ -833,12 +930,15 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
833
930
|
// ======================
|
|
834
931
|
|
|
835
932
|
var Modal = function (element, options) {
|
|
836
|
-
this.options
|
|
837
|
-
this.$body
|
|
838
|
-
this.$element
|
|
839
|
-
this.$
|
|
840
|
-
this
|
|
841
|
-
this.
|
|
933
|
+
this.options = options
|
|
934
|
+
this.$body = $(document.body)
|
|
935
|
+
this.$element = $(element)
|
|
936
|
+
this.$dialog = this.$element.find('.modal-dialog')
|
|
937
|
+
this.$backdrop = null
|
|
938
|
+
this.isShown = null
|
|
939
|
+
this.originalBodyPad = null
|
|
940
|
+
this.scrollbarWidth = 0
|
|
941
|
+
this.ignoreBackdropClick = false
|
|
842
942
|
|
|
843
943
|
if (this.options.remote) {
|
|
844
944
|
this.$element
|
|
@@ -849,7 +949,10 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
849
949
|
}
|
|
850
950
|
}
|
|
851
951
|
|
|
852
|
-
Modal.VERSION = '3.
|
|
952
|
+
Modal.VERSION = '3.3.7'
|
|
953
|
+
|
|
954
|
+
Modal.TRANSITION_DURATION = 300
|
|
955
|
+
Modal.BACKDROP_TRANSITION_DURATION = 150
|
|
853
956
|
|
|
854
957
|
Modal.DEFAULTS = {
|
|
855
958
|
backdrop: true,
|
|
@@ -872,13 +975,20 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
872
975
|
this.isShown = true
|
|
873
976
|
|
|
874
977
|
this.checkScrollbar()
|
|
978
|
+
this.setScrollbar()
|
|
875
979
|
this.$body.addClass('modal-open')
|
|
876
980
|
|
|
877
|
-
this.setScrollbar()
|
|
878
981
|
this.escape()
|
|
982
|
+
this.resize()
|
|
879
983
|
|
|
880
984
|
this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
|
|
881
985
|
|
|
986
|
+
this.$dialog.on('mousedown.dismiss.bs.modal', function () {
|
|
987
|
+
that.$element.one('mouseup.dismiss.bs.modal', function (e) {
|
|
988
|
+
if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true
|
|
989
|
+
})
|
|
990
|
+
})
|
|
991
|
+
|
|
882
992
|
this.backdrop(function () {
|
|
883
993
|
var transition = $.support.transition && that.$element.hasClass('fade')
|
|
884
994
|
|
|
@@ -890,24 +1000,24 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
890
1000
|
.show()
|
|
891
1001
|
.scrollTop(0)
|
|
892
1002
|
|
|
1003
|
+
that.adjustDialog()
|
|
1004
|
+
|
|
893
1005
|
if (transition) {
|
|
894
1006
|
that.$element[0].offsetWidth // force reflow
|
|
895
1007
|
}
|
|
896
1008
|
|
|
897
|
-
that.$element
|
|
898
|
-
.addClass('in')
|
|
899
|
-
.attr('aria-hidden', false)
|
|
1009
|
+
that.$element.addClass('in')
|
|
900
1010
|
|
|
901
1011
|
that.enforceFocus()
|
|
902
1012
|
|
|
903
1013
|
var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
|
|
904
1014
|
|
|
905
1015
|
transition ?
|
|
906
|
-
that.$
|
|
1016
|
+
that.$dialog // wait for modal to slide in
|
|
907
1017
|
.one('bsTransitionEnd', function () {
|
|
908
1018
|
that.$element.trigger('focus').trigger(e)
|
|
909
1019
|
})
|
|
910
|
-
.emulateTransitionEnd(
|
|
1020
|
+
.emulateTransitionEnd(Modal.TRANSITION_DURATION) :
|
|
911
1021
|
that.$element.trigger('focus').trigger(e)
|
|
912
1022
|
})
|
|
913
1023
|
}
|
|
@@ -923,22 +1033,22 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
923
1033
|
|
|
924
1034
|
this.isShown = false
|
|
925
1035
|
|
|
926
|
-
this.$body.removeClass('modal-open')
|
|
927
|
-
|
|
928
|
-
this.resetScrollbar()
|
|
929
1036
|
this.escape()
|
|
1037
|
+
this.resize()
|
|
930
1038
|
|
|
931
1039
|
$(document).off('focusin.bs.modal')
|
|
932
1040
|
|
|
933
1041
|
this.$element
|
|
934
1042
|
.removeClass('in')
|
|
935
|
-
.attr('aria-hidden', true)
|
|
936
1043
|
.off('click.dismiss.bs.modal')
|
|
1044
|
+
.off('mouseup.dismiss.bs.modal')
|
|
1045
|
+
|
|
1046
|
+
this.$dialog.off('mousedown.dismiss.bs.modal')
|
|
937
1047
|
|
|
938
1048
|
$.support.transition && this.$element.hasClass('fade') ?
|
|
939
1049
|
this.$element
|
|
940
1050
|
.one('bsTransitionEnd', $.proxy(this.hideModal, this))
|
|
941
|
-
.emulateTransitionEnd(
|
|
1051
|
+
.emulateTransitionEnd(Modal.TRANSITION_DURATION) :
|
|
942
1052
|
this.hideModal()
|
|
943
1053
|
}
|
|
944
1054
|
|
|
@@ -946,7 +1056,9 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
946
1056
|
$(document)
|
|
947
1057
|
.off('focusin.bs.modal') // guard against infinite focus loop
|
|
948
1058
|
.on('focusin.bs.modal', $.proxy(function (e) {
|
|
949
|
-
if (
|
|
1059
|
+
if (document !== e.target &&
|
|
1060
|
+
this.$element[0] !== e.target &&
|
|
1061
|
+
!this.$element.has(e.target).length) {
|
|
950
1062
|
this.$element.trigger('focus')
|
|
951
1063
|
}
|
|
952
1064
|
}, this))
|
|
@@ -954,11 +1066,19 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
954
1066
|
|
|
955
1067
|
Modal.prototype.escape = function () {
|
|
956
1068
|
if (this.isShown && this.options.keyboard) {
|
|
957
|
-
this.$element.on('
|
|
1069
|
+
this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {
|
|
958
1070
|
e.which == 27 && this.hide()
|
|
959
1071
|
}, this))
|
|
960
1072
|
} else if (!this.isShown) {
|
|
961
|
-
this.$element.off('
|
|
1073
|
+
this.$element.off('keydown.dismiss.bs.modal')
|
|
1074
|
+
}
|
|
1075
|
+
}
|
|
1076
|
+
|
|
1077
|
+
Modal.prototype.resize = function () {
|
|
1078
|
+
if (this.isShown) {
|
|
1079
|
+
$(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))
|
|
1080
|
+
} else {
|
|
1081
|
+
$(window).off('resize.bs.modal')
|
|
962
1082
|
}
|
|
963
1083
|
}
|
|
964
1084
|
|
|
@@ -966,6 +1086,9 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
966
1086
|
var that = this
|
|
967
1087
|
this.$element.hide()
|
|
968
1088
|
this.backdrop(function () {
|
|
1089
|
+
that.$body.removeClass('modal-open')
|
|
1090
|
+
that.resetAdjustments()
|
|
1091
|
+
that.resetScrollbar()
|
|
969
1092
|
that.$element.trigger('hidden.bs.modal')
|
|
970
1093
|
})
|
|
971
1094
|
}
|
|
@@ -982,14 +1105,19 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
982
1105
|
if (this.isShown && this.options.backdrop) {
|
|
983
1106
|
var doAnimate = $.support.transition && animate
|
|
984
1107
|
|
|
985
|
-
this.$backdrop = $('
|
|
1108
|
+
this.$backdrop = $(document.createElement('div'))
|
|
1109
|
+
.addClass('modal-backdrop ' + animate)
|
|
986
1110
|
.appendTo(this.$body)
|
|
987
1111
|
|
|
988
1112
|
this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
|
|
1113
|
+
if (this.ignoreBackdropClick) {
|
|
1114
|
+
this.ignoreBackdropClick = false
|
|
1115
|
+
return
|
|
1116
|
+
}
|
|
989
1117
|
if (e.target !== e.currentTarget) return
|
|
990
1118
|
this.options.backdrop == 'static'
|
|
991
|
-
? this.$element[0].focus
|
|
992
|
-
: this.hide
|
|
1119
|
+
? this.$element[0].focus()
|
|
1120
|
+
: this.hide()
|
|
993
1121
|
}, this))
|
|
994
1122
|
|
|
995
1123
|
if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
|
|
@@ -1001,7 +1129,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1001
1129
|
doAnimate ?
|
|
1002
1130
|
this.$backdrop
|
|
1003
1131
|
.one('bsTransitionEnd', callback)
|
|
1004
|
-
.emulateTransitionEnd(
|
|
1132
|
+
.emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
|
|
1005
1133
|
callback()
|
|
1006
1134
|
|
|
1007
1135
|
} else if (!this.isShown && this.$backdrop) {
|
|
@@ -1014,7 +1142,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1014
1142
|
$.support.transition && this.$element.hasClass('fade') ?
|
|
1015
1143
|
this.$backdrop
|
|
1016
1144
|
.one('bsTransitionEnd', callbackRemove)
|
|
1017
|
-
.emulateTransitionEnd(
|
|
1145
|
+
.emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
|
|
1018
1146
|
callbackRemove()
|
|
1019
1147
|
|
|
1020
1148
|
} else if (callback) {
|
|
@@ -1022,18 +1150,46 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1022
1150
|
}
|
|
1023
1151
|
}
|
|
1024
1152
|
|
|
1153
|
+
// these following methods are used to handle overflowing modals
|
|
1154
|
+
|
|
1155
|
+
Modal.prototype.handleUpdate = function () {
|
|
1156
|
+
this.adjustDialog()
|
|
1157
|
+
}
|
|
1158
|
+
|
|
1159
|
+
Modal.prototype.adjustDialog = function () {
|
|
1160
|
+
var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight
|
|
1161
|
+
|
|
1162
|
+
this.$element.css({
|
|
1163
|
+
paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',
|
|
1164
|
+
paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''
|
|
1165
|
+
})
|
|
1166
|
+
}
|
|
1167
|
+
|
|
1168
|
+
Modal.prototype.resetAdjustments = function () {
|
|
1169
|
+
this.$element.css({
|
|
1170
|
+
paddingLeft: '',
|
|
1171
|
+
paddingRight: ''
|
|
1172
|
+
})
|
|
1173
|
+
}
|
|
1174
|
+
|
|
1025
1175
|
Modal.prototype.checkScrollbar = function () {
|
|
1026
|
-
|
|
1027
|
-
|
|
1176
|
+
var fullWindowWidth = window.innerWidth
|
|
1177
|
+
if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8
|
|
1178
|
+
var documentElementRect = document.documentElement.getBoundingClientRect()
|
|
1179
|
+
fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)
|
|
1180
|
+
}
|
|
1181
|
+
this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth
|
|
1182
|
+
this.scrollbarWidth = this.measureScrollbar()
|
|
1028
1183
|
}
|
|
1029
1184
|
|
|
1030
1185
|
Modal.prototype.setScrollbar = function () {
|
|
1031
1186
|
var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
|
|
1032
|
-
|
|
1187
|
+
this.originalBodyPad = document.body.style.paddingRight || ''
|
|
1188
|
+
if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)
|
|
1033
1189
|
}
|
|
1034
1190
|
|
|
1035
1191
|
Modal.prototype.resetScrollbar = function () {
|
|
1036
|
-
this.$body.css('padding-right',
|
|
1192
|
+
this.$body.css('padding-right', this.originalBodyPad)
|
|
1037
1193
|
}
|
|
1038
1194
|
|
|
1039
1195
|
Modal.prototype.measureScrollbar = function () { // thx walsh
|
|
@@ -1099,11 +1255,11 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1099
1255
|
}(jQuery);
|
|
1100
1256
|
|
|
1101
1257
|
/* ========================================================================
|
|
1102
|
-
* Bootstrap: tooltip.js v3.
|
|
1258
|
+
* Bootstrap: tooltip.js v3.3.7
|
|
1103
1259
|
* http://getbootstrap.com/javascript/#tooltip
|
|
1104
1260
|
* Inspired by the original jQuery.tipsy by Jason Frame
|
|
1105
1261
|
* ========================================================================
|
|
1106
|
-
* Copyright 2011-
|
|
1262
|
+
* Copyright 2011-2016 Twitter, Inc.
|
|
1107
1263
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
|
1108
1264
|
* ======================================================================== */
|
|
1109
1265
|
|
|
@@ -1115,17 +1271,20 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1115
1271
|
// ===============================
|
|
1116
1272
|
|
|
1117
1273
|
var Tooltip = function (element, options) {
|
|
1118
|
-
this.type =
|
|
1119
|
-
this.options =
|
|
1120
|
-
this.enabled =
|
|
1121
|
-
this.timeout =
|
|
1122
|
-
this.hoverState =
|
|
1274
|
+
this.type = null
|
|
1275
|
+
this.options = null
|
|
1276
|
+
this.enabled = null
|
|
1277
|
+
this.timeout = null
|
|
1278
|
+
this.hoverState = null
|
|
1123
1279
|
this.$element = null
|
|
1280
|
+
this.inState = null
|
|
1124
1281
|
|
|
1125
1282
|
this.init('tooltip', element, options)
|
|
1126
1283
|
}
|
|
1127
1284
|
|
|
1128
|
-
Tooltip.VERSION = '3.
|
|
1285
|
+
Tooltip.VERSION = '3.3.7'
|
|
1286
|
+
|
|
1287
|
+
Tooltip.TRANSITION_DURATION = 150
|
|
1129
1288
|
|
|
1130
1289
|
Tooltip.DEFAULTS = {
|
|
1131
1290
|
animation: true,
|
|
@@ -1148,7 +1307,12 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1148
1307
|
this.type = type
|
|
1149
1308
|
this.$element = $(element)
|
|
1150
1309
|
this.options = this.getOptions(options)
|
|
1151
|
-
this.$viewport = this.options.viewport && $(this.options.viewport.selector || this.options.viewport)
|
|
1310
|
+
this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))
|
|
1311
|
+
this.inState = { click: false, hover: false, focus: false }
|
|
1312
|
+
|
|
1313
|
+
if (this.$element[0] instanceof document.constructor && !this.options.selector) {
|
|
1314
|
+
throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')
|
|
1315
|
+
}
|
|
1152
1316
|
|
|
1153
1317
|
var triggers = this.options.trigger.split(' ')
|
|
1154
1318
|
|
|
@@ -1208,6 +1372,15 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1208
1372
|
$(obj.currentTarget).data('bs.' + this.type, self)
|
|
1209
1373
|
}
|
|
1210
1374
|
|
|
1375
|
+
if (obj instanceof $.Event) {
|
|
1376
|
+
self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true
|
|
1377
|
+
}
|
|
1378
|
+
|
|
1379
|
+
if (self.tip().hasClass('in') || self.hoverState == 'in') {
|
|
1380
|
+
self.hoverState = 'in'
|
|
1381
|
+
return
|
|
1382
|
+
}
|
|
1383
|
+
|
|
1211
1384
|
clearTimeout(self.timeout)
|
|
1212
1385
|
|
|
1213
1386
|
self.hoverState = 'in'
|
|
@@ -1219,6 +1392,14 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1219
1392
|
}, self.options.delay.show)
|
|
1220
1393
|
}
|
|
1221
1394
|
|
|
1395
|
+
Tooltip.prototype.isInStateTrue = function () {
|
|
1396
|
+
for (var key in this.inState) {
|
|
1397
|
+
if (this.inState[key]) return true
|
|
1398
|
+
}
|
|
1399
|
+
|
|
1400
|
+
return false
|
|
1401
|
+
}
|
|
1402
|
+
|
|
1222
1403
|
Tooltip.prototype.leave = function (obj) {
|
|
1223
1404
|
var self = obj instanceof this.constructor ?
|
|
1224
1405
|
obj : $(obj.currentTarget).data('bs.' + this.type)
|
|
@@ -1228,6 +1409,12 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1228
1409
|
$(obj.currentTarget).data('bs.' + this.type, self)
|
|
1229
1410
|
}
|
|
1230
1411
|
|
|
1412
|
+
if (obj instanceof $.Event) {
|
|
1413
|
+
self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false
|
|
1414
|
+
}
|
|
1415
|
+
|
|
1416
|
+
if (self.isInStateTrue()) return
|
|
1417
|
+
|
|
1231
1418
|
clearTimeout(self.timeout)
|
|
1232
1419
|
|
|
1233
1420
|
self.hoverState = 'out'
|
|
@@ -1245,7 +1432,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1245
1432
|
if (this.hasContent() && this.enabled) {
|
|
1246
1433
|
this.$element.trigger(e)
|
|
1247
1434
|
|
|
1248
|
-
var inDom = $.contains(
|
|
1435
|
+
var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])
|
|
1249
1436
|
if (e.isDefaultPrevented() || !inDom) return
|
|
1250
1437
|
var that = this
|
|
1251
1438
|
|
|
@@ -1274,6 +1461,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1274
1461
|
.data('bs.' + this.type, this)
|
|
1275
1462
|
|
|
1276
1463
|
this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
|
|
1464
|
+
this.$element.trigger('inserted.bs.' + this.type)
|
|
1277
1465
|
|
|
1278
1466
|
var pos = this.getPosition()
|
|
1279
1467
|
var actualWidth = $tip[0].offsetWidth
|
|
@@ -1281,13 +1469,12 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1281
1469
|
|
|
1282
1470
|
if (autoPlace) {
|
|
1283
1471
|
var orgPlacement = placement
|
|
1284
|
-
var
|
|
1285
|
-
var parentDim = this.getPosition($parent)
|
|
1472
|
+
var viewportDim = this.getPosition(this.$viewport)
|
|
1286
1473
|
|
|
1287
|
-
placement = placement == 'bottom' && pos.
|
|
1288
|
-
placement == 'top' && pos.top
|
|
1289
|
-
placement == 'right' && pos.right
|
|
1290
|
-
placement == 'left' && pos.left
|
|
1474
|
+
placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' :
|
|
1475
|
+
placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' :
|
|
1476
|
+
placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' :
|
|
1477
|
+
placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' :
|
|
1291
1478
|
placement
|
|
1292
1479
|
|
|
1293
1480
|
$tip
|
|
@@ -1300,14 +1487,17 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1300
1487
|
this.applyPlacement(calculatedOffset, placement)
|
|
1301
1488
|
|
|
1302
1489
|
var complete = function () {
|
|
1490
|
+
var prevHoverState = that.hoverState
|
|
1303
1491
|
that.$element.trigger('shown.bs.' + that.type)
|
|
1304
1492
|
that.hoverState = null
|
|
1493
|
+
|
|
1494
|
+
if (prevHoverState == 'out') that.leave(that)
|
|
1305
1495
|
}
|
|
1306
1496
|
|
|
1307
1497
|
$.support.transition && this.$tip.hasClass('fade') ?
|
|
1308
1498
|
$tip
|
|
1309
1499
|
.one('bsTransitionEnd', complete)
|
|
1310
|
-
.emulateTransitionEnd(
|
|
1500
|
+
.emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
|
|
1311
1501
|
complete()
|
|
1312
1502
|
}
|
|
1313
1503
|
}
|
|
@@ -1325,8 +1515,8 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1325
1515
|
if (isNaN(marginTop)) marginTop = 0
|
|
1326
1516
|
if (isNaN(marginLeft)) marginLeft = 0
|
|
1327
1517
|
|
|
1328
|
-
offset.top
|
|
1329
|
-
offset.left
|
|
1518
|
+
offset.top += marginTop
|
|
1519
|
+
offset.left += marginLeft
|
|
1330
1520
|
|
|
1331
1521
|
// $.fn.offset doesn't round pixel values
|
|
1332
1522
|
// so we use setOffset directly with our own function B-0
|
|
@@ -1354,16 +1544,18 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1354
1544
|
if (delta.left) offset.left += delta.left
|
|
1355
1545
|
else offset.top += delta.top
|
|
1356
1546
|
|
|
1357
|
-
var
|
|
1358
|
-
var
|
|
1359
|
-
var arrowOffsetPosition =
|
|
1547
|
+
var isVertical = /top|bottom/.test(placement)
|
|
1548
|
+
var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight
|
|
1549
|
+
var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'
|
|
1360
1550
|
|
|
1361
1551
|
$tip.offset(offset)
|
|
1362
|
-
this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition],
|
|
1552
|
+
this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)
|
|
1363
1553
|
}
|
|
1364
1554
|
|
|
1365
|
-
Tooltip.prototype.replaceArrow = function (delta, dimension,
|
|
1366
|
-
this.arrow()
|
|
1555
|
+
Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {
|
|
1556
|
+
this.arrow()
|
|
1557
|
+
.css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')
|
|
1558
|
+
.css(isVertical ? 'top' : 'left', '')
|
|
1367
1559
|
}
|
|
1368
1560
|
|
|
1369
1561
|
Tooltip.prototype.setContent = function () {
|
|
@@ -1374,16 +1566,19 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1374
1566
|
$tip.removeClass('fade in top bottom left right')
|
|
1375
1567
|
}
|
|
1376
1568
|
|
|
1377
|
-
Tooltip.prototype.hide = function () {
|
|
1569
|
+
Tooltip.prototype.hide = function (callback) {
|
|
1378
1570
|
var that = this
|
|
1379
|
-
var $tip = this
|
|
1571
|
+
var $tip = $(this.$tip)
|
|
1380
1572
|
var e = $.Event('hide.bs.' + this.type)
|
|
1381
1573
|
|
|
1382
|
-
this.$element.removeAttr('aria-describedby')
|
|
1383
|
-
|
|
1384
1574
|
function complete() {
|
|
1385
1575
|
if (that.hoverState != 'in') $tip.detach()
|
|
1386
|
-
that.$element
|
|
1576
|
+
if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.
|
|
1577
|
+
that.$element
|
|
1578
|
+
.removeAttr('aria-describedby')
|
|
1579
|
+
.trigger('hidden.bs.' + that.type)
|
|
1580
|
+
}
|
|
1581
|
+
callback && callback()
|
|
1387
1582
|
}
|
|
1388
1583
|
|
|
1389
1584
|
this.$element.trigger(e)
|
|
@@ -1392,10 +1587,10 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1392
1587
|
|
|
1393
1588
|
$tip.removeClass('in')
|
|
1394
1589
|
|
|
1395
|
-
$.support.transition &&
|
|
1590
|
+
$.support.transition && $tip.hasClass('fade') ?
|
|
1396
1591
|
$tip
|
|
1397
1592
|
.one('bsTransitionEnd', complete)
|
|
1398
|
-
.emulateTransitionEnd(
|
|
1593
|
+
.emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
|
|
1399
1594
|
complete()
|
|
1400
1595
|
|
|
1401
1596
|
this.hoverState = null
|
|
@@ -1405,7 +1600,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1405
1600
|
|
|
1406
1601
|
Tooltip.prototype.fixTitle = function () {
|
|
1407
1602
|
var $e = this.$element
|
|
1408
|
-
if ($e.attr('title') || typeof
|
|
1603
|
+
if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {
|
|
1409
1604
|
$e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
|
|
1410
1605
|
}
|
|
1411
1606
|
}
|
|
@@ -1416,20 +1611,30 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1416
1611
|
|
|
1417
1612
|
Tooltip.prototype.getPosition = function ($element) {
|
|
1418
1613
|
$element = $element || this.$element
|
|
1614
|
+
|
|
1419
1615
|
var el = $element[0]
|
|
1420
1616
|
var isBody = el.tagName == 'BODY'
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1617
|
+
|
|
1618
|
+
var elRect = el.getBoundingClientRect()
|
|
1619
|
+
if (elRect.width == null) {
|
|
1620
|
+
// width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093
|
|
1621
|
+
elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })
|
|
1622
|
+
}
|
|
1623
|
+
var isSvg = window.SVGElement && el instanceof window.SVGElement
|
|
1624
|
+
// Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.
|
|
1625
|
+
// See https://github.com/twbs/bootstrap/issues/20280
|
|
1626
|
+
var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())
|
|
1627
|
+
var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }
|
|
1628
|
+
var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null
|
|
1629
|
+
|
|
1630
|
+
return $.extend({}, elRect, scroll, outerDims, elOffset)
|
|
1426
1631
|
}
|
|
1427
1632
|
|
|
1428
1633
|
Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
|
|
1429
|
-
return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2
|
|
1430
|
-
placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2
|
|
1634
|
+
return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :
|
|
1635
|
+
placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :
|
|
1431
1636
|
placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
|
|
1432
|
-
/* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width
|
|
1637
|
+
/* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }
|
|
1433
1638
|
|
|
1434
1639
|
}
|
|
1435
1640
|
|
|
@@ -1453,7 +1658,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1453
1658
|
var rightEdgeOffset = pos.left + viewportPadding + actualWidth
|
|
1454
1659
|
if (leftEdgeOffset < viewportDimensions.left) { // left overflow
|
|
1455
1660
|
delta.left = viewportDimensions.left - leftEdgeOffset
|
|
1456
|
-
} else if (rightEdgeOffset > viewportDimensions.
|
|
1661
|
+
} else if (rightEdgeOffset > viewportDimensions.right) { // right overflow
|
|
1457
1662
|
delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset
|
|
1458
1663
|
}
|
|
1459
1664
|
}
|
|
@@ -1479,21 +1684,19 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1479
1684
|
}
|
|
1480
1685
|
|
|
1481
1686
|
Tooltip.prototype.tip = function () {
|
|
1482
|
-
|
|
1687
|
+
if (!this.$tip) {
|
|
1688
|
+
this.$tip = $(this.options.template)
|
|
1689
|
+
if (this.$tip.length != 1) {
|
|
1690
|
+
throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')
|
|
1691
|
+
}
|
|
1692
|
+
}
|
|
1693
|
+
return this.$tip
|
|
1483
1694
|
}
|
|
1484
1695
|
|
|
1485
1696
|
Tooltip.prototype.arrow = function () {
|
|
1486
1697
|
return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))
|
|
1487
1698
|
}
|
|
1488
1699
|
|
|
1489
|
-
Tooltip.prototype.validate = function () {
|
|
1490
|
-
if (!this.$element[0].parentNode) {
|
|
1491
|
-
this.hide()
|
|
1492
|
-
this.$element = null
|
|
1493
|
-
this.options = null
|
|
1494
|
-
}
|
|
1495
|
-
}
|
|
1496
|
-
|
|
1497
1700
|
Tooltip.prototype.enable = function () {
|
|
1498
1701
|
this.enabled = true
|
|
1499
1702
|
}
|
|
@@ -1516,12 +1719,28 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1516
1719
|
}
|
|
1517
1720
|
}
|
|
1518
1721
|
|
|
1519
|
-
|
|
1722
|
+
if (e) {
|
|
1723
|
+
self.inState.click = !self.inState.click
|
|
1724
|
+
if (self.isInStateTrue()) self.enter(self)
|
|
1725
|
+
else self.leave(self)
|
|
1726
|
+
} else {
|
|
1727
|
+
self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
|
|
1728
|
+
}
|
|
1520
1729
|
}
|
|
1521
1730
|
|
|
1522
1731
|
Tooltip.prototype.destroy = function () {
|
|
1732
|
+
var that = this
|
|
1523
1733
|
clearTimeout(this.timeout)
|
|
1524
|
-
this.hide(
|
|
1734
|
+
this.hide(function () {
|
|
1735
|
+
that.$element.off('.' + that.type).removeData('bs.' + that.type)
|
|
1736
|
+
if (that.$tip) {
|
|
1737
|
+
that.$tip.detach()
|
|
1738
|
+
}
|
|
1739
|
+
that.$tip = null
|
|
1740
|
+
that.$arrow = null
|
|
1741
|
+
that.$viewport = null
|
|
1742
|
+
that.$element = null
|
|
1743
|
+
})
|
|
1525
1744
|
}
|
|
1526
1745
|
|
|
1527
1746
|
|
|
@@ -1534,7 +1753,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1534
1753
|
var data = $this.data('bs.tooltip')
|
|
1535
1754
|
var options = typeof option == 'object' && option
|
|
1536
1755
|
|
|
1537
|
-
if (!data && option
|
|
1756
|
+
if (!data && /destroy|hide/.test(option)) return
|
|
1538
1757
|
if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
|
|
1539
1758
|
if (typeof option == 'string') data[option]()
|
|
1540
1759
|
})
|
|
@@ -1557,10 +1776,10 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1557
1776
|
}(jQuery);
|
|
1558
1777
|
|
|
1559
1778
|
/* ========================================================================
|
|
1560
|
-
* Bootstrap: popover.js v3.
|
|
1779
|
+
* Bootstrap: popover.js v3.3.7
|
|
1561
1780
|
* http://getbootstrap.com/javascript/#popovers
|
|
1562
1781
|
* ========================================================================
|
|
1563
|
-
* Copyright 2011-
|
|
1782
|
+
* Copyright 2011-2016 Twitter, Inc.
|
|
1564
1783
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
|
1565
1784
|
* ======================================================================== */
|
|
1566
1785
|
|
|
@@ -1577,7 +1796,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1577
1796
|
|
|
1578
1797
|
if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
|
|
1579
1798
|
|
|
1580
|
-
Popover.VERSION = '3.
|
|
1799
|
+
Popover.VERSION = '3.3.7'
|
|
1581
1800
|
|
|
1582
1801
|
Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
|
|
1583
1802
|
placement: 'right',
|
|
@@ -1604,7 +1823,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1604
1823
|
var content = this.getContent()
|
|
1605
1824
|
|
|
1606
1825
|
$tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
|
|
1607
|
-
$tip.find('.popover-content').
|
|
1826
|
+
$tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events
|
|
1608
1827
|
this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'
|
|
1609
1828
|
](content)
|
|
1610
1829
|
|
|
@@ -1633,11 +1852,6 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1633
1852
|
return (this.$arrow = this.$arrow || this.tip().find('.arrow'))
|
|
1634
1853
|
}
|
|
1635
1854
|
|
|
1636
|
-
Popover.prototype.tip = function () {
|
|
1637
|
-
if (!this.$tip) this.$tip = $(this.options.template)
|
|
1638
|
-
return this.$tip
|
|
1639
|
-
}
|
|
1640
|
-
|
|
1641
1855
|
|
|
1642
1856
|
// POPOVER PLUGIN DEFINITION
|
|
1643
1857
|
// =========================
|
|
@@ -1648,7 +1862,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1648
1862
|
var data = $this.data('bs.popover')
|
|
1649
1863
|
var options = typeof option == 'object' && option
|
|
1650
1864
|
|
|
1651
|
-
if (!data && option
|
|
1865
|
+
if (!data && /destroy|hide/.test(option)) return
|
|
1652
1866
|
if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
|
|
1653
1867
|
if (typeof option == 'string') data[option]()
|
|
1654
1868
|
})
|
|
@@ -1671,10 +1885,10 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1671
1885
|
}(jQuery);
|
|
1672
1886
|
|
|
1673
1887
|
/* ========================================================================
|
|
1674
|
-
* Bootstrap: scrollspy.js v3.
|
|
1888
|
+
* Bootstrap: scrollspy.js v3.3.7
|
|
1675
1889
|
* http://getbootstrap.com/javascript/#scrollspy
|
|
1676
1890
|
* ========================================================================
|
|
1677
|
-
* Copyright 2011-
|
|
1891
|
+
* Copyright 2011-2016 Twitter, Inc.
|
|
1678
1892
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
|
1679
1893
|
* ======================================================================== */
|
|
1680
1894
|
|
|
@@ -1686,10 +1900,8 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1686
1900
|
// ==========================
|
|
1687
1901
|
|
|
1688
1902
|
function ScrollSpy(element, options) {
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
this.$body = $('body')
|
|
1692
|
-
this.$scrollElement = $(element).is('body') ? $(window) : $(element)
|
|
1903
|
+
this.$body = $(document.body)
|
|
1904
|
+
this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)
|
|
1693
1905
|
this.options = $.extend({}, ScrollSpy.DEFAULTS, options)
|
|
1694
1906
|
this.selector = (this.options.target || '') + ' .nav li > a'
|
|
1695
1907
|
this.offsets = []
|
|
@@ -1697,12 +1909,12 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1697
1909
|
this.activeTarget = null
|
|
1698
1910
|
this.scrollHeight = 0
|
|
1699
1911
|
|
|
1700
|
-
this.$scrollElement.on('scroll.bs.scrollspy', process)
|
|
1912
|
+
this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))
|
|
1701
1913
|
this.refresh()
|
|
1702
1914
|
this.process()
|
|
1703
1915
|
}
|
|
1704
1916
|
|
|
1705
|
-
ScrollSpy.VERSION = '3.
|
|
1917
|
+
ScrollSpy.VERSION = '3.3.7'
|
|
1706
1918
|
|
|
1707
1919
|
ScrollSpy.DEFAULTS = {
|
|
1708
1920
|
offset: 10
|
|
@@ -1713,20 +1925,19 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1713
1925
|
}
|
|
1714
1926
|
|
|
1715
1927
|
ScrollSpy.prototype.refresh = function () {
|
|
1716
|
-
var
|
|
1717
|
-
var
|
|
1928
|
+
var that = this
|
|
1929
|
+
var offsetMethod = 'offset'
|
|
1930
|
+
var offsetBase = 0
|
|
1931
|
+
|
|
1932
|
+
this.offsets = []
|
|
1933
|
+
this.targets = []
|
|
1934
|
+
this.scrollHeight = this.getScrollHeight()
|
|
1718
1935
|
|
|
1719
1936
|
if (!$.isWindow(this.$scrollElement[0])) {
|
|
1720
1937
|
offsetMethod = 'position'
|
|
1721
1938
|
offsetBase = this.$scrollElement.scrollTop()
|
|
1722
1939
|
}
|
|
1723
1940
|
|
|
1724
|
-
this.offsets = []
|
|
1725
|
-
this.targets = []
|
|
1726
|
-
this.scrollHeight = this.getScrollHeight()
|
|
1727
|
-
|
|
1728
|
-
var self = this
|
|
1729
|
-
|
|
1730
1941
|
this.$body
|
|
1731
1942
|
.find(this.selector)
|
|
1732
1943
|
.map(function () {
|
|
@@ -1741,8 +1952,8 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1741
1952
|
})
|
|
1742
1953
|
.sort(function (a, b) { return a[0] - b[0] })
|
|
1743
1954
|
.each(function () {
|
|
1744
|
-
|
|
1745
|
-
|
|
1955
|
+
that.offsets.push(this[0])
|
|
1956
|
+
that.targets.push(this[1])
|
|
1746
1957
|
})
|
|
1747
1958
|
}
|
|
1748
1959
|
|
|
@@ -1763,14 +1974,15 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1763
1974
|
return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)
|
|
1764
1975
|
}
|
|
1765
1976
|
|
|
1766
|
-
if (activeTarget && scrollTop
|
|
1767
|
-
|
|
1977
|
+
if (activeTarget && scrollTop < offsets[0]) {
|
|
1978
|
+
this.activeTarget = null
|
|
1979
|
+
return this.clear()
|
|
1768
1980
|
}
|
|
1769
1981
|
|
|
1770
1982
|
for (i = offsets.length; i--;) {
|
|
1771
1983
|
activeTarget != targets[i]
|
|
1772
1984
|
&& scrollTop >= offsets[i]
|
|
1773
|
-
&& (
|
|
1985
|
+
&& (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])
|
|
1774
1986
|
&& this.activate(targets[i])
|
|
1775
1987
|
}
|
|
1776
1988
|
}
|
|
@@ -1778,13 +1990,11 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1778
1990
|
ScrollSpy.prototype.activate = function (target) {
|
|
1779
1991
|
this.activeTarget = target
|
|
1780
1992
|
|
|
1781
|
-
|
|
1782
|
-
.parentsUntil(this.options.target, '.active')
|
|
1783
|
-
.removeClass('active')
|
|
1993
|
+
this.clear()
|
|
1784
1994
|
|
|
1785
1995
|
var selector = this.selector +
|
|
1786
|
-
|
|
1787
|
-
|
|
1996
|
+
'[data-target="' + target + '"],' +
|
|
1997
|
+
this.selector + '[href="' + target + '"]'
|
|
1788
1998
|
|
|
1789
1999
|
var active = $(selector)
|
|
1790
2000
|
.parents('li')
|
|
@@ -1799,6 +2009,12 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1799
2009
|
active.trigger('activate.bs.scrollspy')
|
|
1800
2010
|
}
|
|
1801
2011
|
|
|
2012
|
+
ScrollSpy.prototype.clear = function () {
|
|
2013
|
+
$(this.selector)
|
|
2014
|
+
.parentsUntil(this.options.target, '.active')
|
|
2015
|
+
.removeClass('active')
|
|
2016
|
+
}
|
|
2017
|
+
|
|
1802
2018
|
|
|
1803
2019
|
// SCROLLSPY PLUGIN DEFINITION
|
|
1804
2020
|
// ===========================
|
|
@@ -1842,10 +2058,10 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1842
2058
|
}(jQuery);
|
|
1843
2059
|
|
|
1844
2060
|
/* ========================================================================
|
|
1845
|
-
* Bootstrap: tab.js v3.
|
|
2061
|
+
* Bootstrap: tab.js v3.3.7
|
|
1846
2062
|
* http://getbootstrap.com/javascript/#tabs
|
|
1847
2063
|
* ========================================================================
|
|
1848
|
-
* Copyright 2011-
|
|
2064
|
+
* Copyright 2011-2016 Twitter, Inc.
|
|
1849
2065
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
|
1850
2066
|
* ======================================================================== */
|
|
1851
2067
|
|
|
@@ -1857,10 +2073,14 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1857
2073
|
// ====================
|
|
1858
2074
|
|
|
1859
2075
|
var Tab = function (element) {
|
|
2076
|
+
// jscs:disable requireDollarBeforejQueryAssignment
|
|
1860
2077
|
this.element = $(element)
|
|
2078
|
+
// jscs:enable requireDollarBeforejQueryAssignment
|
|
1861
2079
|
}
|
|
1862
2080
|
|
|
1863
|
-
Tab.VERSION = '3.
|
|
2081
|
+
Tab.VERSION = '3.3.7'
|
|
2082
|
+
|
|
2083
|
+
Tab.TRANSITION_DURATION = 150
|
|
1864
2084
|
|
|
1865
2085
|
Tab.prototype.show = function () {
|
|
1866
2086
|
var $this = this.element
|
|
@@ -1874,22 +2094,30 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1874
2094
|
|
|
1875
2095
|
if ($this.parent('li').hasClass('active')) return
|
|
1876
2096
|
|
|
1877
|
-
var previous = $ul.find('.active:last a')
|
|
1878
|
-
var
|
|
1879
|
-
relatedTarget:
|
|
2097
|
+
var $previous = $ul.find('.active:last a')
|
|
2098
|
+
var hideEvent = $.Event('hide.bs.tab', {
|
|
2099
|
+
relatedTarget: $this[0]
|
|
2100
|
+
})
|
|
2101
|
+
var showEvent = $.Event('show.bs.tab', {
|
|
2102
|
+
relatedTarget: $previous[0]
|
|
1880
2103
|
})
|
|
1881
2104
|
|
|
1882
|
-
$
|
|
2105
|
+
$previous.trigger(hideEvent)
|
|
2106
|
+
$this.trigger(showEvent)
|
|
1883
2107
|
|
|
1884
|
-
if (
|
|
2108
|
+
if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return
|
|
1885
2109
|
|
|
1886
2110
|
var $target = $(selector)
|
|
1887
2111
|
|
|
1888
2112
|
this.activate($this.closest('li'), $ul)
|
|
1889
2113
|
this.activate($target, $target.parent(), function () {
|
|
2114
|
+
$previous.trigger({
|
|
2115
|
+
type: 'hidden.bs.tab',
|
|
2116
|
+
relatedTarget: $this[0]
|
|
2117
|
+
})
|
|
1890
2118
|
$this.trigger({
|
|
1891
2119
|
type: 'shown.bs.tab',
|
|
1892
|
-
relatedTarget: previous
|
|
2120
|
+
relatedTarget: $previous[0]
|
|
1893
2121
|
})
|
|
1894
2122
|
})
|
|
1895
2123
|
}
|
|
@@ -1898,15 +2126,21 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1898
2126
|
var $active = container.find('> .active')
|
|
1899
2127
|
var transition = callback
|
|
1900
2128
|
&& $.support.transition
|
|
1901
|
-
&& $active.hasClass('fade')
|
|
2129
|
+
&& ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)
|
|
1902
2130
|
|
|
1903
2131
|
function next() {
|
|
1904
2132
|
$active
|
|
1905
2133
|
.removeClass('active')
|
|
1906
2134
|
.find('> .dropdown-menu > .active')
|
|
1907
|
-
|
|
2135
|
+
.removeClass('active')
|
|
2136
|
+
.end()
|
|
2137
|
+
.find('[data-toggle="tab"]')
|
|
2138
|
+
.attr('aria-expanded', false)
|
|
1908
2139
|
|
|
1909
|
-
element
|
|
2140
|
+
element
|
|
2141
|
+
.addClass('active')
|
|
2142
|
+
.find('[data-toggle="tab"]')
|
|
2143
|
+
.attr('aria-expanded', true)
|
|
1910
2144
|
|
|
1911
2145
|
if (transition) {
|
|
1912
2146
|
element[0].offsetWidth // reflow for transition
|
|
@@ -1915,17 +2149,22 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1915
2149
|
element.removeClass('fade')
|
|
1916
2150
|
}
|
|
1917
2151
|
|
|
1918
|
-
if (element.parent('.dropdown-menu')) {
|
|
1919
|
-
element
|
|
2152
|
+
if (element.parent('.dropdown-menu').length) {
|
|
2153
|
+
element
|
|
2154
|
+
.closest('li.dropdown')
|
|
2155
|
+
.addClass('active')
|
|
2156
|
+
.end()
|
|
2157
|
+
.find('[data-toggle="tab"]')
|
|
2158
|
+
.attr('aria-expanded', true)
|
|
1920
2159
|
}
|
|
1921
2160
|
|
|
1922
2161
|
callback && callback()
|
|
1923
2162
|
}
|
|
1924
2163
|
|
|
1925
|
-
transition ?
|
|
2164
|
+
$active.length && transition ?
|
|
1926
2165
|
$active
|
|
1927
2166
|
.one('bsTransitionEnd', next)
|
|
1928
|
-
.emulateTransitionEnd(
|
|
2167
|
+
.emulateTransitionEnd(Tab.TRANSITION_DURATION) :
|
|
1929
2168
|
next()
|
|
1930
2169
|
|
|
1931
2170
|
$active.removeClass('in')
|
|
@@ -1963,18 +2202,22 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1963
2202
|
// TAB DATA-API
|
|
1964
2203
|
// ============
|
|
1965
2204
|
|
|
1966
|
-
|
|
2205
|
+
var clickHandler = function (e) {
|
|
1967
2206
|
e.preventDefault()
|
|
1968
2207
|
Plugin.call($(this), 'show')
|
|
1969
|
-
}
|
|
2208
|
+
}
|
|
2209
|
+
|
|
2210
|
+
$(document)
|
|
2211
|
+
.on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler)
|
|
2212
|
+
.on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler)
|
|
1970
2213
|
|
|
1971
2214
|
}(jQuery);
|
|
1972
2215
|
|
|
1973
2216
|
/* ========================================================================
|
|
1974
|
-
* Bootstrap: affix.js v3.
|
|
2217
|
+
* Bootstrap: affix.js v3.3.7
|
|
1975
2218
|
* http://getbootstrap.com/javascript/#affix
|
|
1976
2219
|
* ========================================================================
|
|
1977
|
-
* Copyright 2011-
|
|
2220
|
+
* Copyright 2011-2016 Twitter, Inc.
|
|
1978
2221
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
|
1979
2222
|
* ======================================================================== */
|
|
1980
2223
|
|
|
@@ -1993,14 +2236,14 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
1993
2236
|
.on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))
|
|
1994
2237
|
|
|
1995
2238
|
this.$element = $(element)
|
|
1996
|
-
this.affixed =
|
|
1997
|
-
this.unpin =
|
|
2239
|
+
this.affixed = null
|
|
2240
|
+
this.unpin = null
|
|
1998
2241
|
this.pinnedOffset = null
|
|
1999
2242
|
|
|
2000
2243
|
this.checkPosition()
|
|
2001
2244
|
}
|
|
2002
2245
|
|
|
2003
|
-
Affix.VERSION = '3.
|
|
2246
|
+
Affix.VERSION = '3.3.7'
|
|
2004
2247
|
|
|
2005
2248
|
Affix.RESET = 'affix affix-top affix-bottom'
|
|
2006
2249
|
|
|
@@ -2009,6 +2252,28 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
2009
2252
|
target: window
|
|
2010
2253
|
}
|
|
2011
2254
|
|
|
2255
|
+
Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {
|
|
2256
|
+
var scrollTop = this.$target.scrollTop()
|
|
2257
|
+
var position = this.$element.offset()
|
|
2258
|
+
var targetHeight = this.$target.height()
|
|
2259
|
+
|
|
2260
|
+
if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false
|
|
2261
|
+
|
|
2262
|
+
if (this.affixed == 'bottom') {
|
|
2263
|
+
if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'
|
|
2264
|
+
return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'
|
|
2265
|
+
}
|
|
2266
|
+
|
|
2267
|
+
var initializing = this.affixed == null
|
|
2268
|
+
var colliderTop = initializing ? scrollTop : position.top
|
|
2269
|
+
var colliderHeight = initializing ? targetHeight : height
|
|
2270
|
+
|
|
2271
|
+
if (offsetTop != null && scrollTop <= offsetTop) return 'top'
|
|
2272
|
+
if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'
|
|
2273
|
+
|
|
2274
|
+
return false
|
|
2275
|
+
}
|
|
2276
|
+
|
|
2012
2277
|
Affix.prototype.getPinnedOffset = function () {
|
|
2013
2278
|
if (this.pinnedOffset) return this.pinnedOffset
|
|
2014
2279
|
this.$element.removeClass(Affix.RESET).addClass('affix')
|
|
@@ -2024,42 +2289,40 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
2024
2289
|
Affix.prototype.checkPosition = function () {
|
|
2025
2290
|
if (!this.$element.is(':visible')) return
|
|
2026
2291
|
|
|
2027
|
-
var
|
|
2028
|
-
var scrollTop = this.$target.scrollTop()
|
|
2029
|
-
var position = this.$element.offset()
|
|
2292
|
+
var height = this.$element.height()
|
|
2030
2293
|
var offset = this.options.offset
|
|
2031
2294
|
var offsetTop = offset.top
|
|
2032
2295
|
var offsetBottom = offset.bottom
|
|
2296
|
+
var scrollHeight = Math.max($(document).height(), $(document.body).height())
|
|
2033
2297
|
|
|
2034
2298
|
if (typeof offset != 'object') offsetBottom = offsetTop = offset
|
|
2035
2299
|
if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)
|
|
2036
2300
|
if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)
|
|
2037
2301
|
|
|
2038
|
-
var affix = this.
|
|
2039
|
-
offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ? 'bottom' :
|
|
2040
|
-
offsetTop != null && (scrollTop <= offsetTop) ? 'top' : false
|
|
2302
|
+
var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)
|
|
2041
2303
|
|
|
2042
|
-
if (this.affixed
|
|
2043
|
-
|
|
2304
|
+
if (this.affixed != affix) {
|
|
2305
|
+
if (this.unpin != null) this.$element.css('top', '')
|
|
2044
2306
|
|
|
2045
|
-
|
|
2046
|
-
|
|
2307
|
+
var affixType = 'affix' + (affix ? '-' + affix : '')
|
|
2308
|
+
var e = $.Event(affixType + '.bs.affix')
|
|
2047
2309
|
|
|
2048
|
-
|
|
2310
|
+
this.$element.trigger(e)
|
|
2049
2311
|
|
|
2050
|
-
|
|
2312
|
+
if (e.isDefaultPrevented()) return
|
|
2051
2313
|
|
|
2052
|
-
|
|
2053
|
-
|
|
2314
|
+
this.affixed = affix
|
|
2315
|
+
this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null
|
|
2054
2316
|
|
|
2055
|
-
|
|
2056
|
-
|
|
2057
|
-
|
|
2058
|
-
|
|
2317
|
+
this.$element
|
|
2318
|
+
.removeClass(Affix.RESET)
|
|
2319
|
+
.addClass(affixType)
|
|
2320
|
+
.trigger(affixType.replace('affix', 'affixed') + '.bs.affix')
|
|
2321
|
+
}
|
|
2059
2322
|
|
|
2060
2323
|
if (affix == 'bottom') {
|
|
2061
2324
|
this.$element.offset({
|
|
2062
|
-
top: scrollHeight -
|
|
2325
|
+
top: scrollHeight - height - offsetBottom
|
|
2063
2326
|
})
|
|
2064
2327
|
}
|
|
2065
2328
|
}
|
|
@@ -2104,8 +2367,8 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|
|
2104
2367
|
|
|
2105
2368
|
data.offset = data.offset || {}
|
|
2106
2369
|
|
|
2107
|
-
if (data.offsetBottom) data.offset.bottom = data.offsetBottom
|
|
2108
|
-
if (data.offsetTop)
|
|
2370
|
+
if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom
|
|
2371
|
+
if (data.offsetTop != null) data.offset.top = data.offsetTop
|
|
2109
2372
|
|
|
2110
2373
|
Plugin.call($spy, data)
|
|
2111
2374
|
})
|