kms 0.9.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
})
|