diff options
128 files changed, 24034 insertions, 16713 deletions
diff --git a/Gruntfile.js b/Gruntfile.js index a54d4781b2..31540205e9 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -56,27 +56,64 @@ module.exports = function (grunt) { docs: 'docs/dist' }, - jshint: { - options: { - jshintrc: 'js/.jshintrc' - }, - grunt: { + // JS build configuration + + lineremover: { + es6Import: { + files: { + '<%= concat.bootstrap.dest %>': '<%= concat.bootstrap.dest %>' + }, options: { - jshintrc: 'grunt/.jshintrc' + exclusionPattern: /^(import|export)/g + } + } + }, + + babel: { + dev: { + options: { + sourceMap: true, + modules: 'ignore' }, - src: ['Gruntfile.js', 'grunt/*.js'] - }, - core: { - src: 'js/*.js' + files: { + 'js/dist/util.js' : 'js/src/util.js', + 'js/dist/alert.js' : 'js/src/alert.js', + 'js/dist/button.js' : 'js/src/button.js', + 'js/dist/carousel.js' : 'js/src/carousel.js', + 'js/dist/collapse.js' : 'js/src/collapse.js', + 'js/dist/dropdown.js' : 'js/src/dropdown.js', + 'js/dist/modal.js' : 'js/src/modal.js', + 'js/dist/scrollspy.js' : 'js/src/scrollspy.js', + 'js/dist/tab.js' : 'js/src/tab.js', + 'js/dist/tooltip.js' : 'js/src/tooltip.js', + 'js/dist/popover.js' : 'js/src/popover.js' + } }, - test: { + dist: { options: { - jshintrc: 'js/tests/unit/.jshintrc' + modules: 'ignore' }, - src: 'js/tests/unit/*.js' + files: { + '<%= concat.bootstrap.dest %>' : '<%= concat.bootstrap.dest %>' + } }, - assets: { - src: ['docs/assets/js/src/*.js', 'docs/assets/js/*.js', '!docs/assets/js/*.min.js'] + umd: { + options: { + modules: 'umd' + }, + files: { + 'dist/js/umd/util.js' : 'js/src/util.js', + 'dist/js/umd/alert.js' : 'js/src/alert.js', + 'dist/js/umd/button.js' : 'js/src/button.js', + 'dist/js/umd/carousel.js' : 'js/src/carousel.js', + 'dist/js/umd/collapse.js' : 'js/src/collapse.js', + 'dist/js/umd/dropdown.js' : 'js/src/dropdown.js', + 'dist/js/umd/modal.js' : 'js/src/modal.js', + 'dist/js/umd/scrollspy.js' : 'js/src/scrollspy.js', + 'dist/js/umd/tab.js' : 'js/src/tab.js', + 'dist/js/umd/tooltip.js' : 'js/src/tooltip.js', + 'dist/js/umd/popover.js' : 'js/src/popover.js' + } } }, @@ -85,104 +122,72 @@ module.exports = function (grunt) { config: 'js/.jscsrc' }, grunt: { - src: '<%= jshint.grunt.src %>' + src: ['Gruntfile.js', 'grunt/*.js'] }, core: { - src: '<%= jshint.core.src %>' + src: 'js/src/*.js' }, test: { - src: '<%= jshint.test.src %>' + src: 'js/tests/unit/*.js' }, assets: { options: { requireCamelCaseOrUpperCaseIdentifiers: null }, - src: '<%= jshint.assets.src %>' + src: ['docs/assets/js/src/*.js', 'docs/assets/js/*.js', '!docs/assets/js/*.min.js'] } }, - concat: { + stamp: { options: { - banner: '<%= banner %>\n<%= jqueryCheck %>\n<%= jqueryVersionCheck %>', - stripBanners: false + banner: '<%= banner %>\n<%= jqueryCheck %>\n<%= jqueryVersionCheck %>\n+function ($) {\n', + footer: '\n}(jQuery);' }, bootstrap: { - src: [ - 'js/util.js', - 'js/alert.js', - 'js/button.js', - 'js/carousel.js', - 'js/collapse.js', - 'js/dropdown.js', - 'js/modal.js', - 'js/scrollspy.js', - 'js/tooltip.js', - 'js/popover.js', - 'js/tab.js' - ], - dest: 'dist/js/<%= pkg.name %>.js' + files: { + src: '<%= concat.bootstrap.dest %>' + } } }, - closureCompiler: { - + concat: { options: { - compilerFile: require('superstartup-closure-compiler').getPath(), - checkModified: false, - - compilerOpts: { - // jscs:disable requireCamelCaseOrUpperCaseIdentifiers - // jscomp_warning: 'reportUnknownTypes', someday - maybe we will get to 100% typed, this helps track those down - compilation_level: 'ADVANCED_OPTIMIZATIONS', - warning_level: 'verbose', - summary_detail_level: 3, - output_wrapper: - '"<%= banner %><%= jqueryCheck %><%= jqueryVersionCheck %>' - + '(function($){%output%})(jQuery);"', - externs: 'js/externs/*.js' - // jscs:enable requireCamelCaseOrUpperCaseIdentifiers - }, - - execOpts: { - maxBuffer: 999999 * 1024 - }, - - // [OPTIONAL] Java VM optimization options - // see https://code.google.com/p/closure-compiler/wiki/FAQ#What_are_the_recommended_Java_VM_command-line_options? - // Setting one of these to 'true' is strongly recommended, - // and can reduce compile times by 50-80% depending on compilation size - // and hardware. - // On server-class hardware, such as with Github's Travis hook, - // TieredCompilation should be used; on standard developer hardware, - // d32 may be better. Set as appropriate for your environment. - // Default for both is 'false'; do not set both to 'true'. - d32: false, // will use 'java -client -d32 -jar compiler.jar' - TieredCompilation: false // will use 'java -server -XX:+TieredCompilation -jar compiler.jar' + stripBanners: false }, - - targetName: { + bootstrap: { src: [ - 'js/util.js', - 'js/alert.js', - 'js/button.js', - 'js/carousel.js', - 'js/collapse.js', - 'js/dropdown.js', - 'js/modal.js', - 'js/scrollspy.js', - 'js/tooltip.js', - 'js/popover.js', - 'js/tab.js' + 'js/src/util.js', + 'js/src/alert.js', + 'js/src/button.js', + 'js/src/carousel.js', + 'js/src/collapse.js', + 'js/src/dropdown.js', + 'js/src/modal.js', + 'js/src/scrollspy.js', + 'js/src/tab.js', + 'js/src/tooltip.js', + 'js/src/popover.js' ], - dest: 'dist/js/<%= pkg.name %>.min.js' + dest: 'dist/js/<%= pkg.name %>.js' } - }, uglify: { options: { + compress: { + warnings: false + }, + mangle: true, preserveComments: 'some' }, + core: { + src: '<%= concat.bootstrap.dest %>', + dest: 'dist/js/<%= pkg.name %>.min.js' + }, + customize: { + src: configBridge.paths.customizerJs, + dest: 'docs/assets/js/customize.min.js' + }, docsJs: { src: configBridge.paths.docsJs, dest: 'docs/assets/js/docs.min.js' @@ -196,6 +201,9 @@ module.exports = function (grunt) { files: 'js/tests/index.html' }, + + // CSS build configuration + scsslint: { scss: ['scss/*.scss', '!scss/_normalize.scss'], options: { @@ -335,7 +343,8 @@ module.exports = function (grunt) { 'Attribute “autocomplete” not allowed on element “input” at this point.', 'Attribute “autocomplete” not allowed on element “button” at this point.', 'Element “div” not allowed as child of element “progress” in this context. (Suppressing further errors from this subtree.)', - 'Consider using the “h1” element as a top-level heading only (all “h1” elements are treated as top-level headings by many screen readers and other tools).' + 'Consider using the “h1” element as a top-level heading only (all “h1” elements are treated as top-level headings by many screen readers and other tools).', + 'The “datetime” input type is not supported in all browsers. Please be sure to test, and consider using a polyfill.' ] }, src: '_gh_pages/**/*.html' @@ -343,12 +352,12 @@ module.exports = function (grunt) { watch: { src: { - files: '<%= jshint.core.src %>', - tasks: ['jshint:core', 'qunit', 'concat'] + files: '<%= jscs.core.src %>', + tasks: ['babel:dev'] }, test: { - files: '<%= jshint.test.src %>', - tasks: ['jshint:test', 'qunit'] + files: '<%= jscs.test.src %>', + tasks: ['qunit'] }, sass: { files: 'scss/**/*.scss', @@ -440,10 +449,10 @@ module.exports = function (grunt) { testSubtasks.push('saucelabs-qunit'); } grunt.registerTask('test', testSubtasks); - grunt.registerTask('test-js', ['jshint:core', 'jshint:test', 'jshint:grunt', 'jscs:core', 'jscs:test', 'jscs:grunt', 'qunit']); + grunt.registerTask('test-js', ['jscs:core', 'jscs:test', 'jscs:grunt', 'qunit']); // JS distribution task. - grunt.registerTask('dist-js', ['concat', 'closureCompiler', 'commonjs']); + grunt.registerTask('dist-js', ['concat', 'lineremover', 'babel:dist', 'stamp', 'uglify:core', 'commonjs']); grunt.registerTask('test-scss', ['scsslint:scss']); @@ -467,8 +476,12 @@ module.exports = function (grunt) { // This can be overzealous, so its changes should always be manually reviewed! grunt.registerTask('change-version-number', 'sed'); - grunt.registerTask('commonjs', 'Generate CommonJS entrypoint module in dist dir.', function () { - var srcFiles = grunt.config.get('concat.bootstrap.src'); + grunt.registerTask('commonjs', ['babel:umd', 'npm-js']); + + grunt.registerTask('npm-js', 'Generate npm-js entrypoint module in dist dir.', function () { + var srcFiles = Object.keys(grunt.config.get('babel.umd.files')).map(function (filename) { + return './' + path.join('umd', path.basename(filename)) + }) var destFilepath = 'dist/js/npm.js'; generateCommonJSModule(grunt, srcFiles, destFilepath); }); @@ -476,7 +489,7 @@ module.exports = function (grunt) { // Docs task. grunt.registerTask('docs-css', ['autoprefixer:docs', 'autoprefixer:examples', 'csscomb:docs', 'csscomb:examples', 'cssmin:docs']); grunt.registerTask('docs-js', ['uglify:docsJs']); - grunt.registerTask('lint-docs-js', ['jshint:assets', 'jscs:assets']); + grunt.registerTask('lint-docs-js', ['jscs:assets']); grunt.registerTask('docs', ['docs-css', 'docs-js', 'lint-docs-js', 'clean:docs', 'copy:docs']); grunt.registerTask('docs-github', ['jekyll:github']); diff --git a/dist/css/bootstrap.css b/dist/css/bootstrap.css index a640440a58..ce6b052989 100644 --- a/dist/css/bootstrap.css +++ b/dist/css/bootstrap.css @@ -15,11 +15,26 @@ body { margin: 0; } -article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary { +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { display: block; } -audio, canvas, progress, video { +audio, +canvas, +progress, +video { display: inline-block; vertical-align: baseline; } @@ -29,7 +44,8 @@ audio:not([controls]) { height: 0; } -[hidden], template { +[hidden], +template { display: none; } @@ -40,6 +56,7 @@ a { a:active { outline: 0; } + a:hover { outline: 0; } @@ -48,7 +65,8 @@ abbr[title] { border-bottom: 1px dotted; } -b, strong { +b, +strong { font-weight: bold; } @@ -70,7 +88,8 @@ small { font-size: 80%; } -sub, sup { +sub, +sup { position: relative; font-size: 75%; line-height: 0; @@ -107,12 +126,19 @@ pre { overflow: auto; } -code, kbd, pre, samp { +code, +kbd, +pre, +samp { font-family: monospace, monospace; font-size: 1em; } -button, input, optgroup, select, textarea { +button, +input, +optgroup, +select, +textarea { margin: 0; font: inherit; color: inherit; @@ -122,20 +148,25 @@ button { overflow: visible; } -button, select { +button, +select { text-transform: none; } -button, html input[type="button"], input[type="reset"], input[type="submit"] { +button, +html input[type="button"], input[type="reset"], +input[type="submit"] { -webkit-appearance: button; cursor: pointer; } -button[disabled], html input[disabled] { +button[disabled], +html input[disabled] { cursor: default; } -button::-moz-focus-inner, input::-moz-focus-inner { +button::-moz-focus-inner, +input::-moz-focus-inner { padding: 0; border: 0; } @@ -144,13 +175,15 @@ input { line-height: normal; } -input[type="checkbox"], input[type="radio"] { +input[type="checkbox"], +input[type="radio"] { -webkit-box-sizing: border-box; box-sizing: border-box; padding: 0; } -input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button { +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { height: auto; } @@ -160,7 +193,8 @@ input[type="search"] { -webkit-appearance: textfield; } -input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; } @@ -188,23 +222,28 @@ table { border-collapse: collapse; } -td, th { +td, +th { padding: 0; } @media print { - *, *:before, *:after { + *, + *:before, + *:after { text-shadow: none !important; -webkit-box-shadow: none !important; box-shadow: none !important; } - a, a:visited { + a, + a:visited { text-decoration: underline; } abbr[title]:after { content: " (" attr(title) ")"; } - pre, blockquote { + pre, + blockquote { border: 1px solid #999; page-break-inside: avoid; @@ -212,23 +251,28 @@ td, th { thead { display: table-header-group; } - tr, img { + tr, + img { page-break-inside: avoid; } img { max-width: 100% !important; } - p, h2, h3 { + p, + h2, + h3 { orphans: 3; widows: 3; } - h2, h3 { + h2, + h3 { page-break-after: avoid; } .navbar { display: none; } - .btn > .caret, .dropup > .btn > .caret { + .btn > .caret, + .dropup > .btn > .caret { border-top-color: #000 !important; } .label { @@ -237,10 +281,12 @@ td, th { .table { border-collapse: collapse !important; } - .table td, .table th { + .table td, + .table th { background-color: #fff !important; } - .table-bordered th, .table-bordered td { + .table-bordered th, + .table-bordered td { border: 1px solid #ddd !important; } } @@ -250,27 +296,27 @@ html { box-sizing: border-box; } -*, *:before, *:after { +*, +*:before, +*:after { -webkit-box-sizing: inherit; box-sizing: inherit; } -@at-root { - @-moz-viewport { - width: device-width; - } +@-moz-viewport { + width: device-width; +} - @-ms-viewport { - width: device-width; - } +@-ms-viewport { + width: device-width; +} - @-webkit-viewport { - width: device-width; - } +@-webkit-viewport { + width: device-width; +} - @viewport { - width: device-width; - } +@viewport { + width: device-width; } html { @@ -297,7 +343,8 @@ p { margin-bottom: 1rem; } -abbr[title], abbr[data-original-title] { +abbr[title], +abbr[data-original-title] { cursor: help; border-bottom: 1px dotted #818a91; } @@ -308,12 +355,17 @@ address { line-height: inherit; } -ol, ul, dl { +ol, +ul, +dl { margin-top: 0; margin-bottom: 1rem; } -ol ol, ul ul, ol ul, ul ol { +ol ol, +ul ul, +ol ul, +ul ol { margin-bottom: 0; } @@ -322,7 +374,7 @@ dt { } dd { - margin-bottom: .5rem; + margin-bottom: .5rem; margin-left: 0; } @@ -334,7 +386,8 @@ a { color: #0275d8; text-decoration: none; } -a:focus, a:hover { +a:focus, + a:hover { color: #014c8c; text-decoration: underline; } @@ -369,7 +422,7 @@ caption { padding-top: .75rem; padding-bottom: .75rem; color: #818a91; - text-align: left; + text-align: left; caption-side: bottom; } @@ -382,7 +435,10 @@ label { margin-bottom: .5rem; } -input, button, select, textarea { +input, +button, +select, +textarea { margin: 0; line-height: inherit; } @@ -392,7 +448,7 @@ textarea { } fieldset { - min-width: 0; + min-width: 0; padding: 0; margin: 0; border: 0; @@ -415,29 +471,63 @@ output { display: inline-block; } -h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { +h1, h2, h3, h4, h5, h6, +.h1, .h2, .h3, .h4, .h5, .h6 { font-family: inherit; font-weight: 500; line-height: 1.1; color: inherit; } -h1 small, h1 .small, h2 small, h2 .small, h3 small, h3 .small, h4 small, h4 .small, h5 small, h5 .small, h6 small, h6 .small, .h1 small, .h1 .small, .h2 small, .h2 .small, .h3 small, .h3 .small, .h4 small, .h4 .small, .h5 small, .h5 .small, .h6 small, .h6 .small { +h1 small, + h1 .small, h2 small, + h2 .small, h3 small, + h3 .small, h4 small, + h4 .small, h5 small, + h5 .small, h6 small, + h6 .small, + .h1 small, + .h1 .small, .h2 small, + .h2 .small, .h3 small, + .h3 .small, .h4 small, + .h4 .small, .h5 small, + .h5 .small, .h6 small, + .h6 .small { font-weight: normal; line-height: 1; color: #818a91; } -h1, .h1, h2, .h2, h3, .h3 { +h1, .h1, +h2, .h2, +h3, .h3 { margin-bottom: .5rem; } -h1 small, h1 .small, .h1 small, .h1 .small, h2 small, h2 .small, .h2 small, .h2 .small, h3 small, h3 .small, .h3 small, .h3 .small { +h1 small, + h1 .small, .h1 small, + .h1 .small, + h2 small, + h2 .small, .h2 small, + .h2 .small, + h3 small, + h3 .small, .h3 small, + .h3 .small { font-size: 65%; } -h4, .h4, h5, .h5, h6, .h6 { +h4, .h4, +h5, .h5, +h6, .h6 { margin-bottom: .5rem; } -h4 small, h4 .small, .h4 small, .h4 .small, h5 small, h5 .small, .h5 small, .h5 .small, h6 small, h6 .small, .h6 small, .h6 .small { +h4 small, + h4 .small, .h4 small, + .h4 .small, + h5 small, + h5 .small, .h5 small, + .h5 .small, + h6 small, + h6 .small, .h6 small, + .h6 .small { font-size: 75%; } @@ -477,11 +567,13 @@ hr { border-top: .0625rem solid #eceeef; } -small, .small { +small, +.small { font-size: 85%; } -mark, .mark { +mark, +.mark { padding: .2em; background-color: #fcf8e3; } @@ -506,7 +598,8 @@ mark, .mark { margin-right: -1.5rem; margin-left: -1.5rem; } -.dl-horizontal:before, .dl-horizontal:after { +.dl-horizontal:before, + .dl-horizontal:after { display: table; content: " "; } @@ -525,7 +618,9 @@ mark, .mark { font-size: 1.25rem; border-left: .25rem solid #eceeef; } -.blockquote p:last-child, .blockquote ul:last-child, .blockquote ol:last-child { +.blockquote p:last-child, + .blockquote ul:last-child, + .blockquote ol:last-child { margin-bottom: 0; } .blockquote footer { @@ -552,7 +647,8 @@ mark, .mark { content: "\00A0 \2014"; } -.img-responsive, .carousel-inner > .carousel-item > img, .carousel-inner > .carousel-item > a > img { +.img-responsive, .carousel-inner > .carousel-item > img, +.carousel-inner > .carousel-item > a > img { display: block; max-width: 100%; height: auto; @@ -580,7 +676,10 @@ mark, .mark { border-radius: 50%; } -code, kbd, pre, samp { +code, +kbd, +pre, +samp { font-family: Menlo, Monaco, Consolas, "Courier New", monospace; } @@ -632,7 +731,8 @@ pre code { margin-right: auto; margin-left: auto; } -.container:before, .container:after { +.container:before, + .container:after { display: table; content: " "; } @@ -666,7 +766,8 @@ pre code { margin-right: auto; margin-left: auto; } -.container-fluid:before, .container-fluid:after { +.container-fluid:before, + .container-fluid:after { display: table; content: " "; } @@ -678,7 +779,8 @@ pre code { margin-right: -.75rem; margin-left: -.75rem; } -.row:before, .row:after { +.row:before, + .row:after { display: table; content: " "; } @@ -1542,7 +1644,8 @@ pre code { max-width: 100%; margin-bottom: 1rem; } -.table th, .table td { +.table th, + .table td { padding: .75rem; line-height: 1.5; vertical-align: top; @@ -1559,17 +1662,20 @@ pre code { background-color: #fff; } -.table-sm th, .table-sm td { +.table-sm th, +.table-sm td { padding: .3rem; } .table-bordered { border: 1px solid #eceeef; } -.table-bordered th, .table-bordered td { +.table-bordered th, + .table-bordered td { border: 1px solid #eceeef; } -.table-bordered thead th, .table-bordered thead td { +.table-bordered thead th, + .table-bordered thead td { border-bottom-width: 2px; } @@ -1581,58 +1687,73 @@ pre code { background-color: #f5f5f5; } -.table-active, .table-active > th, .table-active > td { +.table-active, +.table-active > th, +.table-active > td { background-color: #f5f5f5; } .table-hover .table-active:hover { background-color: #e8e8e8; } -.table-hover .table-active:hover > td, .table-hover .table-active:hover > th { +.table-hover .table-active:hover > td, + .table-hover .table-active:hover > th { background-color: #e8e8e8; } -.table-success, .table-success > th, .table-success > td { +.table-success, +.table-success > th, +.table-success > td { background-color: #dff0d8; } .table-hover .table-success:hover { background-color: #d0e9c6; } -.table-hover .table-success:hover > td, .table-hover .table-success:hover > th { +.table-hover .table-success:hover > td, + .table-hover .table-success:hover > th { background-color: #d0e9c6; } -.table-info, .table-info > th, .table-info > td { +.table-info, +.table-info > th, +.table-info > td { background-color: #d9edf7; } .table-hover .table-info:hover { background-color: #c4e3f3; } -.table-hover .table-info:hover > td, .table-hover .table-info:hover > th { +.table-hover .table-info:hover > td, + .table-hover .table-info:hover > th { background-color: #c4e3f3; } -.table-warning, .table-warning > th, .table-warning > td { +.table-warning, +.table-warning > th, +.table-warning > td { background-color: #fcf8e3; } .table-hover .table-warning:hover { background-color: #faf2cc; } -.table-hover .table-warning:hover > td, .table-hover .table-warning:hover > th { +.table-hover .table-warning:hover > td, + .table-hover .table-warning:hover > th { background-color: #faf2cc; } -.table-danger, .table-danger > th, .table-danger > td { +.table-danger, +.table-danger > th, +.table-danger > td { background-color: #f2dede; } .table-hover .table-danger:hover { background-color: #ebcccc; } -.table-hover .table-danger:hover > td, .table-hover .table-danger:hover > th { +.table-hover .table-danger:hover > td, + .table-hover .table-danger:hover > th { background-color: #ebcccc; } @@ -1659,31 +1780,45 @@ pre code { .table-inverse.table-bordered { border: 0; } -.table-inverse th, .table-inverse td, .table-inverse thead th { +.table-inverse th, + .table-inverse td, + .table-inverse thead th { border-color: #55595c; } .table-reflow thead { float: left; } + .table-reflow tbody { display: block; white-space: nowrap; } -.table-reflow th, .table-reflow td { + +.table-reflow th, +.table-reflow td { border-top: 1px solid #eceeef; border-left: 1px solid #eceeef; } -.table-reflow th:last-child, .table-reflow td:last-child { +.table-reflow th:last-child, + .table-reflow td:last-child { border-right: 1px solid #eceeef; } -.table-reflow thead:last-child tr:last-child th, .table-reflow thead:last-child tr:last-child td, .table-reflow tbody:last-child tr:last-child th, .table-reflow tbody:last-child tr:last-child td, .table-reflow tfoot:last-child tr:last-child th, .table-reflow tfoot:last-child tr:last-child td { + +.table-reflow thead:last-child tr:last-child th, +.table-reflow thead:last-child tr:last-child td, +.table-reflow tbody:last-child tr:last-child th, +.table-reflow tbody:last-child tr:last-child td, +.table-reflow tfoot:last-child tr:last-child th, +.table-reflow tfoot:last-child tr:last-child td { border-bottom: 1px solid #eceeef; } + .table-reflow tr { float: left; } -.table-reflow tr th, .table-reflow tr td { +.table-reflow tr th, + .table-reflow tr td { display: block !important; border: 1px solid #eceeef; } @@ -1703,7 +1838,9 @@ pre code { -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; } -.form-control:not(textarea), .form-control:not(select[size]), .form-control:not(select[multiple]) { +.form-control:not(textarea), + .form-control:not(select[size]), + .form-control:not(select[multiple]) { height: 2.625rem; } .form-control:focus { @@ -1726,15 +1863,19 @@ pre code { color: #999; opacity: 1; } -.form-control:disabled, .form-control[readonly], fieldset[disabled] .form-control { +.form-control:disabled, + .form-control[readonly], + fieldset[disabled] .form-control { background-color: #eceeef; opacity: 1; } -.form-control[disabled], fieldset[disabled] .form-control { - cursor: false; +.form-control[disabled], + fieldset[disabled] .form-control { + cursor: not-allowed; } -.form-control-file, .form-control-range { +.form-control-file, +.form-control-range { display: block; } @@ -1749,12 +1890,20 @@ pre code { padding-bottom: .5625rem; margin-bottom: 0; } -.form-control-static.form-control-sm, .input-group-sm > .form-control-static.form-control, .input-group-sm > .form-control-static.input-group-addon, .input-group-sm > .input-group-btn > .form-control-static.btn, .form-control-static.form-control-lg, .input-group-lg > .form-control-static.form-control, .input-group-lg > .form-control-static.input-group-addon, .input-group-lg > .input-group-btn > .form-control-static.btn { +.form-control-static.form-control-sm, + .input-group-sm > .form-control-static.form-control, + .input-group-sm > .form-control-static.input-group-addon, + .input-group-sm > .input-group-btn > .form-control-static.btn, + .form-control-static.form-control-lg, .input-group-lg > .form-control-static.form-control, + .input-group-lg > .form-control-static.input-group-addon, + .input-group-lg > .input-group-btn > .form-control-static.btn { padding-right: 0; padding-left: 0; } -.form-control-sm, .input-group-sm > .form-control, .input-group-sm > .input-group-addon, .input-group-sm > .input-group-btn > .btn { +.form-control-sm, .input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { height: 2rem; padding: .3rem .75rem; font-size: .85rem; @@ -1762,7 +1911,9 @@ pre code { border-radius: .2rem; } -.form-control-lg, .input-group-lg > .form-control, .input-group-lg > .input-group-addon, .input-group-lg > .input-group-btn > .btn { +.form-control-lg, .input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { height: 3.291667rem; padding: .75rem 1.5rem; font-size: 1.25rem; @@ -1774,32 +1925,40 @@ pre code { margin-bottom: 15px; } -.radio, .checkbox { +.radio, +.checkbox { position: relative; display: block; margin-bottom: .75rem; } -.radio label, .checkbox label { +.radio label, + .checkbox label { padding-left: 1.25rem; margin-bottom: 0; font-weight: normal; cursor: pointer; } -.radio label input:only-child, .checkbox label input:only-child { +.radio label input:only-child, + .checkbox label input:only-child { position: static; } -.radio input[type="radio"], .radio-inline input[type="radio"], .checkbox input[type="checkbox"], .checkbox-inline input[type="checkbox"] { +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { position: absolute; margin-top: .25rem; margin-left: -1.25rem; } -.radio + .radio, .checkbox + .checkbox { +.radio + .radio, +.checkbox + .checkbox { margin-top: -.25rem; } -.radio-inline, .checkbox-inline { +.radio-inline, +.checkbox-inline { position: relative; display: inline-block; padding-left: 1.25rem; @@ -1809,21 +1968,33 @@ pre code { cursor: pointer; } -.radio-inline + .radio-inline, .checkbox-inline + .checkbox-inline { +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { margin-top: 0; margin-left: .75rem; } -input[type="radio"]:disabled, input[type="radio"].disabled, fieldset[disabled] input[type="radio"], input[type="checkbox"]:disabled, input[type="checkbox"].disabled, fieldset[disabled] input[type="checkbox"] { - cursor: false; +input[type="radio"]:disabled, +input[type="radio"].disabled, +fieldset[disabled] input[type="radio"], +input[type="checkbox"]:disabled, +input[type="checkbox"].disabled, +fieldset[disabled] input[type="checkbox"] { + cursor: not-allowed; } -.radio-inline.disabled, fieldset[disabled] .radio-inline, .checkbox-inline.disabled, fieldset[disabled] .checkbox-inline { - cursor: false; +.radio-inline.disabled, +fieldset[disabled] .radio-inline, +.checkbox-inline.disabled, +fieldset[disabled] .checkbox-inline { + cursor: not-allowed; } -.radio.disabled label, fieldset[disabled] .radio label, .checkbox.disabled label, fieldset[disabled] .checkbox label { - cursor: false; +.radio.disabled label, +fieldset[disabled] .radio label, +.checkbox.disabled label, +fieldset[disabled] .checkbox label { + cursor: not-allowed; } .has-feedback { @@ -1846,68 +2017,106 @@ input[type="radio"]:disabled, input[type="radio"].disabled, fieldset[disabled] i pointer-events: none; } -.input-lg + .form-control-feedback, .input-group-lg + .form-control-feedback { +.input-lg + .form-control-feedback, +.input-group-lg + .form-control-feedback { width: 3.291667rem; height: 3.291667rem; line-height: 3.291667rem; } -.input-sm + .form-control-feedback, .input-group-sm + .form-control-feedback { +.input-sm + .form-control-feedback, +.input-group-sm + .form-control-feedback { width: 2rem; height: 2rem; line-height: 2rem; } -.has-success .help-block, .has-success .control-label, .has-success .radio, .has-success .checkbox, .has-success .radio-inline, .has-success .checkbox-inline, .has-success.radio label, .has-success.checkbox label, .has-success.radio-inline label, .has-success.checkbox-inline label { +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline, +.has-success.radio label, +.has-success.checkbox label, +.has-success.radio-inline label, +.has-success.checkbox-inline label { color: #3c763d; } + .has-success .form-control { border-color: #3c763d; } .has-success .form-control:focus { border-color: #2b542c; } + .has-success .input-group-addon { color: #3c763d; background-color: #dff0d8; border-color: #3c763d; } + .has-success .form-control-feedback { color: #3c763d; } -.has-warning .help-block, .has-warning .control-label, .has-warning .radio, .has-warning .checkbox, .has-warning .radio-inline, .has-warning .checkbox-inline, .has-warning.radio label, .has-warning.checkbox label, .has-warning.radio-inline label, .has-warning.checkbox-inline label { +.has-warning .help-block, +.has-warning .control-label, +.has-warning .radio, +.has-warning .checkbox, +.has-warning .radio-inline, +.has-warning .checkbox-inline, +.has-warning.radio label, +.has-warning.checkbox label, +.has-warning.radio-inline label, +.has-warning.checkbox-inline label { color: #8a6d3b; } + .has-warning .form-control { border-color: #8a6d3b; } .has-warning .form-control:focus { border-color: #66512c; } + .has-warning .input-group-addon { color: #8a6d3b; background-color: #fcf8e3; border-color: #8a6d3b; } + .has-warning .form-control-feedback { color: #8a6d3b; } -.has-error .help-block, .has-error .control-label, .has-error .radio, .has-error .checkbox, .has-error .radio-inline, .has-error .checkbox-inline, .has-error.radio label, .has-error.checkbox label, .has-error.radio-inline label, .has-error.checkbox-inline label { +.has-error .help-block, +.has-error .control-label, +.has-error .radio, +.has-error .checkbox, +.has-error .radio-inline, +.has-error .checkbox-inline, +.has-error.radio label, +.has-error.checkbox label, +.has-error.radio-inline label, +.has-error.checkbox-inline label { color: #a94442; } + .has-error .form-control { border-color: #a94442; } .has-error .form-control:focus { border-color: #843534; } + .has-error .input-group-addon { color: #a94442; background-color: #f2dede; border-color: #a94442; } + .has-error .form-control-feedback { color: #a94442; } @@ -1915,6 +2124,7 @@ input[type="radio"]:disabled, input[type="radio"].disabled, fieldset[disabled] i .has-feedback label ~ .form-control-feedback { top: 6; } + .has-feedback label.sr-only ~ .form-control-feedback { top: 0; } @@ -1944,7 +2154,9 @@ input[type="radio"]:disabled, input[type="radio"].disabled, fieldset[disabled] i display: inline-table; vertical-align: middle; } - .form-inline .input-group .input-group-addon, .form-inline .input-group .input-group-btn, .form-inline .input-group .form-control { + .form-inline .input-group .input-group-addon, + .form-inline .input-group .input-group-btn, + .form-inline .input-group .form-control { width: auto; } .form-inline .input-group > .form-control { @@ -1954,16 +2166,19 @@ input[type="radio"]:disabled, input[type="radio"].disabled, fieldset[disabled] i margin-bottom: 0; vertical-align: middle; } - .form-inline .radio, .form-inline .checkbox { + .form-inline .radio, + .form-inline .checkbox { display: inline-block; margin-top: 0; margin-bottom: 0; vertical-align: middle; } - .form-inline .radio label, .form-inline .checkbox label { + .form-inline .radio label, + .form-inline .checkbox label { padding-left: 0; } - .form-inline .radio input[type="radio"], .form-inline .checkbox input[type="checkbox"] { + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { position: relative; margin-left: 0; } @@ -1994,27 +2209,37 @@ input[type="radio"]:disabled, input[type="radio"].disabled, fieldset[disabled] i -o-transition: all .2s ease-in-out; transition: all .2s ease-in-out; } -.btn:focus, .btn.focus, .btn:active:focus, .btn:active.focus, .btn.active:focus, .btn.active.focus { +.btn:focus, + .btn.focus, + .btn:active:focus, + .btn:active.focus, + .btn.active:focus, + .btn.active.focus { outline: thin dotted; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } -.btn:focus, .btn:hover { +.btn:focus, + .btn:hover { text-decoration: none; } .btn.focus { text-decoration: none; } -.btn:active, .btn.active { +.btn:active, + .btn.active { background-image: none; outline: 0; } -.btn.disabled, .btn:disabled, fieldset[disabled] .btn { - cursor: false; +.btn.disabled, + .btn:disabled, + fieldset[disabled] .btn { + cursor: not-allowed; opacity: .65; } -a.btn.disaabled, fieldset[disabled] a.btn { +a.btn.disaabled, +fieldset[disabled] a.btn { pointer-events: none; } @@ -2023,7 +2248,11 @@ a.btn.disaabled, fieldset[disabled] a.btn { background-color: #0275d8; border-color: #0267bf; } -.btn-primary:focus, .btn-primary.focus, .btn-primary:active, .btn-primary.active, .open > .btn-primary.dropdown-toggle { +.btn-primary:focus, + .btn-primary.focus, + .btn-primary:active, + .btn-primary.active, + .open > .btn-primary.dropdown-toggle { color: #fff; background-color: #025aa5; border-color: #014682; @@ -2033,14 +2262,32 @@ a.btn.disaabled, fieldset[disabled] a.btn { background-color: #025aa5; border-color: #014682; } -.btn-primary:active, .btn-primary.active, .open > .btn-primary.dropdown-toggle { +.btn-primary:active, + .btn-primary.active, + .open > .btn-primary.dropdown-toggle { background-image: none; } -.btn-primary.disabled, .btn-primary.disabled:focus, .btn-primary.disabled.focus, .btn-primary.disabled:active, .btn-primary.disabled.active, .btn-primary:disabled, .btn-primary:disabled:focus, .btn-primary:disabled.focus, .btn-primary:disabled:active, .btn-primary:disabled.active, fieldset[disabled] .btn-primary, fieldset[disabled] .btn-primary:focus, fieldset[disabled] .btn-primary.focus, fieldset[disabled] .btn-primary:active, fieldset[disabled] .btn-primary.active { +.btn-primary.disabled, + .btn-primary.disabled:focus, + .btn-primary.disabled.focus, + .btn-primary.disabled:active, + .btn-primary.disabled.active, + .btn-primary:disabled, + .btn-primary:disabled:focus, + .btn-primary:disabled.focus, + .btn-primary:disabled:active, + .btn-primary:disabled.active, + fieldset[disabled] .btn-primary, + fieldset[disabled] .btn-primary:focus, + fieldset[disabled] .btn-primary.focus, + fieldset[disabled] .btn-primary:active, + fieldset[disabled] .btn-primary.active { background-color: #0275d8; border-color: #0267bf; } -.btn-primary.disabled:hover, .btn-primary:disabled:hover, fieldset[disabled] .btn-primary:hover { +.btn-primary.disabled:hover, + .btn-primary:disabled:hover, + fieldset[disabled] .btn-primary:hover { background-color: #0275d8; border-color: #0267bf; } @@ -2054,7 +2301,11 @@ a.btn.disaabled, fieldset[disabled] a.btn { background-color: #fff; border-color: #ccc; } -.btn-secondary:focus, .btn-secondary.focus, .btn-secondary:active, .btn-secondary.active, .open > .btn-secondary.dropdown-toggle { +.btn-secondary:focus, + .btn-secondary.focus, + .btn-secondary:active, + .btn-secondary.active, + .open > .btn-secondary.dropdown-toggle { color: #373a3c; background-color: #e6e6e6; border-color: #adadad; @@ -2064,14 +2315,32 @@ a.btn.disaabled, fieldset[disabled] a.btn { background-color: #e6e6e6; border-color: #adadad; } -.btn-secondary:active, .btn-secondary.active, .open > .btn-secondary.dropdown-toggle { +.btn-secondary:active, + .btn-secondary.active, + .open > .btn-secondary.dropdown-toggle { background-image: none; } -.btn-secondary.disabled, .btn-secondary.disabled:focus, .btn-secondary.disabled.focus, .btn-secondary.disabled:active, .btn-secondary.disabled.active, .btn-secondary:disabled, .btn-secondary:disabled:focus, .btn-secondary:disabled.focus, .btn-secondary:disabled:active, .btn-secondary:disabled.active, fieldset[disabled] .btn-secondary, fieldset[disabled] .btn-secondary:focus, fieldset[disabled] .btn-secondary.focus, fieldset[disabled] .btn-secondary:active, fieldset[disabled] .btn-secondary.active { +.btn-secondary.disabled, + .btn-secondary.disabled:focus, + .btn-secondary.disabled.focus, + .btn-secondary.disabled:active, + .btn-secondary.disabled.active, + .btn-secondary:disabled, + .btn-secondary:disabled:focus, + .btn-secondary:disabled.focus, + .btn-secondary:disabled:active, + .btn-secondary:disabled.active, + fieldset[disabled] .btn-secondary, + fieldset[disabled] .btn-secondary:focus, + fieldset[disabled] .btn-secondary.focus, + fieldset[disabled] .btn-secondary:active, + fieldset[disabled] .btn-secondary.active { background-color: #fff; border-color: #ccc; } -.btn-secondary.disabled:hover, .btn-secondary:disabled:hover, fieldset[disabled] .btn-secondary:hover { +.btn-secondary.disabled:hover, + .btn-secondary:disabled:hover, + fieldset[disabled] .btn-secondary:hover { background-color: #fff; border-color: #ccc; } @@ -2085,7 +2354,11 @@ a.btn.disaabled, fieldset[disabled] a.btn { background-color: #5bc0de; border-color: #46b8da; } -.btn-info:focus, .btn-info.focus, .btn-info:active, .btn-info.active, .open > .btn-info.dropdown-toggle { +.btn-info:focus, + .btn-info.focus, + .btn-info:active, + .btn-info.active, + .open > .btn-info.dropdown-toggle { color: #fff; background-color: #31b0d5; border-color: #269abc; @@ -2095,14 +2368,32 @@ a.btn.disaabled, fieldset[disabled] a.btn { background-color: #31b0d5; border-color: #269abc; } -.btn-info:active, .btn-info.active, .open > .btn-info.dropdown-toggle { +.btn-info:active, + .btn-info.active, + .open > .btn-info.dropdown-toggle { background-image: none; } -.btn-info.disabled, .btn-info.disabled:focus, .btn-info.disabled.focus, .btn-info.disabled:active, .btn-info.disabled.active, .btn-info:disabled, .btn-info:disabled:focus, .btn-info:disabled.focus, .btn-info:disabled:active, .btn-info:disabled.active, fieldset[disabled] .btn-info, fieldset[disabled] .btn-info:focus, fieldset[disabled] .btn-info.focus, fieldset[disabled] .btn-info:active, fieldset[disabled] .btn-info.active { +.btn-info.disabled, + .btn-info.disabled:focus, + .btn-info.disabled.focus, + .btn-info.disabled:active, + .btn-info.disabled.active, + .btn-info:disabled, + .btn-info:disabled:focus, + .btn-info:disabled.focus, + .btn-info:disabled:active, + .btn-info:disabled.active, + fieldset[disabled] .btn-info, + fieldset[disabled] .btn-info:focus, + fieldset[disabled] .btn-info.focus, + fieldset[disabled] .btn-info:active, + fieldset[disabled] .btn-info.active { background-color: #5bc0de; border-color: #46b8da; } -.btn-info.disabled:hover, .btn-info:disabled:hover, fieldset[disabled] .btn-info:hover { +.btn-info.disabled:hover, + .btn-info:disabled:hover, + fieldset[disabled] .btn-info:hover { background-color: #5bc0de; border-color: #46b8da; } @@ -2116,7 +2407,11 @@ a.btn.disaabled, fieldset[disabled] a.btn { background-color: #5cb85c; border-color: #4cae4c; } -.btn-success:focus, .btn-success.focus, .btn-success:active, .btn-success.active, .open > .btn-success.dropdown-toggle { +.btn-success:focus, + .btn-success.focus, + .btn-success:active, + .btn-success.active, + .open > .btn-success.dropdown-toggle { color: #fff; background-color: #449d44; border-color: #398439; @@ -2126,14 +2421,32 @@ a.btn.disaabled, fieldset[disabled] a.btn { background-color: #449d44; border-color: #398439; } -.btn-success:active, .btn-success.active, .open > .btn-success.dropdown-toggle { +.btn-success:active, + .btn-success.active, + .open > .btn-success.dropdown-toggle { background-image: none; } -.btn-success.disabled, .btn-success.disabled:focus, .btn-success.disabled.focus, .btn-success.disabled:active, .btn-success.disabled.active, .btn-success:disabled, .btn-success:disabled:focus, .btn-success:disabled.focus, .btn-success:disabled:active, .btn-success:disabled.active, fieldset[disabled] .btn-success, fieldset[disabled] .btn-success:focus, fieldset[disabled] .btn-success.focus, fieldset[disabled] .btn-success:active, fieldset[disabled] .btn-success.active { +.btn-success.disabled, + .btn-success.disabled:focus, + .btn-success.disabled.focus, + .btn-success.disabled:active, + .btn-success.disabled.active, + .btn-success:disabled, + .btn-success:disabled:focus, + .btn-success:disabled.focus, + .btn-success:disabled:active, + .btn-success:disabled.active, + fieldset[disabled] .btn-success, + fieldset[disabled] .btn-success:focus, + fieldset[disabled] .btn-success.focus, + fieldset[disabled] .btn-success:active, + fieldset[disabled] .btn-success.active { background-color: #5cb85c; border-color: #4cae4c; } -.btn-success.disabled:hover, .btn-success:disabled:hover, fieldset[disabled] .btn-success:hover { +.btn-success.disabled:hover, + .btn-success:disabled:hover, + fieldset[disabled] .btn-success:hover { background-color: #5cb85c; border-color: #4cae4c; } @@ -2147,7 +2460,11 @@ a.btn.disaabled, fieldset[disabled] a.btn { background-color: #f0ad4e; border-color: #eea236; } -.btn-warning:focus, .btn-warning.focus, .btn-warning:active, .btn-warning.active, .open > .btn-warning.dropdown-toggle { +.btn-warning:focus, + .btn-warning.focus, + .btn-warning:active, + .btn-warning.active, + .open > .btn-warning.dropdown-toggle { color: #fff; background-color: #ec971f; border-color: #d58512; @@ -2157,14 +2474,32 @@ a.btn.disaabled, fieldset[disabled] a.btn { background-color: #ec971f; border-color: #d58512; } -.btn-warning:active, .btn-warning.active, .open > .btn-warning.dropdown-toggle { +.btn-warning:active, + .btn-warning.active, + .open > .btn-warning.dropdown-toggle { background-image: none; } -.btn-warning.disabled, .btn-warning.disabled:focus, .btn-warning.disabled.focus, .btn-warning.disabled:active, .btn-warning.disabled.active, .btn-warning:disabled, .btn-warning:disabled:focus, .btn-warning:disabled.focus, .btn-warning:disabled:active, .btn-warning:disabled.active, fieldset[disabled] .btn-warning, fieldset[disabled] .btn-warning:focus, fieldset[disabled] .btn-warning.focus, fieldset[disabled] .btn-warning:active, fieldset[disabled] .btn-warning.active { +.btn-warning.disabled, + .btn-warning.disabled:focus, + .btn-warning.disabled.focus, + .btn-warning.disabled:active, + .btn-warning.disabled.active, + .btn-warning:disabled, + .btn-warning:disabled:focus, + .btn-warning:disabled.focus, + .btn-warning:disabled:active, + .btn-warning:disabled.active, + fieldset[disabled] .btn-warning, + fieldset[disabled] .btn-warning:focus, + fieldset[disabled] .btn-warning.focus, + fieldset[disabled] .btn-warning:active, + fieldset[disabled] .btn-warning.active { background-color: #f0ad4e; border-color: #eea236; } -.btn-warning.disabled:hover, .btn-warning:disabled:hover, fieldset[disabled] .btn-warning:hover { +.btn-warning.disabled:hover, + .btn-warning:disabled:hover, + fieldset[disabled] .btn-warning:hover { background-color: #f0ad4e; border-color: #eea236; } @@ -2178,7 +2513,11 @@ a.btn.disaabled, fieldset[disabled] a.btn { background-color: #d9534f; border-color: #d43f3a; } -.btn-danger:focus, .btn-danger.focus, .btn-danger:active, .btn-danger.active, .open > .btn-danger.dropdown-toggle { +.btn-danger:focus, + .btn-danger.focus, + .btn-danger:active, + .btn-danger.active, + .open > .btn-danger.dropdown-toggle { color: #fff; background-color: #c9302c; border-color: #ac2925; @@ -2188,14 +2527,32 @@ a.btn.disaabled, fieldset[disabled] a.btn { background-color: #c9302c; border-color: #ac2925; } -.btn-danger:active, .btn-danger.active, .open > .btn-danger.dropdown-toggle { +.btn-danger:active, + .btn-danger.active, + .open > .btn-danger.dropdown-toggle { background-image: none; } -.btn-danger.disabled, .btn-danger.disabled:focus, .btn-danger.disabled.focus, .btn-danger.disabled:active, .btn-danger.disabled.active, .btn-danger:disabled, .btn-danger:disabled:focus, .btn-danger:disabled.focus, .btn-danger:disabled:active, .btn-danger:disabled.active, fieldset[disabled] .btn-danger, fieldset[disabled] .btn-danger:focus, fieldset[disabled] .btn-danger.focus, fieldset[disabled] .btn-danger:active, fieldset[disabled] .btn-danger.active { +.btn-danger.disabled, + .btn-danger.disabled:focus, + .btn-danger.disabled.focus, + .btn-danger.disabled:active, + .btn-danger.disabled.active, + .btn-danger:disabled, + .btn-danger:disabled:focus, + .btn-danger:disabled.focus, + .btn-danger:disabled:active, + .btn-danger:disabled.active, + fieldset[disabled] .btn-danger, + fieldset[disabled] .btn-danger:focus, + fieldset[disabled] .btn-danger.focus, + fieldset[disabled] .btn-danger:active, + fieldset[disabled] .btn-danger.active { background-color: #d9534f; border-color: #d43f3a; } -.btn-danger.disabled:hover, .btn-danger:disabled:hover, fieldset[disabled] .btn-danger:hover { +.btn-danger.disabled:hover, + .btn-danger:disabled:hover, + fieldset[disabled] .btn-danger:hover { background-color: #d9534f; border-color: #d43f3a; } @@ -2209,21 +2566,31 @@ a.btn.disaabled, fieldset[disabled] a.btn { color: #0275d8; border-radius: 0; } -.btn-link, .btn-link:active, .btn-link.active, .btn-link:disabled, fieldset[disabled] .btn-link { +.btn-link, + .btn-link:active, + .btn-link.active, + .btn-link:disabled, + fieldset[disabled] .btn-link { background-color: transparent; } -.btn-link, .btn-link:focus, .btn-link:active { +.btn-link, + .btn-link:focus, + .btn-link:active { border-color: transparent; } .btn-link:hover { border-color: transparent; } -.btn-link:focus, .btn-link:hover { +.btn-link:focus, + .btn-link:hover { color: #014c8c; text-decoration: underline; background-color: transparent; } -.btn-link:disabled:focus, .btn-link:disabled:hover, fieldset[disabled] .btn-link:focus, fieldset[disabled] .btn-link:hover { +.btn-link:disabled:focus, + .btn-link:disabled:hover, + fieldset[disabled] .btn-link:focus, + fieldset[disabled] .btn-link:hover { color: #818a91; text-decoration: none; } @@ -2258,7 +2625,9 @@ a.btn.disaabled, fieldset[disabled] a.btn { margin-top: 5px; } -input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="button"].btn-block { +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { width: 100%; } @@ -2294,7 +2663,8 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto transition-property: height; } -.dropup, .dropdown { +.dropup, +.dropdown { position: relative; } @@ -2309,6 +2679,7 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto border-right: .3em solid transparent; border-left: .3em solid transparent; } + .dropdown-toggle:focus { outline: 0; } @@ -2348,25 +2719,32 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto white-space: nowrap; } -.dropdown-menu > li > a:focus, .dropdown-menu > li > a:hover { +.dropdown-menu > li > a:focus, +.dropdown-menu > li > a:hover { color: #2b2d2f; text-decoration: none; background-color: #f5f5f5; } -.dropdown-menu > .active > a, .dropdown-menu > .active > a:focus, .dropdown-menu > .active > a:hover { +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:focus, +.dropdown-menu > .active > a:hover { color: #fff; text-decoration: none; background-color: #0275d8; outline: 0; } -.dropdown-menu > .disabled > a, .dropdown-menu > .disabled > a:focus, .dropdown-menu > .disabled > a:hover { +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:focus, +.dropdown-menu > .disabled > a:hover { color: #818a91; } -.dropdown-menu > .disabled > a:focus, .dropdown-menu > .disabled > a:hover { + +.dropdown-menu > .disabled > a:focus, +.dropdown-menu > .disabled > a:hover { text-decoration: none; - cursor: false; + cursor: not-allowed; background-color: transparent; background-image: none; filter: "progid:DXImageTransform.Microsoft.gradient(enabled = false)"; @@ -2375,6 +2753,7 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto .open > .dropdown-menu { display: block; } + .open > a { outline: 0; } @@ -2412,51 +2791,69 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto left: auto; } -.dropup .caret, .navbar-fixed-bottom .dropdown .caret { +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { content: ""; border-top: 0; border-bottom: .3em solid; } -.dropup .dropdown-menu, .navbar-fixed-bottom .dropdown .dropdown-menu { + +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { top: auto; bottom: 100%; margin-bottom: 2px; } -.btn-group, .btn-group-vertical { +.btn-group, +.btn-group-vertical { position: relative; display: inline-block; vertical-align: middle; } -.btn-group > .btn, .btn-group-vertical > .btn { +.btn-group > .btn, + .btn-group-vertical > .btn { position: relative; float: left; } -.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active, .btn-group-vertical > .btn:focus, .btn-group-vertical > .btn:active, .btn-group-vertical > .btn.active { +.btn-group > .btn:focus, + .btn-group > .btn:active, + .btn-group > .btn.active, + .btn-group-vertical > .btn:focus, + .btn-group-vertical > .btn:active, + .btn-group-vertical > .btn.active { z-index: 2; } -.btn-group > .btn:hover, .btn-group-vertical > .btn:hover { +.btn-group > .btn:hover, + .btn-group-vertical > .btn:hover { z-index: 2; } -.btn-group .btn + .btn, .btn-group .btn + .btn-group, .btn-group .btn-group + .btn, .btn-group .btn-group + .btn-group { +.btn-group .btn + .btn, +.btn-group .btn + .btn-group, +.btn-group .btn-group + .btn, +.btn-group .btn-group + .btn-group { margin-left: -1px; } .btn-toolbar { margin-left: -5px; } -.btn-toolbar:before, .btn-toolbar:after { +.btn-toolbar:before, + .btn-toolbar:after { display: table; content: " "; } .btn-toolbar:after { clear: both; } -.btn-toolbar .btn-group, .btn-toolbar .input-group { +.btn-toolbar .btn-group, + .btn-toolbar .input-group { float: left; } -.btn-toolbar > .btn, .btn-toolbar > .btn-group, .btn-toolbar > .input-group { +.btn-toolbar > .btn, + .btn-toolbar > .btn-group, + .btn-toolbar > .input-group { margin-left: 5px; } @@ -2472,7 +2869,8 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto border-bottom-right-radius: 0; } -.btn-group > .btn:last-child:not(:first-child), .btn-group > .dropdown-toggle:not(:first-child) { +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { border-top-left-radius: 0; border-bottom-left-radius: 0; } @@ -2485,7 +2883,8 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto border-radius: 0; } -.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, .btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { +.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { border-top-right-radius: 0; border-bottom-right-radius: 0; } @@ -2495,7 +2894,8 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto border-bottom-left-radius: 0; } -.btn-group .dropdown-toggle:active, .btn-group.open .dropdown-toggle { +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { outline: 0; } @@ -2522,23 +2922,33 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto border-width: 0 .3em .3em; } -.btn-group-vertical > .btn, .btn-group-vertical > .btn-group, .btn-group-vertical > .btn-group > .btn { +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group, +.btn-group-vertical > .btn-group > .btn { display: block; float: none; width: 100%; max-width: 100%; } -.btn-group-vertical > .btn-group:before, .btn-group-vertical > .btn-group:after { + +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after { display: table; content: " "; } + .btn-group-vertical > .btn-group:after { clear: both; } + .btn-group-vertical > .btn-group > .btn { float: none; } -.btn-group-vertical > .btn + .btn, .btn-group-vertical > .btn + .btn-group, .btn-group-vertical > .btn-group + .btn, .btn-group-vertical > .btn-group + .btn-group { + +.btn-group-vertical > .btn + .btn, +.btn-group-vertical > .btn + .btn-group, +.btn-group-vertical > .btn-group + .btn, +.btn-group-vertical > .btn-group + .btn-group { margin-top: -1px; margin-left: 0; } @@ -2546,11 +2956,13 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto .btn-group-vertical > .btn:not(:first-child):not(:last-child) { border-radius: 0; } + .btn-group-vertical > .btn:first-child:not(:last-child) { border-top-right-radius: .25rem; border-bottom-right-radius: 0; border-bottom-left-radius: 0; } + .btn-group-vertical > .btn:last-child:not(:first-child) { border-top-left-radius: 0; border-top-right-radius: 0; @@ -2561,7 +2973,8 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto border-radius: 0; } -.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, .btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { border-bottom-right-radius: 0; border-bottom-left-radius: 0; } @@ -2571,7 +2984,10 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto border-top-right-radius: 0; } -[data-toggle="buttons"] > .btn input[type="radio"], [data-toggle="buttons"] > .btn input[type="checkbox"], [data-toggle="buttons"] > .btn-group > .btn input[type="radio"], [data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { +[data-toggle="buttons"] > .btn input[type="radio"], +[data-toggle="buttons"] > .btn input[type="checkbox"], +[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], +[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { position: absolute; clip: rect(0, 0, 0, 0); pointer-events: none; @@ -2590,14 +3006,19 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto margin-bottom: 0; } -.input-group-addon, .input-group-btn, .input-group .form-control { +.input-group-addon, +.input-group-btn, +.input-group .form-control { display: table-cell; } -.input-group-addon:not(:first-child):not(:last-child), .input-group-btn:not(:first-child):not(:last-child), .input-group .form-control:not(:first-child):not(:last-child) { +.input-group-addon:not(:first-child):not(:last-child), + .input-group-btn:not(:first-child):not(:last-child), + .input-group .form-control:not(:first-child):not(:last-child) { border-radius: 0; } -.input-group-addon, .input-group-btn { +.input-group-addon, +.input-group-btn { width: 1%; white-space: nowrap; vertical-align: middle; @@ -2614,21 +3035,30 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto border: 1px solid #ccc; border-radius: .25rem; } -.input-group-addon.form-control-sm, .input-group-sm > .input-group-addon, .input-group-sm > .input-group-btn > .input-group-addon.btn { +.input-group-addon.form-control-sm, .input-group-sm > .input-group-addon, + .input-group-sm > .input-group-btn > .input-group-addon.btn { padding: .3rem .75rem; font-size: .85rem; border-radius: .2rem; } -.input-group-addon.form-control-lg, .input-group-lg > .input-group-addon, .input-group-lg > .input-group-btn > .input-group-addon.btn { +.input-group-addon.form-control-lg, .input-group-lg > .input-group-addon, + .input-group-lg > .input-group-btn > .input-group-addon.btn { padding: .75rem 1.5rem; font-size: 1.25rem; border-radius: .3rem; } -.input-group-addon input[type="radio"], .input-group-addon input[type="checkbox"] { +.input-group-addon input[type="radio"], + .input-group-addon input[type="checkbox"] { margin-top: 0; } -.input-group .form-control:first-child, .input-group-addon:first-child, .input-group-btn:first-child > .btn, .input-group-btn:first-child > .btn-group > .btn, .input-group-btn:first-child > .dropdown-toggle, .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), .input-group-btn:last-child > .btn-group:not(:last-child) > .btn { +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { border-top-right-radius: 0; border-bottom-right-radius: 0; } @@ -2637,7 +3067,13 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto border-right: 0; } -.input-group .form-control:last-child, .input-group-addon:last-child, .input-group-btn:last-child > .btn, .input-group-btn:last-child > .btn-group > .btn, .input-group-btn:last-child > .dropdown-toggle, .input-group-btn:first-child > .btn:not(:first-child), .input-group-btn:first-child > .btn-group:not(:first-child) > .btn { +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { border-top-left-radius: 0; border-bottom-left-radius: 0; } @@ -2657,13 +3093,17 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto .input-group-btn > .btn + .btn { margin-left: -1px; } -.input-group-btn > .btn:focus, .input-group-btn > .btn:active, .input-group-btn > .btn:hover { +.input-group-btn > .btn:focus, + .input-group-btn > .btn:active, + .input-group-btn > .btn:hover { z-index: 2; } -.input-group-btn:first-child > .btn, .input-group-btn:first-child > .btn-group { +.input-group-btn:first-child > .btn, + .input-group-btn:first-child > .btn-group { margin-right: -1px; } -.input-group-btn:last-child > .btn, .input-group-btn:last-child > .btn-group { +.input-group-btn:last-child > .btn, + .input-group-btn:last-child > .btn-group { margin-left: -1px; } @@ -2716,9 +3156,11 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto .c-checkbox .c-indicator { border-radius: .25rem; } + .c-checkbox input:checked ~ .c-indicator { background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNy4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgOCA4IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA4IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHBhdGggZmlsbD0iI0ZGRkZGRiIgZD0iTTYuNCwxTDUuNywxLjdMMi45LDQuNUwyLjEsMy43TDEuNCwzTDAsNC40bDAuNywwLjdsMS41LDEuNWwwLjcsMC43bDAuNy0wLjdsMy41LTMuNWwwLjctMC43TDYuNCwxTDYuNCwxeiINCgkvPg0KPC9zdmc+DQo=); } + .c-checkbox input:indeterminate ~ .c-indicator { background-color: #0074d9; background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNy4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB3aWR0aD0iOHB4IiBoZWlnaHQ9IjhweCIgdmlld0JveD0iMCAwIDggOCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgOCA4IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxwYXRoIGZpbGw9IiNGRkZGRkYiIGQ9Ik0wLDN2Mmg4VjNIMHoiLz4NCjwvc3ZnPg0K); @@ -2727,6 +3169,7 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto .c-radio .c-indicator { border-radius: 50%; } + .c-radio input:checked ~ .c-indicator { background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNy4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgOCA4IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA4IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHBhdGggZmlsbD0iI0ZGRkZGRiIgZD0iTTQsMUMyLjMsMSwxLDIuMywxLDRzMS4zLDMsMywzczMtMS4zLDMtM1M1LjcsMSw0LDF6Ii8+DQo8L3N2Zz4NCg==); } @@ -2762,6 +3205,7 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto border-radius: .25rem; outline: 0; + -moz-appearance: none; appearance: none; } .select > select:focus { @@ -2805,13 +3249,12 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto text-indent: .01px; text-overflow: ""; } - .select option { background-color: #fff; } } -@media screen and (min-width: 0\0) { +@media screen and (min-width: 0 \0) { .select select { z-index: 1; padding: .5rem 1.5rem .5rem 1rem; @@ -2830,7 +3273,9 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto content: ""; background-color: #eee; } - .select select:focus, .select select:active, .select select:hover { + .select select:focus, + .select select:active, + .select select:hover { color: #555; background-color: #eee; } @@ -2902,7 +3347,8 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto margin-bottom: 0; list-style: none; } -.nav:before, .nav:after { +.nav:before, + .nav:after { display: table; content: " "; } @@ -2920,16 +3366,23 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto padding: .75em 1em; line-height: 1; } -.nav-link:focus, .nav-link:hover { +.nav-link:focus, + .nav-link:hover { text-decoration: none; background-color: #eceeef; } -.disabled > .nav-link, .nav-link.disabled { +.disabled > .nav-link, + .nav-link.disabled { color: #818a91; } -.disabled > .nav-link, .disabled > .nav-link:focus, .disabled > .nav-link:hover, .nav-link.disabled, .nav-link.disabled:focus, .nav-link.disabled:hover { +.disabled > .nav-link, + .disabled > .nav-link:focus, + .disabled > .nav-link:hover, + .nav-link.disabled, + .nav-link.disabled:focus, + .nav-link.disabled:hover { color: #818a91; - cursor: false; + cursor: not-allowed; background-color: transparent; } @@ -2948,15 +3401,32 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto border: 1px solid transparent; border-radius: .25rem .25rem 0 0; } -.nav-tabs .nav-link:focus, .nav-tabs .nav-link:hover { +.nav-tabs .nav-link:focus, + .nav-tabs .nav-link:hover { border-color: #eceeef #eceeef #ddd; } -.nav-tabs .open > .nav-link, .nav-tabs .open > .nav-link:focus, .nav-tabs .open > .nav-link:hover, .nav-tabs .active > .nav-link, .nav-tabs .active > .nav-link:focus, .nav-tabs .active > .nav-link:hover, .nav-tabs .nav-link.open, .nav-tabs .nav-link.open:focus, .nav-tabs .nav-link.open:hover, .nav-tabs .nav-link.active, .nav-tabs .nav-link.active:focus, .nav-tabs .nav-link.active:hover { +.nav-tabs .open > .nav-link, + .nav-tabs .open > .nav-link:focus, + .nav-tabs .open > .nav-link:hover, + .nav-tabs .active > .nav-link, + .nav-tabs .active > .nav-link:focus, + .nav-tabs .active > .nav-link:hover, + .nav-tabs .nav-link.open, + .nav-tabs .nav-link.open:focus, + .nav-tabs .nav-link.open:hover, + .nav-tabs .nav-link.active, + .nav-tabs .nav-link.active:focus, + .nav-tabs .nav-link.active:hover { color: #55595c; background-color: #fff; border-color: #ddd #ddd transparent; } -.nav-tabs .disabled > .nav-link, .nav-tabs .disabled > .nav-link:focus, .nav-tabs .disabled > .nav-link:hover, .nav-tabs .nav-link.disabled, .nav-tabs .nav-link.disabled:focus, .nav-tabs .nav-link.disabled:hover { +.nav-tabs .disabled > .nav-link, + .nav-tabs .disabled > .nav-link:focus, + .nav-tabs .disabled > .nav-link:hover, + .nav-tabs .nav-link.disabled, + .nav-tabs .nav-link.disabled:focus, + .nav-tabs .nav-link.disabled:hover { color: #818a91; background-color: transparent; border-color: transparent; @@ -2968,11 +3438,24 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto .nav-pills .nav-item + .nav-item { margin-left: .2rem; } + .nav-pills .nav-link { display: block; border-radius: .25rem; } -.nav-pills .open > .nav-link, .nav-pills .open > .nav-link:focus, .nav-pills .open > .nav-link:hover, .nav-pills .active > .nav-link, .nav-pills .active > .nav-link:focus, .nav-pills .active > .nav-link:hover, .nav-pills .nav-link.open, .nav-pills .nav-link.open:focus, .nav-pills .nav-link.open:hover, .nav-pills .nav-link.active, .nav-pills .nav-link.active:focus, .nav-pills .nav-link.active:hover { + +.nav-pills .open > .nav-link, +.nav-pills .open > .nav-link:focus, +.nav-pills .open > .nav-link:hover, +.nav-pills .active > .nav-link, +.nav-pills .active > .nav-link:focus, +.nav-pills .active > .nav-link:hover, +.nav-pills .nav-link.open, +.nav-pills .nav-link.open:focus, +.nav-pills .nav-link.open:hover, +.nav-pills .nav-link.active, +.nav-pills .nav-link.active:focus, +.nav-pills .nav-link.active:hover { color: #fff; cursor: default; background-color: #0275d8; @@ -2990,6 +3473,7 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto .tab-content > .tab-pane { display: none; } + .tab-content > .active { display: block; } @@ -3005,7 +3489,8 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto padding: 1rem; margin-bottom: 1; } -.navbar:before, .navbar:after { +.navbar:before, + .navbar:after { display: table; content: " "; } @@ -3027,7 +3512,8 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto } } -.navbar-fixed-top, .navbar-fixed-bottom { +.navbar-fixed-top, +.navbar-fixed-bottom { position: fixed; right: 0; left: 0; @@ -3035,7 +3521,8 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto margin-bottom: 0; } @media (min-width: 34em) { - .navbar-fixed-top, .navbar-fixed-bottom { + .navbar-fixed-top, + .navbar-fixed-bottom { border-radius: 0; } } @@ -3052,7 +3539,7 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto position: -webkit-sticky; position: sticky; top: 0; - z-index: 1030; + z-index: 1030; width: 100%; } @media (min-width: 34em) { @@ -3069,7 +3556,8 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto font-size: 1.25rem; line-height: 1; } -.navbar-brand > a:focus, .navbar-brand > a:hover { +.navbar-brand > a:focus, + .navbar-brand > a:hover { text-decoration: none; } .navbar-brand > img { @@ -3085,7 +3573,8 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto background: none; border: 0; } -.navbar-toggler:focus, .navbar-toggler:hover { +.navbar-toggler:focus, + .navbar-toggler:hover { text-decoration: none; } @@ -3094,6 +3583,7 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto display: block !important; } } + @media (min-width: 48em) { .navbar-toggleable-sm { display: block !important; @@ -3128,13 +3618,26 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto .navbar-nav .nav-item { float: left; } + .navbar-nav .nav-link { display: block; padding-top: .95rem; padding-bottom: .95rem; line-height: 1.25; } -.navbar-nav .open > .nav-link, .navbar-nav .open > .nav-link:focus, .navbar-nav .open > .nav-link:hover, .navbar-nav .active > .nav-link, .navbar-nav .active > .nav-link:focus, .navbar-nav .active > .nav-link:hover, .navbar-nav .nav-link.open, .navbar-nav .nav-link.open:focus, .navbar-nav .nav-link.open:hover, .navbar-nav .nav-link.active, .navbar-nav .nav-link.active:focus, .navbar-nav .nav-link.active:hover { + +.navbar-nav .open > .nav-link, +.navbar-nav .open > .nav-link:focus, +.navbar-nav .open > .nav-link:hover, +.navbar-nav .active > .nav-link, +.navbar-nav .active > .nav-link:focus, +.navbar-nav .active > .nav-link:hover, +.navbar-nav .nav-link.open, +.navbar-nav .nav-link.open:focus, +.navbar-nav .nav-link.open:hover, +.navbar-nav .nav-link.active, +.navbar-nav .nav-link.active:focus, +.navbar-nav .nav-link.active:hover { color: #555; cursor: default; background-color: #e7e7e7; @@ -3147,7 +3650,8 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto .navbar-default .navbar-brand { color: #777; } -.navbar-default .navbar-brand:focus, .navbar-default .navbar-brand:hover { +.navbar-default .navbar-brand:focus, + .navbar-default .navbar-brand:hover { color: #5e5e5e; background-color: transparent; } @@ -3156,24 +3660,34 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto background-color: #373a3c; border-color: #1f2021; } -.navbar-inverse .navbar-toggler, .navbar-inverse .navbar-brand > a, .navbar-inverse .nav-pills > .nav-item > .nav-link { +.navbar-inverse .navbar-toggler, + .navbar-inverse .navbar-brand > a, + .navbar-inverse .nav-pills > .nav-item > .nav-link { color: #aab0b5; } -.navbar-inverse .navbar-toggler:focus, .navbar-inverse .navbar-toggler:hover, .navbar-inverse .navbar-brand > a:focus, .navbar-inverse .navbar-brand > a:hover, .navbar-inverse .nav-pills > .nav-item > .nav-link:focus, .navbar-inverse .nav-pills > .nav-item > .nav-link:hover { +.navbar-inverse .navbar-toggler:focus, + .navbar-inverse .navbar-toggler:hover, + .navbar-inverse .navbar-brand > a:focus, + .navbar-inverse .navbar-brand > a:hover, + .navbar-inverse .nav-pills > .nav-item > .nav-link:focus, + .navbar-inverse .nav-pills > .nav-item > .nav-link:hover { color: #fff; } -.navbar-inverse .nav-pills > .nav-item > .nav-link:focus, .navbar-inverse .nav-pills > .nav-item > .nav-link:hover { +.navbar-inverse .nav-pills > .nav-item > .nav-link:focus, + .navbar-inverse .nav-pills > .nav-item > .nav-link:hover { color: #fff; background-color: #1f2021; } -.navbar-inverse .nav-pills > .active > .nav-link, .navbar-inverse .nav-pills > .nav-link.active { +.navbar-inverse .nav-pills > .active > .nav-link, + .navbar-inverse .nav-pills > .nav-link.active { color: #fff; background-color: #1f2021; } .navbar-inverse .navbar-brand { color: #aab0b5; } -.navbar-inverse .navbar-brand:focus, .navbar-inverse .navbar-brand:hover { +.navbar-inverse .navbar-brand:focus, + .navbar-inverse .navbar-brand:hover { color: #fff; background-color: transparent; } @@ -3183,22 +3697,30 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto .navbar-inverse .navbar-nav > li > a { color: #aab0b5; } -.navbar-inverse .navbar-nav > li > a:focus, .navbar-inverse .navbar-nav > li > a:hover { +.navbar-inverse .navbar-nav > li > a:focus, + .navbar-inverse .navbar-nav > li > a:hover { color: #fff; background-color: transparent; } -.navbar-inverse .navbar-nav > .active > a, .navbar-inverse .navbar-nav > .active > a:focus, .navbar-inverse .navbar-nav > .active > a:hover { +.navbar-inverse .navbar-nav > .active > a, + .navbar-inverse .navbar-nav > .active > a:focus, + .navbar-inverse .navbar-nav > .active > a:hover { color: #fff; background-color: #1f2021; } -.navbar-inverse .navbar-nav > .disabled > a, .navbar-inverse .navbar-nav > .disabled > a:focus, .navbar-inverse .navbar-nav > .disabled > a:hover { +.navbar-inverse .navbar-nav > .disabled > a, + .navbar-inverse .navbar-nav > .disabled > a:focus, + .navbar-inverse .navbar-nav > .disabled > a:hover { color: #444; background-color: transparent; } -.navbar-inverse .navbar-collapse, .navbar-inverse .navbar-form { +.navbar-inverse .navbar-collapse, + .navbar-inverse .navbar-form { border-color: #262829; } -.navbar-inverse .navbar-nav > .open > a, .navbar-inverse .navbar-nav > .open > a:focus, .navbar-inverse .navbar-nav > .open > a:hover { +.navbar-inverse .navbar-nav > .open > a, + .navbar-inverse .navbar-nav > .open > a:focus, + .navbar-inverse .navbar-nav > .open > a:hover { color: #fff; background-color: #1f2021; } @@ -3211,10 +3733,14 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto .navbar-inverse .btn-link { color: #aab0b5; } -.navbar-inverse .btn-link:focus, .navbar-inverse .btn-link:hover { +.navbar-inverse .btn-link:focus, + .navbar-inverse .btn-link:hover { color: #fff; } -.navbar-inverse .btn-link:disabled:focus, .navbar-inverse .btn-link:disabled:hover, fieldset[disabled] .navbar-inverse .btn-link:focus, fieldset[disabled] .navbar-inverse .btn-link:hover { +.navbar-inverse .btn-link:disabled:focus, + .navbar-inverse .btn-link:disabled:hover, + fieldset[disabled] .navbar-inverse .btn-link:focus, + fieldset[disabled] .navbar-inverse .btn-link:hover { color: #444; } @@ -3281,16 +3807,26 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto border-color: #d9534f; } -.card-inverse .card-header, .card-inverse .card-footer { +.card-inverse .card-header, +.card-inverse .card-footer { border-bottom: .075rem solid rgba(255, 255, 255, .2); } -.card-inverse .card-header, .card-inverse .card-footer, .card-inverse .card-title, .card-inverse .card-blockquote { + +.card-inverse .card-header, +.card-inverse .card-footer, +.card-inverse .card-title, +.card-inverse .card-blockquote { color: #fff; } -.card-inverse .card-link, .card-inverse .card-text, .card-inverse .card-blockquote > footer { + +.card-inverse .card-link, +.card-inverse .card-text, +.card-inverse .card-blockquote > footer { color: rgba(255, 255, 255, .65); } -.card-inverse .card-link:focus, .card-inverse .card-link:hover { + +.card-inverse .card-link:focus, +.card-inverse .card-link:hover { color: #fff; } @@ -3382,7 +3918,7 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto padding-right: .5rem; padding-left: .5rem; color: #818a91; - content: "/\00a0"; + content: "/\\00a0"; } .breadcrumb > .active { color: #818a91; @@ -3391,7 +3927,6 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto .pagination { display: inline-block; padding-left: 0; - margin: 1 0; margin-top: 1rem; margin-bottom: 1rem; border-radius: .25rem; @@ -3399,7 +3934,8 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto .pagination > li { display: inline; } -.pagination > li > a, .pagination > li > span { +.pagination > li > a, + .pagination > li > span { position: relative; float: left; padding: .5rem .75rem; @@ -3410,56 +3946,81 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto background-color: #fff; border: 1px solid #ddd; } -.pagination > li:first-child > a, .pagination > li:first-child > span { +.pagination > li:first-child > a, + .pagination > li:first-child > span { margin-left: 0; border-top-left-radius: .25rem; border-bottom-left-radius: .25rem; } -.pagination > li:last-child > a, .pagination > li:last-child > span { +.pagination > li:last-child > a, + .pagination > li:last-child > span { border-top-right-radius: .25rem; border-bottom-right-radius: .25rem; } -.pagination > li > a:focus, .pagination > li > a:hover, .pagination > li > span:focus, .pagination > li > span:hover { +.pagination > li > a:focus, + .pagination > li > a:hover, + .pagination > li > span:focus, + .pagination > li > span:hover { color: #014c8c; background-color: #eceeef; border-color: #ddd; } -.pagination > .active > a, .pagination > .active > a:focus, .pagination > .active > a:hover, .pagination > .active > span, .pagination > .active > span:focus, .pagination > .active > span:hover { +.pagination > .active > a, + .pagination > .active > a:focus, + .pagination > .active > a:hover, + .pagination > .active > span, + .pagination > .active > span:focus, + .pagination > .active > span:hover { z-index: 2; color: #fff; cursor: default; background-color: #0275d8; border-color: #0275d8; } -.pagination > .disabled > span, .pagination > .disabled > span:focus, .pagination > .disabled > span:hover, .pagination > .disabled > a, .pagination > .disabled > a:focus, .pagination > .disabled > a:hover { +.pagination > .disabled > span, + .pagination > .disabled > span:focus, + .pagination > .disabled > span:hover, + .pagination > .disabled > a, + .pagination > .disabled > a:focus, + .pagination > .disabled > a:hover { color: #818a91; - cursor: false; + cursor: not-allowed; background-color: #fff; border-color: #ddd; } -.pagination-lg > li > a, .pagination-lg > li > span { +.pagination-lg > li > a, +.pagination-lg > li > span { padding: .75rem 1.5rem; font-size: 1.25rem; } -.pagination-lg > li:first-child > a, .pagination-lg > li:first-child > span { + +.pagination-lg > li:first-child > a, +.pagination-lg > li:first-child > span { border-top-left-radius: .3rem; border-bottom-left-radius: .3rem; } -.pagination-lg > li:last-child > a, .pagination-lg > li:last-child > span { + +.pagination-lg > li:last-child > a, +.pagination-lg > li:last-child > span { border-top-right-radius: .3rem; border-bottom-right-radius: .3rem; } -.pagination-sm > li > a, .pagination-sm > li > span { +.pagination-sm > li > a, +.pagination-sm > li > span { padding: .3rem .75rem; font-size: .85rem; } -.pagination-sm > li:first-child > a, .pagination-sm > li:first-child > span { + +.pagination-sm > li:first-child > a, +.pagination-sm > li:first-child > span { border-top-left-radius: .2rem; border-bottom-left-radius: .2rem; } -.pagination-sm > li:last-child > a, .pagination-sm > li:last-child > span { + +.pagination-sm > li:last-child > a, +.pagination-sm > li:last-child > span { border-top-right-radius: .2rem; border-bottom-right-radius: .2rem; } @@ -3471,7 +4032,8 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto text-align: center; list-style: none; } -.pager:before, .pager:after { +.pager:before, + .pager:after { display: table; content: " "; } @@ -3481,33 +4043,39 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto .pager li { display: inline; } -.pager li > a, .pager li > span { +.pager li > a, + .pager li > span { display: inline-block; padding: 5px 14px; background-color: #fff; border: 1px solid #ddd; border-radius: 15px; } -.pager li > a:focus, .pager li > a:hover { +.pager li > a:focus, + .pager li > a:hover { text-decoration: none; background-color: #eceeef; } -.pager .disabled > a, .pager .disabled > a:focus, .pager .disabled > a:hover { +.pager .disabled > a, + .pager .disabled > a:focus, + .pager .disabled > a:hover { color: #818a91; - cursor: false; + cursor: not-allowed; background-color: #fff; } .pager .disabled > span { color: #818a91; - cursor: false; + cursor: not-allowed; background-color: #fff; } -.pager-next > a, .pager-next > span { +.pager-next > a, +.pager-next > span { float: right; } -.pager-prev > a, .pager-prev > span { +.pager-prev > a, +.pager-prev > span { float: left; } @@ -3531,7 +4099,8 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto top: -1px; } -a.label:focus, a.label:hover { +a.label:focus, +a.label:hover { color: #fff; text-decoration: none; cursor: pointer; @@ -3540,42 +4109,48 @@ a.label:focus, a.label:hover { .label-default { background-color: #818a91; } -.label-default[href]:focus, .label-default[href]:hover { +.label-default[href]:focus, + .label-default[href]:hover { background-color: #687077; } .label-primary { background-color: #0275d8; } -.label-primary[href]:focus, .label-primary[href]:hover { +.label-primary[href]:focus, + .label-primary[href]:hover { background-color: #025aa5; } .label-success { background-color: #5cb85c; } -.label-success[href]:focus, .label-success[href]:hover { +.label-success[href]:focus, + .label-success[href]:hover { background-color: #449d44; } .label-info { background-color: #5bc0de; } -.label-info[href]:focus, .label-info[href]:hover { +.label-info[href]:focus, + .label-info[href]:hover { background-color: #31b0d5; } .label-warning { background-color: #f0ad4e; } -.label-warning[href]:focus, .label-warning[href]:hover { +.label-warning[href]:focus, + .label-warning[href]:hover { background-color: #ec971f; } .label-danger { background-color: #d9534f; } -.label-danger[href]:focus, .label-danger[href]:hover { +.label-danger[href]:focus, + .label-danger[href]:hover { background-color: #c9302c; } @@ -3596,10 +4171,12 @@ a.label:focus, a.label:hover { .badge:empty { display: none; } -.badge.pull-left, .badge.pull-right { +.badge.pull-left, + .badge.pull-right { top: .2em; } -.list-group-item.active > .badge, .nav-pills > .active > a > .badge { +.list-group-item.active > .badge, + .nav-pills > .active > a > .badge { color: #0275d8; background-color: #fff; } @@ -3613,7 +4190,8 @@ a.label:focus, a.label:hover { margin-left: 3px; } -a.badge:focus, a.badge:hover { +a.badge:focus, +a.badge:hover { color: #fff; text-decoration: none; cursor: pointer; @@ -3656,7 +4234,8 @@ a.badge:focus, a.badge:hover { border: 1px solid transparent; border-radius: .25rem; } -.alert > p, .alert > ul { +.alert > p, + .alert > ul { margin-bottom: 0; } .alert > p + p { @@ -3734,7 +4313,6 @@ a.badge:focus, a.badge:hover { from { background-position: 1rem 0; } - to { background-position: 0 0; } @@ -3744,7 +4322,6 @@ a.badge:focus, a.badge:hover { from { background-position: 1rem 0; } - to { background-position: 0 0; } @@ -3754,7 +4331,6 @@ a.badge:focus, a.badge:hover { from { background-position: 1rem 0; } - to { background-position: 0 0; } @@ -3768,10 +4344,12 @@ a.badge:focus, a.badge:hover { } .progress[value] { + -webkit-appearance: none; color: #0074d9; border: 0; - appearance: none; + -moz-appearance: none; + appearance: none; } .progress[value]::-webkit-progress-bar { @@ -3794,7 +4372,7 @@ a.badge:focus, a.badge:hover { border-bottom-right-radius: .25rem; } -@media screen and ("min-width:0\0") { +@media screen and (min-width: 0 \0) { .progress { background-color: #eee; border-radius: .25rem; @@ -3831,7 +4409,7 @@ a.badge:focus, a.badge:hover { background-size: 1rem 1rem; } -@media screen and ("min-width:0\0") { +@media screen and (min-width: 0 \0) { .progress-bar-striped { background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); @@ -3850,7 +4428,7 @@ a.badge:focus, a.badge:hover { animation: progress-bar-stripes 2s linear infinite; } -@media screen and ("min-width:0\0") { +@media screen and (min-width: 0 \0) { .progress-animated .progress-bar-striped { -webkit-animation: progress-bar-stripes 2s linear infinite; -o-animation: progress-bar-stripes 2s linear infinite; @@ -3861,10 +4439,12 @@ a.badge:focus, a.badge:hover { .progress-success[value]::-webkit-progress-value { background-color: #5cb85c; } + .progress-success[value]::-moz-progress-bar { background-color: #5cb85c; } -@media screen and ("min-width:0\0") { + +@media screen and (min-width: 0 \0) { .progress-success .progress-bar { background-color: #5cb85c; } @@ -3873,10 +4453,12 @@ a.badge:focus, a.badge:hover { .progress-info[value]::-webkit-progress-value { background-color: #5bc0de; } + .progress-info[value]::-moz-progress-bar { background-color: #5bc0de; } -@media screen and ("min-width:0\0") { + +@media screen and (min-width: 0 \0) { .progress-info .progress-bar { background-color: #5bc0de; } @@ -3885,10 +4467,12 @@ a.badge:focus, a.badge:hover { .progress-warning[value]::-webkit-progress-value { background-color: #f0ad4e; } + .progress-warning[value]::-moz-progress-bar { background-color: #f0ad4e; } -@media screen and ("min-width:0\0") { + +@media screen and (min-width: 0 \0) { .progress-warning .progress-bar { background-color: #f0ad4e; } @@ -3897,10 +4481,12 @@ a.badge:focus, a.badge:hover { .progress-danger[value]::-webkit-progress-value { background-color: #d9534f; } + .progress-danger[value]::-moz-progress-bar { background-color: #d9534f; } -@media screen and ("min-width:0\0") { + +@media screen and (min-width: 0 \0) { .progress-danger .progress-bar { background-color: #d9534f; } @@ -3913,7 +4499,8 @@ a.badge:focus, a.badge:hover { margin-top: 0; } -.media, .media-body { +.media, +.media-body { overflow: hidden; zoom: 1; } @@ -3922,7 +4509,9 @@ a.badge:focus, a.badge:hover { width: 10000px; } -.media-left, .media-right, .media-body { +.media-left, +.media-right, +.media-body { display: table-cell; vertical-align: top; } @@ -3939,11 +4528,13 @@ a.badge:focus, a.badge:hover { display: block; } -.media-right, .media > .pull-right { +.media-right, +.media > .pull-right { padding-left: 10px; } -.media-left, .media > .pull-left { +.media-left, +.media > .pull-left { padding-right: 10px; } @@ -3986,33 +4577,53 @@ a.list-group-item { a.list-group-item .list-group-item-heading { color: #333; } -a.list-group-item:focus, a.list-group-item:hover { +a.list-group-item:focus, + a.list-group-item:hover { color: #555; text-decoration: none; background-color: #f5f5f5; } -.list-group-item.disabled, .list-group-item.disabled:focus, .list-group-item.disabled:hover { +.list-group-item.disabled, +.list-group-item.disabled:focus, +.list-group-item.disabled:hover { color: #818a91; - cursor: false; + cursor: not-allowed; background-color: #eceeef; } -.list-group-item.disabled .list-group-item-heading, .list-group-item.disabled:focus .list-group-item-heading, .list-group-item.disabled:hover .list-group-item-heading { +.list-group-item.disabled .list-group-item-heading, + .list-group-item.disabled:focus .list-group-item-heading, + .list-group-item.disabled:hover .list-group-item-heading { color: inherit; } -.list-group-item.disabled .list-group-item-text, .list-group-item.disabled:focus .list-group-item-text, .list-group-item.disabled:hover .list-group-item-text { +.list-group-item.disabled .list-group-item-text, + .list-group-item.disabled:focus .list-group-item-text, + .list-group-item.disabled:hover .list-group-item-text { color: #818a91; } -.list-group-item.active, .list-group-item.active:focus, .list-group-item.active:hover { + +.list-group-item.active, +.list-group-item.active:focus, +.list-group-item.active:hover { z-index: 2; color: #fff; background-color: #0275d8; border-color: #0275d8; } -.list-group-item.active .list-group-item-heading, .list-group-item.active .list-group-item-heading > small, .list-group-item.active .list-group-item-heading > .small, .list-group-item.active:focus .list-group-item-heading, .list-group-item.active:focus .list-group-item-heading > small, .list-group-item.active:focus .list-group-item-heading > .small, .list-group-item.active:hover .list-group-item-heading, .list-group-item.active:hover .list-group-item-heading > small, .list-group-item.active:hover .list-group-item-heading > .small { +.list-group-item.active .list-group-item-heading, + .list-group-item.active .list-group-item-heading > small, + .list-group-item.active .list-group-item-heading > .small, + .list-group-item.active:focus .list-group-item-heading, + .list-group-item.active:focus .list-group-item-heading > small, + .list-group-item.active:focus .list-group-item-heading > .small, + .list-group-item.active:hover .list-group-item-heading, + .list-group-item.active:hover .list-group-item-heading > small, + .list-group-item.active:hover .list-group-item-heading > .small { color: inherit; } -.list-group-item.active .list-group-item-text, .list-group-item.active:focus .list-group-item-text, .list-group-item.active:hover .list-group-item-text { +.list-group-item.active .list-group-item-text, + .list-group-item.active:focus .list-group-item-text, + .list-group-item.active:hover .list-group-item-text { color: #a8d6fe; } @@ -4027,11 +4638,14 @@ a.list-group-item-state { a.list-group-item-state .list-group-item-heading { color: inherit; } -a.list-group-item-state:focus, a.list-group-item-state:hover { +a.list-group-item-state:focus, + a.list-group-item-state:hover { color: #3c763d; background-color: #d0e9c6; } -a.list-group-item-state.active, a.list-group-item-state.active:focus, a.list-group-item-state.active:hover { +a.list-group-item-state.active, + a.list-group-item-state.active:focus, + a.list-group-item-state.active:hover { color: #fff; background-color: #3c763d; border-color: #3c763d; @@ -4048,11 +4662,14 @@ a.list-group-item-state { a.list-group-item-state .list-group-item-heading { color: inherit; } -a.list-group-item-state:focus, a.list-group-item-state:hover { +a.list-group-item-state:focus, + a.list-group-item-state:hover { color: #31708f; background-color: #c4e3f3; } -a.list-group-item-state.active, a.list-group-item-state.active:focus, a.list-group-item-state.active:hover { +a.list-group-item-state.active, + a.list-group-item-state.active:focus, + a.list-group-item-state.active:hover { color: #fff; background-color: #31708f; border-color: #31708f; @@ -4069,11 +4686,14 @@ a.list-group-item-state { a.list-group-item-state .list-group-item-heading { color: inherit; } -a.list-group-item-state:focus, a.list-group-item-state:hover { +a.list-group-item-state:focus, + a.list-group-item-state:hover { color: #8a6d3b; background-color: #faf2cc; } -a.list-group-item-state.active, a.list-group-item-state.active:focus, a.list-group-item-state.active:hover { +a.list-group-item-state.active, + a.list-group-item-state.active:focus, + a.list-group-item-state.active:hover { color: #fff; background-color: #8a6d3b; border-color: #8a6d3b; @@ -4090,11 +4710,14 @@ a.list-group-item-state { a.list-group-item-state .list-group-item-heading { color: inherit; } -a.list-group-item-state:focus, a.list-group-item-state:hover { +a.list-group-item-state:focus, + a.list-group-item-state:hover { color: #a94442; background-color: #ebcccc; } -a.list-group-item-state.active, a.list-group-item-state.active:focus, a.list-group-item-state.active:hover { +a.list-group-item-state.active, + a.list-group-item-state.active:focus, + a.list-group-item-state.active:hover { color: #fff; background-color: #a94442; border-color: #a94442; @@ -4117,7 +4740,11 @@ a.list-group-item-state.active, a.list-group-item-state.active:focus, a.list-gro padding: 0; overflow: hidden; } -.embed-responsive .embed-responsive-item, .embed-responsive iframe, .embed-responsive embed, .embed-responsive object, .embed-responsive video { +.embed-responsive .embed-responsive-item, + .embed-responsive iframe, + .embed-responsive embed, + .embed-responsive object, + .embed-responsive video { position: absolute; top: 0; bottom: 0; @@ -4144,7 +4771,8 @@ a.list-group-item-state.active, a.list-group-item-state.active:focus, a.list-gro text-shadow: 0 1px 0 #fff; opacity: .2; } -.close:focus, .close:hover { +.close:focus, + .close:hover { color: #000; text-decoration: none; cursor: pointer; @@ -4250,7 +4878,8 @@ button.close { text-align: right; border-top: 1px solid #e5e5e5; } -.modal-footer:before, .modal-footer:after { +.modal-footer:before, + .modal-footer:after { display: table; content: " "; } @@ -4305,26 +4934,58 @@ button.close { .tooltip.in { opacity: .9; } - -.tooltip-top { +.tooltip.tooltip-top, + .tooltip.bs-tether-element-attached-bottom { padding: 5px 0; margin-top: -3px; } - -.tooltip-right { +.tooltip.tooltip-top .tooltip-arrow, + .tooltip.bs-tether-element-attached-bottom .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.tooltip-right, + .tooltip.bs-tether-element-attached-left { padding: 0 5px; margin-left: 3px; } - -.tooltip-bottom { +.tooltip.tooltip-right .tooltip-arrow, + .tooltip.bs-tether-element-attached-left .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000; +} +.tooltip.tooltip-bottom, + .tooltip.bs-tether-element-attached-top { padding: 5px 0; margin-top: 3px; } - -.tooltip-left { +.tooltip.tooltip-bottom .tooltip-arrow, + .tooltip.bs-tether-element-attached-top .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.tooltip.tooltip-left, + .tooltip.bs-tether-element-attached-right { padding: 0 5px; margin-left: -3px; } +.tooltip.tooltip-left .tooltip-arrow, + .tooltip.bs-tether-element-attached-right .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000; +} .tooltip-inner { max-width: 200px; @@ -4344,44 +5005,12 @@ button.close { border-style: solid; } -.tooltip-top .tooltip-arrow { - bottom: 0; - left: 50%; - margin-left: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} - -.tooltip-right .tooltip-arrow { - top: 50%; - left: 0; - margin-top: -5px; - border-width: 5px 5px 5px 0; - border-right-color: #000; -} - -.tooltip-left .tooltip-arrow { - top: 50%; - right: 0; - margin-top: -5px; - border-width: 5px 0 5px 5px; - border-left-color: #000; -} - -.tooltip-bottom .tooltip-arrow { - top: 0; - left: 50%; - margin-left: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} - .popover { position: absolute; top: 0; left: 0; z-index: 1060; - display: none; + display: block; max-width: 276px; padding: 1px; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; @@ -4396,107 +5025,80 @@ button.close { border: 1px solid rgba(0, 0, 0, .2); border-radius: .3rem; } - -.popover-top { +.popover.popover-top, + .popover.bs-tether-element-attached-bottom { margin-top: -10px; } - -.popover-right { - margin-left: 10px; -} - -.popover-bottom { - margin-top: 10px; -} - -.popover-left { - margin-left: -10px; -} - -.popover-title { - padding: 8px 14px; - margin: 0; - font-size: 1rem; - background-color: #f7f7f7; - border-bottom: 1px solid #ebebeb; - border-radius: -.7rem -.7rem 0 0; -} - -.popover-content { - padding: 9px 14px; -} - -.popover-arrow, .popover-arrow:after { - position: absolute; - display: block; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} - -.popover-arrow { - border-width: 11px; -} - -.popover-arrow:after { - content: ""; - border-width: 10px; -} - -.popover-top > .popover-arrow { +.popover.popover-top .popover-arrow, + .popover.bs-tether-element-attached-bottom .popover-arrow { bottom: -11px; left: 50%; margin-left: -11px; border-top-color: rgba(0, 0, 0, .25); border-bottom-width: 0; } -.popover-top > .popover-arrow:after { +.popover.popover-top .popover-arrow:after, + .popover.bs-tether-element-attached-bottom .popover-arrow:after { bottom: 1px; margin-left: -10px; content: ""; border-top-color: #fff; border-bottom-width: 0; } - -.popover-right > .popover-arrow { +.popover.popover-right, + .popover.bs-tether-element-attached-left { + margin-left: 10px; +} +.popover.popover-right .popover-arrow, + .popover.bs-tether-element-attached-left .popover-arrow { top: 50%; left: -11px; margin-top: -11px; border-right-color: rgba(0, 0, 0, .25); border-left-width: 0; } -.popover-right > .popover-arrow:after { +.popover.popover-right .popover-arrow:after, + .popover.bs-tether-element-attached-left .popover-arrow:after { bottom: -10px; left: 1px; content: ""; border-right-color: #fff; border-left-width: 0; } - -.popover-bottom > .popover-arrow { +.popover.popover-bottom, + .popover.bs-tether-element-attached-top { + margin-top: 10px; +} +.popover.popover-bottom .popover-arrow, + .popover.bs-tether-element-attached-top .popover-arrow { top: -11px; left: 50%; margin-left: -11px; border-top-width: 0; border-bottom-color: rgba(0, 0, 0, .25); } -.popover-bottom > .popover-arrow:after { +.popover.popover-bottom .popover-arrow:after, + .popover.bs-tether-element-attached-top .popover-arrow:after { top: 1px; margin-left: -10px; content: ""; border-top-width: 0; border-bottom-color: #fff; } - -.popover-left > .popover-arrow { +.popover.popover-left, + .popover.bs-tether-element-attached-right { + margin-left: -10px; +} +.popover.popover-left .popover-arrow, + .popover.bs-tether-element-attached-right .popover-arrow { top: 50%; right: -11px; margin-top: -11px; border-right-width: 0; border-left-color: rgba(0, 0, 0, .25); } -.popover-left > .popover-arrow:after { +.popover.popover-left .popover-arrow:after, + .popover.bs-tether-element-attached-right .popover-arrow:after { right: 1px; bottom: -10px; content: ""; @@ -4504,6 +5106,38 @@ button.close { border-left-color: #fff; } +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 1rem; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: -.7rem -.7rem 0 0; +} + +.popover-content { + padding: 9px 14px; +} + +.popover-arrow, +.popover-arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.popover-arrow { + border-width: 11px; +} + +.popover-arrow:after { + content: ""; + border-width: 10px; +} + .carousel { position: relative; } @@ -4520,7 +5154,8 @@ button.close { -o-transition: .6s ease-in-out left; transition: .6s ease-in-out left; } -.carousel-inner > .carousel-item > img, .carousel-inner > .carousel-item > a > img { +.carousel-inner > .carousel-item > img, + .carousel-inner > .carousel-item > a > img { line-height: 1; } @media all and (transform-3d), (-webkit-transform-3d) { @@ -4534,29 +5169,36 @@ button.close { -webkit-perspective: 1000; perspective: 1000; } - .carousel-inner > .carousel-item.next, .carousel-inner > .carousel-item.active.right { + .carousel-inner > .carousel-item.next, + .carousel-inner > .carousel-item.active.right { left: 0; -webkit-transform: translate3d(100%, 0, 0); transform: translate3d(100%, 0, 0); } - .carousel-inner > .carousel-item.prev, .carousel-inner > .carousel-item.active.left { + .carousel-inner > .carousel-item.prev, + .carousel-inner > .carousel-item.active.left { left: 0; -webkit-transform: translate3d(-100%, 0, 0); transform: translate3d(-100%, 0, 0); } - .carousel-inner > .carousel-item.next.left, .carousel-inner > .carousel-item.prev.right, .carousel-inner > .carousel-item.active { + .carousel-inner > .carousel-item.next.left, + .carousel-inner > .carousel-item.prev.right, + .carousel-inner > .carousel-item.active { left: 0; -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } } -.carousel-inner > .active, .carousel-inner > .next, .carousel-inner > .prev { +.carousel-inner > .active, + .carousel-inner > .next, + .carousel-inner > .prev { display: block; } .carousel-inner > .active { left: 0; } -.carousel-inner > .next, .carousel-inner > .prev { +.carousel-inner > .next, + .carousel-inner > .prev { position: absolute; top: 0; width: 100%; @@ -4567,7 +5209,8 @@ button.close { .carousel-inner > .prev { left: -100%; } -.carousel-inner > .next.left, .carousel-inner > .prev.right { +.carousel-inner > .next.left, + .carousel-inner > .prev.right { left: 0; } .carousel-inner > .active.left { @@ -4607,13 +5250,15 @@ button.close { filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); background-repeat: repeat-x; } -.carousel-control:focus, .carousel-control:hover { +.carousel-control:focus, + .carousel-control:hover { color: #fff; text-decoration: none; outline: 0; opacity: .9; } -.carousel-control .icon-prev, .carousel-control .icon-next { +.carousel-control .icon-prev, + .carousel-control .icon-next { position: absolute; top: 50%; z-index: 5; @@ -4685,7 +5330,8 @@ button.close { } @media (min-width: 34em) { - .carousel-control .icon-prev, .carousel-control .icon-next { + .carousel-control .icon-prev, + .carousel-control .icon-next { width: 30px; height: 30px; margin-top: -15px; @@ -4707,10 +5353,12 @@ button.close { } } -.clearfix:before, .clearfix:after { +.clearfix:before, +.clearfix:after { display: table; content: " "; } + .clearfix:after { clear: both; } @@ -4740,7 +5388,8 @@ button.close { border: 0; } -.sr-only-focusable:active, .sr-only-focusable:focus { +.sr-only-focusable:active, +.sr-only-focusable:focus { position: static; width: auto; height: auto; @@ -5023,7 +5672,8 @@ button.close { color: #0275d8; } -a.text-primary:focus, a.text-primary:hover { +a.text-primary:focus, +a.text-primary:hover { color: #025aa5; } @@ -5031,7 +5681,8 @@ a.text-primary:focus, a.text-primary:hover { color: #3c763d; } -a.text-success:focus, a.text-success:hover { +a.text-success:focus, +a.text-success:hover { color: #2b542c; } @@ -5039,7 +5690,8 @@ a.text-success:focus, a.text-success:hover { color: #31708f; } -a.text-info:focus, a.text-info:hover { +a.text-info:focus, +a.text-info:hover { color: #245269; } @@ -5047,7 +5699,8 @@ a.text-info:focus, a.text-info:hover { color: #8a6d3b; } -a.text-warning:focus, a.text-warning:hover { +a.text-warning:focus, +a.text-warning:hover { color: #66512c; } @@ -5055,7 +5708,8 @@ a.text-warning:focus, a.text-warning:hover { color: #a94442; } -a.text-danger:focus, a.text-danger:hover { +a.text-danger:focus, +a.text-danger:hover { color: #843534; } @@ -5072,7 +5726,8 @@ a.text-danger:focus, a.text-danger:hover { background-color: #0275d8; } -a.bg-primary:focus, a.bg-primary:hover { +a.bg-primary:focus, +a.bg-primary:hover { background-color: #025aa5; } @@ -5080,7 +5735,8 @@ a.bg-primary:focus, a.bg-primary:hover { background-color: #dff0d8; } -a.bg-success:focus, a.bg-success:hover { +a.bg-success:focus, +a.bg-success:hover { background-color: #c1e2b3; } @@ -5088,7 +5744,8 @@ a.bg-success:focus, a.bg-success:hover { background-color: #d9edf7; } -a.bg-info:focus, a.bg-info:hover { +a.bg-info:focus, +a.bg-info:hover { background-color: #afd9ee; } @@ -5096,7 +5753,8 @@ a.bg-info:focus, a.bg-info:hover { background-color: #fcf8e3; } -a.bg-warning:focus, a.bg-warning:hover { +a.bg-warning:focus, +a.bg-warning:hover { background-color: #f7ecb5; } @@ -5104,7 +5762,8 @@ a.bg-warning:focus, a.bg-warning:hover { background-color: #f2dede; } -a.bg-danger:focus, a.bg-danger:hover { +a.bg-danger:focus, +a.bg-danger:hover { background-color: #e4b9b9; } diff --git a/dist/css/bootstrap.css.map b/dist/css/bootstrap.css.map index d1e8f1c336..2eb5eb9701 100644 --- a/dist/css/bootstrap.css.map +++ b/dist/css/bootstrap.css.map @@ -1 +1 @@ -{"version":3,"sources":["bootstrap.css","../../_normalize.scss","../../mixins/_hover.scss","../../_print.scss","../../_reboot.scss","../../mixins/_tab-focus.scss","../../_type.scss","../../mixins/_clearfix.scss","../../_images.scss","../../mixins/_image.scss","../../_mixins.scss","../../_code.scss","../../_grid.scss","../../mixins/_grid.scss","../../mixins/_breakpoints.scss","../../mixins/_grid-framework.scss","../../_tables.scss","../../mixins/_table-row.scss","../../_variables.scss","../../_forms.scss","../../mixins/_forms.scss","../../_buttons.scss","../../mixins/_buttons.scss","../../_animation.scss","../../_dropdown.scss","../../mixins/_nav-divider.scss","../../mixins/_reset-filter.scss","../../_button-group.scss","../../_input-group.scss","../../_custom-forms.scss","../../_nav.scss","../../_navbar.scss","../../_card.scss","../../_breadcrumb.scss","../../_pagination.scss","../../mixins/_pagination.scss","../../_pager.scss","../../_labels.scss","../../mixins/_label.scss","../../_badge.scss","../../_jumbotron.scss","../../_alert.scss","../../mixins/_alert.scss","../../_progress.scss","../../mixins/_gradients.scss","../../mixins/_progress.scss","../../_media.scss","../../_list-group.scss","../../mixins/_list-group.scss","../../_responsive-embed.scss","../../_close.scss","../../_modal.scss","../../_tooltip.scss","../../_popover.scss","../../_carousel.scss","../../_utilities.scss","../../mixins/_center-block.scss","../../mixins/_pulls.scss","../../mixins/_screen-reader.scss","../../mixins/_hide-text.scss","../../mixins/_text-truncate.scss","../../mixins/_text-emphasis.scss","../../mixins/_background-variant.scss","../../_utilities-responsive.scss","../../mixins/_responsive-visibility.scss"],"names":[],"mappings":"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","file":"bootstrap.css"}
\ No newline at end of file +{"version":3,"sources":["../../scss/_normalize.scss","bootstrap.css","../../scss/mixins/_hover.scss","../../scss/_print.scss","../../scss/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_tab-focus.scss","../../scss/_type.scss","../../scss/mixins/_clearfix.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/_mixins.scss","../../scss/_code.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixins/_grid-framework.scss","../../scss/_tables.scss","../../scss/mixins/_table-row.scss","../../scss/_forms.scss","../../scss/mixins/_forms.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_animation.scss","../../scss/_dropdown.scss","../../scss/mixins/_nav-divider.scss","../../scss/mixins/_reset-filter.scss","../../scss/_button-group.scss","../../scss/mixins/_border-radius.scss","../../scss/_input-group.scss","../../scss/_custom-forms.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/_breadcrumb.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_pager.scss","../../scss/_labels.scss","../../scss/mixins/_label.scss","../../scss/_badge.scss","../../scss/_jumbotron.scss","../../scss/_alert.scss","../../scss/mixins/_alert.scss","../../scss/_progress.scss","../../scss/mixins/_gradients.scss","../../scss/mixins/_progress.scss","../../scss/_media.scss","../../scss/_list-group.scss","../../scss/mixins/_list-group.scss","../../scss/_responsive-embed.scss","../../scss/_close.scss","../../scss/_modal.scss","../../scss/_tooltip.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/_utilities.scss","../../scss/mixins/_center-block.scss","../../scss/mixins/_pulls.scss","../../scss/mixins/_screen-reader.scss","../../scss/mixins/_hide-text.scss","../../scss/mixins/_text-truncate.scss","../../scss/mixins/_text-emphasis.scss","../../scss/mixins/_background-variant.scss","../../scss/_utilities-responsive.scss","../../scss/mixins/_responsive-visibility.scss"],"names":[],"mappings":"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FWvC,iBAA8B,EEVpB;;AAD6B;EFWvC,iBAA8B,EEVpB;;AAD6B;EFWvC,UAA8B,EEVpB;;AAD6B;EFWvC,iBAA8B,EEVpB;;AAD6B;EFWvC,iBAA8B,EEVpB;;AAD6B;EFWvC,UAA8B,EEVpB;;AAD6B;EFWvC,iBAA8B,EEVpB;;AAD6B;EFWvC,iBAA8B,EEVpB;;AAD6B;EFWvC,WAA8B,EEVpB;;AAD6B;EFOvC,gBAAuB,EENb;;AAD6B;EFOvC,uBAAuB,EENb;;AAD6B;EFOvC,wBAAuB,EENb;;AAD6B;EFOvC,iBAAuB,EENb;;AAD6B;EFOvC,wBAAuB,EENb;;AAD6B;EFOvC,wBAAuB,EENb;;AAD6B;EFOvC,iBAAuB,EENb;;AAD6B;EFOvC,wBAAuB,EENb;;AAD6B;EFOvC,wBAAuB,EENb;;AAD6B;EFOvC,iBAAuB,EENb;;AAD6B;EFOvC,wBAAuB,EENb;;AAD6B;EFOvC,wBAAuB,EENb;;AAD6B;EFOvC,kBAAuB,EENb;;ADQR;ECxBkE;IAK5D,YAAY,EAJd;EAO+B;IFSnC,iBAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,WAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,WAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,WAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,YAAiB,EERX;EAM+B;IFevC,YAAuD,EEd7C;EAD6B;IFevC,iBAA+B,EEdrB;EAD6B;IFevC,kBAA+B,EEdrB;EAD6B;IFevC,WAA+B,EEdrB;EAD6B;IFevC,kBAA+B,EEdrB;EAD6B;IFevC,kBAA+B,EEdrB;EAD6B;IFevC,WAA+B,EEdrB;EAD6B;IFevC,kBAA+B,EEdrB;EAD6B;IFevC,kBAA+B,EEdrB;EAD6B;IFevC,WAA+B,EEdrB;EAD6B;IFevC,kBAA+B,EEdrB;EAD6B;IFevC,kBAA+B,EEdrB;EAD6B;IFevC,YAA+B,EEdrB;EAD6B;IFWvC,WAAsD,EEV5C;EAD6B;IFWvC,gBAA8B,EEVpB;EAD6B;IFWvC,iBAA8B,EEVpB;EAD6B;IFWvC,UAA8B,EEVpB;EAD6B;IFWvC,iBAA8B,EEVpB;EAD6B;IFWvC,iBAA8B,EEVpB;EAD6B;IFWvC,UAA8B,EEVpB;EAD6B;IFWvC,iBAA8B,EEVpB;EAD6B;IFWvC,iBAA8B,EEVpB;EAD6B;IFWvC,UAA8B,EEVpB;EAD6B;IFWvC,iBAA8B,EEVpB;EAD6B;IFWvC,iBAA8B,EEVpB;EAD6B;IFWvC,WAA8B,EEVpB;EAD6B;IFOvC,gBAAuB,EENb;EAD6B;IFOvC,uBAAuB,EENb;EAD6B;IFOvC,wBAAuB,EENb;EAD6B;IFOvC,iBAAuB,EENb;EAD6B;IFOvC,wBAAuB,EENb;EAD6B;IFOvC,wBAAuB,EENb;EAD6B;IFOvC,iBAAuB,EENb;EAD6B;IFOvC,wBAAuB,EENb;EAD6B;IFOvC,wBAAuB,EENb;EAD6B;IFOvC,iBAAuB,EENb;EAD6B;IFOvC,wBAAuB,EENb;EAD6B;IFOvC,wBAAuB,EENb;EAD6B;IFOvC,kBAAuB,EENb,EAAA;;ADQR;ECxBkE;IAK5D,YAAY,EAJd;EAO+B;IFSnC,iBAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,WAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,WAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,WAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,YAAiB,EERX;EAM+B;IFevC,YAAuD,EEd7C;EAD6B;IFevC,iBAA+B,EEdrB;EAD6B;IFevC,kBAA+B,EEdrB;EAD6B;IFevC,WAA+B,EEdrB;EAD6B;IFevC,kBAA+B,EEdrB;EAD6B;IFevC,kBAA+B,EEdrB;EAD6B;IFevC,WAA+B,EEdrB;EAD6B;IFevC,kBAA+B,EEdrB;EAD6B;IFevC,kBAA+B,EEdrB;EAD6B;IFevC,WAA+B,EEdrB;EAD6B;IFevC,kBAA+B,EEdrB;EAD6B;IFevC,kBAA+B,EEdrB;EAD6B;IFevC,YAA+B,EEdrB;EAD6B;IFWvC,WAAsD,EEV5C;EAD6B;IFWvC,gBAA8B,EEVpB;EAD6B;IFWvC,iBAA8B,EEVpB;EAD6B;IFWvC,UAA8B,EEVpB;EAD6B;IFWvC,iBAA8B,EEVpB;EAD6B;IFWvC,iBAA8B,EEVpB;EAD6B;IFWvC,UAA8B,EEVpB;EAD6B;IFWvC,iBAA8B,EEVpB;EAD6B;IFWvC,iBAA8B,EEVpB;EAD6B;IFWvC,UAA8B,EEVpB;EAD6B;IFWvC,iBAA8B,EEVpB;EAD6B;IFWvC,iBAA8B,EEVpB;EAD6B;IFWvC,WAA8B,EEVpB;EAD6B;IFOvC,gBAAuB,EENb;EAD6B;IFOvC,uBAAuB,EENb;EAD6B;IFOvC,wBAAuB,EENb;EAD6B;IFOvC,iBAAuB,EENb;EAD6B;IFOvC,wBAAuB,EENb;EAD6B;IFOvC,wBAAuB,EENb;EAD6B;IFOvC,iBAAuB,EENb;EAD6B;IFOvC,wBAAuB,EENb;EAD6B;IFOvC,wBAAuB,EENb;EAD6B;IFOvC,iBAAuB,EENb;EAD6B;IFOvC,wBAAuB,EENb;EAD6B;IFOvC,wBAAuB,EENb;EAD6B;IFOvC,kBAAuB,EENb,EAAA;;ADQR;ECxBkE;IAK5D,YAAY,EAJd;EAO+B;IFSnC,iBAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,WAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,WAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,WAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,YAAiB,EERX;EAM+B;IFevC,YAAuD,EEd7C;EAD6B;IFevC,iBAA+B,EEdrB;EAD6B;IFevC,kBAA+B,EEdrB;EAD6B;IFevC,WAA+B,EEdrB;EAD6B;IFevC,kBAA+B,EEdrB;EAD6B;IFevC,kBAA+B,EEdrB;EAD6B;IFevC,WAA+B,EEdrB;EAD6B;IFevC,kBAA+B,EEdrB;EA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yCAA+B;OAA/B,oCAA+B;UAA/B,iCAA+B,EAX3B;EAiBD;;;;;;IftBH,qBAAqB;IAErB,2CAA2C;IAC3C,qBAAqB,EemBV;EnBNR;;ImBYD,sBAAsB,EnBZb;EmBcV;IACC,sBAAsB,EADf;EAKR;;IACC,uBAAuB;IACvB,WAAW,EAFH;EAQS;;;IACjB,oBhBuJwC;IgBtJxC,aAAa,EAFO;;AASJ;;EAClB,qBAAqB,EADG;;AAS1B;EC3DE,YjB2ImC;EiB1InC,0BjBSkC;EiBRlC,sBjB2IqC,EgBlFzB;EC9CH;;;;;IACP,YjB6HiC;IiB5HjC,0BATwB;IAUpB,sBATgB,EAMK;EpBVxB;IoBgBD,YjBwHiC;IiBvHjC,0BAdwB;IAepB,sBAdgB,EpBJX;EoBsBF;;;IAEP,uBAAuB,EAFE;EAYxB;;;;;;;;;;;;;;;IACC,0BjB5B8B;IiB6B1B,sBjBsG6B,EiBxGzB;EpBlCT;;;IoBuCC,0BjBhC8B;IiBiC1B,sBjBkG6B,EH1I1B;EoB4CX;IACE,ejBtCgC;IiBuChC,uBjB0FiC,EiB5F3B;;ADeV;EC9DE,ejBGkC;EiBFlC,uBjB+ImC;EiB9InC,mBjB+ImC,EgBnFrB;ECjDL;;;;;IACP,ejBXgC;IiBYhC,0BATwB;IAUpB,sBATgB,EAMK;EpBVxB;IoBgBD,ejBhBgC;IiBiBhC,0BAdwB;IAepB,sBAdgB,EpBJX;EoBsBF;;;IAEP,uBAAuB,EAFE;EAYxB;;;;;;;;;;;;;;;IACC,uBjB0G+B;IiBzG3B,mBjB0G2B,EiB5GvB;EpBlCT;;;IoBuCC,uBjBsG+B;IiBrG3B,mBjBsG2B,EH9IxB;EoB4CX;IACE,YjBgGiC;IiB/FjC,0BjB9CgC,EiB4C1B;;ADkBV;ECjEE,YjBmJmC;EiBlJnC,0BjBWkC;EiBVlC,sBjBmJqC,EgBpF5B;ECpDA;;;;;IACP,YjBqIiC;IiBpIjC,0BATwB;IAUpB,sBATgB,EAMK;EpBVxB;IoBgBD,YjBgIiC;IiB/HjC,0BAdwB;IAepB,sBAdgB,EpBJX;EoBsBF;;;IAEP,uBAAuB,EAFE;EAYxB;;;;;;;;;;;;;;;IACC,0BjB1B8B;IiB2B1B,sBjB8G6B,EiBhHzB;EpBlCT;;;IoBuCC,0BjB9B8B;IiB+B1B,sBjB0G6B,EHlJ1B;EoB4CX;IACE,ejBpCgC;IiBqChC,uBjBkGiC,EiBpG3B;;ADqBV;ECpEE,YjBuJmC;EiBtJnC,0BjBUkC;EiBTlC,sBjBuJqC,EgBrFzB;ECvDH;;;;;IACP,YjByIiC;IiBxIjC,0BATwB;IAUpB,sBATgB,EAMK;EpBVxB;IoBgBD,YjBoIiC;IiBnIjC,0BAdwB;IAepB,sBAdgB,EpBJX;EoBsBF;;;IAEP,uBAAuB,EAFE;EAYxB;;;;;;;;;;;;;;;IACC,0BjB3B8B;IiB4B1B,sBjBkH6B,EiBpHzB;EpBlCT;;;IoBuCC,0BjB/B8B;IiBgC1B,sBjB8G6B,EHtJ1B;EoB4CX;IACE,ejBrCgC;IiBsChC,uBjBsGiC,EiBxG3B;;ADwBV;ECvEE,YjB2JmC;EiB1JnC,0BjBYkC;EiBXlC,sBjB2JqC,EgBtFzB;EC1DH;;;;;IACP,YjB6IiC;IiB5IjC,0BATwB;IAUpB,sBATgB,EAMK;EpBVxB;IoBgBD,YjBwIiC;IiBvIjC,0BAdwB;IAepB,sBAdgB,EpBJX;EoBsBF;;;IAEP,uBAAuB,EAFE;EAYxB;;;;;;;;;;;;;;;IACC,0BjBzB8B;IiB0B1B,sBjBsH6B,EiBxHzB;EpBlCT;;;IoBuCC,0BjB7B8B;IiB8B1B,sBjBkH6B,EH1J1B;EoB4CX;IACE,ejBnCgC;IiBoChC,uBjB0GiC,EiB5G3B;;AD2BV;EC1EE,YjB+JmC;EiB9JnC,0BjBakC;EiBZlC,sBjB+JqC,EgBvF1B;EC7DF;;;;;IACP,YjBiJiC;IiBhJjC,0BATwB;IAUpB,sBATgB,EAMK;EpBVxB;IoBgBD,YjB4IiC;IiB3IjC,0BAdwB;IAepB,sBAdgB,EpBJX;EoBsBF;;;IAEP,uBAAuB,EAFE;EAYxB;;;;;;;;;;;;;;;IACC,0BjBxB8B;IiByB1B,sBjB0H6B,EiB5HzB;EpBlCT;;;IoBuCC,0BjB5B8B;IiB6B1B,sBjBsH6B,EH9J1B;EoB4CX;IACE,ejBlCgC;IiBmChC,uBjB8GiC,EiBhH3B;;ADqCV;EACE,oBAAoB;EACpB,ehB5EkC;EgB6ElC,iBAAiB,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;E2B3BjD,sB3B4BgD,E2B9BjC;EAMU;;;IACvB,e3ByB+C,E2B1Bb;I9B9QjC;;;;;;M8BkRC,Y3BuB0C,EHzSnC;EAAR;;I8BuRC,Y3BkB0C;I2BjB1C,0B3BoB4C,EH5SrC;E8B4RW;;IACpB,Y3BY4C;I2BX5C,0B3Bc8C,E2BhBjB;EAM/B;IACE,e3BK+C,E2BNlC;I9BlSZ;;M8BqSC,Y3BY0C;M2BX1C,8B3BYiD,EHlT1C;E8B0SX;IACE,e3BP+C,E2BMnC;EAKL;IACL,e3BR6C,E2BOrC;I9B/ST;;M8BmTG,Y3BVwC;M2BWxC,8B3BV+C,EH1S1C;EAiBR;;;I8BwSG,Y3BhBwC;I2BiBxC,0B3Bd0C,EH3RrC;EAAR;;;I8B8SG,Y3BlBwC;I2BmBxC,8B3BlB+C,EH7R1C;E8BqTX;;IACE,sBAAoB,EADR;E9BrTX;;;I8B6TG,Y3BrCwC;I2BsCxC,0B3BnC0C,EH3RrC;E8BmUX;IACE,e3B7C+C,E2B4CnC;I9B/VX;M8BkWC,Y3B9C0C,EHpTnC;E8BsWX;IACE,e3BpD+C,E2BmDtC;I9B3VR;;M8B+VC,Y3BtD0C,EHzSnC;IAAR;;;;M8BqWG,Y3BxDwC,EH7SnC;;A+BhBb;EACE,mBAAmB;EACnB,iBAAiB;EACjB,uBAAuB;EACvB,2BAA2B,EAJtB;;AAMP;EACE,cAAc;EACd,sBAAsB,EAFX;;AAIH;EACR,iBAAiB,EADI;;AAIR;EACX,oBAAoB,EADG;;A/BTtB;E+BeD,sBAAsB,E/Bfb;;A+BwBb;EACE,yBAAuB;EACvB,kCAAiC;EACjC,kCAAkC;EtB3BhC,mCsB4BsC,EAJ5B;;AAMd;EACE,yBAAuB;EACvB,kCAAiC;EACjC,+BAA+B;EtBjC7B,mCsBkCsC,EAJ5B;;AAYd;EACE,0B5BpCkC;E4BqClC,sB5BrCkC,E4BmCrB;;AAIf;EACE,0B5BvCkC;E4BwClC,sB5BxCkC,E4BsCrB;;AAIf;EACE,0B5B1CkC;E4B2ClC,sB5B3CkC,E4ByCxB;;AAIZ;EACE,0B5B7CkC;E4B8ClC,sB5B9CkC,E4B4CrB;;AAIf;EACE,0B5BhDkC;E4BiDlC,sB5BjDkC,E4B+CtB;;AAYZ;;EACE,uDAAiC,EADrB;;AAMd;;;;EACE,YAAY,EADI;;AAKC;;;EACjB,iCAAW,EADc;;A/BtExB;;E+B2EC,YAAY,E/B3EL;;A+BqFb;EACE,WAAW;EACX,iBAAiB;EACjB,eAAe,EAHC;;AAOlB;EACE,kBAAkB;EtBxGhB,uBsByG2B,EAFpB;;AAIX;EACE,mBAAmB;EACnB,OAAO;EACP,SAAS;EACT,UAAU;EACV,QAAQ;EACR,iBAAiB,EANA;;AAYnB;EACE,oCAAmC;EtBxHjC,mCsByHsC,EAF3B;;AAIf;EACE,oCAAmC;EtB5HjC,mCsB6HsC,EAFxB;;AAUlB;EACE,eAAe;EACf,oBAAoB;EACpB,0BAA0B,EAHjB;EAKT;IACE,oBAAoB;IACpB,YAAY;IACZ,gBAAgB,EAHX;;AAMT;EACE,uBAAuB;EACvB,sBAAsB,EAFL;;AAUnB;EACE,eAAe;EACf,YAAY;EACZ,oBAAoB,EAHT;EAKX;IACE,oBAAoB;IACpB,YAAY;IACZ,gBAAgB,EAHX;IAKH;MACA,eAAe;MACf,eAAe,EAFR;;AAYb;EACE,wBAAgB;KAAhB,qBAAgB;UAAhB,gBAAgB;EAChB,yBAAiB;KAAjB,sBAAiB;UAAjB,iBAAiB,EAFJ;EAIb;IACE,sBAAsB;IACtB,YAAY,EAFP;;ACxLT;EACE,sB7BijBkC;E6BhjBlC,oB7B6C+B;E6B5C/B,iBAAiB;EACjB,0B7BIkC;EMJhC,uBNwG8B,E6B5GrB;EAOT;IACA,sBAAsB,EADlB;IAGA;MACF,qBAAqB;MACrB,oBAAoB;MACpB,e7BN8B;M6BO9B,mBAAsC,EAJ3B;EAQb;IACA,e7BZgC,E6BWvB;;AClBb;EACE,sBAAsB;EACtB,gBAAgB;EAChB,iB9B4C+B;E8B3C/B,oB9B2C+B;EM3C7B,uBNwG8B,E8B5GrB;EAOT;IACA,gBAAgB,EADZ;IAIF;;MACA,mBAAmB;MACnB,YAAY;MACZ,wB9BgF4B;M8B/E5B,kBAAkB;MAClB,iB9B8D0B;M8B7D1B,e9BN8B;M8BO9B,sBAAsB;MACtB,uB9BgVqC;M8B/UrC,uB9BgVqC,E8BzV/B;IAaJ;;MACA,eAAe;MPZrB,mCvB+FgC;MuB9F7B,gCvB8F6B,E8BpFpB;IAON;;MP5BN,oCvByGgC;MuBxG7B,iCvBwG6B,E8B7EpB;EjChBT;;;;IiCyBC,e9Bd6B;I8Be7B,0B9BjC8B;I8BkC9B,mB9B8TqC,EHzV9B;EAiBR;;;;;;IiCiBC,WAAW;IACX,Y9BwTqC;I8BvTrC,gBAAgB;IAChB,0B9BzC8B;I8B0C9B,sB9B1C8B,EHqBvB;EAAR;;;;;;IiC6BG,e9BtD4B;I8BuD5B,oB9BoIoC;I8BnIpC,uB9BgTmC;I8B/SnC,mB9BgTmC,EHhV9B;;AkChCP;;EACA,wB/BgGyB;E+B/FzB,mB/BiE8B,E+BnExB;;AAMJ;;ERON,kCvBgG4B;EuB/FzB,+BvB+FyB,E+BvGhB;;AAMN;;ERTN,mCvB0G4B;EuBzGzB,gCvByGyB,E+BjGhB;;AAZR;;EACA,wB/BmGyB;E+BlGzB,mB/BkE6B,E+BpEvB;;AAMJ;;ERON,kCvBiG4B;EuBhGzB,+BvBgGyB,E+BxGhB;;AAMN;;ERTN,mCvB2G4B;EuB1GzB,gCvB0GyB,E+BlGhB;;ACZd;EACE,gBAAgB;EAChB,iBhC6C+B;EgC5C/B,oBhC4C+B;EgC3C/B,mBAAmB;EACnB,iBAAiB,EALX;E7BSL;;IACC,aAAa;IACb,eAAe,EAFR;EAIR;IACC,YAAY,EADL;E6BLT;IACE,gBAAgB,EADd;IAIA;;MACA,sBAAsB;MACtB,kBAAiB;MACjB,uBhCoVqC;MgCnVrC,uBhCoVqC;MgCnVrC,oBhCsWqC,EgC3W/B;InCGP;;MmCOG,sBAAsB;MACtB,0BhCf4B,EHOvB;EAiBR;;;ImCDG,ehCxB4B;IgCyB5B,oBhCkKoC;IgCjKpC,uBhCkUmC,EHnU9B;EmCIP;IACA,ehC9B8B;IgC+B9B,oBhC4JsC;IgC3JtC,uBhC4TqC,EgC/T/B;;AAUR;;EACA,aAAa,EADP;;AAON;;EACA,YAAY,EADN;;ACrDV;EACE,sBAAsB;EACtB,sBAAmB;EACnB,eAAe;EACf,kBAAkB;EAClB,eAAe;EACf,YjC+bgC;EiC9bhC,mBAAmB;EACnB,oBAAoB;EACpB,yBAAyB;E3BLvB,uBNwG8B,EiC5G1B;EAaL;IACC,cAAc,EADP;EAKJ;IACH,mBAAmB;IACnB,UAAU,EAFJ;;ApCHL;;EoCYD,YjC2a8B;EiC1a9B,sBAAsB;EACtB,gBAAgB,EpCdP;;AoCuBb;ECxCE,0BlCSkC,EiC+BpB;EpCvBX;;IqCbC,0BAAwB,ErCajB;;AoC2Bb;EC5CE,0BlCakC,EiC+BpB;EpC3BX;;IqCbC,0BAAwB,ErCajB;;AoC+Bb;EChDE,0BlCckC,EiCkCpB;EpC/BX;;IqCbC,0BAAwB,ErCajB;;AoCmCb;ECpDE,0BlCekC,EiCqCvB;EpCnCR;;IqCbC,0BAAwB,ErCajB;;AoCuCb;ECxDE,0BlCgBkC,EiCwCpB;EpCvCX;;IqCbC,0BAAwB,ErCajB;;AoC2Cb;EC5DE,0BlCiBkC,EiC2CrB;EpC3CV;;IqCbC,0BAAwB,ErCajB;;AsCfb;EACE,mBAAmB;EACnB,WAAW;EACX,sBAAsB;EACtB,oBAAoB;EACpB,mBAAmB;EACnB,iBAAiB;EACjB,kBnCmiBgC;EmCliBhC,YnC2hBgC;EmC1hBhC,mBAAmB;EACnB,oBAAoB;EACpB,0BnCJkC;EMHhC,mBNwiB6B,EmC5iBzB;EAeL;IACC,cAAc,EADP;EAKR;;IACC,UAAU,EADE;EAMa;;IACzB,enChBgC;ImCiBhC,uBnC4gB8B,EmC9gBF;EAIX;IACjB,aAAa,EADO;EAGC;IACrB,kBAAkB,EADM;EAGJ;IACpB,iBAAiB,EADM;;AtCrBtB;;EsC6BD,YnCwf8B;EmCvf9B,sBAAsB;EACtB,gBAAgB,EtC/BP;;AuCfb;EACE,mBAA+C;EAC/C,oBpCiYmC;EoChYnC,epCiYsC;EoChYtC,0BpCIkC;EMJhC,sBNyG0B,EoC7GlB;;AAQZ;EACE,epC6XsC,EoC9XpB;;AAIpB;EACE,0BAAwB,EADX;;A1B4BX;E0BvBF;IACE,mBpCiXiC,EoClXvB;EAIZ;IACE,kBpCiX6C,EoClX3B,EAAA;;AAKtB;EACE,iBAAiB;EACjB,gBAAgB;E9BxBd,iB8ByBsB,EAHR;;ACtBlB;EACE,crC6dgC;EqC5dhC,oBrCyC+B;EqCxC/B,8BAA8B;E/BH5B,uBNwG8B,EqCxG1B;EAQJ;;IACA,iBAAiB,EADb;EAGA;IACJ,gBAAgB,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AElB,oBAAoB;EACpB,uB3CifkC;E2ChflC,uB3CifkC,E2CxflB;EAUf;IpB3BD,iCvB8GgC;IuB7G/B,gCvB6G+B,E2CnFjB;EAGd;IACC,iBAAiB;IpBrBnB,oCvBoGgC;IuBnG/B,mCvBmG+B,E2ChFlB;;AAYf;EACC,Y3C2ekC,E2C5ejB;EAGjB;IACE,Y3C0egC,E2C3eR;E9C5BvB;;I8CkCD,Y3CmegC;I2ClehC,sBAAsB;IACtB,0B3CudmC,EH3f1B;;AAiBR;;;E8C2BC,e3CpD8B;E2CqD9B,oB3CsIsC;E2CrItC,0B3CrD8B,EHwBvB;E8CgCP;;;IACE,eAAe,EADS;EAG1B;;;IACE,e3C7D4B,E2C4DP;;A9CnCxB;;;E8C4CC,WAAW;EACX,Y3CmC0B;E2ClC1B,0B3CnE8B;E2CoE9B,sB3CpE8B,EHqBvB;E8CoDoB;;;;;;;;;IACzB,eAAe,EADkB;EAGnC;;;IACE,e3Csb+B,E2CvbV;;AC1FgC;EAEzD,e5CgZoC;E4C/YpC,0B5CgZoC,E4ClZpC;;AAGD;EAGC,e5C2YoC,E4C5YpC;EAGA;IACE,eAAe,EADS;E/CSzB;;I+CJC,e5CoYkC;I4CnYlC,0BAAwB,E/CGjB;EAiBR;;;I+CfG,YAAY;IACZ,0B5C6XgC;I4C5XhC,sB5C4XgC,EH/W3B;;A+CnCgD;EAEzD,e5CoZoC;E4CnZpC,0B5CoZoC,E4CtZpC;;AAGD;EAGC,e5C+YoC,E4ChZpC;EAGA;IACE,eAAe,EADS;E/CSzB;;I+CJC,e5CwYkC;I4CvYlC,0BAAwB,E/CGjB;EAiBR;;;I+CfG,YAAY;IACZ,0B5CiYgC;I4ChYhC,sB5CgYgC,EHnX3B;;A+CnCgD;EAEzD,e5CwZoC;E4CvZpC,0B5CwZoC,E4C1ZpC;;AAGD;EAGC,e5CmZoC,E4CpZpC;EAGA;IACE,eAAe,EADS;E/CSzB;;I+CJC,e5C4YkC;I4C3YlC,0BAAwB,E/CGjB;EAiBR;;;I+CfG,YAAY;IACZ,0B5CqYgC;I4CpYhC,sB5CoYgC,EHvX3B;;A+CnCgD;EAEzD,e5C4ZoC;E4C3ZpC,0B5C4ZoC,E4C9ZpC;;AAGD;EAGC,e5CuZoC,E4CxZpC;EAGA;IACE,eA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","file":"bootstrap.css"}
\ No newline at end of file diff --git a/dist/css/bootstrap.min.css b/dist/css/bootstrap.min.css index 172960832e..e0f7b502bc 100644 --- a/dist/css/bootstrap.min.css +++ b/dist/css/bootstrap.min.css @@ -2,4 +2,4 @@ * Bootstrap v4.0.0-alpha (http://getbootstrap.com) * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.2 | MIT License | git.io/normalize */.label,sub,sup{vertical-align:baseline}img,legend{border:0}address,dl,ol,p,ul{margin-bottom:1rem}b,dt,optgroup,strong{font-weight:700}caption,th{text-align:left}fieldset,legend,td,th{padding:0}pre,textarea{overflow:auto}.btn-group>.btn-group,.btn-toolbar .btn-group,.btn-toolbar .input-group,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.dropdown-menu,.table-reflow thead,.table-reflow tr{float:left}.popover-arrow,.popover-arrow:after,.tooltip-arrow{width:0;height:0;border-color:transparent;border-style:solid}.breadcrumb,.dropdown-menu,.list-inline,.list-unstyled,.media-list,.nav,.pager{list-style:none}.btn-group-vertical>.btn-group:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal:after,.dropdown-menu>li>a,.modal-footer:after,.nav:after,.navbar:after,.pager:after,.row:after{clear:both}.badge,.btn,.dropdown-header,.dropdown-menu>li>a,.input-group-btn,.label,.table-reflow tbody{white-space:nowrap}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}dfn{font-style:italic}h1{margin:.67em 0}mark{color:#000;background:#ff0}.btn-danger.active,.btn-danger:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-secondary.active,.btn-secondary:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning:active,.btn.active,.btn:active,.form-control,.open>.btn-danger.dropdown-toggle,.open>.btn-info.dropdown-toggle,.open>.btn-primary.dropdown-toggle,.open>.btn-secondary.dropdown-toggle,.open>.btn-success.dropdown-toggle,.open>.btn-warning.dropdown-toggle{background-image:none}sub,sup{position:relative;font-size:75%;line-height:0}sup{top:-.5em}sub{bottom:-.25em}img{vertical-align:middle}svg:not(:root){overflow:hidden}hr{height:0;-webkit-box-sizing:content-box;box-sizing:content-box}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}address,legend{line-height:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:none}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}textarea{resize:vertical}table{border-spacing:0;border-collapse:collapse}@media print{blockquote,img,pre,tr{page-break-inside:avoid}*,:after,:before{text-shadow:none!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}abbr[title]:after{content:" (" attr(title) ")"}blockquote,pre{border:1px solid #999}thead{display:table-header-group}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:16px;-webkit-tap-highlight-color:transparent}*,:after,:before{-webkit-box-sizing:inherit;box-sizing:inherit}@at-root{@-ms-viewport{width:device-width}@viewport{width:device-width}}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:1rem;line-height:1.5;color:#373a3c;background-color:#fff}dl,h1,h2,h3,h4,h5,h6,ol,p,ul{margin-top:0}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #818a91}address{font-style:normal}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dd,label{margin-bottom:.5rem}dd{margin-left:0}blockquote,figure{margin:0 0 1rem}a{color:#0275d8;text-decoration:none}a:focus,a:hover{color:#014c8c;text-decoration:underline}a:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}[role=button]{cursor:pointer}table{background-color:transparent}caption{padding-top:.75rem;padding-bottom:.75rem;color:#818a91;caption-side:bottom}label{display:inline-block}button,input,select,textarea{margin:0;line-height:inherit}fieldset{min-width:0;margin:0;border:0}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6,legend{margin-bottom:.5rem}legend{display:block;width:100%;font-size:1.5rem}.list-inline>li,output{display:inline-block}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#818a91}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.blockquote,hr{margin-bottom:1rem}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:2.75rem}.h2,h2{font-size:2.25rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}hr{margin-top:1rem;border:0;border-top:.0625rem solid #eceeef}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0}.list-inline{padding-left:0;margin-left:-5px}.list-inline>li{padding-right:5px;padding-left:5px}.dl-horizontal{margin-right:-1.5rem;margin-left:-1.5rem}.container,.container-fluid{margin-right:auto;margin-left:auto}.dl-horizontal:after,.dl-horizontal:before{display:table;content:" "}.initialism{font-size:90%;text-transform:uppercase}.blockquote{padding:.5rem 1rem;font-size:1.25rem;border-left:.25rem solid #eceeef}.blockquote ol:last-child,.blockquote p:last-child,.blockquote ul:last-child{margin-bottom:0}.table,pre{margin-bottom:1rem}.blockquote footer{display:block;font-size:80%;line-height:1.5;color:#818a91}code,kbd{font-size:90%}.blockquote footer:before{content:"\2014 \00A0"}.blockquote-reverse footer:before,.dropdown-toggle:after{content:""}.blockquote-reverse{padding-right:1rem;padding-left:0;text-align:right;border-right:.25rem solid #eceeef;border-left:0}.blockquote-reverse footer:after{content:"\00A0 \2014"}.container-fluid:after,.container-fluid:before,.container:after,.container:before{display:table;content:" "}.carousel-inner>.carousel-item>a>img,.carousel-inner>.carousel-item>img,.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:.3rem}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:.25rem;line-height:1.5;background-color:#fff;border:1px solid #ddd;border-radius:.25rem;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}code,kbd{padding:.2rem .4rem}.img-circle{border-radius:50%}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.popover,.tooltip{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}code{color:#d44950;background-color:#f7f7f9;border-radius:.25rem}kbd{color:#fff;background-color:#333;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;margin-top:0;font-size:90%;line-height:1.5;color:#373a3c}pre code{padding:0;font-size:inherit;color:inherit;background-color:transparent;border-radius:0}.container,.container-fluid{padding-right:.75rem;padding-left:.75rem}.pre-scrollable{max-height:340px;overflow-y:scroll}.row{margin-right:-.75rem;margin-left:-.75rem}.row:after,.row:before{display:table;content:" "}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:.75rem;padding-left:.75rem}.col-xs-1{width:8.333333%}.col-xs-2{width:16.666667%}.col-xs-3{width:25%}.col-xs-4{width:33.333333%}.col-xs-5{width:41.666667%}.col-xs-6{width:50%}.col-xs-7{width:58.333333%}.col-xs-8{width:66.666667%}.col-xs-9{width:75%}.col-xs-10{width:83.333333%}.col-xs-11{width:91.666667%}.col-xs-12{width:100%}.col-xs-pull-0{right:auto}.col-xs-pull-1{right:8.333333%}.col-xs-pull-2{right:16.666667%}.col-xs-pull-3{right:25%}.col-xs-pull-4{right:33.333333%}.col-xs-pull-5{right:41.666667%}.col-xs-pull-6{right:50%}.col-xs-pull-7{right:58.333333%}.col-xs-pull-8{right:66.666667%}.col-xs-pull-9{right:75%}.col-xs-pull-10{right:83.333333%}.col-xs-pull-11{right:91.666667%}.col-xs-pull-12{right:100%}.col-xs-push-0{left:auto}.col-xs-push-1{left:8.333333%}.col-xs-push-2{left:16.666667%}.col-xs-push-3{left:25%}.col-xs-push-4{left:33.333333%}.col-xs-push-5{left:41.666667%}.col-xs-push-6{left:50%}.col-xs-push-7{left:58.333333%}.col-xs-push-8{left:66.666667%}.col-xs-push-9{left:75%}.col-xs-push-10{left:83.333333%}.col-xs-push-11{left:91.666667%}.col-xs-push-12{left:100%}.col-xs-offset-0{margin-left:0}.col-xs-offset-1{margin-left:8.333333%}.col-xs-offset-2{margin-left:16.666667%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-4{margin-left:33.333333%}.col-xs-offset-5{margin-left:41.666667%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-7{margin-left:58.333333%}.col-xs-offset-8{margin-left:66.666667%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-10{margin-left:83.333333%}.col-xs-offset-11{margin-left:91.666667%}.col-xs-offset-12{margin-left:100%}@media (min-width:34em){.container{max-width:34rem}.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-1{width:8.333333%}.col-sm-2{width:16.666667%}.col-sm-3{width:25%}.col-sm-4{width:33.333333%}.col-sm-5{width:41.666667%}.col-sm-6{width:50%}.col-sm-7{width:58.333333%}.col-sm-8{width:66.666667%}.col-sm-9{width:75%}.col-sm-10{width:83.333333%}.col-sm-11{width:91.666667%}.col-sm-12{width:100%}.col-sm-pull-0{right:auto}.col-sm-pull-1{right:8.333333%}.col-sm-pull-2{right:16.666667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.333333%}.col-sm-pull-5{right:41.666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.333333%}.col-sm-pull-8{right:66.666667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.333333%}.col-sm-pull-11{right:91.666667%}.col-sm-pull-12{right:100%}.col-sm-push-0{left:auto}.col-sm-push-1{left:8.333333%}.col-sm-push-2{left:16.666667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.333333%}.col-sm-push-5{left:41.666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.333333%}.col-sm-push-8{left:66.666667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.333333%}.col-sm-push-11{left:91.666667%}.col-sm-push-12{left:100%}.col-sm-offset-0{margin-left:0}.col-sm-offset-1{margin-left:8.333333%}.col-sm-offset-2{margin-left:16.666667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.333333%}.col-sm-offset-5{margin-left:41.666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.333333%}.col-sm-offset-8{margin-left:66.666667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.333333%}.col-sm-offset-11{margin-left:91.666667%}.col-sm-offset-12{margin-left:100%}}@media (min-width:48em){.container{max-width:45rem}.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-1{width:8.333333%}.col-md-2{width:16.666667%}.col-md-3{width:25%}.col-md-4{width:33.333333%}.col-md-5{width:41.666667%}.col-md-6{width:50%}.col-md-7{width:58.333333%}.col-md-8{width:66.666667%}.col-md-9{width:75%}.col-md-10{width:83.333333%}.col-md-11{width:91.666667%}.col-md-12{width:100%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.333333%}.col-md-pull-2{right:16.666667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.333333%}.col-md-pull-5{right:41.666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.333333%}.col-md-pull-8{right:66.666667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.333333%}.col-md-pull-11{right:91.666667%}.col-md-pull-12{right:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.333333%}.col-md-push-2{left:16.666667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.333333%}.col-md-push-5{left:41.666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.333333%}.col-md-push-8{left:66.666667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.333333%}.col-md-push-11{left:91.666667%}.col-md-push-12{left:100%}.col-md-offset-0{margin-left:0}.col-md-offset-1{margin-left:8.333333%}.col-md-offset-2{margin-left:16.666667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.333333%}.col-md-offset-5{margin-left:41.666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.333333%}.col-md-offset-8{margin-left:66.666667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.333333%}.col-md-offset-11{margin-left:91.666667%}.col-md-offset-12{margin-left:100%}}@media (min-width:62em){.container{max-width:60rem}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-1{width:8.333333%}.col-lg-2{width:16.666667%}.col-lg-3{width:25%}.col-lg-4{width:33.333333%}.col-lg-5{width:41.666667%}.col-lg-6{width:50%}.col-lg-7{width:58.333333%}.col-lg-8{width:66.666667%}.col-lg-9{width:75%}.col-lg-10{width:83.333333%}.col-lg-11{width:91.666667%}.col-lg-12{width:100%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.333333%}.col-lg-pull-2{right:16.666667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.333333%}.col-lg-pull-5{right:41.666667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.333333%}.col-lg-pull-8{right:66.666667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.333333%}.col-lg-pull-11{right:91.666667%}.col-lg-pull-12{right:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.333333%}.col-lg-push-2{left:16.666667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.333333%}.col-lg-push-5{left:41.666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.333333%}.col-lg-push-8{left:66.666667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.333333%}.col-lg-push-11{left:91.666667%}.col-lg-push-12{left:100%}.col-lg-offset-0{margin-left:0}.col-lg-offset-1{margin-left:8.333333%}.col-lg-offset-2{margin-left:16.666667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.333333%}.col-lg-offset-5{margin-left:41.666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.333333%}.col-lg-offset-8{margin-left:66.666667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.333333%}.col-lg-offset-11{margin-left:91.666667%}.col-lg-offset-12{margin-left:100%}}@media (min-width:75em){.container{max-width:72.25rem}.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9{float:left}.col-xl-1{width:8.333333%}.col-xl-2{width:16.666667%}.col-xl-3{width:25%}.col-xl-4{width:33.333333%}.col-xl-5{width:41.666667%}.col-xl-6{width:50%}.col-xl-7{width:58.333333%}.col-xl-8{width:66.666667%}.col-xl-9{width:75%}.col-xl-10{width:83.333333%}.col-xl-11{width:91.666667%}.col-xl-12{width:100%}.col-xl-pull-0{right:auto}.col-xl-pull-1{right:8.333333%}.col-xl-pull-2{right:16.666667%}.col-xl-pull-3{right:25%}.col-xl-pull-4{right:33.333333%}.col-xl-pull-5{right:41.666667%}.col-xl-pull-6{right:50%}.col-xl-pull-7{right:58.333333%}.col-xl-pull-8{right:66.666667%}.col-xl-pull-9{right:75%}.col-xl-pull-10{right:83.333333%}.col-xl-pull-11{right:91.666667%}.col-xl-pull-12{right:100%}.col-xl-push-0{left:auto}.col-xl-push-1{left:8.333333%}.col-xl-push-2{left:16.666667%}.col-xl-push-3{left:25%}.col-xl-push-4{left:33.333333%}.col-xl-push-5{left:41.666667%}.col-xl-push-6{left:50%}.col-xl-push-7{left:58.333333%}.col-xl-push-8{left:66.666667%}.col-xl-push-9{left:75%}.col-xl-push-10{left:83.333333%}.col-xl-push-11{left:91.666667%}.col-xl-push-12{left:100%}.col-xl-offset-0{margin-left:0}.col-xl-offset-1{margin-left:8.333333%}.col-xl-offset-2{margin-left:16.666667%}.col-xl-offset-3{margin-left:25%}.col-xl-offset-4{margin-left:33.333333%}.col-xl-offset-5{margin-left:41.666667%}.col-xl-offset-6{margin-left:50%}.col-xl-offset-7{margin-left:58.333333%}.col-xl-offset-8{margin-left:66.666667%}.col-xl-offset-9{margin-left:75%}.col-xl-offset-10{margin-left:83.333333%}.col-xl-offset-11{margin-left:91.666667%}.col-xl-offset-12{margin-left:100%}}.table{width:100%;max-width:100%}.table td,.table th{padding:.75rem;line-height:1.5;vertical-align:top;border-top:1px solid #eceeef}.table thead th{vertical-align:bottom;border-bottom:2px solid #eceeef}.table tbody+tbody{border-top:2px solid #eceeef}.table .table{background-color:#fff}.table-sm td,.table-sm th{padding:.3rem}.table-bordered,.table-bordered td,.table-bordered th{border:1px solid #eceeef}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-striped tbody tr:nth-of-type(odd){background-color:#f9f9f9}.table-active,.table-active>td,.table-active>th,.table-hover tbody tr:hover{background-color:#f5f5f5}.table-hover .table-active:hover,.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:#e8e8e8}.table-success,.table-success>td,.table-success>th{background-color:#dff0d8}.table-hover .table-success:hover,.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#d0e9c6}.table-info,.table-info>td,.table-info>th{background-color:#d9edf7}.table-hover .table-info:hover,.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#c4e3f3}.table-warning,.table-warning>td,.table-warning>th{background-color:#fcf8e3}.table-hover .table-warning:hover,.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#faf2cc}.table-danger,.table-danger>td,.table-danger>th{background-color:#f2dede}.table-hover .table-danger:hover,.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#ebcccc}.table-responsive{display:block;width:100%;overflow-x:auto}.collapsing,.embed-responsive,.media,.media-body,.modal,.modal-open{overflow:hidden}.thead-inverse th{color:#fff;background-color:#373a3c}.thead-default th{color:#55595c;background-color:#eceeef}.table-inverse{color:#eceeef;background-color:#373a3c}.table-inverse.table-bordered{border:0}.table-inverse td,.table-inverse th,.table-inverse thead th{border-color:#55595c}.table-reflow tbody{display:block}.table-reflow td,.table-reflow th{border-top:1px solid #eceeef;border-left:1px solid #eceeef}.table-reflow td:last-child,.table-reflow th:last-child{border-right:1px solid #eceeef}.table-reflow tbody:last-child tr:last-child td,.table-reflow tbody:last-child tr:last-child th,.table-reflow tfoot:last-child tr:last-child td,.table-reflow tfoot:last-child tr:last-child th,.table-reflow thead:last-child tr:last-child td,.table-reflow thead:last-child tr:last-child th{border-bottom:1px solid #eceeef}.table-reflow tr td,.table-reflow tr th{display:block!important;border:1px solid #eceeef}.form-control,.form-control-file,.form-control-range{display:block}.form-control{width:100%;padding:.5rem .75rem;font-size:1rem;line-height:1.5;color:#55595c;background-color:#fff;border:1px solid #ccc;border-radius:.25rem;-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:not(select[multiple]),.form-control:not(select[size]),.form-control:not(textarea){height:2.625rem}.form-control:focus{border-color:#66afe9;outline:0}.form-control::-webkit-input-placeholder{color:#999;opacity:1}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999;opacity:1}.form-control::placeholder{color:#999;opacity:1}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .form-control-feedback,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.form-control:disabled,.form-control[readonly],fieldset[disabled] .form-control{background-color:#eceeef;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:false}.form-control-label{padding:.5625rem .75rem;margin-bottom:0}.form-control-static{min-height:2.625rem;padding-top:.5625rem;padding-bottom:.5625rem;margin-bottom:0}.form-control-static.form-control-lg,.form-control-static.form-control-sm,.input-group-lg>.form-control-static.form-control,.input-group-lg>.form-control-static.input-group-addon,.input-group-lg>.input-group-btn>.form-control-static.btn,.input-group-sm>.form-control-static.form-control,.input-group-sm>.form-control-static.input-group-addon,.input-group-sm>.input-group-btn>.form-control-static.btn{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:2rem;padding:.3rem .75rem;font-size:.85rem;line-height:1.5;border-radius:.2rem}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:3.291667rem;padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.333333;border-radius:.3rem}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-bottom:.75rem}.checkbox label,.radio label{padding-left:1.25rem;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox label input:only-child,.radio label input:only-child{position:static}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:.25rem;margin-left:-1.25rem}.collapsing,.dropdown,.dropup,.has-feedback{position:relative}.checkbox+.checkbox,.radio+.radio{margin-top:-.25rem}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:1.25rem;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:.75rem}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox]:disabled,input[type=radio].disabled,input[type=radio]:disabled{cursor:false}.checkbox-inline.disabled,.checkbox.disabled label,.radio-inline.disabled,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio label,fieldset[disabled] .radio-inline{cursor:false}.has-feedback .form-control{padding-right:3.28125rem}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:2.625rem;height:2.625rem;line-height:2.625rem;text-align:center;pointer-events:none}.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:3.291667rem;height:3.291667rem;line-height:3.291667rem}.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:2rem;height:2rem;line-height:2rem}.has-success .form-control{border-color:#3c763d}.has-success .form-control:focus{border-color:#2b542c}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .form-control-feedback,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b}.has-warning .form-control:focus{border-color:#66512c}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .form-control-feedback,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442}.has-error .form-control:focus{border-color:#843534}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-feedback label~.form-control-feedback{top:6}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:.25rem;margin-bottom:.75rem;color:#747a7f}@media (min-width:34em){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.btn{display:inline-block;padding:.5rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:.0625rem solid transparent;border-radius:.25rem;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{text-decoration:none}.btn.active,.btn:active{outline:0}.btn.disabled,.btn:disabled,fieldset[disabled] .btn{cursor:false;opacity:.65}a.btn.disaabled,fieldset[disabled] a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#0275d8;border-color:#0267bf}.btn-primary.active,.btn-primary.focus,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open>.btn-primary.dropdown-toggle{color:#fff;background-color:#025aa5;border-color:#014682}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary:disabled,.btn-primary:disabled.active,.btn-primary:disabled.focus,.btn-primary:disabled:active,.btn-primary:disabled:focus,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus{background-color:#0275d8;border-color:#0267bf}.btn-primary.disabled:hover,.btn-primary:disabled:hover,fieldset[disabled] .btn-primary:hover{background-color:#0275d8;border-color:#0267bf}.btn-primary .badge{color:#0275d8;background-color:#fff}.btn-secondary{color:#373a3c;background-color:#fff;border-color:#ccc}.btn-secondary.active,.btn-secondary.focus,.btn-secondary:active,.btn-secondary:focus,.btn-secondary:hover,.open>.btn-secondary.dropdown-toggle{color:#373a3c;background-color:#e6e6e6;border-color:#adadad}.btn-secondary.disabled,.btn-secondary.disabled.active,.btn-secondary.disabled.focus,.btn-secondary.disabled:active,.btn-secondary.disabled:focus,.btn-secondary:disabled,.btn-secondary:disabled.active,.btn-secondary:disabled.focus,.btn-secondary:disabled:active,.btn-secondary:disabled:focus,fieldset[disabled] .btn-secondary,fieldset[disabled] .btn-secondary.active,fieldset[disabled] .btn-secondary.focus,fieldset[disabled] .btn-secondary:active,fieldset[disabled] .btn-secondary:focus{background-color:#fff;border-color:#ccc}.btn-secondary.disabled:hover,.btn-secondary:disabled:hover,fieldset[disabled] .btn-secondary:hover{background-color:#fff;border-color:#ccc}.btn-secondary .badge{color:#fff;background-color:#373a3c}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.active,.btn-info.focus,.btn-info:active,.btn-info:focus,.btn-info:hover,.open>.btn-info.dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info:disabled,.btn-info:disabled.active,.btn-info:disabled.focus,.btn-info:disabled:active,.btn-info:disabled:focus,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus{background-color:#5bc0de;border-color:#46b8da}.btn-info.disabled:hover,.btn-info:disabled:hover,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.active,.btn-success.focus,.btn-success:active,.btn-success:focus,.btn-success:hover,.open>.btn-success.dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success:disabled,.btn-success:disabled.active,.btn-success:disabled.focus,.btn-success:disabled:active,.btn-success:disabled:focus,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus{background-color:#5cb85c;border-color:#4cae4c}.btn-success.disabled:hover,.btn-success:disabled:hover,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.active,.btn-warning.focus,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open>.btn-warning.dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning:disabled,.btn-warning:disabled.active,.btn-warning:disabled.focus,.btn-warning:disabled:active,.btn-warning:disabled:focus,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus{background-color:#f0ad4e;border-color:#eea236}.btn-warning.disabled:hover,.btn-warning:disabled:hover,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.active,.btn-danger.focus,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open>.btn-danger.dropdown-toggle{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger:disabled,.btn-danger:disabled.active,.btn-danger:disabled.focus,.btn-danger:disabled:active,.btn-danger:disabled:focus,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus{background-color:#d9534f;border-color:#d43f3a}.btn-danger.disabled:hover,.btn-danger:disabled:hover,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#0275d8;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link:disabled,fieldset[disabled] .btn-link{background-color:transparent}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#014c8c;text-decoration:underline;background-color:transparent}.btn-link:disabled:focus,.btn-link:disabled:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#818a91;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.333333;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.3rem .75rem;font-size:.85rem;line-height:1.5;border-radius:.2rem}.btn-group-xs>.btn,.btn-xs{padding:.2rem .5rem;font-size:.75rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{height:0;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height;-o-transition-property:height;transition-property:height}.dropdown-toggle:after{display:inline-block;width:0;height:0;margin-left:.25rem;vertical-align:middle;border-top:.3em solid;border-right:.3em solid transparent;border-left:.3em solid transparent}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:1rem;text-align:left;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.badge,.c-indicator,.label,.pager{text-align:center}.dropdown-menu .divider{height:1px;margin:.5rem 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;font-weight:400;line-height:1.5;color:#373a3c}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#2b2d2f;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#0275d8;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#818a91}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:false;background-color:transparent;background-image:none;filter:"progid:DXImageTransform.Microsoft.gradient(enabled = false)"}.c-input,.file,.select>select{cursor:pointer}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:.85rem;line-height:1.5;color:#818a91}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover,.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:.3em solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar:after,.btn-toolbar:before{display:table;content:" "}.btn-toolbar:after{clear:both}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn .caret,.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group-lg.btn-group>.btn+.dropdown-toggle,.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group-lg>.btn .caret,.btn-lg .caret{border-width:.3em .3em 0}.dropup .btn-group-lg>.btn .caret,.dropup .btn-lg .caret{border-width:0 .3em .3em}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before{display:table;content:" "}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:.25rem;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:.25rem}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.c-input,.input-group,.input-group-btn,.input-group-btn>.btn{position:relative}.input-group{display:table;border-collapse:separate}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:.5rem .75rem;font-size:1rem;font-weight:400;line-height:1;color:#55595c;text-align:center;background-color:#eceeef;border:1px solid #ccc;border-radius:.25rem}.alert-link,.badge,.close,.label{font-weight:700}.input-group-addon.form-control-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn{padding:.3rem .75rem;font-size:.85rem;border-radius:.2rem}.input-group-addon.form-control-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn{padding:.75rem 1.5rem;font-size:1.25rem;border-radius:.3rem}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{font-size:0}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.c-input{display:inline;padding-left:1.5rem;color:#555}.c-input>input{position:absolute;z-index:-1;opacity:0}.c-input>input:checked~.c-indicator{color:#fff;background-color:#0074d9}.c-input>input:active~.c-indicator{color:#fff;background-color:#84c6ff}.c-input+.c-input{margin-left:1rem}.c-indicator{position:absolute;top:0;left:0;display:block;width:1rem;height:1rem;font-size:65%;line-height:1rem;color:#eee;-ms-user-select:none;user-select:none;background-color:#eee;background-repeat:no-repeat;background-position:center center;-webkit-background-size:50% 50%;background-size:50% 50%}.c-indicator,.file-custom{-webkit-user-select:none;-moz-user-select:none}.c-checkbox .c-indicator{border-radius:.25rem}.c-checkbox input:checked~.c-indicator{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNy4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgOCA4IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA4IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHBhdGggZmlsbD0iI0ZGRkZGRiIgZD0iTTYuNCwxTDUuNywxLjdMMi45LDQuNUwyLjEsMy43TDEuNCwzTDAsNC40bDAuNywwLjdsMS41LDEuNWwwLjcsMC43bDAuNy0wLjdsMy41LTMuNWwwLjctMC43TDYuNCwxTDYuNCwxeiINCgkvPg0KPC9zdmc+DQo=)}.c-checkbox input:indeterminate~.c-indicator{background-color:#0074d9;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNy4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB3aWR0aD0iOHB4IiBoZWlnaHQ9IjhweCIgdmlld0JveD0iMCAwIDggOCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgOCA4IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxwYXRoIGZpbGw9IiNGRkZGRkYiIGQ9Ik0wLDN2Mmg4VjNIMHoiLz4NCjwvc3ZnPg0K)}.c-radio .c-indicator{border-radius:50%}.c-radio input:checked~.c-indicator{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNy4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgOCA4IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA4IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHBhdGggZmlsbD0iI0ZGRkZGRiIgZD0iTTQsMUMyLjMsMSwxLDIuMywxLDRzMS4zLDMsMywzczMtMS4zLDMtM1M1LjcsMSw0LDF6Ii8+DQo8L3N2Zz4NCg==)}.c-inputs-stacked .c-input{display:inline}.c-inputs-stacked .c-input:after{display:block;margin-bottom:.25rem;content:""}.c-inputs-stacked .c-input+.c-input{margin-left:0}.select{position:relative;display:inline-block;color:#555}.select>select{display:inline-block;width:100%;-webkit-appearance:none;padding:.5rem 2.25rem .5rem 1rem;margin:0;line-height:1.5;color:#555;background-color:#eee;border:0;border-radius:.25rem;outline:0;appearance:none}.file-custom,.file-custom:before{color:#555;border:.075rem solid #ddd}.select>select:focus{-webkit-box-shadow:0 0 0 .075rem #fff,0 0 0 .2rem #0074d9;box-shadow:0 0 0 .075rem #fff,0 0 0 .2rem #0074d9}.select>select:focus:-moz-focusring{color:transparent;text-shadow:0 0 0 #000}.select>select:active{color:#fff;background-color:#0074d9}.select>select::-ms-expand{display:none}.select:after{position:absolute;top:50%;right:1.25rem;display:inline-block;width:0;height:0;margin-top:-.15rem;pointer-events:none;content:"";border-top:.35rem solid;border-right:.35rem solid transparent;border-bottom:.35rem solid transparent;border-left:.35rem solid transparent}.select select:hover{background-color:#ddd}@-moz-document url-prefix(){.select select{padding-right:1rem;text-indent:.01px;text-overflow:""}.select option{background-color:#fff}}@media screen and (min-width:0\0){.select select{z-index:1;padding:.5rem 1.5rem .5rem 1rem}.select:after{z-index:5}.select:before{position:absolute;top:0;right:1rem;bottom:0;z-index:2;display:block;width:1.5rem;content:"";background-color:#eee}.select select:active,.select select:focus,.select select:hover{color:#555;background-color:#eee}}.card-columns .card,.card-group,.progress{width:100%}.file-custom,.file-custom:before{position:absolute;padding:.5rem 1rem}.file{position:relative;display:inline-block;height:2.5rem}.file input{min-width:14rem;margin:0;filter:alpha(opacity=0);opacity:0}.nav-pills .nav-item+.nav-item,.nav-tabs .nav-item+.nav-item{margin-left:.2rem}.file-custom{top:0;right:0;left:0;z-index:5;height:2.5rem;line-height:1.5;-ms-user-select:none;user-select:none;background-color:#fff;border-radius:.25rem;-webkit-box-shadow:inset 0 .2rem .4rem rgba(0,0,0,.05);box-shadow:inset 0 .2rem .4rem rgba(0,0,0,.05)}.file-custom:after{content:"Choose file..."}.file-custom:before{top:-.075rem;right:-.075rem;bottom:-.075rem;z-index:6;display:block;height:2.5rem;line-height:1.5;content:"Browse";background-color:#eee;border-radius:0 .25rem .25rem 0}.navbar-brand,.navbar-toggler{margin-bottom:0;line-height:1}.nav-item,.navbar{position:relative}.file input:focus~.file-custom{-webkit-box-shadow:0 0 0 .075rem #fff,0 0 0 .2rem #0074d9;box-shadow:0 0 0 .075rem #fff,0 0 0 .2rem #0074d9}.nav{padding-left:0;margin-bottom:0}.nav:after,.nav:before{display:table;content:" "}.nav-item,.nav-link{display:inline-block}.nav-link{padding:.75em 1em;line-height:1}.nav-link:focus,.nav-link:hover{text-decoration:none;background-color:#eceeef}.disabled>.nav-link,.nav-link.disabled{color:#818a91}.disabled>.nav-link,.disabled>.nav-link:focus,.disabled>.nav-link:hover,.nav-link.disabled,.nav-link.disabled:focus,.nav-link.disabled:hover{color:#818a91;cursor:false;background-color:transparent}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs .nav-item{float:left;margin-bottom:-1px}.nav-tabs .nav-link{display:block;border:1px solid transparent;border-radius:.25rem .25rem 0 0}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#eceeef #eceeef #ddd}.nav-tabs .active>.nav-link,.nav-tabs .active>.nav-link:focus,.nav-tabs .active>.nav-link:hover,.nav-tabs .nav-link.active,.nav-tabs .nav-link.active:focus,.nav-tabs .nav-link.active:hover,.nav-tabs .nav-link.open,.nav-tabs .nav-link.open:focus,.nav-tabs .nav-link.open:hover,.nav-tabs .open>.nav-link,.nav-tabs .open>.nav-link:focus,.nav-tabs .open>.nav-link:hover{color:#55595c;background-color:#fff;border-color:#ddd #ddd transparent}.nav-tabs .disabled>.nav-link,.nav-tabs .disabled>.nav-link:focus,.nav-tabs .disabled>.nav-link:hover,.nav-tabs .nav-link.disabled,.nav-tabs .nav-link.disabled:focus,.nav-tabs .nav-link.disabled:hover{color:#818a91;background-color:transparent;border-color:transparent}.nav-pills .nav-item{float:left}.nav-pills .nav-link{display:block;border-radius:.25rem}.nav-pills .active>.nav-link,.nav-pills .active>.nav-link:focus,.nav-pills .active>.nav-link:hover,.nav-pills .nav-link.active,.nav-pills .nav-link.active:focus,.nav-pills .nav-link.active:hover,.nav-pills .nav-link.open,.nav-pills .nav-link.open:focus,.nav-pills .nav-link.open:hover,.nav-pills .open>.nav-link,.nav-pills .open>.nav-link:focus,.nav-pills .open>.nav-link:hover{color:#fff;cursor:default;background-color:#0275d8}.nav-stacked .nav-item{display:block;float:none}.nav-stacked .nav-item+.nav-item{margin-top:.2rem;margin-left:0}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{padding:1rem;margin-bottom:1}.navbar:after,.navbar:before{display:table;content:" "}.navbar-static-top{z-index:1000}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0}.navbar-fixed-top{top:0}.navbar-fixed-bottom{bottom:0}.navbar-sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1030;width:100%}.navbar-brand{float:left;padding:.625rem .75rem;margin-right:1rem;font-size:1.25rem}.navbar-brand>a:focus,.navbar-brand>a:hover{text-decoration:none}.navbar-brand>img{display:block}.navbar-toggler{padding:.55rem .75rem;margin-right:1rem;font-size:1.25rem;background:0 0;border:0}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}@media (min-width:34em){.navbar{border-radius:.25rem}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top,.navbar-sticky-top{border-radius:0}.navbar-toggleable-xs{display:block!important}}@media (min-width:48em){.navbar-toggleable-sm{display:block!important}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.card-header,.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-radius:.25rem .25rem 0 0}.navbar-condensed{padding-top:0;padding-bottom:0}.navbar-condensed .navbar-brand,.navbar-nav .nav-link{padding-top:.95rem;padding-bottom:.95rem}.navbar-condensed .form-inline{margin-top:.6rem}.navbar-nav .nav-item{float:left}.navbar-nav .nav-link{display:block;line-height:1.25}.navbar-nav .active>.nav-link,.navbar-nav .active>.nav-link:focus,.navbar-nav .active>.nav-link:hover,.navbar-nav .nav-link.active,.navbar-nav .nav-link.active:focus,.navbar-nav .nav-link.active:hover,.navbar-nav .nav-link.open,.navbar-nav .nav-link.open:focus,.navbar-nav .nav-link.open:hover,.navbar-nav .open>.nav-link,.navbar-nav .open>.nav-link:focus,.navbar-nav .open>.nav-link:hover{color:#555;cursor:default;background-color:#e7e7e7}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-inverse{background-color:#373a3c;border-color:#1f2021}.navbar-inverse .nav-pills>.nav-item>.nav-link,.navbar-inverse .navbar-brand>a,.navbar-inverse .navbar-toggler{color:#aab0b5}.navbar-inverse .nav-pills>.nav-item>.nav-link:focus,.navbar-inverse .nav-pills>.nav-item>.nav-link:hover,.navbar-inverse .navbar-brand>a:focus,.navbar-inverse .navbar-brand>a:hover,.navbar-inverse .navbar-toggler:focus,.navbar-inverse .navbar-toggler:hover{color:#fff}.navbar-inverse .nav-pills>.active>.nav-link,.navbar-inverse .nav-pills>.nav-item>.nav-link:focus,.navbar-inverse .nav-pills>.nav-item>.nav-link:hover,.navbar-inverse .nav-pills>.nav-link.active{color:#fff;background-color:#1f2021}.navbar-inverse .navbar-brand{color:#aab0b5}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#a2a8ae}.navbar-inverse .navbar-nav>li>a{color:#aab0b5}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#1f2021}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#262829}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#1f2021}.navbar-inverse .navbar-link{color:#aab0b5}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#aab0b5}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link:disabled:focus,.navbar-inverse .btn-link:disabled:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.card{position:relative;padding:1.25rem;margin-bottom:1.25rem;border:.075rem solid #eee}.card-title{margin-top:0;margin-bottom:.75rem}.card-text:last-child{margin-bottom:0}.card-actions .card-link+.card-link{margin-left:.75rem}.card-link:hover{text-decoration:none}.card-header{padding:.75rem 1.25rem;margin:-1.25rem -1.25rem 1.25rem;border-bottom:.075rem solid #eee}.card-footer{padding:.75rem 1.25rem;margin:1.25rem -1.25rem -1.25rem;border-top:.075rem solid #eee;border-radius:0 0 .25rem .25rem}.card-primary{background-color:#0275d8;border-color:#0275d8}.card-success{background-color:#5cb85c;border-color:#5cb85c}.card-info{background-color:#5bc0de;border-color:#5bc0de}.card-warning{background-color:#f0ad4e;border-color:#f0ad4e}.card-danger{background-color:#d9534f;border-color:#d9534f}.card-inverse .card-footer,.card-inverse .card-header{border-bottom:.075rem solid rgba(255,255,255,.2)}.card-inverse .card-blockquote,.card-inverse .card-footer,.card-inverse .card-header,.card-inverse .card-title{color:#fff}.card-inverse .card-blockquote>footer,.card-inverse .card-link,.card-inverse .card-text{color:rgba(255,255,255,.65)}.card-inverse .card-link:focus,.card-inverse .card-link:hover{color:#fff}.card-blockquote{padding:0;margin-bottom:0;border-left:0}.card-img{margin:-1.325rem;border-radius:.25rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img-top{margin:-1.325rem -1.325rem 1.25rem;border-radius:.25rem .25rem 0 0}.card-img-bottom{margin:1.25rem -1.325rem -1.325rem;border-radius:0 0 .25rem .25rem}.card-set{display:table;table-layout:fixed;border-spacing:1.25rem 0}.card-set .card{display:table-cell;float:none;max-width:none}.card-set-wrapper{margin-right:-1.25rem;margin-left:-1.25rem}.card-group{display:table;table-layout:fixed}.card-group .card{display:table-cell;float:none;max-width:none}.breadcrumb>li,.card-columns .card,.pagination{display:inline-block}.card-group .card+.card{margin-left:0;border-left:0}.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1rem;-moz-column-gap:1rem;column-gap:1rem}.breadcrumb{padding:.75rem 1rem;margin-bottom:1rem;background-color:#eceeef;border-radius:.25rem}.breadcrumb>li+li:before{padding-right:.5rem;padding-left:.5rem;color:#818a91;content:"/\00a0"}.breadcrumb>.active{color:#818a91}.pagination{padding-left:0;margin:1rem 0;border-radius:.25rem}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:.5rem .75rem;margin-left:-1px;line-height:1.5;color:#0275d8;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{color:#014c8c;background-color:#eceeef;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#0275d8;border-color:#0275d8}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#818a91;cursor:false;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm>li>a,.pagination-sm>li>span{padding:.3rem .75rem;font-size:.85rem}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.pager{padding-left:0;margin-top:1rem;margin-bottom:1rem}.pager:after,.pager:before{display:table;content:" "}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eceeef}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#818a91;cursor:false;background-color:#fff}.pager-next>a,.pager-next>span{float:right}.pager-prev>a,.pager-prev>span{float:left}.close,.list-group-item>.badge{float:right}.label{display:inline-block;padding:.25em .4em;font-size:75%;line-height:1;color:#fff;border-radius:.25rem}.label:empty{display:none}.btn .label{position:relative;top:-1px}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label-default{background-color:#818a91}.label-default[href]:focus,.label-default[href]:hover{background-color:#687077}.label-primary{background-color:#0275d8}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#025aa5}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{position:relative;top:-.1em;display:inline-block;padding-right:.6em;padding-left:.6em;font-size:.75em;color:#fff;background-color:#818a91;border-radius:2em}.badge:empty{display:none}.badge.pull-left,.badge.pull-right{top:.2em}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#0275d8;background-color:#fff}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.alert-heading,.jumbotron,.jumbotron-heading{color:inherit}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#eceeef;border-radius:.3rem}.jumbotron-hr{border-top-color:#d0d5d8}@media (min-width:34em){.jumbotron{padding:4rem 2rem}.jumbotron-heading{font-size:4.5rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{padding:15px;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-heading{margin-top:0}.alert-dismissible{padding-right:35px}.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d0e9c6}.alert-success hr{border-top-color:#c1e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bcdff1}.alert-info hr{border-top-color:#a6d5ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faf2cc}.alert-warning hr{border-top-color:#f7ecb5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebcccc}.alert-danger hr{border-top-color:#e4b9b9}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:block;height:1rem;margin-bottom:1rem}.progress[value]{color:#0074d9;border:0;appearance:none}.progress[value]::-webkit-progress-bar{background-color:#eee;border-radius:.25rem}.progress[value]::-webkit-progress-value::before{content:attr(value)}.progress[value]::-webkit-progress-value{background-color:#0074d9;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.progress[value="100"]::-webkit-progress-value{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}@media screen and ("min-width:0\0"){.progress{background-color:#eee;border-radius:.25rem}.progress-bar{display:inline-block;height:1rem;text-indent:-999rem;background-color:#0074d9;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.progress[width^="0"]{min-width:2rem;color:#818a91;background-color:transparent;background-image:none}.progress[width="100%"]{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}}.progress-striped[value]::-webkit-progress-value{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:1rem 1rem;background-size:1rem 1rem}.progress-striped[value]::-moz-progress-bar{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-animated[value]::-webkit-progress-value{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-animated[value]::-moz-progress-bar{animation:progress-bar-stripes 2s linear infinite}.progress-success[value]::-webkit-progress-value{background-color:#5cb85c}.progress-success[value]::-moz-progress-bar{background-color:#5cb85c}@media screen and ("min-width:0\0"){.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:1rem 1rem;background-size:1rem 1rem}.progress-animated .progress-bar-striped{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-success .progress-bar{background-color:#5cb85c}}.progress-info[value]::-webkit-progress-value{background-color:#5bc0de}.progress-info[value]::-moz-progress-bar{background-color:#5bc0de}@media screen and ("min-width:0\0"){.progress-info .progress-bar{background-color:#5bc0de}}.progress-warning[value]::-webkit-progress-value{background-color:#f0ad4e}.progress-warning[value]::-moz-progress-bar{background-color:#f0ad4e}@media screen and ("min-width:0\0"){.progress-warning .progress-bar{background-color:#f0ad4e}}.progress-danger[value]::-webkit-progress-value{background-color:#d9534f}.progress-danger[value]::-moz-progress-bar{background-color:#d9534f}@media screen and ("min-width:0\0"){.progress-danger .progress-bar{background-color:#d9534f}}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1}.media-body{width:10000px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-object{display:block}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#818a91;cursor:false;background-color:#eceeef}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#818a91}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#0275d8;border-color:#0275d8}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#a8d6fe}.list-group-item-state{color:#a94442;background-color:#f2dede}a.list-group-item-state{color:#a94442}a.list-group-item-state .list-group-item-heading{color:inherit}a.list-group-item-state:focus,a.list-group-item-state:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-state.active,a.list-group-item-state.active:focus,a.list-group-item-state.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.embed-responsive{position:relative;display:block;height:0;padding:0}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.close{font-size:1.5rem;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-content,.popover{border:1px solid rgba(0,0,0,.2)}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:transition .3s ease-out,translate(0,-25%);-ms-transform:transition .3s ease-out,translate(0,-25%);-o-transform:transition .3s ease-out,translate(0,-25%);transform:transition .3s ease-out,translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;background-clip:padding-box;border-radius:.3rem;outline:0}.modal-content,.popover{-webkit-background-clip:padding-box}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.in{opacity:.5}.modal-header{min-height:16.5px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.5}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:after,.modal-footer:before{display:table;content:" "}.popover-arrow:after,.popover-bottom>.popover-arrow:after,.popover-left>.popover-arrow:after,.popover-right>.popover-arrow:after,.popover-top>.popover-arrow:after{content:""}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:34em){.modal-dialog{width:600px;margin:30px auto}.modal-sm{width:300px}}@media (min-width:48em){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-size:.85rem;font-weight:400;line-height:1.4;opacity:0}.tooltip.in{opacity:.9}.tooltip-top{padding:5px 0;margin-top:-3px}.tooltip-right{padding:0 5px;margin-left:3px}.tooltip-bottom{padding:5px 0;margin-top:3px}.tooltip-left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:.25rem}.tooltip-arrow{position:absolute}.tooltip-top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip-right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip-left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip-bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-size:1rem;font-weight:400;line-height:1.5;text-align:left;white-space:normal;background-color:#fff;background-clip:padding-box;border-radius:.3rem}.text-nowrap,.text-truncate{white-space:nowrap}.popover-top{margin-top:-10px}.popover-right{margin-left:10px}.popover-bottom{margin-top:10px}.popover-left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:-.7rem -.7rem 0 0}.popover-content{padding:9px 14px}.popover-arrow,.popover-arrow:after{position:absolute;display:block}.carousel,.carousel-inner{position:relative}.popover-arrow{border-width:11px}.popover-arrow:after{border-width:10px}.popover-top>.popover-arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover-top>.popover-arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0}.popover-right>.popover-arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover-right>.popover-arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0}.popover-bottom>.popover-arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:rgba(0,0,0,.25)}.popover-bottom>.popover-arrow:after{top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover-left>.popover-arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:rgba(0,0,0,.25)}.popover-left>.popover-arrow:after{right:1px;bottom:-10px;border-right-width:0;border-left-color:#fff}.carousel-inner{width:100%;overflow:hidden}.carousel-inner>.carousel-item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.carousel-item>a>img,.carousel-inner>.carousel-item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.carousel-item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;perspective:1000}.carousel-inner>.carousel-item.active.right,.carousel-inner>.carousel-item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.carousel-item.active.left,.carousel-inner>.carousel-item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.carousel-item.active,.carousel-inner>.carousel-item.next.left,.carousel-inner>.carousel-item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);opacity:.5}.carousel-control.left{background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;width:20px;height:20px;margin-top:-10px;font-family:serif;line-height:1}.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-prev:before{content:"\2039"}.carousel-control .icon-next:before{content:"\203a"}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:transparent;border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn,.text-hide{text-shadow:none}@media (min-width:34em){.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .icon-prev{margin-left:-15px}.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.p-a-0,.sr-only{padding:0}.clearfix:after,.clearfix:before{display:table;content:" "}.center-block{display:block;margin-right:auto;margin-left:auto}.hidden-xl-down,.hidden-xs-up,.visible-print-block,[hidden]{display:none!important}.pull-right{float:right!important}.pull-left{float:left!important}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.m-a-0{margin:0}.m-t-0{margin-top:0}.m-t,.m-y{margin-top:1rem}.m-r-0{margin-right:0}.m-r,.m-x{margin-right:1rem}.m-b-0{margin-bottom:0}.m-b,.m-y{margin-bottom:1rem}.m-l-0{margin-left:0}.m-l,.m-x{margin-left:1rem}.m-a{margin:1rem}.m-l-md,.m-x-md{margin-left:1.5rem}.m-r-md,.m-x-md{margin-right:1.5rem}.m-b-md,.m-y-md{margin-bottom:1.5rem}.m-t-md,.m-y-md{margin-top:1.5rem}.m-l-lg,.m-x-lg{margin-left:3rem}.m-r-lg,.m-x-lg{margin-right:3rem}.m-b-lg,.m-y-lg{margin-bottom:3rem}.m-t-lg,.m-y-lg{margin-top:3rem}.p-t-0{padding-top:0}.p-t,.p-y{padding-top:1rem}.p-r-0{padding-right:0}.p-r,.p-x{padding-right:1rem}.p-b-0{padding-bottom:0}.p-b,.p-y{padding-bottom:1rem}.p-l-0{padding-left:0}.p-l,.p-x{padding-left:1rem}.p-a{padding:1rem}.p-l-md,.p-x-md{padding-left:1.5rem}.p-r-md,.p-x-md{padding-right:1.5rem}.p-b-md,.p-y-md{padding-bottom:1.5rem}.p-t-md,.p-y-md{padding-top:1.5rem}.p-l-lg,.p-x-lg{padding-left:3rem}.p-r-lg,.p-x-lg{padding-right:3rem}.p-b-lg,.p-y-lg{padding-bottom:3rem}.p-t-lg,.p-y-lg{padding-top:3rem}.pos-f-t{position:fixed;top:0;right:0;left:0;z-index:1030}.invisible{visibility:hidden}.text-hide{font:"0/0" a;color:transparent;background-color:transparent;border:0}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-truncate{overflow:hidden;text-overflow:ellipsis}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#818a91}.text-primary{color:#0275d8}a.text-primary:focus,a.text-primary:hover{color:#025aa5}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.inverse{color:#eceeef;background-color:#373a3c}.bg-primary{color:#fff;background-color:#0275d8}a.bg-primary:focus,a.bg-primary:hover{background-color:#025aa5}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}@media (max-width:33.9em){.hidden-xs-down{display:none!important}}@media (min-width:34em){.hidden-sm-up{display:none!important}}@media (max-width:47.9em){.hidden-sm-down{display:none!important}}@media (min-width:48em){.hidden-md-up{display:none!important}}@media (max-width:61.9em){.hidden-md-down{display:none!important}}@media (min-width:62em){.hidden-lg-up{display:none!important}}@media (max-width:74.9em){.hidden-lg-down{display:none!important}}@media (min-width:75em){.hidden-xl-up{display:none!important}}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}.hidden-print .hidden-print{display:none!important}}
\ No newline at end of file + *//*! normalize.css v3.0.2 | MIT License | git.io/normalize */.collapsing,.embed-responsive,.media,.media-body,.modal,.modal-open{overflow:hidden}img,legend{border:0}address,dl,ol,p,ul{margin-bottom:1rem}b,dt,optgroup,strong{font-weight:700}caption,th{text-align:left}fieldset,legend,td,th{padding:0}dl,h1,h2,h3,h4,h5,h6,ol,p,pre,ul{margin-top:0}pre,textarea{overflow:auto}.btn-group>.btn-group,.btn-toolbar .btn-group,.btn-toolbar .input-group,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.dropdown-menu,.table-reflow thead,.table-reflow tr{float:left}.form-control-feedback,.select:after,a.btn.disaabled,fieldset[disabled] a.btn{pointer-events:none}.btn-group-vertical>.btn-group:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal:after,.dropdown-menu>li>a,.modal-footer:after,.nav:after,.navbar:after,.pager:after,.row:after{clear:both}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}dfn{font-style:italic}h1{margin:.67em 0}mark{color:#000;background:#ff0}.btn-danger.active,.btn-danger:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-secondary.active,.btn-secondary:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning:active,.btn.active,.btn:active,.form-control,.open>.btn-danger.dropdown-toggle,.open>.btn-info.dropdown-toggle,.open>.btn-primary.dropdown-toggle,.open>.btn-secondary.dropdown-toggle,.open>.btn-success.dropdown-toggle,.open>.btn-warning.dropdown-toggle{background-image:none}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{vertical-align:middle}svg:not(:root){overflow:hidden}hr{height:0;-webkit-box-sizing:content-box;box-sizing:content-box}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}address,legend{line-height:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:none}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}textarea{resize:vertical}table{border-spacing:0;border-collapse:collapse}@media print{blockquote,img,pre,tr{page-break-inside:avoid}*,:after,:before{text-shadow:none!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}abbr[title]:after{content:" (" attr(title) ")"}blockquote,pre{border:1px solid #999}thead{display:table-header-group}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:16px;-webkit-tap-highlight-color:transparent}*,:after,:before{-webkit-box-sizing:inherit;box-sizing:inherit}@-ms-viewport{width:device-width}@viewport{width:device-width}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:1rem;line-height:1.5;color:#373a3c;background-color:#fff}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #818a91}address{font-style:normal}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dd,label{margin-bottom:.5rem}dd{margin-left:0}blockquote,figure{margin:0 0 1rem}a{color:#0275d8;text-decoration:none}a:focus,a:hover{color:#014c8c;text-decoration:underline}a:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}[role=button]{cursor:pointer}table{background-color:transparent}caption{padding-top:.75rem;padding-bottom:.75rem;color:#818a91;caption-side:bottom}label{display:inline-block}button,input,select,textarea{margin:0;line-height:inherit}fieldset{min-width:0;margin:0;border:0}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6,legend{margin-bottom:.5rem}legend{display:block;width:100%;font-size:1.5rem}.list-inline>li,output{display:inline-block}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#818a91}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.blockquote,hr{margin-bottom:1rem}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:2.75rem}.h2,h2{font-size:2.25rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.alert-link,.badge,.close,.label,kbd kbd{font-weight:700}hr{margin-top:1rem;border:0;border-top:.0625rem solid #eceeef}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-inline,.list-unstyled{list-style:none;padding-left:0}.list-inline{margin-left:-5px}.list-inline>li{padding-right:5px;padding-left:5px}.dl-horizontal{margin-right:-1.5rem;margin-left:-1.5rem}.container,.container-fluid{margin-right:auto;margin-left:auto}.dl-horizontal:after,.dl-horizontal:before{display:table;content:" "}.initialism{font-size:90%;text-transform:uppercase}.blockquote{padding:.5rem 1rem;font-size:1.25rem;border-left:.25rem solid #eceeef}.blockquote ol:last-child,.blockquote p:last-child,.blockquote ul:last-child{margin-bottom:0}.table,pre{margin-bottom:1rem}.blockquote footer{display:block;font-size:80%;line-height:1.5;color:#818a91}.blockquote footer:before{content:"\2014 \00A0"}.blockquote-reverse{padding-right:1rem;padding-left:0;text-align:right;border-right:.25rem solid #eceeef;border-left:0}.blockquote-reverse footer:before{content:""}.blockquote-reverse footer:after{content:"\00A0 \2014"}.carousel-inner>.carousel-item>a>img,.carousel-inner>.carousel-item>img,.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:.3rem}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:.25rem;line-height:1.5;background-color:#fff;border:1px solid #ddd;border-radius:.25rem;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}code,kbd{padding:.2rem .4rem;font-size:90%}.img-circle{border-radius:50%}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{color:#d44950;background-color:#f7f7f9;border-radius:.25rem}kbd{color:#fff;background-color:#333;border-radius:.2rem}kbd kbd{padding:0;font-size:100%}pre{display:block;font-size:90%;line-height:1.5;color:#373a3c}.container-fluid:after,.container-fluid:before,.container:after,.container:before,.row:after,.row:before{display:table;content:" "}pre code{padding:0;font-size:inherit;color:inherit;background-color:transparent;border-radius:0}.container,.container-fluid{padding-right:.75rem;padding-left:.75rem}.pre-scrollable{max-height:340px;overflow-y:scroll}.row{margin-right:-.75rem;margin-left:-.75rem}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:.75rem;padding-left:.75rem}.col-xs-1{width:8.333333%}.col-xs-2{width:16.666667%}.col-xs-3{width:25%}.col-xs-4{width:33.333333%}.col-xs-5{width:41.666667%}.col-xs-6{width:50%}.col-xs-7{width:58.333333%}.col-xs-8{width:66.666667%}.col-xs-9{width:75%}.col-xs-10{width:83.333333%}.col-xs-11{width:91.666667%}.col-xs-12{width:100%}.col-xs-pull-0{right:auto}.col-xs-pull-1{right:8.333333%}.col-xs-pull-2{right:16.666667%}.col-xs-pull-3{right:25%}.col-xs-pull-4{right:33.333333%}.col-xs-pull-5{right:41.666667%}.col-xs-pull-6{right:50%}.col-xs-pull-7{right:58.333333%}.col-xs-pull-8{right:66.666667%}.col-xs-pull-9{right:75%}.col-xs-pull-10{right:83.333333%}.col-xs-pull-11{right:91.666667%}.col-xs-pull-12{right:100%}.col-xs-push-0{left:auto}.col-xs-push-1{left:8.333333%}.col-xs-push-2{left:16.666667%}.col-xs-push-3{left:25%}.col-xs-push-4{left:33.333333%}.col-xs-push-5{left:41.666667%}.col-xs-push-6{left:50%}.col-xs-push-7{left:58.333333%}.col-xs-push-8{left:66.666667%}.col-xs-push-9{left:75%}.col-xs-push-10{left:83.333333%}.col-xs-push-11{left:91.666667%}.col-xs-push-12{left:100%}.col-xs-offset-0{margin-left:0}.col-xs-offset-1{margin-left:8.333333%}.col-xs-offset-2{margin-left:16.666667%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-4{margin-left:33.333333%}.col-xs-offset-5{margin-left:41.666667%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-7{margin-left:58.333333%}.col-xs-offset-8{margin-left:66.666667%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-10{margin-left:83.333333%}.col-xs-offset-11{margin-left:91.666667%}.col-xs-offset-12{margin-left:100%}@media (min-width:34em){.container{max-width:34rem}.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-1{width:8.333333%}.col-sm-2{width:16.666667%}.col-sm-3{width:25%}.col-sm-4{width:33.333333%}.col-sm-5{width:41.666667%}.col-sm-6{width:50%}.col-sm-7{width:58.333333%}.col-sm-8{width:66.666667%}.col-sm-9{width:75%}.col-sm-10{width:83.333333%}.col-sm-11{width:91.666667%}.col-sm-12{width:100%}.col-sm-pull-0{right:auto}.col-sm-pull-1{right:8.333333%}.col-sm-pull-2{right:16.666667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.333333%}.col-sm-pull-5{right:41.666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.333333%}.col-sm-pull-8{right:66.666667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.333333%}.col-sm-pull-11{right:91.666667%}.col-sm-pull-12{right:100%}.col-sm-push-0{left:auto}.col-sm-push-1{left:8.333333%}.col-sm-push-2{left:16.666667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.333333%}.col-sm-push-5{left:41.666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.333333%}.col-sm-push-8{left:66.666667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.333333%}.col-sm-push-11{left:91.666667%}.col-sm-push-12{left:100%}.col-sm-offset-0{margin-left:0}.col-sm-offset-1{margin-left:8.333333%}.col-sm-offset-2{margin-left:16.666667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.333333%}.col-sm-offset-5{margin-left:41.666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.333333%}.col-sm-offset-8{margin-left:66.666667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.333333%}.col-sm-offset-11{margin-left:91.666667%}.col-sm-offset-12{margin-left:100%}}@media (min-width:48em){.container{max-width:45rem}.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-1{width:8.333333%}.col-md-2{width:16.666667%}.col-md-3{width:25%}.col-md-4{width:33.333333%}.col-md-5{width:41.666667%}.col-md-6{width:50%}.col-md-7{width:58.333333%}.col-md-8{width:66.666667%}.col-md-9{width:75%}.col-md-10{width:83.333333%}.col-md-11{width:91.666667%}.col-md-12{width:100%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.333333%}.col-md-pull-2{right:16.666667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.333333%}.col-md-pull-5{right:41.666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.333333%}.col-md-pull-8{right:66.666667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.333333%}.col-md-pull-11{right:91.666667%}.col-md-pull-12{right:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.333333%}.col-md-push-2{left:16.666667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.333333%}.col-md-push-5{left:41.666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.333333%}.col-md-push-8{left:66.666667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.333333%}.col-md-push-11{left:91.666667%}.col-md-push-12{left:100%}.col-md-offset-0{margin-left:0}.col-md-offset-1{margin-left:8.333333%}.col-md-offset-2{margin-left:16.666667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.333333%}.col-md-offset-5{margin-left:41.666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.333333%}.col-md-offset-8{margin-left:66.666667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.333333%}.col-md-offset-11{margin-left:91.666667%}.col-md-offset-12{margin-left:100%}}@media (min-width:62em){.container{max-width:60rem}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-1{width:8.333333%}.col-lg-2{width:16.666667%}.col-lg-3{width:25%}.col-lg-4{width:33.333333%}.col-lg-5{width:41.666667%}.col-lg-6{width:50%}.col-lg-7{width:58.333333%}.col-lg-8{width:66.666667%}.col-lg-9{width:75%}.col-lg-10{width:83.333333%}.col-lg-11{width:91.666667%}.col-lg-12{width:100%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.333333%}.col-lg-pull-2{right:16.666667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.333333%}.col-lg-pull-5{right:41.666667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.333333%}.col-lg-pull-8{right:66.666667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.333333%}.col-lg-pull-11{right:91.666667%}.col-lg-pull-12{right:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.333333%}.col-lg-push-2{left:16.666667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.333333%}.col-lg-push-5{left:41.666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.333333%}.col-lg-push-8{left:66.666667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.333333%}.col-lg-push-11{left:91.666667%}.col-lg-push-12{left:100%}.col-lg-offset-0{margin-left:0}.col-lg-offset-1{margin-left:8.333333%}.col-lg-offset-2{margin-left:16.666667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.333333%}.col-lg-offset-5{margin-left:41.666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.333333%}.col-lg-offset-8{margin-left:66.666667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.333333%}.col-lg-offset-11{margin-left:91.666667%}.col-lg-offset-12{margin-left:100%}}@media (min-width:75em){.container{max-width:72.25rem}.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9{float:left}.col-xl-1{width:8.333333%}.col-xl-2{width:16.666667%}.col-xl-3{width:25%}.col-xl-4{width:33.333333%}.col-xl-5{width:41.666667%}.col-xl-6{width:50%}.col-xl-7{width:58.333333%}.col-xl-8{width:66.666667%}.col-xl-9{width:75%}.col-xl-10{width:83.333333%}.col-xl-11{width:91.666667%}.col-xl-12{width:100%}.col-xl-pull-0{right:auto}.col-xl-pull-1{right:8.333333%}.col-xl-pull-2{right:16.666667%}.col-xl-pull-3{right:25%}.col-xl-pull-4{right:33.333333%}.col-xl-pull-5{right:41.666667%}.col-xl-pull-6{right:50%}.col-xl-pull-7{right:58.333333%}.col-xl-pull-8{right:66.666667%}.col-xl-pull-9{right:75%}.col-xl-pull-10{right:83.333333%}.col-xl-pull-11{right:91.666667%}.col-xl-pull-12{right:100%}.col-xl-push-0{left:auto}.col-xl-push-1{left:8.333333%}.col-xl-push-2{left:16.666667%}.col-xl-push-3{left:25%}.col-xl-push-4{left:33.333333%}.col-xl-push-5{left:41.666667%}.col-xl-push-6{left:50%}.col-xl-push-7{left:58.333333%}.col-xl-push-8{left:66.666667%}.col-xl-push-9{left:75%}.col-xl-push-10{left:83.333333%}.col-xl-push-11{left:91.666667%}.col-xl-push-12{left:100%}.col-xl-offset-0{margin-left:0}.col-xl-offset-1{margin-left:8.333333%}.col-xl-offset-2{margin-left:16.666667%}.col-xl-offset-3{margin-left:25%}.col-xl-offset-4{margin-left:33.333333%}.col-xl-offset-5{margin-left:41.666667%}.col-xl-offset-6{margin-left:50%}.col-xl-offset-7{margin-left:58.333333%}.col-xl-offset-8{margin-left:66.666667%}.col-xl-offset-9{margin-left:75%}.col-xl-offset-10{margin-left:83.333333%}.col-xl-offset-11{margin-left:91.666667%}.col-xl-offset-12{margin-left:100%}}.table{width:100%;max-width:100%}.table td,.table th{padding:.75rem;line-height:1.5;vertical-align:top;border-top:1px solid #eceeef}.table thead th{vertical-align:bottom;border-bottom:2px solid #eceeef}.table tbody+tbody{border-top:2px solid #eceeef}.table .table{background-color:#fff}.table-sm td,.table-sm th{padding:.3rem}.table-bordered,.table-bordered td,.table-bordered th{border:1px solid #eceeef}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-striped tbody tr:nth-of-type(odd){background-color:#f9f9f9}.table-active,.table-active>td,.table-active>th,.table-hover tbody tr:hover{background-color:#f5f5f5}.table-hover .table-active:hover,.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:#e8e8e8}.table-success,.table-success>td,.table-success>th{background-color:#dff0d8}.table-hover .table-success:hover,.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#d0e9c6}.table-info,.table-info>td,.table-info>th{background-color:#d9edf7}.table-hover .table-info:hover,.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#c4e3f3}.table-warning,.table-warning>td,.table-warning>th{background-color:#fcf8e3}.table-hover .table-warning:hover,.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#faf2cc}.table-danger,.table-danger>td,.table-danger>th{background-color:#f2dede}.table-hover .table-danger:hover,.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#ebcccc}.table-responsive{display:block;width:100%;overflow-x:auto}.thead-inverse th{color:#fff;background-color:#373a3c}.thead-default th{color:#55595c;background-color:#eceeef}.table-inverse{color:#eceeef;background-color:#373a3c}.table-inverse.table-bordered{border:0}.table-inverse td,.table-inverse th,.table-inverse thead th{border-color:#55595c}.table-reflow tbody{display:block;white-space:nowrap}.table-reflow td,.table-reflow th{border-top:1px solid #eceeef;border-left:1px solid #eceeef}.table-reflow td:last-child,.table-reflow th:last-child{border-right:1px solid #eceeef}.table-reflow tbody:last-child tr:last-child td,.table-reflow tbody:last-child tr:last-child th,.table-reflow tfoot:last-child tr:last-child td,.table-reflow tfoot:last-child tr:last-child th,.table-reflow thead:last-child tr:last-child td,.table-reflow thead:last-child tr:last-child th{border-bottom:1px solid #eceeef}.table-reflow tr td,.table-reflow tr th{display:block!important;border:1px solid #eceeef}.form-control,.form-control-file,.form-control-range{display:block}.form-control{width:100%;padding:.5rem .75rem;font-size:1rem;line-height:1.5;color:#55595c;background-color:#fff;border:1px solid #ccc;border-radius:.25rem;-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:not(select[multiple]),.form-control:not(select[size]),.form-control:not(textarea){height:2.625rem}.form-control:focus{border-color:#66afe9;outline:0}.form-control::-webkit-input-placeholder{color:#999;opacity:1}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999;opacity:1}.form-control::placeholder{color:#999;opacity:1}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .form-control-feedback,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.form-control:disabled,.form-control[readonly],fieldset[disabled] .form-control{background-color:#eceeef;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}.form-control-label{padding:.5625rem .75rem;margin-bottom:0}.form-control-static{min-height:2.625rem;padding-top:.5625rem;padding-bottom:.5625rem;margin-bottom:0}.form-control-static.form-control-lg,.form-control-static.form-control-sm,.input-group-lg>.form-control-static.form-control,.input-group-lg>.form-control-static.input-group-addon,.input-group-lg>.input-group-btn>.form-control-static.btn,.input-group-sm>.form-control-static.form-control,.input-group-sm>.form-control-static.input-group-addon,.input-group-sm>.input-group-btn>.form-control-static.btn{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:2rem;padding:.3rem .75rem;font-size:.85rem;line-height:1.5;border-radius:.2rem}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:3.291667rem;padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.333333;border-radius:.3rem}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-bottom:.75rem}.checkbox label,.checkbox-inline,.radio label,.radio-inline{font-weight:400;padding-left:1.25rem;margin-bottom:0;cursor:pointer}.checkbox label input:only-child,.radio label input:only-child{position:static}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:.25rem;margin-left:-1.25rem}.collapsing,.dropdown,.dropup,.has-feedback{position:relative}.checkbox+.checkbox,.radio+.radio{margin-top:-.25rem}.checkbox-inline,.radio-inline{position:relative;display:inline-block;vertical-align:middle}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:.75rem}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox]:disabled,input[type=radio].disabled,input[type=radio]:disabled{cursor:not-allowed}.checkbox-inline.disabled,.checkbox.disabled label,.radio-inline.disabled,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio label,fieldset[disabled] .radio-inline{cursor:not-allowed}.has-feedback .form-control{padding-right:3.28125rem}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:2.625rem;height:2.625rem;line-height:2.625rem;text-align:center}.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:3.291667rem;height:3.291667rem;line-height:3.291667rem}.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:2rem;height:2rem;line-height:2rem}.has-success .form-control{border-color:#3c763d}.has-success .form-control:focus{border-color:#2b542c}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .form-control-feedback,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b}.has-warning .form-control:focus{border-color:#66512c}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .form-control-feedback,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442}.has-error .form-control:focus{border-color:#843534}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-feedback label~.form-control-feedback{top:6}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:.25rem;margin-bottom:.75rem;color:#747a7f}@media (min-width:34em){.form-inline .form-control-static,.form-inline .form-group{display:inline-block}.form-inline .control-label,.form-inline .form-group{margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.btn-block,input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.btn{display:inline-block;padding:.5rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:.0625rem solid transparent;border-radius:.25rem;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{text-decoration:none}.btn.active,.btn:active{outline:0}.btn.disabled,.btn:disabled,fieldset[disabled] .btn{cursor:not-allowed;opacity:.65}.btn-primary{color:#fff;background-color:#0275d8;border-color:#0267bf}.btn-primary.active,.btn-primary.focus,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open>.btn-primary.dropdown-toggle{color:#fff;background-color:#025aa5;border-color:#014682}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary:disabled,.btn-primary:disabled.active,.btn-primary:disabled.focus,.btn-primary:disabled:active,.btn-primary:disabled:focus,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus{background-color:#0275d8;border-color:#0267bf}.btn-primary.disabled:hover,.btn-primary:disabled:hover,fieldset[disabled] .btn-primary:hover{background-color:#0275d8;border-color:#0267bf}.btn-primary .badge{color:#0275d8;background-color:#fff}.btn-secondary{color:#373a3c;background-color:#fff;border-color:#ccc}.btn-secondary.active,.btn-secondary.focus,.btn-secondary:active,.btn-secondary:focus,.btn-secondary:hover,.open>.btn-secondary.dropdown-toggle{color:#373a3c;background-color:#e6e6e6;border-color:#adadad}.btn-secondary.disabled,.btn-secondary.disabled.active,.btn-secondary.disabled.focus,.btn-secondary.disabled:active,.btn-secondary.disabled:focus,.btn-secondary:disabled,.btn-secondary:disabled.active,.btn-secondary:disabled.focus,.btn-secondary:disabled:active,.btn-secondary:disabled:focus,fieldset[disabled] .btn-secondary,fieldset[disabled] .btn-secondary.active,fieldset[disabled] .btn-secondary.focus,fieldset[disabled] .btn-secondary:active,fieldset[disabled] .btn-secondary:focus{background-color:#fff;border-color:#ccc}.btn-secondary.disabled:hover,.btn-secondary:disabled:hover,fieldset[disabled] .btn-secondary:hover{background-color:#fff;border-color:#ccc}.btn-secondary .badge{color:#fff;background-color:#373a3c}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.active,.btn-info.focus,.btn-info:active,.btn-info:focus,.btn-info:hover,.open>.btn-info.dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info:disabled,.btn-info:disabled.active,.btn-info:disabled.focus,.btn-info:disabled:active,.btn-info:disabled:focus,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus{background-color:#5bc0de;border-color:#46b8da}.btn-info.disabled:hover,.btn-info:disabled:hover,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.active,.btn-success.focus,.btn-success:active,.btn-success:focus,.btn-success:hover,.open>.btn-success.dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success:disabled,.btn-success:disabled.active,.btn-success:disabled.focus,.btn-success:disabled:active,.btn-success:disabled:focus,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus{background-color:#5cb85c;border-color:#4cae4c}.btn-success.disabled:hover,.btn-success:disabled:hover,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.active,.btn-warning.focus,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open>.btn-warning.dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning:disabled,.btn-warning:disabled.active,.btn-warning:disabled.focus,.btn-warning:disabled:active,.btn-warning:disabled:focus,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus{background-color:#f0ad4e;border-color:#eea236}.btn-warning.disabled:hover,.btn-warning:disabled:hover,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.active,.btn-danger.focus,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open>.btn-danger.dropdown-toggle{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger:disabled,.btn-danger:disabled.active,.btn-danger:disabled.focus,.btn-danger:disabled:active,.btn-danger:disabled:focus,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus{background-color:#d9534f;border-color:#d43f3a}.btn-danger.disabled:hover,.btn-danger:disabled:hover,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#0275d8;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link:disabled,fieldset[disabled] .btn-link{background-color:transparent}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#014c8c;text-decoration:underline;background-color:transparent}.btn-link:disabled:focus,.btn-link:disabled:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#818a91;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.333333;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.3rem .75rem;font-size:.85rem;line-height:1.5;border-radius:.2rem}.btn-group-xs>.btn,.btn-xs{padding:.2rem .5rem;font-size:.75rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block}.btn-block+.btn-block{margin-top:5px}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{height:0;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height;-o-transition-property:height;transition-property:height}.dropdown-toggle:after{display:inline-block;width:0;height:0;margin-left:.25rem;vertical-align:middle;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-left:.3em solid transparent}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:1rem;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.badge,.c-indicator,.label,.pager{text-align:center}.dropdown-header,.dropdown-menu>li>a{white-space:nowrap;padding:3px 20px;line-height:1.5}.dropdown-menu .divider{height:1px;margin:.5rem 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;font-weight:400;color:#373a3c}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#2b2d2f;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#0275d8;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#818a91}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:"progid:DXImageTransform.Microsoft.gradient(enabled = false)"}.c-input,.file,.select>select{cursor:pointer}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;font-size:.85rem;color:#818a91}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover,.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:.3em solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar:after,.btn-toolbar:before{display:table;content:" "}.btn-toolbar:after{clear:both}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn .caret,.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group-lg.btn-group>.btn+.dropdown-toggle,.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group-lg>.btn .caret,.btn-lg .caret{border-width:.3em .3em 0}.dropup .btn-group-lg>.btn .caret,.dropup .btn-lg .caret{border-width:0 .3em .3em}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before{display:table;content:" "}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:.25rem;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:.25rem}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.c-input,.input-group,.input-group-btn,.input-group-btn>.btn{position:relative}.input-group{display:table;border-collapse:separate}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:.5rem .75rem;font-size:1rem;font-weight:400;line-height:1;color:#55595c;text-align:center;background-color:#eceeef;border:1px solid #ccc;border-radius:.25rem}.input-group-addon.form-control-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn{padding:.3rem .75rem;font-size:.85rem;border-radius:.2rem}.input-group-addon.form-control-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn{padding:.75rem 1.5rem;font-size:1.25rem;border-radius:.3rem}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{font-size:0;white-space:nowrap}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.c-input{display:inline;padding-left:1.5rem;color:#555}.c-input>input{position:absolute;z-index:-1;opacity:0}.c-input>input:checked~.c-indicator{color:#fff;background-color:#0074d9}.c-input>input:active~.c-indicator{color:#fff;background-color:#84c6ff}.c-input+.c-input{margin-left:1rem}.c-indicator{position:absolute;top:0;display:block;width:1rem;height:1rem;font-size:65%;line-height:1rem;color:#eee;user-select:none;background-color:#eee;background-repeat:no-repeat;background-position:center center;-webkit-background-size:50% 50%;background-size:50% 50%}.c-indicator,.file-custom{left:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.c-checkbox .c-indicator{border-radius:.25rem}.c-checkbox input:checked~.c-indicator{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNy4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgOCA4IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA4IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHBhdGggZmlsbD0iI0ZGRkZGRiIgZD0iTTYuNCwxTDUuNywxLjdMMi45LDQuNUwyLjEsMy43TDEuNCwzTDAsNC40bDAuNywwLjdsMS41LDEuNWwwLjcsMC43bDAuNy0wLjdsMy41LTMuNWwwLjctMC43TDYuNCwxTDYuNCwxeiINCgkvPg0KPC9zdmc+DQo=)}.c-checkbox input:indeterminate~.c-indicator{background-color:#0074d9;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNy4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB3aWR0aD0iOHB4IiBoZWlnaHQ9IjhweCIgdmlld0JveD0iMCAwIDggOCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgOCA4IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxwYXRoIGZpbGw9IiNGRkZGRkYiIGQ9Ik0wLDN2Mmg4VjNIMHoiLz4NCjwvc3ZnPg0K)}.c-radio .c-indicator{border-radius:50%}.c-radio input:checked~.c-indicator{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNy4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgOCA4IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA4IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHBhdGggZmlsbD0iI0ZGRkZGRiIgZD0iTTQsMUMyLjMsMSwxLDIuMywxLDRzMS4zLDMsMywzczMtMS4zLDMtM1M1LjcsMSw0LDF6Ii8+DQo8L3N2Zz4NCg==)}.c-inputs-stacked .c-input{display:inline}.c-inputs-stacked .c-input:after{display:block;margin-bottom:.25rem;content:""}.select,.select>select{display:inline-block;color:#555}.c-inputs-stacked .c-input+.c-input{margin-left:0}.select{position:relative}.select>select{width:100%;-webkit-appearance:none;padding:.5rem 2.25rem .5rem 1rem;margin:0;line-height:1.5;background-color:#eee;border:0;border-radius:.25rem;outline:0;-moz-appearance:none;appearance:none}.select>select:focus{-webkit-box-shadow:0 0 0 .075rem #fff,0 0 0 .2rem #0074d9;box-shadow:0 0 0 .075rem #fff,0 0 0 .2rem #0074d9}.select>select:focus:-moz-focusring{color:transparent;text-shadow:0 0 0 #000}.select>select:active{color:#fff;background-color:#0074d9}.select>select::-ms-expand{display:none}.select:after{position:absolute;top:50%;right:1.25rem;display:inline-block;width:0;height:0;margin-top:-.15rem;content:"";border-top:.35rem solid;border-right:.35rem solid transparent;border-bottom:.35rem solid transparent;border-left:.35rem solid transparent}.select select:hover{background-color:#ddd}@-moz-document url-prefix(){.select select{padding-right:1rem;text-indent:.01px;text-overflow:""}.select option{background-color:#fff}}@media screen and (min-width:0 \0){.select select{z-index:1;padding:.5rem 1.5rem .5rem 1rem}.select:after{z-index:5}.select:before{position:absolute;top:0;right:1rem;bottom:0;z-index:2;display:block;width:1.5rem;content:"";background-color:#eee}.select select:active,.select select:focus,.select select:hover{color:#555;background-color:#eee}}.card-columns .card,.card-group,.progress{width:100%}.file{position:relative;display:inline-block;height:2.5rem}.file-custom,.file-custom:before{position:absolute;height:2.5rem;padding:.5rem 1rem;line-height:1.5;color:#555;border:.075rem solid #ddd}.file input{min-width:14rem;margin:0;filter:alpha(opacity=0);opacity:0}.nav-pills .nav-item+.nav-item,.nav-tabs .nav-item+.nav-item{margin-left:.2rem}.file-custom{top:0;right:0;z-index:5;user-select:none;background-color:#fff;border-radius:.25rem;-webkit-box-shadow:inset 0 .2rem .4rem rgba(0,0,0,.05);box-shadow:inset 0 .2rem .4rem rgba(0,0,0,.05)}.file-custom:after{content:"Choose file..."}.file-custom:before{top:-.075rem;right:-.075rem;bottom:-.075rem;z-index:6;display:block;content:"Browse";background-color:#eee;border-radius:0 .25rem .25rem 0}.navbar-brand,.navbar-toggler{margin-bottom:0;line-height:1}.nav-item,.navbar{position:relative}.file input:focus~.file-custom{-webkit-box-shadow:0 0 0 .075rem #fff,0 0 0 .2rem #0074d9;box-shadow:0 0 0 .075rem #fff,0 0 0 .2rem #0074d9}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav:after,.nav:before{display:table;content:" "}.nav-item,.nav-link{display:inline-block}.nav-link{padding:.75em 1em;line-height:1}.nav-link:focus,.nav-link:hover{text-decoration:none;background-color:#eceeef}.disabled>.nav-link,.nav-link.disabled{color:#818a91}.disabled>.nav-link,.disabled>.nav-link:focus,.disabled>.nav-link:hover,.nav-link.disabled,.nav-link.disabled:focus,.nav-link.disabled:hover{color:#818a91;cursor:not-allowed;background-color:transparent}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs .nav-item{float:left;margin-bottom:-1px}.nav-tabs .nav-link{display:block;border:1px solid transparent;border-radius:.25rem .25rem 0 0}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#eceeef #eceeef #ddd}.nav-tabs .active>.nav-link,.nav-tabs .active>.nav-link:focus,.nav-tabs .active>.nav-link:hover,.nav-tabs .nav-link.active,.nav-tabs .nav-link.active:focus,.nav-tabs .nav-link.active:hover,.nav-tabs .nav-link.open,.nav-tabs .nav-link.open:focus,.nav-tabs .nav-link.open:hover,.nav-tabs .open>.nav-link,.nav-tabs .open>.nav-link:focus,.nav-tabs .open>.nav-link:hover{color:#55595c;background-color:#fff;border-color:#ddd #ddd transparent}.nav-tabs .disabled>.nav-link,.nav-tabs .disabled>.nav-link:focus,.nav-tabs .disabled>.nav-link:hover,.nav-tabs .nav-link.disabled,.nav-tabs .nav-link.disabled:focus,.nav-tabs .nav-link.disabled:hover{color:#818a91;background-color:transparent;border-color:transparent}.nav-pills .nav-item{float:left}.nav-pills .nav-link{display:block;border-radius:.25rem}.nav-pills .active>.nav-link,.nav-pills .active>.nav-link:focus,.nav-pills .active>.nav-link:hover,.nav-pills .nav-link.active,.nav-pills .nav-link.active:focus,.nav-pills .nav-link.active:hover,.nav-pills .nav-link.open,.nav-pills .nav-link.open:focus,.nav-pills .nav-link.open:hover,.nav-pills .open>.nav-link,.nav-pills .open>.nav-link:focus,.nav-pills .open>.nav-link:hover{color:#fff;cursor:default;background-color:#0275d8}.nav-stacked .nav-item{display:block;float:none}.nav-stacked .nav-item+.nav-item{margin-top:.2rem;margin-left:0}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{padding:1rem;margin-bottom:1}.navbar:after,.navbar:before{display:table;content:" "}.navbar-static-top{z-index:1000}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0}.navbar-fixed-top{top:0}.navbar-fixed-bottom{bottom:0}.navbar-sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1030;width:100%}.navbar-brand{float:left;padding:.625rem .75rem;margin-right:1rem;font-size:1.25rem}.navbar-brand>a:focus,.navbar-brand>a:hover{text-decoration:none}.navbar-brand>img{display:block}.navbar-toggler{padding:.55rem .75rem;margin-right:1rem;font-size:1.25rem;background:0 0;border:0}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}@media (min-width:34em){.navbar{border-radius:.25rem}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top,.navbar-sticky-top{border-radius:0}.navbar-toggleable-xs{display:block!important}}@media (min-width:48em){.navbar-toggleable-sm{display:block!important}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.card-header,.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-radius:.25rem .25rem 0 0}.navbar-condensed{padding-top:0;padding-bottom:0}.navbar-condensed .navbar-brand,.navbar-nav .nav-link{padding-top:.95rem;padding-bottom:.95rem}.navbar-condensed .form-inline{margin-top:.6rem}.navbar-nav .nav-item{float:left}.navbar-nav .nav-link{display:block;line-height:1.25}.navbar-nav .active>.nav-link,.navbar-nav .active>.nav-link:focus,.navbar-nav .active>.nav-link:hover,.navbar-nav .nav-link.active,.navbar-nav .nav-link.active:focus,.navbar-nav .nav-link.active:hover,.navbar-nav .nav-link.open,.navbar-nav .nav-link.open:focus,.navbar-nav .nav-link.open:hover,.navbar-nav .open>.nav-link,.navbar-nav .open>.nav-link:focus,.navbar-nav .open>.nav-link:hover{color:#555;cursor:default;background-color:#e7e7e7}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-inverse{background-color:#373a3c;border-color:#1f2021}.navbar-inverse .nav-pills>.nav-item>.nav-link,.navbar-inverse .navbar-brand>a,.navbar-inverse .navbar-toggler{color:#aab0b5}.navbar-inverse .nav-pills>.nav-item>.nav-link:focus,.navbar-inverse .nav-pills>.nav-item>.nav-link:hover,.navbar-inverse .navbar-brand>a:focus,.navbar-inverse .navbar-brand>a:hover,.navbar-inverse .navbar-toggler:focus,.navbar-inverse .navbar-toggler:hover{color:#fff}.navbar-inverse .nav-pills>.active>.nav-link,.navbar-inverse .nav-pills>.nav-item>.nav-link:focus,.navbar-inverse .nav-pills>.nav-item>.nav-link:hover,.navbar-inverse .nav-pills>.nav-link.active{color:#fff;background-color:#1f2021}.navbar-inverse .navbar-brand{color:#aab0b5}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#a2a8ae}.navbar-inverse .navbar-nav>li>a{color:#aab0b5}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#1f2021}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#262829}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#1f2021}.navbar-inverse .navbar-link{color:#aab0b5}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#aab0b5}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link:disabled:focus,.navbar-inverse .btn-link:disabled:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.card{position:relative;padding:1.25rem;margin-bottom:1.25rem;border:.075rem solid #eee}.card-title{margin-top:0;margin-bottom:.75rem}.card-text:last-child{margin-bottom:0}.card-actions .card-link+.card-link{margin-left:.75rem}.card-link:hover{text-decoration:none}.card-header{padding:.75rem 1.25rem;margin:-1.25rem -1.25rem 1.25rem;border-bottom:.075rem solid #eee}.card-footer{padding:.75rem 1.25rem;margin:1.25rem -1.25rem -1.25rem;border-top:.075rem solid #eee;border-radius:0 0 .25rem .25rem}.card-primary{background-color:#0275d8;border-color:#0275d8}.card-success{background-color:#5cb85c;border-color:#5cb85c}.card-info{background-color:#5bc0de;border-color:#5bc0de}.card-warning{background-color:#f0ad4e;border-color:#f0ad4e}.card-danger{background-color:#d9534f;border-color:#d9534f}.card-inverse .card-footer,.card-inverse .card-header{border-bottom:.075rem solid rgba(255,255,255,.2)}.card-inverse .card-blockquote,.card-inverse .card-footer,.card-inverse .card-header,.card-inverse .card-title{color:#fff}.card-inverse .card-blockquote>footer,.card-inverse .card-link,.card-inverse .card-text{color:rgba(255,255,255,.65)}.card-inverse .card-link:focus,.card-inverse .card-link:hover{color:#fff}.card-blockquote{padding:0;margin-bottom:0;border-left:0}.card-img{margin:-1.325rem;border-radius:.25rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img-top{margin:-1.325rem -1.325rem 1.25rem;border-radius:.25rem .25rem 0 0}.card-img-bottom{margin:1.25rem -1.325rem -1.325rem;border-radius:0 0 .25rem .25rem}.pager,.pagination{margin-top:1rem;margin-bottom:1rem}.card-set{display:table;table-layout:fixed;border-spacing:1.25rem 0}.card-set .card{display:table-cell;float:none;max-width:none}.card-set-wrapper{margin-right:-1.25rem;margin-left:-1.25rem}.card-group{display:table;table-layout:fixed}.card-group .card{display:table-cell;float:none;max-width:none}.breadcrumb>li,.card-columns .card,.pagination{display:inline-block}.card-group .card+.card{margin-left:0;border-left:0}.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1rem;-moz-column-gap:1rem;column-gap:1rem}.breadcrumb{padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#eceeef;border-radius:.25rem}.breadcrumb>li+li:before{padding-right:.5rem;padding-left:.5rem;color:#818a91;content:"/\\00a0"}.breadcrumb>.active{color:#818a91}.pagination{padding-left:0;border-radius:.25rem}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:.5rem .75rem;margin-left:-1px;line-height:1.5;color:#0275d8;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{color:#014c8c;background-color:#eceeef;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#0275d8;border-color:#0275d8}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#818a91;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm>li>a,.pagination-sm>li>span{padding:.3rem .75rem;font-size:.85rem}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.pager{padding-left:0;list-style:none}.pager:after,.pager:before{display:table;content:" "}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eceeef}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#818a91;cursor:not-allowed;background-color:#fff}.pager-next>a,.pager-next>span{float:right}.pager-prev>a,.pager-prev>span{float:left}.close,.list-group-item>.badge{float:right}.label{display:inline-block;padding:.25em .4em;font-size:75%;line-height:1;color:#fff;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.label:empty{display:none}.btn .label{position:relative;top:-1px}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label-default{background-color:#818a91}.label-default[href]:focus,.label-default[href]:hover{background-color:#687077}.label-primary{background-color:#0275d8}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#025aa5}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{position:relative;top:-.1em;display:inline-block;padding-right:.6em;padding-left:.6em;font-size:.75em;color:#fff;white-space:nowrap;background-color:#818a91;border-radius:2em}.badge:empty{display:none}.badge.pull-left,.badge.pull-right{top:.2em}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#0275d8;background-color:#fff}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.alert-heading,.jumbotron,.jumbotron-heading{color:inherit}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#eceeef;border-radius:.3rem}.jumbotron-hr{border-top-color:#d0d5d8}@media (min-width:34em){.jumbotron{padding:4rem 2rem}.jumbotron-heading{font-size:4.5rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{padding:15px;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-heading{margin-top:0}.alert-dismissible{padding-right:35px}.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d0e9c6}.alert-success hr{border-top-color:#c1e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bcdff1}.alert-info hr{border-top-color:#a6d5ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faf2cc}.alert-warning hr{border-top-color:#f7ecb5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebcccc}.alert-danger hr{border-top-color:#e4b9b9}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:block;height:1rem;margin-bottom:1rem}.progress[value]{-webkit-appearance:none;color:#0074d9;border:0;-moz-appearance:none;appearance:none}.progress[value]::-webkit-progress-bar{background-color:#eee;border-radius:.25rem}.progress[value]::-webkit-progress-value::before{content:attr(value)}.progress[value]::-webkit-progress-value{background-color:#0074d9;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.progress[value="100"]::-webkit-progress-value{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}@media screen and (min-width:0 \0){.progress{background-color:#eee;border-radius:.25rem}.progress-bar{display:inline-block;height:1rem;text-indent:-999rem;background-color:#0074d9;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.progress[width^="0"]{min-width:2rem;color:#818a91;background-color:transparent;background-image:none}.progress[width="100%"]{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}}.progress-striped[value]::-webkit-progress-value{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:1rem 1rem;background-size:1rem 1rem}.progress-striped[value]::-moz-progress-bar{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-animated[value]::-webkit-progress-value{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-animated[value]::-moz-progress-bar{animation:progress-bar-stripes 2s linear infinite}.progress-success[value]::-webkit-progress-value{background-color:#5cb85c}.progress-success[value]::-moz-progress-bar{background-color:#5cb85c}@media screen and (min-width:0 \0){.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:1rem 1rem;background-size:1rem 1rem}.progress-animated .progress-bar-striped{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-success .progress-bar{background-color:#5cb85c}}.progress-info[value]::-webkit-progress-value{background-color:#5bc0de}.progress-info[value]::-moz-progress-bar{background-color:#5bc0de}@media screen and (min-width:0 \0){.progress-info .progress-bar{background-color:#5bc0de}}.progress-warning[value]::-webkit-progress-value{background-color:#f0ad4e}.progress-warning[value]::-moz-progress-bar{background-color:#f0ad4e}@media screen and (min-width:0 \0){.progress-warning .progress-bar{background-color:#f0ad4e}}.progress-danger[value]::-webkit-progress-value{background-color:#d9534f}.progress-danger[value]::-moz-progress-bar{background-color:#d9534f}@media screen and (min-width:0 \0){.progress-danger .progress-bar{background-color:#d9534f}}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1}.media-body{width:10000px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-object{display:block}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#818a91;cursor:not-allowed;background-color:#eceeef}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#818a91}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#0275d8;border-color:#0275d8}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#a8d6fe}.list-group-item-state{color:#a94442;background-color:#f2dede}a.list-group-item-state{color:#a94442}a.list-group-item-state .list-group-item-heading{color:inherit}a.list-group-item-state:focus,a.list-group-item-state:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-state.active,a.list-group-item-state.active:focus,a.list-group-item-state.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.embed-responsive{position:relative;display:block;height:0;padding:0}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.close{font-size:1.5rem;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2}.carousel-caption,.carousel-control{text-shadow:0 1px 2px rgba(0,0,0,.6)}.popover,.tooltip{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:400}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-content,.popover{border:1px solid rgba(0,0,0,.2)}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:transition .3s ease-out,translate(0,-25%);-ms-transform:transition .3s ease-out,translate(0,-25%);-o-transform:transition .3s ease-out,translate(0,-25%);transform:transition .3s ease-out,translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;background-clip:padding-box;border-radius:.3rem;outline:0}.modal-content,.popover{-webkit-background-clip:padding-box}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.in{opacity:.5}.modal-header{min-height:16.5px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.5}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:after,.modal-footer:before{display:table;content:" "}.popover,.popover-arrow,.popover-arrow:after,.tooltip{display:block}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:34em){.modal-dialog{width:600px;margin:30px auto}.modal-sm{width:300px}}@media (min-width:48em){.modal-lg{width:900px}}.popover-arrow,.popover-arrow:after,.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip{position:absolute;z-index:1070;font-size:.85rem;line-height:1.4;opacity:0}.tooltip.in{opacity:.9}.tooltip.bs-tether-element-attached-bottom,.tooltip.tooltip-top{padding:5px 0;margin-top:-3px}.tooltip.bs-tether-element-attached-bottom .tooltip-arrow,.tooltip.tooltip-top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.bs-tether-element-attached-left,.tooltip.tooltip-right{padding:0 5px;margin-left:3px}.tooltip.bs-tether-element-attached-left .tooltip-arrow,.tooltip.tooltip-right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.bs-tether-element-attached-top,.tooltip.tooltip-bottom{padding:5px 0;margin-top:3px}.tooltip.bs-tether-element-attached-top .tooltip-arrow,.tooltip.tooltip-bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bs-tether-element-attached-right,.tooltip.tooltip-left{padding:0 5px;margin-left:-3px}.tooltip.bs-tether-element-attached-right .tooltip-arrow,.tooltip.tooltip-left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;max-width:276px;padding:1px;font-size:1rem;line-height:1.5;text-align:left;white-space:normal;background-color:#fff;background-clip:padding-box;border-radius:.3rem}.text-nowrap,.text-truncate{white-space:nowrap}.popover.bs-tether-element-attached-bottom,.popover.popover-top{margin-top:-10px}.popover.bs-tether-element-attached-bottom .popover-arrow,.popover.popover-top .popover-arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.bs-tether-element-attached-bottom .popover-arrow:after,.popover.popover-top .popover-arrow:after{bottom:1px;margin-left:-10px;content:"";border-top-color:#fff;border-bottom-width:0}.popover.bs-tether-element-attached-left,.popover.popover-right{margin-left:10px}.popover.bs-tether-element-attached-left .popover-arrow,.popover.popover-right .popover-arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.bs-tether-element-attached-left .popover-arrow:after,.popover.popover-right .popover-arrow:after{bottom:-10px;left:1px;content:"";border-right-color:#fff;border-left-width:0}.popover.bs-tether-element-attached-top,.popover.popover-bottom{margin-top:10px}.popover.bs-tether-element-attached-top .popover-arrow,.popover.popover-bottom .popover-arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:rgba(0,0,0,.25)}.popover.bs-tether-element-attached-top .popover-arrow:after,.popover.popover-bottom .popover-arrow:after{top:1px;margin-left:-10px;content:"";border-top-width:0;border-bottom-color:#fff}.popover.bs-tether-element-attached-right,.popover.popover-left{margin-left:-10px}.popover.bs-tether-element-attached-right .popover-arrow,.popover.popover-left .popover-arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:rgba(0,0,0,.25)}.popover.bs-tether-element-attached-right .popover-arrow:after,.popover.popover-left .popover-arrow:after{right:1px;bottom:-10px;content:"";border-right-width:0;border-left-color:#fff}.popover-title{padding:8px 14px;margin:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:-.7rem -.7rem 0 0}.popover-content{padding:9px 14px}.carousel,.carousel-inner{position:relative}.popover-arrow{border-width:11px}.popover-arrow:after{content:"";border-width:10px}.carousel-inner{width:100%;overflow:hidden}.carousel-inner>.carousel-item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.carousel-item>a>img,.carousel-inner>.carousel-item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.carousel-item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;perspective:1000}.carousel-inner>.carousel-item.active.right,.carousel-inner>.carousel-item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.carousel-item.active.left,.carousel-inner>.carousel-item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.carousel-item.active,.carousel-inner>.carousel-item.next.left,.carousel-inner>.carousel-item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;opacity:.5}.carousel-control.left{background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;width:20px;height:20px;margin-top:-10px;font-family:serif;line-height:1}.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-prev:before{content:"\2039"}.carousel-control .icon-next:before{content:"\203a"}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:transparent;border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}.carousel-caption .btn,.text-hide{text-shadow:none}@media (min-width:34em){.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .icon-prev{margin-left:-15px}.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.p-a-0,.sr-only{padding:0}.clearfix:after,.clearfix:before{display:table;content:" "}.center-block{display:block;margin-right:auto;margin-left:auto}.hidden-xl-down,.hidden-xs-up,.visible-print-block,[hidden]{display:none!important}.pull-right{float:right!important}.pull-left{float:left!important}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.m-a-0{margin:0}.m-t-0{margin-top:0}.m-t,.m-y{margin-top:1rem}.m-r-0{margin-right:0}.m-r,.m-x{margin-right:1rem}.m-b-0{margin-bottom:0}.m-b,.m-y{margin-bottom:1rem}.m-l-0{margin-left:0}.m-l,.m-x{margin-left:1rem}.m-a{margin:1rem}.m-l-md,.m-x-md{margin-left:1.5rem}.m-r-md,.m-x-md{margin-right:1.5rem}.m-b-md,.m-y-md{margin-bottom:1.5rem}.m-t-md,.m-y-md{margin-top:1.5rem}.m-l-lg,.m-x-lg{margin-left:3rem}.m-r-lg,.m-x-lg{margin-right:3rem}.m-b-lg,.m-y-lg{margin-bottom:3rem}.m-t-lg,.m-y-lg{margin-top:3rem}.p-t-0{padding-top:0}.p-t,.p-y{padding-top:1rem}.p-r-0{padding-right:0}.p-r,.p-x{padding-right:1rem}.p-b-0{padding-bottom:0}.p-b,.p-y{padding-bottom:1rem}.p-l-0{padding-left:0}.p-l,.p-x{padding-left:1rem}.p-a{padding:1rem}.p-l-md,.p-x-md{padding-left:1.5rem}.p-r-md,.p-x-md{padding-right:1.5rem}.p-b-md,.p-y-md{padding-bottom:1.5rem}.p-t-md,.p-y-md{padding-top:1.5rem}.p-l-lg,.p-x-lg{padding-left:3rem}.p-r-lg,.p-x-lg{padding-right:3rem}.p-b-lg,.p-y-lg{padding-bottom:3rem}.p-t-lg,.p-y-lg{padding-top:3rem}.pos-f-t{position:fixed;top:0;right:0;left:0;z-index:1030}.invisible{visibility:hidden}.text-hide{font:"0/0" a;color:transparent;background-color:transparent;border:0}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-truncate{overflow:hidden;text-overflow:ellipsis}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#818a91}.text-primary{color:#0275d8}a.text-primary:focus,a.text-primary:hover{color:#025aa5}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.inverse{color:#eceeef;background-color:#373a3c}.bg-primary{color:#fff;background-color:#0275d8}a.bg-primary:focus,a.bg-primary:hover{background-color:#025aa5}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}@media (max-width:33.9em){.hidden-xs-down{display:none!important}}@media (min-width:34em){.hidden-sm-up{display:none!important}}@media (max-width:47.9em){.hidden-sm-down{display:none!important}}@media (min-width:48em){.hidden-md-up{display:none!important}}@media (max-width:61.9em){.hidden-md-down{display:none!important}}@media (min-width:62em){.hidden-lg-up{display:none!important}}@media (max-width:74.9em){.hidden-lg-down{display:none!important}}@media (min-width:75em){.hidden-xl-up{display:none!important}}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}.hidden-print .hidden-print{display:none!important}}
\ No newline at end of file diff --git a/dist/js/bootstrap.js b/dist/js/bootstrap.js index b22c41b9ac..6f11dbaced 100644 --- a/dist/js/bootstrap.js +++ b/dist/js/bootstrap.js @@ -15,4417 +15,3491 @@ if (typeof jQuery === 'undefined') { } }(jQuery); -/** ======================================================================= - * Bootstrap: util.js v4.0.0 - * http://getbootstrap.com/javascript/#alerts - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== - * @fileoverview - Bootstrap's private util helper. Adds private util - * helpers for things like accesibility and transitions. These methods are - * shared across all bootstrap plugins. - * ======================================================================== - */ - -'use strict'; - - -/** - * @type {Object} - */ -var Bootstrap = {} - - -/** - * @const - * @type {string} - */ -Bootstrap.TRANSITION_END = 'bsTransitionEnd' - - -/** - * @const - * @type {Object} - */ -Bootstrap.TransitionEndEvent = { - 'WebkitTransition' : 'webkitTransitionEnd', - 'MozTransition' : 'transitionend', - 'OTransition' : 'oTransitionEnd otransitionend', - 'transition' : 'transitionend' -} - - -/** - * @param {Function} childConstructor - * @param {Function} parentConstructor - */ -Bootstrap.inherits = function(childConstructor, parentConstructor) { - /** @constructor */ - function tempConstructor() {} - tempConstructor.prototype = parentConstructor.prototype - childConstructor.prototype = new tempConstructor() - /** @override */ - childConstructor.prototype.constructor = childConstructor -} - - -/** - * @param {Element} element - * @return {string|null} - */ -Bootstrap.getSelectorFromElement = function (element) { - var selector = element.getAttribute('data-target') - - if (!selector) { - selector = element.getAttribute('href') || '' - selector = /^#[a-z]/i.test(selector) ? selector : null - } - - return selector -} - - -/** - * @param {string} prefix - * @return {string} - */ -Bootstrap.getUID = function (prefix) { - do prefix += ~~(Math.random() * 1000000) - while (document.getElementById(prefix)) - return prefix -} - - -/** - * @return {Object} - */ -Bootstrap.getSpecialTransitionEndEvent = function () { - return { - bindType: Bootstrap.transition.end, - delegateType: Bootstrap.transition.end, - handle: /** @param {jQuery.Event} event */ (function (event) { - if ($(event.target).is(this)) { - return event.handleObj.handler.apply(this, arguments) - } - }) - } -} - - -/** - * @param {Element} element - */ -Bootstrap.reflow = function (element) { - new Function('bs',"return bs")(element.offsetHeight) -} - - -/** - * @return {Object|boolean} - */ -Bootstrap.transitionEndTest = function () { - if (window['QUnit']) { - return false - } - - var el = document.createElement('bootstrap') - for (var name in Bootstrap.TransitionEndEvent) { - if (el.style[name] !== undefined) { - return { end: Bootstrap.TransitionEndEvent[name] } - } - } - return false -} - - -/** - * @param {number} duration - * @this {Element} - * @return {Object} - */ -Bootstrap.transitionEndEmulator = function (duration) { - var called = false - - $(this).one(Bootstrap.TRANSITION_END, function () { - called = true - }) - - var callback = function () { - if (!called) { - $(this).trigger(Bootstrap.transition.end) - } - }.bind(this) - - setTimeout(callback, duration) - - return this -} ++function ($) { /** - * ------------------------------------------------------------------------ - * jQuery Interface - * ------------------------------------------------------------------------ - */ - -$.fn.emulateTransitionEnd = Bootstrap.transitionEndEmulator - -$(function () { - Bootstrap.transition = Bootstrap.transitionEndTest() - - if (!Bootstrap.transition) { - return - } - - $.event.special[Bootstrap.TRANSITION_END] = Bootstrap.getSpecialTransitionEndEvent() -}) - -/** ======================================================================= - * Bootstrap: alert.js v4.0.0 - * http://getbootstrap.com/javascript/#alerts - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): util.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== - * @fileoverview - Bootstrap's generic alert component. Add dismiss - * functionality to all alert messages with this plugin. - * - * Public Methods & Properties: - * - * + $.alert - * + $.alert.noConflict - * + $.alert.Constructor - * + $.alert.Constructor.VERSION - * + $.alert.Constructor.prototype.close - * - * ======================================================================== + * -------------------------------------------------------------------------- */ 'use strict'; +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); -/** - * Our Alert class. - * @param {Element=} opt_element - * @constructor - */ -var Alert = function (opt_element) { - if (opt_element) { - $(opt_element).on('click', Alert._DISMISS_SELECTOR, Alert._handleDismiss(this)) - } -} - - -/** - * @const - * @type {string} - */ -Alert['VERSION'] = '4.0.0' - - -/** - * @const - * @type {string} - * @private - */ -Alert._NAME = 'alert' - - -/** - * @const - * @type {string} - * @private - */ -Alert._DATA_KEY = 'bs.alert' - - -/** - * @const - * @type {string} - * @private - */ -Alert._DISMISS_SELECTOR = '[data-dismiss="alert"]' - - -/** - * @const - * @type {number} - * @private - */ -Alert._TRANSITION_DURATION = 150 - - -/** - * @const - * @type {Function} - * @private - */ -Alert._JQUERY_NO_CONFLICT = $.fn[Alert._NAME] - - -/** - * @const - * @enum {string} - * @private - */ -Alert._Event = { - CLOSE : 'close.bs.alert', - CLOSED : 'closed.bs.alert' -} +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; } +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -/** - * @const - * @enum {string} - * @private - */ -Alert._ClassName = { - ALERT : 'alert', - FADE : 'fade', - IN : 'in' -} - - -/** - * Provides the jQuery Interface for the alert component. - * @param {string=} opt_config - * @this {jQuery} - * @return {jQuery} - * @private - */ -Alert._jQueryInterface = function (opt_config) { - return this.each(function () { - var $this = $(this) - var data = $this.data(Alert._DATA_KEY) - - if (!data) { - data = new Alert(this) - $this.data(Alert._DATA_KEY, data) - } +var Util = (function ($) { - if (opt_config === 'close') { - data[opt_config](this) - } - }) -} + /** + * ------------------------------------------------------------------------ + * Private TransitionEnd Helpers + * ------------------------------------------------------------------------ + */ + var transition = false; -/** - * Close the alert component - * @param {Alert} alertInstance - * @return {Function} - * @private - */ -Alert._handleDismiss = function (alertInstance) { - return function (event) { - if (event) { - event.preventDefault() - } + var TransitionEndEvent = { + WebkitTransition: 'webkitTransitionEnd', + MozTransition: 'transitionend', + OTransition: 'oTransitionEnd otransitionend', + transition: 'transitionend' + }; - alertInstance['close'](this) + // shoutout AngusCroll (https://goo.gl/pxwQGp) + function toType(obj) { + return ({}).toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase(); } -} - -/** - * Close the alert component - * @param {Element} element - */ -Alert.prototype['close'] = function (element) { - var rootElement = this._getRootElement(element) - var customEvent = this._triggerCloseEvent(rootElement) - - if (customEvent.isDefaultPrevented()) return - - this._removeElement(rootElement) -} - - -/** - * Tries to get the alert's root element - * @return {Element} - * @private - */ -Alert.prototype._getRootElement = function (element) { - var parent = false - var selector = Bootstrap.getSelectorFromElement(element) - - if (selector) { - parent = $(selector)[0] - } - - if (!parent) { - parent = $(element).closest('.' + Alert._ClassName.ALERT)[0] + function isElement(obj) { + return (obj[0] || obj).nodeType; } - return parent -} - - -/** - * Trigger close event on element - * @return {$.Event} - * @private - */ -Alert.prototype._triggerCloseEvent = function (element) { - var closeEvent = $.Event(Alert._Event.CLOSE) - $(element).trigger(closeEvent) - return closeEvent -} - - -/** - * Trigger closed event and remove element from dom - * @private - */ -Alert.prototype._removeElement = function (element) { - $(element).removeClass(Alert._ClassName.IN) - - if (!Bootstrap.transition || !$(element).hasClass(Alert._ClassName.FADE)) { - this._destroyElement(element) - return - } - - $(element) - .one(Bootstrap.TRANSITION_END, this._destroyElement.bind(this, element)) - .emulateTransitionEnd(Alert._TRANSITION_DURATION) -} - - -/** - * clean up any lingering jquery data and kill element - * @private - */ -Alert.prototype._destroyElement = function (element) { - $(element) - .detach() - .trigger(Alert._Event.CLOSED) - .remove() -} - - -/** - * ------------------------------------------------------------------------ - * jQuery Interface + noConflict implementaiton - * ------------------------------------------------------------------------ - */ - -/** - * @const - * @type {Function} - */ -$.fn[Alert._NAME] = Alert._jQueryInterface - - -/** - * @const - * @type {Function} - */ -$.fn[Alert._NAME]['Constructor'] = Alert - - -/** - * @return {Function} - */ -$.fn[Alert._NAME]['noConflict'] = function () { - $.fn[Alert._NAME] = Alert._JQUERY_NO_CONFLICT - return Alert._jQueryInterface -} - - -/** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - -$(document).on('click.bs.alert.data-api', Alert._DISMISS_SELECTOR, Alert._handleDismiss(new Alert)) - -/** ======================================================================= - * Bootstrap: button.js v4.0.0 - * http://getbootstrap.com/javascript/#buttons - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== - * @fileoverview - Bootstrap's generic button component. - * - * Note (@fat): Deprecated "setState" – imo, better solutions for managing a - * buttons state should exist outside this plugin. - * - * Public Methods & Properties: - * - * + $.button - * + $.button.noConflict - * + $.button.Constructor - * + $.button.Constructor.VERSION - * + $.button.Constructor.prototype.toggle - * - * ======================================================================== - */ - -'use strict'; - - -/** - * Our Button class. - * @param {Element!} element - * @constructor - */ -var Button = function (element) { - - /** @private {Element} */ - this._element = element - -} - - -/** - * @const - * @type {string} - */ -Button['VERSION'] = '4.0.0' - - -/** - * @const - * @type {string} - * @private - */ -Button._NAME = 'button' - - -/** - * @const - * @type {string} - * @private - */ -Button._DATA_KEY = 'bs.button' - - -/** - * @const - * @type {Function} - * @private - */ -Button._JQUERY_NO_CONFLICT = $.fn[Button._NAME] - - -/** - * @const - * @enum {string} - * @private - */ -Button._ClassName = { - ACTIVE : 'active', - BUTTON : 'btn', - FOCUS : 'focus' -} - - -/** - * @const - * @enum {string} - * @private - */ -Button._Selector = { - DATA_TOGGLE_CARROT : '[data-toggle^="button"]', - DATA_TOGGLE : '[data-toggle="buttons"]', - INPUT : 'input', - ACTIVE : '.active', - BUTTON : '.btn' -} - - -/** - * Provides the jQuery Interface for the Button component. - * @param {string=} opt_config - * @this {jQuery} - * @return {jQuery} - * @private - */ -Button._jQueryInterface = function (opt_config) { - return this.each(function () { - var data = $(this).data(Button._DATA_KEY) - - if (!data) { - data = new Button(this) - $(this).data(Button._DATA_KEY, data) - } - - if (opt_config === 'toggle') { - data[opt_config]() - } - }) -} - - -/** - * Toggle's the button active state - */ -Button.prototype['toggle'] = function () { - var triggerChangeEvent = true - var rootElement = $(this._element).closest(Button._Selector.DATA_TOGGLE)[0] - - if (rootElement) { - var input = $(this._element).find(Button._Selector.INPUT)[0] - if (input) { - if (input.type == 'radio') { - if (input.checked && $(this._element).hasClass(Button._ClassName.ACTIVE)) { - triggerChangeEvent = false - } else { - var activeElement = $(rootElement).find(Button._Selector.ACTIVE)[0] - if (activeElement) { - $(activeElement).removeClass(Button._ClassName.ACTIVE) - } + function getSpecialTransitionEndEvent() { + return { + bindType: transition.end, + delegateType: transition.end, + handle: function handle(event) { + if ($(event.target).is(this)) { + return event.handleObj.handler.apply(this, arguments); } } - - if (triggerChangeEvent) { - input.checked = !$(this._element).hasClass(Button._ClassName.ACTIVE) - $(this._element).trigger('change') - } - } - } else { - this._element.setAttribute('aria-pressed', !$(this._element).hasClass(Button._ClassName.ACTIVE)) - } - - if (triggerChangeEvent) { - $(this._element).toggleClass(Button._ClassName.ACTIVE) + }; } -} - - -/** - * ------------------------------------------------------------------------ - * jQuery Interface + noConflict implementaiton - * ------------------------------------------------------------------------ - */ - -/** - * @const - * @type {Function} - */ -$.fn[Button._NAME] = Button._jQueryInterface - - -/** - * @const - * @type {Function} - */ -$.fn[Button._NAME]['Constructor'] = Button - - -/** - * @const - * @type {Function} - */ -$.fn[Button._NAME]['noConflict'] = function () { - $.fn[Button._NAME] = Button._JQUERY_NO_CONFLICT - return this -} - - -/** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - -$(document) - .on('click.bs.button.data-api', Button._Selector.DATA_TOGGLE_CARROT, function (event) { - event.preventDefault() - - var button = event.target - - if (!$(button).hasClass(Button._ClassName.BUTTON)) { - button = $(button).closest(Button._Selector.BUTTON) - } - - Button._jQueryInterface.call($(button), 'toggle') - }) - .on('focus.bs.button.data-api blur.bs.button.data-api', Button._Selector.DATA_TOGGLE_CARROT, function (event) { - var button = $(event.target).closest(Button._Selector.BUTTON)[0] - $(button).toggleClass(Button._ClassName.FOCUS, /^focus(in)?$/.test(event.type)) - }) - -/** ======================================================================= - * Bootstrap: carousel.js v4.0.0 - * http://getbootstrap.com/javascript/#carousel - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== - * @fileoverview - Bootstrap's carousel. A slideshow component for cycling - * through elements, like a carousel. Nested carousels are not supported. - * - * Public Methods & Properties: - * - * + $.carousel - * + $.carousel.noConflict - * + $.carousel.Constructor - * + $.carousel.Constructor.VERSION - * + $.carousel.Constructor.Defaults - * + $.carousel.Constructor.Defaults.interval - * + $.carousel.Constructor.Defaults.pause - * + $.carousel.Constructor.Defaults.wrap - * + $.carousel.Constructor.Defaults.keyboard - * + $.carousel.Constructor.Defaults.slide - * + $.carousel.Constructor.prototype.next - * + $.carousel.Constructor.prototype.prev - * + $.carousel.Constructor.prototype.pause - * + $.carousel.Constructor.prototype.cycle - * - * ======================================================================== - */ - -'use strict'; - - -/** - * Our carousel class. - * @param {Element!} element - * @param {Object=} opt_config - * @constructor - */ -var Carousel = function (element, opt_config) { - - /** @private {Element} */ - this._element = $(element)[0] - - /** @private {Element} */ - this._indicatorsElement = $(this._element).find(Carousel._Selector.INDICATORS)[0] - - /** @private {?Object} */ - this._config = opt_config || null - - /** @private {boolean} */ - this._isPaused = false - - /** @private {boolean} */ - this._isSliding = false - - /** @private {?number} */ - this._interval = null - - /** @private {?Element} */ - this._activeElement = null - - /** @private {?Array} */ - this._items = null - - this._addEventListeners() - -} - - -/** - * @const - * @type {string} - */ -Carousel['VERSION'] = '4.0.0' - - -/** - * @const - * @type {Object} - */ -Carousel['Defaults'] = { - 'interval' : 5000, - 'pause' : 'hover', - 'wrap' : true, - 'keyboard' : true, - 'slide' : false -} - - -/** - * @const - * @type {string} - * @private - */ -Carousel._NAME = 'carousel' - - -/** - * @const - * @type {string} - * @private - */ -Carousel._DATA_KEY = 'bs.carousel' - - -/** - * @const - * @type {number} - * @private - */ -Carousel._TRANSITION_DURATION = 600 - - -/** - * @const - * @enum {string} - * @private - */ -Carousel._Direction = { - NEXT : 'next', - PREVIOUS : 'prev' -} - -/** - * @const - * @enum {string} - * @private - */ -Carousel._Event = { - SLIDE : 'slide.bs.carousel', - SLID : 'slid.bs.carousel' -} - - -/** - * @const - * @enum {string} - * @private - */ -Carousel._ClassName = { - CAROUSEL : 'carousel', - ACTIVE : 'active', - SLIDE : 'slide', - RIGHT : 'right', - LEFT : 'left', - ITEM : 'carousel-item' -} - - -/** - * @const - * @enum {string} - * @private - */ -Carousel._Selector = { - ACTIVE : '.active', - ACTIVE_ITEM : '.active.carousel-item', - ITEM : '.carousel-item', - NEXT_PREV : '.next, .prev', - INDICATORS : '.carousel-indicators' -} - - -/** - * @const - * @type {Function} - * @private - */ -Carousel._JQUERY_NO_CONFLICT = $.fn[Carousel._NAME] - - -/** - * @param {Object=} opt_config - * @this {jQuery} - * @return {jQuery} - * @private - */ -Carousel._jQueryInterface = function (opt_config) { - return this.each(function () { - var data = $(this).data(Carousel._DATA_KEY) - var config = $.extend({}, Carousel['Defaults'], $(this).data(), typeof opt_config == 'object' && opt_config) - var action = typeof opt_config == 'string' ? opt_config : config.slide - - if (!data) { - data = new Carousel(this, config) - $(this).data(Carousel._DATA_KEY, data) + function transitionEndTest() { + if (window.QUnit) { + return false; } - if (typeof opt_config == 'number') { - data.to(opt_config) - - } else if (action) { - data[action]() + var el = document.createElement('bootstrap'); - } else if (config.interval) { - data['pause']() - data['cycle']() + for (var name in TransitionEndEvent) { + if (el.style[name] !== undefined) { + return { end: TransitionEndEvent[name] }; + } } - }) -} - - -/** - * Click handler for data api - * @param {Event} event - * @this {Element} - * @private - */ -Carousel._dataApiClickHandler = function (event) { - var selector = Bootstrap.getSelectorFromElement(this) - - if (!selector) { - return - } - - var target = $(selector)[0] - - if (!target || !$(target).hasClass(Carousel._ClassName.CAROUSEL)) { - return - } - - var config = $.extend({}, $(target).data(), $(this).data()) - - var slideIndex = this.getAttribute('data-slide-to') - if (slideIndex) { - config.interval = false - } - - Carousel._jQueryInterface.call($(target), config) - - if (slideIndex) { - $(target).data(Carousel._DATA_KEY).to(slideIndex) - } - - event.preventDefault() -} - - -/** - * Advance the carousel to the next slide - */ -Carousel.prototype['next'] = function () { - if (!this._isSliding) { - this._slide(Carousel._Direction.NEXT) - } -} - - -/** - * Return the carousel to the previous slide - */ -Carousel.prototype['prev'] = function () { - if (!this._isSliding) { - this._slide(Carousel._Direction.PREVIOUS) - } -} - - -/** - * Pause the carousel cycle - * @param {Event=} opt_event - */ -Carousel.prototype['pause'] = function (opt_event) { - if (!opt_event) { - this._isPaused = true - } - - if ($(this._element).find(Carousel._Selector.NEXT_PREV)[0] && Bootstrap.transition) { - $(this._element).trigger(Bootstrap.transition.end) - this['cycle'](true) - } - - clearInterval(this._interval) - this._interval = null -} - - -/** - * Cycle to the next carousel item - * @param {Event|boolean=} opt_event - */ -Carousel.prototype['cycle'] = function (opt_event) { - if (!opt_event) { - this._isPaused = false - } - - if (this._interval) { - clearInterval(this._interval) - this._interval = null - } - - if (this._config['interval'] && !this._isPaused) { - this._interval = setInterval(this['next'].bind(this), this._config['interval']) - } -} - - -/** - * @return {Object} - */ -Carousel.prototype['getConfig'] = function () { - return this._config -} - - -/** - * Move active carousel item to specified index - * @param {number} index - */ -Carousel.prototype.to = function (index) { - this._activeElement = $(this._element).find(Carousel._Selector.ACTIVE_ITEM)[0] - - var activeIndex = this._getItemIndex(this._activeElement) - - if (index > (this._items.length - 1) || index < 0) { - return - } - - if (this._isSliding) { - $(this._element).one(Carousel._Event.SLID, function () { this.to(index) }.bind(this)) - return - } - - if (activeIndex == index) { - this['pause']() - this['cycle']() - return - } - - var direction = index > activeIndex ? - Carousel._Direction.NEXT : - Carousel._Direction.PREVIOUS - - this._slide(direction, this._items[index]) -} - - -/** - * Add event listeners to root element - * @private - */ -Carousel.prototype._addEventListeners = function () { - if (this._config['keyboard']) { - $(this._element).on('keydown.bs.carousel', this._keydown.bind(this)) - } - - if (this._config['pause'] == 'hover' && !('ontouchstart' in document.documentElement)) { - $(this._element) - .on('mouseenter.bs.carousel', this['pause'].bind(this)) - .on('mouseleave.bs.carousel', this['cycle'].bind(this)) - } -} - - -/** - * Keydown handler - * @param {Event} event - * @private - */ -Carousel.prototype._keydown = function (event) { - event.preventDefault() - if (/input|textarea/i.test(event.target.tagName)) return - - switch (event.which) { - case 37: this['prev'](); break - case 39: this['next'](); break - default: return + return false; } -} + function transitionEndEmulator(duration) { + var _this = this; -/** - * Get item index - * @param {Element} element - * @return {number} - * @private - */ -Carousel.prototype._getItemIndex = function (element) { - this._items = $.makeArray($(element).parent().find(Carousel._Selector.ITEM)) + var called = false; - return this._items.indexOf(element) -} + $(this).one(Util.TRANSITION_END, function () { + called = true; + }); + setTimeout(function () { + if (!called) { + Util.triggerTransitionEnd(_this); + } + }, duration); -/** - * Get next displayed item based on direction - * @param {Carousel._Direction} direction - * @param {Element} activeElement - * @return {Element} - * @private - */ -Carousel.prototype._getItemByDirection = function (direction, activeElement) { - var activeIndex = this._getItemIndex(activeElement) - var isGoingToWrap = (direction === Carousel._Direction.PREVIOUS && activeIndex === 0) || - (direction === Carousel._Direction.NEXT && activeIndex == (this._items.length - 1)) - - if (isGoingToWrap && !this._config['wrap']) { - return activeElement + return this; } - var delta = direction == Carousel._Direction.PREVIOUS ? -1 : 1 - var itemIndex = (activeIndex + delta) % this._items.length - - return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex] -} - - -/** - * Trigger slide event on element - * @param {Element} relatedTarget - * @param {Carousel._ClassName} directionalClassname - * @return {$.Event} - * @private - */ -Carousel.prototype._triggerSlideEvent = function (relatedTarget, directionalClassname) { - var slideEvent = $.Event(Carousel._Event.SLIDE, { - relatedTarget: relatedTarget, - direction: directionalClassname - }) - - $(this._element).trigger(slideEvent) - - return slideEvent -} + function setTransitionEndSupport() { + transition = transitionEndTest(); + $.fn.emulateTransitionEnd = transitionEndEmulator; -/** - * Set the active indicator if available - * @param {Element} element - * @private - */ -Carousel.prototype._setActiveIndicatorElement = function (element) { - if (this._indicatorsElement) { - $(this._indicatorsElement) - .find(Carousel._Selector.ACTIVE) - .removeClass(Carousel._ClassName.ACTIVE) - - var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)] - if (nextIndicator) { - $(nextIndicator).addClass(Carousel._ClassName.ACTIVE) + if (Util.supportsTransitionEnd()) { + $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent(); } } -} + /** + * -------------------------------------------------------------------------- + * Public Util Api + * -------------------------------------------------------------------------- + */ -/** - * Slide the carousel element in a direction - * @param {Carousel._Direction} direction - * @param {Element=} opt_nextElement - */ -Carousel.prototype._slide = function (direction, opt_nextElement) { - var activeElement = $(this._element).find(Carousel._Selector.ACTIVE_ITEM)[0] - var nextElement = opt_nextElement || activeElement && this._getItemByDirection(direction, activeElement) + var Util = { - var isCycling = !!this._interval + TRANSITION_END: 'bsTransitionEnd', - var directionalClassName = direction == Carousel._Direction.NEXT ? - Carousel._ClassName.LEFT : - Carousel._ClassName.RIGHT + getUID: function getUID(prefix) { + do prefix += ~ ~(Math.random() * 1000000); while (document.getElementById(prefix)); + return prefix; + }, - if (nextElement && $(nextElement).hasClass(Carousel._ClassName.ACTIVE)) { - this._isSliding = false - return - } + getSelectorFromElement: function getSelectorFromElement(element) { + var selector = element.getAttribute('data-target'); - var slideEvent = this._triggerSlideEvent(nextElement, directionalClassName) - if (slideEvent.isDefaultPrevented()) { - return - } - - if (!activeElement || !nextElement) { - // some weirdness is happening, so we bail (maybe throw exception here alerting user that they're dom is off - return - } - - this._isSliding = true - - if (isCycling) { - this['pause']() - } - - this._setActiveIndicatorElement(nextElement) - - var slidEvent = $.Event(Carousel._Event.SLID, { relatedTarget: nextElement, direction: directionalClassName }) - - if (Bootstrap.transition && $(this._element).hasClass(Carousel._ClassName.SLIDE)) { - $(nextElement).addClass(direction) - - Bootstrap.reflow(nextElement) - - $(activeElement).addClass(directionalClassName) - $(nextElement).addClass(directionalClassName) - - $(activeElement) - .one(Bootstrap.TRANSITION_END, function () { - $(nextElement) - .removeClass(directionalClassName) - .removeClass(direction) - - $(nextElement).addClass(Carousel._ClassName.ACTIVE) - - $(activeElement) - .removeClass(Carousel._ClassName.ACTIVE) - .removeClass(direction) - .removeClass(directionalClassName) - - this._isSliding = false - - setTimeout(function () { - $(this._element).trigger(slidEvent) - }.bind(this), 0) - }.bind(this)) - .emulateTransitionEnd(Carousel._TRANSITION_DURATION) + if (!selector) { + selector = element.getAttribute('href') || ''; + selector = /^#[a-z]/i.test(selector) ? selector : null; + } - } else { - $(activeElement).removeClass(Carousel._ClassName.ACTIVE) - $(nextElement).addClass(Carousel._ClassName.ACTIVE) + return selector; + }, - this._isSliding = false - $(this._element).trigger(slidEvent) - } + reflow: function reflow(element) { + new Function('bs', 'return bs')(element.offsetHeight); + }, - if (isCycling) { - this['cycle']() - } -} + triggerTransitionEnd: function triggerTransitionEnd(element) { + $(element).trigger(transition.end); + }, + supportsTransitionEnd: function supportsTransitionEnd() { + return !!transition; + }, -/** - * ------------------------------------------------------------------------ - * jQuery Interface + noConflict implementaiton - * ------------------------------------------------------------------------ - */ + typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) { -/** - * @const - * @type {Function} - */ -$.fn[Carousel._NAME] = Carousel._jQueryInterface + for (var property in configTypes) { + var expectedTypes = configTypes[property]; + var value = config[property]; + var valueType = undefined; + if (value && isElement(value)) valueType = 'element';else valueType = toType(value); -/** - * @const - * @type {Function} - */ -$.fn[Carousel._NAME]['Constructor'] = Carousel + if (!new RegExp(expectedTypes).test(valueType)) { + throw new Error('' + componentName.toUpperCase() + ': ' + ('Option "' + property + '" provided type "' + valueType + '" ') + ('but expected type "' + expectedTypes + '".')); + } + } + } + }; -/** - * @const - * @type {Function} - */ -$.fn[Carousel._NAME]['noConflict'] = function () { - $.fn[Carousel._NAME] = Carousel._JQUERY_NO_CONFLICT - return this -} + setTransitionEndSupport(); + return Util; +})(jQuery); /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - -$(document) - .on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', Carousel._dataApiClickHandler) - -$(window).on('load', function () { - $('[data-ride="carousel"]').each(function () { - var $carousel = $(this) - Carousel._jQueryInterface.call($carousel, /** @type {Object} */ ($carousel.data())) - }) -}) - -/** ======================================================================= - * Bootstrap: collapse.js v4.0.0 - * http://getbootstrap.com/javascript/#collapse - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): alert.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== - * @fileoverview - Bootstrap's collapse plugin. Flexible support for - * collapsible components like accordions and navigation. - * - * Public Methods & Properties: - * - * + $.carousel - * + $.carousel.noConflict - * + $.carousel.Constructor - * + $.carousel.Constructor.VERSION - * + $.carousel.Constructor.Defaults - * + $.carousel.Constructor.Defaults.toggle - * + $.carousel.Constructor.Defaults.trigger - * + $.carousel.Constructor.Defaults.parent - * + $.carousel.Constructor.prototype.toggle - * + $.carousel.Constructor.prototype.show - * + $.carousel.Constructor.prototype.hide - * - * ======================================================================== - */ - -'use strict'; - - -/** - * Our collapse class. - * @param {Element!} element - * @param {Object=} opt_config - * @constructor - */ -var Collapse = function (element, opt_config) { - - /** @private {Element} */ - this._element = element - - /** @private {Object} */ - this._config = $.extend({}, Collapse['Defaults'], opt_config) - - /** @private {Element} */ - this._trigger = typeof this._config['trigger'] == 'string' ? - $(this._config['trigger'])[0] : this._config['trigger'] - - /** @private {boolean} */ - this._isTransitioning = false - - /** @private {?Element} */ - this._parent = this._config['parent'] ? this._getParent() : null - - if (!this._config['parent']) { - this._addAriaAndCollapsedClass(this._element, this._trigger) - } - - if (this._config['toggle']) { - this['toggle']() - } - -} - - -/** - * @const - * @type {string} - */ -Collapse['VERSION'] = '4.0.0' - - -/** - * @const - * @type {Object} - */ -Collapse['Defaults'] = { - 'toggle' : true, - 'trigger' : '[data-toggle="collapse"]', - 'parent' : null -} - - -/** - * @const - * @type {string} - * @private - */ -Collapse._NAME = 'collapse' - - -/** - * @const - * @type {string} - * @private - */ -Collapse._DATA_KEY = 'bs.collapse' - - -/** - * @const - * @type {number} - * @private - */ -Collapse._TRANSITION_DURATION = 600 - - -/** - * @const - * @type {Function} - * @private + * -------------------------------------------------------------------------- */ -Collapse._JQUERY_NO_CONFLICT = $.fn[Collapse._NAME] - -/** - * @const - * @enum {string} - * @private - */ -Collapse._Event = { - SHOW : 'show.bs.collapse', - SHOWN : 'shown.bs.collapse', - HIDE : 'hide.bs.collapse', - HIDDEN : 'hidden.bs.collapse' -} +var Alert = (function ($) { + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ -/** - * @const - * @enum {string} - * @private - */ -Collapse._ClassName = { - IN : 'in', - COLLAPSE : 'collapse', - COLLAPSING : 'collapsing', - COLLAPSED : 'collapsed' -} - - -/** - * @const - * @enum {string} - * @private - */ -Collapse._Dimension = { - WIDTH : 'width', - HEIGHT : 'height' -} + var NAME = 'alert'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.alert'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 150; + var Selector = { + DISMISS: '[data-dismiss="alert"]' + }; -/** - * @const - * @enum {string} - * @private - */ -Collapse._Selector = { - ACTIVES : '.panel > .in, .panel > .collapsing' -} + var Event = { + CLOSE: 'close' + EVENT_KEY, + CLOSED: 'closed' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + '' + DATA_API_KEY + }; + var ClassName = { + ALERT: 'alert', + FADE: 'fade', + IN: 'in' + }; -/** - * Provides the jQuery Interface for the alert component. - * @param {Object|string=} opt_config - * @this {jQuery} - * @return {jQuery} - * @private - */ -Collapse._jQueryInterface = function (opt_config) { - return this.each(function () { - var $this = $(this) - var data = $this.data(Collapse._DATA_KEY) - var config = $.extend({}, Collapse['Defaults'], $this.data(), typeof opt_config == 'object' && opt_config) - - if (!data && config['toggle'] && opt_config == 'show') { - config['toggle'] = false - } + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ - if (!data) { - data = new Collapse(this, config) - $this.data(Collapse._DATA_KEY, data) - } + var Alert = (function () { + function Alert(element) { + _classCallCheck(this, Alert); - if (typeof opt_config == 'string') { - data[opt_config]() + this._element = element; } - }) -} + _createClass(Alert, [{ + key: 'close', -/** - * Function for getting target element from element - * @return {Element} - * @private - */ -Collapse._getTargetFromElement = function (element) { - var selector = Bootstrap.getSelectorFromElement(element) + // public - return selector ? $(selector)[0] : null -} + value: function close(element) { + element = element || this._element; + var rootElement = this._getRootElement(element); + var customEvent = this._triggerCloseEvent(rootElement); -/** - * Toggles the collapse element based on the presence of the 'in' class - */ -Collapse.prototype['toggle'] = function () { - if ($(this._element).hasClass(Collapse._ClassName.IN)) { - this['hide']() - } else { - this['show']() - } -} - + if (customEvent.isDefaultPrevented()) { + return; + } -/** - * Show's the collapsing element - */ -Collapse.prototype['show'] = function () { - if (this._isTransitioning || $(this._element).hasClass(Collapse._ClassName.IN)) { - return - } + this._removeElement(rootElement); + } + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + this._element = null; + } + }, { + key: '_getRootElement', - var activesData, actives + // private - if (this._parent) { - actives = $.makeArray($(Collapse._Selector.ACTIVES)) - if (!actives.length) { - actives = null - } - } + value: function _getRootElement(element) { + var parent = false; + var selector = Util.getSelectorFromElement(element); - if (actives) { - activesData = $(actives).data(Collapse._DATA_KEY) - if (activesData && activesData._isTransitioning) { - return - } - } + if (selector) { + parent = $(selector)[0]; + } - var startEvent = $.Event(Collapse._Event.SHOW) - $(this._element).trigger(startEvent) - if (startEvent.isDefaultPrevented()) { - return - } + if (!parent) { + parent = $(element).closest('.' + ClassName.ALERT)[0]; + } - if (actives) { - Collapse._jQueryInterface.call($(actives), 'hide') - if (!activesData) { - $(actives).data(Collapse._DATA_KEY, null) - } - } + return parent; + } + }, { + key: '_triggerCloseEvent', + value: function _triggerCloseEvent(element) { + var closeEvent = $.Event(Event.CLOSE); + $(element).trigger(closeEvent); + return closeEvent; + } + }, { + key: '_removeElement', + value: function _removeElement(element) { + $(element).removeClass(ClassName.IN); + + if (!Util.supportsTransitionEnd() || !$(element).hasClass(ClassName.FADE)) { + this._destroyElement(element); + return; + } - var dimension = this._getDimension() + $(element).one(Util.TRANSITION_END, this._destroyElement.bind(this, element)).emulateTransitionEnd(TRANSITION_DURATION); + } + }, { + key: '_destroyElement', + value: function _destroyElement(element) { + $(element).detach().trigger(Event.CLOSED).remove(); + } + }], [{ + key: 'VERSION', - $(this._element) - .removeClass(Collapse._ClassName.COLLAPSE) - .addClass(Collapse._ClassName.COLLAPSING) + // getters - this._element.style[dimension] = 0 - this._element.setAttribute('aria-expanded', true) + get: function () { + return VERSION; + } + }, { + key: '_jQueryInterface', - if (this._trigger) { - $(this._trigger).removeClass(Collapse._ClassName.COLLAPSED) - this._trigger.setAttribute('aria-expanded', true) - } + // static - this['setTransitioning'](true) + value: function _jQueryInterface(config) { + return this.each(function () { + var $element = $(this); + var data = $element.data(DATA_KEY); - var complete = function () { - $(this._element) - .removeClass(Collapse._ClassName.COLLAPSING) - .addClass(Collapse._ClassName.COLLAPSE) - .addClass(Collapse._ClassName.IN) + if (!data) { + data = new Alert(this); + $element.data(DATA_KEY, data); + } - this._element.style[dimension] = '' + if (config === 'close') { + data[config](this); + } + }); + } + }, { + key: '_handleDismiss', + value: function _handleDismiss(alertInstance) { + return function (event) { + if (event) { + event.preventDefault(); + } - this['setTransitioning'](false) + alertInstance.close(this); + }; + } + }]); - $(this._element).trigger(Collapse._Event.SHOWN) - }.bind(this) + return Alert; + })(); - if (!Bootstrap.transition) { - complete() - return - } + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ - var scrollSize = 'scroll' + (dimension[0].toUpperCase() + dimension.slice(1)) + $(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert())); - $(this._element) - .one(Bootstrap.TRANSITION_END, complete) - .emulateTransitionEnd(Collapse._TRANSITION_DURATION) + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ - this._element.style[dimension] = this._element[scrollSize] + 'px' -} + $.fn[NAME] = Alert._jQueryInterface; + $.fn[NAME].Constructor = Alert; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Alert._jQueryInterface; + }; + return Alert; +})(jQuery); /** - * Hides's the collapsing element - */ -Collapse.prototype['hide'] = function () { - if (this._isTransitioning || !$(this._element).hasClass(Collapse._ClassName.IN)) { - return - } - - var startEvent = $.Event(Collapse._Event.HIDE) - $(this._element).trigger(startEvent) - if (startEvent.isDefaultPrevented()) return - - var dimension = this._getDimension() - var offsetDimension = dimension === Collapse._Dimension.WIDTH ? - 'offsetWidth' : 'offsetHeight' - - this._element.style[dimension] = this._element[offsetDimension] + 'px' - - Bootstrap.reflow(this._element) - - $(this._element) - .addClass(Collapse._ClassName.COLLAPSING) - .removeClass(Collapse._ClassName.COLLAPSE) - .removeClass(Collapse._ClassName.IN) - - this._element.setAttribute('aria-expanded', false) - - if (this._trigger) { - $(this._trigger).addClass(Collapse._ClassName.COLLAPSED) - this._trigger.setAttribute('aria-expanded', false) - } - - this['setTransitioning'](true) - - var complete = function () { - this['setTransitioning'](false) - $(this._element) - .removeClass(Collapse._ClassName.COLLAPSING) - .addClass(Collapse._ClassName.COLLAPSE) - .trigger(Collapse._Event.HIDDEN) - - }.bind(this) - - this._element.style[dimension] = 0 - - if (!Bootstrap.transition) { - return complete() - } + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): button.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Button = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'button'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.button'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 150; + + var ClassName = { + ACTIVE: 'active', + BUTTON: 'btn', + FOCUS: 'focus' + }; + + var Selector = { + DATA_TOGGLE_CARROT: '[data-toggle^="button"]', + DATA_TOGGLE: '[data-toggle="buttons"]', + INPUT: 'input', + ACTIVE: '.active', + BUTTON: '.btn' + }; + + var Event = { + CLICK_DATA_API: 'click' + EVENT_KEY + '' + DATA_API_KEY, + FOCUS_BLUR_DATA_API: 'focus' + EVENT_KEY + '' + DATA_API_KEY + ' ' + ('blur' + EVENT_KEY + '' + DATA_API_KEY) + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Button = (function () { + function Button(element) { + _classCallCheck(this, Button); + + this._element = element; + } + + _createClass(Button, [{ + key: 'toggle', + + // public + + value: function toggle() { + var triggerChangeEvent = true; + var rootElement = $(this._element).closest(Selector.DATA_TOGGLE)[0]; + + if (rootElement) { + var input = $(this._element).find(Selector.INPUT)[0]; + + if (input) { + if (input.type === 'radio') { + if (input.checked && $(this._element).hasClass(ClassName.ACTIVE)) { + triggerChangeEvent = false; + } else { + var activeElement = $(rootElement).find(Selector.ACTIVE)[0]; + + if (activeElement) { + $(activeElement).removeClass(ClassName.ACTIVE); + } + } + } + + if (triggerChangeEvent) { + input.checked = !$(this._element).hasClass(ClassName.ACTIVE); + $(this._element).trigger('change'); + } + } + } else { + this._element.setAttribute('aria-pressed', !$(this._element).hasClass(ClassName.ACTIVE)); + } - $(this._element) - .one(Bootstrap.TRANSITION_END, complete) - .emulateTransitionEnd(Collapse._TRANSITION_DURATION) -} + if (triggerChangeEvent) { + $(this._element).toggleClass(ClassName.ACTIVE); + } + } + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + this._element = null; + } + }], [{ + key: 'VERSION', + // getters + get: function () { + return VERSION; + } + }, { + key: '_jQueryInterface', -/** - * @param {boolean} isTransitioning - */ -Collapse.prototype['setTransitioning'] = function (isTransitioning) { - this._isTransitioning = isTransitioning -} + // static + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); -/** - * Returns the collapsing dimension - * @return {string} - * @private - */ -Collapse.prototype._getDimension = function () { - var hasWidth = $(this._element).hasClass(Collapse._Dimension.WIDTH) - return hasWidth ? Collapse._Dimension.WIDTH : Collapse._Dimension.HEIGHT -} + if (!data) { + data = new Button(this); + $(this).data(DATA_KEY, data); + } + if (config === 'toggle') { + data[config](); + } + }); + } + }]); -/** - * Returns the parent element - * @return {Element} - * @private - */ -Collapse.prototype._getParent = function () { - var selector = '[data-toggle="collapse"][data-parent="' + this._config['parent'] + '"]' - var parent = $(this._config['parent'])[0] - var elements = /** @type {Array.<Element>} */ ($.makeArray($(parent).find(selector))) + return Button; + })(); - for (var i = 0; i < elements.length; i++) { - this._addAriaAndCollapsedClass(Collapse._getTargetFromElement(elements[i]), elements[i]) - } + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ - return parent -} + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) { + event.preventDefault(); + var button = event.target; -/** - * Returns the parent element - * @param {Element} element - * @param {Element} trigger - * @private - */ -Collapse.prototype._addAriaAndCollapsedClass = function (element, trigger) { - if (element) { - var isOpen = $(element).hasClass(Collapse._ClassName.IN) - element.setAttribute('aria-expanded', isOpen) - - if (trigger) { - trigger.setAttribute('aria-expanded', isOpen) - $(trigger).toggleClass(Collapse._ClassName.COLLAPSED, !isOpen) + if (!$(button).hasClass(ClassName.BUTTON)) { + button = $(button).closest(Selector.BUTTON); } - } -} + Button._jQueryInterface.call($(button), 'toggle'); + }).on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) { + var button = $(event.target).closest(Selector.BUTTON)[0]; + $(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type)); + }); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ -/** - * ------------------------------------------------------------------------ - * jQuery Interface + noConflict implementaiton - * ------------------------------------------------------------------------ - */ - -/** - * @const - * @type {Function} - */ -$.fn[Collapse._NAME] = Collapse._jQueryInterface - - -/** - * @const - * @type {Function} - */ -$.fn[Collapse._NAME]['Constructor'] = Collapse - - -/** - * @const - * @type {Function} - */ -$.fn[Collapse._NAME]['noConflict'] = function () { - $.fn[Collapse._NAME] = Collapse._JQUERY_NO_CONFLICT - return this -} + $.fn[NAME] = Button._jQueryInterface; + $.fn[NAME].Constructor = Button; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Button._jQueryInterface; + }; + return Button; +})(jQuery); /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - -$(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (event) { - event.preventDefault() - - var target = Collapse._getTargetFromElement(this) - - var data = $(target).data(Collapse._DATA_KEY) - var config = data ? 'toggle' : $.extend({}, $(this).data(), { trigger: this }) - - Collapse._jQueryInterface.call($(target), config) -}) - -/** ======================================================================= - * Bootstrap: dropdown.js v4.0.0 - * http://getbootstrap.com/javascript/#dropdown - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): carousel.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== - * @fileoverview - Add dropdown menus to nearly anything with this simple - * plugin, including the navbar, tabs, and pills. - * - * Public Methods & Properties: - * - * + $.dropdown - * + $.dropdown.noConflict - * + $.dropdown.Constructor - * + $.dropdown.Constructor.VERSION - * + $.dropdown.Constructor.prototype.toggle - * - * ======================================================================== - */ - -'use strict'; - - -/** - * Our dropdown class. - * @param {Element!} element - * @constructor - */ -var Dropdown = function (element) { - $(element).on('click.bs.dropdown', this['toggle']) -} + * -------------------------------------------------------------------------- + */ + +var Carousel = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'carousel'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.carousel'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 600; + + var Default = { + interval: 5000, + keyboard: true, + slide: false, + pause: 'hover', + wrap: true + }; + + var DefaultType = { + interval: '(number|boolean)', + keyboard: 'boolean', + slide: '(boolean|string)', + pause: '(string|boolean)', + wrap: 'boolean' + }; + + var Direction = { + NEXT: 'next', + PREVIOUS: 'prev' + }; + + var Event = { + SLIDE: 'slide' + EVENT_KEY, + SLID: 'slid' + EVENT_KEY, + KEYDOWN: 'keydown' + EVENT_KEY, + MOUSEENTER: 'mouseenter' + EVENT_KEY, + MOUSELEAVE: 'mouseleave' + EVENT_KEY, + LOAD_DATA_API: 'load' + EVENT_KEY + '' + DATA_API_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + '' + DATA_API_KEY + }; + + var ClassName = { + CAROUSEL: 'carousel', + ACTIVE: 'active', + SLIDE: 'slide', + RIGHT: 'right', + LEFT: 'left', + ITEM: 'carousel-item' + }; + + var Selector = { + ACTIVE: '.active', + ACTIVE_ITEM: '.active.carousel-item', + ITEM: '.carousel-item', + NEXT_PREV: '.next, .prev', + INDICATORS: '.carousel-indicators', + DATA_SLIDE: '[data-slide], [data-slide-to]', + DATA_RIDE: '[data-ride="carousel"]' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Carousel = (function () { + function Carousel(element, config) { + _classCallCheck(this, Carousel); + + this._items = null; + this._interval = null; + this._activeElement = null; + + this._isPaused = false; + this._isSliding = false; + + this._config = this._getConfig(config); + this._element = $(element)[0]; + this._indicatorsElement = $(this._element).find(Selector.INDICATORS)[0]; + + this._addEventListeners(); + } + + _createClass(Carousel, [{ + key: 'next', + + // public + + value: function next() { + if (!this._isSliding) { + this._slide(Direction.NEXT); + } + } + }, { + key: 'prev', + value: function prev() { + if (!this._isSliding) { + this._slide(Direction.PREVIOUS); + } + } + }, { + key: 'pause', + value: function pause(event) { + if (!event) { + this._isPaused = true; + } + if ($(this._element).find(Selector.NEXT_PREV)[0] && Util.supportsTransitionEnd()) { + Util.triggerTransitionEnd(this._element); + this.cycle(true); + } -/** - * @const - * @type {string} - */ -Dropdown['VERSION'] = '4.0.0' + clearInterval(this._interval); + this._interval = null; + } + }, { + key: 'cycle', + value: function cycle(event) { + if (!event) { + this._isPaused = false; + } + if (this._interval) { + clearInterval(this._interval); + this._interval = null; + } -/** - * @const - * @type {string} - * @private - */ -Dropdown._NAME = 'dropdown' + if (this._config.interval && !this._isPaused) { + this._interval = setInterval($.proxy(this.next, this), this._config.interval); + } + } + }, { + key: 'to', + value: function to(index) { + var _this2 = this; + this._activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0]; -/** - * @const - * @type {string} - * @private - */ -Dropdown._DATA_KEY = 'bs.dropdown' + var activeIndex = this._getItemIndex(this._activeElement); + if (index > this._items.length - 1 || index < 0) { + return; + } -/** - * @const - * @type {Function} - * @private - */ -Dropdown._JQUERY_NO_CONFLICT = $.fn[Dropdown._NAME] + if (this._isSliding) { + $(this._element).one(Event.SLID, function () { + return _this2.to(index); + }); + return; + } + if (activeIndex == index) { + this.pause(); + this.cycle(); + return; + } -/** - * @const - * @enum {string} - * @private - */ -Dropdown._Event = { - HIDE : 'hide.bs.dropdown', - HIDDEN : 'hidden.bs.dropdown', - SHOW : 'show.bs.dropdown', - SHOWN : 'shown.bs.dropdown' -} + var direction = index > activeIndex ? Direction.NEXT : Direction.PREVIOUS; + this._slide(direction, this._items[index]); + } + }, { + key: 'dispose', + value: function dispose() { + $(this._element).off(EVENT_KEY); + $.removeData(this._element, DATA_KEY); + + this._items = null; + this._config = null; + this._element = null; + this._interval = null; + this._isPaused = null; + this._isSliding = null; + this._activeElement = null; + this._indicatorsElement = null; + } + }, { + key: '_getConfig', -/** - * @const - * @enum {string} - * @private - */ -Dropdown._ClassName = { - BACKDROP : 'dropdown-backdrop', - DISABLED : 'disabled', - OPEN : 'open' -} + // private + value: function _getConfig(config) { + config = $.extend({}, Default, config); + Util.typeCheckConfig(NAME, config, DefaultType); + return config; + } + }, { + key: '_addEventListeners', + value: function _addEventListeners() { + if (this._config.keyboard) { + $(this._element).on(Event.KEYDOWN, $.proxy(this._keydown, this)); + } -/** - * @const - * @enum {string} - * @private - */ -Dropdown._Selector = { - BACKDROP : '.dropdown-backdrop', - DATA_TOGGLE : '[data-toggle="dropdown"]', - FORM_CHILD : '.dropdown form', - ROLE_MENU : '[role="menu"]', - ROLE_LISTBOX : '[role="listbox"]', - NAVBAR_NAV : '.navbar-nav', - VISIBLE_ITEMS : '[role="menu"] li:not(.divider) a, [role="listbox"] li:not(.divider) a' -} + if (this._config.pause == 'hover' && !('ontouchstart' in document.documentElement)) { + $(this._element).on(Event.MOUSEENTER, $.proxy(this.pause, this)).on(Event.MOUSELEAVE, $.proxy(this.cycle, this)); + } + } + }, { + key: '_keydown', + value: function _keydown(event) { + event.preventDefault(); + + if (/input|textarea/i.test(event.target.tagName)) return; + + switch (event.which) { + case 37: + this.prev();break; + case 39: + this.next();break; + default: + return; + } + } + }, { + key: '_getItemIndex', + value: function _getItemIndex(element) { + this._items = $.makeArray($(element).parent().find(Selector.ITEM)); + return this._items.indexOf(element); + } + }, { + key: '_getItemByDirection', + value: function _getItemByDirection(direction, activeElement) { + var isNextDirection = direction === Direction.NEXT; + var isPrevDirection = direction === Direction.PREVIOUS; + var activeIndex = this._getItemIndex(activeElement); + var lastItemIndex = this._items.length - 1; + var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex == lastItemIndex; + + if (isGoingToWrap && !this._config.wrap) { + return activeElement; + } + var delta = direction == Direction.PREVIOUS ? -1 : 1; + var itemIndex = (activeIndex + delta) % this._items.length; -/** - * Provides the jQuery Interface for the alert component. - * @param {string=} opt_config - * @this {jQuery} - * @return {jQuery} - * @private - */ -Dropdown._jQueryInterface = function (opt_config) { - return this.each(function () { - var data = $(this).data(Dropdown._DATA_KEY) + return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex]; + } + }, { + key: '_triggerSlideEvent', + value: function _triggerSlideEvent(relatedTarget, directionalClassname) { + var slideEvent = $.Event(Event.SLIDE, { + relatedTarget: relatedTarget, + direction: directionalClassname + }); - if (!data) { - $(this).data(Dropdown._DATA_KEY, (data = new Dropdown(this))) - } + $(this._element).trigger(slideEvent); - if (typeof opt_config === 'string') { - data[opt_config].call(this) - } - }) -} + return slideEvent; + } + }, { + key: '_setActiveIndicatorElement', + value: function _setActiveIndicatorElement(element) { + if (this._indicatorsElement) { + $(this._indicatorsElement).find(Selector.ACTIVE).removeClass(ClassName.ACTIVE); + var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)]; -/** - * @param {Event=} opt_event - * @private - */ -Dropdown._clearMenus = function (opt_event) { - if (opt_event && opt_event.which == 3) { - return - } + if (nextIndicator) { + $(nextIndicator).addClass(ClassName.ACTIVE); + } + } + } + }, { + key: '_slide', + value: function _slide(direction, element) { + var _this3 = this; - var backdrop = $(Dropdown._Selector.BACKDROP)[0] - if (backdrop) { - backdrop.parentNode.removeChild(backdrop) - } + var activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0]; + var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement); - var toggles = /** @type {Array.<Element>} */ ($.makeArray($(Dropdown._Selector.DATA_TOGGLE))) + var isCycling = !!this._interval; - for (var i = 0; i < toggles.length; i++) { - var parent = Dropdown._getParentFromElement(toggles[i]) - var relatedTarget = { 'relatedTarget': toggles[i] } + var directionalClassName = direction == Direction.NEXT ? ClassName.LEFT : ClassName.RIGHT; - if (!$(parent).hasClass(Dropdown._ClassName.OPEN)) { - continue - } + if (nextElement && $(nextElement).hasClass(ClassName.ACTIVE)) { + this._isSliding = false; + return; + } - var hideEvent = $.Event(Dropdown._Event.HIDE, relatedTarget) - $(parent).trigger(hideEvent) - if (hideEvent.isDefaultPrevented()) { - continue - } + var slideEvent = this._triggerSlideEvent(nextElement, directionalClassName); + if (slideEvent.isDefaultPrevented()) { + return; + } - toggles[i].setAttribute('aria-expanded', 'false') + if (!activeElement || !nextElement) { + // some weirdness is happening, so we bail + return; + } - $(parent) - .removeClass(Dropdown._ClassName.OPEN) - .trigger(Dropdown._Event.HIDDEN, relatedTarget) - } -} + this._isSliding = true; + if (isCycling) { + this.pause(); + } -/** - * @param {Element} element - * @return {Element} - * @private - */ -Dropdown._getParentFromElement = function (element) { - var selector = Bootstrap.getSelectorFromElement(element) + this._setActiveIndicatorElement(nextElement); - if (selector) { - var parent = $(selector)[0] - } + var slidEvent = $.Event(Event.SLID, { + relatedTarget: nextElement, + direction: directionalClassName + }); - return /** @type {Element} */ (parent || element.parentNode) -} + if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.SLIDE)) { + $(nextElement).addClass(direction); -/** - * @param {Event} event - * @this {Element} - * @private - */ -Dropdown._dataApiKeydownHandler = function (event) { - if (!/(38|40|27|32)/.test(event.which) || /input|textarea/i.test(event.target.tagName)) { - return - } + Util.reflow(nextElement); - event.preventDefault() - event.stopPropagation() + $(activeElement).addClass(directionalClassName); + $(nextElement).addClass(directionalClassName); - if (this.disabled || $(this).hasClass(Dropdown._ClassName.DISABLED)) { - return - } + $(activeElement).one(Util.TRANSITION_END, function () { + $(nextElement).removeClass(directionalClassName).removeClass(direction); - var parent = Dropdown._getParentFromElement(this) - var isActive = $(parent).hasClass(Dropdown._ClassName.OPEN) + $(nextElement).addClass(ClassName.ACTIVE); - if ((!isActive && event.which != 27) || (isActive && event.which == 27)) { - if (event.which == 27) { - var toggle = $(parent).find(Dropdown._Selector.DATA_TOGGLE)[0] - $(toggle).trigger('focus') - } - $(this).trigger('click') - return - } + $(activeElement).removeClass(ClassName.ACTIVE).removeClass(direction).removeClass(directionalClassName); - var items = $.makeArray($(Dropdown._Selector.VISIBLE_ITEMS)) + _this3._isSliding = false; - items = items.filter(function (item) { - return item.offsetWidth || item.offsetHeight - }) + setTimeout(function () { + return $(_this3._element).trigger(slidEvent); + }, 0); + }).emulateTransitionEnd(TRANSITION_DURATION); + } else { + $(activeElement).removeClass(ClassName.ACTIVE); + $(nextElement).addClass(ClassName.ACTIVE); - if (!items.length) { - return - } + this._isSliding = false; + $(this._element).trigger(slidEvent); + } - var index = items.indexOf(event.target) + if (isCycling) { + this.cycle(); + } + } + }], [{ + key: 'VERSION', - if (event.which == 38 && index > 0) index-- // up - if (event.which == 40 && index < items.length - 1) index++ // down - if (!~index) index = 0 + // getters - items[index].focus() -} + get: function () { + return VERSION; + } + }, { + key: 'Default', + get: function () { + return Default; + } + }, { + key: '_jQueryInterface', + // static -/** - * Toggles the dropdown - * @this {Element} - * @return {boolean|undefined} - */ -Dropdown.prototype['toggle'] = function () { - if (this.disabled || $(this).hasClass(Dropdown._ClassName.DISABLED)) { - return - } + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = $.extend({}, Default, $(this).data()); - var parent = Dropdown._getParentFromElement(this) - var isActive = $(parent).hasClass(Dropdown._ClassName.OPEN) + if (typeof config === 'object') { + $.extend(_config, config); + } - Dropdown._clearMenus() + var action = typeof config === 'string' ? config : _config.slide; - if (isActive) { - return false - } + if (!data) { + data = new Carousel(this, _config); + $(this).data(DATA_KEY, data); + } - if ('ontouchstart' in document.documentElement && !$(parent).closest(Dropdown._Selector.NAVBAR_NAV).length) { - // if mobile we use a backdrop because click events don't delegate - var dropdown = document.createElement('div') - dropdown.className = Dropdown._ClassName.BACKDROP - this.parentNode.insertBefore(this, dropdown) - $(dropdown).on('click', Dropdown._clearMenus) - } + if (typeof config == 'number') { + data.to(config); + } else if (action) { + data[action](); + } else if (_config.interval) { + data.pause(); + data.cycle(); + } + }); + } + }, { + key: '_dataApiClickHandler', + value: function _dataApiClickHandler(event) { + var selector = Util.getSelectorFromElement(this); - var relatedTarget = { 'relatedTarget': this } - var showEvent = $.Event(Dropdown._Event.SHOW, relatedTarget) + if (!selector) { + return; + } - $(parent).trigger(showEvent) + var target = $(selector)[0]; - if (showEvent.isDefaultPrevented()) { - return - } + if (!target || !$(target).hasClass(ClassName.CAROUSEL)) { + return; + } - this.focus() - this.setAttribute('aria-expanded', 'true') + var config = $.extend({}, $(target).data(), $(this).data()); - $(parent).toggleClass(Dropdown._ClassName.OPEN) + var slideIndex = this.getAttribute('data-slide-to'); + if (slideIndex) { + config.interval = false; + } - $(parent).trigger(Dropdown._Event.SHOWN, relatedTarget) + Carousel._jQueryInterface.call($(target), config); - return false -} + if (slideIndex) { + $(target).data(DATA_KEY).to(slideIndex); + } + event.preventDefault(); + } + }]); -/** - * ------------------------------------------------------------------------ - * jQuery Interface + noConflict implementaiton - * ------------------------------------------------------------------------ - */ + return Carousel; + })(); -/** - * @const - * @type {Function} - */ -$.fn[Dropdown._NAME] = Dropdown._jQueryInterface + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + $(document).on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler); -/** - * @const - * @type {Function} - */ -$.fn[Dropdown._NAME]['Constructor'] = Dropdown + $(window).on(Event.LOAD_DATA_API, function () { + $(Selector.DATA_RIDE).each(function () { + var $carousel = $(this); + Carousel._jQueryInterface.call($carousel, $carousel.data()); + }); + }); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ -/** - * @const - * @type {Function} - */ -$.fn[Dropdown._NAME]['noConflict'] = function () { - $.fn[Dropdown._NAME] = Dropdown._JQUERY_NO_CONFLICT - return this -} + $.fn[NAME] = Carousel._jQueryInterface; + $.fn[NAME].Constructor = Carousel; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Carousel._jQueryInterface; + }; + return Carousel; +})(jQuery); /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - -$(document) - .on('click.bs.dropdown.data-api', Dropdown._clearMenus) - .on('click.bs.dropdown.data-api', Dropdown._Selector.FORM_CHILD, function (e) { e.stopPropagation() }) - .on('click.bs.dropdown.data-api', Dropdown._Selector.DATA_TOGGLE, Dropdown.prototype['toggle']) - .on('keydown.bs.dropdown.data-api', Dropdown._Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler) - .on('keydown.bs.dropdown.data-api', Dropdown._Selector.ROLE_MENU, Dropdown._dataApiKeydownHandler) - .on('keydown.bs.dropdown.data-api', Dropdown._Selector.ROLE_LISTBOX, Dropdown._dataApiKeydownHandler) - -/** ======================================================================= - * Bootstrap: modal.js v4.0.0 - * http://getbootstrap.com/javascript/#modal - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): collapse.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== - * @fileoverview - Bootstrap's modal plugin. Modals are streamlined, but - * flexible, dialog prompts with the minimum required functionality and - * smart defaults. - * - * Public Methods & Properties: - * - * + $.modal - * + $.modal.noConflict - * + $.modal.Constructor - * + $.modal.Constructor.VERSION - * + $.modal.Constructor.Defaults - * + $.modal.Constructor.Defaults.backdrop - * + $.modal.Constructor.Defaults.keyboard - * + $.modal.Constructor.Defaults.show - * + $.modal.Constructor.prototype.toggle - * + $.modal.Constructor.prototype.show - * + $.modal.Constructor.prototype.hide - * - * ======================================================================== - */ - -'use strict'; - - -/** - * Our modal class. - * @param {Element} element - * @param {Object} config - * @constructor - */ -var Modal = function (element, config) { + * -------------------------------------------------------------------------- + */ + +var Collapse = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'collapse'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.collapse'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 600; + + var Default = { + toggle: true, + parent: '' + }; + + var DefaultType = { + toggle: 'boolean', + parent: 'string' + }; + + var Event = { + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + '' + DATA_API_KEY + }; + + var ClassName = { + IN: 'in', + COLLAPSE: 'collapse', + COLLAPSING: 'collapsing', + COLLAPSED: 'collapsed' + }; + + var Dimension = { + WIDTH: 'width', + HEIGHT: 'height' + }; + + var Selector = { + ACTIVES: '.panel > .in, .panel > .collapsing', + DATA_TOGGLE: '[data-toggle="collapse"]' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Collapse = (function () { + function Collapse(element, config) { + _classCallCheck(this, Collapse); + + this._isTransitioning = false; + this._element = element; + this._config = this._getConfig(config); + this._triggerArray = $.makeArray($('[data-toggle="collapse"][href="#' + element.id + '"],' + ('[data-toggle="collapse"][data-target="#' + element.id + '"]'))); + + this._parent = this._config.parent ? this._getParent() : null; + + if (!this._config.parent) { + this._addAriaAndCollapsedClass(this._element, this._triggerArray); + } - /** @private {Object} */ - this._config = config + if (this._config.toggle) { + this.toggle(); + } + } - /** @private {Element} */ - this._element = element + _createClass(Collapse, [{ + key: 'toggle', - /** @private {Element} */ - this._backdrop = null + // public - /** @private {boolean} */ - this._isShown = false + value: function toggle() { + if ($(this._element).hasClass(ClassName.IN)) { + this.hide(); + } else { + this.show(); + } + } + }, { + key: 'show', + value: function show() { + var _this4 = this; - /** @private {boolean} */ - this._isBodyOverflowing = false + if (this._isTransitioning || $(this._element).hasClass(ClassName.IN)) { + return; + } - /** @private {number} */ - this._scrollbarWidth = 0 + var actives = undefined; + var activesData = undefined; -} + if (this._parent) { + actives = $.makeArray($(Selector.ACTIVES)); + if (!actives.length) { + actives = null; + } + } + if (actives) { + activesData = $(actives).data(DATA_KEY); + if (activesData && activesData._isTransitioning) { + return; + } + } -/** - * @const - * @type {string} - */ -Modal['VERSION'] = '4.0.0' + var startEvent = $.Event(Event.SHOW); + $(this._element).trigger(startEvent); + if (startEvent.isDefaultPrevented()) { + return; + } + if (actives) { + Collapse._jQueryInterface.call($(actives), 'hide'); + if (!activesData) { + $(actives).data(DATA_KEY, null); + } + } -/** - * @const - * @type {Object} - */ -Modal['Defaults'] = { - 'backdrop' : true, - 'keyboard' : true, - 'show' : true -} + var dimension = this._getDimension(); + $(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING); -/** - * @const - * @type {string} - * @private - */ -Modal._NAME = 'modal' + this._element.style[dimension] = 0; + this._element.setAttribute('aria-expanded', true); + if (this._triggerArray.length) { + $(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true); + } -/** - * @const - * @type {string} - * @private - */ -Modal._DATA_KEY = 'bs.modal' + this.setTransitioning(true); + var complete = function complete() { + $(_this4._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).addClass(ClassName.IN); -/** - * @const - * @type {number} - * @private - */ -Modal._TRANSITION_DURATION = 300 + _this4._element.style[dimension] = ''; + _this4.setTransitioning(false); -/** - * @const - * @type {number} - * @private - */ -Modal._BACKDROP_TRANSITION_DURATION = 150 + $(_this4._element).trigger(Event.SHOWN); + }; + if (!Util.supportsTransitionEnd()) { + complete(); + return; + } -/** - * @const - * @type {Function} - * @private - */ -Modal._JQUERY_NO_CONFLICT = $.fn[Modal._NAME] + var scrollSize = 'scroll' + (dimension[0].toUpperCase() + dimension.slice(1)); + $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); -/** - * @const - * @enum {string} - * @private - */ -Modal._Event = { - HIDE : 'hide.bs.modal', - HIDDEN : 'hidden.bs.modal', - SHOW : 'show.bs.modal', - SHOWN : 'shown.bs.modal' -} + this._element.style[dimension] = this._element[scrollSize] + 'px'; + } + }, { + key: 'hide', + value: function hide() { + var _this5 = this; + if (this._isTransitioning || !$(this._element).hasClass(ClassName.IN)) { + return; + } -/** - * @const - * @enum {string} - * @private - */ -Modal._ClassName = { - BACKDROP : 'modal-backdrop', - OPEN : 'modal-open', - FADE : 'fade', - IN : 'in' -} + var startEvent = $.Event(Event.HIDE); + $(this._element).trigger(startEvent); + if (startEvent.isDefaultPrevented()) { + return; + } + var dimension = this._getDimension(); + var offsetDimension = dimension === Dimension.WIDTH ? 'offsetWidth' : 'offsetHeight'; -/** - * @const - * @enum {string} - * @private - */ -Modal._Selector = { - DIALOG : '.modal-dialog', - DATA_TOGGLE : '[data-toggle="modal"]', - DATA_DISMISS : '[data-dismiss="modal"]', - SCROLLBAR_MEASURER : 'modal-scrollbar-measure' -} + this._element.style[dimension] = this._element[offsetDimension] + 'px'; + Util.reflow(this._element); + $(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.IN); -/** - * Provides the jQuery Interface for the alert component. - * @param {Object|string=} opt_config - * @param {Element=} opt_relatedTarget - * @this {jQuery} - * @return {jQuery} - * @private - */ -Modal._jQueryInterface = function Plugin(opt_config, opt_relatedTarget) { - return this.each(function () { - var data = $(this).data(Modal._DATA_KEY) - var config = $.extend({}, Modal['Defaults'], $(this).data(), typeof opt_config == 'object' && opt_config) - - if (!data) { - data = new Modal(this, config) - $(this).data(Modal._DATA_KEY, data) - } + this._element.setAttribute('aria-expanded', false); - if (typeof opt_config == 'string') { - data[opt_config](opt_relatedTarget) + if (this._triggerArray.length) { + $(this._triggerArray).addClass(ClassName.COLLAPSED).attr('aria-expanded', false); + } - } else if (config['show']) { - data['show'](opt_relatedTarget) - } - }) -} + this.setTransitioning(true); + var complete = function complete() { + _this5.setTransitioning(false); + $(_this5._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).trigger(Event.HIDDEN); + }; -/** - * @param {Element} relatedTarget - */ -Modal.prototype['toggle'] = function (relatedTarget) { - return this._isShown ? this['hide']() : this['show'](relatedTarget) -} + this._element.style[dimension] = 0; + if (!Util.supportsTransitionEnd()) { + return complete(); + } -/** - * @param {Element} relatedTarget - */ -Modal.prototype['show'] = function (relatedTarget) { - var showEvent = $.Event(Modal._Event.SHOW, { relatedTarget: relatedTarget }) + $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + } + }, { + key: 'setTransitioning', + value: function setTransitioning(isTransitioning) { + this._isTransitioning = isTransitioning; + } + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + + this._config = null; + this._parent = null; + this._element = null; + this._triggerArray = null; + this._isTransitioning = null; + } + }, { + key: '_getConfig', - $(this._element).trigger(showEvent) + // private - if (this._isShown || showEvent.isDefaultPrevented()) { - return - } + value: function _getConfig(config) { + config = $.extend({}, Default, config); + config.toggle = !!config.toggle; // coerce string values + Util.typeCheckConfig(NAME, config, DefaultType); + return config; + } + }, { + key: '_getDimension', + value: function _getDimension() { + var hasWidth = $(this._element).hasClass(Dimension.WIDTH); + return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT; + } + }, { + key: '_getParent', + value: function _getParent() { + var _this6 = this; - this._isShown = true + var parent = $(this._config.parent)[0]; + var selector = '[data-toggle="collapse"][data-parent="' + this._config.parent + '"]'; - this._checkScrollbar() - this._setScrollbar() + $(parent).find(selector).each(function (i, element) { + _this6._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]); + }); - $(document.body).addClass(Modal._ClassName.OPEN) + return parent; + } + }, { + key: '_addAriaAndCollapsedClass', + value: function _addAriaAndCollapsedClass(element, triggerArray) { + if (element) { + var isOpen = $(element).hasClass(ClassName.IN); + element.setAttribute('aria-expanded', isOpen); + + if (triggerArray.length) { + $(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen); + } + } + } + }], [{ + key: 'VERSION', - this._escape() - this._resize() + // getters - $(this._element).on('click.dismiss.bs.modal', Modal._Selector.DATA_DISMISS, this['hide'].bind(this)) + get: function () { + return VERSION; + } + }, { + key: 'Default', + get: function () { + return Default; + } + }, { + key: '_getTargetFromElement', - this._showBackdrop(this._showElement.bind(this, relatedTarget)) -} + // static + value: function _getTargetFromElement(element) { + var selector = Util.getSelectorFromElement(element); + return selector ? $(selector)[0] : null; + } + }, { + key: '_jQueryInterface', + value: function _jQueryInterface(config) { + return this.each(function () { + var $this = $(this); + var data = $this.data(DATA_KEY); + var _config = $.extend({}, Default, $this.data(), typeof config === 'object' && config); + + if (!data && _config.toggle && /show|hide/.test(config)) { + _config.toggle = false; + } -/** - * @param {Event} event - */ -Modal.prototype['hide'] = function (event) { - if (event) { - event.preventDefault() - } + if (!data) { + data = new Collapse(this, _config); + $this.data(DATA_KEY, data); + } - var hideEvent = $.Event(Modal._Event.HIDE) + if (typeof config === 'string') { + data[config](); + } + }); + } + }]); - $(this._element).trigger(hideEvent) + return Collapse; + })(); - if (!this._isShown || hideEvent.isDefaultPrevented()) { - return - } + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ - this._isShown = false + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + event.preventDefault(); - this._escape() - this._resize() + var target = Collapse._getTargetFromElement(this); - $(document).off('focusin.bs.modal') + var data = $(target).data(DATA_KEY); + var config = data ? 'toggle' : $(this).data(); - $(this._element).removeClass(Modal._ClassName.IN) - this._element.setAttribute('aria-hidden', true) + Collapse._jQueryInterface.call($(target), config); + }); - $(this._element).off('click.dismiss.bs.modal') + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ - if (Bootstrap.transition && $(this._element).hasClass(Modal._ClassName.FADE)) { - $(this._element) - .one(Bootstrap.TRANSITION_END, this._hideModal.bind(this)) - .emulateTransitionEnd(Modal._TRANSITION_DURATION) - } else { - this._hideModal() - } -} + $.fn[NAME] = Collapse._jQueryInterface; + $.fn[NAME].Constructor = Collapse; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Collapse._jQueryInterface; + }; + return Collapse; +})(jQuery); /** - * @param {Element} relatedTarget - * @private - */ -Modal.prototype._showElement = function (relatedTarget) { - var transition = Bootstrap.transition && $(this._element).hasClass(Modal._ClassName.FADE) - - if (!this._element.parentNode || this._element.parentNode.nodeType != Node.ELEMENT_NODE) { - document.body.appendChild(this._element) // don't move modals dom position - } - - this._element.style.display = 'block' - this._element.scrollTop = 0 - - if (this._config['backdrop']) { - this._adjustBackdrop() - } + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): dropdown.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Dropdown = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'dropdown'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.dropdown'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + CLICK: 'click' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + '' + DATA_API_KEY, + KEYDOWN_DATA_API: 'keydown' + EVENT_KEY + '' + DATA_API_KEY + }; + + var ClassName = { + BACKDROP: 'dropdown-backdrop', + DISABLED: 'disabled', + OPEN: 'open' + }; + + var Selector = { + BACKDROP: '.dropdown-backdrop', + DATA_TOGGLE: '[data-toggle="dropdown"]', + FORM_CHILD: '.dropdown form', + ROLE_MENU: '[role="menu"]', + ROLE_LISTBOX: '[role="listbox"]', + NAVBAR_NAV: '.navbar-nav', + VISIBLE_ITEMS: '[role="menu"] li:not(.disabled) a, ' + '[role="listbox"] li:not(.disabled) a' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Dropdown = (function () { + function Dropdown(element) { + _classCallCheck(this, Dropdown); + + this._element = element; + + this._addEventListeners(); + } + + _createClass(Dropdown, [{ + key: 'toggle', + + // public + + value: function toggle() { + if (this.disabled || $(this).hasClass(ClassName.DISABLED)) { + return; + } - if (transition) { - Bootstrap.reflow(this._element) - } + var parent = Dropdown._getParentFromElement(this); + var isActive = $(parent).hasClass(ClassName.OPEN); - $(this._element).addClass(Modal._ClassName.IN) - this._element.setAttribute('aria-hidden', false) + Dropdown._clearMenus(); - this._enforceFocus() + if (isActive) { + return false; + } - var shownEvent = $.Event(Modal._Event.SHOWN, { relatedTarget: relatedTarget }) + if ('ontouchstart' in document.documentElement && !$(parent).closest(Selector.NAVBAR_NAV).length) { - var transitionComplete = function () { - this._element.focus() - $(this._element).trigger(shownEvent) - }.bind(this) + // if mobile we use a backdrop because click events don't delegate + var dropdown = document.createElement('div'); + dropdown.className = ClassName.BACKDROP; + $(dropdown).insertBefore(this); + $(dropdown).on('click', Dropdown._clearMenus); + } - if (transition) { - var dialog = $(this._element).find(Modal._Selector.DIALOG)[0] - $(dialog) - .one(Bootstrap.TRANSITION_END, transitionComplete) - .emulateTransitionEnd(Modal._TRANSITION_DURATION) - } else { - transitionComplete() - } -} + var relatedTarget = { relatedTarget: this }; + var showEvent = $.Event(Event.SHOW, relatedTarget); + $(parent).trigger(showEvent); + if (showEvent.isDefaultPrevented()) { + return; + } -/** - * @private - */ -Modal.prototype._enforceFocus = function () { - $(document) - .off('focusin.bs.modal') // guard against infinite focus loop - .on('focusin.bs.modal', function (e) { - if (this._element !== e.target && !$(this._element).has(e.target).length) { - this._element.focus() - } - }.bind(this)) -} + this.focus(); + this.setAttribute('aria-expanded', 'true'); + $(parent).toggleClass(ClassName.OPEN); + $(parent).trigger(Event.SHOWN, relatedTarget); -/** - * @private - */ -Modal.prototype._escape = function () { - if (this._isShown && this._config['keyboard']) { - $(this._element).on('keydown.dismiss.bs.modal', function (event) { - if (event.which === 27) { - this['hide']() + return false; } - }.bind(this)) - - } else if (!this._isShown) { - $(this._element).off('keydown.dismiss.bs.modal') - } -} - - -/** - * @private - */ -Modal.prototype._resize = function () { - if (this._isShown) { - $(window).on('resize.bs.modal', this._handleUpdate.bind(this)) - } else { - $(window).off('resize.bs.modal') - } -} - - -/** - * @private - */ -Modal.prototype._hideModal = function () { - this._element.style.display = 'none' - this._showBackdrop(function () { - $(document.body).removeClass(Modal._ClassName.OPEN) - this._resetAdjustments() - this._resetScrollbar() - $(this._element).trigger(Modal._Event.HIDDEN) - }.bind(this)) -} + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + $(this._element).off(EVENT_KEY); + this._element = null; + } + }, { + key: '_addEventListeners', + // private -/** - * @private - */ -Modal.prototype._removeBackdrop = function () { - if (this._backdrop) { - this._backdrop.parentNode.removeChild(this._backdrop) - this._backdrop = null - } -} + value: function _addEventListeners() { + $(this._element).on(Event.CLICK, this.toggle); + } + }], [{ + key: 'VERSION', + // getters -/** - * @param {Function} callback - * @private - */ -Modal.prototype._showBackdrop = function (callback) { - var animate = $(this._element).hasClass(Modal._ClassName.FADE) ? Modal._ClassName.FADE : '' + get: function () { + return VERSION; + } + }, { + key: '_jQueryInterface', - if (this._isShown && this._config['backdrop']) { - var doAnimate = Bootstrap.transition && animate + // static - this._backdrop = document.createElement('div') - this._backdrop.className = Modal._ClassName.BACKDROP + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); - if (animate) { - $(this._backdrop).addClass(animate) - } + if (!data) { + $(this).data(DATA_KEY, data = new Dropdown(this)); + } - $(this._element).prepend(this._backdrop) + if (typeof config === 'string') { + data[config].call(this); + } + }); + } + }, { + key: '_clearMenus', + value: function _clearMenus(event) { + if (event && event.which === 3) { + return; + } - $(this._backdrop).on('click.dismiss.bs.modal', function (event) { - if (event.target !== event.currentTarget) return - this._config['backdrop'] === 'static' - ? this._element.focus() - : this['hide']() - }.bind(this)) + var backdrop = $(Selector.BACKDROP)[0]; + if (backdrop) { + backdrop.parentNode.removeChild(backdrop); + } - if (doAnimate) { - Bootstrap.reflow(this._backdrop) - } + var toggles = $.makeArray($(Selector.DATA_TOGGLE)); - $(this._backdrop).addClass(Modal._ClassName.IN) + for (var i = 0; i < toggles.length; i++) { + var _parent = Dropdown._getParentFromElement(toggles[i]); + var relatedTarget = { relatedTarget: toggles[i] }; - if (!callback) { - return - } + if (!$(_parent).hasClass(ClassName.OPEN)) { + continue; + } - if (!doAnimate) { - callback() - return - } + if (event && event.type === 'click' && /input|textarea/i.test(event.target.tagName) && $.contains(_parent, event.target)) { + continue; + } - $(this._backdrop) - .one(Bootstrap.TRANSITION_END, callback) - .emulateTransitionEnd(Modal._BACKDROP_TRANSITION_DURATION) + var hideEvent = $.Event(Event.HIDE, relatedTarget); + $(_parent).trigger(hideEvent); + if (hideEvent.isDefaultPrevented()) { + continue; + } - } else if (!this._isShown && this._backdrop) { - $(this._backdrop).removeClass(Modal._ClassName.IN) + toggles[i].setAttribute('aria-expanded', 'false'); - var callbackRemove = function () { - this._removeBackdrop() - if (callback) { - callback() + $(_parent).removeClass(ClassName.OPEN).trigger(Event.HIDDEN, relatedTarget); + } } - }.bind(this) - - if (Bootstrap.transition && $(this._element).hasClass(Modal._ClassName.FADE)) { - $(this._backdrop) - .one(Bootstrap.TRANSITION_END, callbackRemove) - .emulateTransitionEnd(Modal._BACKDROP_TRANSITION_DURATION) - } else { - callbackRemove() - } - - } else if (callback) { - callback() - } -} - - -/** - * ------------------------------------------------------------------------ - * the following methods are used to handle overflowing modals - * todo (fat): these should probably be refactored into a - * ------------------------------------------------------------------------ - */ - - -/** - * @private - */ -Modal.prototype._handleUpdate = function () { - if (this._config['backdrop']) this._adjustBackdrop() - this._adjustDialog() -} - -/** - * @private - */ -Modal.prototype._adjustBackdrop = function () { - this._backdrop.style.height = 0 // todo (fat): no clue why we do this - this._backdrop.style.height = this._element.scrollHeight + 'px' -} + }, { + key: '_getParentFromElement', + value: function _getParentFromElement(element) { + var parent = undefined; + var selector = Util.getSelectorFromElement(element); + + if (selector) { + parent = $(selector)[0]; + } + return parent || element.parentNode; + } + }, { + key: '_dataApiKeydownHandler', + value: function _dataApiKeydownHandler(event) { + if (!/(38|40|27|32)/.test(event.which) || /input|textarea/i.test(event.target.tagName)) { + return; + } -/** - * @private - */ -Modal.prototype._adjustDialog = function () { - var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight + event.preventDefault(); + event.stopPropagation(); - if (!this._isBodyOverflowing && isModalOverflowing) { - this._element.style.paddingLeft = this._scrollbarWidth + 'px' - } + if (this.disabled || $(this).hasClass(ClassName.DISABLED)) { + return; + } - if (this._isBodyOverflowing && !isModalOverflowing) { - this._element.style.paddingRight = this._scrollbarWidth + 'px' - } -} + var parent = Dropdown._getParentFromElement(this); + var isActive = $(parent).hasClass(ClassName.OPEN); + if (!isActive && event.which !== 27 || isActive && event.which === 27) { -/** - * @private - */ -Modal.prototype._resetAdjustments = function () { - this._element.style.paddingLeft = '' - this._element.style.paddingRight = '' -} + if (event.which === 27) { + var toggle = $(parent).find(Selector.DATA_TOGGLE)[0]; + $(toggle).trigger('focus'); + } + $(this).trigger('click'); + return; + } -/** - * @private - */ -Modal.prototype._checkScrollbar = function () { - this._isBodyOverflowing = document.body.scrollHeight > document.documentElement.clientHeight - this._scrollbarWidth = this._getScrollbarWidth() -} + var items = $.makeArray($(Selector.VISIBLE_ITEMS)); + items = items.filter(function (item) { + return item.offsetWidth || item.offsetHeight; + }); -/** - * @private - */ -Modal.prototype._setScrollbar = function () { - var bodyPadding = parseInt(($(document.body).css('padding-right') || 0), 10) + if (!items.length) { + return; + } - if (this._isBodyOverflowing) { - document.body.style.paddingRight = bodyPadding + this._scrollbarWidth + 'px' - } -} + var index = items.indexOf(event.target); + if (event.which === 38 && index > 0) index--; // up + if (event.which === 40 && index < items.length - 1) index++; // down + if (! ~index) index = 0; -/** - * @private - */ -Modal.prototype._resetScrollbar = function () { - document.body.style.paddingRight = '' -} + items[index].focus(); + } + }]); + return Dropdown; + })(); -/** - * @private - */ -Modal.prototype._getScrollbarWidth = function () { // thx walsh - var scrollDiv = document.createElement('div') - scrollDiv.className = Modal._Selector.SCROLLBAR_MEASURER - document.body.appendChild(scrollDiv) - var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth - document.body.removeChild(scrollDiv) - return scrollbarWidth -} + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + $(document).on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.ROLE_MENU, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.ROLE_LISTBOX, Dropdown._dataApiKeydownHandler).on(Event.CLICK_DATA_API, Dropdown._clearMenus).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, Dropdown.prototype.toggle).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) { + e.stopPropagation(); + }); -/** - * ------------------------------------------------------------------------ - * jQuery Interface + noConflict implementaiton - * ------------------------------------------------------------------------ - */ + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ -/** - * @const - * @type {Function} - */ -$.fn[Modal._NAME] = Modal._jQueryInterface + $.fn[NAME] = Dropdown._jQueryInterface; + $.fn[NAME].Constructor = Dropdown; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Dropdown._jQueryInterface; + }; + return Dropdown; +})(jQuery); /** - * @const - * @type {Function} - */ -$.fn[Modal._NAME]['Constructor'] = Modal + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): modal.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Modal = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'modal'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.modal'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 300; + var BACKDROP_TRANSITION_DURATION = 150; + + var Default = { + backdrop: true, + keyboard: true, + focus: true, + show: true + }; + + var DefaultType = { + backdrop: '(boolean|string)', + keyboard: 'boolean', + focus: 'boolean', + show: 'boolean' + }; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + FOCUSIN: 'focusin' + EVENT_KEY, + RESIZE: 'resize' + EVENT_KEY, + CLICK_DISMISS: 'click.dismiss' + EVENT_KEY, + KEYDOWN_DISMISS: 'keydown.dismiss' + EVENT_KEY, + MOUSEUP_DISMISS: 'mouseup.dismiss' + EVENT_KEY, + MOUSEDOWN_DISMISS: 'mousedown.dismiss' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + '' + DATA_API_KEY + }; + + var ClassName = { + BACKDROP: 'modal-backdrop', + OPEN: 'modal-open', + FADE: 'fade', + IN: 'in' + }; + + var Selector = { + DIALOG: '.modal-dialog', + DATA_TOGGLE: '[data-toggle="modal"]', + DATA_DISMISS: '[data-dismiss="modal"]', + SCROLLBAR_MEASURER: 'modal-scrollbar-measure' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Modal = (function () { + function Modal(element, config) { + _classCallCheck(this, Modal); + + this._config = this._getConfig(config); + this._element = element; + this._dialog = $(element).find(Selector.DIALOG)[0]; + this._backdrop = null; + this._isShown = false; + this._isBodyOverflowing = false; + this._ignoreBackdropClick = false; + this._originalBodyPadding = 0; + this._scrollbarWidth = 0; + } + + _createClass(Modal, [{ + key: 'toggle', + + // public + + value: function toggle(relatedTarget) { + return this._isShown ? this.hide() : this.show(relatedTarget); + } + }, { + key: 'show', + value: function show(relatedTarget) { + var _this7 = this; + var showEvent = $.Event(Event.SHOW, { + relatedTarget: relatedTarget + }); -/** - * @const - * @type {Function} - */ -$.fn[Modal._NAME]['noConflict'] = function () { - $.fn[Modal._NAME] = Modal._JQUERY_NO_CONFLICT - return this -} + $(this._element).trigger(showEvent); + if (this._isShown || showEvent.isDefaultPrevented()) { + return; + } -/** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ + this._isShown = true; -$(document).on('click.bs.modal.data-api', Modal._Selector.DATA_TOGGLE, function (event) { - var selector = Bootstrap.getSelectorFromElement(this) + this._checkScrollbar(); + this._setScrollbar(); - if (selector) { - var target = $(selector)[0] - } + $(document.body).addClass(ClassName.OPEN); - var config = $(target).data(Modal._DATA_KEY) ? 'toggle' : $.extend({}, $(target).data(), $(this).data()) + this._setEscapeEvent(); + this._setResizeEvent(); - if (this.tagName == 'A') { - event.preventDefault() - } + $(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, $.proxy(this.hide, this)); - var $target = $(target).one(Modal._Event.SHOW, function (showEvent) { - if (showEvent.isDefaultPrevented()) { - return // only register focus restorer if modal will actually get shown - } + $(this._dialog).on(Event.MOUSEDOWN_DISMISS, function () { + $(_this7._element).one(Event.MOUSEUP_DISMISS, function (event) { + if ($(event.target).is(_this7._element)) { + that._ignoreBackdropClick = true; + } + }); + }); - $target.one(Modal._Event.HIDDEN, function () { - if ($(this).is(':visible')) { - this.focus() + this._showBackdrop($.proxy(this._showElement, this, relatedTarget)); } - }.bind(this)) - }.bind(this)) - - Modal._jQueryInterface.call($(target), config, this) -}) - -/** ======================================================================= - * Bootstrap: scrollspy.js v4.0.0 - * http://getbootstrap.com/javascript/#scrollspy - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== - * @fileoverview - Bootstrap's scrollspy plugin. - * - * Public Methods & Properties: - * - * + $.scrollspy - * + $.scrollspy.noConflict - * + $.scrollspy.Constructor - * + $.scrollspy.Constructor.VERSION - * + $.scrollspy.Constructor.Defaults - * + $.scrollspy.Constructor.Defaults.offset - * + $.scrollspy.Constructor.prototype.refresh - * - * ======================================================================== - */ - -'use strict'; - - -/** - * Our scrollspy class. - * @param {Element!} element - * @param {Object=} opt_config - * @constructor - */ -function ScrollSpy(element, opt_config) { - - /** @private {Element|Window} */ - this._scrollElement = element.tagName == 'BODY' ? window : element + }, { + key: 'hide', + value: function hide(event) { + if (event) { + event.preventDefault(); + } - /** @private {Object} */ - this._config = $.extend({}, ScrollSpy['Defaults'], opt_config) + var hideEvent = $.Event(Event.HIDE); - /** @private {string} */ - this._selector = (this._config.target || '') + ' .nav li > a' + $(this._element).trigger(hideEvent); - /** @private {Array} */ - this._offsets = [] + if (!this._isShown || hideEvent.isDefaultPrevented()) { + return; + } - /** @private {Array} */ - this._targets = [] + this._isShown = false; - /** @private {Element} */ - this._activeTarget = null + this._setEscapeEvent(); + this._setResizeEvent(); - /** @private {number} */ - this._scrollHeight = 0 + $(document).off(Event.FOCUSIN); - $(this._scrollElement).on('scroll.bs.scrollspy', this._process.bind(this)) + $(this._element).removeClass(ClassName.IN); - this['refresh']() + $(this._element).off(Event.CLICK_DISMISS); + $(this._dialog).off(Event.MOUSEDOWN_DISMISS); - this._process() -} + if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) { + $(this._element).one(Util.TRANSITION_END, $.proxy(this._hideModal, this)).emulateTransitionEnd(TRANSITION_DURATION); + } else { + this._hideModal(); + } + } + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + + $(window).off(EVENT_KEY); + $(document).off(EVENT_KEY); + $(this._element).off(EVENT_KEY); + $(this._backdrop).off(EVENT_KEY); + + this._config = null; + this._element = null; + this._dialog = null; + this._backdrop = null; + this._isShown = null; + this._isBodyOverflowing = null; + this._ignoreBackdropClick = null; + this._originalBodyPadding = null; + this._scrollbarWidth = null; + } + }, { + key: '_getConfig', -/** - * @const - * @type {string} - */ -ScrollSpy['VERSION'] = '4.0.0' + // private + value: function _getConfig(config) { + config = $.extend({}, Default, config); + Util.typeCheckConfig(NAME, config, DefaultType); + return config; + } + }, { + key: '_showElement', + value: function _showElement(relatedTarget) { + var _this8 = this; -/** - * @const - * @type {Object} - */ -ScrollSpy['Defaults'] = { - 'offset': 10 -} + var transition = Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE); + if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) { + // don't move modals dom position + document.body.appendChild(this._element); + } -/** - * @const - * @type {string} - * @private - */ -ScrollSpy._NAME = 'scrollspy' + this._element.style.display = 'block'; + this._element.scrollTop = 0; + if (transition) { + Util.reflow(this._element); + } -/** - * @const - * @type {string} - * @private - */ -ScrollSpy._DATA_KEY = 'bs.scrollspy' + $(this._element).addClass(ClassName.IN); + if (this._config.focus) this._enforceFocus(); -/** - * @const - * @type {Function} - * @private - */ -ScrollSpy._JQUERY_NO_CONFLICT = $.fn[ScrollSpy._NAME] + var shownEvent = $.Event(Event.SHOWN, { + relatedTarget: relatedTarget + }); + var transitionComplete = function transitionComplete() { + if (_this8._config.focus) _this8._element.focus(); + $(_this8._element).trigger(shownEvent); + }; -/** - * @const - * @enum {string} - * @private - */ -ScrollSpy._Event = { - ACTIVATE: 'activate.bs.scrollspy' -} + if (transition) { + $(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(TRANSITION_DURATION); + } else { + transitionComplete(); + } + } + }, { + key: '_enforceFocus', + value: function _enforceFocus() { + var _this9 = this; + + $(document).off(Event.FOCUSIN) // guard against infinite focus loop + .on(Event.FOCUSIN, function (event) { + if (_this9._element !== event.target && !$(_this9._element).has(event.target).length) { + _this9._element.focus(); + } + }); + } + }, { + key: '_setEscapeEvent', + value: function _setEscapeEvent() { + var _this10 = this; + + if (this._isShown && this._config.keyboard) { + $(this._element).on(Event.KEYDOWN_DISMISS, function (event) { + if (event.which === 27) { + _this10.hide(); + } + }); + } else if (!this._isShown) { + $(this._element).off(Event.KEYDOWN_DISMISS); + } + } + }, { + key: '_setResizeEvent', + value: function _setResizeEvent() { + if (this._isShown) { + $(window).on(Event.RESIZE, $.proxy(this._handleUpdate, this)); + } else { + $(window).off(Event.RESIZE); + } + } + }, { + key: '_hideModal', + value: function _hideModal() { + var _this11 = this; + + this._element.style.display = 'none'; + this._showBackdrop(function () { + $(document.body).removeClass(ClassName.OPEN); + _this11._resetAdjustments(); + _this11._resetScrollbar(); + $(_this11._element).trigger(Event.HIDDEN); + }); + } + }, { + key: '_removeBackdrop', + value: function _removeBackdrop() { + if (this._backdrop) { + $(this._backdrop).remove(); + this._backdrop = null; + } + } + }, { + key: '_showBackdrop', + value: function _showBackdrop(callback) { + var _this12 = this; + var animate = $(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : ''; -/** - * @const - * @enum {string} - * @private - */ -ScrollSpy._ClassName = { - DROPDOWN_MENU : 'dropdown-menu', - ACTIVE : 'active' -} + if (this._isShown && this._config.backdrop) { + var doAnimate = Util.supportsTransitionEnd() && animate; + this._backdrop = document.createElement('div'); + this._backdrop.className = ClassName.BACKDROP; -/** - * @const - * @enum {string} - * @private - */ -ScrollSpy._Selector = { - DATA_SPY : '[data-spy="scroll"]', - ACTIVE : '.active', - LI_DROPDOWN : 'li.dropdown', - LI : 'li' -} + if (animate) { + $(this._backdrop).addClass(animate); + } + $(this._backdrop).appendTo(this.$body); + + $(this._element).on(Event.CLICK_DISMISS, function (event) { + if (_this12._ignoreBackdropClick) { + _this12._ignoreBackdropClick = false; + return; + } + if (event.target !== event.currentTarget) { + return; + } + if (_this12._config.backdrop === 'static') { + _this12._element.focus(); + } else { + _this12.hide(); + } + }); + + if (doAnimate) { + Util.reflow(this._backdrop); + } -/** - * @param {Object=} opt_config - * @this {jQuery} - * @return {jQuery} - * @private - */ -ScrollSpy._jQueryInterface = function (opt_config) { - return this.each(function () { - var data = $(this).data(ScrollSpy._DATA_KEY) - var config = typeof opt_config === 'object' && opt_config || null - - if (!data) { - data = new ScrollSpy(this, config) - $(this).data(ScrollSpy._DATA_KEY, data) - } + $(this._backdrop).addClass(ClassName.IN); - if (typeof opt_config === 'string') { - data[opt_config]() - } - }) -} + if (!callback) { + return; + } + if (!doAnimate) { + callback(); + return; + } -/** - * Refresh the scrollspy target cache - */ -ScrollSpy.prototype['refresh'] = function () { - var offsetMethod = 'offset' - var offsetBase = 0 + $(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION); + } else if (!this._isShown && this._backdrop) { + $(this._backdrop).removeClass(ClassName.IN); + + var callbackRemove = function callbackRemove() { + _this12._removeBackdrop(); + if (callback) { + callback(); + } + }; + + if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) { + $(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION); + } else { + callbackRemove(); + } + } else if (callback) { + callback(); + } + } + }, { + key: '_handleUpdate', - if (this._scrollElement !== this._scrollElement.window) { - offsetMethod = 'position' - offsetBase = this._getScrollTop() - } + // ---------------------------------------------------------------------- + // the following methods are used to handle overflowing modals + // todo (fat): these should probably be refactored out of modal.js + // ---------------------------------------------------------------------- - this._offsets = [] - this._targets = [] + value: function _handleUpdate() { + this._adjustDialog(); + } + }, { + key: '_adjustDialog', + value: function _adjustDialog() { + var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; - this._scrollHeight = this._getScrollHeight() + if (!this._isBodyOverflowing && isModalOverflowing) { + this._element.style.paddingLeft = this._scrollbarWidth + 'px'; + } - var targets = /** @type {Array.<Element>} */ ($.makeArray($(this._selector))) + if (this._isBodyOverflowing && !isModalOverflowing) { + this._element.style.paddingRight = this._scrollbarWidth + 'px'; + } + } + }, { + key: '_resetAdjustments', + value: function _resetAdjustments() { + this._element.style.paddingLeft = ''; + this._element.style.paddingRight = ''; + } + }, { + key: '_checkScrollbar', + value: function _checkScrollbar() { + var fullWindowWidth = window.innerWidth; + if (!fullWindowWidth) { + // workaround for missing window.innerWidth in IE8 + var documentElementRect = document.documentElement.getBoundingClientRect(); + fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left); + } + this._isBodyOverflowing = document.body.clientWidth < fullWindowWidth; + this._scrollbarWidth = this._getScrollbarWidth(); + } + }, { + key: '_setScrollbar', + value: function _setScrollbar() { + var bodyPadding = parseInt($(document.body).css('padding-right') || 0, 10); - targets - .map(function (element, index) { - var target - var targetSelector = Bootstrap.getSelectorFromElement(element) + this._originalBodyPadding = document.body.style.paddingRight || ''; - if (targetSelector) { - target = $(targetSelector)[0] + if (this._isBodyOverflowing) { + document.body.style.paddingRight = bodyPadding + this._scrollbarWidth + 'px'; + } } - - if (target && (target.offsetWidth || target.offsetHeight)) { - // todo (fat): remove sketch reliance on jQuery position/offset - return [$(target)[offsetMethod]().top + offsetBase, targetSelector] + }, { + key: '_resetScrollbar', + value: function _resetScrollbar() { + document.body.style.paddingRight = this._originalBodyPadding; } - }) - .filter(function (item) { return item }) - .sort(function (a, b) { return a[0] - b[0] }) - .forEach(function (item, index) { - this._offsets.push(item[0]) - this._targets.push(item[1]) - }.bind(this)) -} - + }, { + key: '_getScrollbarWidth', + value: function _getScrollbarWidth() { + // thx d.walsh + var scrollDiv = document.createElement('div'); + scrollDiv.className = Selector.SCROLLBAR_MEASURER; + document.body.appendChild(scrollDiv); + var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth; + document.body.removeChild(scrollDiv); + return scrollbarWidth; + } + }], [{ + key: 'VERSION', -/** - * @private - */ -ScrollSpy.prototype._getScrollTop = function () { - return this._scrollElement === window ? - this._scrollElement.scrollY : this._scrollElement.scrollTop -} + // getters + get: function () { + return VERSION; + } + }, { + key: 'Default', + get: function () { + return Default; + } + }, { + key: '_jQueryInterface', -/** - * @private - */ -ScrollSpy.prototype._getScrollHeight = function () { - return this._scrollElement.scrollHeight - || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight) -} + // static + value: function _jQueryInterface(config, relatedTarget) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = $.extend({}, Modal.Default, $(this).data(), typeof config === 'object' && config); -/** - * @private - */ -ScrollSpy.prototype._process = function () { - var scrollTop = this._getScrollTop() + this._config.offset - var scrollHeight = this._getScrollHeight() - var maxScroll = this._config.offset + scrollHeight - this._scrollElement.offsetHeight + if (!data) { + data = new Modal(this, _config); + $(this).data(DATA_KEY, data); + } - if (this._scrollHeight != scrollHeight) { - this['refresh']() - } + if (typeof config === 'string') { + data[config](relatedTarget); + } else if (_config.show) { + data.show(relatedTarget); + } + }); + } + }]); - if (scrollTop >= maxScroll) { - var target = this._targets[this._targets.length - 1] + return Modal; + })(); - if (this._activeTarget != target) { - this._activate(target) - } - } + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ - if (this._activeTarget && scrollTop < this._offsets[0]) { - this._activeTarget = null - this._clear() - return - } + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + var _this13 = this; - for (var i = this._offsets.length; i--;) { - var isActiveTarget = this._activeTarget != this._targets[i] - && scrollTop >= this._offsets[i] - && (!this._offsets[i + 1] || scrollTop < this._offsets[i + 1]) + var target = undefined; + var selector = Util.getSelectorFromElement(this); - if (isActiveTarget) { - this._activate(this._targets[i]) + if (selector) { + target = $(selector)[0]; } - } -} + var config = $(target).data(DATA_KEY) ? 'toggle' : $.extend({}, $(target).data(), $(this).data()); -/** - * @param {Element} target - * @private - */ -ScrollSpy.prototype._activate = function (target) { - this._activeTarget = target - - this._clear() - - var selector = this._selector - + '[data-target="' + target + '"],' - + this._selector + '[href="' + target + '"]' - - // todo (fat): this seems horribly wrong… getting all raw li elements up the tree ,_, - var parentListItems = $(selector).parents(ScrollSpy._Selector.LI) - - for (var i = parentListItems.length; i--;) { - $(parentListItems[i]).addClass(ScrollSpy._ClassName.ACTIVE) - - var itemParent = parentListItems[i].parentNode - - if (itemParent && $(itemParent).hasClass(ScrollSpy._ClassName.DROPDOWN_MENU)) { - var closestDropdown = $(itemParent).closest(ScrollSpy._Selector.LI_DROPDOWN)[0] - $(closestDropdown).addClass(ScrollSpy._ClassName.ACTIVE) + if (this.tagName === 'A') { + event.preventDefault(); } - } - - $(this._scrollElement).trigger(ScrollSpy._Event.ACTIVATE, { - relatedTarget: target - }) -} - - -/** - * @private - */ -ScrollSpy.prototype._clear = function () { - var activeParents = $(this._selector).parentsUntil(this._config.target, ScrollSpy._Selector.ACTIVE) - for (var i = activeParents.length; i--;) { - $(activeParents[i]).removeClass(ScrollSpy._ClassName.ACTIVE) - } -} - - -/** - * ------------------------------------------------------------------------ - * jQuery Interface + noConflict implementaiton - * ------------------------------------------------------------------------ - */ - -/** - * @const - * @type {Function} - */ -$.fn[ScrollSpy._NAME] = ScrollSpy._jQueryInterface + var $target = $(target).one(Event.SHOW, function (showEvent) { + if (showEvent.isDefaultPrevented()) { + // only register focus restorer if modal will actually get shown + return; + } + $target.one(Event.HIDDEN, function () { + if ($(_this13).is(':visible')) { + _this13.focus(); + } + }); + }); -/** - * @const - * @type {Function} - */ -$.fn[ScrollSpy._NAME]['Constructor'] = ScrollSpy + Modal._jQueryInterface.call($(target), config, this); + }); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ -/** - * @const - * @type {Function} - */ -$.fn[ScrollSpy._NAME]['noConflict'] = function () { - $.fn[ScrollSpy._NAME] = ScrollSpy._JQUERY_NO_CONFLICT - return this -} + $.fn[NAME] = Modal._jQueryInterface; + $.fn[NAME].Constructor = Modal; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Modal._jQueryInterface; + }; + return Modal; +})(jQuery); /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - -$(window).on('load.bs.scrollspy.data-api', function () { - var scrollSpys = /** @type {Array.<Element>} */ ($.makeArray($(ScrollSpy._Selector.DATA_SPY))) - - for (var i = scrollSpys.length; i--;) { - var $spy = $(scrollSpys[i]) - ScrollSpy._jQueryInterface.call($spy, /** @type {Object|null} */ ($spy.data())) - } -}) - -/** ======================================================================= - * Bootstrap: tooltip.js v4.0.0 - * http://getbootstrap.com/javascript/#tooltip - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): scrollspy.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== - * @fileoverview - Bootstrap's tooltip plugin. - * (Inspired by jQuery.tipsy by Jason Frame) - * - * Public Methods & Properties: - * - * + $.tooltip - * + $.tooltip.noConflict - * + $.tooltip.Constructor - * + $.tooltip.Constructor.VERSION - * + $.tooltip.Constructor.Defaults - * + $.tooltip.Constructor.Defaults.container - * + $.tooltip.Constructor.Defaults.animation - * + $.tooltip.Constructor.Defaults.placement - * + $.tooltip.Constructor.Defaults.selector - * + $.tooltip.Constructor.Defaults.template - * + $.tooltip.Constructor.Defaults.trigger - * + $.tooltip.Constructor.Defaults.title - * + $.tooltip.Constructor.Defaults.delay - * + $.tooltip.Constructor.Defaults.html - * + $.tooltip.Constructor.Defaults.viewport - * + $.tooltip.Constructor.Defaults.viewport.selector - * + $.tooltip.Constructor.Defaults.viewport.padding - * + $.tooltip.Constructor.prototype.enable - * + $.tooltip.Constructor.prototype.disable - * + $.tooltip.Constructor.prototype.destroy - * + $.tooltip.Constructor.prototype.toggleEnabled - * + $.tooltip.Constructor.prototype.toggle - * + $.tooltip.Constructor.prototype.show - * + $.tooltip.Constructor.prototype.hide - * - * ======================================================================== - */ - -'use strict'; - - -/** - * Our tooltip class. - * @param {Element!} element - * @param {Object=} opt_config - * @constructor - */ -var Tooltip = function (element, opt_config) { - - /** @private {boolean} */ - this._isEnabled = true - - /** @private {number} */ - this._timeout = 0 - - /** @private {string} */ - this._hoverState = '' - - /** @protected {Element} */ - this.element = element - - /** @protected {Object} */ - this.config = this._getConfig(opt_config) - - /** @protected {Element} */ - this.tip = null - - /** @protected {Element} */ - this.arrow = null - - if (this.config['viewport']) { - - /** @private {Element} */ - this._viewport = $(this.config['viewport']['selector'] || this.config['viewport'])[0] - - } - - this._setListeners() -} - - -/** - * @const - * @type {string} - */ -Tooltip['VERSION'] = '4.0.0' - - -/** - * @const - * @type {Object} - */ -Tooltip['Defaults'] = { - 'container' : false, - 'animation' : true, - 'placement' : 'top', - 'selector' : false, - 'template' : '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>', - 'trigger' : 'hover focus', - 'title' : '', - 'delay' : 0, - 'html' : false, - 'viewport': { - 'selector': 'body', - 'padding' : 0 - } -} - - -/** - * @const - * @enum {string} - * @protected + * -------------------------------------------------------------------------- */ -Tooltip.Direction = { - TOP: 'top', - LEFT: 'left', - RIGHT: 'right', - BOTTOM: 'bottom' -} +var ScrollSpy = (function ($) { -/** - * @const - * @type {string} - * @private - */ -Tooltip._NAME = 'tooltip' + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + var NAME = 'scrollspy'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.scrollspy'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; -/** - * @const - * @type {string} - * @private - */ -Tooltip._DATA_KEY = 'bs.tooltip' - - -/** - * @const - * @type {number} - * @private - */ -Tooltip._TRANSITION_DURATION = 150 + var Default = { + offset: 10, + method: 'auto', + target: '' + }; + var DefaultType = { + offset: 'number', + method: 'string', + target: '(string|element)' + }; -/** - * @const - * @enum {string} - * @private - */ -Tooltip._HoverState = { - IN: 'in', - OUT: 'out' -} + var Event = { + ACTIVATE: 'activate' + EVENT_KEY, + SCROLL: 'scroll' + EVENT_KEY, + LOAD_DATA_API: 'load' + EVENT_KEY + '' + DATA_API_KEY + }; + var ClassName = { + DROPDOWN_MENU: 'dropdown-menu', + ACTIVE: 'active' + }; -/** - * @const - * @enum {string} - * @private - */ -Tooltip._Event = { - HIDE : 'hide.bs.tooltip', - HIDDEN : 'hidden.bs.tooltip', - SHOW : 'show.bs.tooltip', - SHOWN : 'shown.bs.tooltip' -} + var Selector = { + DATA_SPY: '[data-spy="scroll"]', + ACTIVE: '.active', + LI: 'li', + LI_DROPDOWN: 'li.dropdown', + NAV_ANCHORS: '.nav li > a' + }; + var OffsetMethod = { + OFFSET: 'offset', + POSITION: 'position' + }; -/** - * @const - * @enum {string} - * @private - */ -Tooltip._ClassName = { - FADE : 'fade', - IN : 'in' -} + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + var ScrollSpy = (function () { + function ScrollSpy(element, config) { + _classCallCheck(this, ScrollSpy); -/** - * @const - * @enum {string} - * @private - */ -Tooltip._Selector = { - TOOLTIP : '.tooltip', - TOOLTIP_INNER : '.tooltip-inner', - TOOLTIP_ARROW : '.tooltip-arrow' -} + this._element = element; + this._scrollElement = element.tagName === 'BODY' ? window : element; + this._config = this._getConfig(config); + this._selector = '' + this._config.target + ' ' + Selector.NAV_ANCHORS; + this._offsets = []; + this._targets = []; + this._activeTarget = null; + this._scrollHeight = 0; + $(this._scrollElement).on(Event.SCROLL, $.proxy(this._process, this)); -/** - * @const - * @type {Function} - * @private - */ -Tooltip._JQUERY_NO_CONFLICT = $.fn[Tooltip._NAME] - - -/** - * @param {Object=} opt_config - * @this {jQuery} - * @return {jQuery} - * @private - */ -Tooltip._jQueryInterface = function (opt_config) { - return this.each(function () { - var data = $(this).data(Tooltip._DATA_KEY) - var config = typeof opt_config == 'object' ? opt_config : null - - if (!data && opt_config == 'destroy') { - return + this.refresh(); + this._process(); } - if (!data) { - data = new Tooltip(this, config) - $(this).data(Tooltip._DATA_KEY, data) - } + _createClass(ScrollSpy, [{ + key: 'refresh', - if (typeof opt_config === 'string') { - data[opt_config]() - } - }) -} + // public + value: function refresh() { + var _this14 = this; -/** - * Enable tooltip - */ -Tooltip.prototype['enable'] = function () { - this._isEnabled = true -} + var autoMethod = this._scrollElement !== this._scrollElement.window ? OffsetMethod.POSITION : OffsetMethod.OFFSET; + var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method; -/** - * Disable tooltip - */ -Tooltip.prototype['disable'] = function () { - this._isEnabled = false -} - - -/** - * Toggle the tooltip enable state - */ -Tooltip.prototype['toggleEnabled'] = function () { - this._isEnabled = !this._isEnabled -} + var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0; -/** - * Toggle the tooltips display - * @param {Event} opt_event - */ -Tooltip.prototype['toggle'] = function (opt_event) { - var context = this - var dataKey = this.getDataKey() + this._offsets = []; + this._targets = []; - if (opt_event) { - context = $(opt_event.currentTarget).data(dataKey) + this._scrollHeight = this._getScrollHeight(); - if (!context) { - context = new this.constructor(opt_event.currentTarget, this._getDelegateConfig()) - $(opt_event.currentTarget).data(dataKey, context) - } - } + var targets = $.makeArray($(this._selector)); - $(context.getTipElement()).hasClass(Tooltip._ClassName.IN) ? - context._leave(null, context) : - context._enter(null, context) -} + targets.map(function (element) { + var target = undefined; + var targetSelector = Util.getSelectorFromElement(element); + if (targetSelector) { + target = $(targetSelector)[0]; + } -/** - * Remove tooltip functionality - */ -Tooltip.prototype['destroy'] = function () { - clearTimeout(this._timeout) - this['hide'](function () { - $(this.element) - .off(Tooltip._Selector.TOOLTIP) - .removeData(this.getDataKey()) - }.bind(this)) -} + if (target && (target.offsetWidth || target.offsetHeight)) { + // todo (fat): remove sketch reliance on jQuery position/offset + return [$(target)[offsetMethod]().top + offsetBase, targetSelector]; + } + }).filter(function (item) { + return item; + }).sort(function (a, b) { + return a[0] - b[0]; + }).forEach(function (item) { + _this14._offsets.push(item[0]); + _this14._targets.push(item[1]); + }); + } + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + $(this._scrollElement).off(EVENT_KEY); + + this._element = null; + this._scrollElement = null; + this._config = null; + this._selector = null; + this._offsets = null; + this._targets = null; + this._activeTarget = null; + this._scrollHeight = null; + } + }, { + key: '_getConfig', + // private -/** - * Show the tooltip - * todo (fat): ~fuck~ this is a big function - refactor out all of positioning logic - * and replace with external lib - */ -Tooltip.prototype['show'] = function () { - var showEvent = $.Event(this.getEventObject().SHOW) + value: function _getConfig(config) { + config = $.extend({}, Default, config); - if (this.isWithContent() && this._isEnabled) { - $(this.element).trigger(showEvent) + if (typeof config.target !== 'string') { + var id = $(config.target).attr('id'); + if (!id) { + id = Util.getUID(NAME); + $(config.target).attr('id', id); + } + config.target = '#' + id; + } - var isInTheDom = $.contains(this.element.ownerDocument.documentElement, this.element) + Util.typeCheckConfig(NAME, config, DefaultType); - if (showEvent.isDefaultPrevented() || !isInTheDom) { - return - } + return config; + } + }, { + key: '_getScrollTop', + value: function _getScrollTop() { + return this._scrollElement === window ? this._scrollElement.scrollY : this._scrollElement.scrollTop; + } + }, { + key: '_getScrollHeight', + value: function _getScrollHeight() { + return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); + } + }, { + key: '_process', + value: function _process() { + var scrollTop = this._getScrollTop() + this._config.offset; + var scrollHeight = this._getScrollHeight(); + var maxScroll = this._config.offset + scrollHeight - this._scrollElement.offsetHeight; + + if (this._scrollHeight !== scrollHeight) { + this.refresh(); + } - var tip = this.getTipElement() - var tipId = Bootstrap.getUID(this.getName()) + if (scrollTop >= maxScroll) { + var target = this._targets[this._targets.length - 1]; - tip.setAttribute('id', tipId) - this.element.setAttribute('aria-describedby', tipId) + if (this._activeTarget !== target) { + this._activate(target); + } + } - this.setContent() + if (this._activeTarget && scrollTop < this._offsets[0]) { + this._activeTarget = null; + this._clear(); + return; + } - if (this.config['animation']) { - $(tip).addClass(Tooltip._ClassName.FADE) - } + for (var i = this._offsets.length; i--;) { + var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (this._offsets[i + 1] === undefined || scrollTop < this._offsets[i + 1]); - var placement = typeof this.config['placement'] == 'function' ? - this.config['placement'].call(this, tip, this.element) : - this.config['placement'] + if (isActiveTarget) { + this._activate(this._targets[i]); + } + } + } + }, { + key: '_activate', + value: function _activate(target) { + this._activeTarget = target; - var autoToken = /\s?auto?\s?/i - var isWithAutoPlacement = autoToken.test(placement) + this._clear(); - if (isWithAutoPlacement) { - placement = placement.replace(autoToken, '') || Tooltip.Direction.TOP - } + var selector = '' + this._selector + '[data-target="' + target + '"],' + ('' + this._selector + '[href="' + target + '"]'); - if (tip.parentNode && tip.parentNode.nodeType == Node.ELEMENT_NODE) { - tip.parentNode.removeChild(tip) - } + // todo (fat): getting all the raw li's up the tree is not great. + var parentListItems = $(selector).parents(Selector.LI); - tip.style.top = 0 - tip.style.left = 0 - tip.style.display = 'block' + for (var i = parentListItems.length; i--;) { + $(parentListItems[i]).addClass(ClassName.ACTIVE); - $(tip).addClass(Tooltip._NAME + '-' + placement) + var itemParent = parentListItems[i].parentNode; - $(tip).data(this.getDataKey(), this) + if (itemParent && $(itemParent).hasClass(ClassName.DROPDOWN_MENU)) { + var closestDropdown = $(itemParent).closest(Selector.LI_DROPDOWN)[0]; + $(closestDropdown).addClass(ClassName.ACTIVE); + } + } - if (this.config['container']) { - $(this.config['container'])[0].appendChild(tip) - } else { - this.element.parentNode.insertBefore(tip, this.element.nextSibling) - } + $(this._scrollElement).trigger(Event.ACTIVATE, { + relatedTarget: target + }); + } + }, { + key: '_clear', + value: function _clear() { + var activeParents = $(this._selector).parentsUntil(this._config.target, Selector.ACTIVE); - var position = this._getPosition() - var actualWidth = tip.offsetWidth - var actualHeight = tip.offsetHeight + for (var i = activeParents.length; i--;) { + $(activeParents[i]).removeClass(ClassName.ACTIVE); + } + } + }], [{ + key: 'VERSION', - var calculatedPlacement = this._getCalculatedAutoPlacement(isWithAutoPlacement, placement, position, actualWidth, actualHeight) - var calculatedOffset = this._getCalculatedOffset(calculatedPlacement, position, actualWidth, actualHeight) + // getters - this._applyCalculatedPlacement(calculatedOffset, calculatedPlacement) + get: function () { + return VERSION; + } + }, { + key: 'Default', + get: function () { + return Default; + } + }, { + key: '_jQueryInterface', - var complete = function () { - var prevHoverState = this.hoverState - $(this.element).trigger(this.getEventObject().SHOWN) - this.hoverState = null + // static - if (prevHoverState == 'out') this._leave(null, this) - }.bind(this) + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = typeof config === 'object' && config || null; - Bootstrap.transition && $(this._tip).hasClass(Tooltip._ClassName.FADE) ? - $(this._tip) - .one(Bootstrap.TRANSITION_END, complete) - .emulateTransitionEnd(Tooltip._TRANSITION_DURATION) : - complete() - } -} + if (!data) { + data = new ScrollSpy(this, _config); + $(this).data(DATA_KEY, data); + } + if (typeof config === 'string') { + data[config](); + } + }); + } + }]); -/** - * Hide the tooltip breh - */ -Tooltip.prototype['hide'] = function (callback) { - var tip = this.getTipElement() - var hideEvent = $.Event(this.getEventObject().HIDE) + return ScrollSpy; + })(); - var complete = function () { - if (this._hoverState != Tooltip._HoverState.IN) { - tip.parentNode.removeChild(tip) - } + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ - this.element.removeAttribute('aria-describedby') - $(this.element).trigger(this.getEventObject().HIDDEN) + $(window).on(Event.LOAD_DATA_API, function () { + var scrollSpys = $.makeArray($(Selector.DATA_SPY)); - if (callback) { - callback() + for (var i = scrollSpys.length; i--;) { + var $spy = $(scrollSpys[i]); + ScrollSpy._jQueryInterface.call($spy, $spy.data()); } - }.bind(this) - - $(this.element).trigger(hideEvent) - - if (hideEvent.isDefaultPrevented()) return - - $(tip).removeClass(Tooltip._ClassName.IN) - - if (Bootstrap.transition && $(this._tip).hasClass(Tooltip._ClassName.FADE)) { - $(tip) - .one(Bootstrap.TRANSITION_END, complete) - .emulateTransitionEnd(Tooltip._TRANSITION_DURATION) - } else { - complete() - } - - this._hoverState = '' -} + }); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ -/** - * @return {string} - */ -Tooltip.prototype['getHoverState'] = function (callback) { - return this._hoverState -} + $.fn[NAME] = ScrollSpy._jQueryInterface; + $.fn[NAME].Constructor = ScrollSpy; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return ScrollSpy._jQueryInterface; + }; + return ScrollSpy; +})(jQuery); /** - * @return {string} - * @protected - */ -Tooltip.prototype.getName = function () { - return Tooltip._NAME -} - - -/** - * @return {string} - * @protected - */ -Tooltip.prototype.getDataKey = function () { - return Tooltip._DATA_KEY -} - - -/** - * @return {Object} - * @protected - */ -Tooltip.prototype.getEventObject = function () { - return Tooltip._Event -} - - -/** - * @return {string} - * @protected - */ -Tooltip.prototype.getTitle = function () { - var title = this.element.getAttribute('data-original-title') - - if (!title) { - title = typeof this.config['title'] === 'function' ? - this.config['title'].call(this.element) : - this.config['title'] - } - - return /** @type {string} */ (title) -} - - -/** - * @return {Element} - * @protected - */ -Tooltip.prototype.getTipElement = function () { - return (this._tip = this._tip || $(this.config['template'])[0]) -} - - -/** - * @return {Element} - * @protected - */ -Tooltip.prototype.getArrowElement = function () { - return (this.arrow = this.arrow || $(this.getTipElement()).find(Tooltip._Selector.TOOLTIP_ARROW)[0]) -} - - -/** - * @return {boolean} - * @protected - */ -Tooltip.prototype.isWithContent = function () { - return !!this.getTitle() -} - - -/** - * @protected - */ -Tooltip.prototype.setContent = function () { - var tip = this.getTipElement() - var title = this.getTitle() - - $(tip).find(Tooltip._Selector.TOOLTIP_INNER)[0][this.config['html'] ? 'innerHTML' : 'innerText'] = title - - $(tip) - .removeClass(Tooltip._ClassName.FADE) - .removeClass(Tooltip._ClassName.IN) - - for (var direction in Tooltip.Direction) { - $(tip).removeClass(Tooltip._NAME + '-' + direction) - } -} - - -/** - * @private - */ -Tooltip.prototype._setListeners = function () { - var triggers = this.config['trigger'].split(' ') - - triggers.forEach(function (trigger) { - if (trigger == 'click') { - $(this.element).on('click.bs.tooltip', this.config['selector'], this['toggle'].bind(this)) - - } else if (trigger != 'manual') { - var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin' - var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout' - - $(this.element) - .on(eventIn + '.bs.tooltip', this.config['selector'], this._enter.bind(this)) - .on(eventOut + '.bs.tooltip', this.config['selector'], this._leave.bind(this)) - } - }.bind(this)) + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): tab.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Tab = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'tab'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.tab'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 150; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + '' + DATA_API_KEY + }; + + var ClassName = { + DROPDOWN_MENU: 'dropdown-menu', + ACTIVE: 'active', + FADE: 'fade', + IN: 'in' + }; + + var Selector = { + A: 'a', + LI: 'li', + LI_DROPDOWN: 'li.dropdown', + UL: 'ul:not(.dropdown-menu)', + FADE_CHILD: '> .fade', + ACTIVE: '.active', + ACTIVE_CHILD: '> .active', + DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"]', + DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu > .active' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Tab = (function () { + function Tab(element) { + _classCallCheck(this, Tab); + + this._element = element; + } + + _createClass(Tab, [{ + key: 'show', + + // public + + value: function show() { + var _this15 = this; + + if (this._element.parentNode && this._element.parentNode.nodeType == Node.ELEMENT_NODE && $(this._element).parent().hasClass(ClassName.ACTIVE)) { + return; + } - if (this.config['selector']) { - this.config = $.extend({}, this.config, { 'trigger': 'manual', 'selector': '' }) - } else { - this._fixTitle() - } -} + var target = undefined; + var previous = undefined; + var ulElement = $(this._element).closest(Selector.UL)[0]; + var selector = Util.getSelectorFromElement(this._element); + if (ulElement) { + previous = $.makeArray($(ulElement).find(Selector.ACTIVE)); + previous = previous[previous.length - 1]; -/** - * @param {Object=} opt_config - * @return {Object} - * @private - */ -Tooltip.prototype._getConfig = function (opt_config) { - var config = $.extend({}, this.constructor['Defaults'], $(this.element).data(), opt_config) + if (previous) { + previous = $(previous).find(Selector.A)[0]; + } + } - if (config['delay'] && typeof config['delay'] == 'number') { - config['delay'] = { - 'show': config['delay'], - 'hide': config['delay'] - } - } + var hideEvent = $.Event(Event.HIDE, { + relatedTarget: this._element + }); - return config -} + var showEvent = $.Event(Event.SHOW, { + relatedTarget: previous + }); + if (previous) { + $(previous).trigger(hideEvent); + } -/** - * @return {Object} - * @private - */ -Tooltip.prototype._getDelegateConfig = function () { - var config = {} - var defaults = this.constructor['Defaults'] - - if (this.config) { - for (var key in this.config) { - var value = this.config[key] - if (defaults[key] != value) config[key] = value - } - } + $(this._element).trigger(showEvent); - return config -} + if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) { + return; + } + if (selector) { + target = $(selector)[0]; + } + this._activate($(this._element).closest(Selector.LI)[0], ulElement); -/** - * @param {boolean} isWithAutoPlacement - * @param {string} placement - * @param {Object} position - * @param {number} actualWidth - * @param {number} actualHeight - * @return {string} - * @private - */ -Tooltip.prototype._getCalculatedAutoPlacement = function (isWithAutoPlacement, placement, position, actualWidth, actualHeight) { - if (isWithAutoPlacement) { - var originalPlacement = placement - var container = this.config['container'] ? $(this.config['container'])[0] : this.element.parentNode - var containerDim = this._getPosition(/** @type {Element} */ (container)) - - placement = placement == Tooltip.Direction.BOTTOM && position.bottom + actualHeight > containerDim.bottom ? Tooltip.Direction.TOP : - placement == Tooltip.Direction.TOP && position.top - actualHeight < containerDim.top ? Tooltip.Direction.BOTTOM : - placement == Tooltip.Direction.RIGHT && position.right + actualWidth > containerDim.width ? Tooltip.Direction.LEFT : - placement == Tooltip.Direction.LEFT && position.left - actualWidth < containerDim.left ? Tooltip.Direction.RIGHT : - placement - - $(this._tip) - .removeClass(Tooltip._NAME + '-' + originalPlacement) - .addClass(Tooltip._NAME + '-' + placement) - } + var complete = function complete() { + var hiddenEvent = $.Event(Event.HIDDEN, { + relatedTarget: _this15._element + }); - return placement -} + var shownEvent = $.Event(Event.SHOWN, { + relatedTarget: previous + }); + $(previous).trigger(hiddenEvent); + $(_this15._element).trigger(shownEvent); + }; -/** - * @param {string} placement - * @param {Object} position - * @param {number} actualWidth - * @param {number} actualHeight - * @return {{left: number, top: number}} - * @private - */ -Tooltip.prototype._getCalculatedOffset = function (placement, position, actualWidth, actualHeight) { - return placement == Tooltip.Direction.BOTTOM ? { top: position.top + position.height, left: position.left + position.width / 2 - actualWidth / 2 } : - placement == Tooltip.Direction.TOP ? { top: position.top - actualHeight, left: position.left + position.width / 2 - actualWidth / 2 } : - placement == Tooltip.Direction.LEFT ? { top: position.top + position.height / 2 - actualHeight / 2, left: position.left - actualWidth } : - /* placement == Tooltip.Direction.RIGHT */ { top: position.top + position.height / 2 - actualHeight / 2, left: position.left + position.width } -} + if (target) { + this._activate(target, target.parentNode, complete); + } else { + complete(); + } + } + }, { + key: 'dispose', + value: function dispose() { + $.removeClass(this._element, DATA_KEY); + this._element = null; + } + }, { + key: '_activate', + // private -/** - * @param {string} placement - * @param {Object} position - * @param {number} actualWidth - * @param {number} actualHeight - * @return {Object} - * @private - */ -Tooltip.prototype._getViewportAdjustedDelta = function (placement, position, actualWidth, actualHeight) { - var delta = { top: 0, left: 0 } + value: function _activate(element, container, callback) { + var active = $(container).find(Selector.ACTIVE_CHILD)[0]; + var isTransitioning = callback && Util.supportsTransitionEnd() && (active && $(active).hasClass(ClassName.FADE) || !!$(container).find(Selector.FADE_CHILD)[0]); - if (!this._viewport) { - return delta - } - - var viewportPadding = this.config['viewport'] && this.config['viewport']['padding'] || 0 - var viewportDimensions = this._getPosition(this._viewport) + var complete = $.proxy(this._transitionComplete, this, element, active, isTransitioning, callback); - if (placement === Tooltip.Direction.RIGHT || placement === Tooltip.Direction.LEFT) { - var topEdgeOffset = position.top - viewportPadding - viewportDimensions.scroll - var bottomEdgeOffset = position.top + viewportPadding - viewportDimensions.scroll + actualHeight + if (active && isTransitioning) { + $(active).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + } else { + complete(); + } - if (topEdgeOffset < viewportDimensions.top) { // top overflow - delta.top = viewportDimensions.top - topEdgeOffset + if (active) { + $(active).removeClass(ClassName.IN); + } + } + }, { + key: '_transitionComplete', + value: function _transitionComplete(element, active, isTransitioning, callback) { + if (active) { + $(active).removeClass(ClassName.ACTIVE); + + var dropdownChild = $(active).find(Selector.DROPDOWN_ACTIVE_CHILD)[0]; + if (dropdownChild) { + $(dropdownChild).removeClass(ClassName.ACTIVE); + } - } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow - delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset - } + var activeToggle = $(active).find(Selector.DATA_TOGGLE)[0]; + if (activeToggle) { + activeToggle.setAttribute('aria-expanded', false); + } + } - } else { - var leftEdgeOffset = position.left - viewportPadding - var rightEdgeOffset = position.left + viewportPadding + actualWidth + $(element).addClass(ClassName.ACTIVE); - if (leftEdgeOffset < viewportDimensions.left) { // left overflow - delta.left = viewportDimensions.left - leftEdgeOffset + var elementToggle = $(element).find(Selector.DATA_TOGGLE)[0]; + if (elementToggle) { + elementToggle.setAttribute('aria-expanded', true); + } - } else if (rightEdgeOffset > viewportDimensions.width) { // right overflow - delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset - } - } + if (isTransitioning) { + Util.reflow(element); + $(element).addClass(ClassName.IN); + } else { + $(element).removeClass(ClassName.FADE); + } - return delta -} + if (element.parentNode && $(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) { + var dropdownElement = $(element).closest(Selector.LI_DROPDOWN)[0]; + if (dropdownElement) { + $(dropdownElement).addClass(ClassName.ACTIVE); + } -/** - * @param {Element=} opt_element - * @return {Object} - * @private - */ -Tooltip.prototype._getPosition = function (opt_element) { - var element = opt_element || this.element - var isBody = element.tagName == 'BODY' - var rect = element.getBoundingClientRect() - var offset = isBody ? { top: 0, left: 0 } : $(element).offset() - var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : this.element.scrollTop } - var outerDims = isBody ? { width: window.innerWidth, height: window.innerHeight } : null - - return $.extend({}, rect, scroll, outerDims, offset) -} + elementToggle = $(element).find(Selector.DATA_TOGGLE)[0]; + if (elementToggle) { + elementToggle.setAttribute('aria-expanded', true); + } + } + if (callback) { + callback(); + } + } + }], [{ + key: 'VERSION', -/** - * @param {{left: number, top: number}} offset - * @param {string} placement - * @private - */ -Tooltip.prototype._applyCalculatedPlacement = function (offset, placement) { - var tip = this.getTipElement() - var width = tip.offsetWidth - var height = tip.offsetHeight - - // manually read margins because getBoundingClientRect includes difference - var marginTop = parseInt(tip.style.marginTop, 10) - var marginLeft = parseInt(tip.style.marginLeft, 10) - - // we must check for NaN for ie 8/9 - if (isNaN(marginTop)) { - marginTop = 0 - } - if (isNaN(marginLeft)) { - marginLeft = 0 - } + // getters - offset.top = offset.top + marginTop - offset.left = offset.left + marginLeft + get: function () { + return VERSION; + } + }, { + key: '_jQueryInterface', - // $.fn.offset doesn't round pixel values - // so we use setOffset directly with our own function B-0 - $.offset.setOffset(tip, $.extend({ - using: function (props) { - tip.style.top = Math.round(props.top) + 'px' - tip.style.left = Math.round(props.left) + 'px' - } - }, offset), 0) + // static - $(tip).addClass(Tooltip._ClassName.IN) + value: function _jQueryInterface(config) { + return this.each(function () { + var $this = $(this); + var data = $this.data(DATA_KEY); - // check to see if placing tip in new offset caused the tip to resize itself - var actualWidth = tip.offsetWidth - var actualHeight = tip.offsetHeight + if (!data) { + data = data = new Tab(this); + $this.data(DATA_KEY, data); + } - if (placement == Tooltip.Direction.TOP && actualHeight != height) { - offset.top = offset.top + height - actualHeight - } + if (typeof config === 'string') { + data[config](); + } + }); + } + }]); - var delta = this._getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight) + return Tab; + })(); - if (delta.left) { - offset.left += delta.left - } else { - offset.top += delta.top - } + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ - var isVertical = placement === Tooltip.Direction.TOP || placement === Tooltip.Direction.BOTTOM - var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight - var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight' + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + event.preventDefault(); + Tab._jQueryInterface.call($(this), 'show'); + }); - $(tip).offset(offset) + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ - this._replaceArrow(arrowDelta, tip[arrowOffsetPosition], isVertical) -} + $.fn[NAME] = Tab._jQueryInterface; + $.fn[NAME].Constructor = Tab; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Tab._jQueryInterface; + }; + return Tab; +})(jQuery); /** - * @param {number} delta - * @param {number} dimension - * @param {boolean} isHorizontal - * @private - */ -Tooltip.prototype._replaceArrow = function (delta, dimension, isHorizontal) { - var arrow = this.getArrowElement() - - arrow.style[isHorizontal ? 'left' : 'top'] = 50 * (1 - delta / dimension) + '%' - arrow.style[isHorizontal ? 'top' : 'left'] = '' -} - + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): tooltip.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Tooltip = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'tooltip'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.tooltip'; + var EVENT_KEY = '.' + DATA_KEY; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 150; + var CLASS_PREFIX = 'bs-tether'; + + var Default = { + animation: true, + template: '<div class="tooltip" role="tooltip">' + '<div class="tooltip-arrow"></div>' + '<div class="tooltip-inner"></div></div>', + trigger: 'hover focus', + title: '', + delay: 0, + html: false, + selector: false, + placement: 'top', + offset: '0 0', + constraints: [] + }; + + var DefaultType = { + animation: 'boolean', + template: 'string', + title: '(string|function)', + trigger: 'string', + delay: '(number|object)', + html: 'boolean', + selector: '(string|boolean)', + placement: '(string|function)', + offset: 'string', + constraints: 'array' + }; + + var AttachmentMap = { + TOP: 'bottom center', + RIGHT: 'middle left', + BOTTOM: 'top center', + LEFT: 'middle right' + }; + + var HoverState = { + IN: 'in', + OUT: 'out' + }; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + INSERTED: 'inserted' + EVENT_KEY, + CLICK: 'click' + EVENT_KEY, + FOCUSIN: 'focusin' + EVENT_KEY, + FOCUSOUT: 'focusout' + EVENT_KEY, + MOUSEENTER: 'mouseenter' + EVENT_KEY, + MOUSELEAVE: 'mouseleave' + EVENT_KEY + }; + + var ClassName = { + FADE: 'fade', + IN: 'in' + }; + + var Selector = { + TOOLTIP: '.tooltip', + TOOLTIP_INNER: '.tooltip-inner' + }; + + var TetherClass = { + element: false, + enabled: false + }; + + var Trigger = { + HOVER: 'hover', + FOCUS: 'focus', + CLICK: 'click', + MANUAL: 'manual' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Tooltip = (function () { + function Tooltip(element, config) { + _classCallCheck(this, Tooltip); + + // private + this._isEnabled = true; + this._timeout = 0; + this._hoverState = ''; + this._activeTrigger = {}; + this._tether = null; + + // protected + this.element = element; + this.config = this._getConfig(config); + this.tip = null; + + this._setListeners(); + } + + _createClass(Tooltip, [{ + key: 'enable', + + // public + + value: function enable() { + this._isEnabled = true; + } + }, { + key: 'disable', + value: function disable() { + this._isEnabled = false; + } + }, { + key: 'toggleEnabled', + value: function toggleEnabled() { + this._isEnabled = !this._isEnabled; + } + }, { + key: 'toggle', + value: function toggle(event) { + var context = this; + var dataKey = this.constructor.DATA_KEY; + + if (event) { + context = $(event.currentTarget).data(dataKey); + + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $(event.currentTarget).data(dataKey, context); + } + context._activeTrigger.click = !context._activeTrigger.click; -/** - * @private - */ -Tooltip.prototype._fixTitle = function () { - if (this.element.getAttribute('title') || typeof this.element.getAttribute('data-original-title') != 'string') { - this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '') - this.element.setAttribute('title', '') - } -} + if (context._isWithActiveTrigger()) { + context._enter(null, context); + } else { + context._leave(null, context); + } + } else { + $(context.getTipElement()).hasClass(ClassName.IN) ? context._leave(null, context) : context._enter(null, context); + } + } + }, { + key: 'dispose', + value: function dispose() { + clearTimeout(this._timeout); + this.cleanupTether(); -/** - * @param {Event=} opt_event - * @param {Object=} opt_context - * @private - */ -Tooltip.prototype._enter = function (opt_event, opt_context) { - var dataKey = this.getDataKey() - var context = opt_context || $(opt_event.currentTarget).data(dataKey) + $.removeData(this.element, this.constructor.DATA_KEY); - if (context && context._tip && context._tip.offsetWidth) { - context._hoverState = Tooltip._HoverState.IN - return - } + $(this.element).off(this.constructor.EVENT_KEY); - if (!context) { - context = new this.constructor(opt_event.currentTarget, this._getDelegateConfig()) - $(opt_event.currentTarget).data(dataKey, context) - } + if (this.tip) { + $(this.tip).remove(); + } - clearTimeout(context._timeout) + this._isEnabled = null; + this._timeout = null; + this._hoverState = null; + this._activeTrigger = null; + this._tether = null; - context._hoverState = Tooltip._HoverState.IN + this.element = null; + this.config = null; + this.tip = null; + } + }, { + key: 'show', + value: function show() { + var _this16 = this; - if (!context.config['delay'] || !context.config['delay']['show']) { - context['show']() - return - } + var showEvent = $.Event(this.constructor.Event.SHOW); - context._timeout = setTimeout(function () { - if (context._hoverState == Tooltip._HoverState.IN) { - context['show']() - } - }, context.config['delay']['show']) -} + if (this.isWithContent() && this._isEnabled) { + $(this.element).trigger(showEvent); + var isInTheDom = $.contains(this.element.ownerDocument.documentElement, this.element); -/** - * @param {Event=} opt_event - * @param {Object=} opt_context - * @private - */ -Tooltip.prototype._leave = function (opt_event, opt_context) { - var dataKey = this.getDataKey() - var context = opt_context || $(opt_event.currentTarget).data(dataKey) + if (showEvent.isDefaultPrevented() || !isInTheDom) { + return; + } - if (!context) { - context = new this.constructor(opt_event.currentTarget, this._getDelegateConfig()) - $(opt_event.currentTarget).data(dataKey, context) - } + var tip = this.getTipElement(); + var tipId = Util.getUID(this.constructor.NAME); - clearTimeout(context._timeout) + tip.setAttribute('id', tipId); + this.element.setAttribute('aria-describedby', tipId); - context._hoverState = Tooltip._HoverState.OUT + this.setContent(); - if (!context.config['delay'] || !context.config['delay']['hide']) { - context['hide']() - return - } + if (this.config.animation) { + $(tip).addClass(ClassName.FADE); + } - context._timeout = setTimeout(function () { - if (context._hoverState == Tooltip._HoverState.OUT) { - context['hide']() - } - }, context.config['delay']['hide']) -} + var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement; + var attachment = this._getAttachment(placement); + $(tip).data(this.constructor.DATA_KEY, this).appendTo(document.body); -/** - * ------------------------------------------------------------------------ - * jQuery Interface + noConflict implementaiton - * ------------------------------------------------------------------------ - */ + $(this.element).trigger(this.constructor.Event.INSERTED); -/** - * @const - * @type {Function} - */ -$.fn[Tooltip._NAME] = Tooltip._jQueryInterface + this._tether = new Tether({ + element: tip, + target: this.element, + attachment: attachment, + classes: TetherClass, + classPrefix: CLASS_PREFIX, + offset: this.config.offset, + constraints: this.config.constraints + }); + Util.reflow(tip); + this._tether.position(); -/** - * @const - * @type {Function} - */ -$.fn[Tooltip._NAME]['Constructor'] = Tooltip + $(tip).addClass(ClassName.IN); + var complete = function complete() { + var prevHoverState = _this16._hoverState; + _this16._hoverState = null; -/** - * @const - * @type {Function} - */ -$.fn[Tooltip._NAME]['noConflict'] = function () { - $.fn[Tooltip._NAME] = Tooltip._JQUERY_NO_CONFLICT - return this -} + $(_this16.element).trigger(_this16.constructor.Event.SHOWN); -/** ======================================================================= - * Bootstrap: popover.js v4.0.0 - * http://getbootstrap.com/javascript/#popovers - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== - * @fileoverview - Bootstrap's popover plugin - extends tooltip. - * - * Public Methods & Properties: - * - * + $.popover - * + $.popover.noConflict - * + $.popover.Constructor - * + $.popover.Constructor.VERSION - * + $.popover.Constructor.Defaults - * + $.popover.Constructor.Defaults.container - * + $.popover.Constructor.Defaults.animation - * + $.popover.Constructor.Defaults.placement - * + $.popover.Constructor.Defaults.selector - * + $.popover.Constructor.Defaults.template - * + $.popover.Constructor.Defaults.trigger - * + $.popover.Constructor.Defaults.title - * + $.popover.Constructor.Defaults.content - * + $.popover.Constructor.Defaults.delay - * + $.popover.Constructor.Defaults.html - * + $.popover.Constructor.Defaults.viewport - * + $.popover.Constructor.Defaults.viewport.selector - * + $.popover.Constructor.Defaults.viewport.padding - * + $.popover.Constructor.prototype.enable - * + $.popover.Constructor.prototype.disable - * + $.popover.Constructor.prototype.destroy - * + $.popover.Constructor.prototype.toggleEnabled - * + $.popover.Constructor.prototype.toggle - * + $.popover.Constructor.prototype.show - * + $.popover.Constructor.prototype.hide - * - * ======================================================================== - */ + if (prevHoverState === HoverState.OUT) { + _this16._leave(null, _this16); + } + }; + Util.supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE) ? $(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(Tooltip._TRANSITION_DURATION) : complete(); + } + } + }, { + key: 'hide', + value: function hide(callback) { + var _this17 = this; + + var tip = this.getTipElement(); + var hideEvent = $.Event(this.constructor.Event.HIDE); + var complete = function complete() { + if (_this17._hoverState !== HoverState.IN && tip.parentNode) { + tip.parentNode.removeChild(tip); + } -'use strict'; + _this17.element.removeAttribute('aria-describedby'); + $(_this17.element).trigger(_this17.constructor.Event.HIDDEN); + _this17.cleanupTether(); + if (callback) { + callback(); + } + }; -if (!Tooltip) throw new Error('Popover requires tooltip.js') + $(this.element).trigger(hideEvent); + if (hideEvent.isDefaultPrevented()) { + return; + } -/** - * Our tooltip class. - * @param {Element!} element - * @param {Object=} opt_config - * @constructor - * @extends {Tooltip} - */ -var Popover = function (element, opt_config) { - Tooltip.apply(this, arguments) -} -Bootstrap.inherits(Popover, Tooltip) + $(tip).removeClass(ClassName.IN); + if (Util.supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE)) { -/** - * @const - * @type {string} - */ -Popover['VERSION'] = '4.0.0' + $(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + } else { + complete(); + } + this._hoverState = ''; + } + }, { + key: 'isWithContent', -/** - * @const - * @type {Object} - */ -Popover['Defaults'] = $.extend({}, $.fn['tooltip']['Constructor']['Defaults'], { - 'placement': 'right', - 'trigger': 'click', - 'content': '', - 'template': '<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>' -}) + // protected + value: function isWithContent() { + return !!this.getTitle(); + } + }, { + key: 'getTipElement', + value: function getTipElement() { + return this.tip = this.tip || $(this.config.template)[0]; + } + }, { + key: 'setContent', + value: function setContent() { + var tip = this.getTipElement(); + var title = this.getTitle(); + var method = this.config.html ? 'innerHTML' : 'innerText'; -/** - * @const - * @type {string} - * @private - */ -Popover._NAME = 'popover' + $(tip).find(Selector.TOOLTIP_INNER)[0][method] = title; + $(tip).removeClass(ClassName.FADE).removeClass(ClassName.IN); -/** - * @const - * @type {string} - * @private - */ -Popover._DATA_KEY = 'bs.popover' + this.cleanupTether(); + } + }, { + key: 'getTitle', + value: function getTitle() { + var title = this.element.getAttribute('data-original-title'); + if (!title) { + title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title; + } -/** - * @const - * @enum {string} - * @private - */ -Popover._Event = { - HIDE : 'hide.bs.popover', - HIDDEN : 'hidden.bs.popover', - SHOW : 'show.bs.popover', - SHOWN : 'shown.bs.popover' -} + return title; + } + }, { + key: 'cleanupTether', + value: function cleanupTether() { + if (this._tether) { + this._tether.destroy(); + + // clean up after tether's junk classes + // remove after they fix issue + // (https://github.com/HubSpot/tether/issues/36) + $(this.element).removeClass(this._removeTetherClasses); + $(this.tip).removeClass(this._removeTetherClasses); + } + } + }, { + key: '_getAttachment', + // private -/** - * @const - * @enum {string} - * @private - */ -Popover._ClassName = { - FADE : 'fade', - IN : 'in' -} + value: function _getAttachment(placement) { + return AttachmentMap[placement.toUpperCase()]; + } + }, { + key: '_setListeners', + value: function _setListeners() { + var _this18 = this; + var triggers = this.config.trigger.split(' '); -/** - * @const - * @enum {string} - * @private - */ -Popover._Selector = { - TITLE : '.popover-title', - CONTENT : '.popover-content', - ARROW : '.popover-arrow' -} + triggers.forEach(function (trigger) { + if (trigger === 'click') { + $(_this18.element).on(_this18.constructor.Event.CLICK, _this18.config.selector, $.proxy(_this18.toggle, _this18)); + } else if (trigger !== Trigger.MANUAL) { + var eventIn = trigger == Trigger.HOVER ? _this18.constructor.Event.MOUSEENTER : _this18.constructor.Event.FOCUSIN; + var eventOut = trigger == Trigger.HOVER ? _this18.constructor.Event.MOUSELEAVE : _this18.constructor.Event.FOCUSOUT; + $(_this18.element).on(eventIn, _this18.config.selector, $.proxy(_this18._enter, _this18)).on(eventOut, _this18.config.selector, $.proxy(_this18._leave, _this18)); + } + }); -/** - * @const - * @type {Function} - * @private - */ -Popover._JQUERY_NO_CONFLICT = $.fn[Popover._NAME] + if (this.config.selector) { + this.config = $.extend({}, this.config, { + trigger: 'manual', + selector: '' + }); + } else { + this._fixTitle(); + } + } + }, { + key: '_removeTetherClasses', + value: function _removeTetherClasses(i, css) { + return ((css.baseVal || css).match(new RegExp('(^|\\s)' + CLASS_PREFIX + '-\\S+', 'g')) || []).join(' '); + } + }, { + key: '_fixTitle', + value: function _fixTitle() { + var titleType = typeof this.element.getAttribute('data-original-title'); + if (this.element.getAttribute('title') || titleType !== 'string') { + this.element.setAttribute('data-original-title', this.element.getAttribute('title') || ''); + this.element.setAttribute('title', ''); + } + } + }, { + key: '_enter', + value: function _enter(event, context) { + var dataKey = this.constructor.DATA_KEY; + context = context || $(event.currentTarget).data(dataKey); -/** - * @param {Object|string=} opt_config - * @this {jQuery} - * @return {jQuery} - * @private - */ -Popover._jQueryInterface = function (opt_config) { - return this.each(function () { - var data = $(this).data(Popover._DATA_KEY) - var config = typeof opt_config === 'object' ? opt_config : null + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $(event.currentTarget).data(dataKey, context); + } - if (!data && opt_config === 'destroy') { - return - } + if (event) { + context._activeTrigger[event.type == 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true; + } - if (!data) { - data = new Popover(this, config) - $(this).data(Popover._DATA_KEY, data) - } + if ($(context.getTipElement()).hasClass(ClassName.IN) || context._hoverState === HoverState.IN) { + context._hoverState = HoverState.IN; + return; + } - if (typeof opt_config === 'string') { - data[opt_config]() - } - }) -} + clearTimeout(context._timeout); + context._hoverState = HoverState.IN; -/** - * @return {string} - * @protected - */ -Popover.prototype.getName = function () { - return Popover._NAME -} + if (!context.config.delay || !context.config.delay.show) { + context.show(); + return; + } + context._timeout = setTimeout(function () { + if (context._hoverState === HoverState.IN) { + context.show(); + } + }, context.config.delay.show); + } + }, { + key: '_leave', + value: function _leave(event, context) { + var dataKey = this.constructor.DATA_KEY; -/** - * @override - */ -Popover.prototype.getDataKey = function () { - return Popover._DATA_KEY -} + context = context || $(event.currentTarget).data(dataKey); + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $(event.currentTarget).data(dataKey, context); + } -/** - * @override - */ -Popover.prototype.getEventObject = function () { - return Popover._Event -} + if (event) { + context._activeTrigger[event.type == 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false; + } + if (context._isWithActiveTrigger()) { + return; + } -/** - * @override - */ -Popover.prototype.getArrowElement = function () { - return (this.arrow = this.arrow || $(this.getTipElement()).find(Popover._Selector.ARROW)[0]) -} + clearTimeout(context._timeout); + context._hoverState = HoverState.OUT; -/** - * @override - */ -Popover.prototype.setContent = function () { - var tip = this.getTipElement() - var title = this.getTitle() - var content = this._getContent() - var titleElement = $(tip).find(Popover._Selector.TITLE)[0] - - if (titleElement) { - titleElement[this.config['html'] ? 'innerHTML' : 'innerText'] = title - } + if (!context.config.delay || !context.config.delay.hide) { + context.hide(); + return; + } - // we use append for html objects to maintain js events - $(tip).find(Popover._Selector.CONTENT).children().detach().end()[ - this.config['html'] ? (typeof content == 'string' ? 'html' : 'append') : 'text' - ](content) + context._timeout = setTimeout(function () { + if (context._hoverState === HoverState.OUT) { + context.hide(); + } + }, context.config.delay.hide); + } + }, { + key: '_isWithActiveTrigger', + value: function _isWithActiveTrigger() { + for (var trigger in this._activeTrigger) { + if (this._activeTrigger[trigger]) { + return true; + } + } - $(tip) - .removeClass(Popover._ClassName.FADE) - .removeClass(Popover._ClassName.IN) + return false; + } + }, { + key: '_getConfig', + value: function _getConfig(config) { + config = $.extend({}, this.constructor.Default, $(this.element).data(), config); + + if (config.delay && typeof config.delay === 'number') { + config.delay = { + show: config.delay, + hide: config.delay + }; + } - for (var direction in Tooltip.Direction) { - $(tip).removeClass(Popover._NAME + '-' + Tooltip.Direction[direction]) - } -} + Util.typeCheckConfig(NAME, config, this.constructor.DefaultType); + return config; + } + }, { + key: '_getDelegateConfig', + value: function _getDelegateConfig() { + var config = {}; + + if (this.config) { + for (var key in this.config) { + var value = this.config[key]; + if (this.constructor.Default[key] !== value) { + config[key] = value; + } + } + } -/** - * @override - */ -Popover.prototype.isWithContent = function () { - return this.getTitle() || this._getContent() -} + return config; + } + }], [{ + key: 'VERSION', + // getters -/** - * @override - */ -Popover.prototype.getTipElement = function () { - return (this.tip = this.tip || $(this.config['template'])[0]) -} + get: function () { + return VERSION; + } + }, { + key: 'Default', + get: function () { + return Default; + } + }, { + key: 'NAME', + get: function () { + return NAME; + } + }, { + key: 'DATA_KEY', + get: function () { + return DATA_KEY; + } + }, { + key: 'Event', + get: function () { + return Event; + } + }, { + key: 'EVENT_KEY', + get: function () { + return EVENT_KEY; + } + }, { + key: 'DefaultType', + get: function () { + return DefaultType; + } + }, { + key: '_jQueryInterface', + // static -/** - * @private - */ -Popover.prototype._getContent = function () { - return this.element.getAttribute('data-content') - || (typeof this.config['content'] == 'function' ? - this.config['content'].call(this.element) : - this.config['content']) -} + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = typeof config === 'object' ? config : null; + if (!data && /destroy|hide/.test(config)) { + return; + } + if (!data) { + data = new Tooltip(this, _config); + $(this).data(DATA_KEY, data); + } -/** - * ------------------------------------------------------------------------ - * jQuery Interface + noConflict implementaiton - * ------------------------------------------------------------------------ - */ + if (typeof config === 'string') { + data[config](); + } + }); + } + }]); -/** - * @const - * @type {Function} - */ -$.fn[Popover._NAME] = Popover._jQueryInterface + return Tooltip; + })(); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ -/** - * @const - * @type {Function} - */ -$.fn[Popover._NAME]['Constructor'] = Popover + $.fn[NAME] = Tooltip._jQueryInterface; + $.fn[NAME].Constructor = Tooltip; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Tooltip._jQueryInterface; + }; + return Tooltip; +})(jQuery); /** - * @const - * @type {Function} - */ -$.fn[Popover._NAME]['noConflict'] = function () { - $.fn[Popover._NAME] = Popover._JQUERY_NO_CONFLICT - return this -} - -/** ======================================================================= - * Bootstrap: tab.js v4.0.0 - * http://getbootstrap.com/javascript/#tabs - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): popover.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== - * @fileoverview - Bootstrap's tab plugin. Tab O_O - * - * Public Methods & Properties: - * - * + $.tab - * + $.tab.noConflict - * + $.tab.Constructor - * + $.tab.Constructor.VERSION - * + $.tab.Constructor.prototype.show - * - * ======================================================================== - */ - - -'use strict'; - -/** - * Our Tab class. - * @param {Element!} element - * @constructor - */ -var Tab = function (element) { - - /** @type {Element} */ - this._element = element - -} - - -/** - * @const - * @type {string} - */ -Tab['VERSION'] = '4.0.0' - - -/** - * @const - * @type {string} - * @private - */ -Tab._NAME = 'tab' - - -/** - * @const - * @type {string} - * @private - */ -Tab._DATA_KEY = 'bs.tab' - - -/** - * @const - * @type {number} - * @private - */ -Tab._TRANSITION_DURATION = 150 - - -/** - * @const - * @enum {string} - * @private - */ -Tab._Event = { - HIDE : 'hide.bs.tab', - HIDDEN : 'hidden.bs.tab', - SHOW : 'show.bs.tab', - SHOWN : 'shown.bs.tab' -} - - -/** - * @const - * @enum {string} - * @private - */ -Tab._ClassName = { - DROPDOWN_MENU : 'dropdown-menu', - ACTIVE : 'active', - FADE : 'fade', - IN : 'in' -} - - -/** - * @const - * @enum {string} - * @private - */ -Tab._Selector = { - A : 'a', - LI : 'li', - LI_DROPDOWN : 'li.dropdown', - UL : 'ul:not(.dropdown-menu)', - FADE_CHILD : ':scope > .fade', - ACTIVE : '.active', - ACTIVE_CHILD : ':scope > .active', - DATA_TOGGLE : '[data-toggle="tab"], [data-toggle="pill"]', - DROPDOWN_ACTIVE_CHILD : ':scope > .dropdown-menu > .active' -} - - -/** - * @param {Object|string=} opt_config - * @this {jQuery} - * @return {jQuery} - * @private - */ -Tab._jQueryInterface = function (opt_config) { - return this.each(function () { - var $this = $(this) - var data = $this.data(Tab._DATA_KEY) - - if (!data) { - data = data = new Tab(this) - $this.data(Tab._DATA_KEY, data) - } - - if (typeof opt_config === 'string') { - data[opt_config]() - } - }) -} - - -/** - * Show the tab - */ -Tab.prototype['show'] = function () { - if ( this._element.parentNode - && this._element.parentNode.nodeType == Node.ELEMENT_NODE - && $(this._element).parent().hasClass(Tab._ClassName.ACTIVE)) { - return - } - - var ulElement = $(this._element).closest(Tab._Selector.UL)[0] - var selector = Bootstrap.getSelectorFromElement(this._element) - - if (ulElement) { - var previous = /** @type {Array.<Element>} */ ($.makeArray($(ulElement).find(Tab._Selector.ACTIVE))) - previous = previous[previous.length - 1] - - if (previous) { - previous = $(previous).find('a')[0] + * -------------------------------------------------------------------------- + */ + +var Popover = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'popover'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.popover'; + var EVENT_KEY = '.' + DATA_KEY; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + + var Default = $.extend({}, Tooltip.Default, { + placement: 'right', + trigger: 'click', + content: '', + template: '<div class="popover" role="tooltip">' + '<div class="popover-arrow"></div>' + '<h3 class="popover-title"></h3>' + '<div class="popover-content"></div></div>' + }); + + var DefaultType = $.extend({}, Tooltip.DefaultType, { + content: '(string|function)' + }); + + var ClassName = { + FADE: 'fade', + IN: 'in' + }; + + var Selector = { + TITLE: '.popover-title', + CONTENT: '.popover-content', + ARROW: '.popover-arrow' + }; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + INSERTED: 'inserted' + EVENT_KEY, + CLICK: 'click' + EVENT_KEY, + FOCUSIN: 'focusin' + EVENT_KEY, + FOCUSOUT: 'focusout' + EVENT_KEY, + MOUSEENTER: 'mouseenter' + EVENT_KEY, + MOUSELEAVE: 'mouseleave' + EVENT_KEY + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Popover = (function (_Tooltip) { + function Popover() { + _classCallCheck(this, Popover); + + if (_Tooltip != null) { + _Tooltip.apply(this, arguments); + } } - } - - var hideEvent = $.Event(Tab._Event.HIDE, { - relatedTarget: this._element - }) - var showEvent = $.Event(Tab._Event.SHOW, { - relatedTarget: previous - }) + _inherits(Popover, _Tooltip); - if (previous) { - $(previous).trigger(hideEvent) - } - - $(this._element).trigger(showEvent) - - if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return - - if (selector) { - var target = $(selector)[0] - } - - this._activate($(this._element).closest(Tab._Selector.LI)[0], ulElement) - - var complete = function () { - var hiddenEvent = $.Event(Tab._Event.HIDDEN, { - relatedTarget: this._element - }) - - var shownEvent = $.Event(Tab._Event.SHOWN, { - relatedTarget: previous - }) - - $(previous).trigger(hiddenEvent) - $(this._element).trigger(shownEvent) - }.bind(this) - - if (target) { - this._activate(target, /** @type {Element} */ (target.parentNode), complete) - } else { - complete() - } -} + _createClass(Popover, [{ + key: 'isWithContent', + // overrides -/** - * @param {Element} element - * @param {Element} container - * @param {Function=} opt_callback - * @private - */ -Tab.prototype._activate = function (element, container, opt_callback) { - var active = $(container).find(Tab._Selector.ACTIVE_CHILD)[0] - var isTransitioning = opt_callback - && Bootstrap.transition - && ((active && $(active).hasClass(Tab._ClassName.FADE)) - || !!$(container).find(Tab._Selector.FADE_CHILD)[0]) - - var complete = this._transitionComplete.bind(this, element, active, isTransitioning, opt_callback) - - if (active && isTransitioning) { - $(active) - .one(Bootstrap.TRANSITION_END, complete) - .emulateTransitionEnd(Tab._TRANSITION_DURATION) - - } else { - complete() - } - - if (active) { - $(active).removeClass(Tab._ClassName.IN) - } -} - - -/** - * @param {Element} element - * @param {Element} active - * @param {boolean} isTransitioning - * @param {Function=} opt_callback - * @private - */ -Tab.prototype._transitionComplete = function (element, active, isTransitioning, opt_callback) { - if (active) { - $(active).removeClass(Tab._ClassName.ACTIVE) - - var dropdownChild = $(active).find(Tab._Selector.DROPDOWN_ACTIVE_CHILD)[0] - if (dropdownChild) { - $(dropdownChild).removeClass(Tab._ClassName.ACTIVE) - } - - var activeToggle = $(active).find(Tab._Selector.DATA_TOGGLE)[0] - if (activeToggle) { - activeToggle.setAttribute('aria-expanded', false) - } - } - - $(element).addClass(Tab._ClassName.ACTIVE) + value: function isWithContent() { + return this.getTitle() || this._getContent(); + } + }, { + key: 'getTipElement', + value: function getTipElement() { + return this.tip = this.tip || $(this.config.template)[0]; + } + }, { + key: 'setContent', + value: function setContent() { + var tip = this.getTipElement(); + var title = this.getTitle(); + var content = this._getContent(); + var titleElement = $(tip).find(Selector.TITLE)[0]; + + if (titleElement) { + titleElement[this.config.html ? 'innerHTML' : 'innerText'] = title; + } - var elementToggle = $(element).find(Tab._Selector.DATA_TOGGLE)[0] - if (elementToggle) { - elementToggle.setAttribute('aria-expanded', true) - } + // we use append for html objects to maintain js events + $(tip).find(Selector.CONTENT).children().detach().end()[this.config.html ? typeof content === 'string' ? 'html' : 'append' : 'text'](content); - if (isTransitioning) { - Bootstrap.reflow(element) - $(element).addClass(Tab._ClassName.IN) - } else { - $(element).removeClass(Tab._ClassName.FADE) - } + $(tip).removeClass(ClassName.FADE).removeClass(ClassName.IN); - if (element.parentNode && $(element.parentNode).hasClass(Tab._ClassName.DROPDOWN_MENU)) { - var dropdownElement = $(element).closest(Tab._Selector.LI_DROPDOWN)[0] - if (dropdownElement) { - $(dropdownElement).addClass(Tab._ClassName.ACTIVE) - } + this.cleanupTether(); + } + }, { + key: '_getContent', - elementToggle = $(element).find(Tab._Selector.DATA_TOGGLE)[0] - if (elementToggle) { - elementToggle.setAttribute('aria-expanded', true) - } - } + // private - if (opt_callback) { - opt_callback() - } -} + value: function _getContent() { + return this.element.getAttribute('data-content') || (typeof this.config.content == 'function' ? this.config.content.call(this.element) : this.config.content); + } + }], [{ + key: 'VERSION', + // getters -/** - * ------------------------------------------------------------------------ - * jQuery Interface + noConflict implementaiton - * ------------------------------------------------------------------------ - */ + get: function () { + return VERSION; + } + }, { + key: 'Default', + get: function () { + return Default; + } + }, { + key: 'NAME', + get: function () { + return NAME; + } + }, { + key: 'DATA_KEY', + get: function () { + return DATA_KEY; + } + }, { + key: 'Event', + get: function () { + return Event; + } + }, { + key: 'EVENT_KEY', + get: function () { + return EVENT_KEY; + } + }, { + key: 'DefaultType', + get: function () { + return DefaultType; + } + }, { + key: '_jQueryInterface', -/** - * @const - * @type {Function} - */ -$.fn[Tab._NAME] = Tab._jQueryInterface + // static + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = typeof config === 'object' ? config : null; -/** - * @const - * @type {Function} - */ -$.fn[Tab._NAME]['Constructor'] = Tab + if (!data && /destroy|hide/.test(config)) { + return; + } + if (!data) { + data = new Popover(this, _config); + $(this).data(DATA_KEY, data); + } -/** - * @const - * @type {Function} - */ -$.fn[Tab._NAME]['noConflict'] = function () { - $.fn[Tab._NAME] = Tab._JQUERY_NO_CONFLICT - return this -} + if (typeof config === 'string') { + data[config](); + } + }); + } + }]); + return Popover; + })(Tooltip); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ -// TAB DATA-API -// ============ + $.fn[NAME] = Popover._jQueryInterface; + $.fn[NAME].Constructor = Popover; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Popover._jQueryInterface; + }; -var clickHandler = function (e) { - e.preventDefault() - Tab._jQueryInterface.call($(this), 'show') -} + return Popover; +})(jQuery); -$(document) - .on('click.bs.tab.data-api', Tab._Selector.DATA_TOGGLE, clickHandler) +}(jQuery); diff --git a/dist/js/bootstrap.min.js b/dist/js/bootstrap.min.js index 089780400d..497cc8176c 100644 --- a/dist/js/bootstrap.min.js +++ b/dist/js/bootstrap.min.js @@ -3,75 +3,6 @@ * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) */ -if (typeof jQuery === 'undefined') { - throw new Error('Bootstrap\'s JavaScript requires jQuery') -} -+function ($) { - var version = $.fn.jquery.split(' ')[0].split('.') - if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) { - throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher') - } -}(jQuery); +if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(jQuery),+function(){"use strict";function a(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)}function b(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}{var c=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),d=function(a){function b(a){return{}.toString.call(a).match(/\s([a-zA-Z]+)/)[1].toLowerCase()}function c(a){return(a[0]||a).nodeType}function d(){return{bindType:h.end,delegateType:h.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}}}function e(){if(window.QUnit)return!1;var a=document.createElement("bootstrap");for(var b in i)if(void 0!==a.style[b])return{end:i[b]};return!1}function f(b){var c=this,d=!1;return a(this).one(j.TRANSITION_END,function(){d=!0}),setTimeout(function(){d||j.triggerTransitionEnd(c)},b),this}function g(){h=e(),a.fn.emulateTransitionEnd=f,j.supportsTransitionEnd()&&(a.event.special[j.TRANSITION_END]=d())}var h=!1,i={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},j={TRANSITION_END:"bsTransitionEnd",getUID:function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},getSelectorFromElement:function(a){var b=a.getAttribute("data-target");return b||(b=a.getAttribute("href")||"",b=/^#[a-z]/i.test(b)?b:null),b},reflow:function(a){new Function("bs","return bs")(a.offsetHeight)},triggerTransitionEnd:function(b){a(b).trigger(h.end)},supportsTransitionEnd:function(){return!!h},typeCheckConfig:function(a,d,e){for(var f in e){var g=e[f],h=d[f],i=void 0;if(i=h&&c(h)?"element":b(h),!new RegExp(g).test(i))throw new Error(""+a.toUpperCase()+": "+('Option "'+f+'" provided type "'+i+'" ')+('but expected type "'+g+'".'))}}};return g(),j}(jQuery),e=(function(a){var e="alert",f="4.0.0",g="bs.alert",h="."+g,i=".data-api",j=a.fn[e],k=150,l={DISMISS:'[data-dismiss="alert"]'},m={CLOSE:"close"+h,CLOSED:"closed"+h,CLICK_DATA_API:"click"+h+i},n={ALERT:"alert",FADE:"fade",IN:"in"},o=function(){function e(a){b(this,e),this._element=a}return c(e,[{key:"close",value:function(a){a=a||this._element;var b=this._getRootElement(a),c=this._triggerCloseEvent(b);c.isDefaultPrevented()||this._removeElement(b)}},{key:"dispose",value:function(){a.removeData(this._element,g),this._element=null}},{key:"_getRootElement",value:function(b){var c=!1,e=d.getSelectorFromElement(b);return e&&(c=a(e)[0]),c||(c=a(b).closest("."+n.ALERT)[0]),c}},{key:"_triggerCloseEvent",value:function(b){var c=a.Event(m.CLOSE);return a(b).trigger(c),c}},{key:"_removeElement",value:function(b){return a(b).removeClass(n.IN),d.supportsTransitionEnd()&&a(b).hasClass(n.FADE)?void a(b).one(d.TRANSITION_END,this._destroyElement.bind(this,b)).emulateTransitionEnd(k):void this._destroyElement(b)}},{key:"_destroyElement",value:function(b){a(b).detach().trigger(m.CLOSED).remove()}}],[{key:"VERSION",get:function(){return f}},{key:"_jQueryInterface",value:function(b){return this.each(function(){var c=a(this),d=c.data(g);d||(d=new e(this),c.data(g,d)),"close"===b&&d[b](this)})}},{key:"_handleDismiss",value:function(a){return function(b){b&&b.preventDefault(),a.close(this)}}}]),e}();return a(document).on(m.CLICK_DATA_API,l.DISMISS,o._handleDismiss(new o)),a.fn[e]=o._jQueryInterface,a.fn[e].Constructor=o,a.fn[e].noConflict=function(){return a.fn[e]=j,o._jQueryInterface},o}(jQuery),function(a){var d="button",e="4.0.0",f="bs.button",g="."+f,h=".data-api",i=a.fn[d],j={ACTIVE:"active",BUTTON:"btn",FOCUS:"focus"},k={DATA_TOGGLE_CARROT:'[data-toggle^="button"]',DATA_TOGGLE:'[data-toggle="buttons"]',INPUT:"input",ACTIVE:".active",BUTTON:".btn"},l={CLICK_DATA_API:"click"+g+h,FOCUS_BLUR_DATA_API:"focus"+g+h+" "+("blur"+g+h)},m=function(){function d(a){b(this,d),this._element=a}return c(d,[{key:"toggle",value:function(){var b=!0,c=a(this._element).closest(k.DATA_TOGGLE)[0];if(c){var d=a(this._element).find(k.INPUT)[0];if(d){if("radio"===d.type)if(d.checked&&a(this._element).hasClass(j.ACTIVE))b=!1;else{var e=a(c).find(k.ACTIVE)[0];e&&a(e).removeClass(j.ACTIVE)}b&&(d.checked=!a(this._element).hasClass(j.ACTIVE),a(this._element).trigger("change"))}}else this._element.setAttribute("aria-pressed",!a(this._element).hasClass(j.ACTIVE));b&&a(this._element).toggleClass(j.ACTIVE)}},{key:"dispose",value:function(){a.removeData(this._element,f),this._element=null}}],[{key:"VERSION",get:function(){return e}},{key:"_jQueryInterface",value:function(b){return this.each(function(){var c=a(this).data(f);c||(c=new d(this),a(this).data(f,c)),"toggle"===b&&c[b]()})}}]),d}();return a(document).on(l.CLICK_DATA_API,k.DATA_TOGGLE_CARROT,function(b){b.preventDefault();var c=b.target;a(c).hasClass(j.BUTTON)||(c=a(c).closest(k.BUTTON)),m._jQueryInterface.call(a(c),"toggle")}).on(l.FOCUS_BLUR_DATA_API,k.DATA_TOGGLE_CARROT,function(b){var c=a(b.target).closest(k.BUTTON)[0];a(c).toggleClass(j.FOCUS,/^focus(in)?$/.test(b.type))}),a.fn[d]=m._jQueryInterface,a.fn[d].Constructor=m,a.fn[d].noConflict=function(){return a.fn[d]=i,m._jQueryInterface},m}(jQuery),function(a){var e="carousel",f="4.0.0",g="bs.carousel",h="."+g,i=".data-api",j=a.fn[e],k=600,l={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0},m={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean"},n={NEXT:"next",PREVIOUS:"prev"},o={SLIDE:"slide"+h,SLID:"slid"+h,KEYDOWN:"keydown"+h,MOUSEENTER:"mouseenter"+h,MOUSELEAVE:"mouseleave"+h,LOAD_DATA_API:"load"+h+i,CLICK_DATA_API:"click"+h+i},p={CAROUSEL:"carousel",ACTIVE:"active",SLIDE:"slide",RIGHT:"right",LEFT:"left",ITEM:"carousel-item"},q={ACTIVE:".active",ACTIVE_ITEM:".active.carousel-item",ITEM:".carousel-item",NEXT_PREV:".next, .prev",INDICATORS:".carousel-indicators",DATA_SLIDE:"[data-slide], [data-slide-to]",DATA_RIDE:'[data-ride="carousel"]'},r=function(){function i(c,d){b(this,i),this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this._config=this._getConfig(d),this._element=a(c)[0],this._indicatorsElement=a(this._element).find(q.INDICATORS)[0],this._addEventListeners()}return c(i,[{key:"next",value:function(){this._isSliding||this._slide(n.NEXT)}},{key:"prev",value:function(){this._isSliding||this._slide(n.PREVIOUS)}},{key:"pause",value:function(b){b||(this._isPaused=!0),a(this._element).find(q.NEXT_PREV)[0]&&d.supportsTransitionEnd()&&(d.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null}},{key:"cycle",value:function(b){b||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._interval=setInterval(a.proxy(this.next,this),this._config.interval))}},{key:"to",value:function(b){var c=this;this._activeElement=a(this._element).find(q.ACTIVE_ITEM)[0];var d=this._getItemIndex(this._activeElement);if(!(b>this._items.length-1||0>b)){if(this._isSliding)return void a(this._element).one(o.SLID,function(){return c.to(b)});if(d==b)return this.pause(),void this.cycle();var e=b>d?n.NEXT:n.PREVIOUS;this._slide(e,this._items[b])}}},{key:"dispose",value:function(){a(this._element).off(h),a.removeData(this._element,g),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null}},{key:"_getConfig",value:function(b){return b=a.extend({},l,b),d.typeCheckConfig(e,b,m),b}},{key:"_addEventListeners",value:function(){this._config.keyboard&&a(this._element).on(o.KEYDOWN,a.proxy(this._keydown,this)),"hover"!=this._config.pause||"ontouchstart"in document.documentElement||a(this._element).on(o.MOUSEENTER,a.proxy(this.pause,this)).on(o.MOUSELEAVE,a.proxy(this.cycle,this))}},{key:"_keydown",value:function(a){if(a.preventDefault(),!/input|textarea/i.test(a.target.tagName))switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}}},{key:"_getItemIndex",value:function(b){return this._items=a.makeArray(a(b).parent().find(q.ITEM)),this._items.indexOf(b)}},{key:"_getItemByDirection",value:function(a,b){var c=a===n.NEXT,d=a===n.PREVIOUS,e=this._getItemIndex(b),f=this._items.length-1,g=d&&0===e||c&&e==f;if(g&&!this._config.wrap)return b;var h=a==n.PREVIOUS?-1:1,i=(e+h)%this._items.length;return-1===i?this._items[this._items.length-1]:this._items[i]}},{key:"_triggerSlideEvent",value:function(b,c){var d=a.Event(o.SLIDE,{relatedTarget:b,direction:c});return a(this._element).trigger(d),d}},{key:"_setActiveIndicatorElement",value:function(b){if(this._indicatorsElement){a(this._indicatorsElement).find(q.ACTIVE).removeClass(p.ACTIVE);var c=this._indicatorsElement.children[this._getItemIndex(b)];c&&a(c).addClass(p.ACTIVE)}}},{key:"_slide",value:function(b,c){var e=this,f=a(this._element).find(q.ACTIVE_ITEM)[0],g=c||f&&this._getItemByDirection(b,f),h=!!this._interval,i=b==n.NEXT?p.LEFT:p.RIGHT;if(g&&a(g).hasClass(p.ACTIVE))return void(this._isSliding=!1);var j=this._triggerSlideEvent(g,i);if(!j.isDefaultPrevented()&&f&&g){this._isSliding=!0,h&&this.pause(),this._setActiveIndicatorElement(g);var l=a.Event(o.SLID,{relatedTarget:g,direction:i});d.supportsTransitionEnd()&&a(this._element).hasClass(p.SLIDE)?(a(g).addClass(b),d.reflow(g),a(f).addClass(i),a(g).addClass(i),a(f).one(d.TRANSITION_END,function(){a(g).removeClass(i).removeClass(b),a(g).addClass(p.ACTIVE),a(f).removeClass(p.ACTIVE).removeClass(b).removeClass(i),e._isSliding=!1,setTimeout(function(){return a(e._element).trigger(l)},0)}).emulateTransitionEnd(k)):(a(f).removeClass(p.ACTIVE),a(g).addClass(p.ACTIVE),this._isSliding=!1,a(this._element).trigger(l)),h&&this.cycle()}}}],[{key:"VERSION",get:function(){return f}},{key:"Default",get:function(){return l}},{key:"_jQueryInterface",value:function(b){return this.each(function(){var c=a(this).data(g),d=a.extend({},l,a(this).data());"object"==typeof b&&a.extend(d,b);var e="string"==typeof b?b:d.slide;c||(c=new i(this,d),a(this).data(g,c)),"number"==typeof b?c.to(b):e?c[e]():d.interval&&(c.pause(),c.cycle())})}},{key:"_dataApiClickHandler",value:function(b){var c=d.getSelectorFromElement(this);if(c){var e=a(c)[0];if(e&&a(e).hasClass(p.CAROUSEL)){var f=a.extend({},a(e).data(),a(this).data()),h=this.getAttribute("data-slide-to");h&&(f.interval=!1),i._jQueryInterface.call(a(e),f),h&&a(e).data(g).to(h),b.preventDefault()}}}}]),i}();return a(document).on(o.CLICK_DATA_API,q.DATA_SLIDE,r._dataApiClickHandler),a(window).on(o.LOAD_DATA_API,function(){a(q.DATA_RIDE).each(function(){var b=a(this);r._jQueryInterface.call(b,b.data())})}),a.fn[e]=r._jQueryInterface,a.fn[e].Constructor=r,a.fn[e].noConflict=function(){return a.fn[e]=j,r._jQueryInterface},r}(jQuery),function(a){var e="collapse",f="4.0.0",g="bs.collapse",h="."+g,i=".data-api",j=a.fn[e],k=600,l={toggle:!0,parent:""},m={toggle:"boolean",parent:"string"},n={SHOW:"show"+h,SHOWN:"shown"+h,HIDE:"hide"+h,HIDDEN:"hidden"+h,CLICK_DATA_API:"click"+h+i},o={IN:"in",COLLAPSE:"collapse",COLLAPSING:"collapsing",COLLAPSED:"collapsed"},p={WIDTH:"width",HEIGHT:"height"},q={ACTIVES:".panel > .in, .panel > .collapsing",DATA_TOGGLE:'[data-toggle="collapse"]'},r=function(){function h(c,d){b(this,h),this._isTransitioning=!1,this._element=c,this._config=this._getConfig(d),this._triggerArray=a.makeArray(a('[data-toggle="collapse"][href="#'+c.id+'"],'+('[data-toggle="collapse"][data-target="#'+c.id+'"]'))),this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}return c(h,[{key:"toggle",value:function(){a(this._element).hasClass(o.IN)?this.hide():this.show()}},{key:"show",value:function(){var b=this;if(!this._isTransitioning&&!a(this._element).hasClass(o.IN)){var c=void 0,e=void 0;if(this._parent&&(c=a.makeArray(a(q.ACTIVES)),c.length||(c=null)),!(c&&(e=a(c).data(g),e&&e._isTransitioning))){var f=a.Event(n.SHOW);if(a(this._element).trigger(f),!f.isDefaultPrevented()){c&&(h._jQueryInterface.call(a(c),"hide"),e||a(c).data(g,null));var i=this._getDimension();a(this._element).removeClass(o.COLLAPSE).addClass(o.COLLAPSING),this._element.style[i]=0,this._element.setAttribute("aria-expanded",!0),this._triggerArray.length&&a(this._triggerArray).removeClass(o.COLLAPSED).attr("aria-expanded",!0),this.setTransitioning(!0);var j=function(){a(b._element).removeClass(o.COLLAPSING).addClass(o.COLLAPSE).addClass(o.IN),b._element.style[i]="",b.setTransitioning(!1),a(b._element).trigger(n.SHOWN)};if(!d.supportsTransitionEnd())return void j();var l="scroll"+(i[0].toUpperCase()+i.slice(1));a(this._element).one(d.TRANSITION_END,j).emulateTransitionEnd(k),this._element.style[i]=this._element[l]+"px"}}}}},{key:"hide",value:function(){var b=this;if(!this._isTransitioning&&a(this._element).hasClass(o.IN)){var c=a.Event(n.HIDE);if(a(this._element).trigger(c),!c.isDefaultPrevented()){var e=this._getDimension(),f=e===p.WIDTH?"offsetWidth":"offsetHeight";this._element.style[e]=this._element[f]+"px",d.reflow(this._element),a(this._element).addClass(o.COLLAPSING).removeClass(o.COLLAPSE).removeClass(o.IN),this._element.setAttribute("aria-expanded",!1),this._triggerArray.length&&a(this._triggerArray).addClass(o.COLLAPSED).attr("aria-expanded",!1),this.setTransitioning(!0);var g=function(){b.setTransitioning(!1),a(b._element).removeClass(o.COLLAPSING).addClass(o.COLLAPSE).trigger(n.HIDDEN)};return this._element.style[e]=0,d.supportsTransitionEnd()?void a(this._element).one(d.TRANSITION_END,g).emulateTransitionEnd(k):g()}}}},{key:"setTransitioning",value:function(a){this._isTransitioning=a}},{key:"dispose",value:function(){a.removeData(this._element,g),this._config=null,this._parent=null,this._element=null,this._triggerArray=null,this._isTransitioning=null}},{key:"_getConfig",value:function(b){return b=a.extend({},l,b),b.toggle=!!b.toggle,d.typeCheckConfig(e,b,m),b}},{key:"_getDimension",value:function(){var b=a(this._element).hasClass(p.WIDTH);return b?p.WIDTH:p.HEIGHT}},{key:"_getParent",value:function(){var b=this,c=a(this._config.parent)[0],d='[data-toggle="collapse"][data-parent="'+this._config.parent+'"]';return a(c).find(d).each(function(a,c){b._addAriaAndCollapsedClass(h._getTargetFromElement(c),[c])}),c}},{key:"_addAriaAndCollapsedClass",value:function(b,c){if(b){var d=a(b).hasClass(o.IN);b.setAttribute("aria-expanded",d),c.length&&a(c).toggleClass(o.COLLAPSED,!d).attr("aria-expanded",d)}}}],[{key:"VERSION",get:function(){return f}},{key:"Default",get:function(){return l}},{key:"_getTargetFromElement",value:function(b){var c=d.getSelectorFromElement(b);return c?a(c)[0]:null}},{key:"_jQueryInterface",value:function(b){return this.each(function(){var c=a(this),d=c.data(g),e=a.extend({},l,c.data(),"object"==typeof b&&b);!d&&e.toggle&&/show|hide/.test(b)&&(e.toggle=!1),d||(d=new h(this,e),c.data(g,d)),"string"==typeof b&&d[b]()})}}]),h}();return a(document).on(n.CLICK_DATA_API,q.DATA_TOGGLE,function(b){b.preventDefault();var c=r._getTargetFromElement(this),d=a(c).data(g),e=d?"toggle":a(this).data();r._jQueryInterface.call(a(c),e)}),a.fn[e]=r._jQueryInterface,a.fn[e].Constructor=r,a.fn[e].noConflict=function(){return a.fn[e]=j,r._jQueryInterface},r}(jQuery),function(a){var e="dropdown",f="4.0.0",g="bs.dropdown",h="."+g,i=".data-api",j=a.fn[e],k={HIDE:"hide"+h,HIDDEN:"hidden"+h,SHOW:"show"+h,SHOWN:"shown"+h,CLICK:"click"+h,CLICK_DATA_API:"click"+h+i,KEYDOWN_DATA_API:"keydown"+h+i},l={BACKDROP:"dropdown-backdrop",DISABLED:"disabled",OPEN:"open"},m={BACKDROP:".dropdown-backdrop",DATA_TOGGLE:'[data-toggle="dropdown"]',FORM_CHILD:".dropdown form",ROLE_MENU:'[role="menu"]',ROLE_LISTBOX:'[role="listbox"]',NAVBAR_NAV:".navbar-nav",VISIBLE_ITEMS:'[role="menu"] li:not(.disabled) a, [role="listbox"] li:not(.disabled) a'},n=function(){function e(a){b(this,e),this._element=a,this._addEventListeners()}return c(e,[{key:"toggle",value:function(){if(!this.disabled&&!a(this).hasClass(l.DISABLED)){var b=e._getParentFromElement(this),c=a(b).hasClass(l.OPEN);if(e._clearMenus(),c)return!1;if("ontouchstart"in document.documentElement&&!a(b).closest(m.NAVBAR_NAV).length){var d=document.createElement("div");d.className=l.BACKDROP,a(d).insertBefore(this),a(d).on("click",e._clearMenus)}var f={relatedTarget:this},g=a.Event(k.SHOW,f);if(a(b).trigger(g),!g.isDefaultPrevented())return this.focus(),this.setAttribute("aria-expanded","true"),a(b).toggleClass(l.OPEN),a(b).trigger(k.SHOWN,f),!1}}},{key:"dispose",value:function(){a.removeData(this._element,g),a(this._element).off(h),this._element=null}},{key:"_addEventListeners",value:function(){a(this._element).on(k.CLICK,this.toggle)}}],[{key:"VERSION",get:function(){return f}},{key:"_jQueryInterface",value:function(b){return this.each(function(){var c=a(this).data(g);c||a(this).data(g,c=new e(this)),"string"==typeof b&&c[b].call(this)})}},{key:"_clearMenus",value:function(b){if(!b||3!==b.which){var c=a(m.BACKDROP)[0];c&&c.parentNode.removeChild(c);for(var d=a.makeArray(a(m.DATA_TOGGLE)),f=0;f<d.length;f++){var g=e._getParentFromElement(d[f]),h={relatedTarget:d[f]};if(a(g).hasClass(l.OPEN)&&!(b&&"click"===b.type&&/input|textarea/i.test(b.target.tagName)&&a.contains(g,b.target))){var i=a.Event(k.HIDE,h);a(g).trigger(i),i.isDefaultPrevented()||(d[f].setAttribute("aria-expanded","false"),a(g).removeClass(l.OPEN).trigger(k.HIDDEN,h))}}}}},{key:"_getParentFromElement",value:function(b){var c=void 0,e=d.getSelectorFromElement(b);return e&&(c=a(e)[0]),c||b.parentNode}},{key:"_dataApiKeydownHandler",value:function(b){if(/(38|40|27|32)/.test(b.which)&&!/input|textarea/i.test(b.target.tagName)&&(b.preventDefault(),b.stopPropagation(),!this.disabled&&!a(this).hasClass(l.DISABLED))){var c=e._getParentFromElement(this),d=a(c).hasClass(l.OPEN);if(!d&&27!==b.which||d&&27===b.which){if(27===b.which){var f=a(c).find(m.DATA_TOGGLE)[0];a(f).trigger("focus")}return void a(this).trigger("click")}var g=a.makeArray(a(m.VISIBLE_ITEMS));if(g=g.filter(function(a){return a.offsetWidth||a.offsetHeight}),g.length){var h=g.indexOf(b.target);38===b.which&&h>0&&h--,40===b.which&&h<g.length-1&&h++,~h||(h=0),g[h].focus()}}}}]),e}();return a(document).on(k.KEYDOWN_DATA_API,m.DATA_TOGGLE,n._dataApiKeydownHandler).on(k.KEYDOWN_DATA_API,m.ROLE_MENU,n._dataApiKeydownHandler).on(k.KEYDOWN_DATA_API,m.ROLE_LISTBOX,n._dataApiKeydownHandler).on(k.CLICK_DATA_API,n._clearMenus).on(k.CLICK_DATA_API,m.DATA_TOGGLE,n.prototype.toggle).on(k.CLICK_DATA_API,m.FORM_CHILD,function(a){a.stopPropagation()}),a.fn[e]=n._jQueryInterface,a.fn[e].Constructor=n,a.fn[e].noConflict=function(){return a.fn[e]=j,n._jQueryInterface},n}(jQuery),function(a){var e="modal",f="4.0.0",g="bs.modal",h="."+g,i=".data-api",j=a.fn[e],k=300,l=150,m={backdrop:!0,keyboard:!0,focus:!0,show:!0},n={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean",show:"boolean"},o={HIDE:"hide"+h,HIDDEN:"hidden"+h,SHOW:"show"+h,SHOWN:"shown"+h,FOCUSIN:"focusin"+h,RESIZE:"resize"+h,CLICK_DISMISS:"click.dismiss"+h,KEYDOWN_DISMISS:"keydown.dismiss"+h,MOUSEUP_DISMISS:"mouseup.dismiss"+h,MOUSEDOWN_DISMISS:"mousedown.dismiss"+h,CLICK_DATA_API:"click"+h+i},p={BACKDROP:"modal-backdrop",OPEN:"modal-open",FADE:"fade",IN:"in"},q={DIALOG:".modal-dialog",DATA_TOGGLE:'[data-toggle="modal"]',DATA_DISMISS:'[data-dismiss="modal"]',SCROLLBAR_MEASURER:"modal-scrollbar-measure"},r=function(){function i(c,d){b(this,i),this._config=this._getConfig(d),this._element=c,this._dialog=a(c).find(q.DIALOG)[0],this._backdrop=null,this._isShown=!1,this._isBodyOverflowing=!1,this._ignoreBackdropClick=!1,this._originalBodyPadding=0,this._scrollbarWidth=0}return c(i,[{key:"toggle",value:function(a){return this._isShown?this.hide():this.show(a)}},{key:"show",value:function(b){var c=this,d=a.Event(o.SHOW,{relatedTarget:b});a(this._element).trigger(d),this._isShown||d.isDefaultPrevented()||(this._isShown=!0,this._checkScrollbar(),this._setScrollbar(),a(document.body).addClass(p.OPEN),this._setEscapeEvent(),this._setResizeEvent(),a(this._element).on(o.CLICK_DISMISS,q.DATA_DISMISS,a.proxy(this.hide,this)),a(this._dialog).on(o.MOUSEDOWN_DISMISS,function(){a(c._element).one(o.MOUSEUP_DISMISS,function(b){a(b.target).is(c._element)&&(that._ignoreBackdropClick=!0)})}),this._showBackdrop(a.proxy(this._showElement,this,b)))}},{key:"hide",value:function(b){b&&b.preventDefault();var c=a.Event(o.HIDE);a(this._element).trigger(c),this._isShown&&!c.isDefaultPrevented()&&(this._isShown=!1,this._setEscapeEvent(),this._setResizeEvent(),a(document).off(o.FOCUSIN),a(this._element).removeClass(p.IN),a(this._element).off(o.CLICK_DISMISS),a(this._dialog).off(o.MOUSEDOWN_DISMISS),d.supportsTransitionEnd()&&a(this._element).hasClass(p.FADE)?a(this._element).one(d.TRANSITION_END,a.proxy(this._hideModal,this)).emulateTransitionEnd(k):this._hideModal())}},{key:"dispose",value:function(){a.removeData(this._element,g),a(window).off(h),a(document).off(h),a(this._element).off(h),a(this._backdrop).off(h),this._config=null,this._element=null,this._dialog=null,this._backdrop=null,this._isShown=null,this._isBodyOverflowing=null,this._ignoreBackdropClick=null,this._originalBodyPadding=null,this._scrollbarWidth=null}},{key:"_getConfig",value:function(b){return b=a.extend({},m,b),d.typeCheckConfig(e,b,n),b}},{key:"_showElement",value:function(b){var c=this,e=d.supportsTransitionEnd()&&a(this._element).hasClass(p.FADE);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.scrollTop=0,e&&d.reflow(this._element),a(this._element).addClass(p.IN),this._config.focus&&this._enforceFocus();var f=a.Event(o.SHOWN,{relatedTarget:b}),g=function(){c._config.focus&&c._element.focus(),a(c._element).trigger(f)};e?a(this._dialog).one(d.TRANSITION_END,g).emulateTransitionEnd(k):g()}},{key:"_enforceFocus",value:function(){var b=this;a(document).off(o.FOCUSIN).on(o.FOCUSIN,function(c){b._element===c.target||a(b._element).has(c.target).length||b._element.focus()})}},{key:"_setEscapeEvent",value:function(){var b=this;this._isShown&&this._config.keyboard?a(this._element).on(o.KEYDOWN_DISMISS,function(a){27===a.which&&b.hide()}):this._isShown||a(this._element).off(o.KEYDOWN_DISMISS)}},{key:"_setResizeEvent",value:function(){this._isShown?a(window).on(o.RESIZE,a.proxy(this._handleUpdate,this)):a(window).off(o.RESIZE)}},{key:"_hideModal",value:function(){var b=this;this._element.style.display="none",this._showBackdrop(function(){a(document.body).removeClass(p.OPEN),b._resetAdjustments(),b._resetScrollbar(),a(b._element).trigger(o.HIDDEN)})}},{key:"_removeBackdrop",value:function(){this._backdrop&&(a(this._backdrop).remove(),this._backdrop=null)}},{key:"_showBackdrop",value:function(b){var c=this,e=a(this._element).hasClass(p.FADE)?p.FADE:"";if(this._isShown&&this._config.backdrop){var f=d.supportsTransitionEnd()&&e;if(this._backdrop=document.createElement("div"),this._backdrop.className=p.BACKDROP,e&&a(this._backdrop).addClass(e),a(this._backdrop).appendTo(this.$body),a(this._element).on(o.CLICK_DISMISS,function(a){return c._ignoreBackdropClick?void(c._ignoreBackdropClick=!1):void(a.target===a.currentTarget&&("static"===c._config.backdrop?c._element.focus():c.hide()))}),f&&d.reflow(this._backdrop),a(this._backdrop).addClass(p.IN),!b)return;if(!f)return void b();a(this._backdrop).one(d.TRANSITION_END,b).emulateTransitionEnd(l)}else if(!this._isShown&&this._backdrop){a(this._backdrop).removeClass(p.IN);var g=function(){c._removeBackdrop(),b&&b()};d.supportsTransitionEnd()&&a(this._element).hasClass(p.FADE)?a(this._backdrop).one(d.TRANSITION_END,g).emulateTransitionEnd(l):g()}else b&&b()}},{key:"_handleUpdate",value:function(){this._adjustDialog()}},{key:"_adjustDialog",value:function(){var a=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&a&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!a&&(this._element.style.paddingRight=this._scrollbarWidth+"px")}},{key:"_resetAdjustments",value:function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}},{key:"_checkScrollbar",value:function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this._isBodyOverflowing=document.body.clientWidth<a,this._scrollbarWidth=this._getScrollbarWidth()}},{key:"_setScrollbar",value:function(){var b=parseInt(a(document.body).css("padding-right")||0,10);this._originalBodyPadding=document.body.style.paddingRight||"",this._isBodyOverflowing&&(document.body.style.paddingRight=b+this._scrollbarWidth+"px")}},{key:"_resetScrollbar",value:function(){document.body.style.paddingRight=this._originalBodyPadding}},{key:"_getScrollbarWidth",value:function(){var a=document.createElement("div");a.className=q.SCROLLBAR_MEASURER,document.body.appendChild(a);var b=a.offsetWidth-a.clientWidth;return document.body.removeChild(a),b}}],[{key:"VERSION",get:function(){return f}},{key:"Default",get:function(){return m}},{key:"_jQueryInterface",value:function(b,c){return this.each(function(){var d=a(this).data(g),e=a.extend({},i.Default,a(this).data(),"object"==typeof b&&b);d||(d=new i(this,e),a(this).data(g,d)),"string"==typeof b?d[b](c):e.show&&d.show(c)})}}]),i}();return a(document).on(o.CLICK_DATA_API,q.DATA_TOGGLE,function(b){var c=this,e=void 0,f=d.getSelectorFromElement(this);f&&(e=a(f)[0]);var h=a(e).data(g)?"toggle":a.extend({},a(e).data(),a(this).data());"A"===this.tagName&&b.preventDefault();var i=a(e).one(o.SHOW,function(b){b.isDefaultPrevented()||i.one(o.HIDDEN,function(){a(c).is(":visible")&&c.focus()})});r._jQueryInterface.call(a(e),h,this)}),a.fn[e]=r._jQueryInterface,a.fn[e].Constructor=r,a.fn[e].noConflict=function(){return a.fn[e]=j,r._jQueryInterface},r}(jQuery),function(a){var e="scrollspy",f="4.0.0",g="bs.scrollspy",h="."+g,i=".data-api",j=a.fn[e],k={offset:10,method:"auto",target:""},l={offset:"number",method:"string",target:"(string|element)"},m={ACTIVATE:"activate"+h,SCROLL:"scroll"+h,LOAD_DATA_API:"load"+h+i},n={DROPDOWN_MENU:"dropdown-menu",ACTIVE:"active"},o={DATA_SPY:'[data-spy="scroll"]',ACTIVE:".active",LI:"li",LI_DROPDOWN:"li.dropdown",NAV_ANCHORS:".nav li > a"},p={OFFSET:"offset",POSITION:"position"},q=function(){function i(c,d){b(this,i),this._element=c,this._scrollElement="BODY"===c.tagName?window:c,this._config=this._getConfig(d),this._selector=""+this._config.target+" "+o.NAV_ANCHORS,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,a(this._scrollElement).on(m.SCROLL,a.proxy(this._process,this)),this.refresh(),this._process()}return c(i,[{key:"refresh",value:function(){var b=this,c=this._scrollElement!==this._scrollElement.window?p.POSITION:p.OFFSET,e="auto"===this._config.method?c:this._config.method,f=e===p.POSITION?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight();var g=a.makeArray(a(this._selector));g.map(function(b){var c=void 0,g=d.getSelectorFromElement(b);return g&&(c=a(g)[0]),c&&(c.offsetWidth||c.offsetHeight)?[a(c)[e]().top+f,g]:void 0}).filter(function(a){return a}).sort(function(a,b){return a[0]-b[0]}).forEach(function(a){b._offsets.push(a[0]),b._targets.push(a[1])})}},{key:"dispose",value:function(){a.removeData(this._element,g),a(this._scrollElement).off(h),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null}},{key:"_getConfig",value:function(b){if(b=a.extend({},k,b),"string"!=typeof b.target){var c=a(b.target).attr("id");c||(c=d.getUID(e),a(b.target).attr("id",c)),b.target="#"+c}return d.typeCheckConfig(e,b,l),b}},{key:"_getScrollTop",value:function(){return this._scrollElement===window?this._scrollElement.scrollY:this._scrollElement.scrollTop}},{key:"_getScrollHeight",value:function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)}},{key:"_process",value:function(){var a=this._getScrollTop()+this._config.offset,b=this._getScrollHeight(),c=this._config.offset+b-this._scrollElement.offsetHeight;if(this._scrollHeight!==b&&this.refresh(),a>=c){var d=this._targets[this._targets.length-1];this._activeTarget!==d&&this._activate(d)}if(this._activeTarget&&a<this._offsets[0])return this._activeTarget=null,void this._clear();for(var e=this._offsets.length;e--;){var f=this._activeTarget!==this._targets[e]&&a>=this._offsets[e]&&(void 0===this._offsets[e+1]||a<this._offsets[e+1]);f&&this._activate(this._targets[e])}}},{key:"_activate",value:function(b){this._activeTarget=b,this._clear();for(var c=""+this._selector+'[data-target="'+b+'"],'+(""+this._selector+'[href="'+b+'"]'),d=a(c).parents(o.LI),e=d.length;e--;){a(d[e]).addClass(n.ACTIVE);var f=d[e].parentNode;if(f&&a(f).hasClass(n.DROPDOWN_MENU)){var g=a(f).closest(o.LI_DROPDOWN)[0];a(g).addClass(n.ACTIVE)}}a(this._scrollElement).trigger(m.ACTIVATE,{relatedTarget:b})}},{key:"_clear",value:function(){for(var b=a(this._selector).parentsUntil(this._config.target,o.ACTIVE),c=b.length;c--;)a(b[c]).removeClass(n.ACTIVE)}}],[{key:"VERSION",get:function(){return f}},{key:"Default",get:function(){return k}},{key:"_jQueryInterface",value:function(b){return this.each(function(){var c=a(this).data(g),d="object"==typeof b&&b||null;c||(c=new i(this,d),a(this).data(g,c)),"string"==typeof b&&c[b]()})}}]),i}();return a(window).on(m.LOAD_DATA_API,function(){for(var b=a.makeArray(a(o.DATA_SPY)),c=b.length;c--;){var d=a(b[c]);q._jQueryInterface.call(d,d.data())}}),a.fn[e]=q._jQueryInterface,a.fn[e].Constructor=q,a.fn[e].noConflict=function(){return a.fn[e]=j,q._jQueryInterface},q}(jQuery),function(a){var e="tab",f="4.0.0",g="bs.tab",h="."+g,i=".data-api",j=a.fn[e],k=150,l={HIDE:"hide"+h,HIDDEN:"hidden"+h,SHOW:"show"+h,SHOWN:"shown"+h,CLICK_DATA_API:"click"+h+i},m={DROPDOWN_MENU:"dropdown-menu",ACTIVE:"active",FADE:"fade",IN:"in"},n={A:"a",LI:"li",LI_DROPDOWN:"li.dropdown",UL:"ul:not(.dropdown-menu)",FADE_CHILD:"> .fade",ACTIVE:".active",ACTIVE_CHILD:"> .active",DATA_TOGGLE:'[data-toggle="tab"], [data-toggle="pill"]',DROPDOWN_ACTIVE_CHILD:"> .dropdown-menu > .active"},o=function(){function e(a){b(this,e),this._element=a}return c(e,[{key:"show",value:function(){var b=this;if(!this._element.parentNode||this._element.parentNode.nodeType!=Node.ELEMENT_NODE||!a(this._element).parent().hasClass(m.ACTIVE)){var c=void 0,e=void 0,f=a(this._element).closest(n.UL)[0],g=d.getSelectorFromElement(this._element);f&&(e=a.makeArray(a(f).find(n.ACTIVE)),e=e[e.length-1],e&&(e=a(e).find(n.A)[0]));var h=a.Event(l.HIDE,{relatedTarget:this._element}),i=a.Event(l.SHOW,{relatedTarget:e});if(e&&a(e).trigger(h),a(this._element).trigger(i),!i.isDefaultPrevented()&&!h.isDefaultPrevented()){g&&(c=a(g)[0]),this._activate(a(this._element).closest(n.LI)[0],f);var j=function(){var c=a.Event(l.HIDDEN,{relatedTarget:b._element}),d=a.Event(l.SHOWN,{relatedTarget:e});a(e).trigger(c),a(b._element).trigger(d)};c?this._activate(c,c.parentNode,j):j()}}}},{key:"dispose",value:function(){a.removeClass(this._element,g),this._element=null}},{key:"_activate",value:function(b,c,e){var f=a(c).find(n.ACTIVE_CHILD)[0],g=e&&d.supportsTransitionEnd()&&(f&&a(f).hasClass(m.FADE)||!!a(c).find(n.FADE_CHILD)[0]),h=a.proxy(this._transitionComplete,this,b,f,g,e); -(function($){var h,k,l={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};function m(a){var b=a.getAttribute("data-target");b||(b=a.getAttribute("href")||"",b=/^#[a-z]/i.test(b)?b:null);return b}function aa(a){do a+=~~(1E6*Math.random());while(document.getElementById(a));return a}function ba(){return{ha:k.end,ia:k.end,handle:function(a){if($(a.target).is(this))return a.handleObj.handler.apply(this,arguments)}}} -function n(a){(new Function("bs","return bs"))(a.offsetHeight)}function ca(){if(window.QUnit)return!1;var a=document.createElement("bootstrap"),b;for(b in l)if(void 0!==a.style[b])return{end:l[b]};return!1}$.fn.f=function(a){var b=!1;$(this).one("bsTransitionEnd",function(){b=!0});var c=function(){b||$(this).trigger(k.end)}.bind(this);setTimeout(c,a)};$(function(){(k=ca())&&($.event.special.bsTransitionEnd=ba())});function p(a){if(a)$(a).on("click",'[data-dismiss="alert"]',q(this))}p.VERSION="4.0.0";var da=$.fn.alert;function s(a){return this.each(function(){var b=$(this),c=b.data("bs.alert");c||(c=new p(this),b.data("bs.alert",c));if("close"===a)c[a](this)})}function q(a){return function(b){b&&b.preventDefault();a.close(this)}} -p.prototype.close=function(a){var b=!1,c=m(a);c&&(b=$(c)[0]);b||(b=$(a).closest(".alert")[0]);a=b;b=$.Event("close.bs.alert");$(a).trigger(b);b.isDefaultPrevented()||($(a).removeClass("in"),k&&$(a).hasClass("fade")?$(a).one("bsTransitionEnd",this.N.bind(this,a)).f(150):this.N(a))};p.prototype.N=function(a){$(a).detach().trigger("closed.bs.alert").remove()};$.fn.alert=s;$.fn.alert.Constructor=p;$.fn.alert.noConflict=function(){$.fn.alert=da;return s}; -$(document).on("click.bs.alert.data-api",'[data-dismiss="alert"]',q(new p));function t(a){this.a=a}t.VERSION="4.0.0";var ea=$.fn.button;function u(a){return this.each(function(){var b=$(this).data("bs.button");b||(b=new t(this),$(this).data("bs.button",b));if("toggle"===a)b[a]()})} -t.prototype.toggle=function(){var a=!0,b=$(this.a).closest('[data-toggle="buttons"]')[0];if(b){var c=$(this.a).find("input")[0];c&&("radio"==c.type&&(c.checked&&$(this.a).hasClass("active")?a=!1:(b=$(b).find(".active")[0])&&$(b).removeClass("active")),a&&(c.checked=!$(this.a).hasClass("active"),$(this.a).trigger("change")))}else this.a.setAttribute("aria-pressed",!$(this.a).hasClass("active"));a&&$(this.a).toggleClass("active")};$.fn.button=u;$.fn.button.Constructor=t; -$.fn.button.noConflict=function(){$.fn.button=ea;return this};$(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(a){a.preventDefault();a=a.target;$(a).hasClass("btn")||(a=$(a).closest(".btn"));u.call($(a),"toggle")}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(a){var b=$(a.target).closest(".btn")[0];$(b).toggleClass("focus",/^focus(in)?$/.test(a.type))});function v(a,b){this.a=$(a)[0];this.F=$(this.a).find(fa)[0];this.c=b||null;this.l=this.G=!1;this.h=this.M=this.k=null;if(this.c.keyboard)$(this.a).on("keydown.bs.carousel",this.Y.bind(this));if("hover"==this.c.pause&&!("ontouchstart"in document.documentElement))$(this.a).on("mouseenter.bs.carousel",this.pause.bind(this)).on("mouseleave.bs.carousel",this.cycle.bind(this))}v.VERSION="4.0.0";v.Defaults={interval:5E3,pause:"hover",wrap:!0,keyboard:!0,slide:!1};var fa=".carousel-indicators",ga=$.fn.carousel; -function w(a){return this.each(function(){var b=$(this).data("bs.carousel"),c=$.extend({},v.Defaults,$(this).data(),"object"==typeof a&&a),d="string"==typeof a?a:c.ja;b||(b=new v(this,c),$(this).data("bs.carousel",b));if("number"==typeof a)x(b,a);else if(d)b[d]();else c.interval&&(b.pause(),b.cycle())})}v.prototype.next=function(){this.l||z(this,"next")};v.prototype.prev=function(){this.l||z(this,"prev")}; -v.prototype.pause=function(a){a||(this.G=!0);$(this.a).find(".next, .prev")[0]&&k&&($(this.a).trigger(k.end),this.cycle(!0));clearInterval(this.k);this.k=null};v.prototype.cycle=function(a){a||(this.G=!1);this.k&&(clearInterval(this.k),this.k=null);this.c.interval&&!this.G&&(this.k=setInterval(this.next.bind(this),this.c.interval))};v.prototype.getConfig=function(){return this.c}; -function x(a,b){a.M=$(a.a).find(".active.carousel-item")[0];var c=A(a,a.M);if(!(b>a.h.length-1||0>b))if(a.l)$(a.a).one("slid.bs.carousel",function(){x(this,b)}.bind(a));else c==b?(a.pause(),a.cycle()):z(a,b>c?"next":"prev",a.h[b])}v.prototype.Y=function(a){a.preventDefault();if(!/input|textarea/i.test(a.target.tagName))switch(a.which){case 37:this.prev();break;case 39:this.next()}};function A(a,b){a.h=$.makeArray($(b).parent().find(".carousel-item"));return a.h.indexOf(b)} -function ha(a,b,c){var d=A(a,c);if(("prev"===b&&0===d||"next"===b&&d==a.h.length-1)&&!a.c.wrap)return c;b=(d+("prev"==b?-1:1))%a.h.length;return-1===b?a.h[a.h.length-1]:a.h[b]}function ia(a,b,c){b=$.Event("slide.bs.carousel",{relatedTarget:b,direction:c});$(a.a).trigger(b);return b}function ja(a,b){if(a.F){$(a.F).find(".active").removeClass("active");var c=a.F.children[A(a,b)];c&&$(c).addClass("active")}} -function z(a,b,c){var d=$(a.a).find(".active.carousel-item")[0],e=c||d&&ha(a,b,d);c=!!a.k;var f="next"==b?"left":"right";if(e&&$(e).hasClass("active"))a.l=!1;else if(!ia(a,e,f).isDefaultPrevented()&&d&&e){a.l=!0;c&&a.pause();ja(a,e);var g=$.Event("slid.bs.carousel",{relatedTarget:e,direction:f});k&&$(a.a).hasClass("slide")?($(e).addClass(b),n(e),$(d).addClass(f),$(e).addClass(f),$(d).one("bsTransitionEnd",function(){$(e).removeClass(f).removeClass(b);$(e).addClass("active");$(d).removeClass("active").removeClass(b).removeClass(f); -this.l=!1;setTimeout(function(){$(this.a).trigger(g)}.bind(this),0)}.bind(a)).f(600)):($(d).removeClass("active"),$(e).addClass("active"),a.l=!1,$(a.a).trigger(g));c&&a.cycle()}}$.fn.carousel=w;$.fn.carousel.Constructor=v;$.fn.carousel.noConflict=function(){$.fn.carousel=ga;return this}; -$(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(a){var b=m(this);if(b&&(b=$(b)[0])&&$(b).hasClass("carousel")){var c=$.extend({},$(b).data(),$(this).data()),d=this.getAttribute("data-slide-to");d&&(c.interval=!1);w.call($(b),c);d&&x($(b).data("bs.carousel"),d);a.preventDefault()}});$(window).on("load",function(){$('[data-ride="carousel"]').each(function(){var a=$(this);w.call(a,a.data())})});function B(a,b){this.a=a;this.c=$.extend({},B.Defaults,b);this.o="string"==typeof this.c.trigger?$(this.c.trigger)[0]:this.c.trigger;this.A=!1;var c;if(this.c.parent){var d='[data-toggle="collapse"][data-parent="'+this.c.parent+'"]';c=$(this.c.parent)[0];for(var d=$.makeArray($(c).find(d)),e=0;e<d.length;e++)C(D(d[e]),d[e])}else c=null;this.Z=c;this.c.parent||C(this.a,this.o);this.c.toggle&&this.toggle()}B.VERSION="4.0.0";B.Defaults={toggle:!0,trigger:'[data-toggle="collapse"]',parent:null}; -var ka=$.fn.collapse;function E(a){return this.each(function(){var b=$(this),c=b.data("bs.collapse"),d=$.extend({},B.Defaults,b.data(),"object"==typeof a&&a);!c&&d.toggle&&"show"==a&&(d.toggle=!1);c||(c=new B(this,d),b.data("bs.collapse",c));if("string"==typeof a)c[a]()})}function D(a){return(a=m(a))?$(a)[0]:null}B.prototype.toggle=function(){$(this.a).hasClass("in")?this.hide():this.show()}; -B.prototype.show=function(){if(!this.A&&!$(this.a).hasClass("in")){var a,b;this.Z&&(b=$.makeArray($(".panel > .in, .panel > .collapsing")),b.length||(b=null));if(b&&(a=$(b).data("bs.collapse"))&&a.A)return;var c=$.Event("show.bs.collapse");$(this.a).trigger(c);if(!c.isDefaultPrevented()){b&&(E.call($(b),"hide"),a||$(b).data("bs.collapse",null));var d=F(this);$(this.a).removeClass("collapse").addClass("collapsing");this.a.style[d]=0;this.a.setAttribute("aria-expanded",!0);this.o&&($(this.o).removeClass("collapsed"), -this.o.setAttribute("aria-expanded",!0));this.setTransitioning(!0);a=function(){$(this.a).removeClass("collapsing").addClass("collapse").addClass("in");this.a.style[d]="";this.setTransitioning(!1);$(this.a).trigger("shown.bs.collapse")}.bind(this);k?(b="scroll"+(d[0].toUpperCase()+d.slice(1)),$(this.a).one("bsTransitionEnd",a).f(600),this.a.style[d]=this.a[b]+"px"):a()}}}; -B.prototype.hide=function(){if(!this.A&&$(this.a).hasClass("in")){var a=$.Event("hide.bs.collapse");$(this.a).trigger(a);if(!a.isDefaultPrevented()){a=F(this);this.a.style[a]=this.a["width"===a?"offsetWidth":"offsetHeight"]+"px";n(this.a);$(this.a).addClass("collapsing").removeClass("collapse").removeClass("in");this.a.setAttribute("aria-expanded",!1);this.o&&($(this.o).addClass("collapsed"),this.o.setAttribute("aria-expanded",!1));this.setTransitioning(!0);var b=function(){this.setTransitioning(!1); -$(this.a).removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")}.bind(this);this.a.style[a]=0;if(!k)return b();$(this.a).one("bsTransitionEnd",b).f(600)}}};B.prototype.setTransitioning=function(a){this.A=a};function F(a){return $(a.a).hasClass("width")?"width":"height"}function C(a,b){if(a){var c=$(a).hasClass("in");a.setAttribute("aria-expanded",c);b&&(b.setAttribute("aria-expanded",c),$(b).toggleClass("collapsed",!c))}}$.fn.collapse=E;$.fn.collapse.Constructor=B; -$.fn.collapse.noConflict=function(){$.fn.collapse=ka;return this};$(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(a){a.preventDefault();a=D(this);var b=$(a).data("bs.collapse")?"toggle":$.extend({},$(this).data(),{trigger:this});E.call($(a),b)});function G(a){$(a).on("click.bs.dropdown",this.toggle)}G.VERSION="4.0.0";var la=$.fn.dropdown; -function H(a){if(!a||3!=a.which){(a=$(".dropdown-backdrop")[0])&&a.parentNode.removeChild(a);a=$.makeArray($('[data-toggle="dropdown"]'));for(var b=0;b<a.length;b++){var c=I(a[b]),d={relatedTarget:a[b]};if($(c).hasClass("open")){var e=$.Event("hide.bs.dropdown",d);$(c).trigger(e);e.isDefaultPrevented()||(a[b].setAttribute("aria-expanded","false"),$(c).removeClass("open").trigger("hidden.bs.dropdown",d))}}}}function I(a){var b=m(a);if(b)var c=$(b)[0];return c||a.parentNode} -function J(a){if(/(38|40|27|32)/.test(a.which)&&!/input|textarea/i.test(a.target.tagName)&&(a.preventDefault(),a.stopPropagation(),!this.disabled&&!$(this).hasClass("disabled"))){var b=I(this),c=$(b).hasClass("open");!c&&27!=a.which||c&&27==a.which?(27==a.which&&(a=$(b).find('[data-toggle="dropdown"]')[0],$(a).trigger("focus")),$(this).trigger("click")):(b=$.makeArray($('[role="menu"] li:not(.divider) a, [role="listbox"] li:not(.divider) a')),b=b.filter(function(a){return a.offsetWidth||a.offsetHeight}), -b.length&&(c=b.indexOf(a.target),38==a.which&&0<c&&c--,40==a.which&&c<b.length-1&&c++,~c||(c=0),b[c].focus()))}} -G.prototype.toggle=function(){if(!this.disabled&&!$(this).hasClass("disabled")){var a=I(this),b=$(a).hasClass("open");H();if(b)return!1;"ontouchstart"in document.documentElement&&!$(a).closest(".navbar-nav").length&&(b=document.createElement("div"),b.className="dropdown-backdrop",this.parentNode.insertBefore(this,b),$(b).on("click",H));var b={relatedTarget:this},c=$.Event("show.bs.dropdown",b);$(a).trigger(c);if(!c.isDefaultPrevented())return this.focus(),this.setAttribute("aria-expanded","true"), -$(a).toggleClass("open"),$(a).trigger("shown.bs.dropdown",b),!1}};$.fn.dropdown=function(a){return this.each(function(){var b=$(this).data("bs.dropdown");b||$(this).data("bs.dropdown",b=new G(this));"string"===typeof a&&b[a].call(this)})};$.fn.dropdown.Constructor=G;$.fn.dropdown.noConflict=function(){$.fn.dropdown=la;return this}; -$(document).on("click.bs.dropdown.data-api",H).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",'[data-toggle="dropdown"]',G.prototype.toggle).on("keydown.bs.dropdown.data-api",'[data-toggle="dropdown"]',J).on("keydown.bs.dropdown.data-api",'[role="menu"]',J).on("keydown.bs.dropdown.data-api",'[role="listbox"]',J);function K(a,b){this.c=b;this.a=a;this.d=null;this.w=this.g=!1;this.B=0}K.VERSION="4.0.0";K.Defaults={backdrop:!0,keyboard:!0,show:!0};var ma=$.fn.modal;function L(a,b){return this.each(function(){var c=$(this).data("bs.modal"),d=$.extend({},K.Defaults,$(this).data(),"object"==typeof a&&a);c||(c=new K(this,d),$(this).data("bs.modal",c));if("string"==typeof a)c[a](b);else d.show&&c.show(b)})}K.prototype.toggle=function(a){return this.g?this.hide():this.show(a)}; -K.prototype.show=function(a){var b=$.Event("show.bs.modal",{relatedTarget:a});$(this.a).trigger(b);if(!this.g&&!b.isDefaultPrevented()){this.g=!0;this.w=document.body.scrollHeight>document.documentElement.clientHeight;b=document.createElement("div");b.className="modal-scrollbar-measure";document.body.appendChild(b);var c=b.offsetWidth-b.clientWidth;document.body.removeChild(b);this.B=c;b=parseInt($(document.body).css("padding-right")||0,10);this.w&&(document.body.style.paddingRight=b+this.B+"px"); -$(document.body).addClass("modal-open");M(this);N(this);$(this.a).on("click.dismiss.bs.modal",'[data-dismiss="modal"]',this.hide.bind(this));O(this,this.$.bind(this,a))}}; -K.prototype.hide=function(a){a&&a.preventDefault();a=$.Event("hide.bs.modal");$(this.a).trigger(a);this.g&&!a.isDefaultPrevented()&&(this.g=!1,M(this),N(this),$(document).off("focusin.bs.modal"),$(this.a).removeClass("in"),this.a.setAttribute("aria-hidden",!0),$(this.a).off("click.dismiss.bs.modal"),k&&$(this.a).hasClass("fade")?$(this.a).one("bsTransitionEnd",this.P.bind(this)).f(300):this.P())}; -K.prototype.$=function(a){var b=k&&$(this.a).hasClass("fade");this.a.parentNode&&this.a.parentNode.nodeType==Node.ELEMENT_NODE||document.body.appendChild(this.a);this.a.style.display="block";this.a.scrollTop=0;this.c.backdrop&&P(this);b&&n(this.a);$(this.a).addClass("in");this.a.setAttribute("aria-hidden",!1);na(this);var c=$.Event("shown.bs.modal",{relatedTarget:a});a=function(){this.a.focus();$(this.a).trigger(c)}.bind(this);b?(b=$(this.a).find(".modal-dialog")[0],$(b).one("bsTransitionEnd",a).f(300)): -a()};function na(a){$(document).off("focusin.bs.modal").on("focusin.bs.modal",function(a){this.a===a.target||$(this.a).has(a.target).length||this.a.focus()}.bind(a))}function M(a){if(a.g&&a.c.keyboard)$(a.a).on("keydown.dismiss.bs.modal",function(a){27===a.which&&this.hide()}.bind(a));else a.g||$(a.a).off("keydown.dismiss.bs.modal")}function N(a){if(a.g)$(window).on("resize.bs.modal",a.X.bind(a));else $(window).off("resize.bs.modal")} -K.prototype.P=function(){this.a.style.display="none";O(this,function(){$(document.body).removeClass("modal-open");this.a.style.paddingLeft="";this.a.style.paddingRight="";document.body.style.paddingRight="";$(this.a).trigger("hidden.bs.modal")}.bind(this))}; -function O(a,b){var c=$(a.a).hasClass("fade")?"fade":"";if(a.g&&a.c.backdrop){var d=k&&c;a.d=document.createElement("div");a.d.className="modal-backdrop";c&&$(a.d).addClass(c);$(a.a).prepend(a.d);$(a.d).on("click.dismiss.bs.modal",function(a){a.target===a.currentTarget&&("static"===this.c.backdrop?this.a.focus():this.hide())}.bind(a));d&&n(a.d);$(a.d).addClass("in");b&&(d?$(a.d).one("bsTransitionEnd",b).f(150):b())}else!a.g&&a.d?($(a.d).removeClass("in"),c=function(){this.d&&(this.d.parentNode.removeChild(this.d), -this.d=null);b&&b()}.bind(a),k&&$(a.a).hasClass("fade")?$(a.d).one("bsTransitionEnd",c).f(150):c()):b&&b()}K.prototype.X=function(){this.c.backdrop&&P(this);var a=this.a.scrollHeight>document.documentElement.clientHeight;!this.w&&a&&(this.a.style.paddingLeft=this.B+"px");this.w&&!a&&(this.a.style.paddingRight=this.B+"px")};function P(a){a.d.style.height=0;a.d.style.height=a.a.scrollHeight+"px"}$.fn.modal=L;$.fn.modal.Constructor=K;$.fn.modal.noConflict=function(){$.fn.modal=ma;return this}; -$(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(a){var b=m(this);if(b)var c=$(b)[0];b=$(c).data("bs.modal")?"toggle":$.extend({},$(c).data(),$(this).data());"A"==this.tagName&&a.preventDefault();var d=$(c).one("show.bs.modal",function(a){if(!a.isDefaultPrevented())d.one("hidden.bs.modal",function(){$(this).is(":visible")&&this.focus()}.bind(this))}.bind(this));L.call($(c),b,this)});function Q(a,b){this.e="BODY"==a.tagName?window:a;this.c=$.extend({},Q.Defaults,b);this.C=(this.c.target||"")+" .nav li > a";this.m=[];this.p=[];this.s=null;this.R=0;$(this.e).on("scroll.bs.scrollspy",this.Q.bind(this));this.refresh();this.Q()}Q.VERSION="4.0.0";Q.Defaults={offset:10};var oa=$.fn.scrollspy;function R(a){return this.each(function(){var b=$(this).data("bs.scrollspy"),c="object"===typeof a&&a||null;b||(b=new Q(this,c),$(this).data("bs.scrollspy",b));if("string"===typeof a)b[a]()})} -Q.prototype.refresh=function(){var a="offset",b=0;this.e!==this.e.window&&(a="position",b=this.e===window?this.e.scrollY:this.e.scrollTop);this.m=[];this.p=[];this.R=this.e.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight);$.makeArray($(this.C)).map(function(c){var d;(c=m(c))&&(d=$(c)[0]);if(d&&(d.offsetWidth||d.offsetHeight))return[$(d)[a]().top+b,c]}).filter(function(a){return a}).sort(function(a,b){return a[0]-b[0]}).forEach(function(a){this.m.push(a[0]); -this.p.push(a[1])}.bind(this))};Q.prototype.Q=function(){var a=(this.e===window?this.e.scrollY:this.e.scrollTop)+this.c.offset,b=this.e.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight),c=this.c.offset+b-this.e.offsetHeight;this.R!=b&&this.refresh();a>=c&&(b=this.p[this.p.length-1],this.s!=b&&this.r(b));if(this.s&&a<this.m[0])this.s=null,S(this);else for(b=this.m.length;b--;)this.s!=this.p[b]&&a>=this.m[b]&&(!this.m[b+1]||a<this.m[b+1])&&this.r(this.p[b])}; -Q.prototype.r=function(a){this.s=a;S(this);for(var b=$(this.C+'[data-target="'+a+'"],'+this.C+'[href="'+a+'"]').parents("li"),c=b.length;c--;){$(b[c]).addClass("active");var d=b[c].parentNode;d&&$(d).hasClass("dropdown-menu")&&(d=$(d).closest("li.dropdown")[0],$(d).addClass("active"))}$(this.e).trigger("activate.bs.scrollspy",{relatedTarget:a})};function S(a){a=$(a.C).parentsUntil(a.c.target,".active");for(var b=a.length;b--;)$(a[b]).removeClass("active")}$.fn.scrollspy=R; -$.fn.scrollspy.Constructor=Q;$.fn.scrollspy.noConflict=function(){$.fn.scrollspy=oa;return this};$(window).on("load.bs.scrollspy.data-api",function(){for(var a=$.makeArray($('[data-spy="scroll"]')),b=a.length;b--;){var c=$(a[b]);R.call(c,c.data())}});function T(a,b){this.t=!0;this.u=0;this.j="";this.element=a;var c=$.extend({},this.constructor.Defaults,$(this.element).data(),b);c.delay&&"number"==typeof c.delay&&(c.delay={show:c.delay,hide:c.delay});this.b=c;this.D=this.W=null;this.b.viewport&&(this.S=$(this.b.viewport.selector||this.b.viewport)[0]);pa(this)}T.VERSION="4.0.0"; -T.Defaults={container:!1,animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,viewport:{selector:"body",padding:0}};var U={fa:"top",da:"left",ea:"right",ca:"bottom"},qa={J:"hide.bs.tooltip",I:"hidden.bs.tooltip",K:"show.bs.tooltip",L:"shown.bs.tooltip"},ra=$.fn.tooltip;T.prototype.enable=function(){this.t=!0}; -T.prototype.disable=function(){this.t=!1};T.prototype.toggleEnabled=function(){this.t=!this.t};T.prototype.toggle=function(a){var b=this,c=this.q();a&&(b=$(a.currentTarget).data(c),b||(b=new this.constructor(a.currentTarget,V(this)),$(a.currentTarget).data(c,b)));$(b.i()).hasClass("in")?b.H(null,b):b.O(null,b)};T.prototype.destroy=function(){clearTimeout(this.u);this.hide(function(){$(this.element).off(".tooltip").removeData(this.q())}.bind(this))}; -T.prototype.show=function(){var a=$.Event(this.v().K);if(this.U()&&this.t){$(this.element).trigger(a);var b=$.contains(this.element.ownerDocument.documentElement,this.element);if(!a.isDefaultPrevented()&&b){a=this.i();b=aa(this.getName());a.setAttribute("id",b);this.element.setAttribute("aria-describedby",b);this.V();this.b.animation&&$(a).addClass("fade");var b="function"==typeof this.b.placement?this.b.placement.call(this,a,this.element):this.b.placement,c=/\s?auto?\s?/i,d=c.test(b);d&&(b=b.replace(c, -"")||"top");a.parentNode&&a.parentNode.nodeType==Node.ELEMENT_NODE&&a.parentNode.removeChild(a);a.style.top=0;a.style.left=0;a.style.display="block";$(a).addClass("tooltip-"+b);$(a).data(this.q(),this);this.b.container?$(this.b.container)[0].appendChild(a):this.element.parentNode.insertBefore(a,this.element.nextSibling);var c=W(this),e=a.offsetWidth,a=a.offsetHeight,b=sa(this,d,b,c,e,a);ta(this,"bottom"==b?{top:c.top+c.height,left:c.left+c.width/2-e/2}:"top"==b?{top:c.top-a,left:c.left+c.width/2- -e/2}:"left"==b?{top:c.top+c.height/2-a/2,left:c.left-e}:{top:c.top+c.height/2-a/2,left:c.left+c.width},b);a=function(){var a=this.ba;$(this.element).trigger(this.v().L);this.ba=null;"out"==a&&this.H(null,this)}.bind(this);k&&$(this.n).hasClass("fade")?$(this.n).one("bsTransitionEnd",a).f(150):a()}}}; -T.prototype.hide=function(a){var b=this.i(),c=$.Event(this.v().J),d=function(){"in"!=this.j&&b.parentNode.removeChild(b);this.element.removeAttribute("aria-describedby");$(this.element).trigger(this.v().I);a&&a()}.bind(this);$(this.element).trigger(c);c.isDefaultPrevented()||($(b).removeClass("in"),k&&$(this.n).hasClass("fade")?$(b).one("bsTransitionEnd",d).f(150):d(),this.j="")};T.prototype.getHoverState=function(){return this.j};h=T.prototype;h.getName=function(){return"tooltip"};h.q=function(){return"bs.tooltip"}; -h.v=function(){return qa};function X(a){var b=a.element.getAttribute("data-original-title");b||(b="function"===typeof a.b.title?a.b.title.call(a.element):a.b.title);return b}h.i=function(){return this.n=this.n||$(this.b.template)[0]};h.T=function(){return this.D=this.D||$(this.i()).find(".tooltip-arrow")[0]};h.U=function(){return!!X(this)}; -h.V=function(){var a=this.i(),b=X(this);$(a).find(".tooltip-inner")[0][this.b.html?"innerHTML":"innerText"]=b;$(a).removeClass("fade").removeClass("in");for(var c in U)$(a).removeClass("tooltip-"+c)}; -function pa(a){a.b.trigger.split(" ").forEach(function(a){if("click"==a)$(this.element).on("click.bs.tooltip",this.b.selector,this.toggle.bind(this));else if("manual"!=a){var c="hover"==a?"mouseenter":"focusin";a="hover"==a?"mouseleave":"focusout";$(this.element).on(c+".bs.tooltip",this.b.selector,this.O.bind(this)).on(a+".bs.tooltip",this.b.selector,this.H.bind(this))}}.bind(a));a.b.selector?a.b=$.extend({},a.b,{trigger:"manual",selector:""}):ua(a)} -function V(a){var b={},c=a.constructor.Defaults;if(a.b)for(var d in a.b){var e=a.b[d];c[d]!=e&&(b[d]=e)}return b}function sa(a,b,c,d,e,f){if(b){b=c;var g=a.b.container?$(a.b.container)[0]:a.element.parentNode,g=W(a,g);c="bottom"==c&&d.bottom+f>g.bottom?"top":"top"==c&&d.top-f<g.top?"bottom":"right"==c&&d.right+e>g.width?"left":"left"==c&&d.left-e<g.left?"right":c;$(a.n).removeClass("tooltip-"+b).addClass("tooltip-"+c)}return c} -function va(a,b,c,d,e){var f={top:0,left:0};if(!a.S)return f;var g=a.b.viewport&&a.b.viewport.padding||0;a=W(a,a.S);"right"===b||"left"===b?(d=c.top-g-a.scroll,c=c.top+g-a.scroll+e,d<a.top?f.top=a.top-d:c>a.top+a.height&&(f.top=a.top+a.height-c)):(e=c.left-g,c=c.left+g+d,e<a.left?f.left=a.left-e:c>a.width&&(f.left=a.left+a.width-c));return f} -function W(a,b){var c=b||a.element,d="BODY"==c.tagName,e=c.getBoundingClientRect(),c=d?{top:0,left:0}:$(c).offset();return $.extend({},e,{scroll:d?document.documentElement.scrollTop||document.body.scrollTop:a.element.scrollTop},d?{width:window.innerWidth,height:window.innerHeight}:null,c)} -function ta(a,b,c){var d=a.i(),e=d.offsetWidth,f=d.offsetHeight,g=parseInt(d.style.marginTop,10),r=parseInt(d.style.marginLeft,10);isNaN(g)&&(g=0);isNaN(r)&&(r=0);b.top+=g;b.left+=r;$.offset.setOffset(d,$.extend({ka:function(a){d.style.top=Math.round(a.top)+"px";d.style.left=Math.round(a.left)+"px"}},b),0);$(d).addClass("in");g=d.offsetWidth;r=d.offsetHeight;"top"==c&&r!=f&&(b.top=b.top+f-r);var y=va(a,c,b,g,r);y.left?b.left+=y.left:b.top+=y.top;e=(c="top"===c||"bottom"===c)?2*y.left-e+g:2*y.top- -f+r;f=c?"offsetWidth":"offsetHeight";$(d).offset(b);wa(a,e,d[f],c)}function wa(a,b,c,d){a=a.T();a.style[d?"left":"top"]=50*(1-b/c)+"%";a.style[d?"top":"left"]=""}function ua(a){if(a.element.getAttribute("title")||"string"!=typeof a.element.getAttribute("data-original-title"))a.element.setAttribute("data-original-title",a.element.getAttribute("title")||""),a.element.setAttribute("title","")} -h.O=function(a,b){var c=this.q(),d=b||$(a.currentTarget).data(c);d&&d.n&&d.n.offsetWidth?d.j="in":(d||(d=new this.constructor(a.currentTarget,V(this)),$(a.currentTarget).data(c,d)),clearTimeout(d.u),d.j="in",d.b.delay&&d.b.delay.show?d.u=setTimeout(function(){"in"==d.j&&d.show()},d.b.delay.show):d.show())}; -h.H=function(a,b){var c=this.q(),d=b||$(a.currentTarget).data(c);d||(d=new this.constructor(a.currentTarget,V(this)),$(a.currentTarget).data(c,d));clearTimeout(d.u);d.j="out";d.b.delay&&d.b.delay.hide?d.u=setTimeout(function(){"out"==d.j&&d.hide()},d.b.delay.hide):d.hide()};$.fn.tooltip=function(a){return this.each(function(){var b=$(this).data("bs.tooltip"),c="object"==typeof a?a:null;if(b||"destroy"!=a)if(b||(b=new T(this,c),$(this).data("bs.tooltip",b)),"string"===typeof a)b[a]()})}; -$.fn.tooltip.Constructor=T;$.fn.tooltip.noConflict=function(){$.fn.tooltip=ra;return this};if(!T)throw Error("Popover requires tooltip.js");function Y(a,b){T.apply(this,arguments)}(function(){function a(){}a.prototype=T.prototype;Y.prototype=new a;Y.prototype.constructor=Y})();Y.VERSION="4.0.0";Y.Defaults=$.extend({},$.fn.tooltip.Constructor.Defaults,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}); -var xa={J:"hide.bs.popover",I:"hidden.bs.popover",K:"show.bs.popover",L:"shown.bs.popover"},ya=$.fn.popover;h=Y.prototype;h.getName=function(){return"popover"};h.q=function(){return"bs.popover"};h.v=function(){return xa};h.T=function(){return this.D=this.D||$(this.i()).find(".popover-arrow")[0]}; -h.V=function(){var a=this.i(),b=X(this),c=za(this),d=$(a).find(".popover-title")[0];d&&(d[this.b.html?"innerHTML":"innerText"]=b);$(a).find(".popover-content").children().detach().end()[this.b.html?"string"==typeof c?"html":"append":"text"](c);$(a).removeClass("fade").removeClass("in");for(var e in U)$(a).removeClass("popover-"+U[e])};h.U=function(){return X(this)||za(this)};h.i=function(){return this.W=this.W||$(this.b.template)[0]}; -function za(a){return a.element.getAttribute("data-content")||("function"==typeof a.b.content?a.b.content.call(a.element):a.b.content)}$.fn.popover=function(a){return this.each(function(){var b=$(this).data("bs.popover"),c="object"===typeof a?a:null;if(b||"destroy"!==a)if(b||(b=new Y(this,c),$(this).data("bs.popover",b)),"string"===typeof a)b[a]()})};$.fn.popover.Constructor=Y;$.fn.popover.noConflict=function(){$.fn.popover=ya;return this};function Z(a){this.a=a}Z.VERSION="4.0.0";function Aa(a){return this.each(function(){var b=$(this),c=b.data("bs.tab");c||(c=c=new Z(this),b.data("bs.tab",c));if("string"===typeof a)c[a]()})} -Z.prototype.show=function(){if(!this.a.parentNode||this.a.parentNode.nodeType!=Node.ELEMENT_NODE||!$(this.a).parent().hasClass("active")){var a=$(this.a).closest("ul:not(.dropdown-menu)")[0],b=m(this.a);if(a){var c=$.makeArray($(a).find(".active"));(c=c[c.length-1])&&(c=$(c).find("a")[0])}var d=$.Event("hide.bs.tab",{relatedTarget:this.a}),e=$.Event("show.bs.tab",{relatedTarget:c});c&&$(c).trigger(d);$(this.a).trigger(e);if(!e.isDefaultPrevented()&&!d.isDefaultPrevented()){if(b)var f=$(b)[0];this.r($(this.a).closest("li")[0], -a);a=function(){var a=$.Event("hidden.bs.tab",{relatedTarget:this.a}),b=$.Event("shown.bs.tab",{relatedTarget:c});$(c).trigger(a);$(this.a).trigger(b)}.bind(this);f?this.r(f,f.parentNode,a):a()}}};Z.prototype.r=function(a,b,c){var d=$(b).find(":scope > .active")[0];b=c&&k&&(d&&$(d).hasClass("fade")||!!$(b).find(":scope > .fade")[0]);a=this.aa.bind(this,a,d,b,c);d&&b?$(d).one("bsTransitionEnd",a).f(150):a();d&&$(d).removeClass("in")}; -Z.prototype.aa=function(a,b,c,d){if(b){$(b).removeClass("active");var e=$(b).find(":scope > .dropdown-menu > .active")[0];e&&$(e).removeClass("active");(b=$(b).find('[data-toggle="tab"], [data-toggle="pill"]')[0])&&b.setAttribute("aria-expanded",!1)}$(a).addClass("active");(b=$(a).find('[data-toggle="tab"], [data-toggle="pill"]')[0])&&b.setAttribute("aria-expanded",!0);c?(n(a),$(a).addClass("in")):$(a).removeClass("fade");a.parentNode&&$(a.parentNode).hasClass("dropdown-menu")&&((c=$(a).closest("li.dropdown")[0])&& -$(c).addClass("active"),(b=$(a).find('[data-toggle="tab"], [data-toggle="pill"]')[0])&&b.setAttribute("aria-expanded",!0));d&&d()};$.fn.tab=Aa;$.fn.tab.Constructor=Z;$.fn.tab.noConflict=function(){$.fn.tab=Z.ga;return this};$(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(a){a.preventDefault();Aa.call($(this),"show")});})(jQuery); +f&&g?a(f).one(d.TRANSITION_END,h).emulateTransitionEnd(k):h(),f&&a(f).removeClass(m.IN)}},{key:"_transitionComplete",value:function(b,c,e,f){if(c){a(c).removeClass(m.ACTIVE);var g=a(c).find(n.DROPDOWN_ACTIVE_CHILD)[0];g&&a(g).removeClass(m.ACTIVE);var h=a(c).find(n.DATA_TOGGLE)[0];h&&h.setAttribute("aria-expanded",!1)}a(b).addClass(m.ACTIVE);var i=a(b).find(n.DATA_TOGGLE)[0];if(i&&i.setAttribute("aria-expanded",!0),e?(d.reflow(b),a(b).addClass(m.IN)):a(b).removeClass(m.FADE),b.parentNode&&a(b.parentNode).hasClass(m.DROPDOWN_MENU)){var j=a(b).closest(n.LI_DROPDOWN)[0];j&&a(j).addClass(m.ACTIVE),i=a(b).find(n.DATA_TOGGLE)[0],i&&i.setAttribute("aria-expanded",!0)}f&&f()}}],[{key:"VERSION",get:function(){return f}},{key:"_jQueryInterface",value:function(b){return this.each(function(){var c=a(this),d=c.data(g);d||(d=d=new e(this),c.data(g,d)),"string"==typeof b&&d[b]()})}}]),e}();return a(document).on(l.CLICK_DATA_API,n.DATA_TOGGLE,function(b){b.preventDefault(),o._jQueryInterface.call(a(this),"show")}),a.fn[e]=o._jQueryInterface,a.fn[e].Constructor=o,a.fn[e].noConflict=function(){return a.fn[e]=j,o._jQueryInterface},o}(jQuery),function(a){var e="tooltip",f="4.0.0",g="bs.tooltip",h="."+g,i=a.fn[e],j=150,k="bs-tether",l={animation:!0,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:"0 0",constraints:[]},m={animation:"boolean",template:"string",title:"(string|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"string",constraints:"array"},n={TOP:"bottom center",RIGHT:"middle left",BOTTOM:"top center",LEFT:"middle right"},o={IN:"in",OUT:"out"},p={HIDE:"hide"+h,HIDDEN:"hidden"+h,SHOW:"show"+h,SHOWN:"shown"+h,INSERTED:"inserted"+h,CLICK:"click"+h,FOCUSIN:"focusin"+h,FOCUSOUT:"focusout"+h,MOUSEENTER:"mouseenter"+h,MOUSELEAVE:"mouseleave"+h},q={FADE:"fade",IN:"in"},r={TOOLTIP:".tooltip",TOOLTIP_INNER:".tooltip-inner"},s={element:!1,enabled:!1},t={HOVER:"hover",FOCUS:"focus",CLICK:"click",MANUAL:"manual"},u=function(){function i(a,c){b(this,i),this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._tether=null,this.element=a,this.config=this._getConfig(c),this.tip=null,this._setListeners()}return c(i,[{key:"enable",value:function(){this._isEnabled=!0}},{key:"disable",value:function(){this._isEnabled=!1}},{key:"toggleEnabled",value:function(){this._isEnabled=!this._isEnabled}},{key:"toggle",value:function(b){var c=this,d=this.constructor.DATA_KEY;b?(c=a(b.currentTarget).data(d),c||(c=new this.constructor(b.currentTarget,this._getDelegateConfig()),a(b.currentTarget).data(d,c)),c._activeTrigger.click=!c._activeTrigger.click,c._isWithActiveTrigger()?c._enter(null,c):c._leave(null,c)):a(c.getTipElement()).hasClass(q.IN)?c._leave(null,c):c._enter(null,c)}},{key:"dispose",value:function(){clearTimeout(this._timeout),this.cleanupTether(),a.removeData(this.element,this.constructor.DATA_KEY),a(this.element).off(this.constructor.EVENT_KEY),this.tip&&a(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._tether=null,this.element=null,this.config=null,this.tip=null}},{key:"show",value:function(){var b=this,c=a.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){a(this.element).trigger(c);var e=a.contains(this.element.ownerDocument.documentElement,this.element);if(c.isDefaultPrevented()||!e)return;var f=this.getTipElement(),g=d.getUID(this.constructor.NAME);f.setAttribute("id",g),this.element.setAttribute("aria-describedby",g),this.setContent(),this.config.animation&&a(f).addClass(q.FADE);var h="function"==typeof this.config.placement?this.config.placement.call(this,f,this.element):this.config.placement,j=this._getAttachment(h);a(f).data(this.constructor.DATA_KEY,this).appendTo(document.body),a(this.element).trigger(this.constructor.Event.INSERTED),this._tether=new Tether({element:f,target:this.element,attachment:j,classes:s,classPrefix:k,offset:this.config.offset,constraints:this.config.constraints}),d.reflow(f),this._tether.position(),a(f).addClass(q.IN);var l=function(){var c=b._hoverState;b._hoverState=null,a(b.element).trigger(b.constructor.Event.SHOWN),c===o.OUT&&b._leave(null,b)};d.supportsTransitionEnd()&&a(this.tip).hasClass(q.FADE)?a(this.tip).one(d.TRANSITION_END,l).emulateTransitionEnd(i._TRANSITION_DURATION):l()}}},{key:"hide",value:function(b){var c=this,e=this.getTipElement(),f=a.Event(this.constructor.Event.HIDE),g=function(){c._hoverState!==o.IN&&e.parentNode&&e.parentNode.removeChild(e),c.element.removeAttribute("aria-describedby"),a(c.element).trigger(c.constructor.Event.HIDDEN),c.cleanupTether(),b&&b()};a(this.element).trigger(f),f.isDefaultPrevented()||(a(e).removeClass(q.IN),d.supportsTransitionEnd()&&a(this.tip).hasClass(q.FADE)?a(e).one(d.TRANSITION_END,g).emulateTransitionEnd(j):g(),this._hoverState="")}},{key:"isWithContent",value:function(){return!!this.getTitle()}},{key:"getTipElement",value:function(){return this.tip=this.tip||a(this.config.template)[0]}},{key:"setContent",value:function(){var b=this.getTipElement(),c=this.getTitle(),d=this.config.html?"innerHTML":"innerText";a(b).find(r.TOOLTIP_INNER)[0][d]=c,a(b).removeClass(q.FADE).removeClass(q.IN),this.cleanupTether()}},{key:"getTitle",value:function(){var a=this.element.getAttribute("data-original-title");return a||(a="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),a}},{key:"cleanupTether",value:function(){this._tether&&(this._tether.destroy(),a(this.element).removeClass(this._removeTetherClasses),a(this.tip).removeClass(this._removeTetherClasses))}},{key:"_getAttachment",value:function(a){return n[a.toUpperCase()]}},{key:"_setListeners",value:function(){var b=this,c=this.config.trigger.split(" ");c.forEach(function(c){if("click"===c)a(b.element).on(b.constructor.Event.CLICK,b.config.selector,a.proxy(b.toggle,b));else if(c!==t.MANUAL){var d=c==t.HOVER?b.constructor.Event.MOUSEENTER:b.constructor.Event.FOCUSIN,e=c==t.HOVER?b.constructor.Event.MOUSELEAVE:b.constructor.Event.FOCUSOUT;a(b.element).on(d,b.config.selector,a.proxy(b._enter,b)).on(e,b.config.selector,a.proxy(b._leave,b))}}),this.config.selector?this.config=a.extend({},this.config,{trigger:"manual",selector:""}):this._fixTitle()}},{key:"_removeTetherClasses",value:function(a,b){return((b.baseVal||b).match(new RegExp("(^|\\s)"+k+"-\\S+","g"))||[]).join(" ")}},{key:"_fixTitle",value:function(){var a=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==a)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))}},{key:"_enter",value:function(b,c){var d=this.constructor.DATA_KEY;return c=c||a(b.currentTarget).data(d),c||(c=new this.constructor(b.currentTarget,this._getDelegateConfig()),a(b.currentTarget).data(d,c)),b&&(c._activeTrigger["focusin"==b.type?t.FOCUS:t.HOVER]=!0),a(c.getTipElement()).hasClass(q.IN)||c._hoverState===o.IN?void(c._hoverState=o.IN):(clearTimeout(c._timeout),c._hoverState=o.IN,c.config.delay&&c.config.delay.show?void(c._timeout=setTimeout(function(){c._hoverState===o.IN&&c.show()},c.config.delay.show)):void c.show())}},{key:"_leave",value:function(b,c){var d=this.constructor.DATA_KEY;return c=c||a(b.currentTarget).data(d),c||(c=new this.constructor(b.currentTarget,this._getDelegateConfig()),a(b.currentTarget).data(d,c)),b&&(c._activeTrigger["focusout"==b.type?t.FOCUS:t.HOVER]=!1),c._isWithActiveTrigger()?void 0:(clearTimeout(c._timeout),c._hoverState=o.OUT,c.config.delay&&c.config.delay.hide?void(c._timeout=setTimeout(function(){c._hoverState===o.OUT&&c.hide()},c.config.delay.hide)):void c.hide())}},{key:"_isWithActiveTrigger",value:function(){for(var a in this._activeTrigger)if(this._activeTrigger[a])return!0;return!1}},{key:"_getConfig",value:function(b){return b=a.extend({},this.constructor.Default,a(this.element).data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),d.typeCheckConfig(e,b,this.constructor.DefaultType),b}},{key:"_getDelegateConfig",value:function(){var a={};if(this.config)for(var b in this.config){var c=this.config[b];this.constructor.Default[b]!==c&&(a[b]=c)}return a}}],[{key:"VERSION",get:function(){return f}},{key:"Default",get:function(){return l}},{key:"NAME",get:function(){return e}},{key:"DATA_KEY",get:function(){return g}},{key:"Event",get:function(){return p}},{key:"EVENT_KEY",get:function(){return h}},{key:"DefaultType",get:function(){return m}},{key:"_jQueryInterface",value:function(b){return this.each(function(){var c=a(this).data(g),d="object"==typeof b?b:null;(c||!/destroy|hide/.test(b))&&(c||(c=new i(this,d),a(this).data(g,c)),"string"==typeof b&&c[b]())})}}]),i}();return a.fn[e]=u._jQueryInterface,a.fn[e].Constructor=u,a.fn[e].noConflict=function(){return a.fn[e]=i,u._jQueryInterface},u}(jQuery));!function(d){var f="popover",g="4.0.0",h="bs.popover",i="."+h,j=d.fn[f],k=d.extend({},e.Default,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),l=d.extend({},e.DefaultType,{content:"(string|function)"}),m={FADE:"fade",IN:"in"},n={TITLE:".popover-title",CONTENT:".popover-content",ARROW:".popover-arrow"},o={HIDE:"hide"+i,HIDDEN:"hidden"+i,SHOW:"show"+i,SHOWN:"shown"+i,INSERTED:"inserted"+i,CLICK:"click"+i,FOCUSIN:"focusin"+i,FOCUSOUT:"focusout"+i,MOUSEENTER:"mouseenter"+i,MOUSELEAVE:"mouseleave"+i},p=function(e){function j(){b(this,j),null!=e&&e.apply(this,arguments)}return a(j,e),c(j,[{key:"isWithContent",value:function(){return this.getTitle()||this._getContent()}},{key:"getTipElement",value:function(){return this.tip=this.tip||d(this.config.template)[0]}},{key:"setContent",value:function(){var a=this.getTipElement(),b=this.getTitle(),c=this._getContent(),e=d(a).find(n.TITLE)[0];e&&(e[this.config.html?"innerHTML":"innerText"]=b),d(a).find(n.CONTENT).children().detach().end()[this.config.html?"string"==typeof c?"html":"append":"text"](c),d(a).removeClass(m.FADE).removeClass(m.IN),this.cleanupTether()}},{key:"_getContent",value:function(){return this.element.getAttribute("data-content")||("function"==typeof this.config.content?this.config.content.call(this.element):this.config.content)}}],[{key:"VERSION",get:function(){return g}},{key:"Default",get:function(){return k}},{key:"NAME",get:function(){return f}},{key:"DATA_KEY",get:function(){return h}},{key:"Event",get:function(){return o}},{key:"EVENT_KEY",get:function(){return i}},{key:"DefaultType",get:function(){return l}},{key:"_jQueryInterface",value:function(a){return this.each(function(){var b=d(this).data(h),c="object"==typeof a?a:null;(b||!/destroy|hide/.test(a))&&(b||(b=new j(this,c),d(this).data(h,b)),"string"==typeof a&&b[a]())})}}]),j}(e);return d.fn[f]=p._jQueryInterface,d.fn[f].Constructor=p,d.fn[f].noConflict=function(){return d.fn[f]=j,p._jQueryInterface},p}(jQuery)}}(jQuery);
\ No newline at end of file diff --git a/dist/js/npm.js b/dist/js/npm.js index f9e8027f18..d0564681c8 100644 --- a/dist/js/npm.js +++ b/dist/js/npm.js @@ -1,12 +1,12 @@ // This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment. -require('../../js/util.js') -require('../../js/alert.js') -require('../../js/button.js') -require('../../js/carousel.js') -require('../../js/collapse.js') -require('../../js/dropdown.js') -require('../../js/modal.js') -require('../../js/scrollspy.js') -require('../../js/tooltip.js') -require('../../js/popover.js') -require('../../js/tab.js')
\ No newline at end of file +require('./umd/util.js') +require('./umd/alert.js') +require('./umd/button.js') +require('./umd/carousel.js') +require('./umd/collapse.js') +require('./umd/dropdown.js') +require('./umd/modal.js') +require('./umd/scrollspy.js') +require('./umd/tab.js') +require('./umd/tooltip.js') +require('./umd/popover.js')
\ No newline at end of file diff --git a/dist/js/umd/alert.js b/dist/js/umd/alert.js new file mode 100644 index 0000000000..4c2e1f77e0 --- /dev/null +++ b/dist/js/umd/alert.js @@ -0,0 +1,211 @@ +(function (global, factory) { + if (typeof define === 'function' && define.amd) { + define(['exports', 'module', './util'], factory); + } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') { + factory(exports, module, require('./util')); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, mod, global.Util); + global.alert = mod.exports; + } +})(this, function (exports, module, _util) { + 'use strict'; + + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + + var _Util = _interopRequireDefault(_util); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): alert.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Alert = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'alert'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.alert'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 150; + + var Selector = { + DISMISS: '[data-dismiss="alert"]' + }; + + var Event = { + CLOSE: 'close' + EVENT_KEY, + CLOSED: 'closed' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + '' + DATA_API_KEY + }; + + var ClassName = { + ALERT: 'alert', + FADE: 'fade', + IN: 'in' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Alert = (function () { + function Alert(element) { + _classCallCheck(this, Alert); + + this._element = element; + } + + _createClass(Alert, [{ + key: 'close', + + // public + + value: function close(element) { + element = element || this._element; + + var rootElement = this._getRootElement(element); + var customEvent = this._triggerCloseEvent(rootElement); + + if (customEvent.isDefaultPrevented()) { + return; + } + + this._removeElement(rootElement); + } + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + this._element = null; + } + }, { + key: '_getRootElement', + + // private + + value: function _getRootElement(element) { + var parent = false; + var selector = _Util['default'].getSelectorFromElement(element); + + if (selector) { + parent = $(selector)[0]; + } + + if (!parent) { + parent = $(element).closest('.' + ClassName.ALERT)[0]; + } + + return parent; + } + }, { + key: '_triggerCloseEvent', + value: function _triggerCloseEvent(element) { + var closeEvent = $.Event(Event.CLOSE); + $(element).trigger(closeEvent); + return closeEvent; + } + }, { + key: '_removeElement', + value: function _removeElement(element) { + $(element).removeClass(ClassName.IN); + + if (!_Util['default'].supportsTransitionEnd() || !$(element).hasClass(ClassName.FADE)) { + this._destroyElement(element); + return; + } + + $(element).one(_Util['default'].TRANSITION_END, this._destroyElement.bind(this, element)).emulateTransitionEnd(TRANSITION_DURATION); + } + }, { + key: '_destroyElement', + value: function _destroyElement(element) { + $(element).detach().trigger(Event.CLOSED).remove(); + } + }], [{ + key: 'VERSION', + + // getters + + get: function () { + return VERSION; + } + }, { + key: '_jQueryInterface', + + // static + + value: function _jQueryInterface(config) { + return this.each(function () { + var $element = $(this); + var data = $element.data(DATA_KEY); + + if (!data) { + data = new Alert(this); + $element.data(DATA_KEY, data); + } + + if (config === 'close') { + data[config](this); + } + }); + } + }, { + key: '_handleDismiss', + value: function _handleDismiss(alertInstance) { + return function (event) { + if (event) { + event.preventDefault(); + } + + alertInstance.close(this); + }; + } + }]); + + return Alert; + })(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert())); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Alert._jQueryInterface; + $.fn[NAME].Constructor = Alert; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Alert._jQueryInterface; + }; + + return Alert; + })(jQuery); + + module.exports = Alert; +});
\ No newline at end of file diff --git a/dist/js/umd/button.js b/dist/js/umd/button.js new file mode 100644 index 0000000000..b6a690219d --- /dev/null +++ b/dist/js/umd/button.js @@ -0,0 +1,189 @@ +(function (global, factory) { + if (typeof define === 'function' && define.amd) { + define(['exports', 'module'], factory); + } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') { + factory(exports, module); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, mod); + global.button = mod.exports; + } +})(this, function (exports, module) { + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): button.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + 'use strict'; + + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + + var Button = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'button'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.button'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 150; + + var ClassName = { + ACTIVE: 'active', + BUTTON: 'btn', + FOCUS: 'focus' + }; + + var Selector = { + DATA_TOGGLE_CARROT: '[data-toggle^="button"]', + DATA_TOGGLE: '[data-toggle="buttons"]', + INPUT: 'input', + ACTIVE: '.active', + BUTTON: '.btn' + }; + + var Event = { + CLICK_DATA_API: 'click' + EVENT_KEY + '' + DATA_API_KEY, + FOCUS_BLUR_DATA_API: 'focus' + EVENT_KEY + '' + DATA_API_KEY + ' ' + ('blur' + EVENT_KEY + '' + DATA_API_KEY) + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Button = (function () { + function Button(element) { + _classCallCheck(this, Button); + + this._element = element; + } + + _createClass(Button, [{ + key: 'toggle', + + // public + + value: function toggle() { + var triggerChangeEvent = true; + var rootElement = $(this._element).closest(Selector.DATA_TOGGLE)[0]; + + if (rootElement) { + var input = $(this._element).find(Selector.INPUT)[0]; + + if (input) { + if (input.type === 'radio') { + if (input.checked && $(this._element).hasClass(ClassName.ACTIVE)) { + triggerChangeEvent = false; + } else { + var activeElement = $(rootElement).find(Selector.ACTIVE)[0]; + + if (activeElement) { + $(activeElement).removeClass(ClassName.ACTIVE); + } + } + } + + if (triggerChangeEvent) { + input.checked = !$(this._element).hasClass(ClassName.ACTIVE); + $(this._element).trigger('change'); + } + } + } else { + this._element.setAttribute('aria-pressed', !$(this._element).hasClass(ClassName.ACTIVE)); + } + + if (triggerChangeEvent) { + $(this._element).toggleClass(ClassName.ACTIVE); + } + } + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + this._element = null; + } + }], [{ + key: 'VERSION', + + // getters + + get: function () { + return VERSION; + } + }, { + key: '_jQueryInterface', + + // static + + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + + if (!data) { + data = new Button(this); + $(this).data(DATA_KEY, data); + } + + if (config === 'toggle') { + data[config](); + } + }); + } + }]); + + return Button; + })(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) { + event.preventDefault(); + + var button = event.target; + + if (!$(button).hasClass(ClassName.BUTTON)) { + button = $(button).closest(Selector.BUTTON); + } + + Button._jQueryInterface.call($(button), 'toggle'); + }).on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) { + var button = $(event.target).closest(Selector.BUTTON)[0]; + $(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type)); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Button._jQueryInterface; + $.fn[NAME].Constructor = Button; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Button._jQueryInterface; + }; + + return Button; + })(jQuery); + + module.exports = Button; +});
\ No newline at end of file diff --git a/dist/js/umd/carousel.js b/dist/js/umd/carousel.js new file mode 100644 index 0000000000..d19c7e2577 --- /dev/null +++ b/dist/js/umd/carousel.js @@ -0,0 +1,485 @@ +(function (global, factory) { + if (typeof define === 'function' && define.amd) { + define(['exports', 'module', './util'], factory); + } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') { + factory(exports, module, require('./util')); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, mod, global.Util); + global.carousel = mod.exports; + } +})(this, function (exports, module, _util) { + 'use strict'; + + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + + var _Util = _interopRequireDefault(_util); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): carousel.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Carousel = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'carousel'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.carousel'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 600; + + var Default = { + interval: 5000, + keyboard: true, + slide: false, + pause: 'hover', + wrap: true + }; + + var DefaultType = { + interval: '(number|boolean)', + keyboard: 'boolean', + slide: '(boolean|string)', + pause: '(string|boolean)', + wrap: 'boolean' + }; + + var Direction = { + NEXT: 'next', + PREVIOUS: 'prev' + }; + + var Event = { + SLIDE: 'slide' + EVENT_KEY, + SLID: 'slid' + EVENT_KEY, + KEYDOWN: 'keydown' + EVENT_KEY, + MOUSEENTER: 'mouseenter' + EVENT_KEY, + MOUSELEAVE: 'mouseleave' + EVENT_KEY, + LOAD_DATA_API: 'load' + EVENT_KEY + '' + DATA_API_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + '' + DATA_API_KEY + }; + + var ClassName = { + CAROUSEL: 'carousel', + ACTIVE: 'active', + SLIDE: 'slide', + RIGHT: 'right', + LEFT: 'left', + ITEM: 'carousel-item' + }; + + var Selector = { + ACTIVE: '.active', + ACTIVE_ITEM: '.active.carousel-item', + ITEM: '.carousel-item', + NEXT_PREV: '.next, .prev', + INDICATORS: '.carousel-indicators', + DATA_SLIDE: '[data-slide], [data-slide-to]', + DATA_RIDE: '[data-ride="carousel"]' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Carousel = (function () { + function Carousel(element, config) { + _classCallCheck(this, Carousel); + + this._items = null; + this._interval = null; + this._activeElement = null; + + this._isPaused = false; + this._isSliding = false; + + this._config = this._getConfig(config); + this._element = $(element)[0]; + this._indicatorsElement = $(this._element).find(Selector.INDICATORS)[0]; + + this._addEventListeners(); + } + + _createClass(Carousel, [{ + key: 'next', + + // public + + value: function next() { + if (!this._isSliding) { + this._slide(Direction.NEXT); + } + } + }, { + key: 'prev', + value: function prev() { + if (!this._isSliding) { + this._slide(Direction.PREVIOUS); + } + } + }, { + key: 'pause', + value: function pause(event) { + if (!event) { + this._isPaused = true; + } + + if ($(this._element).find(Selector.NEXT_PREV)[0] && _Util['default'].supportsTransitionEnd()) { + _Util['default'].triggerTransitionEnd(this._element); + this.cycle(true); + } + + clearInterval(this._interval); + this._interval = null; + } + }, { + key: 'cycle', + value: function cycle(event) { + if (!event) { + this._isPaused = false; + } + + if (this._interval) { + clearInterval(this._interval); + this._interval = null; + } + + if (this._config.interval && !this._isPaused) { + this._interval = setInterval($.proxy(this.next, this), this._config.interval); + } + } + }, { + key: 'to', + value: function to(index) { + var _this = this; + + this._activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0]; + + var activeIndex = this._getItemIndex(this._activeElement); + + if (index > this._items.length - 1 || index < 0) { + return; + } + + if (this._isSliding) { + $(this._element).one(Event.SLID, function () { + return _this.to(index); + }); + return; + } + + if (activeIndex == index) { + this.pause(); + this.cycle(); + return; + } + + var direction = index > activeIndex ? Direction.NEXT : Direction.PREVIOUS; + + this._slide(direction, this._items[index]); + } + }, { + key: 'dispose', + value: function dispose() { + $(this._element).off(EVENT_KEY); + $.removeData(this._element, DATA_KEY); + + this._items = null; + this._config = null; + this._element = null; + this._interval = null; + this._isPaused = null; + this._isSliding = null; + this._activeElement = null; + this._indicatorsElement = null; + } + }, { + key: '_getConfig', + + // private + + value: function _getConfig(config) { + config = $.extend({}, Default, config); + _Util['default'].typeCheckConfig(NAME, config, DefaultType); + return config; + } + }, { + key: '_addEventListeners', + value: function _addEventListeners() { + if (this._config.keyboard) { + $(this._element).on(Event.KEYDOWN, $.proxy(this._keydown, this)); + } + + if (this._config.pause == 'hover' && !('ontouchstart' in document.documentElement)) { + $(this._element).on(Event.MOUSEENTER, $.proxy(this.pause, this)).on(Event.MOUSELEAVE, $.proxy(this.cycle, this)); + } + } + }, { + key: '_keydown', + value: function _keydown(event) { + event.preventDefault(); + + if (/input|textarea/i.test(event.target.tagName)) return; + + switch (event.which) { + case 37: + this.prev();break; + case 39: + this.next();break; + default: + return; + } + } + }, { + key: '_getItemIndex', + value: function _getItemIndex(element) { + this._items = $.makeArray($(element).parent().find(Selector.ITEM)); + return this._items.indexOf(element); + } + }, { + key: '_getItemByDirection', + value: function _getItemByDirection(direction, activeElement) { + var isNextDirection = direction === Direction.NEXT; + var isPrevDirection = direction === Direction.PREVIOUS; + var activeIndex = this._getItemIndex(activeElement); + var lastItemIndex = this._items.length - 1; + var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex == lastItemIndex; + + if (isGoingToWrap && !this._config.wrap) { + return activeElement; + } + + var delta = direction == Direction.PREVIOUS ? -1 : 1; + var itemIndex = (activeIndex + delta) % this._items.length; + + return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex]; + } + }, { + key: '_triggerSlideEvent', + value: function _triggerSlideEvent(relatedTarget, directionalClassname) { + var slideEvent = $.Event(Event.SLIDE, { + relatedTarget: relatedTarget, + direction: directionalClassname + }); + + $(this._element).trigger(slideEvent); + + return slideEvent; + } + }, { + key: '_setActiveIndicatorElement', + value: function _setActiveIndicatorElement(element) { + if (this._indicatorsElement) { + $(this._indicatorsElement).find(Selector.ACTIVE).removeClass(ClassName.ACTIVE); + + var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)]; + + if (nextIndicator) { + $(nextIndicator).addClass(ClassName.ACTIVE); + } + } + } + }, { + key: '_slide', + value: function _slide(direction, element) { + var _this2 = this; + + var activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0]; + var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement); + + var isCycling = !!this._interval; + + var directionalClassName = direction == Direction.NEXT ? ClassName.LEFT : ClassName.RIGHT; + + if (nextElement && $(nextElement).hasClass(ClassName.ACTIVE)) { + this._isSliding = false; + return; + } + + var slideEvent = this._triggerSlideEvent(nextElement, directionalClassName); + if (slideEvent.isDefaultPrevented()) { + return; + } + + if (!activeElement || !nextElement) { + // some weirdness is happening, so we bail + return; + } + + this._isSliding = true; + + if (isCycling) { + this.pause(); + } + + this._setActiveIndicatorElement(nextElement); + + var slidEvent = $.Event(Event.SLID, { + relatedTarget: nextElement, + direction: directionalClassName + }); + + if (_Util['default'].supportsTransitionEnd() && $(this._element).hasClass(ClassName.SLIDE)) { + + $(nextElement).addClass(direction); + + _Util['default'].reflow(nextElement); + + $(activeElement).addClass(directionalClassName); + $(nextElement).addClass(directionalClassName); + + $(activeElement).one(_Util['default'].TRANSITION_END, function () { + $(nextElement).removeClass(directionalClassName).removeClass(direction); + + $(nextElement).addClass(ClassName.ACTIVE); + + $(activeElement).removeClass(ClassName.ACTIVE).removeClass(direction).removeClass(directionalClassName); + + _this2._isSliding = false; + + setTimeout(function () { + return $(_this2._element).trigger(slidEvent); + }, 0); + }).emulateTransitionEnd(TRANSITION_DURATION); + } else { + $(activeElement).removeClass(ClassName.ACTIVE); + $(nextElement).addClass(ClassName.ACTIVE); + + this._isSliding = false; + $(this._element).trigger(slidEvent); + } + + if (isCycling) { + this.cycle(); + } + } + }], [{ + key: 'VERSION', + + // getters + + get: function () { + return VERSION; + } + }, { + key: 'Default', + get: function () { + return Default; + } + }, { + key: '_jQueryInterface', + + // static + + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = $.extend({}, Default, $(this).data()); + + if (typeof config === 'object') { + $.extend(_config, config); + } + + var action = typeof config === 'string' ? config : _config.slide; + + if (!data) { + data = new Carousel(this, _config); + $(this).data(DATA_KEY, data); + } + + if (typeof config == 'number') { + data.to(config); + } else if (action) { + data[action](); + } else if (_config.interval) { + data.pause(); + data.cycle(); + } + }); + } + }, { + key: '_dataApiClickHandler', + value: function _dataApiClickHandler(event) { + var selector = _Util['default'].getSelectorFromElement(this); + + if (!selector) { + return; + } + + var target = $(selector)[0]; + + if (!target || !$(target).hasClass(ClassName.CAROUSEL)) { + return; + } + + var config = $.extend({}, $(target).data(), $(this).data()); + + var slideIndex = this.getAttribute('data-slide-to'); + if (slideIndex) { + config.interval = false; + } + + Carousel._jQueryInterface.call($(target), config); + + if (slideIndex) { + $(target).data(DATA_KEY).to(slideIndex); + } + + event.preventDefault(); + } + }]); + + return Carousel; + })(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler); + + $(window).on(Event.LOAD_DATA_API, function () { + $(Selector.DATA_RIDE).each(function () { + var $carousel = $(this); + Carousel._jQueryInterface.call($carousel, $carousel.data()); + }); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Carousel._jQueryInterface; + $.fn[NAME].Constructor = Carousel; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Carousel._jQueryInterface; + }; + + return Carousel; + })(jQuery); + + module.exports = Carousel; +});
\ No newline at end of file diff --git a/dist/js/umd/collapse.js b/dist/js/umd/collapse.js new file mode 100644 index 0000000000..1002dda7ad --- /dev/null +++ b/dist/js/umd/collapse.js @@ -0,0 +1,380 @@ +(function (global, factory) { + if (typeof define === 'function' && define.amd) { + define(['exports', 'module', './util'], factory); + } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') { + factory(exports, module, require('./util')); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, mod, global.Util); + global.collapse = mod.exports; + } +})(this, function (exports, module, _util) { + 'use strict'; + + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + + var _Util = _interopRequireDefault(_util); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): collapse.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Collapse = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'collapse'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.collapse'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 600; + + var Default = { + toggle: true, + parent: '' + }; + + var DefaultType = { + toggle: 'boolean', + parent: 'string' + }; + + var Event = { + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + '' + DATA_API_KEY + }; + + var ClassName = { + IN: 'in', + COLLAPSE: 'collapse', + COLLAPSING: 'collapsing', + COLLAPSED: 'collapsed' + }; + + var Dimension = { + WIDTH: 'width', + HEIGHT: 'height' + }; + + var Selector = { + ACTIVES: '.panel > .in, .panel > .collapsing', + DATA_TOGGLE: '[data-toggle="collapse"]' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Collapse = (function () { + function Collapse(element, config) { + _classCallCheck(this, Collapse); + + this._isTransitioning = false; + this._element = element; + this._config = this._getConfig(config); + this._triggerArray = $.makeArray($('[data-toggle="collapse"][href="#' + element.id + '"],' + ('[data-toggle="collapse"][data-target="#' + element.id + '"]'))); + + this._parent = this._config.parent ? this._getParent() : null; + + if (!this._config.parent) { + this._addAriaAndCollapsedClass(this._element, this._triggerArray); + } + + if (this._config.toggle) { + this.toggle(); + } + } + + _createClass(Collapse, [{ + key: 'toggle', + + // public + + value: function toggle() { + if ($(this._element).hasClass(ClassName.IN)) { + this.hide(); + } else { + this.show(); + } + } + }, { + key: 'show', + value: function show() { + var _this = this; + + if (this._isTransitioning || $(this._element).hasClass(ClassName.IN)) { + return; + } + + var actives = undefined; + var activesData = undefined; + + if (this._parent) { + actives = $.makeArray($(Selector.ACTIVES)); + if (!actives.length) { + actives = null; + } + } + + if (actives) { + activesData = $(actives).data(DATA_KEY); + if (activesData && activesData._isTransitioning) { + return; + } + } + + var startEvent = $.Event(Event.SHOW); + $(this._element).trigger(startEvent); + if (startEvent.isDefaultPrevented()) { + return; + } + + if (actives) { + Collapse._jQueryInterface.call($(actives), 'hide'); + if (!activesData) { + $(actives).data(DATA_KEY, null); + } + } + + var dimension = this._getDimension(); + + $(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING); + + this._element.style[dimension] = 0; + this._element.setAttribute('aria-expanded', true); + + if (this._triggerArray.length) { + $(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true); + } + + this.setTransitioning(true); + + var complete = function complete() { + $(_this._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).addClass(ClassName.IN); + + _this._element.style[dimension] = ''; + + _this.setTransitioning(false); + + $(_this._element).trigger(Event.SHOWN); + }; + + if (!_Util['default'].supportsTransitionEnd()) { + complete(); + return; + } + + var scrollSize = 'scroll' + (dimension[0].toUpperCase() + dimension.slice(1)); + + $(this._element).one(_Util['default'].TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + + this._element.style[dimension] = this._element[scrollSize] + 'px'; + } + }, { + key: 'hide', + value: function hide() { + var _this2 = this; + + if (this._isTransitioning || !$(this._element).hasClass(ClassName.IN)) { + return; + } + + var startEvent = $.Event(Event.HIDE); + $(this._element).trigger(startEvent); + if (startEvent.isDefaultPrevented()) { + return; + } + + var dimension = this._getDimension(); + var offsetDimension = dimension === Dimension.WIDTH ? 'offsetWidth' : 'offsetHeight'; + + this._element.style[dimension] = this._element[offsetDimension] + 'px'; + + _Util['default'].reflow(this._element); + + $(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.IN); + + this._element.setAttribute('aria-expanded', false); + + if (this._triggerArray.length) { + $(this._triggerArray).addClass(ClassName.COLLAPSED).attr('aria-expanded', false); + } + + this.setTransitioning(true); + + var complete = function complete() { + _this2.setTransitioning(false); + $(_this2._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).trigger(Event.HIDDEN); + }; + + this._element.style[dimension] = 0; + + if (!_Util['default'].supportsTransitionEnd()) { + return complete(); + } + + $(this._element).one(_Util['default'].TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + } + }, { + key: 'setTransitioning', + value: function setTransitioning(isTransitioning) { + this._isTransitioning = isTransitioning; + } + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + + this._config = null; + this._parent = null; + this._element = null; + this._triggerArray = null; + this._isTransitioning = null; + } + }, { + key: '_getConfig', + + // private + + value: function _getConfig(config) { + config = $.extend({}, Default, config); + config.toggle = !!config.toggle; // coerce string values + _Util['default'].typeCheckConfig(NAME, config, DefaultType); + return config; + } + }, { + key: '_getDimension', + value: function _getDimension() { + var hasWidth = $(this._element).hasClass(Dimension.WIDTH); + return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT; + } + }, { + key: '_getParent', + value: function _getParent() { + var _this3 = this; + + var parent = $(this._config.parent)[0]; + var selector = '[data-toggle="collapse"][data-parent="' + this._config.parent + '"]'; + + $(parent).find(selector).each(function (i, element) { + _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]); + }); + + return parent; + } + }, { + key: '_addAriaAndCollapsedClass', + value: function _addAriaAndCollapsedClass(element, triggerArray) { + if (element) { + var isOpen = $(element).hasClass(ClassName.IN); + element.setAttribute('aria-expanded', isOpen); + + if (triggerArray.length) { + $(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen); + } + } + } + }], [{ + key: 'VERSION', + + // getters + + get: function () { + return VERSION; + } + }, { + key: 'Default', + get: function () { + return Default; + } + }, { + key: '_getTargetFromElement', + + // static + + value: function _getTargetFromElement(element) { + var selector = _Util['default'].getSelectorFromElement(element); + return selector ? $(selector)[0] : null; + } + }, { + key: '_jQueryInterface', + value: function _jQueryInterface(config) { + return this.each(function () { + var $this = $(this); + var data = $this.data(DATA_KEY); + var _config = $.extend({}, Default, $this.data(), typeof config === 'object' && config); + + if (!data && _config.toggle && /show|hide/.test(config)) { + _config.toggle = false; + } + + if (!data) { + data = new Collapse(this, _config); + $this.data(DATA_KEY, data); + } + + if (typeof config === 'string') { + data[config](); + } + }); + } + }]); + + return Collapse; + })(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + event.preventDefault(); + + var target = Collapse._getTargetFromElement(this); + + var data = $(target).data(DATA_KEY); + var config = data ? 'toggle' : $(this).data(); + + Collapse._jQueryInterface.call($(target), config); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Collapse._jQueryInterface; + $.fn[NAME].Constructor = Collapse; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Collapse._jQueryInterface; + }; + + return Collapse; + })(jQuery); + + module.exports = Collapse; +});
\ No newline at end of file diff --git a/dist/js/umd/dropdown.js b/dist/js/umd/dropdown.js new file mode 100644 index 0000000000..9c04e45b3e --- /dev/null +++ b/dist/js/umd/dropdown.js @@ -0,0 +1,300 @@ +(function (global, factory) { + if (typeof define === 'function' && define.amd) { + define(['exports', 'module', './util'], factory); + } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') { + factory(exports, module, require('./util')); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, mod, global.Util); + global.dropdown = mod.exports; + } +})(this, function (exports, module, _util) { + 'use strict'; + + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + + var _Util = _interopRequireDefault(_util); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): dropdown.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Dropdown = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'dropdown'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.dropdown'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + CLICK: 'click' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + '' + DATA_API_KEY, + KEYDOWN_DATA_API: 'keydown' + EVENT_KEY + '' + DATA_API_KEY + }; + + var ClassName = { + BACKDROP: 'dropdown-backdrop', + DISABLED: 'disabled', + OPEN: 'open' + }; + + var Selector = { + BACKDROP: '.dropdown-backdrop', + DATA_TOGGLE: '[data-toggle="dropdown"]', + FORM_CHILD: '.dropdown form', + ROLE_MENU: '[role="menu"]', + ROLE_LISTBOX: '[role="listbox"]', + NAVBAR_NAV: '.navbar-nav', + VISIBLE_ITEMS: '[role="menu"] li:not(.disabled) a, ' + '[role="listbox"] li:not(.disabled) a' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Dropdown = (function () { + function Dropdown(element) { + _classCallCheck(this, Dropdown); + + this._element = element; + + this._addEventListeners(); + } + + _createClass(Dropdown, [{ + key: 'toggle', + + // public + + value: function toggle() { + if (this.disabled || $(this).hasClass(ClassName.DISABLED)) { + return; + } + + var parent = Dropdown._getParentFromElement(this); + var isActive = $(parent).hasClass(ClassName.OPEN); + + Dropdown._clearMenus(); + + if (isActive) { + return false; + } + + if ('ontouchstart' in document.documentElement && !$(parent).closest(Selector.NAVBAR_NAV).length) { + + // if mobile we use a backdrop because click events don't delegate + var dropdown = document.createElement('div'); + dropdown.className = ClassName.BACKDROP; + $(dropdown).insertBefore(this); + $(dropdown).on('click', Dropdown._clearMenus); + } + + var relatedTarget = { relatedTarget: this }; + var showEvent = $.Event(Event.SHOW, relatedTarget); + + $(parent).trigger(showEvent); + + if (showEvent.isDefaultPrevented()) { + return; + } + + this.focus(); + this.setAttribute('aria-expanded', 'true'); + + $(parent).toggleClass(ClassName.OPEN); + $(parent).trigger(Event.SHOWN, relatedTarget); + + return false; + } + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + $(this._element).off(EVENT_KEY); + this._element = null; + } + }, { + key: '_addEventListeners', + + // private + + value: function _addEventListeners() { + $(this._element).on(Event.CLICK, this.toggle); + } + }], [{ + key: 'VERSION', + + // getters + + get: function () { + return VERSION; + } + }, { + key: '_jQueryInterface', + + // static + + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + + if (!data) { + $(this).data(DATA_KEY, data = new Dropdown(this)); + } + + if (typeof config === 'string') { + data[config].call(this); + } + }); + } + }, { + key: '_clearMenus', + value: function _clearMenus(event) { + if (event && event.which === 3) { + return; + } + + var backdrop = $(Selector.BACKDROP)[0]; + if (backdrop) { + backdrop.parentNode.removeChild(backdrop); + } + + var toggles = $.makeArray($(Selector.DATA_TOGGLE)); + + for (var i = 0; i < toggles.length; i++) { + var _parent = Dropdown._getParentFromElement(toggles[i]); + var relatedTarget = { relatedTarget: toggles[i] }; + + if (!$(_parent).hasClass(ClassName.OPEN)) { + continue; + } + + if (event && event.type === 'click' && /input|textarea/i.test(event.target.tagName) && $.contains(_parent, event.target)) { + continue; + } + + var hideEvent = $.Event(Event.HIDE, relatedTarget); + $(_parent).trigger(hideEvent); + if (hideEvent.isDefaultPrevented()) { + continue; + } + + toggles[i].setAttribute('aria-expanded', 'false'); + + $(_parent).removeClass(ClassName.OPEN).trigger(Event.HIDDEN, relatedTarget); + } + } + }, { + key: '_getParentFromElement', + value: function _getParentFromElement(element) { + var parent = undefined; + var selector = _Util['default'].getSelectorFromElement(element); + + if (selector) { + parent = $(selector)[0]; + } + + return parent || element.parentNode; + } + }, { + key: '_dataApiKeydownHandler', + value: function _dataApiKeydownHandler(event) { + if (!/(38|40|27|32)/.test(event.which) || /input|textarea/i.test(event.target.tagName)) { + return; + } + + event.preventDefault(); + event.stopPropagation(); + + if (this.disabled || $(this).hasClass(ClassName.DISABLED)) { + return; + } + + var parent = Dropdown._getParentFromElement(this); + var isActive = $(parent).hasClass(ClassName.OPEN); + + if (!isActive && event.which !== 27 || isActive && event.which === 27) { + + if (event.which === 27) { + var toggle = $(parent).find(Selector.DATA_TOGGLE)[0]; + $(toggle).trigger('focus'); + } + + $(this).trigger('click'); + return; + } + + var items = $.makeArray($(Selector.VISIBLE_ITEMS)); + + items = items.filter(function (item) { + return item.offsetWidth || item.offsetHeight; + }); + + if (!items.length) { + return; + } + + var index = items.indexOf(event.target); + + if (event.which === 38 && index > 0) index--; // up + if (event.which === 40 && index < items.length - 1) index++; // down + if (! ~index) index = 0; + + items[index].focus(); + } + }]); + + return Dropdown; + })(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.ROLE_MENU, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.ROLE_LISTBOX, Dropdown._dataApiKeydownHandler).on(Event.CLICK_DATA_API, Dropdown._clearMenus).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, Dropdown.prototype.toggle).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) { + e.stopPropagation(); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Dropdown._jQueryInterface; + $.fn[NAME].Constructor = Dropdown; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Dropdown._jQueryInterface; + }; + + return Dropdown; + })(jQuery); + + module.exports = Dropdown; +});
\ No newline at end of file diff --git a/dist/js/umd/modal.js b/dist/js/umd/modal.js new file mode 100644 index 0000000000..ba7ccc30ba --- /dev/null +++ b/dist/js/umd/modal.js @@ -0,0 +1,548 @@ +(function (global, factory) { + if (typeof define === 'function' && define.amd) { + define(['exports', 'module', './util'], factory); + } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') { + factory(exports, module, require('./util')); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, mod, global.Util); + global.modal = mod.exports; + } +})(this, function (exports, module, _util) { + 'use strict'; + + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + + var _Util = _interopRequireDefault(_util); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): modal.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Modal = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'modal'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.modal'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 300; + var BACKDROP_TRANSITION_DURATION = 150; + + var Default = { + backdrop: true, + keyboard: true, + focus: true, + show: true + }; + + var DefaultType = { + backdrop: '(boolean|string)', + keyboard: 'boolean', + focus: 'boolean', + show: 'boolean' + }; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + FOCUSIN: 'focusin' + EVENT_KEY, + RESIZE: 'resize' + EVENT_KEY, + CLICK_DISMISS: 'click.dismiss' + EVENT_KEY, + KEYDOWN_DISMISS: 'keydown.dismiss' + EVENT_KEY, + MOUSEUP_DISMISS: 'mouseup.dismiss' + EVENT_KEY, + MOUSEDOWN_DISMISS: 'mousedown.dismiss' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + '' + DATA_API_KEY + }; + + var ClassName = { + BACKDROP: 'modal-backdrop', + OPEN: 'modal-open', + FADE: 'fade', + IN: 'in' + }; + + var Selector = { + DIALOG: '.modal-dialog', + DATA_TOGGLE: '[data-toggle="modal"]', + DATA_DISMISS: '[data-dismiss="modal"]', + SCROLLBAR_MEASURER: 'modal-scrollbar-measure' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Modal = (function () { + function Modal(element, config) { + _classCallCheck(this, Modal); + + this._config = this._getConfig(config); + this._element = element; + this._dialog = $(element).find(Selector.DIALOG)[0]; + this._backdrop = null; + this._isShown = false; + this._isBodyOverflowing = false; + this._ignoreBackdropClick = false; + this._originalBodyPadding = 0; + this._scrollbarWidth = 0; + } + + _createClass(Modal, [{ + key: 'toggle', + + // public + + value: function toggle(relatedTarget) { + return this._isShown ? this.hide() : this.show(relatedTarget); + } + }, { + key: 'show', + value: function show(relatedTarget) { + var _this = this; + + var showEvent = $.Event(Event.SHOW, { + relatedTarget: relatedTarget + }); + + $(this._element).trigger(showEvent); + + if (this._isShown || showEvent.isDefaultPrevented()) { + return; + } + + this._isShown = true; + + this._checkScrollbar(); + this._setScrollbar(); + + $(document.body).addClass(ClassName.OPEN); + + this._setEscapeEvent(); + this._setResizeEvent(); + + $(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, $.proxy(this.hide, this)); + + $(this._dialog).on(Event.MOUSEDOWN_DISMISS, function () { + $(_this._element).one(Event.MOUSEUP_DISMISS, function (event) { + if ($(event.target).is(_this._element)) { + that._ignoreBackdropClick = true; + } + }); + }); + + this._showBackdrop($.proxy(this._showElement, this, relatedTarget)); + } + }, { + key: 'hide', + value: function hide(event) { + if (event) { + event.preventDefault(); + } + + var hideEvent = $.Event(Event.HIDE); + + $(this._element).trigger(hideEvent); + + if (!this._isShown || hideEvent.isDefaultPrevented()) { + return; + } + + this._isShown = false; + + this._setEscapeEvent(); + this._setResizeEvent(); + + $(document).off(Event.FOCUSIN); + + $(this._element).removeClass(ClassName.IN); + + $(this._element).off(Event.CLICK_DISMISS); + $(this._dialog).off(Event.MOUSEDOWN_DISMISS); + + if (_Util['default'].supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) { + + $(this._element).one(_Util['default'].TRANSITION_END, $.proxy(this._hideModal, this)).emulateTransitionEnd(TRANSITION_DURATION); + } else { + this._hideModal(); + } + } + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + + $(window).off(EVENT_KEY); + $(document).off(EVENT_KEY); + $(this._element).off(EVENT_KEY); + $(this._backdrop).off(EVENT_KEY); + + this._config = null; + this._element = null; + this._dialog = null; + this._backdrop = null; + this._isShown = null; + this._isBodyOverflowing = null; + this._ignoreBackdropClick = null; + this._originalBodyPadding = null; + this._scrollbarWidth = null; + } + }, { + key: '_getConfig', + + // private + + value: function _getConfig(config) { + config = $.extend({}, Default, config); + _Util['default'].typeCheckConfig(NAME, config, DefaultType); + return config; + } + }, { + key: '_showElement', + value: function _showElement(relatedTarget) { + var _this2 = this; + + var transition = _Util['default'].supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE); + + if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) { + // don't move modals dom position + document.body.appendChild(this._element); + } + + this._element.style.display = 'block'; + this._element.scrollTop = 0; + + if (transition) { + _Util['default'].reflow(this._element); + } + + $(this._element).addClass(ClassName.IN); + + if (this._config.focus) this._enforceFocus(); + + var shownEvent = $.Event(Event.SHOWN, { + relatedTarget: relatedTarget + }); + + var transitionComplete = function transitionComplete() { + if (_this2._config.focus) _this2._element.focus(); + $(_this2._element).trigger(shownEvent); + }; + + if (transition) { + $(this._dialog).one(_Util['default'].TRANSITION_END, transitionComplete).emulateTransitionEnd(TRANSITION_DURATION); + } else { + transitionComplete(); + } + } + }, { + key: '_enforceFocus', + value: function _enforceFocus() { + var _this3 = this; + + $(document).off(Event.FOCUSIN) // guard against infinite focus loop + .on(Event.FOCUSIN, function (event) { + if (_this3._element !== event.target && !$(_this3._element).has(event.target).length) { + _this3._element.focus(); + } + }); + } + }, { + key: '_setEscapeEvent', + value: function _setEscapeEvent() { + var _this4 = this; + + if (this._isShown && this._config.keyboard) { + $(this._element).on(Event.KEYDOWN_DISMISS, function (event) { + if (event.which === 27) { + _this4.hide(); + } + }); + } else if (!this._isShown) { + $(this._element).off(Event.KEYDOWN_DISMISS); + } + } + }, { + key: '_setResizeEvent', + value: function _setResizeEvent() { + if (this._isShown) { + $(window).on(Event.RESIZE, $.proxy(this._handleUpdate, this)); + } else { + $(window).off(Event.RESIZE); + } + } + }, { + key: '_hideModal', + value: function _hideModal() { + var _this5 = this; + + this._element.style.display = 'none'; + this._showBackdrop(function () { + $(document.body).removeClass(ClassName.OPEN); + _this5._resetAdjustments(); + _this5._resetScrollbar(); + $(_this5._element).trigger(Event.HIDDEN); + }); + } + }, { + key: '_removeBackdrop', + value: function _removeBackdrop() { + if (this._backdrop) { + $(this._backdrop).remove(); + this._backdrop = null; + } + } + }, { + key: '_showBackdrop', + value: function _showBackdrop(callback) { + var _this6 = this; + + var animate = $(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : ''; + + if (this._isShown && this._config.backdrop) { + var doAnimate = _Util['default'].supportsTransitionEnd() && animate; + + this._backdrop = document.createElement('div'); + this._backdrop.className = ClassName.BACKDROP; + + if (animate) { + $(this._backdrop).addClass(animate); + } + + $(this._backdrop).appendTo(this.$body); + + $(this._element).on(Event.CLICK_DISMISS, function (event) { + if (_this6._ignoreBackdropClick) { + _this6._ignoreBackdropClick = false; + return; + } + if (event.target !== event.currentTarget) { + return; + } + if (_this6._config.backdrop === 'static') { + _this6._element.focus(); + } else { + _this6.hide(); + } + }); + + if (doAnimate) { + _Util['default'].reflow(this._backdrop); + } + + $(this._backdrop).addClass(ClassName.IN); + + if (!callback) { + return; + } + + if (!doAnimate) { + callback(); + return; + } + + $(this._backdrop).one(_Util['default'].TRANSITION_END, callback).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION); + } else if (!this._isShown && this._backdrop) { + $(this._backdrop).removeClass(ClassName.IN); + + var callbackRemove = function callbackRemove() { + _this6._removeBackdrop(); + if (callback) { + callback(); + } + }; + + if (_Util['default'].supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) { + $(this._backdrop).one(_Util['default'].TRANSITION_END, callbackRemove).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION); + } else { + callbackRemove(); + } + } else if (callback) { + callback(); + } + } + }, { + key: '_handleUpdate', + + // ---------------------------------------------------------------------- + // the following methods are used to handle overflowing modals + // todo (fat): these should probably be refactored out of modal.js + // ---------------------------------------------------------------------- + + value: function _handleUpdate() { + this._adjustDialog(); + } + }, { + key: '_adjustDialog', + value: function _adjustDialog() { + var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; + + if (!this._isBodyOverflowing && isModalOverflowing) { + this._element.style.paddingLeft = this._scrollbarWidth + 'px'; + } + + if (this._isBodyOverflowing && !isModalOverflowing) { + this._element.style.paddingRight = this._scrollbarWidth + 'px'; + } + } + }, { + key: '_resetAdjustments', + value: function _resetAdjustments() { + this._element.style.paddingLeft = ''; + this._element.style.paddingRight = ''; + } + }, { + key: '_checkScrollbar', + value: function _checkScrollbar() { + var fullWindowWidth = window.innerWidth; + if (!fullWindowWidth) { + // workaround for missing window.innerWidth in IE8 + var documentElementRect = document.documentElement.getBoundingClientRect(); + fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left); + } + this._isBodyOverflowing = document.body.clientWidth < fullWindowWidth; + this._scrollbarWidth = this._getScrollbarWidth(); + } + }, { + key: '_setScrollbar', + value: function _setScrollbar() { + var bodyPadding = parseInt($(document.body).css('padding-right') || 0, 10); + + this._originalBodyPadding = document.body.style.paddingRight || ''; + + if (this._isBodyOverflowing) { + document.body.style.paddingRight = bodyPadding + this._scrollbarWidth + 'px'; + } + } + }, { + key: '_resetScrollbar', + value: function _resetScrollbar() { + document.body.style.paddingRight = this._originalBodyPadding; + } + }, { + key: '_getScrollbarWidth', + value: function _getScrollbarWidth() { + // thx d.walsh + var scrollDiv = document.createElement('div'); + scrollDiv.className = Selector.SCROLLBAR_MEASURER; + document.body.appendChild(scrollDiv); + var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth; + document.body.removeChild(scrollDiv); + return scrollbarWidth; + } + }], [{ + key: 'VERSION', + + // getters + + get: function () { + return VERSION; + } + }, { + key: 'Default', + get: function () { + return Default; + } + }, { + key: '_jQueryInterface', + + // static + + value: function _jQueryInterface(config, relatedTarget) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = $.extend({}, Modal.Default, $(this).data(), typeof config === 'object' && config); + + if (!data) { + data = new Modal(this, _config); + $(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + data[config](relatedTarget); + } else if (_config.show) { + data.show(relatedTarget); + } + }); + } + }]); + + return Modal; + })(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + var _this7 = this; + + var target = undefined; + var selector = _Util['default'].getSelectorFromElement(this); + + if (selector) { + target = $(selector)[0]; + } + + var config = $(target).data(DATA_KEY) ? 'toggle' : $.extend({}, $(target).data(), $(this).data()); + + if (this.tagName === 'A') { + event.preventDefault(); + } + + var $target = $(target).one(Event.SHOW, function (showEvent) { + if (showEvent.isDefaultPrevented()) { + // only register focus restorer if modal will actually get shown + return; + } + + $target.one(Event.HIDDEN, function () { + if ($(_this7).is(':visible')) { + _this7.focus(); + } + }); + }); + + Modal._jQueryInterface.call($(target), config, this); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Modal._jQueryInterface; + $.fn[NAME].Constructor = Modal; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Modal._jQueryInterface; + }; + + return Modal; + })(jQuery); + + module.exports = Modal; +});
\ No newline at end of file diff --git a/dist/js/umd/popover.js b/dist/js/umd/popover.js new file mode 100644 index 0000000000..e37dd717a4 --- /dev/null +++ b/dist/js/umd/popover.js @@ -0,0 +1,223 @@ +(function (global, factory) { + if (typeof define === 'function' && define.amd) { + define(['exports', 'module', './tooltip'], factory); + } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') { + factory(exports, module, require('./tooltip')); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, mod, global.Tooltip); + global.popover = mod.exports; + } +})(this, function (exports, module, _tooltip) { + 'use strict'; + + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + + function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; } + + var _Tooltip2 = _interopRequireDefault(_tooltip); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): popover.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Popover = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'popover'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.popover'; + var EVENT_KEY = '.' + DATA_KEY; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + + var Default = $.extend({}, _Tooltip2['default'].Default, { + placement: 'right', + trigger: 'click', + content: '', + template: '<div class="popover" role="tooltip">' + '<div class="popover-arrow"></div>' + '<h3 class="popover-title"></h3>' + '<div class="popover-content"></div></div>' + }); + + var DefaultType = $.extend({}, _Tooltip2['default'].DefaultType, { + content: '(string|function)' + }); + + var ClassName = { + FADE: 'fade', + IN: 'in' + }; + + var Selector = { + TITLE: '.popover-title', + CONTENT: '.popover-content', + ARROW: '.popover-arrow' + }; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + INSERTED: 'inserted' + EVENT_KEY, + CLICK: 'click' + EVENT_KEY, + FOCUSIN: 'focusin' + EVENT_KEY, + FOCUSOUT: 'focusout' + EVENT_KEY, + MOUSEENTER: 'mouseenter' + EVENT_KEY, + MOUSELEAVE: 'mouseleave' + EVENT_KEY + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Popover = (function (_Tooltip) { + function Popover() { + _classCallCheck(this, Popover); + + if (_Tooltip != null) { + _Tooltip.apply(this, arguments); + } + } + + _inherits(Popover, _Tooltip); + + _createClass(Popover, [{ + key: 'isWithContent', + + // overrides + + value: function isWithContent() { + return this.getTitle() || this._getContent(); + } + }, { + key: 'getTipElement', + value: function getTipElement() { + return this.tip = this.tip || $(this.config.template)[0]; + } + }, { + key: 'setContent', + value: function setContent() { + var tip = this.getTipElement(); + var title = this.getTitle(); + var content = this._getContent(); + var titleElement = $(tip).find(Selector.TITLE)[0]; + + if (titleElement) { + titleElement[this.config.html ? 'innerHTML' : 'innerText'] = title; + } + + // we use append for html objects to maintain js events + $(tip).find(Selector.CONTENT).children().detach().end()[this.config.html ? typeof content === 'string' ? 'html' : 'append' : 'text'](content); + + $(tip).removeClass(ClassName.FADE).removeClass(ClassName.IN); + + this.cleanupTether(); + } + }, { + key: '_getContent', + + // private + + value: function _getContent() { + return this.element.getAttribute('data-content') || (typeof this.config.content == 'function' ? this.config.content.call(this.element) : this.config.content); + } + }], [{ + key: 'VERSION', + + // getters + + get: function () { + return VERSION; + } + }, { + key: 'Default', + get: function () { + return Default; + } + }, { + key: 'NAME', + get: function () { + return NAME; + } + }, { + key: 'DATA_KEY', + get: function () { + return DATA_KEY; + } + }, { + key: 'Event', + get: function () { + return Event; + } + }, { + key: 'EVENT_KEY', + get: function () { + return EVENT_KEY; + } + }, { + key: 'DefaultType', + get: function () { + return DefaultType; + } + }, { + key: '_jQueryInterface', + + // static + + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = typeof config === 'object' ? config : null; + + if (!data && /destroy|hide/.test(config)) { + return; + } + + if (!data) { + data = new Popover(this, _config); + $(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + data[config](); + } + }); + } + }]); + + return Popover; + })(_Tooltip2['default']); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Popover._jQueryInterface; + $.fn[NAME].Constructor = Popover; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Popover._jQueryInterface; + }; + + return Popover; + })(jQuery); + + module.exports = Popover; +});
\ No newline at end of file diff --git a/dist/js/umd/scrollspy.js b/dist/js/umd/scrollspy.js new file mode 100644 index 0000000000..19f1dfb537 --- /dev/null +++ b/dist/js/umd/scrollspy.js @@ -0,0 +1,334 @@ +(function (global, factory) { + if (typeof define === 'function' && define.amd) { + define(['exports', 'module', './util'], factory); + } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') { + factory(exports, module, require('./util')); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, mod, global.Util); + global.scrollspy = mod.exports; + } +})(this, function (exports, module, _util) { + 'use strict'; + + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + + var _Util = _interopRequireDefault(_util); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): scrollspy.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var ScrollSpy = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'scrollspy'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.scrollspy'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + + var Default = { + offset: 10, + method: 'auto', + target: '' + }; + + var DefaultType = { + offset: 'number', + method: 'string', + target: '(string|element)' + }; + + var Event = { + ACTIVATE: 'activate' + EVENT_KEY, + SCROLL: 'scroll' + EVENT_KEY, + LOAD_DATA_API: 'load' + EVENT_KEY + '' + DATA_API_KEY + }; + + var ClassName = { + DROPDOWN_MENU: 'dropdown-menu', + ACTIVE: 'active' + }; + + var Selector = { + DATA_SPY: '[data-spy="scroll"]', + ACTIVE: '.active', + LI: 'li', + LI_DROPDOWN: 'li.dropdown', + NAV_ANCHORS: '.nav li > a' + }; + + var OffsetMethod = { + OFFSET: 'offset', + POSITION: 'position' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var ScrollSpy = (function () { + function ScrollSpy(element, config) { + _classCallCheck(this, ScrollSpy); + + this._element = element; + this._scrollElement = element.tagName === 'BODY' ? window : element; + this._config = this._getConfig(config); + this._selector = '' + this._config.target + ' ' + Selector.NAV_ANCHORS; + this._offsets = []; + this._targets = []; + this._activeTarget = null; + this._scrollHeight = 0; + + $(this._scrollElement).on(Event.SCROLL, $.proxy(this._process, this)); + + this.refresh(); + this._process(); + } + + _createClass(ScrollSpy, [{ + key: 'refresh', + + // public + + value: function refresh() { + var _this = this; + + var autoMethod = this._scrollElement !== this._scrollElement.window ? OffsetMethod.POSITION : OffsetMethod.OFFSET; + + var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method; + + var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0; + + this._offsets = []; + this._targets = []; + + this._scrollHeight = this._getScrollHeight(); + + var targets = $.makeArray($(this._selector)); + + targets.map(function (element) { + var target = undefined; + var targetSelector = _Util['default'].getSelectorFromElement(element); + + if (targetSelector) { + target = $(targetSelector)[0]; + } + + if (target && (target.offsetWidth || target.offsetHeight)) { + // todo (fat): remove sketch reliance on jQuery position/offset + return [$(target)[offsetMethod]().top + offsetBase, targetSelector]; + } + }).filter(function (item) { + return item; + }).sort(function (a, b) { + return a[0] - b[0]; + }).forEach(function (item) { + _this._offsets.push(item[0]); + _this._targets.push(item[1]); + }); + } + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + $(this._scrollElement).off(EVENT_KEY); + + this._element = null; + this._scrollElement = null; + this._config = null; + this._selector = null; + this._offsets = null; + this._targets = null; + this._activeTarget = null; + this._scrollHeight = null; + } + }, { + key: '_getConfig', + + // private + + value: function _getConfig(config) { + config = $.extend({}, Default, config); + + if (typeof config.target !== 'string') { + var id = $(config.target).attr('id'); + if (!id) { + id = _Util['default'].getUID(NAME); + $(config.target).attr('id', id); + } + config.target = '#' + id; + } + + _Util['default'].typeCheckConfig(NAME, config, DefaultType); + + return config; + } + }, { + key: '_getScrollTop', + value: function _getScrollTop() { + return this._scrollElement === window ? this._scrollElement.scrollY : this._scrollElement.scrollTop; + } + }, { + key: '_getScrollHeight', + value: function _getScrollHeight() { + return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); + } + }, { + key: '_process', + value: function _process() { + var scrollTop = this._getScrollTop() + this._config.offset; + var scrollHeight = this._getScrollHeight(); + var maxScroll = this._config.offset + scrollHeight - this._scrollElement.offsetHeight; + + if (this._scrollHeight !== scrollHeight) { + this.refresh(); + } + + if (scrollTop >= maxScroll) { + var target = this._targets[this._targets.length - 1]; + + if (this._activeTarget !== target) { + this._activate(target); + } + } + + if (this._activeTarget && scrollTop < this._offsets[0]) { + this._activeTarget = null; + this._clear(); + return; + } + + for (var i = this._offsets.length; i--;) { + var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (this._offsets[i + 1] === undefined || scrollTop < this._offsets[i + 1]); + + if (isActiveTarget) { + this._activate(this._targets[i]); + } + } + } + }, { + key: '_activate', + value: function _activate(target) { + this._activeTarget = target; + + this._clear(); + + var selector = '' + this._selector + '[data-target="' + target + '"],' + ('' + this._selector + '[href="' + target + '"]'); + + // todo (fat): getting all the raw li's up the tree is not great. + var parentListItems = $(selector).parents(Selector.LI); + + for (var i = parentListItems.length; i--;) { + $(parentListItems[i]).addClass(ClassName.ACTIVE); + + var itemParent = parentListItems[i].parentNode; + + if (itemParent && $(itemParent).hasClass(ClassName.DROPDOWN_MENU)) { + var closestDropdown = $(itemParent).closest(Selector.LI_DROPDOWN)[0]; + $(closestDropdown).addClass(ClassName.ACTIVE); + } + } + + $(this._scrollElement).trigger(Event.ACTIVATE, { + relatedTarget: target + }); + } + }, { + key: '_clear', + value: function _clear() { + var activeParents = $(this._selector).parentsUntil(this._config.target, Selector.ACTIVE); + + for (var i = activeParents.length; i--;) { + $(activeParents[i]).removeClass(ClassName.ACTIVE); + } + } + }], [{ + key: 'VERSION', + + // getters + + get: function () { + return VERSION; + } + }, { + key: 'Default', + get: function () { + return Default; + } + }, { + key: '_jQueryInterface', + + // static + + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = typeof config === 'object' && config || null; + + if (!data) { + data = new ScrollSpy(this, _config); + $(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + data[config](); + } + }); + } + }]); + + return ScrollSpy; + })(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(window).on(Event.LOAD_DATA_API, function () { + var scrollSpys = $.makeArray($(Selector.DATA_SPY)); + + for (var i = scrollSpys.length; i--;) { + var $spy = $(scrollSpys[i]); + ScrollSpy._jQueryInterface.call($spy, $spy.data()); + } + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = ScrollSpy._jQueryInterface; + $.fn[NAME].Constructor = ScrollSpy; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return ScrollSpy._jQueryInterface; + }; + + return ScrollSpy; + })(jQuery); + + module.exports = ScrollSpy; +});
\ No newline at end of file diff --git a/dist/js/umd/tab.js b/dist/js/umd/tab.js new file mode 100644 index 0000000000..98ced4c55b --- /dev/null +++ b/dist/js/umd/tab.js @@ -0,0 +1,292 @@ +(function (global, factory) { + if (typeof define === 'function' && define.amd) { + define(['exports', 'module', './util'], factory); + } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') { + factory(exports, module, require('./util')); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, mod, global.Util); + global.tab = mod.exports; + } +})(this, function (exports, module, _util) { + 'use strict'; + + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + + var _Util = _interopRequireDefault(_util); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): tab.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Tab = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'tab'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.tab'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 150; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + '' + DATA_API_KEY + }; + + var ClassName = { + DROPDOWN_MENU: 'dropdown-menu', + ACTIVE: 'active', + FADE: 'fade', + IN: 'in' + }; + + var Selector = { + A: 'a', + LI: 'li', + LI_DROPDOWN: 'li.dropdown', + UL: 'ul:not(.dropdown-menu)', + FADE_CHILD: '> .fade', + ACTIVE: '.active', + ACTIVE_CHILD: '> .active', + DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"]', + DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu > .active' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Tab = (function () { + function Tab(element) { + _classCallCheck(this, Tab); + + this._element = element; + } + + _createClass(Tab, [{ + key: 'show', + + // public + + value: function show() { + var _this = this; + + if (this._element.parentNode && this._element.parentNode.nodeType == Node.ELEMENT_NODE && $(this._element).parent().hasClass(ClassName.ACTIVE)) { + return; + } + + var target = undefined; + var previous = undefined; + var ulElement = $(this._element).closest(Selector.UL)[0]; + var selector = _Util['default'].getSelectorFromElement(this._element); + + if (ulElement) { + previous = $.makeArray($(ulElement).find(Selector.ACTIVE)); + previous = previous[previous.length - 1]; + + if (previous) { + previous = $(previous).find(Selector.A)[0]; + } + } + + var hideEvent = $.Event(Event.HIDE, { + relatedTarget: this._element + }); + + var showEvent = $.Event(Event.SHOW, { + relatedTarget: previous + }); + + if (previous) { + $(previous).trigger(hideEvent); + } + + $(this._element).trigger(showEvent); + + if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) { + return; + } + + if (selector) { + target = $(selector)[0]; + } + + this._activate($(this._element).closest(Selector.LI)[0], ulElement); + + var complete = function complete() { + var hiddenEvent = $.Event(Event.HIDDEN, { + relatedTarget: _this._element + }); + + var shownEvent = $.Event(Event.SHOWN, { + relatedTarget: previous + }); + + $(previous).trigger(hiddenEvent); + $(_this._element).trigger(shownEvent); + }; + + if (target) { + this._activate(target, target.parentNode, complete); + } else { + complete(); + } + } + }, { + key: 'dispose', + value: function dispose() { + $.removeClass(this._element, DATA_KEY); + this._element = null; + } + }, { + key: '_activate', + + // private + + value: function _activate(element, container, callback) { + var active = $(container).find(Selector.ACTIVE_CHILD)[0]; + var isTransitioning = callback && _Util['default'].supportsTransitionEnd() && (active && $(active).hasClass(ClassName.FADE) || !!$(container).find(Selector.FADE_CHILD)[0]); + + var complete = $.proxy(this._transitionComplete, this, element, active, isTransitioning, callback); + + if (active && isTransitioning) { + $(active).one(_Util['default'].TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + } else { + complete(); + } + + if (active) { + $(active).removeClass(ClassName.IN); + } + } + }, { + key: '_transitionComplete', + value: function _transitionComplete(element, active, isTransitioning, callback) { + if (active) { + $(active).removeClass(ClassName.ACTIVE); + + var dropdownChild = $(active).find(Selector.DROPDOWN_ACTIVE_CHILD)[0]; + if (dropdownChild) { + $(dropdownChild).removeClass(ClassName.ACTIVE); + } + + var activeToggle = $(active).find(Selector.DATA_TOGGLE)[0]; + if (activeToggle) { + activeToggle.setAttribute('aria-expanded', false); + } + } + + $(element).addClass(ClassName.ACTIVE); + + var elementToggle = $(element).find(Selector.DATA_TOGGLE)[0]; + if (elementToggle) { + elementToggle.setAttribute('aria-expanded', true); + } + + if (isTransitioning) { + _Util['default'].reflow(element); + $(element).addClass(ClassName.IN); + } else { + $(element).removeClass(ClassName.FADE); + } + + if (element.parentNode && $(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) { + + var dropdownElement = $(element).closest(Selector.LI_DROPDOWN)[0]; + if (dropdownElement) { + $(dropdownElement).addClass(ClassName.ACTIVE); + } + + elementToggle = $(element).find(Selector.DATA_TOGGLE)[0]; + if (elementToggle) { + elementToggle.setAttribute('aria-expanded', true); + } + } + + if (callback) { + callback(); + } + } + }], [{ + key: 'VERSION', + + // getters + + get: function () { + return VERSION; + } + }, { + key: '_jQueryInterface', + + // static + + value: function _jQueryInterface(config) { + return this.each(function () { + var $this = $(this); + var data = $this.data(DATA_KEY); + + if (!data) { + data = data = new Tab(this); + $this.data(DATA_KEY, data); + } + + if (typeof config === 'string') { + data[config](); + } + }); + } + }]); + + return Tab; + })(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + event.preventDefault(); + Tab._jQueryInterface.call($(this), 'show'); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Tab._jQueryInterface; + $.fn[NAME].Constructor = Tab; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Tab._jQueryInterface; + }; + + return Tab; + })(jQuery); + + module.exports = Tab; +});
\ No newline at end of file diff --git a/dist/js/umd/tooltip.js b/dist/js/umd/tooltip.js new file mode 100644 index 0000000000..49fca2a75c --- /dev/null +++ b/dist/js/umd/tooltip.js @@ -0,0 +1,613 @@ +(function (global, factory) { + if (typeof define === 'function' && define.amd) { + define(['exports', 'module', './util'], factory); + } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') { + factory(exports, module, require('./util')); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, mod, global.Util); + global.tooltip = mod.exports; + } +})(this, function (exports, module, _util) { + 'use strict'; + + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + + var _Util = _interopRequireDefault(_util); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): tooltip.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Tooltip = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'tooltip'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.tooltip'; + var EVENT_KEY = '.' + DATA_KEY; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 150; + var CLASS_PREFIX = 'bs-tether'; + + var Default = { + animation: true, + template: '<div class="tooltip" role="tooltip">' + '<div class="tooltip-arrow"></div>' + '<div class="tooltip-inner"></div></div>', + trigger: 'hover focus', + title: '', + delay: 0, + html: false, + selector: false, + placement: 'top', + offset: '0 0', + constraints: [] + }; + + var DefaultType = { + animation: 'boolean', + template: 'string', + title: '(string|function)', + trigger: 'string', + delay: '(number|object)', + html: 'boolean', + selector: '(string|boolean)', + placement: '(string|function)', + offset: 'string', + constraints: 'array' + }; + + var AttachmentMap = { + TOP: 'bottom center', + RIGHT: 'middle left', + BOTTOM: 'top center', + LEFT: 'middle right' + }; + + var HoverState = { + IN: 'in', + OUT: 'out' + }; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + INSERTED: 'inserted' + EVENT_KEY, + CLICK: 'click' + EVENT_KEY, + FOCUSIN: 'focusin' + EVENT_KEY, + FOCUSOUT: 'focusout' + EVENT_KEY, + MOUSEENTER: 'mouseenter' + EVENT_KEY, + MOUSELEAVE: 'mouseleave' + EVENT_KEY + }; + + var ClassName = { + FADE: 'fade', + IN: 'in' + }; + + var Selector = { + TOOLTIP: '.tooltip', + TOOLTIP_INNER: '.tooltip-inner' + }; + + var TetherClass = { + element: false, + enabled: false + }; + + var Trigger = { + HOVER: 'hover', + FOCUS: 'focus', + CLICK: 'click', + MANUAL: 'manual' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Tooltip = (function () { + function Tooltip(element, config) { + _classCallCheck(this, Tooltip); + + // private + this._isEnabled = true; + this._timeout = 0; + this._hoverState = ''; + this._activeTrigger = {}; + this._tether = null; + + // protected + this.element = element; + this.config = this._getConfig(config); + this.tip = null; + + this._setListeners(); + } + + _createClass(Tooltip, [{ + key: 'enable', + + // public + + value: function enable() { + this._isEnabled = true; + } + }, { + key: 'disable', + value: function disable() { + this._isEnabled = false; + } + }, { + key: 'toggleEnabled', + value: function toggleEnabled() { + this._isEnabled = !this._isEnabled; + } + }, { + key: 'toggle', + value: function toggle(event) { + var context = this; + var dataKey = this.constructor.DATA_KEY; + + if (event) { + context = $(event.currentTarget).data(dataKey); + + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $(event.currentTarget).data(dataKey, context); + } + + context._activeTrigger.click = !context._activeTrigger.click; + + if (context._isWithActiveTrigger()) { + context._enter(null, context); + } else { + context._leave(null, context); + } + } else { + $(context.getTipElement()).hasClass(ClassName.IN) ? context._leave(null, context) : context._enter(null, context); + } + } + }, { + key: 'dispose', + value: function dispose() { + clearTimeout(this._timeout); + + this.cleanupTether(); + + $.removeData(this.element, this.constructor.DATA_KEY); + + $(this.element).off(this.constructor.EVENT_KEY); + + if (this.tip) { + $(this.tip).remove(); + } + + this._isEnabled = null; + this._timeout = null; + this._hoverState = null; + this._activeTrigger = null; + this._tether = null; + + this.element = null; + this.config = null; + this.tip = null; + } + }, { + key: 'show', + value: function show() { + var _this = this; + + var showEvent = $.Event(this.constructor.Event.SHOW); + + if (this.isWithContent() && this._isEnabled) { + $(this.element).trigger(showEvent); + + var isInTheDom = $.contains(this.element.ownerDocument.documentElement, this.element); + + if (showEvent.isDefaultPrevented() || !isInTheDom) { + return; + } + + var tip = this.getTipElement(); + var tipId = _Util['default'].getUID(this.constructor.NAME); + + tip.setAttribute('id', tipId); + this.element.setAttribute('aria-describedby', tipId); + + this.setContent(); + + if (this.config.animation) { + $(tip).addClass(ClassName.FADE); + } + + var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement; + + var attachment = this._getAttachment(placement); + + $(tip).data(this.constructor.DATA_KEY, this).appendTo(document.body); + + $(this.element).trigger(this.constructor.Event.INSERTED); + + this._tether = new Tether({ + element: tip, + target: this.element, + attachment: attachment, + classes: TetherClass, + classPrefix: CLASS_PREFIX, + offset: this.config.offset, + constraints: this.config.constraints + }); + + _Util['default'].reflow(tip); + this._tether.position(); + + $(tip).addClass(ClassName.IN); + + var complete = function complete() { + var prevHoverState = _this._hoverState; + _this._hoverState = null; + + $(_this.element).trigger(_this.constructor.Event.SHOWN); + + if (prevHoverState === HoverState.OUT) { + _this._leave(null, _this); + } + }; + + _Util['default'].supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE) ? $(this.tip).one(_Util['default'].TRANSITION_END, complete).emulateTransitionEnd(Tooltip._TRANSITION_DURATION) : complete(); + } + } + }, { + key: 'hide', + value: function hide(callback) { + var _this2 = this; + + var tip = this.getTipElement(); + var hideEvent = $.Event(this.constructor.Event.HIDE); + var complete = function complete() { + if (_this2._hoverState !== HoverState.IN && tip.parentNode) { + tip.parentNode.removeChild(tip); + } + + _this2.element.removeAttribute('aria-describedby'); + $(_this2.element).trigger(_this2.constructor.Event.HIDDEN); + _this2.cleanupTether(); + + if (callback) { + callback(); + } + }; + + $(this.element).trigger(hideEvent); + + if (hideEvent.isDefaultPrevented()) { + return; + } + + $(tip).removeClass(ClassName.IN); + + if (_Util['default'].supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE)) { + + $(tip).one(_Util['default'].TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + } else { + complete(); + } + + this._hoverState = ''; + } + }, { + key: 'isWithContent', + + // protected + + value: function isWithContent() { + return !!this.getTitle(); + } + }, { + key: 'getTipElement', + value: function getTipElement() { + return this.tip = this.tip || $(this.config.template)[0]; + } + }, { + key: 'setContent', + value: function setContent() { + var tip = this.getTipElement(); + var title = this.getTitle(); + var method = this.config.html ? 'innerHTML' : 'innerText'; + + $(tip).find(Selector.TOOLTIP_INNER)[0][method] = title; + + $(tip).removeClass(ClassName.FADE).removeClass(ClassName.IN); + + this.cleanupTether(); + } + }, { + key: 'getTitle', + value: function getTitle() { + var title = this.element.getAttribute('data-original-title'); + + if (!title) { + title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title; + } + + return title; + } + }, { + key: 'cleanupTether', + value: function cleanupTether() { + if (this._tether) { + this._tether.destroy(); + + // clean up after tether's junk classes + // remove after they fix issue + // (https://github.com/HubSpot/tether/issues/36) + $(this.element).removeClass(this._removeTetherClasses); + $(this.tip).removeClass(this._removeTetherClasses); + } + } + }, { + key: '_getAttachment', + + // private + + value: function _getAttachment(placement) { + return AttachmentMap[placement.toUpperCase()]; + } + }, { + key: '_setListeners', + value: function _setListeners() { + var _this3 = this; + + var triggers = this.config.trigger.split(' '); + + triggers.forEach(function (trigger) { + if (trigger === 'click') { + $(_this3.element).on(_this3.constructor.Event.CLICK, _this3.config.selector, $.proxy(_this3.toggle, _this3)); + } else if (trigger !== Trigger.MANUAL) { + var eventIn = trigger == Trigger.HOVER ? _this3.constructor.Event.MOUSEENTER : _this3.constructor.Event.FOCUSIN; + var eventOut = trigger == Trigger.HOVER ? _this3.constructor.Event.MOUSELEAVE : _this3.constructor.Event.FOCUSOUT; + + $(_this3.element).on(eventIn, _this3.config.selector, $.proxy(_this3._enter, _this3)).on(eventOut, _this3.config.selector, $.proxy(_this3._leave, _this3)); + } + }); + + if (this.config.selector) { + this.config = $.extend({}, this.config, { + trigger: 'manual', + selector: '' + }); + } else { + this._fixTitle(); + } + } + }, { + key: '_removeTetherClasses', + value: function _removeTetherClasses(i, css) { + return ((css.baseVal || css).match(new RegExp('(^|\\s)' + CLASS_PREFIX + '-\\S+', 'g')) || []).join(' '); + } + }, { + key: '_fixTitle', + value: function _fixTitle() { + var titleType = typeof this.element.getAttribute('data-original-title'); + if (this.element.getAttribute('title') || titleType !== 'string') { + this.element.setAttribute('data-original-title', this.element.getAttribute('title') || ''); + this.element.setAttribute('title', ''); + } + } + }, { + key: '_enter', + value: function _enter(event, context) { + var dataKey = this.constructor.DATA_KEY; + + context = context || $(event.currentTarget).data(dataKey); + + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $(event.currentTarget).data(dataKey, context); + } + + if (event) { + context._activeTrigger[event.type == 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true; + } + + if ($(context.getTipElement()).hasClass(ClassName.IN) || context._hoverState === HoverState.IN) { + context._hoverState = HoverState.IN; + return; + } + + clearTimeout(context._timeout); + + context._hoverState = HoverState.IN; + + if (!context.config.delay || !context.config.delay.show) { + context.show(); + return; + } + + context._timeout = setTimeout(function () { + if (context._hoverState === HoverState.IN) { + context.show(); + } + }, context.config.delay.show); + } + }, { + key: '_leave', + value: function _leave(event, context) { + var dataKey = this.constructor.DATA_KEY; + + context = context || $(event.currentTarget).data(dataKey); + + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $(event.currentTarget).data(dataKey, context); + } + + if (event) { + context._activeTrigger[event.type == 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false; + } + + if (context._isWithActiveTrigger()) { + return; + } + + clearTimeout(context._timeout); + + context._hoverState = HoverState.OUT; + + if (!context.config.delay || !context.config.delay.hide) { + context.hide(); + return; + } + + context._timeout = setTimeout(function () { + if (context._hoverState === HoverState.OUT) { + context.hide(); + } + }, context.config.delay.hide); + } + }, { + key: '_isWithActiveTrigger', + value: function _isWithActiveTrigger() { + for (var trigger in this._activeTrigger) { + if (this._activeTrigger[trigger]) { + return true; + } + } + + return false; + } + }, { + key: '_getConfig', + value: function _getConfig(config) { + config = $.extend({}, this.constructor.Default, $(this.element).data(), config); + + if (config.delay && typeof config.delay === 'number') { + config.delay = { + show: config.delay, + hide: config.delay + }; + } + + _Util['default'].typeCheckConfig(NAME, config, this.constructor.DefaultType); + + return config; + } + }, { + key: '_getDelegateConfig', + value: function _getDelegateConfig() { + var config = {}; + + if (this.config) { + for (var key in this.config) { + var value = this.config[key]; + if (this.constructor.Default[key] !== value) { + config[key] = value; + } + } + } + + return config; + } + }], [{ + key: 'VERSION', + + // getters + + get: function () { + return VERSION; + } + }, { + key: 'Default', + get: function () { + return Default; + } + }, { + key: 'NAME', + get: function () { + return NAME; + } + }, { + key: 'DATA_KEY', + get: function () { + return DATA_KEY; + } + }, { + key: 'Event', + get: function () { + return Event; + } + }, { + key: 'EVENT_KEY', + get: function () { + return EVENT_KEY; + } + }, { + key: 'DefaultType', + get: function () { + return DefaultType; + } + }, { + key: '_jQueryInterface', + + // static + + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = typeof config === 'object' ? config : null; + + if (!data && /destroy|hide/.test(config)) { + return; + } + + if (!data) { + data = new Tooltip(this, _config); + $(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + data[config](); + } + }); + } + }]); + + return Tooltip; + })(); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Tooltip._jQueryInterface; + $.fn[NAME].Constructor = Tooltip; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Tooltip._jQueryInterface; + }; + + return Tooltip; + })(jQuery); + + module.exports = Tooltip; +});
\ No newline at end of file diff --git a/dist/js/umd/util.js b/dist/js/umd/util.js new file mode 100644 index 0000000000..a813505c84 --- /dev/null +++ b/dist/js/umd/util.js @@ -0,0 +1,166 @@ +(function (global, factory) { + if (typeof define === 'function' && define.amd) { + define(['exports', 'module'], factory); + } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') { + factory(exports, module); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, mod); + global.util = mod.exports; + } +})(this, function (exports, module) { + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): util.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + 'use strict'; + + var Util = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Private TransitionEnd Helpers + * ------------------------------------------------------------------------ + */ + + var transition = false; + + var TransitionEndEvent = { + WebkitTransition: 'webkitTransitionEnd', + MozTransition: 'transitionend', + OTransition: 'oTransitionEnd otransitionend', + transition: 'transitionend' + }; + + // shoutout AngusCroll (https://goo.gl/pxwQGp) + function toType(obj) { + return ({}).toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase(); + } + + function isElement(obj) { + return (obj[0] || obj).nodeType; + } + + function getSpecialTransitionEndEvent() { + return { + bindType: transition.end, + delegateType: transition.end, + handle: function handle(event) { + if ($(event.target).is(this)) { + return event.handleObj.handler.apply(this, arguments); + } + } + }; + } + + function transitionEndTest() { + if (window.QUnit) { + return false; + } + + var el = document.createElement('bootstrap'); + + for (var name in TransitionEndEvent) { + if (el.style[name] !== undefined) { + return { end: TransitionEndEvent[name] }; + } + } + + return false; + } + + function transitionEndEmulator(duration) { + var _this = this; + + var called = false; + + $(this).one(Util.TRANSITION_END, function () { + called = true; + }); + + setTimeout(function () { + if (!called) { + Util.triggerTransitionEnd(_this); + } + }, duration); + + return this; + } + + function setTransitionEndSupport() { + transition = transitionEndTest(); + + $.fn.emulateTransitionEnd = transitionEndEmulator; + + if (Util.supportsTransitionEnd()) { + $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent(); + } + } + + /** + * -------------------------------------------------------------------------- + * Public Util Api + * -------------------------------------------------------------------------- + */ + + var Util = { + + TRANSITION_END: 'bsTransitionEnd', + + getUID: function getUID(prefix) { + do prefix += ~ ~(Math.random() * 1000000); while (document.getElementById(prefix)); + return prefix; + }, + + getSelectorFromElement: function getSelectorFromElement(element) { + var selector = element.getAttribute('data-target'); + + if (!selector) { + selector = element.getAttribute('href') || ''; + selector = /^#[a-z]/i.test(selector) ? selector : null; + } + + return selector; + }, + + reflow: function reflow(element) { + new Function('bs', 'return bs')(element.offsetHeight); + }, + + triggerTransitionEnd: function triggerTransitionEnd(element) { + $(element).trigger(transition.end); + }, + + supportsTransitionEnd: function supportsTransitionEnd() { + return !!transition; + }, + + typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) { + + for (var property in configTypes) { + var expectedTypes = configTypes[property]; + var value = config[property]; + var valueType = undefined; + + if (value && isElement(value)) valueType = 'element';else valueType = toType(value); + + if (!new RegExp(expectedTypes).test(valueType)) { + throw new Error('' + componentName.toUpperCase() + ': ' + ('Option "' + property + '" provided type "' + valueType + '" ') + ('but expected type "' + expectedTypes + '".')); + } + } + } + + }; + + setTransitionEndSupport(); + + return Util; + })(jQuery); + + module.exports = Util; +});
\ No newline at end of file diff --git a/docs/assets/css/docs.min.css b/docs/assets/css/docs.min.css index 441717dd57..7cad55311c 100644 --- a/docs/assets/css/docs.min.css +++ b/docs/assets/css/docs.min.css @@ -3,4 +3,4 @@ * Copyright 2011-2014 Twitter, Inc. * Licensed under the Creative Commons Attribution 3.0 Unported License. For * details, see http://creativecommons.org/licenses/by/3.0/. - */.bd-featurette,.bd-footer{border-top:1px solid #eee}.bd-example:after,.bd-header:after{clear:both}.ge,.sd{font-style:italic}.bd-container{position:relative;max-width:62rem;padding:0 1rem 1rem;margin-right:auto;margin-left:auto}@media (min-width:768px){.bd-container{padding:2rem}}@media (min-width:992px){.bd-container{padding:4rem}}.bd-container>table{display:block;width:100%;max-width:100%;overflow-y:auto;margin-bottom:1rem}.bd-container>table>tbody>tr>td,.bd-container>table>tbody>tr>th,.bd-container>table>tfoot>tr>td,.bd-container>table>tfoot>tr>th,.bd-container>table>thead>tr>td,.bd-container>table>thead>tr>th{padding:.75rem;line-height:1.5;vertical-align:top;border:1px solid #eceeef}.bd-container>table td:first-child>code{white-space:nowrap}.bd-content>h2{margin-top:3rem}.bd-content>h3{margin-top:1.5rem}.bd-content>ol li,.bd-content>ul li{margin-bottom:.25rem}@media (min-width:34em){.bd-title{font-size:4rem}.bd-title+p{font-size:1.5rem;font-weight:300}}.bd-sidebar{padding:0;margin-bottom:0;background-color:#fafafa}.bd-sidebar .navbar-toggler{position:absolute;top:1rem;right:0;z-index:5}.bd-sidebar .navbar-header{float:none;margin-right:-15px}.bd-sidebar .navbar-collapse{padding:0;border:0}@media (min-width:992px){.bd-docs{margin-left:240px}.bd-sidebar{position:fixed;top:0;bottom:0;left:0;width:240px;overflow-y:auto;border-right:1px solid #eee}}.bd-example,.bd-masthead,.bd-search{position:relative}.bd-sidebar .navbar-brand{display:block;float:none;height:auto;padding:1.55rem 1.25rem;font-size:20px;font-weight:500;line-height:1}.bd-sidebar-brand:focus,.bd-sidebar-brand:hover{text-decoration:none}.bd-search{margin-right:1.25rem;margin-bottom:1.5rem;margin-left:1.25rem}.bd-search .form-control{height:2.45rem;padding-top:.4rem;padding-bottom:.4rem}.bd-search-results{right:0;display:block;padding:0;overflow:hidden;font-size:.9rem}.bd-search-results:empty{display:none}.bd-search-results>li>a{padding-left:.75rem;padding-right:.75rem}.bd-search-results>li:first-child{margin-top:.25rem}.bd-search-results>li:last-child{margin-bottom:.25rem}.bd-search-results>.no-results{padding:.75rem 1rem;color:#7a7a7a;text-align:center}.bd-sidenav{display:none}.active>.bd-sidenav,.bd-toc-link{display:block}.bd-toc-link{padding:.25rem 1.25rem;color:#55595c}.bd-toc-link:focus,.bd-toc-link:hover{color:#0275d8;text-decoration:none}.active>.bd-toc-link{font-weight:500;color:#373a3c}.bd-toc-item.active{margin-top:1rem;margin-bottom:1rem}.bd-toc-item:first-child{margin-top:0}.bd-toc-item:last-child{margin-bottom:2rem}.bd-sidebar .nav>li>a{display:block;padding:.25rem 1.25rem;font-size:90%;color:#99979c}.bd-sidebar .nav>li>a:focus,.bd-sidebar .nav>li>a:hover{color:#0275d8;text-decoration:none;background-color:transparent}.bd-sidebar .nav>.active:focus>a,.bd-sidebar .nav>.active:hover>a,.bd-sidebar .nav>.active>a{font-weight:500;color:#373a3c;background-color:transparent}.bd-sidebar .nav .nav{display:none;padding-bottom:.75rem}.bd-booticon,.bd-sidebar .nav>.active>.nav{display:block}.bd-sidebar .nav .nav>li>a{padding-top:1px;padding-bottom:1px;font-weight:400;padding-top:.125rem;padding-bottom:.125rem;padding-left:2rem;font-size:80%}.bd-sidebar .nav .nav>.active:focus>a,.bd-sidebar .nav .nav>.active:hover>a,.bd-sidebar .nav .nav>.active>a{font-weight:500}.bd-booticon{width:9rem;height:9rem;font-size:6.5rem;line-height:9rem;color:#fff;text-align:center;cursor:default;background-color:#563d7c;border-radius:15%}.bd-brand-logos,.bd-callout,.bd-callout code,.bd-team img,.color-swatch{border-radius:.25rem}.carbonad,.carbonad-tag,.carbonad-text{width:auto!important;height:auto!important}.bd-booticon.inverse{color:#563d7c;background-color:#fff}.bd-booticon.outline{background-color:transparent;border:1px solid #cdbfe3}.bd-nav-home{margin-bottom:0;background-color:#563d7c;border-bottom:0}.bd-nav-home .navbar-brand>a{font-weight:500;color:#fff}.bd-nav-home .nav-link{font-weight:500;color:#cdbfe3}.bd-nav-home .nav-link:focus,.bd-nav-home .nav-link:hover{color:#fff;background-color:rgba(0,0,0,.5)}.bd-header{padding-bottom:.5rem;margin-bottom:1rem;border-bottom:1px solid rgba(255,255,255,.25)}.bd-header:after,.bd-header:before{content:" ";display:table}.bd-header .bd-header-mark{float:left;padding-top:.6em;padding-bottom:.6em;font-size:1.25rem;font-weight:500}.bd-header-nav{float:right}.bd-header-nav .nav-link{float:left}.bd-header-nav .nav-link:hover{background-color:transparent}.bd-masthead{padding:2rem 0;text-align:center}.bd-masthead .bd-booticon{margin:0 auto 2rem;color:#55595c;border-color:#55595c}.bd-masthead h1{font-weight:300;line-height:1}.bd-masthead .lead{margin-left:auto;margin-right:auto;margin-bottom:2rem;font-size:1.25rem}.bd-masthead .version{margin-top:-1rem;margin-bottom:2rem}.bd-masthead .btn{width:100%;padding:1rem 2rem;font-size:1.25rem;font-weight:500;color:#55595c;border-color:#55595c}.bd-masthead .btn:hover{color:#fff;background-color:#55595c}@media (min-width:480px){.bd-masthead .btn{width:auto}}@media (min-width:768px){.bd-masthead{padding:2rem 0 4rem}.bd-header{margin-bottom:4rem}.bd-masthead h1{font-size:4rem}.bd-masthead .lead{font-size:1.5rem}}@media (min-width:992px){.bd-masthead .lead{width:80%;font-size:2rem}}.bd-featurette{padding-top:3rem;padding-bottom:3rem;font-size:1rem;line-height:1.5;color:#555;text-align:center;background-color:#fff}.bd-featurette .highlight,.carbonad{text-align:left}.bd-featurette-title{margin-bottom:.5rem;font-size:2rem;font-weight:400;color:#333}.half-rule{width:6rem;margin:2.5rem auto}.bd-featurette h4{margin-top:1rem;margin-bottom:.5rem;font-weight:400;color:#333}.bd-featurette-img{display:block;margin-bottom:1.25rem;color:#333}.bd-featurette-img:hover{color:#0275d8;text-decoration:none}.bd-featurette-img img{display:block;margin-bottom:1rem}@media (min-width:480px){.bd-featurette .img-responsive{margin-top:2rem}}@media (min-width:768px){.bd-featurette{padding-top:6rem;padding-bottom:6rem}.bd-featurette-title{font-size:2.5rem}.bd-featurette .lead{max-width:80%;margin-right:auto;margin-left:auto}.bd-featurette .img-responsive{margin-top:0}}.bd-featured-sites{margin-right:-1px;margin-left:-1px}.bd-featured-sites .col-xs-6{padding:1px}.bd-featured-sites .img-responsive{margin-top:0}.carbonad{padding:1.25rem!important;margin:0 -1rem 2rem!important;overflow:hidden;font-size:.8rem!important;line-height:1rem!important;color:#55595c!important;background:#f5f5f5!important;border:0!important}.carbonad-img{margin:0!important}.carbonad-tag,.carbonad-text{display:block!important;float:none!important;margin-left:145px!important;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif!important}.carbonad-text{padding-top:0!important}.carbonad-tag{color:inherit!important;text-align:left!important}.anchorjs-link,.bd-brand-item,.bd-example-tooltips,.responsive-utilities td{text-align:center}.carbonad-tag a,.carbonad-text a{color:#55595c!important}.carbonad-tag a:hover,.carbonad-text a:hover{color:#0275d8!important}.carbonad #azcarbon>img{display:none}@media (min-width:34em){.carbonad{width:330px!important;margin:1.5rem auto!important;border-width:1px!important;border-radius:.25rem}.bd-masthead .carbonad{margin:3rem auto 0!important}}@media (min-width:48em){.carbonad{margin-right:0!important;margin-left:0!important}}@media (min-width:62em){.carbonad{float:right;width:330px!important;padding:1rem!important;margin:.5rem 0 1rem 2rem!important}.bd-masthead .carbonad{float:none;margin:0 auto!important}}.bd-footer{padding-top:2rem;margin-top:2rem;font-size:85%;color:#777}.bd-footer-links{padding-left:0;margin-top:20px;color:#999}.bd-footer-links li{display:inline;padding:0 2px}.bd-footer-links li:first-child{padding-left:0}@media (min-width:768px){.bd-featured-sites .col-sm-3:first-child img{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.bd-featured-sites .col-sm-3:last-child img{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.bd-footer p{margin-bottom:0}}.bd-social{margin-bottom:1.5rem;margin-left:-.5rem}.bd-social-buttons{display:inline-block;padding-left:0;margin-bottom:0;list-style:none}.bd-social-buttons li{display:inline-block;padding:.25rem .5rem;line-height:1}.bd-social-buttons .twitter-follow-button{width:225px!important}.bd-social-buttons .twitter-share-button{width:98px!important}.github-btn{overflow:hidden;border:0}.bd-example-row .row{margin-bottom:1rem}.bd-example-row .row>[class^=col-]{padding-top:.75rem;padding-bottom:.75rem;background-color:rgba(86,61,124,.15);border:1px solid rgba(86,61,124,.2)}.bd-example{padding:1rem;margin:1rem -1rem;border:solid #f7f7f9;border-width:.2rem 0 0}.bd-example:after,.bd-example:before{content:" ";display:table}@media (min-width:34em){.bd-example{margin-left:0;margin-right:0;margin-bottom:0;padding:1.5rem;border-width:.2rem}}.bd-example+.highlight{margin-top:-1rem}.bd-example+.zero-clipboard+.highlight{margin-top:0}.bd-example+p{margin-top:2rem}.bd-example .container{width:auto}.bd-example>.alert+.alert,.bd-example>.nav+.nav,.bd-example>.navbar+.navbar,.bd-example>.progress+.btn,.bd-example>.progress+.progress{margin-top:1rem}.bd-example>.dropdown-menu:first-child{position:static;display:block}.bd-example>.table-responsive:last-child>.table,.bd-example>:last-child{margin-bottom:0!important}.bd-example>.close{float:none}.bd-example-type .table .type-info{color:#999;vertical-align:middle}.bd-example-type .table td{padding:1rem 0;border-color:#eee}.bd-example-type .table tr:first-child td{border-top:0}.bd-example-type h1,.bd-example-type h2,.bd-example-type h3,.bd-example-type h4,.bd-example-type h5,.bd-example-type h6{margin:0}.bd-example-bg-classes p{padding:1rem}.bd-example>img+img{margin-left:.5rem}.bd-example>.btn-group{margin-top:.25rem;margin-bottom:.25rem}.bd-example-control-sizing input[type=text]+input[type=text],.bd-example-control-sizing select,.bd-example>.btn-toolbar+.btn-toolbar{margin-top:.5rem}.bd-example-form .input-group{margin-bottom:.5rem}.bd-example>textarea.form-control{resize:vertical}.bd-example>.list-group{max-width:400px}.bd-example .navbar:last-child{margin-bottom:0}.bd-navbar-bottom-example,.bd-navbar-top-example{z-index:1;padding:0;overflow:hidden}.bd-navbar-bottom-example .navbar-header,.bd-navbar-top-example .navbar-header{margin-left:0}.bd-navbar-bottom-example .navbar-fixed-bottom,.bd-navbar-top-example .navbar-fixed-top{position:relative;margin-right:0;margin-left:0}.bd-navbar-top-example{padding-bottom:45px}.bd-navbar-top-example .navbar-fixed-top{top:-1px}.bd-navbar-bottom-example{padding-top:45px}.bd-navbar-bottom-example .navbar-fixed-bottom{bottom:-1px}.bd-navbar-bottom-example .navbar{margin-bottom:0}@media (min-width:768px){.bd-navbar-bottom-example .navbar-fixed-bottom,.bd-navbar-top-example .navbar-fixed-top{position:absolute}}.bd-example .pagination{margin-top:.5rem;margin-bottom:.5rem}.bd-example>.pager{margin-top:0}.bd-example-modal{background-color:#f5f5f5}.bd-example-modal .modal{position:relative;top:auto;right:auto;bottom:auto;left:auto;z-index:1;display:block}.bd-example-modal .modal-dialog{left:auto;margin-right:auto;margin-left:auto}.bd-example>.dropdown>.dropdown-toggle{float:left}.bd-example>.dropdown>.dropdown-menu{position:static;display:block;margin-bottom:.25rem;clear:left}.bd-example-tabs .nav-tabs{margin-bottom:1rem}.bd-example-tooltips>.btn{margin-top:.25rem;margin-bottom:.25rem}.bd-example-popover{padding-bottom:1.5rem;background-color:#f9f9f9}.bd-example-popover .popover{position:relative;display:block;float:left;width:260px;margin:1.25rem}.bd-example-tooltip .tooltip{position:relative;display:inline-block;margin:10px 20px;opacity:1}.scrollspy-example{position:relative;height:200px;margin-top:.5rem;overflow:auto}.bd-example>.center-block:not(img){max-width:200px;padding:.5rem;background-color:#eee}.bd-example>.bg-danger,.bd-example>.bg-info,.bd-example>.bg-primary,.bd-example>.bg-success,.bd-example>.bg-warning{padding:.5rem;margin-top:.5rem;margin-bottom:.5rem}.highlight{padding:1rem;margin:1rem -1rem;background-color:#f7f7f9}@media (min-width:34em){.highlight{padding:1.5rem;margin-right:0;margin-left:0}}.highlight pre{padding:0;margin-top:0;margin-bottom:0;background-color:transparent;border:0}.highlight pre code{font-size:inherit;color:#373a3c}#focusedInput{border-color:#66afe9;outline:0;outline:dotted thin;-webkit-box-shadow:0 0 .5rem rgba(102,175,233,.6);box-shadow:0 0 .5rem rgba(102,175,233,.6)}.table-responsive .highlight pre{white-space:normal}.bd-table th small,.responsive-utilities th small{display:block;font-weight:400;color:#999}.responsive-utilities tbody th{font-weight:400}.responsive-utilities td.is-visible{color:#468847;background-color:#dff0d8!important}.responsive-utilities td.is-hidden{color:#ccc;background-color:#f9f9f9!important}.responsive-utilities-test{margin-top:.25rem}.responsive-utilities-test .col-xs-6{margin-bottom:.5rem}.responsive-utilities-test span{display:block;padding:1rem .5rem;font-size:1rem;font-weight:700;line-height:1.1;text-align:center;border-radius:.25rem}.hidden-on .col-xs-6>.not-visible,.visible-on .col-xs-6>.not-visible{color:#999;border:1px solid #ddd}.hidden-on .col-xs-6 .visible,.visible-on .col-xs-6 .visible{color:#468847;background-color:#dff0d8;border:1px solid #d6e9c6}@media (max-width:33.9em){.hidden-xs-only{display:none!important}}@media (min-width:34em)and (max-width:47.9em){.hidden-sm-only{display:none!important}}@media (min-width:48em)and (max-width:61.9em){.hidden-md-only{display:none!important}}@media (min-width:62em)and (max-width:74.9em){.hidden-lg-only{display:none!important}}@media (min-width:75em){.hidden-xl-only{display:none!important}}.btn-outline{color:#563d7c;background-color:transparent;border-color:#563d7c}.btn-outline:active,.btn-outline:focus,.btn-outline:hover{color:#fff;background-color:#563d7c;border-color:#563d7c}.btn-outline-inverse{color:#fff;background-color:transparent;border-color:#cdbfe3}.btn-outline-inverse:active,.btn-outline-inverse:focus,.btn-outline-inverse:hover{color:#563d7c;text-shadow:none;background-color:#fff;border-color:#fff}.bd-callout{padding:1.25rem;margin-top:1.25rem;margin-bottom:1.25rem;border:1px solid #eee;border-left-width:.25rem}.bd-callout h4{margin-top:0;margin-bottom:.25rem}.bd-callout p:last-child{margin-bottom:0}.bd-callout+.bd-callout{margin-top:-.25rem}.bd-callout-info{border-left-color:#5bc0de}.bd-callout-info h4{color:#5bc0de}.bd-callout-warning{border-left-color:#f0ad4e}.bd-callout-warning h4{color:#f0ad4e}.bd-callout-danger{border-left-color:#d9534f}.bd-callout-danger h4{color:#d9534f}.bd-examples .img-thumbnail{margin-bottom:.75rem}.bd-examples h4{margin-bottom:.25rem}.bd-examples p{margin-bottom:1.25rem}@media (max-width:480px){.bd-examples{margin-right:-.75rem;margin-left:-.75rem}.bd-examples>[class^=col-]{padding-right:.75rem;padding-left:.75rem}}.bd-team .team-member{line-height:2rem;color:#555}.bd-team .team-member:hover{color:#333;text-decoration:none}.bd-team .github-btn{float:right;width:180px;height:1.25rem;margin-top:.25rem}.bd-team img{float:left;width:2rem;margin-right:.5rem}.bd-browser-bugs td p{margin-bottom:0}.bd-browser-bugs th:first-child{width:18%}.bd-brand-logos{display:table;width:100%;margin-bottom:1rem;overflow:hidden;color:#563d7c;background-color:#f9f9f9}.bd-brand-logos .inverse,.color-swatches .bd-purple{background-color:#563d7c}.bd-brand-item{padding:4rem 0}.bd-brand-item+.bd-brand-item{border-top:1px solid #fff}.bd-brand-logos .inverse{color:#fff}.bd-brand-item h1,.bd-brand-item h3{margin-top:0;margin-bottom:0}.bd-brand-item .bd-booticon{margin-right:auto;margin-left:auto}@media (min-width:768px){.bd-brand-item{display:table-cell;width:1%}.bd-brand-item+.bd-brand-item{border-top:0;border-left:1px solid #fff}.bd-brand-item h1{font-size:4rem}}.color-swatches{margin:0 -5px;overflow:hidden}.color-swatch{float:left;width:4rem;height:4rem;margin-right:.25rem;margin-left:.25rem}.color-swatches .bd-purple-light{background-color:#cdbfe3}.color-swatches .bd-purple-lighter{background-color:#e5e1ea}.color-swatches .bd-gray{background-color:#f9f9f9}.zero-clipboard{position:relative;display:none;float:right}.btn-clipboard{position:absolute;top:0;right:0;z-index:10;display:block;padding:.25rem .5rem;font-size:75%;color:#818a91;cursor:pointer;background-color:#eceeef;border-radius:0 .2rem}.btn-clipboard-hover{color:#fff;background-color:#027de7}@media (min-width:768px){.color-swatch{width:6rem;height:6rem}.zero-clipboard{display:block}}.hll{background-color:#ffc}.c{color:#999}.err{color:#A00;background-color:#FAA}.k{color:#069}.o{color:#555}.cm{color:#999}.cp{color:#099}.c1,.cs{color:#999}.gd{background-color:#FCC;border:1px solid #C00}.gr{color:red}.gh{color:#030}.gi{background-color:#CFC;border:1px solid #0C0}.go{color:#AAA}.gp{color:#009}.gu{color:#030}.gt{color:#9C6}.kc,.kd,.kn,.kp,.kr{color:#069}.kt{color:#078}.m{color:#F60}.s{color:#d44950}.na{color:#4f9fcf}.nb{color:#366}.nc{color:#0A8}.no{color:#360}.nd{color:#99F}.ni{color:#999}.ne{color:#C00}.nf{color:#C0F}.nl{color:#99F}.nn{color:#0CF}.nt{color:#2f6f9f}.nv{color:#033}.ow{color:#000}.w{color:#bbb}.mf,.mh,.mi,.mo{color:#F60}.s2,.sb,.sc,.sd,.se,.sh{color:#C30}.si{color:#A00}.sx{color:#C30}.sr{color:#3AA}.s1{color:#C30}.ss{color:#FC3}.bp{color:#366}.vc,.vg,.vi{color:#033}.il{color:#F60}.css .nt+.nt,.css .o,.css .o+.nt{color:#999}@font-face{font-family:anchorjs-icons;src:url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg6v8yoAAAC8AAAAYGNtYXDL8RqdAAABHAAAADxnYXNwAAAAEAAAAVgAAAAIZ2x5Zkm2oNUAAAFgAAABWGhlYWQAHd4cAAACuAAAADZoaGVhB3sECwAAAvAAAAAkaG10eAYAAEcAAAMUAAAADGxvY2EACgCsAAADIAAAAAhtYXhwAAYAcAAAAygAAAAgbmFtZUQXtNYAAANIAAABOXBvc3QAAwAAAAAEhAAAACAAAwQAAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAACDmAAPA/8D/wAPAAEAAAAAAAAAAAAAAAAAAAAAgAAAAAAACAAAAAwAAABQAAwABAAAAFAAEACgAAAAGAAQAAQACACDmAP//AAAAIOYA////4RoCAAEAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAIARwAHA7kDeQA2AG0AAAEnLgEiBg8BDgEUFh8BHgMXNy4DLwEuATQ2PwE+ATIWHwEeARQGDwEeAxU3PgE0JicBLgMnBx4DHwEeARQGDwEOASImLwEuATQ2PwEuAzUHDgEUFh8BHgEyNj8BPgE0Ji8BA7kEI1ldWiPaIyQkIwQDBgYGBFAEBwYHAwQTExMT2xMwMjETBBMTExNjBwkGA5gkIyMk/r4DBgYGBFAEBwYHAwQTExMT2xMwMjETBBMTExNjBwkGA5gkIyMkBCNZXVoj2iMkJCMEA3UEJCMjJNojWV1aIwQDBgUFA1ACBQUFAwQUMDIxE9oTExMTBBMxMjATYxAhISIRmSNaXVkj/sYDBgUFA1ACBQUFAwQUMDIxE9oTExMTBBMxMjATYxAhISIRmSNaXVkjBCQjIyTaI1ldWiMEAAEAAAABAABR/4xQXw889QALBAAAAAAAzqNM0wAAAADOo0zTAAAAAAO5A3kAAAAIAAIAAAAAAAAAAQAAA8D/wAAABAAAAABHA7kAAQAAAAAAAAAAAAAAAAAAAAMAAAAAAgAAAAQAAEcAAAAAAAoArAABAAAAAwBuAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAADgCuAAEAAAAAAAEADgAAAAEAAAAAAAIADgBHAAEAAAAAAAMADgAkAAEAAAAAAAQADgBVAAEAAAAAAAUAFgAOAAEAAAAAAAYABwAyAAEAAAAAAAoAKABjAAMAAQQJAAEADgAAAAMAAQQJAAIADgBHAAMAAQQJAAMADgAkAAMAAQQJAAQADgBVAAMAAQQJAAUAFgAOAAMAAQQJAAYADgA5AAMAAQQJAAoAKABjAGkAYwBvAG0AbwBvAG4AVgBlAHIAcwBpAG8AbgAgADAALgAwAGkAYwBvAG0AbwBvAG5pY29tb29uAGkAYwBvAG0AbwBvAG4AUgBlAGcAdQBsAGEAcgBpAGMAbwBtAG8AbwBuAEcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAASQBjAG8ATQBvAG8AbgAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA) format('truetype'),url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAATwAAsAAAAABKQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAABCAAAAGAAAABgDq/zKmNtYXAAAAFoAAAAPAAAADzL8RqdZ2FzcAAAAaQAAAAIAAAACAAAABBnbHlmAAABrAAAAVgAAAFYSbag1WhlYWQAAAMEAAAANgAAADYAHd4caGhlYQAAAzwAAAAkAAAAJAd7BAtobXR4AAADYAAAAAwAAAAMBgAAR2xvY2EAAANsAAAACAAAAAgACgCsbWF4cAAAA3QAAAAgAAAAIAAGAHBuYW1lAAADlAAAATkAAAE5RBe01nBvc3QAAATQAAAAIAAAACAAAwAAAAMEAAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAg5gADwP/A/8ADwABAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAgAAAAMAAAAUAAMAAQAAABQABAAoAAAABgAEAAEAAgAg5gD//wAAACDmAP///+EaAgABAAAAAAAAAAEAAf//AA8AAQAAAAAAAAAAAAIAADc5AQAAAAACAEcABwO5A3kANgBtAAABJy4BIgYPAQ4BFBYfAR4DFzcuAy8BLgE0Nj8BPgEyFh8BHgEUBg8BHgMVNz4BNCYnAS4DJwceAx8BHgEUBg8BDgEiJi8BLgE0Nj8BLgM1Bw4BFBYfAR4BMjY/AT4BNCYvAQO5BCNZXVoj2iMkJCMEAwYGBgRQBAcGBwMEExMTE9sTMDIxEwQTExMTYwcJBgOYJCMjJP6+AwYGBgRQBAcGBwMEExMTE9sTMDIxEwQTExMTYwcJBgOYJCMjJAQjWV1aI9ojJCQjBAN1BCQjIyTaI1ldWiMEAwYFBQNQAgUFBQMEFDAyMRPaExMTEwQTMTIwE2MQISEiEZkjWl1ZI/7GAwYFBQNQAgUFBQMEFDAyMRPaExMTEwQTMTIwE2MQISEiEZkjWl1ZIwQkIyMk2iNZXVojBAABAAAAAQAAUf+MUF8PPPUACwQAAAAAAM6jTNMAAAAAzqNM0wAAAAADuQN5AAAACAACAAAAAAAAAAEAAAPA/8AAAAQAAAAARwO5AAEAAAAAAAAAAAAAAAAAAAADAAAAAAIAAAAEAABHAAAAAAAKAKwAAQAAAAMAbgACAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAA4ArgABAAAAAAABAA4AAAABAAAAAAACAA4ARwABAAAAAAADAA4AJAABAAAAAAAEAA4AVQABAAAAAAAFABYADgABAAAAAAAGAAcAMgABAAAAAAAKACgAYwADAAEECQABAA4AAAADAAEECQACAA4ARwADAAEECQADAA4AJAADAAEECQAEAA4AVQADAAEECQAFABYADgADAAEECQAGAA4AOQADAAEECQAKACgAYwBpAGMAbwBtAG8AbwBuAFYAZQByAHMAaQBvAG4AIAAwAC4AMABpAGMAbwBtAG8AbwBuaWNvbW9vbgBpAGMAbwBtAG8AbwBuAFIAZQBnAHUAbABhAHIAaQBjAG8AbQBvAG8AbgBHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==) format('woff');font-style:normal;font-weight:400}.anchorjs-icon{font-family:anchorjs-icons;font-style:normal;font-variant:normal;font-weight:400;line-height:1;speak:none;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.anchorjs-link{opacity:0;text-decoration:none}.anchorjs-link:focus,:hover>.anchorjs-link{opacity:1;-webkit-transition:color .16s linear;-o-transition:color .16s linear;transition:color .16s linear}.anchorjs-description{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.anchorjs-link{float:left;width:1.2em;height:1em;padding-right:.2em;margin-top:.25em;margin-left:-1.2em;font-size:70%;color:inherit}:hover>.anchorjs-link:hover{color:#0275d8;text-decoration:none}.anchorjs-icon:before{content:'\e600'}@media (max-width:47.9em){.anchorjs-link{display:none}}
\ No newline at end of file + */.bd-featurette,.bd-footer{border-top:1px solid #eee}.bd-example:after,.bd-header:after{clear:both}.ge,.sd{font-style:italic}.bd-container{position:relative;max-width:62rem;padding:0 1rem 1rem;margin-right:auto;margin-left:auto}@media (min-width:768px){.bd-container{padding:2rem}}@media (min-width:992px){.bd-container{padding:4rem}}.bd-container>table{display:block;width:100%;max-width:100%;overflow-y:auto;margin-bottom:1rem}.bd-container>table>tbody>tr>td,.bd-container>table>tbody>tr>th,.bd-container>table>tfoot>tr>td,.bd-container>table>tfoot>tr>th,.bd-container>table>thead>tr>td,.bd-container>table>thead>tr>th{padding:.75rem;line-height:1.5;vertical-align:top;border:1px solid #eceeef}.bd-container>table td:first-child>code{white-space:nowrap}.bd-content>h2{margin-top:3rem}.bd-content>h3{margin-top:1.5rem}.bd-content>ol li,.bd-content>ul li{margin-bottom:.25rem}@media (min-width:34em){.bd-title{font-size:4rem}.bd-title+p{font-size:1.5rem;font-weight:300}}.bd-sidebar{padding:0;margin-bottom:0;background-color:#fafafa}.bd-sidebar .navbar-toggler{position:absolute;top:1rem;right:0;z-index:5}.bd-sidebar .navbar-header{float:none;margin-right:-15px}.bd-sidebar .navbar-collapse{padding:0;border:0}@media (min-width:992px){.bd-docs{margin-left:240px}.bd-sidebar{position:fixed;top:0;bottom:0;left:0;width:240px;overflow-y:auto;border-right:1px solid #eee}}.bd-example,.bd-masthead,.bd-search{position:relative}.bd-sidebar .navbar-brand{display:block;float:none;height:auto;padding:1.55rem 1.25rem;font-size:20px;font-weight:500;line-height:1}.bd-sidebar-brand:focus,.bd-sidebar-brand:hover{text-decoration:none}.bd-search{margin-right:1.25rem;margin-bottom:1.5rem;margin-left:1.25rem}.bd-search .form-control{height:2.45rem;padding-top:.4rem;padding-bottom:.4rem}.bd-search-results{right:0;display:block;padding:0;overflow:hidden;font-size:.9rem}.bd-search-results:empty{display:none}.bd-search-results>li>a{padding-left:.75rem;padding-right:.75rem}.bd-search-results>li:first-child{margin-top:.25rem}.bd-search-results>li:last-child{margin-bottom:.25rem}.bd-search-results>.no-results{padding:.75rem 1rem;color:#7a7a7a;text-align:center}.bd-sidenav{display:none}.active>.bd-sidenav,.bd-toc-link{display:block}.bd-toc-link{padding:.25rem 1.25rem;color:#55595c}.bd-toc-link:focus,.bd-toc-link:hover{color:#0275d8;text-decoration:none}.active>.bd-toc-link{font-weight:500;color:#373a3c}.bd-toc-item.active{margin-top:1rem;margin-bottom:1rem}.bd-toc-item:first-child{margin-top:0}.bd-toc-item:last-child{margin-bottom:2rem}.bd-sidebar .nav>li>a{display:block;padding:.25rem 1.25rem;font-size:90%;color:#99979c}.bd-sidebar .nav>li>a:focus,.bd-sidebar .nav>li>a:hover{color:#0275d8;text-decoration:none;background-color:transparent}.bd-sidebar .nav>.active:focus>a,.bd-sidebar .nav>.active:hover>a,.bd-sidebar .nav>.active>a{font-weight:500;color:#373a3c;background-color:transparent}.bd-sidebar .nav .nav{display:none;padding-bottom:.75rem}.bd-booticon,.bd-sidebar .nav>.active>.nav{display:block}.bd-sidebar .nav .nav>li>a{padding-top:1px;padding-bottom:1px;font-weight:400;padding-top:.125rem;padding-bottom:.125rem;padding-left:2rem;font-size:80%}.bd-sidebar .nav .nav>.active:focus>a,.bd-sidebar .nav .nav>.active:hover>a,.bd-sidebar .nav .nav>.active>a{font-weight:500}.bd-booticon{width:9rem;height:9rem;font-size:6.5rem;line-height:9rem;color:#fff;text-align:center;cursor:default;background-color:#563d7c;border-radius:15%}.bd-callout,.bd-callout code{border-radius:.25rem}.bd-booticon.inverse{color:#563d7c;background-color:#fff}.bd-booticon.outline{background-color:transparent;border:1px solid #cdbfe3}.bd-nav-home{margin-bottom:0;background-color:#563d7c;border-bottom:0}.bd-nav-home .navbar-brand>a{font-weight:500;color:#fff}.bd-nav-home .nav-link{font-weight:500;color:#cdbfe3}.bd-nav-home .nav-link:focus,.bd-nav-home .nav-link:hover{color:#fff;background-color:rgba(0,0,0,.5)}.bd-header{padding-bottom:.5rem;margin-bottom:1rem;border-bottom:1px solid rgba(255,255,255,.25)}.bd-header:after,.bd-header:before{content:" ";display:table}.bd-header .bd-header-mark{float:left;padding-top:.6em;padding-bottom:.6em;font-size:1.25rem;font-weight:500}.bd-header-nav{float:right}.bd-header-nav .nav-link{float:left}.bd-header-nav .nav-link:hover{background-color:transparent}.bd-masthead{padding:2rem 0;text-align:center}.bd-masthead .bd-booticon{margin:0 auto 2rem;color:#55595c;border-color:#55595c}.bd-masthead h1{font-weight:300;line-height:1}.bd-masthead .lead{margin-left:auto;margin-right:auto;margin-bottom:2rem;font-size:1.25rem}.bd-masthead .version{margin-top:-1rem;margin-bottom:2rem}.bd-masthead .btn{width:100%;padding:1rem 2rem;font-size:1.25rem;font-weight:500;color:#55595c;border-color:#55595c}.bd-masthead .btn:hover{color:#fff;background-color:#55595c}@media (min-width:480px){.bd-masthead .btn{width:auto}}@media (min-width:768px){.bd-masthead{padding:2rem 0 4rem}.bd-header{margin-bottom:4rem}.bd-masthead h1{font-size:4rem}.bd-masthead .lead{font-size:1.5rem}}@media (min-width:992px){.bd-masthead .lead{width:80%;font-size:2rem}}.bd-featurette{padding-top:3rem;padding-bottom:3rem;font-size:1rem;line-height:1.5;color:#555;text-align:center;background-color:#fff}.bd-featurette .highlight,.carbonad{text-align:left}.bd-featurette-title{margin-bottom:.5rem;font-size:2rem;font-weight:400;color:#333}.half-rule{width:6rem;margin:2.5rem auto}.carbonad,.carbonad-tag,.carbonad-text{width:auto!important;height:auto!important}.bd-featurette h4{margin-top:1rem;margin-bottom:.5rem;font-weight:400;color:#333}.bd-featurette-img{display:block;margin-bottom:1.25rem;color:#333}.bd-featurette-img:hover{color:#0275d8;text-decoration:none}.bd-featurette-img img{display:block;margin-bottom:1rem}@media (min-width:480px){.bd-featurette .img-responsive{margin-top:2rem}}@media (min-width:768px){.bd-featurette{padding-top:6rem;padding-bottom:6rem}.bd-featurette-title{font-size:2.5rem}.bd-featurette .lead{max-width:80%;margin-right:auto;margin-left:auto}.bd-featurette .img-responsive{margin-top:0}}.bd-featured-sites{margin-right:-1px;margin-left:-1px}.bd-featured-sites .col-xs-6{padding:1px}.bd-featured-sites .img-responsive{margin-top:0}.carbonad{padding:1.25rem!important;margin:0 -1rem 2rem!important;overflow:hidden;font-size:.8rem!important;line-height:1rem!important;color:#55595c!important;background:#f5f5f5!important;border:0!important}.carbonad-img{margin:0!important}.carbonad-tag,.carbonad-text{display:block!important;float:none!important;margin-left:145px!important;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif!important}.carbonad-text{padding-top:0!important}.carbonad-tag{color:inherit!important;text-align:left!important}.anchorjs-link,.bd-brand-item,.bd-example-tooltips,.responsive-utilities td{text-align:center}.carbonad-tag a,.carbonad-text a{color:#55595c!important}.carbonad-tag a:hover,.carbonad-text a:hover{color:#0275d8!important}.carbonad #azcarbon>img{display:none}@media (min-width:34em){.carbonad{width:330px!important;margin:1.5rem auto!important;border-width:1px!important;border-radius:.25rem}.bd-masthead .carbonad{margin:3rem auto 0!important}}@media (min-width:48em){.carbonad{margin-right:0!important;margin-left:0!important}}@media (min-width:62em){.carbonad{float:right;width:330px!important;padding:1rem!important;margin:.5rem 0 1rem 2rem!important}.bd-masthead .carbonad{float:none;margin:0 auto!important}}.bd-footer{padding-top:2rem;margin-top:2rem;font-size:85%;color:#777}.bd-footer-links{padding-left:0;margin-top:20px;color:#999}.bd-footer-links li{display:inline;padding:0 2px}.bd-footer-links li:first-child{padding-left:0}@media (min-width:768px){.bd-featured-sites .col-sm-3:first-child img{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.bd-featured-sites .col-sm-3:last-child img{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.bd-footer p{margin-bottom:0}}.bd-social{margin-bottom:1.5rem;margin-left:-.5rem}.bd-social-buttons{display:inline-block;padding-left:0;margin-bottom:0;list-style:none}.bd-social-buttons li{display:inline-block;padding:.25rem .5rem;line-height:1}.bd-social-buttons .twitter-follow-button{width:225px!important}.bd-social-buttons .twitter-share-button{width:98px!important}.github-btn{overflow:hidden;border:0}.bd-example-row .row{margin-bottom:1rem}.bd-example-row .row>[class^=col-]{padding-top:.75rem;padding-bottom:.75rem;background-color:rgba(86,61,124,.15);border:1px solid rgba(86,61,124,.2)}.bd-example{padding:1rem;margin:1rem -1rem;border:solid #f7f7f9;border-width:.2rem 0 0}.bd-example:after,.bd-example:before{content:" ";display:table}@media (min-width:34em){.bd-example{margin-left:0;margin-right:0;margin-bottom:0;padding:1.5rem;border-width:.2rem}}.bd-example+.highlight{margin-top:-1rem}.bd-example+.zero-clipboard+.highlight{margin-top:0}.bd-example+p{margin-top:2rem}.bd-example .container{width:auto}.bd-example>.alert+.alert,.bd-example>.nav+.nav,.bd-example>.navbar+.navbar,.bd-example>.progress+.btn,.bd-example>.progress+.progress{margin-top:1rem}.bd-example>.dropdown-menu:first-child{position:static;display:block}.bd-example>.table-responsive:last-child>.table,.bd-example>:last-child{margin-bottom:0!important}.bd-example>.close{float:none}.bd-example-type .table .type-info{color:#999;vertical-align:middle}.bd-example-type .table td{padding:1rem 0;border-color:#eee}.bd-example-type .table tr:first-child td{border-top:0}.bd-example-type h1,.bd-example-type h2,.bd-example-type h3,.bd-example-type h4,.bd-example-type h5,.bd-example-type h6{margin:0}.bd-example-bg-classes p{padding:1rem}.bd-example>img+img{margin-left:.5rem}.bd-example>.btn-group{margin-top:.25rem;margin-bottom:.25rem}.bd-example-control-sizing input[type=text]+input[type=text],.bd-example-control-sizing select,.bd-example>.btn-toolbar+.btn-toolbar{margin-top:.5rem}.bd-example-form .input-group{margin-bottom:.5rem}.bd-example>textarea.form-control{resize:vertical}.bd-example>.list-group{max-width:400px}.bd-example .navbar:last-child{margin-bottom:0}.bd-navbar-bottom-example,.bd-navbar-top-example{z-index:1;padding:0;overflow:hidden}.bd-navbar-bottom-example .navbar-header,.bd-navbar-top-example .navbar-header{margin-left:0}.bd-navbar-bottom-example .navbar-fixed-bottom,.bd-navbar-top-example .navbar-fixed-top{position:relative;margin-right:0;margin-left:0}.bd-navbar-top-example{padding-bottom:45px}.bd-navbar-top-example .navbar-fixed-top{top:-1px}.bd-navbar-bottom-example{padding-top:45px}.bd-navbar-bottom-example .navbar-fixed-bottom{bottom:-1px}.bd-navbar-bottom-example .navbar{margin-bottom:0}@media (min-width:768px){.bd-navbar-bottom-example .navbar-fixed-bottom,.bd-navbar-top-example .navbar-fixed-top{position:absolute}}.bd-example .pagination{margin-top:.5rem;margin-bottom:.5rem}.bd-example>.pager{margin-top:0}.bd-example-modal{background-color:#f5f5f5}.bd-example-modal .modal{position:relative;top:auto;right:auto;bottom:auto;left:auto;z-index:1;display:block}.bd-example-modal .modal-dialog{left:auto;margin-right:auto;margin-left:auto}.bd-example>.dropdown>.dropdown-toggle{float:left}.bd-example>.dropdown>.dropdown-menu{position:static;display:block;margin-bottom:.25rem;clear:left}.bd-example-tabs .nav-tabs{margin-bottom:1rem}.bd-example-tooltips>.btn{margin-top:.25rem;margin-bottom:.25rem}.bd-example-popover{padding-bottom:1.5rem;background-color:#f9f9f9}.bd-example-popover .popover{position:relative;display:block;float:left;width:260px;margin:1.25rem}.bd-example-tooltip .tooltip{position:relative;display:inline-block;margin:10px 20px;opacity:1}.scrollspy-example{position:relative;height:200px;margin-top:.5rem;overflow:auto}.bd-example>.center-block:not(img){max-width:200px;padding:.5rem;background-color:#eee}.bd-example>.bg-danger,.bd-example>.bg-info,.bd-example>.bg-primary,.bd-example>.bg-success,.bd-example>.bg-warning{padding:.5rem;margin-top:.5rem;margin-bottom:.5rem}.highlight{padding:1rem;margin:1rem -1rem;background-color:#f7f7f9}@media (min-width:34em){.highlight{padding:1.5rem;margin-right:0;margin-left:0}}.highlight pre{padding:0;margin-top:0;margin-bottom:0;background-color:transparent;border:0}.highlight pre code{font-size:inherit;color:#373a3c}#focusedInput{border-color:#66afe9;outline:0;outline:dotted thin;-webkit-box-shadow:0 0 .5rem rgba(102,175,233,.6);box-shadow:0 0 .5rem rgba(102,175,233,.6)}.table-responsive .highlight pre{white-space:normal}.bd-table th small,.responsive-utilities th small{display:block;font-weight:400;color:#999}.responsive-utilities tbody th{font-weight:400}.responsive-utilities td.is-visible{color:#468847;background-color:#dff0d8!important}.responsive-utilities td.is-hidden{color:#ccc;background-color:#f9f9f9!important}.responsive-utilities-test{margin-top:.25rem}.responsive-utilities-test .col-xs-6{margin-bottom:.5rem}.responsive-utilities-test span{display:block;padding:1rem .5rem;font-size:1rem;font-weight:700;line-height:1.1;text-align:center;border-radius:.25rem}.hidden-on .col-xs-6>.not-visible,.visible-on .col-xs-6>.not-visible{color:#999;border:1px solid #ddd}.hidden-on .col-xs-6 .visible,.visible-on .col-xs-6 .visible{color:#468847;background-color:#dff0d8;border:1px solid #d6e9c6}@media (max-width:33.9em){.hidden-xs-only{display:none!important}}@media (min-width:34em)and (max-width:47.9em){.hidden-sm-only{display:none!important}}@media (min-width:48em)and (max-width:61.9em){.hidden-md-only{display:none!important}}@media (min-width:62em)and (max-width:74.9em){.hidden-lg-only{display:none!important}}@media (min-width:75em){.hidden-xl-only{display:none!important}}.btn-outline{color:#563d7c;background-color:transparent;border-color:#563d7c}.btn-outline:active,.btn-outline:focus,.btn-outline:hover{color:#fff;background-color:#563d7c;border-color:#563d7c}.btn-outline-inverse{color:#fff;background-color:transparent;border-color:#cdbfe3}.btn-outline-inverse:active,.btn-outline-inverse:focus,.btn-outline-inverse:hover{color:#563d7c;text-shadow:none;background-color:#fff;border-color:#fff}.bd-callout{padding:1.25rem;margin-top:1.25rem;margin-bottom:1.25rem;border:1px solid #eee;border-left-width:.25rem}.bd-callout h4{margin-top:0;margin-bottom:.25rem}.bd-callout p:last-child{margin-bottom:0}.bd-callout+.bd-callout{margin-top:-.25rem}.bd-callout-info{border-left-color:#5bc0de}.bd-callout-info h4{color:#5bc0de}.bd-callout-warning{border-left-color:#f0ad4e}.bd-callout-warning h4{color:#f0ad4e}.bd-callout-danger{border-left-color:#d9534f}.bd-callout-danger h4{color:#d9534f}.bd-examples .img-thumbnail{margin-bottom:.75rem}.bd-examples h4{margin-bottom:.25rem}.bd-examples p{margin-bottom:1.25rem}@media (max-width:480px){.bd-examples{margin-right:-.75rem;margin-left:-.75rem}.bd-examples>[class^=col-]{padding-right:.75rem;padding-left:.75rem}}.bd-team .team-member{line-height:2rem;color:#555}.bd-team .team-member:hover{color:#333;text-decoration:none}.bd-team .github-btn{float:right;width:180px;height:1.25rem;margin-top:.25rem}.bd-team img,.color-swatch{float:left;border-radius:.25rem}.bd-team img{width:2rem;margin-right:.5rem}.bd-browser-bugs td p{margin-bottom:0}.bd-browser-bugs th:first-child{width:18%}.bd-brand-logos{display:table;width:100%;margin-bottom:1rem;overflow:hidden;color:#563d7c;background-color:#f9f9f9;border-radius:.25rem}.bd-brand-logos .inverse,.color-swatches .bd-purple{background-color:#563d7c}.bd-brand-item{padding:4rem 0}.bd-brand-item+.bd-brand-item{border-top:1px solid #fff}.bd-brand-logos .inverse{color:#fff}.bd-brand-item h1,.bd-brand-item h3{margin-top:0;margin-bottom:0}.bd-brand-item .bd-booticon{margin-right:auto;margin-left:auto}@media (min-width:768px){.bd-brand-item{display:table-cell;width:1%}.bd-brand-item+.bd-brand-item{border-top:0;border-left:1px solid #fff}.bd-brand-item h1{font-size:4rem}}.color-swatches{margin:0 -5px;overflow:hidden}.color-swatch{width:4rem;height:4rem;margin-right:.25rem;margin-left:.25rem}.color-swatches .bd-purple-light{background-color:#cdbfe3}.color-swatches .bd-purple-lighter{background-color:#e5e1ea}.color-swatches .bd-gray{background-color:#f9f9f9}.zero-clipboard{position:relative;display:none;float:right}.btn-clipboard{position:absolute;top:0;right:0;z-index:10;display:block;padding:.25rem .5rem;font-size:75%;color:#818a91;cursor:pointer;background-color:#eceeef;border-radius:0 .2rem}.btn-clipboard-hover{color:#fff;background-color:#027de7}@media (min-width:768px){.color-swatch{width:6rem;height:6rem}.zero-clipboard{display:block}}.hll{background-color:#ffc}.c{color:#999}.err{color:#A00;background-color:#FAA}.k{color:#069}.o{color:#555}.cm{color:#999}.cp{color:#099}.c1,.cs{color:#999}.gd{background-color:#FCC;border:1px solid #C00}.gr{color:red}.gh{color:#030}.gi{background-color:#CFC;border:1px solid #0C0}.go{color:#AAA}.gp{color:#009}.gu{color:#030}.gt{color:#9C6}.kc,.kd,.kn,.kp,.kr{color:#069}.kt{color:#078}.m{color:#F60}.s{color:#d44950}.na{color:#4f9fcf}.nb{color:#366}.nc{color:#0A8}.no{color:#360}.nd{color:#99F}.ni{color:#999}.ne{color:#C00}.nf{color:#C0F}.nl{color:#99F}.nn{color:#0CF}.nt{color:#2f6f9f}.nv{color:#033}.ow{color:#000}.w{color:#bbb}.mf,.mh,.mi,.mo{color:#F60}.s2,.sb,.sc,.sd,.se,.sh{color:#C30}.si{color:#A00}.sx{color:#C30}.sr{color:#3AA}.s1{color:#C30}.ss{color:#FC3}.bp{color:#366}.vc,.vg,.vi{color:#033}.il{color:#F60}.css .nt+.nt,.css .o,.css .o+.nt{color:#999}@font-face{font-family:anchorjs-icons;src:url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg6v8yoAAAC8AAAAYGNtYXDL8RqdAAABHAAAADxnYXNwAAAAEAAAAVgAAAAIZ2x5Zkm2oNUAAAFgAAABWGhlYWQAHd4cAAACuAAAADZoaGVhB3sECwAAAvAAAAAkaG10eAYAAEcAAAMUAAAADGxvY2EACgCsAAADIAAAAAhtYXhwAAYAcAAAAygAAAAgbmFtZUQXtNYAAANIAAABOXBvc3QAAwAAAAAEhAAAACAAAwQAAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAACDmAAPA/8D/wAPAAEAAAAAAAAAAAAAAAAAAAAAgAAAAAAACAAAAAwAAABQAAwABAAAAFAAEACgAAAAGAAQAAQACACDmAP//AAAAIOYA////4RoCAAEAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAIARwAHA7kDeQA2AG0AAAEnLgEiBg8BDgEUFh8BHgMXNy4DLwEuATQ2PwE+ATIWHwEeARQGDwEeAxU3PgE0JicBLgMnBx4DHwEeARQGDwEOASImLwEuATQ2PwEuAzUHDgEUFh8BHgEyNj8BPgE0Ji8BA7kEI1ldWiPaIyQkIwQDBgYGBFAEBwYHAwQTExMT2xMwMjETBBMTExNjBwkGA5gkIyMk/r4DBgYGBFAEBwYHAwQTExMT2xMwMjETBBMTExNjBwkGA5gkIyMkBCNZXVoj2iMkJCMEA3UEJCMjJNojWV1aIwQDBgUFA1ACBQUFAwQUMDIxE9oTExMTBBMxMjATYxAhISIRmSNaXVkj/sYDBgUFA1ACBQUFAwQUMDIxE9oTExMTBBMxMjATYxAhISIRmSNaXVkjBCQjIyTaI1ldWiMEAAEAAAABAABR/4xQXw889QALBAAAAAAAzqNM0wAAAADOo0zTAAAAAAO5A3kAAAAIAAIAAAAAAAAAAQAAA8D/wAAABAAAAABHA7kAAQAAAAAAAAAAAAAAAAAAAAMAAAAAAgAAAAQAAEcAAAAAAAoArAABAAAAAwBuAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAADgCuAAEAAAAAAAEADgAAAAEAAAAAAAIADgBHAAEAAAAAAAMADgAkAAEAAAAAAAQADgBVAAEAAAAAAAUAFgAOAAEAAAAAAAYABwAyAAEAAAAAAAoAKABjAAMAAQQJAAEADgAAAAMAAQQJAAIADgBHAAMAAQQJAAMADgAkAAMAAQQJAAQADgBVAAMAAQQJAAUAFgAOAAMAAQQJAAYADgA5AAMAAQQJAAoAKABjAGkAYwBvAG0AbwBvAG4AVgBlAHIAcwBpAG8AbgAgADAALgAwAGkAYwBvAG0AbwBvAG5pY29tb29uAGkAYwBvAG0AbwBvAG4AUgBlAGcAdQBsAGEAcgBpAGMAbwBtAG8AbwBuAEcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAASQBjAG8ATQBvAG8AbgAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA) format("truetype"),url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAATwAAsAAAAABKQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAABCAAAAGAAAABgDq/zKmNtYXAAAAFoAAAAPAAAADzL8RqdZ2FzcAAAAaQAAAAIAAAACAAAABBnbHlmAAABrAAAAVgAAAFYSbag1WhlYWQAAAMEAAAANgAAADYAHd4caGhlYQAAAzwAAAAkAAAAJAd7BAtobXR4AAADYAAAAAwAAAAMBgAAR2xvY2EAAANsAAAACAAAAAgACgCsbWF4cAAAA3QAAAAgAAAAIAAGAHBuYW1lAAADlAAAATkAAAE5RBe01nBvc3QAAATQAAAAIAAAACAAAwAAAAMEAAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAg5gADwP/A/8ADwABAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAgAAAAMAAAAUAAMAAQAAABQABAAoAAAABgAEAAEAAgAg5gD//wAAACDmAP///+EaAgABAAAAAAAAAAEAAf//AA8AAQAAAAAAAAAAAAIAADc5AQAAAAACAEcABwO5A3kANgBtAAABJy4BIgYPAQ4BFBYfAR4DFzcuAy8BLgE0Nj8BPgEyFh8BHgEUBg8BHgMVNz4BNCYnAS4DJwceAx8BHgEUBg8BDgEiJi8BLgE0Nj8BLgM1Bw4BFBYfAR4BMjY/AT4BNCYvAQO5BCNZXVoj2iMkJCMEAwYGBgRQBAcGBwMEExMTE9sTMDIxEwQTExMTYwcJBgOYJCMjJP6+AwYGBgRQBAcGBwMEExMTE9sTMDIxEwQTExMTYwcJBgOYJCMjJAQjWV1aI9ojJCQjBAN1BCQjIyTaI1ldWiMEAwYFBQNQAgUFBQMEFDAyMRPaExMTEwQTMTIwE2MQISEiEZkjWl1ZI/7GAwYFBQNQAgUFBQMEFDAyMRPaExMTEwQTMTIwE2MQISEiEZkjWl1ZIwQkIyMk2iNZXVojBAABAAAAAQAAUf+MUF8PPPUACwQAAAAAAM6jTNMAAAAAzqNM0wAAAAADuQN5AAAACAACAAAAAAAAAAEAAAPA/8AAAAQAAAAARwO5AAEAAAAAAAAAAAAAAAAAAAADAAAAAAIAAAAEAABHAAAAAAAKAKwAAQAAAAMAbgACAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAA4ArgABAAAAAAABAA4AAAABAAAAAAACAA4ARwABAAAAAAADAA4AJAABAAAAAAAEAA4AVQABAAAAAAAFABYADgABAAAAAAAGAAcAMgABAAAAAAAKACgAYwADAAEECQABAA4AAAADAAEECQACAA4ARwADAAEECQADAA4AJAADAAEECQAEAA4AVQADAAEECQAFABYADgADAAEECQAGAA4AOQADAAEECQAKACgAYwBpAGMAbwBtAG8AbwBuAFYAZQByAHMAaQBvAG4AIAAwAC4AMABpAGMAbwBtAG8AbwBuaWNvbW9vbgBpAGMAbwBtAG8AbwBuAFIAZQBnAHUAbABhAHIAaQBjAG8AbQBvAG8AbgBHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==) format("woff");font-style:normal;font-weight:400}.anchorjs-icon{font-family:anchorjs-icons;font-style:normal;font-variant:normal;font-weight:400;line-height:1;speak:none;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.anchorjs-link{opacity:0;text-decoration:none}.anchorjs-link:focus,:hover>.anchorjs-link{opacity:1;-webkit-transition:color .16s linear;-o-transition:color .16s linear;transition:color .16s linear}.anchorjs-description{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.anchorjs-link{float:left;width:1.2em;height:1em;padding-right:.2em;margin-top:.25em;margin-left:-1.2em;font-size:70%;color:inherit}:hover>.anchorjs-link:hover{color:#0275d8;text-decoration:none}.anchorjs-icon:before{content:'\e600'}@media (max-width:47.9em){.anchorjs-link{display:none}}
\ No newline at end of file diff --git a/docs/assets/css/docs.min.css.map b/docs/assets/css/docs.min.css.map index c00d288af3..407bea8402 100644 --- a/docs/assets/css/docs.min.css.map +++ b/docs/assets/css/docs.min.css.map @@ -2,59 +2,59 @@ "version": 3, "file": "docs.min.css", "sources": [ - "../../../docs.scss", - "../../../../../../scss/_variables.scss", - "../../../../../../scss/_mixins.scss", - "../../../_layout.scss", - "../../../_sidebar.scss", - "../../../_booticon.scss", - "../../../_homepage.scss", - "../../../_ads.scss", - "../../../_footer.scss", - "../../../_social-buttons.scss", - "../../../_page-header.scss", - "../../../_component-examples.scss", - "../../../_responsive-tests.scss", - "../../../_buttons.scss", - "../../../_callouts.scss", - "../../../_examples.scss", - "../../../_team.scss", - "../../../_browser-bugs.scss", - "../../../_brand.scss", - "../../../_zeroclipboard.scss", - "../../../_syntax.scss", - "../../../_anchor.scss", - "../../../../../../scss/mixins/_breakpoints.scss", - "../../../../../../scss/mixins/_hide-text.scss", - "../../../../../../scss/mixins/_hover.scss", - "../../../../../../scss/mixins/_image.scss", - "../../../../../../scss/mixins/_label.scss", - "../../../../../../scss/mixins/_reset-filter.scss", - "../../../../../../scss/mixins/_resize.scss", - "../../../../../../scss/mixins/_responsive-visibility.scss", - "../../../../../../scss/mixins/_screen-reader.scss", - "../../../../../../scss/mixins/_size.scss", - "../../../../../../scss/mixins/_tab-focus.scss", - "../../../../../../scss/mixins/_text-emphasis.scss", - "../../../../../../scss/mixins/_text-truncate.scss", - "../../../../../../scss/mixins/_alert.scss", - "../../../../../../scss/mixins/_buttons.scss", - "../../../../../../scss/mixins/_pagination.scss", - "../../../../../../scss/mixins/_list-group.scss", - "../../../../../../scss/mixins/_nav-divider.scss", - "../../../../../../scss/mixins/_forms.scss", - "../../../../../../scss/mixins/_progress.scss", - "../../../../../../scss/mixins/_table-row.scss", - "../../../../../../scss/mixins/_background-variant.scss", - "../../../../../../scss/mixins/_border-radius.scss", - "../../../../../../scss/mixins/_gradients.scss", - "../../../../../../scss/mixins/_clearfix.scss", - "../../../../../../scss/mixins/_center-block.scss", - "../../../../../../scss/mixins/_grid-framework.scss", - "../../../../../../scss/mixins/_grid.scss", - "../../../../../../scss/mixins/_pulls.scss" + "../scss/docs.scss", + "../../../scss/_variables.scss", + "../../../scss/_mixins.scss", + "../scss/_layout.scss", + "../scss/_sidebar.scss", + "../scss/_booticon.scss", + "../scss/_homepage.scss", + "../scss/_ads.scss", + "../scss/_footer.scss", + "../scss/_social-buttons.scss", + "../scss/_page-header.scss", + "../scss/_component-examples.scss", + "../scss/_responsive-tests.scss", + "../scss/_buttons.scss", + "../scss/_callouts.scss", + "../scss/_examples.scss", + "../scss/_team.scss", + "../scss/_browser-bugs.scss", + "../scss/_brand.scss", + "../scss/_zeroclipboard.scss", + "../scss/_syntax.scss", + "../scss/_anchor.scss", + "../../../scss/mixins/_breakpoints.scss", + "../../../scss/mixins/_hide-text.scss", + "../../../scss/mixins/_hover.scss", + "../../../scss/mixins/_image.scss", + "../../../scss/mixins/_label.scss", + "../../../scss/mixins/_reset-filter.scss", + "../../../scss/mixins/_resize.scss", + "../../../scss/mixins/_responsive-visibility.scss", + "../../../scss/mixins/_screen-reader.scss", + "../../../scss/mixins/_size.scss", + "../../../scss/mixins/_tab-focus.scss", + "../../../scss/mixins/_text-emphasis.scss", + "../../../scss/mixins/_text-truncate.scss", + "../../../scss/mixins/_alert.scss", + "../../../scss/mixins/_buttons.scss", + "../../../scss/mixins/_pagination.scss", + "../../../scss/mixins/_list-group.scss", + "../../../scss/mixins/_nav-divider.scss", + "../../../scss/mixins/_forms.scss", + "../../../scss/mixins/_progress.scss", + "../../../scss/mixins/_table-row.scss", + "../../../scss/mixins/_background-variant.scss", + "../../../scss/mixins/_border-radius.scss", + "../../../scss/mixins/_gradients.scss", + "../../../scss/mixins/_clearfix.scss", + "../../../scss/mixins/_center-block.scss", + "../../../scss/mixins/_grid-framework.scss", + "../../../scss/mixins/_grid.scss", + "../../../scss/mixins/_pulls.scss" ], "sourcesContent": [], - "mappings": "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", + "mappings": "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", "names": [] }
\ No newline at end of file diff --git a/docs/assets/js/ie10-viewport-bug-workaround.js b/docs/assets/js/ie10-viewport-bug-workaround.js index 7f53b61458..ab1696734a 100644 --- a/docs/assets/js/ie10-viewport-bug-workaround.js +++ b/docs/assets/js/ie10-viewport-bug-workaround.js @@ -10,6 +10,7 @@ (function () { 'use strict'; + if (navigator.userAgent.match(/IEMobile\/10\.0/)) { var msViewportStyle = document.createElement('style') msViewportStyle.appendChild( diff --git a/docs/assets/js/src/application.js b/docs/assets/js/src/application.js index 0f840133a4..bb65df5320 100644 --- a/docs/assets/js/src/application.js +++ b/docs/assets/js/src/application.js @@ -51,7 +51,7 @@ // Button state demo $('#loading-example-btn').on('click', function () { - var btn = $(this) + var $btn = $(this) btn.button('loading') setTimeout(function () { btn.button('reset') @@ -60,11 +60,11 @@ // Modal relatedTarget demo $('#exampleModal').on('show.bs.modal', function (event) { - var button = $(event.relatedTarget) // Button that triggered the modal + var $button = $(event.relatedTarget) // Button that triggered the modal var recipient = button.data('whatever') // Extract info from data-* attributes // If necessary, you could initiate an AJAX request here (and then do the updating in a callback). // Update the modal's content. We'll use jQuery here, but you could use a data binding library or other methods instead. - var modal = $(this) + var $modal = $(this) modal.find('.modal-title').text('New message to ' + recipient) modal.find('.modal-body input').val(recipient) }) @@ -89,7 +89,7 @@ $(this).before(btnHtml) }) var zeroClipboard = new ZeroClipboard($('.btn-clipboard')) - var htmlBridge = $('#global-zeroclipboard-html-bridge') + var $htmlBridge = $('#global-zeroclipboard-html-bridge') // Handlers for ZeroClipboard zeroClipboard.on('load', function () { @@ -129,5 +129,7 @@ ;(function () { 'use strict'; + + addAnchors('.bd-container > h1, .bd-container > h2, .bd-container > h3, .bd-container > h4, .bd-container > h5'); })(); diff --git a/docs/components/forms.md b/docs/components/forms.md index eeec713550..b2e2263b62 100644 --- a/docs/components/forms.md +++ b/docs/components/forms.md @@ -23,7 +23,7 @@ Remember, since Bootstrap utilizies the HTML5 doctype, **all inputs must have a </fieldset> <fieldset class="form-group"> <label for="exampleSelect1">Example select</label> - <select class="form-control"> + <select class="form-control" id="exampleSelect1"> <option>1</option> <option>2</option> <option>3</option> @@ -33,7 +33,7 @@ Remember, since Bootstrap utilizies the HTML5 doctype, **all inputs must have a </fieldset> <fieldset class="form-group"> <label for="exampleSelect2">Example multiple select</label> - <select multiple class="form-control"> + <select multiple class="form-control" id="exampleSelect2"> <option>1</option> <option>2</option> <option>3</option> @@ -167,11 +167,11 @@ The `.form-group` class is the easiest way to add some structure to forms. It's {% example html %} <form> <fieldset class="form-group"> - <label for="formGroupExampleLabel">Example label</label> + <label for="formGroupExampleInput">Example label</label> <input type="text" class="form-control" id="formGroupExampleInput" placeholder="Example input"> </fieldset> <fieldset class="form-group"> - <label for="formGroupExampleLabel2">Another label</label> + <label for="formGroupExampleInput2">Another label</label> <input type="text" class="form-control" id="formGroupExampleInput2" placeholder="Another input"> </fieldset> </form> @@ -257,30 +257,30 @@ For more structured form layouts, you can utilize Bootstrap's predefined grid cl </div> </div> <div class="form-group row"> - <label class="col-sm-2" for="">Radios</label> + <label class="col-sm-2">Radios</label> <div class="col-sm-10"> <div class="radio"> <label> - <input type="radio" name="optionsRadios" id="optionsRadios1" value="option1" checked> + <input type="radio" name="gridRadios" id="gridRadios1" value="option1" checked> Option one is this and that—be sure to include why it's great </label> </div> <div class="radio"> <label> - <input type="radio" name="optionsRadios" id="optionsRadios2" value="option2"> + <input type="radio" name="gridRadios" id="gridRadios2" value="option2"> Option two can be something else and selecting it will deselect option one </label> </div> <div class="radio disabled"> <label> - <input type="radio" name="optionsRadios" id="optionsRadios3" value="option3" disabled> + <input type="radio" name="gridRadios" id="gridRadios3" value="option3" disabled> Option three is disabled </label> </div> </div> </div> <div class="form-group row"> - <label class="col-sm-2" for="">Checkbox</label> + <label class="col-sm-2">Checkbox</label> <div class="col-sm-10"> <div class="checkbox"> <label> @@ -321,19 +321,19 @@ A checkbox or radio with the `disabled` attribute will be styled appropriately. <div class="radio"> <label> - <input type="radio" name="optionsRadios" id="optionsRadios1" value="option1" checked> + <input type="radio" name="exampleRadios" id="exampleRadios1" value="option1" checked> Option one is this and that—be sure to include why it's great </label> </div> <div class="radio"> <label> - <input type="radio" name="optionsRadios" id="optionsRadios2" value="option2"> + <input type="radio" name="exampleRadios" id="exampleRadios2" value="option2"> Option two can be something else and selecting it will deselect option one </label> </div> <div class="radio disabled"> <label> - <input type="radio" name="optionsRadios" id="optionsRadios3" value="option3" disabled> + <input type="radio" name="exampleRadios" id="exampleRadios3" value="option3" disabled> Option three is disabled </label> </div> diff --git a/docs/components/reboot.md b/docs/components/reboot.md index baed24d1ec..d1ee0a8698 100644 --- a/docs/components/reboot.md +++ b/docs/components/reboot.md @@ -213,17 +213,17 @@ These changes, and more, are demonstrated below. <p> <label for="textarea">Example textarea</label> - <textarea id="example" rows="3"></textarea> + <textarea id="textarea" rows="3"></textarea> </p> <p> <label for="time">Example temporal</label> - <input type="date"> + <input type="datetime" id="time"> </p> <p> - <label for="time">Example output</label> - <output name="result">100</output> + <label for="output">Example output</label> + <output name="result" id="output">100</output> </p> <p> diff --git a/docs/components/tables.md b/docs/components/tables.md index d2f9acece0..8856a08b76 100644 --- a/docs/components/tables.md +++ b/docs/components/tables.md @@ -109,6 +109,9 @@ Use one of two modifier classes to make `<thead>`s appear light or dark gray. <td>@twitter</td> </tr> </tbody> +</table> + +<table class="table"> <thead class="thead-default"> <tr> <th>#</th> diff --git a/docs/components/utilities.md b/docs/components/utilities.md index 78ee54f82e..1587d660ac 100644 --- a/docs/components/utilities.md +++ b/docs/components/utilities.md @@ -29,6 +29,8 @@ Transform text in components with text capitalization classes. ### Contextual colors +### Contextual colors and backgrounds + Convey meaning through color with a handful of emphasis utility classes. These may also be applied to links and will darken on hover just like our default link styles. {% example html %} @@ -40,20 +42,6 @@ Convey meaning through color with a handful of emphasis utility classes. These m <p class="text-danger">Donec ullamcorper nulla non metus auctor fringilla.</p> {% endexample %} -{% callout info %} -#### Dealing with specificity - -Sometimes emphasis classes cannot be applied due to the specificity of another selector. In most cases, a sufficient workaround is to wrap your text in a `<span>` with the class. -{% endcallout %} - -{% callout warning %} -#### Conveying meaning to assistive technologies - -Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies – such as screen readers. Ensure that information denoted by the color is either obvious from the content itself (the contextual colors are only used to reinforce meaning that is already present in the text/markup), or is included through alternative means, such as additional text hidden with the `.sr-only` class. -{% endcallout %} - -### Contextual backgrounds - Similar to the contextual text color classes, easily set the background of an element to any contextual class. Anchor components will darken on hover, just like the text classes. {% example html %} @@ -67,13 +55,13 @@ Similar to the contextual text color classes, easily set the background of an el {% callout info %} #### Dealing with specificity -Sometimes contextual background classes cannot be applied due to the specificity of another selector. In some cases, a sufficient workaround is to wrap your element's content in a `<div>` with the class. +Sometimes contextual classes cannot be applied due to the specificity of another selector. In some cases, a sufficient workaround is to wrap your element's content in a `<div>` with the class. {% endcallout %} {% callout warning %} #### Conveying meaning to assistive technologies -As with [contextual colors](#helper-classes-colors), ensure that any meaning conveyed through color is also conveyed in a format that is not purely presentational. +Ensure that any meaning conveyed through color is also conveyed in a format that is not purely presentational. {% endcallout %} ### Close icon diff --git a/docs/dist/css/bootstrap.css b/docs/dist/css/bootstrap.css index a640440a58..ce6b052989 100644 --- a/docs/dist/css/bootstrap.css +++ b/docs/dist/css/bootstrap.css @@ -15,11 +15,26 @@ body { margin: 0; } -article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary { +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { display: block; } -audio, canvas, progress, video { +audio, +canvas, +progress, +video { display: inline-block; vertical-align: baseline; } @@ -29,7 +44,8 @@ audio:not([controls]) { height: 0; } -[hidden], template { +[hidden], +template { display: none; } @@ -40,6 +56,7 @@ a { a:active { outline: 0; } + a:hover { outline: 0; } @@ -48,7 +65,8 @@ abbr[title] { border-bottom: 1px dotted; } -b, strong { +b, +strong { font-weight: bold; } @@ -70,7 +88,8 @@ small { font-size: 80%; } -sub, sup { +sub, +sup { position: relative; font-size: 75%; line-height: 0; @@ -107,12 +126,19 @@ pre { overflow: auto; } -code, kbd, pre, samp { +code, +kbd, +pre, +samp { font-family: monospace, monospace; font-size: 1em; } -button, input, optgroup, select, textarea { +button, +input, +optgroup, +select, +textarea { margin: 0; font: inherit; color: inherit; @@ -122,20 +148,25 @@ button { overflow: visible; } -button, select { +button, +select { text-transform: none; } -button, html input[type="button"], input[type="reset"], input[type="submit"] { +button, +html input[type="button"], input[type="reset"], +input[type="submit"] { -webkit-appearance: button; cursor: pointer; } -button[disabled], html input[disabled] { +button[disabled], +html input[disabled] { cursor: default; } -button::-moz-focus-inner, input::-moz-focus-inner { +button::-moz-focus-inner, +input::-moz-focus-inner { padding: 0; border: 0; } @@ -144,13 +175,15 @@ input { line-height: normal; } -input[type="checkbox"], input[type="radio"] { +input[type="checkbox"], +input[type="radio"] { -webkit-box-sizing: border-box; box-sizing: border-box; padding: 0; } -input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button { +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { height: auto; } @@ -160,7 +193,8 @@ input[type="search"] { -webkit-appearance: textfield; } -input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; } @@ -188,23 +222,28 @@ table { border-collapse: collapse; } -td, th { +td, +th { padding: 0; } @media print { - *, *:before, *:after { + *, + *:before, + *:after { text-shadow: none !important; -webkit-box-shadow: none !important; box-shadow: none !important; } - a, a:visited { + a, + a:visited { text-decoration: underline; } abbr[title]:after { content: " (" attr(title) ")"; } - pre, blockquote { + pre, + blockquote { border: 1px solid #999; page-break-inside: avoid; @@ -212,23 +251,28 @@ td, th { thead { display: table-header-group; } - tr, img { + tr, + img { page-break-inside: avoid; } img { max-width: 100% !important; } - p, h2, h3 { + p, + h2, + h3 { orphans: 3; widows: 3; } - h2, h3 { + h2, + h3 { page-break-after: avoid; } .navbar { display: none; } - .btn > .caret, .dropup > .btn > .caret { + .btn > .caret, + .dropup > .btn > .caret { border-top-color: #000 !important; } .label { @@ -237,10 +281,12 @@ td, th { .table { border-collapse: collapse !important; } - .table td, .table th { + .table td, + .table th { background-color: #fff !important; } - .table-bordered th, .table-bordered td { + .table-bordered th, + .table-bordered td { border: 1px solid #ddd !important; } } @@ -250,27 +296,27 @@ html { box-sizing: border-box; } -*, *:before, *:after { +*, +*:before, +*:after { -webkit-box-sizing: inherit; box-sizing: inherit; } -@at-root { - @-moz-viewport { - width: device-width; - } +@-moz-viewport { + width: device-width; +} - @-ms-viewport { - width: device-width; - } +@-ms-viewport { + width: device-width; +} - @-webkit-viewport { - width: device-width; - } +@-webkit-viewport { + width: device-width; +} - @viewport { - width: device-width; - } +@viewport { + width: device-width; } html { @@ -297,7 +343,8 @@ p { margin-bottom: 1rem; } -abbr[title], abbr[data-original-title] { +abbr[title], +abbr[data-original-title] { cursor: help; border-bottom: 1px dotted #818a91; } @@ -308,12 +355,17 @@ address { line-height: inherit; } -ol, ul, dl { +ol, +ul, +dl { margin-top: 0; margin-bottom: 1rem; } -ol ol, ul ul, ol ul, ul ol { +ol ol, +ul ul, +ol ul, +ul ol { margin-bottom: 0; } @@ -322,7 +374,7 @@ dt { } dd { - margin-bottom: .5rem; + margin-bottom: .5rem; margin-left: 0; } @@ -334,7 +386,8 @@ a { color: #0275d8; text-decoration: none; } -a:focus, a:hover { +a:focus, + a:hover { color: #014c8c; text-decoration: underline; } @@ -369,7 +422,7 @@ caption { padding-top: .75rem; padding-bottom: .75rem; color: #818a91; - text-align: left; + text-align: left; caption-side: bottom; } @@ -382,7 +435,10 @@ label { margin-bottom: .5rem; } -input, button, select, textarea { +input, +button, +select, +textarea { margin: 0; line-height: inherit; } @@ -392,7 +448,7 @@ textarea { } fieldset { - min-width: 0; + min-width: 0; padding: 0; margin: 0; border: 0; @@ -415,29 +471,63 @@ output { display: inline-block; } -h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { +h1, h2, h3, h4, h5, h6, +.h1, .h2, .h3, .h4, .h5, .h6 { font-family: inherit; font-weight: 500; line-height: 1.1; color: inherit; } -h1 small, h1 .small, h2 small, h2 .small, h3 small, h3 .small, h4 small, h4 .small, h5 small, h5 .small, h6 small, h6 .small, .h1 small, .h1 .small, .h2 small, .h2 .small, .h3 small, .h3 .small, .h4 small, .h4 .small, .h5 small, .h5 .small, .h6 small, .h6 .small { +h1 small, + h1 .small, h2 small, + h2 .small, h3 small, + h3 .small, h4 small, + h4 .small, h5 small, + h5 .small, h6 small, + h6 .small, + .h1 small, + .h1 .small, .h2 small, + .h2 .small, .h3 small, + .h3 .small, .h4 small, + .h4 .small, .h5 small, + .h5 .small, .h6 small, + .h6 .small { font-weight: normal; line-height: 1; color: #818a91; } -h1, .h1, h2, .h2, h3, .h3 { +h1, .h1, +h2, .h2, +h3, .h3 { margin-bottom: .5rem; } -h1 small, h1 .small, .h1 small, .h1 .small, h2 small, h2 .small, .h2 small, .h2 .small, h3 small, h3 .small, .h3 small, .h3 .small { +h1 small, + h1 .small, .h1 small, + .h1 .small, + h2 small, + h2 .small, .h2 small, + .h2 .small, + h3 small, + h3 .small, .h3 small, + .h3 .small { font-size: 65%; } -h4, .h4, h5, .h5, h6, .h6 { +h4, .h4, +h5, .h5, +h6, .h6 { margin-bottom: .5rem; } -h4 small, h4 .small, .h4 small, .h4 .small, h5 small, h5 .small, .h5 small, .h5 .small, h6 small, h6 .small, .h6 small, .h6 .small { +h4 small, + h4 .small, .h4 small, + .h4 .small, + h5 small, + h5 .small, .h5 small, + .h5 .small, + h6 small, + h6 .small, .h6 small, + .h6 .small { font-size: 75%; } @@ -477,11 +567,13 @@ hr { border-top: .0625rem solid #eceeef; } -small, .small { +small, +.small { font-size: 85%; } -mark, .mark { +mark, +.mark { padding: .2em; background-color: #fcf8e3; } @@ -506,7 +598,8 @@ mark, .mark { margin-right: -1.5rem; margin-left: -1.5rem; } -.dl-horizontal:before, .dl-horizontal:after { +.dl-horizontal:before, + .dl-horizontal:after { display: table; content: " "; } @@ -525,7 +618,9 @@ mark, .mark { font-size: 1.25rem; border-left: .25rem solid #eceeef; } -.blockquote p:last-child, .blockquote ul:last-child, .blockquote ol:last-child { +.blockquote p:last-child, + .blockquote ul:last-child, + .blockquote ol:last-child { margin-bottom: 0; } .blockquote footer { @@ -552,7 +647,8 @@ mark, .mark { content: "\00A0 \2014"; } -.img-responsive, .carousel-inner > .carousel-item > img, .carousel-inner > .carousel-item > a > img { +.img-responsive, .carousel-inner > .carousel-item > img, +.carousel-inner > .carousel-item > a > img { display: block; max-width: 100%; height: auto; @@ -580,7 +676,10 @@ mark, .mark { border-radius: 50%; } -code, kbd, pre, samp { +code, +kbd, +pre, +samp { font-family: Menlo, Monaco, Consolas, "Courier New", monospace; } @@ -632,7 +731,8 @@ pre code { margin-right: auto; margin-left: auto; } -.container:before, .container:after { +.container:before, + .container:after { display: table; content: " "; } @@ -666,7 +766,8 @@ pre code { margin-right: auto; margin-left: auto; } -.container-fluid:before, .container-fluid:after { +.container-fluid:before, + .container-fluid:after { display: table; content: " "; } @@ -678,7 +779,8 @@ pre code { margin-right: -.75rem; margin-left: -.75rem; } -.row:before, .row:after { +.row:before, + .row:after { display: table; content: " "; } @@ -1542,7 +1644,8 @@ pre code { max-width: 100%; margin-bottom: 1rem; } -.table th, .table td { +.table th, + .table td { padding: .75rem; line-height: 1.5; vertical-align: top; @@ -1559,17 +1662,20 @@ pre code { background-color: #fff; } -.table-sm th, .table-sm td { +.table-sm th, +.table-sm td { padding: .3rem; } .table-bordered { border: 1px solid #eceeef; } -.table-bordered th, .table-bordered td { +.table-bordered th, + .table-bordered td { border: 1px solid #eceeef; } -.table-bordered thead th, .table-bordered thead td { +.table-bordered thead th, + .table-bordered thead td { border-bottom-width: 2px; } @@ -1581,58 +1687,73 @@ pre code { background-color: #f5f5f5; } -.table-active, .table-active > th, .table-active > td { +.table-active, +.table-active > th, +.table-active > td { background-color: #f5f5f5; } .table-hover .table-active:hover { background-color: #e8e8e8; } -.table-hover .table-active:hover > td, .table-hover .table-active:hover > th { +.table-hover .table-active:hover > td, + .table-hover .table-active:hover > th { background-color: #e8e8e8; } -.table-success, .table-success > th, .table-success > td { +.table-success, +.table-success > th, +.table-success > td { background-color: #dff0d8; } .table-hover .table-success:hover { background-color: #d0e9c6; } -.table-hover .table-success:hover > td, .table-hover .table-success:hover > th { +.table-hover .table-success:hover > td, + .table-hover .table-success:hover > th { background-color: #d0e9c6; } -.table-info, .table-info > th, .table-info > td { +.table-info, +.table-info > th, +.table-info > td { background-color: #d9edf7; } .table-hover .table-info:hover { background-color: #c4e3f3; } -.table-hover .table-info:hover > td, .table-hover .table-info:hover > th { +.table-hover .table-info:hover > td, + .table-hover .table-info:hover > th { background-color: #c4e3f3; } -.table-warning, .table-warning > th, .table-warning > td { +.table-warning, +.table-warning > th, +.table-warning > td { background-color: #fcf8e3; } .table-hover .table-warning:hover { background-color: #faf2cc; } -.table-hover .table-warning:hover > td, .table-hover .table-warning:hover > th { +.table-hover .table-warning:hover > td, + .table-hover .table-warning:hover > th { background-color: #faf2cc; } -.table-danger, .table-danger > th, .table-danger > td { +.table-danger, +.table-danger > th, +.table-danger > td { background-color: #f2dede; } .table-hover .table-danger:hover { background-color: #ebcccc; } -.table-hover .table-danger:hover > td, .table-hover .table-danger:hover > th { +.table-hover .table-danger:hover > td, + .table-hover .table-danger:hover > th { background-color: #ebcccc; } @@ -1659,31 +1780,45 @@ pre code { .table-inverse.table-bordered { border: 0; } -.table-inverse th, .table-inverse td, .table-inverse thead th { +.table-inverse th, + .table-inverse td, + .table-inverse thead th { border-color: #55595c; } .table-reflow thead { float: left; } + .table-reflow tbody { display: block; white-space: nowrap; } -.table-reflow th, .table-reflow td { + +.table-reflow th, +.table-reflow td { border-top: 1px solid #eceeef; border-left: 1px solid #eceeef; } -.table-reflow th:last-child, .table-reflow td:last-child { +.table-reflow th:last-child, + .table-reflow td:last-child { border-right: 1px solid #eceeef; } -.table-reflow thead:last-child tr:last-child th, .table-reflow thead:last-child tr:last-child td, .table-reflow tbody:last-child tr:last-child th, .table-reflow tbody:last-child tr:last-child td, .table-reflow tfoot:last-child tr:last-child th, .table-reflow tfoot:last-child tr:last-child td { + +.table-reflow thead:last-child tr:last-child th, +.table-reflow thead:last-child tr:last-child td, +.table-reflow tbody:last-child tr:last-child th, +.table-reflow tbody:last-child tr:last-child td, +.table-reflow tfoot:last-child tr:last-child th, +.table-reflow tfoot:last-child tr:last-child td { border-bottom: 1px solid #eceeef; } + .table-reflow tr { float: left; } -.table-reflow tr th, .table-reflow tr td { +.table-reflow tr th, + .table-reflow tr td { display: block !important; border: 1px solid #eceeef; } @@ -1703,7 +1838,9 @@ pre code { -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; } -.form-control:not(textarea), .form-control:not(select[size]), .form-control:not(select[multiple]) { +.form-control:not(textarea), + .form-control:not(select[size]), + .form-control:not(select[multiple]) { height: 2.625rem; } .form-control:focus { @@ -1726,15 +1863,19 @@ pre code { color: #999; opacity: 1; } -.form-control:disabled, .form-control[readonly], fieldset[disabled] .form-control { +.form-control:disabled, + .form-control[readonly], + fieldset[disabled] .form-control { background-color: #eceeef; opacity: 1; } -.form-control[disabled], fieldset[disabled] .form-control { - cursor: false; +.form-control[disabled], + fieldset[disabled] .form-control { + cursor: not-allowed; } -.form-control-file, .form-control-range { +.form-control-file, +.form-control-range { display: block; } @@ -1749,12 +1890,20 @@ pre code { padding-bottom: .5625rem; margin-bottom: 0; } -.form-control-static.form-control-sm, .input-group-sm > .form-control-static.form-control, .input-group-sm > .form-control-static.input-group-addon, .input-group-sm > .input-group-btn > .form-control-static.btn, .form-control-static.form-control-lg, .input-group-lg > .form-control-static.form-control, .input-group-lg > .form-control-static.input-group-addon, .input-group-lg > .input-group-btn > .form-control-static.btn { +.form-control-static.form-control-sm, + .input-group-sm > .form-control-static.form-control, + .input-group-sm > .form-control-static.input-group-addon, + .input-group-sm > .input-group-btn > .form-control-static.btn, + .form-control-static.form-control-lg, .input-group-lg > .form-control-static.form-control, + .input-group-lg > .form-control-static.input-group-addon, + .input-group-lg > .input-group-btn > .form-control-static.btn { padding-right: 0; padding-left: 0; } -.form-control-sm, .input-group-sm > .form-control, .input-group-sm > .input-group-addon, .input-group-sm > .input-group-btn > .btn { +.form-control-sm, .input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { height: 2rem; padding: .3rem .75rem; font-size: .85rem; @@ -1762,7 +1911,9 @@ pre code { border-radius: .2rem; } -.form-control-lg, .input-group-lg > .form-control, .input-group-lg > .input-group-addon, .input-group-lg > .input-group-btn > .btn { +.form-control-lg, .input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { height: 3.291667rem; padding: .75rem 1.5rem; font-size: 1.25rem; @@ -1774,32 +1925,40 @@ pre code { margin-bottom: 15px; } -.radio, .checkbox { +.radio, +.checkbox { position: relative; display: block; margin-bottom: .75rem; } -.radio label, .checkbox label { +.radio label, + .checkbox label { padding-left: 1.25rem; margin-bottom: 0; font-weight: normal; cursor: pointer; } -.radio label input:only-child, .checkbox label input:only-child { +.radio label input:only-child, + .checkbox label input:only-child { position: static; } -.radio input[type="radio"], .radio-inline input[type="radio"], .checkbox input[type="checkbox"], .checkbox-inline input[type="checkbox"] { +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { position: absolute; margin-top: .25rem; margin-left: -1.25rem; } -.radio + .radio, .checkbox + .checkbox { +.radio + .radio, +.checkbox + .checkbox { margin-top: -.25rem; } -.radio-inline, .checkbox-inline { +.radio-inline, +.checkbox-inline { position: relative; display: inline-block; padding-left: 1.25rem; @@ -1809,21 +1968,33 @@ pre code { cursor: pointer; } -.radio-inline + .radio-inline, .checkbox-inline + .checkbox-inline { +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { margin-top: 0; margin-left: .75rem; } -input[type="radio"]:disabled, input[type="radio"].disabled, fieldset[disabled] input[type="radio"], input[type="checkbox"]:disabled, input[type="checkbox"].disabled, fieldset[disabled] input[type="checkbox"] { - cursor: false; +input[type="radio"]:disabled, +input[type="radio"].disabled, +fieldset[disabled] input[type="radio"], +input[type="checkbox"]:disabled, +input[type="checkbox"].disabled, +fieldset[disabled] input[type="checkbox"] { + cursor: not-allowed; } -.radio-inline.disabled, fieldset[disabled] .radio-inline, .checkbox-inline.disabled, fieldset[disabled] .checkbox-inline { - cursor: false; +.radio-inline.disabled, +fieldset[disabled] .radio-inline, +.checkbox-inline.disabled, +fieldset[disabled] .checkbox-inline { + cursor: not-allowed; } -.radio.disabled label, fieldset[disabled] .radio label, .checkbox.disabled label, fieldset[disabled] .checkbox label { - cursor: false; +.radio.disabled label, +fieldset[disabled] .radio label, +.checkbox.disabled label, +fieldset[disabled] .checkbox label { + cursor: not-allowed; } .has-feedback { @@ -1846,68 +2017,106 @@ input[type="radio"]:disabled, input[type="radio"].disabled, fieldset[disabled] i pointer-events: none; } -.input-lg + .form-control-feedback, .input-group-lg + .form-control-feedback { +.input-lg + .form-control-feedback, +.input-group-lg + .form-control-feedback { width: 3.291667rem; height: 3.291667rem; line-height: 3.291667rem; } -.input-sm + .form-control-feedback, .input-group-sm + .form-control-feedback { +.input-sm + .form-control-feedback, +.input-group-sm + .form-control-feedback { width: 2rem; height: 2rem; line-height: 2rem; } -.has-success .help-block, .has-success .control-label, .has-success .radio, .has-success .checkbox, .has-success .radio-inline, .has-success .checkbox-inline, .has-success.radio label, .has-success.checkbox label, .has-success.radio-inline label, .has-success.checkbox-inline label { +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline, +.has-success.radio label, +.has-success.checkbox label, +.has-success.radio-inline label, +.has-success.checkbox-inline label { color: #3c763d; } + .has-success .form-control { border-color: #3c763d; } .has-success .form-control:focus { border-color: #2b542c; } + .has-success .input-group-addon { color: #3c763d; background-color: #dff0d8; border-color: #3c763d; } + .has-success .form-control-feedback { color: #3c763d; } -.has-warning .help-block, .has-warning .control-label, .has-warning .radio, .has-warning .checkbox, .has-warning .radio-inline, .has-warning .checkbox-inline, .has-warning.radio label, .has-warning.checkbox label, .has-warning.radio-inline label, .has-warning.checkbox-inline label { +.has-warning .help-block, +.has-warning .control-label, +.has-warning .radio, +.has-warning .checkbox, +.has-warning .radio-inline, +.has-warning .checkbox-inline, +.has-warning.radio label, +.has-warning.checkbox label, +.has-warning.radio-inline label, +.has-warning.checkbox-inline label { color: #8a6d3b; } + .has-warning .form-control { border-color: #8a6d3b; } .has-warning .form-control:focus { border-color: #66512c; } + .has-warning .input-group-addon { color: #8a6d3b; background-color: #fcf8e3; border-color: #8a6d3b; } + .has-warning .form-control-feedback { color: #8a6d3b; } -.has-error .help-block, .has-error .control-label, .has-error .radio, .has-error .checkbox, .has-error .radio-inline, .has-error .checkbox-inline, .has-error.radio label, .has-error.checkbox label, .has-error.radio-inline label, .has-error.checkbox-inline label { +.has-error .help-block, +.has-error .control-label, +.has-error .radio, +.has-error .checkbox, +.has-error .radio-inline, +.has-error .checkbox-inline, +.has-error.radio label, +.has-error.checkbox label, +.has-error.radio-inline label, +.has-error.checkbox-inline label { color: #a94442; } + .has-error .form-control { border-color: #a94442; } .has-error .form-control:focus { border-color: #843534; } + .has-error .input-group-addon { color: #a94442; background-color: #f2dede; border-color: #a94442; } + .has-error .form-control-feedback { color: #a94442; } @@ -1915,6 +2124,7 @@ input[type="radio"]:disabled, input[type="radio"].disabled, fieldset[disabled] i .has-feedback label ~ .form-control-feedback { top: 6; } + .has-feedback label.sr-only ~ .form-control-feedback { top: 0; } @@ -1944,7 +2154,9 @@ input[type="radio"]:disabled, input[type="radio"].disabled, fieldset[disabled] i display: inline-table; vertical-align: middle; } - .form-inline .input-group .input-group-addon, .form-inline .input-group .input-group-btn, .form-inline .input-group .form-control { + .form-inline .input-group .input-group-addon, + .form-inline .input-group .input-group-btn, + .form-inline .input-group .form-control { width: auto; } .form-inline .input-group > .form-control { @@ -1954,16 +2166,19 @@ input[type="radio"]:disabled, input[type="radio"].disabled, fieldset[disabled] i margin-bottom: 0; vertical-align: middle; } - .form-inline .radio, .form-inline .checkbox { + .form-inline .radio, + .form-inline .checkbox { display: inline-block; margin-top: 0; margin-bottom: 0; vertical-align: middle; } - .form-inline .radio label, .form-inline .checkbox label { + .form-inline .radio label, + .form-inline .checkbox label { padding-left: 0; } - .form-inline .radio input[type="radio"], .form-inline .checkbox input[type="checkbox"] { + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { position: relative; margin-left: 0; } @@ -1994,27 +2209,37 @@ input[type="radio"]:disabled, input[type="radio"].disabled, fieldset[disabled] i -o-transition: all .2s ease-in-out; transition: all .2s ease-in-out; } -.btn:focus, .btn.focus, .btn:active:focus, .btn:active.focus, .btn.active:focus, .btn.active.focus { +.btn:focus, + .btn.focus, + .btn:active:focus, + .btn:active.focus, + .btn.active:focus, + .btn.active.focus { outline: thin dotted; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } -.btn:focus, .btn:hover { +.btn:focus, + .btn:hover { text-decoration: none; } .btn.focus { text-decoration: none; } -.btn:active, .btn.active { +.btn:active, + .btn.active { background-image: none; outline: 0; } -.btn.disabled, .btn:disabled, fieldset[disabled] .btn { - cursor: false; +.btn.disabled, + .btn:disabled, + fieldset[disabled] .btn { + cursor: not-allowed; opacity: .65; } -a.btn.disaabled, fieldset[disabled] a.btn { +a.btn.disaabled, +fieldset[disabled] a.btn { pointer-events: none; } @@ -2023,7 +2248,11 @@ a.btn.disaabled, fieldset[disabled] a.btn { background-color: #0275d8; border-color: #0267bf; } -.btn-primary:focus, .btn-primary.focus, .btn-primary:active, .btn-primary.active, .open > .btn-primary.dropdown-toggle { +.btn-primary:focus, + .btn-primary.focus, + .btn-primary:active, + .btn-primary.active, + .open > .btn-primary.dropdown-toggle { color: #fff; background-color: #025aa5; border-color: #014682; @@ -2033,14 +2262,32 @@ a.btn.disaabled, fieldset[disabled] a.btn { background-color: #025aa5; border-color: #014682; } -.btn-primary:active, .btn-primary.active, .open > .btn-primary.dropdown-toggle { +.btn-primary:active, + .btn-primary.active, + .open > .btn-primary.dropdown-toggle { background-image: none; } -.btn-primary.disabled, .btn-primary.disabled:focus, .btn-primary.disabled.focus, .btn-primary.disabled:active, .btn-primary.disabled.active, .btn-primary:disabled, .btn-primary:disabled:focus, .btn-primary:disabled.focus, .btn-primary:disabled:active, .btn-primary:disabled.active, fieldset[disabled] .btn-primary, fieldset[disabled] .btn-primary:focus, fieldset[disabled] .btn-primary.focus, fieldset[disabled] .btn-primary:active, fieldset[disabled] .btn-primary.active { +.btn-primary.disabled, + .btn-primary.disabled:focus, + .btn-primary.disabled.focus, + .btn-primary.disabled:active, + .btn-primary.disabled.active, + .btn-primary:disabled, + .btn-primary:disabled:focus, + .btn-primary:disabled.focus, + .btn-primary:disabled:active, + .btn-primary:disabled.active, + fieldset[disabled] .btn-primary, + fieldset[disabled] .btn-primary:focus, + fieldset[disabled] .btn-primary.focus, + fieldset[disabled] .btn-primary:active, + fieldset[disabled] .btn-primary.active { background-color: #0275d8; border-color: #0267bf; } -.btn-primary.disabled:hover, .btn-primary:disabled:hover, fieldset[disabled] .btn-primary:hover { +.btn-primary.disabled:hover, + .btn-primary:disabled:hover, + fieldset[disabled] .btn-primary:hover { background-color: #0275d8; border-color: #0267bf; } @@ -2054,7 +2301,11 @@ a.btn.disaabled, fieldset[disabled] a.btn { background-color: #fff; border-color: #ccc; } -.btn-secondary:focus, .btn-secondary.focus, .btn-secondary:active, .btn-secondary.active, .open > .btn-secondary.dropdown-toggle { +.btn-secondary:focus, + .btn-secondary.focus, + .btn-secondary:active, + .btn-secondary.active, + .open > .btn-secondary.dropdown-toggle { color: #373a3c; background-color: #e6e6e6; border-color: #adadad; @@ -2064,14 +2315,32 @@ a.btn.disaabled, fieldset[disabled] a.btn { background-color: #e6e6e6; border-color: #adadad; } -.btn-secondary:active, .btn-secondary.active, .open > .btn-secondary.dropdown-toggle { +.btn-secondary:active, + .btn-secondary.active, + .open > .btn-secondary.dropdown-toggle { background-image: none; } -.btn-secondary.disabled, .btn-secondary.disabled:focus, .btn-secondary.disabled.focus, .btn-secondary.disabled:active, .btn-secondary.disabled.active, .btn-secondary:disabled, .btn-secondary:disabled:focus, .btn-secondary:disabled.focus, .btn-secondary:disabled:active, .btn-secondary:disabled.active, fieldset[disabled] .btn-secondary, fieldset[disabled] .btn-secondary:focus, fieldset[disabled] .btn-secondary.focus, fieldset[disabled] .btn-secondary:active, fieldset[disabled] .btn-secondary.active { +.btn-secondary.disabled, + .btn-secondary.disabled:focus, + .btn-secondary.disabled.focus, + .btn-secondary.disabled:active, + .btn-secondary.disabled.active, + .btn-secondary:disabled, + .btn-secondary:disabled:focus, + .btn-secondary:disabled.focus, + .btn-secondary:disabled:active, + .btn-secondary:disabled.active, + fieldset[disabled] .btn-secondary, + fieldset[disabled] .btn-secondary:focus, + fieldset[disabled] .btn-secondary.focus, + fieldset[disabled] .btn-secondary:active, + fieldset[disabled] .btn-secondary.active { background-color: #fff; border-color: #ccc; } -.btn-secondary.disabled:hover, .btn-secondary:disabled:hover, fieldset[disabled] .btn-secondary:hover { +.btn-secondary.disabled:hover, + .btn-secondary:disabled:hover, + fieldset[disabled] .btn-secondary:hover { background-color: #fff; border-color: #ccc; } @@ -2085,7 +2354,11 @@ a.btn.disaabled, fieldset[disabled] a.btn { background-color: #5bc0de; border-color: #46b8da; } -.btn-info:focus, .btn-info.focus, .btn-info:active, .btn-info.active, .open > .btn-info.dropdown-toggle { +.btn-info:focus, + .btn-info.focus, + .btn-info:active, + .btn-info.active, + .open > .btn-info.dropdown-toggle { color: #fff; background-color: #31b0d5; border-color: #269abc; @@ -2095,14 +2368,32 @@ a.btn.disaabled, fieldset[disabled] a.btn { background-color: #31b0d5; border-color: #269abc; } -.btn-info:active, .btn-info.active, .open > .btn-info.dropdown-toggle { +.btn-info:active, + .btn-info.active, + .open > .btn-info.dropdown-toggle { background-image: none; } -.btn-info.disabled, .btn-info.disabled:focus, .btn-info.disabled.focus, .btn-info.disabled:active, .btn-info.disabled.active, .btn-info:disabled, .btn-info:disabled:focus, .btn-info:disabled.focus, .btn-info:disabled:active, .btn-info:disabled.active, fieldset[disabled] .btn-info, fieldset[disabled] .btn-info:focus, fieldset[disabled] .btn-info.focus, fieldset[disabled] .btn-info:active, fieldset[disabled] .btn-info.active { +.btn-info.disabled, + .btn-info.disabled:focus, + .btn-info.disabled.focus, + .btn-info.disabled:active, + .btn-info.disabled.active, + .btn-info:disabled, + .btn-info:disabled:focus, + .btn-info:disabled.focus, + .btn-info:disabled:active, + .btn-info:disabled.active, + fieldset[disabled] .btn-info, + fieldset[disabled] .btn-info:focus, + fieldset[disabled] .btn-info.focus, + fieldset[disabled] .btn-info:active, + fieldset[disabled] .btn-info.active { background-color: #5bc0de; border-color: #46b8da; } -.btn-info.disabled:hover, .btn-info:disabled:hover, fieldset[disabled] .btn-info:hover { +.btn-info.disabled:hover, + .btn-info:disabled:hover, + fieldset[disabled] .btn-info:hover { background-color: #5bc0de; border-color: #46b8da; } @@ -2116,7 +2407,11 @@ a.btn.disaabled, fieldset[disabled] a.btn { background-color: #5cb85c; border-color: #4cae4c; } -.btn-success:focus, .btn-success.focus, .btn-success:active, .btn-success.active, .open > .btn-success.dropdown-toggle { +.btn-success:focus, + .btn-success.focus, + .btn-success:active, + .btn-success.active, + .open > .btn-success.dropdown-toggle { color: #fff; background-color: #449d44; border-color: #398439; @@ -2126,14 +2421,32 @@ a.btn.disaabled, fieldset[disabled] a.btn { background-color: #449d44; border-color: #398439; } -.btn-success:active, .btn-success.active, .open > .btn-success.dropdown-toggle { +.btn-success:active, + .btn-success.active, + .open > .btn-success.dropdown-toggle { background-image: none; } -.btn-success.disabled, .btn-success.disabled:focus, .btn-success.disabled.focus, .btn-success.disabled:active, .btn-success.disabled.active, .btn-success:disabled, .btn-success:disabled:focus, .btn-success:disabled.focus, .btn-success:disabled:active, .btn-success:disabled.active, fieldset[disabled] .btn-success, fieldset[disabled] .btn-success:focus, fieldset[disabled] .btn-success.focus, fieldset[disabled] .btn-success:active, fieldset[disabled] .btn-success.active { +.btn-success.disabled, + .btn-success.disabled:focus, + .btn-success.disabled.focus, + .btn-success.disabled:active, + .btn-success.disabled.active, + .btn-success:disabled, + .btn-success:disabled:focus, + .btn-success:disabled.focus, + .btn-success:disabled:active, + .btn-success:disabled.active, + fieldset[disabled] .btn-success, + fieldset[disabled] .btn-success:focus, + fieldset[disabled] .btn-success.focus, + fieldset[disabled] .btn-success:active, + fieldset[disabled] .btn-success.active { background-color: #5cb85c; border-color: #4cae4c; } -.btn-success.disabled:hover, .btn-success:disabled:hover, fieldset[disabled] .btn-success:hover { +.btn-success.disabled:hover, + .btn-success:disabled:hover, + fieldset[disabled] .btn-success:hover { background-color: #5cb85c; border-color: #4cae4c; } @@ -2147,7 +2460,11 @@ a.btn.disaabled, fieldset[disabled] a.btn { background-color: #f0ad4e; border-color: #eea236; } -.btn-warning:focus, .btn-warning.focus, .btn-warning:active, .btn-warning.active, .open > .btn-warning.dropdown-toggle { +.btn-warning:focus, + .btn-warning.focus, + .btn-warning:active, + .btn-warning.active, + .open > .btn-warning.dropdown-toggle { color: #fff; background-color: #ec971f; border-color: #d58512; @@ -2157,14 +2474,32 @@ a.btn.disaabled, fieldset[disabled] a.btn { background-color: #ec971f; border-color: #d58512; } -.btn-warning:active, .btn-warning.active, .open > .btn-warning.dropdown-toggle { +.btn-warning:active, + .btn-warning.active, + .open > .btn-warning.dropdown-toggle { background-image: none; } -.btn-warning.disabled, .btn-warning.disabled:focus, .btn-warning.disabled.focus, .btn-warning.disabled:active, .btn-warning.disabled.active, .btn-warning:disabled, .btn-warning:disabled:focus, .btn-warning:disabled.focus, .btn-warning:disabled:active, .btn-warning:disabled.active, fieldset[disabled] .btn-warning, fieldset[disabled] .btn-warning:focus, fieldset[disabled] .btn-warning.focus, fieldset[disabled] .btn-warning:active, fieldset[disabled] .btn-warning.active { +.btn-warning.disabled, + .btn-warning.disabled:focus, + .btn-warning.disabled.focus, + .btn-warning.disabled:active, + .btn-warning.disabled.active, + .btn-warning:disabled, + .btn-warning:disabled:focus, + .btn-warning:disabled.focus, + .btn-warning:disabled:active, + .btn-warning:disabled.active, + fieldset[disabled] .btn-warning, + fieldset[disabled] .btn-warning:focus, + fieldset[disabled] .btn-warning.focus, + fieldset[disabled] .btn-warning:active, + fieldset[disabled] .btn-warning.active { background-color: #f0ad4e; border-color: #eea236; } -.btn-warning.disabled:hover, .btn-warning:disabled:hover, fieldset[disabled] .btn-warning:hover { +.btn-warning.disabled:hover, + .btn-warning:disabled:hover, + fieldset[disabled] .btn-warning:hover { background-color: #f0ad4e; border-color: #eea236; } @@ -2178,7 +2513,11 @@ a.btn.disaabled, fieldset[disabled] a.btn { background-color: #d9534f; border-color: #d43f3a; } -.btn-danger:focus, .btn-danger.focus, .btn-danger:active, .btn-danger.active, .open > .btn-danger.dropdown-toggle { +.btn-danger:focus, + .btn-danger.focus, + .btn-danger:active, + .btn-danger.active, + .open > .btn-danger.dropdown-toggle { color: #fff; background-color: #c9302c; border-color: #ac2925; @@ -2188,14 +2527,32 @@ a.btn.disaabled, fieldset[disabled] a.btn { background-color: #c9302c; border-color: #ac2925; } -.btn-danger:active, .btn-danger.active, .open > .btn-danger.dropdown-toggle { +.btn-danger:active, + .btn-danger.active, + .open > .btn-danger.dropdown-toggle { background-image: none; } -.btn-danger.disabled, .btn-danger.disabled:focus, .btn-danger.disabled.focus, .btn-danger.disabled:active, .btn-danger.disabled.active, .btn-danger:disabled, .btn-danger:disabled:focus, .btn-danger:disabled.focus, .btn-danger:disabled:active, .btn-danger:disabled.active, fieldset[disabled] .btn-danger, fieldset[disabled] .btn-danger:focus, fieldset[disabled] .btn-danger.focus, fieldset[disabled] .btn-danger:active, fieldset[disabled] .btn-danger.active { +.btn-danger.disabled, + .btn-danger.disabled:focus, + .btn-danger.disabled.focus, + .btn-danger.disabled:active, + .btn-danger.disabled.active, + .btn-danger:disabled, + .btn-danger:disabled:focus, + .btn-danger:disabled.focus, + .btn-danger:disabled:active, + .btn-danger:disabled.active, + fieldset[disabled] .btn-danger, + fieldset[disabled] .btn-danger:focus, + fieldset[disabled] .btn-danger.focus, + fieldset[disabled] .btn-danger:active, + fieldset[disabled] .btn-danger.active { background-color: #d9534f; border-color: #d43f3a; } -.btn-danger.disabled:hover, .btn-danger:disabled:hover, fieldset[disabled] .btn-danger:hover { +.btn-danger.disabled:hover, + .btn-danger:disabled:hover, + fieldset[disabled] .btn-danger:hover { background-color: #d9534f; border-color: #d43f3a; } @@ -2209,21 +2566,31 @@ a.btn.disaabled, fieldset[disabled] a.btn { color: #0275d8; border-radius: 0; } -.btn-link, .btn-link:active, .btn-link.active, .btn-link:disabled, fieldset[disabled] .btn-link { +.btn-link, + .btn-link:active, + .btn-link.active, + .btn-link:disabled, + fieldset[disabled] .btn-link { background-color: transparent; } -.btn-link, .btn-link:focus, .btn-link:active { +.btn-link, + .btn-link:focus, + .btn-link:active { border-color: transparent; } .btn-link:hover { border-color: transparent; } -.btn-link:focus, .btn-link:hover { +.btn-link:focus, + .btn-link:hover { color: #014c8c; text-decoration: underline; background-color: transparent; } -.btn-link:disabled:focus, .btn-link:disabled:hover, fieldset[disabled] .btn-link:focus, fieldset[disabled] .btn-link:hover { +.btn-link:disabled:focus, + .btn-link:disabled:hover, + fieldset[disabled] .btn-link:focus, + fieldset[disabled] .btn-link:hover { color: #818a91; text-decoration: none; } @@ -2258,7 +2625,9 @@ a.btn.disaabled, fieldset[disabled] a.btn { margin-top: 5px; } -input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="button"].btn-block { +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { width: 100%; } @@ -2294,7 +2663,8 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto transition-property: height; } -.dropup, .dropdown { +.dropup, +.dropdown { position: relative; } @@ -2309,6 +2679,7 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto border-right: .3em solid transparent; border-left: .3em solid transparent; } + .dropdown-toggle:focus { outline: 0; } @@ -2348,25 +2719,32 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto white-space: nowrap; } -.dropdown-menu > li > a:focus, .dropdown-menu > li > a:hover { +.dropdown-menu > li > a:focus, +.dropdown-menu > li > a:hover { color: #2b2d2f; text-decoration: none; background-color: #f5f5f5; } -.dropdown-menu > .active > a, .dropdown-menu > .active > a:focus, .dropdown-menu > .active > a:hover { +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:focus, +.dropdown-menu > .active > a:hover { color: #fff; text-decoration: none; background-color: #0275d8; outline: 0; } -.dropdown-menu > .disabled > a, .dropdown-menu > .disabled > a:focus, .dropdown-menu > .disabled > a:hover { +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:focus, +.dropdown-menu > .disabled > a:hover { color: #818a91; } -.dropdown-menu > .disabled > a:focus, .dropdown-menu > .disabled > a:hover { + +.dropdown-menu > .disabled > a:focus, +.dropdown-menu > .disabled > a:hover { text-decoration: none; - cursor: false; + cursor: not-allowed; background-color: transparent; background-image: none; filter: "progid:DXImageTransform.Microsoft.gradient(enabled = false)"; @@ -2375,6 +2753,7 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto .open > .dropdown-menu { display: block; } + .open > a { outline: 0; } @@ -2412,51 +2791,69 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto left: auto; } -.dropup .caret, .navbar-fixed-bottom .dropdown .caret { +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { content: ""; border-top: 0; border-bottom: .3em solid; } -.dropup .dropdown-menu, .navbar-fixed-bottom .dropdown .dropdown-menu { + +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { top: auto; bottom: 100%; margin-bottom: 2px; } -.btn-group, .btn-group-vertical { +.btn-group, +.btn-group-vertical { position: relative; display: inline-block; vertical-align: middle; } -.btn-group > .btn, .btn-group-vertical > .btn { +.btn-group > .btn, + .btn-group-vertical > .btn { position: relative; float: left; } -.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active, .btn-group-vertical > .btn:focus, .btn-group-vertical > .btn:active, .btn-group-vertical > .btn.active { +.btn-group > .btn:focus, + .btn-group > .btn:active, + .btn-group > .btn.active, + .btn-group-vertical > .btn:focus, + .btn-group-vertical > .btn:active, + .btn-group-vertical > .btn.active { z-index: 2; } -.btn-group > .btn:hover, .btn-group-vertical > .btn:hover { +.btn-group > .btn:hover, + .btn-group-vertical > .btn:hover { z-index: 2; } -.btn-group .btn + .btn, .btn-group .btn + .btn-group, .btn-group .btn-group + .btn, .btn-group .btn-group + .btn-group { +.btn-group .btn + .btn, +.btn-group .btn + .btn-group, +.btn-group .btn-group + .btn, +.btn-group .btn-group + .btn-group { margin-left: -1px; } .btn-toolbar { margin-left: -5px; } -.btn-toolbar:before, .btn-toolbar:after { +.btn-toolbar:before, + .btn-toolbar:after { display: table; content: " "; } .btn-toolbar:after { clear: both; } -.btn-toolbar .btn-group, .btn-toolbar .input-group { +.btn-toolbar .btn-group, + .btn-toolbar .input-group { float: left; } -.btn-toolbar > .btn, .btn-toolbar > .btn-group, .btn-toolbar > .input-group { +.btn-toolbar > .btn, + .btn-toolbar > .btn-group, + .btn-toolbar > .input-group { margin-left: 5px; } @@ -2472,7 +2869,8 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto border-bottom-right-radius: 0; } -.btn-group > .btn:last-child:not(:first-child), .btn-group > .dropdown-toggle:not(:first-child) { +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { border-top-left-radius: 0; border-bottom-left-radius: 0; } @@ -2485,7 +2883,8 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto border-radius: 0; } -.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, .btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { +.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { border-top-right-radius: 0; border-bottom-right-radius: 0; } @@ -2495,7 +2894,8 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto border-bottom-left-radius: 0; } -.btn-group .dropdown-toggle:active, .btn-group.open .dropdown-toggle { +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { outline: 0; } @@ -2522,23 +2922,33 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto border-width: 0 .3em .3em; } -.btn-group-vertical > .btn, .btn-group-vertical > .btn-group, .btn-group-vertical > .btn-group > .btn { +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group, +.btn-group-vertical > .btn-group > .btn { display: block; float: none; width: 100%; max-width: 100%; } -.btn-group-vertical > .btn-group:before, .btn-group-vertical > .btn-group:after { + +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after { display: table; content: " "; } + .btn-group-vertical > .btn-group:after { clear: both; } + .btn-group-vertical > .btn-group > .btn { float: none; } -.btn-group-vertical > .btn + .btn, .btn-group-vertical > .btn + .btn-group, .btn-group-vertical > .btn-group + .btn, .btn-group-vertical > .btn-group + .btn-group { + +.btn-group-vertical > .btn + .btn, +.btn-group-vertical > .btn + .btn-group, +.btn-group-vertical > .btn-group + .btn, +.btn-group-vertical > .btn-group + .btn-group { margin-top: -1px; margin-left: 0; } @@ -2546,11 +2956,13 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto .btn-group-vertical > .btn:not(:first-child):not(:last-child) { border-radius: 0; } + .btn-group-vertical > .btn:first-child:not(:last-child) { border-top-right-radius: .25rem; border-bottom-right-radius: 0; border-bottom-left-radius: 0; } + .btn-group-vertical > .btn:last-child:not(:first-child) { border-top-left-radius: 0; border-top-right-radius: 0; @@ -2561,7 +2973,8 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto border-radius: 0; } -.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, .btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { border-bottom-right-radius: 0; border-bottom-left-radius: 0; } @@ -2571,7 +2984,10 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto border-top-right-radius: 0; } -[data-toggle="buttons"] > .btn input[type="radio"], [data-toggle="buttons"] > .btn input[type="checkbox"], [data-toggle="buttons"] > .btn-group > .btn input[type="radio"], [data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { +[data-toggle="buttons"] > .btn input[type="radio"], +[data-toggle="buttons"] > .btn input[type="checkbox"], +[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], +[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { position: absolute; clip: rect(0, 0, 0, 0); pointer-events: none; @@ -2590,14 +3006,19 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto margin-bottom: 0; } -.input-group-addon, .input-group-btn, .input-group .form-control { +.input-group-addon, +.input-group-btn, +.input-group .form-control { display: table-cell; } -.input-group-addon:not(:first-child):not(:last-child), .input-group-btn:not(:first-child):not(:last-child), .input-group .form-control:not(:first-child):not(:last-child) { +.input-group-addon:not(:first-child):not(:last-child), + .input-group-btn:not(:first-child):not(:last-child), + .input-group .form-control:not(:first-child):not(:last-child) { border-radius: 0; } -.input-group-addon, .input-group-btn { +.input-group-addon, +.input-group-btn { width: 1%; white-space: nowrap; vertical-align: middle; @@ -2614,21 +3035,30 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto border: 1px solid #ccc; border-radius: .25rem; } -.input-group-addon.form-control-sm, .input-group-sm > .input-group-addon, .input-group-sm > .input-group-btn > .input-group-addon.btn { +.input-group-addon.form-control-sm, .input-group-sm > .input-group-addon, + .input-group-sm > .input-group-btn > .input-group-addon.btn { padding: .3rem .75rem; font-size: .85rem; border-radius: .2rem; } -.input-group-addon.form-control-lg, .input-group-lg > .input-group-addon, .input-group-lg > .input-group-btn > .input-group-addon.btn { +.input-group-addon.form-control-lg, .input-group-lg > .input-group-addon, + .input-group-lg > .input-group-btn > .input-group-addon.btn { padding: .75rem 1.5rem; font-size: 1.25rem; border-radius: .3rem; } -.input-group-addon input[type="radio"], .input-group-addon input[type="checkbox"] { +.input-group-addon input[type="radio"], + .input-group-addon input[type="checkbox"] { margin-top: 0; } -.input-group .form-control:first-child, .input-group-addon:first-child, .input-group-btn:first-child > .btn, .input-group-btn:first-child > .btn-group > .btn, .input-group-btn:first-child > .dropdown-toggle, .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), .input-group-btn:last-child > .btn-group:not(:last-child) > .btn { +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { border-top-right-radius: 0; border-bottom-right-radius: 0; } @@ -2637,7 +3067,13 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto border-right: 0; } -.input-group .form-control:last-child, .input-group-addon:last-child, .input-group-btn:last-child > .btn, .input-group-btn:last-child > .btn-group > .btn, .input-group-btn:last-child > .dropdown-toggle, .input-group-btn:first-child > .btn:not(:first-child), .input-group-btn:first-child > .btn-group:not(:first-child) > .btn { +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { border-top-left-radius: 0; border-bottom-left-radius: 0; } @@ -2657,13 +3093,17 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto .input-group-btn > .btn + .btn { margin-left: -1px; } -.input-group-btn > .btn:focus, .input-group-btn > .btn:active, .input-group-btn > .btn:hover { +.input-group-btn > .btn:focus, + .input-group-btn > .btn:active, + .input-group-btn > .btn:hover { z-index: 2; } -.input-group-btn:first-child > .btn, .input-group-btn:first-child > .btn-group { +.input-group-btn:first-child > .btn, + .input-group-btn:first-child > .btn-group { margin-right: -1px; } -.input-group-btn:last-child > .btn, .input-group-btn:last-child > .btn-group { +.input-group-btn:last-child > .btn, + .input-group-btn:last-child > .btn-group { margin-left: -1px; } @@ -2716,9 +3156,11 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto .c-checkbox .c-indicator { border-radius: .25rem; } + .c-checkbox input:checked ~ .c-indicator { background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNy4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgOCA4IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA4IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHBhdGggZmlsbD0iI0ZGRkZGRiIgZD0iTTYuNCwxTDUuNywxLjdMMi45LDQuNUwyLjEsMy43TDEuNCwzTDAsNC40bDAuNywwLjdsMS41LDEuNWwwLjcsMC43bDAuNy0wLjdsMy41LTMuNWwwLjctMC43TDYuNCwxTDYuNCwxeiINCgkvPg0KPC9zdmc+DQo=); } + .c-checkbox input:indeterminate ~ .c-indicator { background-color: #0074d9; background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNy4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB3aWR0aD0iOHB4IiBoZWlnaHQ9IjhweCIgdmlld0JveD0iMCAwIDggOCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgOCA4IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxwYXRoIGZpbGw9IiNGRkZGRkYiIGQ9Ik0wLDN2Mmg4VjNIMHoiLz4NCjwvc3ZnPg0K); @@ -2727,6 +3169,7 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto .c-radio .c-indicator { border-radius: 50%; } + .c-radio input:checked ~ .c-indicator { background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNy4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgOCA4IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA4IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHBhdGggZmlsbD0iI0ZGRkZGRiIgZD0iTTQsMUMyLjMsMSwxLDIuMywxLDRzMS4zLDMsMywzczMtMS4zLDMtM1M1LjcsMSw0LDF6Ii8+DQo8L3N2Zz4NCg==); } @@ -2762,6 +3205,7 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto border-radius: .25rem; outline: 0; + -moz-appearance: none; appearance: none; } .select > select:focus { @@ -2805,13 +3249,12 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto text-indent: .01px; text-overflow: ""; } - .select option { background-color: #fff; } } -@media screen and (min-width: 0\0) { +@media screen and (min-width: 0 \0) { .select select { z-index: 1; padding: .5rem 1.5rem .5rem 1rem; @@ -2830,7 +3273,9 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto content: ""; background-color: #eee; } - .select select:focus, .select select:active, .select select:hover { + .select select:focus, + .select select:active, + .select select:hover { color: #555; background-color: #eee; } @@ -2902,7 +3347,8 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto margin-bottom: 0; list-style: none; } -.nav:before, .nav:after { +.nav:before, + .nav:after { display: table; content: " "; } @@ -2920,16 +3366,23 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto padding: .75em 1em; line-height: 1; } -.nav-link:focus, .nav-link:hover { +.nav-link:focus, + .nav-link:hover { text-decoration: none; background-color: #eceeef; } -.disabled > .nav-link, .nav-link.disabled { +.disabled > .nav-link, + .nav-link.disabled { color: #818a91; } -.disabled > .nav-link, .disabled > .nav-link:focus, .disabled > .nav-link:hover, .nav-link.disabled, .nav-link.disabled:focus, .nav-link.disabled:hover { +.disabled > .nav-link, + .disabled > .nav-link:focus, + .disabled > .nav-link:hover, + .nav-link.disabled, + .nav-link.disabled:focus, + .nav-link.disabled:hover { color: #818a91; - cursor: false; + cursor: not-allowed; background-color: transparent; } @@ -2948,15 +3401,32 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto border: 1px solid transparent; border-radius: .25rem .25rem 0 0; } -.nav-tabs .nav-link:focus, .nav-tabs .nav-link:hover { +.nav-tabs .nav-link:focus, + .nav-tabs .nav-link:hover { border-color: #eceeef #eceeef #ddd; } -.nav-tabs .open > .nav-link, .nav-tabs .open > .nav-link:focus, .nav-tabs .open > .nav-link:hover, .nav-tabs .active > .nav-link, .nav-tabs .active > .nav-link:focus, .nav-tabs .active > .nav-link:hover, .nav-tabs .nav-link.open, .nav-tabs .nav-link.open:focus, .nav-tabs .nav-link.open:hover, .nav-tabs .nav-link.active, .nav-tabs .nav-link.active:focus, .nav-tabs .nav-link.active:hover { +.nav-tabs .open > .nav-link, + .nav-tabs .open > .nav-link:focus, + .nav-tabs .open > .nav-link:hover, + .nav-tabs .active > .nav-link, + .nav-tabs .active > .nav-link:focus, + .nav-tabs .active > .nav-link:hover, + .nav-tabs .nav-link.open, + .nav-tabs .nav-link.open:focus, + .nav-tabs .nav-link.open:hover, + .nav-tabs .nav-link.active, + .nav-tabs .nav-link.active:focus, + .nav-tabs .nav-link.active:hover { color: #55595c; background-color: #fff; border-color: #ddd #ddd transparent; } -.nav-tabs .disabled > .nav-link, .nav-tabs .disabled > .nav-link:focus, .nav-tabs .disabled > .nav-link:hover, .nav-tabs .nav-link.disabled, .nav-tabs .nav-link.disabled:focus, .nav-tabs .nav-link.disabled:hover { +.nav-tabs .disabled > .nav-link, + .nav-tabs .disabled > .nav-link:focus, + .nav-tabs .disabled > .nav-link:hover, + .nav-tabs .nav-link.disabled, + .nav-tabs .nav-link.disabled:focus, + .nav-tabs .nav-link.disabled:hover { color: #818a91; background-color: transparent; border-color: transparent; @@ -2968,11 +3438,24 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto .nav-pills .nav-item + .nav-item { margin-left: .2rem; } + .nav-pills .nav-link { display: block; border-radius: .25rem; } -.nav-pills .open > .nav-link, .nav-pills .open > .nav-link:focus, .nav-pills .open > .nav-link:hover, .nav-pills .active > .nav-link, .nav-pills .active > .nav-link:focus, .nav-pills .active > .nav-link:hover, .nav-pills .nav-link.open, .nav-pills .nav-link.open:focus, .nav-pills .nav-link.open:hover, .nav-pills .nav-link.active, .nav-pills .nav-link.active:focus, .nav-pills .nav-link.active:hover { + +.nav-pills .open > .nav-link, +.nav-pills .open > .nav-link:focus, +.nav-pills .open > .nav-link:hover, +.nav-pills .active > .nav-link, +.nav-pills .active > .nav-link:focus, +.nav-pills .active > .nav-link:hover, +.nav-pills .nav-link.open, +.nav-pills .nav-link.open:focus, +.nav-pills .nav-link.open:hover, +.nav-pills .nav-link.active, +.nav-pills .nav-link.active:focus, +.nav-pills .nav-link.active:hover { color: #fff; cursor: default; background-color: #0275d8; @@ -2990,6 +3473,7 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto .tab-content > .tab-pane { display: none; } + .tab-content > .active { display: block; } @@ -3005,7 +3489,8 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto padding: 1rem; margin-bottom: 1; } -.navbar:before, .navbar:after { +.navbar:before, + .navbar:after { display: table; content: " "; } @@ -3027,7 +3512,8 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto } } -.navbar-fixed-top, .navbar-fixed-bottom { +.navbar-fixed-top, +.navbar-fixed-bottom { position: fixed; right: 0; left: 0; @@ -3035,7 +3521,8 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto margin-bottom: 0; } @media (min-width: 34em) { - .navbar-fixed-top, .navbar-fixed-bottom { + .navbar-fixed-top, + .navbar-fixed-bottom { border-radius: 0; } } @@ -3052,7 +3539,7 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto position: -webkit-sticky; position: sticky; top: 0; - z-index: 1030; + z-index: 1030; width: 100%; } @media (min-width: 34em) { @@ -3069,7 +3556,8 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto font-size: 1.25rem; line-height: 1; } -.navbar-brand > a:focus, .navbar-brand > a:hover { +.navbar-brand > a:focus, + .navbar-brand > a:hover { text-decoration: none; } .navbar-brand > img { @@ -3085,7 +3573,8 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto background: none; border: 0; } -.navbar-toggler:focus, .navbar-toggler:hover { +.navbar-toggler:focus, + .navbar-toggler:hover { text-decoration: none; } @@ -3094,6 +3583,7 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto display: block !important; } } + @media (min-width: 48em) { .navbar-toggleable-sm { display: block !important; @@ -3128,13 +3618,26 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto .navbar-nav .nav-item { float: left; } + .navbar-nav .nav-link { display: block; padding-top: .95rem; padding-bottom: .95rem; line-height: 1.25; } -.navbar-nav .open > .nav-link, .navbar-nav .open > .nav-link:focus, .navbar-nav .open > .nav-link:hover, .navbar-nav .active > .nav-link, .navbar-nav .active > .nav-link:focus, .navbar-nav .active > .nav-link:hover, .navbar-nav .nav-link.open, .navbar-nav .nav-link.open:focus, .navbar-nav .nav-link.open:hover, .navbar-nav .nav-link.active, .navbar-nav .nav-link.active:focus, .navbar-nav .nav-link.active:hover { + +.navbar-nav .open > .nav-link, +.navbar-nav .open > .nav-link:focus, +.navbar-nav .open > .nav-link:hover, +.navbar-nav .active > .nav-link, +.navbar-nav .active > .nav-link:focus, +.navbar-nav .active > .nav-link:hover, +.navbar-nav .nav-link.open, +.navbar-nav .nav-link.open:focus, +.navbar-nav .nav-link.open:hover, +.navbar-nav .nav-link.active, +.navbar-nav .nav-link.active:focus, +.navbar-nav .nav-link.active:hover { color: #555; cursor: default; background-color: #e7e7e7; @@ -3147,7 +3650,8 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto .navbar-default .navbar-brand { color: #777; } -.navbar-default .navbar-brand:focus, .navbar-default .navbar-brand:hover { +.navbar-default .navbar-brand:focus, + .navbar-default .navbar-brand:hover { color: #5e5e5e; background-color: transparent; } @@ -3156,24 +3660,34 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto background-color: #373a3c; border-color: #1f2021; } -.navbar-inverse .navbar-toggler, .navbar-inverse .navbar-brand > a, .navbar-inverse .nav-pills > .nav-item > .nav-link { +.navbar-inverse .navbar-toggler, + .navbar-inverse .navbar-brand > a, + .navbar-inverse .nav-pills > .nav-item > .nav-link { color: #aab0b5; } -.navbar-inverse .navbar-toggler:focus, .navbar-inverse .navbar-toggler:hover, .navbar-inverse .navbar-brand > a:focus, .navbar-inverse .navbar-brand > a:hover, .navbar-inverse .nav-pills > .nav-item > .nav-link:focus, .navbar-inverse .nav-pills > .nav-item > .nav-link:hover { +.navbar-inverse .navbar-toggler:focus, + .navbar-inverse .navbar-toggler:hover, + .navbar-inverse .navbar-brand > a:focus, + .navbar-inverse .navbar-brand > a:hover, + .navbar-inverse .nav-pills > .nav-item > .nav-link:focus, + .navbar-inverse .nav-pills > .nav-item > .nav-link:hover { color: #fff; } -.navbar-inverse .nav-pills > .nav-item > .nav-link:focus, .navbar-inverse .nav-pills > .nav-item > .nav-link:hover { +.navbar-inverse .nav-pills > .nav-item > .nav-link:focus, + .navbar-inverse .nav-pills > .nav-item > .nav-link:hover { color: #fff; background-color: #1f2021; } -.navbar-inverse .nav-pills > .active > .nav-link, .navbar-inverse .nav-pills > .nav-link.active { +.navbar-inverse .nav-pills > .active > .nav-link, + .navbar-inverse .nav-pills > .nav-link.active { color: #fff; background-color: #1f2021; } .navbar-inverse .navbar-brand { color: #aab0b5; } -.navbar-inverse .navbar-brand:focus, .navbar-inverse .navbar-brand:hover { +.navbar-inverse .navbar-brand:focus, + .navbar-inverse .navbar-brand:hover { color: #fff; background-color: transparent; } @@ -3183,22 +3697,30 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto .navbar-inverse .navbar-nav > li > a { color: #aab0b5; } -.navbar-inverse .navbar-nav > li > a:focus, .navbar-inverse .navbar-nav > li > a:hover { +.navbar-inverse .navbar-nav > li > a:focus, + .navbar-inverse .navbar-nav > li > a:hover { color: #fff; background-color: transparent; } -.navbar-inverse .navbar-nav > .active > a, .navbar-inverse .navbar-nav > .active > a:focus, .navbar-inverse .navbar-nav > .active > a:hover { +.navbar-inverse .navbar-nav > .active > a, + .navbar-inverse .navbar-nav > .active > a:focus, + .navbar-inverse .navbar-nav > .active > a:hover { color: #fff; background-color: #1f2021; } -.navbar-inverse .navbar-nav > .disabled > a, .navbar-inverse .navbar-nav > .disabled > a:focus, .navbar-inverse .navbar-nav > .disabled > a:hover { +.navbar-inverse .navbar-nav > .disabled > a, + .navbar-inverse .navbar-nav > .disabled > a:focus, + .navbar-inverse .navbar-nav > .disabled > a:hover { color: #444; background-color: transparent; } -.navbar-inverse .navbar-collapse, .navbar-inverse .navbar-form { +.navbar-inverse .navbar-collapse, + .navbar-inverse .navbar-form { border-color: #262829; } -.navbar-inverse .navbar-nav > .open > a, .navbar-inverse .navbar-nav > .open > a:focus, .navbar-inverse .navbar-nav > .open > a:hover { +.navbar-inverse .navbar-nav > .open > a, + .navbar-inverse .navbar-nav > .open > a:focus, + .navbar-inverse .navbar-nav > .open > a:hover { color: #fff; background-color: #1f2021; } @@ -3211,10 +3733,14 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto .navbar-inverse .btn-link { color: #aab0b5; } -.navbar-inverse .btn-link:focus, .navbar-inverse .btn-link:hover { +.navbar-inverse .btn-link:focus, + .navbar-inverse .btn-link:hover { color: #fff; } -.navbar-inverse .btn-link:disabled:focus, .navbar-inverse .btn-link:disabled:hover, fieldset[disabled] .navbar-inverse .btn-link:focus, fieldset[disabled] .navbar-inverse .btn-link:hover { +.navbar-inverse .btn-link:disabled:focus, + .navbar-inverse .btn-link:disabled:hover, + fieldset[disabled] .navbar-inverse .btn-link:focus, + fieldset[disabled] .navbar-inverse .btn-link:hover { color: #444; } @@ -3281,16 +3807,26 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto border-color: #d9534f; } -.card-inverse .card-header, .card-inverse .card-footer { +.card-inverse .card-header, +.card-inverse .card-footer { border-bottom: .075rem solid rgba(255, 255, 255, .2); } -.card-inverse .card-header, .card-inverse .card-footer, .card-inverse .card-title, .card-inverse .card-blockquote { + +.card-inverse .card-header, +.card-inverse .card-footer, +.card-inverse .card-title, +.card-inverse .card-blockquote { color: #fff; } -.card-inverse .card-link, .card-inverse .card-text, .card-inverse .card-blockquote > footer { + +.card-inverse .card-link, +.card-inverse .card-text, +.card-inverse .card-blockquote > footer { color: rgba(255, 255, 255, .65); } -.card-inverse .card-link:focus, .card-inverse .card-link:hover { + +.card-inverse .card-link:focus, +.card-inverse .card-link:hover { color: #fff; } @@ -3382,7 +3918,7 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto padding-right: .5rem; padding-left: .5rem; color: #818a91; - content: "/\00a0"; + content: "/\\00a0"; } .breadcrumb > .active { color: #818a91; @@ -3391,7 +3927,6 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto .pagination { display: inline-block; padding-left: 0; - margin: 1 0; margin-top: 1rem; margin-bottom: 1rem; border-radius: .25rem; @@ -3399,7 +3934,8 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto .pagination > li { display: inline; } -.pagination > li > a, .pagination > li > span { +.pagination > li > a, + .pagination > li > span { position: relative; float: left; padding: .5rem .75rem; @@ -3410,56 +3946,81 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto background-color: #fff; border: 1px solid #ddd; } -.pagination > li:first-child > a, .pagination > li:first-child > span { +.pagination > li:first-child > a, + .pagination > li:first-child > span { margin-left: 0; border-top-left-radius: .25rem; border-bottom-left-radius: .25rem; } -.pagination > li:last-child > a, .pagination > li:last-child > span { +.pagination > li:last-child > a, + .pagination > li:last-child > span { border-top-right-radius: .25rem; border-bottom-right-radius: .25rem; } -.pagination > li > a:focus, .pagination > li > a:hover, .pagination > li > span:focus, .pagination > li > span:hover { +.pagination > li > a:focus, + .pagination > li > a:hover, + .pagination > li > span:focus, + .pagination > li > span:hover { color: #014c8c; background-color: #eceeef; border-color: #ddd; } -.pagination > .active > a, .pagination > .active > a:focus, .pagination > .active > a:hover, .pagination > .active > span, .pagination > .active > span:focus, .pagination > .active > span:hover { +.pagination > .active > a, + .pagination > .active > a:focus, + .pagination > .active > a:hover, + .pagination > .active > span, + .pagination > .active > span:focus, + .pagination > .active > span:hover { z-index: 2; color: #fff; cursor: default; background-color: #0275d8; border-color: #0275d8; } -.pagination > .disabled > span, .pagination > .disabled > span:focus, .pagination > .disabled > span:hover, .pagination > .disabled > a, .pagination > .disabled > a:focus, .pagination > .disabled > a:hover { +.pagination > .disabled > span, + .pagination > .disabled > span:focus, + .pagination > .disabled > span:hover, + .pagination > .disabled > a, + .pagination > .disabled > a:focus, + .pagination > .disabled > a:hover { color: #818a91; - cursor: false; + cursor: not-allowed; background-color: #fff; border-color: #ddd; } -.pagination-lg > li > a, .pagination-lg > li > span { +.pagination-lg > li > a, +.pagination-lg > li > span { padding: .75rem 1.5rem; font-size: 1.25rem; } -.pagination-lg > li:first-child > a, .pagination-lg > li:first-child > span { + +.pagination-lg > li:first-child > a, +.pagination-lg > li:first-child > span { border-top-left-radius: .3rem; border-bottom-left-radius: .3rem; } -.pagination-lg > li:last-child > a, .pagination-lg > li:last-child > span { + +.pagination-lg > li:last-child > a, +.pagination-lg > li:last-child > span { border-top-right-radius: .3rem; border-bottom-right-radius: .3rem; } -.pagination-sm > li > a, .pagination-sm > li > span { +.pagination-sm > li > a, +.pagination-sm > li > span { padding: .3rem .75rem; font-size: .85rem; } -.pagination-sm > li:first-child > a, .pagination-sm > li:first-child > span { + +.pagination-sm > li:first-child > a, +.pagination-sm > li:first-child > span { border-top-left-radius: .2rem; border-bottom-left-radius: .2rem; } -.pagination-sm > li:last-child > a, .pagination-sm > li:last-child > span { + +.pagination-sm > li:last-child > a, +.pagination-sm > li:last-child > span { border-top-right-radius: .2rem; border-bottom-right-radius: .2rem; } @@ -3471,7 +4032,8 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto text-align: center; list-style: none; } -.pager:before, .pager:after { +.pager:before, + .pager:after { display: table; content: " "; } @@ -3481,33 +4043,39 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto .pager li { display: inline; } -.pager li > a, .pager li > span { +.pager li > a, + .pager li > span { display: inline-block; padding: 5px 14px; background-color: #fff; border: 1px solid #ddd; border-radius: 15px; } -.pager li > a:focus, .pager li > a:hover { +.pager li > a:focus, + .pager li > a:hover { text-decoration: none; background-color: #eceeef; } -.pager .disabled > a, .pager .disabled > a:focus, .pager .disabled > a:hover { +.pager .disabled > a, + .pager .disabled > a:focus, + .pager .disabled > a:hover { color: #818a91; - cursor: false; + cursor: not-allowed; background-color: #fff; } .pager .disabled > span { color: #818a91; - cursor: false; + cursor: not-allowed; background-color: #fff; } -.pager-next > a, .pager-next > span { +.pager-next > a, +.pager-next > span { float: right; } -.pager-prev > a, .pager-prev > span { +.pager-prev > a, +.pager-prev > span { float: left; } @@ -3531,7 +4099,8 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto top: -1px; } -a.label:focus, a.label:hover { +a.label:focus, +a.label:hover { color: #fff; text-decoration: none; cursor: pointer; @@ -3540,42 +4109,48 @@ a.label:focus, a.label:hover { .label-default { background-color: #818a91; } -.label-default[href]:focus, .label-default[href]:hover { +.label-default[href]:focus, + .label-default[href]:hover { background-color: #687077; } .label-primary { background-color: #0275d8; } -.label-primary[href]:focus, .label-primary[href]:hover { +.label-primary[href]:focus, + .label-primary[href]:hover { background-color: #025aa5; } .label-success { background-color: #5cb85c; } -.label-success[href]:focus, .label-success[href]:hover { +.label-success[href]:focus, + .label-success[href]:hover { background-color: #449d44; } .label-info { background-color: #5bc0de; } -.label-info[href]:focus, .label-info[href]:hover { +.label-info[href]:focus, + .label-info[href]:hover { background-color: #31b0d5; } .label-warning { background-color: #f0ad4e; } -.label-warning[href]:focus, .label-warning[href]:hover { +.label-warning[href]:focus, + .label-warning[href]:hover { background-color: #ec971f; } .label-danger { background-color: #d9534f; } -.label-danger[href]:focus, .label-danger[href]:hover { +.label-danger[href]:focus, + .label-danger[href]:hover { background-color: #c9302c; } @@ -3596,10 +4171,12 @@ a.label:focus, a.label:hover { .badge:empty { display: none; } -.badge.pull-left, .badge.pull-right { +.badge.pull-left, + .badge.pull-right { top: .2em; } -.list-group-item.active > .badge, .nav-pills > .active > a > .badge { +.list-group-item.active > .badge, + .nav-pills > .active > a > .badge { color: #0275d8; background-color: #fff; } @@ -3613,7 +4190,8 @@ a.label:focus, a.label:hover { margin-left: 3px; } -a.badge:focus, a.badge:hover { +a.badge:focus, +a.badge:hover { color: #fff; text-decoration: none; cursor: pointer; @@ -3656,7 +4234,8 @@ a.badge:focus, a.badge:hover { border: 1px solid transparent; border-radius: .25rem; } -.alert > p, .alert > ul { +.alert > p, + .alert > ul { margin-bottom: 0; } .alert > p + p { @@ -3734,7 +4313,6 @@ a.badge:focus, a.badge:hover { from { background-position: 1rem 0; } - to { background-position: 0 0; } @@ -3744,7 +4322,6 @@ a.badge:focus, a.badge:hover { from { background-position: 1rem 0; } - to { background-position: 0 0; } @@ -3754,7 +4331,6 @@ a.badge:focus, a.badge:hover { from { background-position: 1rem 0; } - to { background-position: 0 0; } @@ -3768,10 +4344,12 @@ a.badge:focus, a.badge:hover { } .progress[value] { + -webkit-appearance: none; color: #0074d9; border: 0; - appearance: none; + -moz-appearance: none; + appearance: none; } .progress[value]::-webkit-progress-bar { @@ -3794,7 +4372,7 @@ a.badge:focus, a.badge:hover { border-bottom-right-radius: .25rem; } -@media screen and ("min-width:0\0") { +@media screen and (min-width: 0 \0) { .progress { background-color: #eee; border-radius: .25rem; @@ -3831,7 +4409,7 @@ a.badge:focus, a.badge:hover { background-size: 1rem 1rem; } -@media screen and ("min-width:0\0") { +@media screen and (min-width: 0 \0) { .progress-bar-striped { background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); @@ -3850,7 +4428,7 @@ a.badge:focus, a.badge:hover { animation: progress-bar-stripes 2s linear infinite; } -@media screen and ("min-width:0\0") { +@media screen and (min-width: 0 \0) { .progress-animated .progress-bar-striped { -webkit-animation: progress-bar-stripes 2s linear infinite; -o-animation: progress-bar-stripes 2s linear infinite; @@ -3861,10 +4439,12 @@ a.badge:focus, a.badge:hover { .progress-success[value]::-webkit-progress-value { background-color: #5cb85c; } + .progress-success[value]::-moz-progress-bar { background-color: #5cb85c; } -@media screen and ("min-width:0\0") { + +@media screen and (min-width: 0 \0) { .progress-success .progress-bar { background-color: #5cb85c; } @@ -3873,10 +4453,12 @@ a.badge:focus, a.badge:hover { .progress-info[value]::-webkit-progress-value { background-color: #5bc0de; } + .progress-info[value]::-moz-progress-bar { background-color: #5bc0de; } -@media screen and ("min-width:0\0") { + +@media screen and (min-width: 0 \0) { .progress-info .progress-bar { background-color: #5bc0de; } @@ -3885,10 +4467,12 @@ a.badge:focus, a.badge:hover { .progress-warning[value]::-webkit-progress-value { background-color: #f0ad4e; } + .progress-warning[value]::-moz-progress-bar { background-color: #f0ad4e; } -@media screen and ("min-width:0\0") { + +@media screen and (min-width: 0 \0) { .progress-warning .progress-bar { background-color: #f0ad4e; } @@ -3897,10 +4481,12 @@ a.badge:focus, a.badge:hover { .progress-danger[value]::-webkit-progress-value { background-color: #d9534f; } + .progress-danger[value]::-moz-progress-bar { background-color: #d9534f; } -@media screen and ("min-width:0\0") { + +@media screen and (min-width: 0 \0) { .progress-danger .progress-bar { background-color: #d9534f; } @@ -3913,7 +4499,8 @@ a.badge:focus, a.badge:hover { margin-top: 0; } -.media, .media-body { +.media, +.media-body { overflow: hidden; zoom: 1; } @@ -3922,7 +4509,9 @@ a.badge:focus, a.badge:hover { width: 10000px; } -.media-left, .media-right, .media-body { +.media-left, +.media-right, +.media-body { display: table-cell; vertical-align: top; } @@ -3939,11 +4528,13 @@ a.badge:focus, a.badge:hover { display: block; } -.media-right, .media > .pull-right { +.media-right, +.media > .pull-right { padding-left: 10px; } -.media-left, .media > .pull-left { +.media-left, +.media > .pull-left { padding-right: 10px; } @@ -3986,33 +4577,53 @@ a.list-group-item { a.list-group-item .list-group-item-heading { color: #333; } -a.list-group-item:focus, a.list-group-item:hover { +a.list-group-item:focus, + a.list-group-item:hover { color: #555; text-decoration: none; background-color: #f5f5f5; } -.list-group-item.disabled, .list-group-item.disabled:focus, .list-group-item.disabled:hover { +.list-group-item.disabled, +.list-group-item.disabled:focus, +.list-group-item.disabled:hover { color: #818a91; - cursor: false; + cursor: not-allowed; background-color: #eceeef; } -.list-group-item.disabled .list-group-item-heading, .list-group-item.disabled:focus .list-group-item-heading, .list-group-item.disabled:hover .list-group-item-heading { +.list-group-item.disabled .list-group-item-heading, + .list-group-item.disabled:focus .list-group-item-heading, + .list-group-item.disabled:hover .list-group-item-heading { color: inherit; } -.list-group-item.disabled .list-group-item-text, .list-group-item.disabled:focus .list-group-item-text, .list-group-item.disabled:hover .list-group-item-text { +.list-group-item.disabled .list-group-item-text, + .list-group-item.disabled:focus .list-group-item-text, + .list-group-item.disabled:hover .list-group-item-text { color: #818a91; } -.list-group-item.active, .list-group-item.active:focus, .list-group-item.active:hover { + +.list-group-item.active, +.list-group-item.active:focus, +.list-group-item.active:hover { z-index: 2; color: #fff; background-color: #0275d8; border-color: #0275d8; } -.list-group-item.active .list-group-item-heading, .list-group-item.active .list-group-item-heading > small, .list-group-item.active .list-group-item-heading > .small, .list-group-item.active:focus .list-group-item-heading, .list-group-item.active:focus .list-group-item-heading > small, .list-group-item.active:focus .list-group-item-heading > .small, .list-group-item.active:hover .list-group-item-heading, .list-group-item.active:hover .list-group-item-heading > small, .list-group-item.active:hover .list-group-item-heading > .small { +.list-group-item.active .list-group-item-heading, + .list-group-item.active .list-group-item-heading > small, + .list-group-item.active .list-group-item-heading > .small, + .list-group-item.active:focus .list-group-item-heading, + .list-group-item.active:focus .list-group-item-heading > small, + .list-group-item.active:focus .list-group-item-heading > .small, + .list-group-item.active:hover .list-group-item-heading, + .list-group-item.active:hover .list-group-item-heading > small, + .list-group-item.active:hover .list-group-item-heading > .small { color: inherit; } -.list-group-item.active .list-group-item-text, .list-group-item.active:focus .list-group-item-text, .list-group-item.active:hover .list-group-item-text { +.list-group-item.active .list-group-item-text, + .list-group-item.active:focus .list-group-item-text, + .list-group-item.active:hover .list-group-item-text { color: #a8d6fe; } @@ -4027,11 +4638,14 @@ a.list-group-item-state { a.list-group-item-state .list-group-item-heading { color: inherit; } -a.list-group-item-state:focus, a.list-group-item-state:hover { +a.list-group-item-state:focus, + a.list-group-item-state:hover { color: #3c763d; background-color: #d0e9c6; } -a.list-group-item-state.active, a.list-group-item-state.active:focus, a.list-group-item-state.active:hover { +a.list-group-item-state.active, + a.list-group-item-state.active:focus, + a.list-group-item-state.active:hover { color: #fff; background-color: #3c763d; border-color: #3c763d; @@ -4048,11 +4662,14 @@ a.list-group-item-state { a.list-group-item-state .list-group-item-heading { color: inherit; } -a.list-group-item-state:focus, a.list-group-item-state:hover { +a.list-group-item-state:focus, + a.list-group-item-state:hover { color: #31708f; background-color: #c4e3f3; } -a.list-group-item-state.active, a.list-group-item-state.active:focus, a.list-group-item-state.active:hover { +a.list-group-item-state.active, + a.list-group-item-state.active:focus, + a.list-group-item-state.active:hover { color: #fff; background-color: #31708f; border-color: #31708f; @@ -4069,11 +4686,14 @@ a.list-group-item-state { a.list-group-item-state .list-group-item-heading { color: inherit; } -a.list-group-item-state:focus, a.list-group-item-state:hover { +a.list-group-item-state:focus, + a.list-group-item-state:hover { color: #8a6d3b; background-color: #faf2cc; } -a.list-group-item-state.active, a.list-group-item-state.active:focus, a.list-group-item-state.active:hover { +a.list-group-item-state.active, + a.list-group-item-state.active:focus, + a.list-group-item-state.active:hover { color: #fff; background-color: #8a6d3b; border-color: #8a6d3b; @@ -4090,11 +4710,14 @@ a.list-group-item-state { a.list-group-item-state .list-group-item-heading { color: inherit; } -a.list-group-item-state:focus, a.list-group-item-state:hover { +a.list-group-item-state:focus, + a.list-group-item-state:hover { color: #a94442; background-color: #ebcccc; } -a.list-group-item-state.active, a.list-group-item-state.active:focus, a.list-group-item-state.active:hover { +a.list-group-item-state.active, + a.list-group-item-state.active:focus, + a.list-group-item-state.active:hover { color: #fff; background-color: #a94442; border-color: #a94442; @@ -4117,7 +4740,11 @@ a.list-group-item-state.active, a.list-group-item-state.active:focus, a.list-gro padding: 0; overflow: hidden; } -.embed-responsive .embed-responsive-item, .embed-responsive iframe, .embed-responsive embed, .embed-responsive object, .embed-responsive video { +.embed-responsive .embed-responsive-item, + .embed-responsive iframe, + .embed-responsive embed, + .embed-responsive object, + .embed-responsive video { position: absolute; top: 0; bottom: 0; @@ -4144,7 +4771,8 @@ a.list-group-item-state.active, a.list-group-item-state.active:focus, a.list-gro text-shadow: 0 1px 0 #fff; opacity: .2; } -.close:focus, .close:hover { +.close:focus, + .close:hover { color: #000; text-decoration: none; cursor: pointer; @@ -4250,7 +4878,8 @@ button.close { text-align: right; border-top: 1px solid #e5e5e5; } -.modal-footer:before, .modal-footer:after { +.modal-footer:before, + .modal-footer:after { display: table; content: " "; } @@ -4305,26 +4934,58 @@ button.close { .tooltip.in { opacity: .9; } - -.tooltip-top { +.tooltip.tooltip-top, + .tooltip.bs-tether-element-attached-bottom { padding: 5px 0; margin-top: -3px; } - -.tooltip-right { +.tooltip.tooltip-top .tooltip-arrow, + .tooltip.bs-tether-element-attached-bottom .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.tooltip-right, + .tooltip.bs-tether-element-attached-left { padding: 0 5px; margin-left: 3px; } - -.tooltip-bottom { +.tooltip.tooltip-right .tooltip-arrow, + .tooltip.bs-tether-element-attached-left .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000; +} +.tooltip.tooltip-bottom, + .tooltip.bs-tether-element-attached-top { padding: 5px 0; margin-top: 3px; } - -.tooltip-left { +.tooltip.tooltip-bottom .tooltip-arrow, + .tooltip.bs-tether-element-attached-top .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.tooltip.tooltip-left, + .tooltip.bs-tether-element-attached-right { padding: 0 5px; margin-left: -3px; } +.tooltip.tooltip-left .tooltip-arrow, + .tooltip.bs-tether-element-attached-right .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000; +} .tooltip-inner { max-width: 200px; @@ -4344,44 +5005,12 @@ button.close { border-style: solid; } -.tooltip-top .tooltip-arrow { - bottom: 0; - left: 50%; - margin-left: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} - -.tooltip-right .tooltip-arrow { - top: 50%; - left: 0; - margin-top: -5px; - border-width: 5px 5px 5px 0; - border-right-color: #000; -} - -.tooltip-left .tooltip-arrow { - top: 50%; - right: 0; - margin-top: -5px; - border-width: 5px 0 5px 5px; - border-left-color: #000; -} - -.tooltip-bottom .tooltip-arrow { - top: 0; - left: 50%; - margin-left: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} - .popover { position: absolute; top: 0; left: 0; z-index: 1060; - display: none; + display: block; max-width: 276px; padding: 1px; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; @@ -4396,107 +5025,80 @@ button.close { border: 1px solid rgba(0, 0, 0, .2); border-radius: .3rem; } - -.popover-top { +.popover.popover-top, + .popover.bs-tether-element-attached-bottom { margin-top: -10px; } - -.popover-right { - margin-left: 10px; -} - -.popover-bottom { - margin-top: 10px; -} - -.popover-left { - margin-left: -10px; -} - -.popover-title { - padding: 8px 14px; - margin: 0; - font-size: 1rem; - background-color: #f7f7f7; - border-bottom: 1px solid #ebebeb; - border-radius: -.7rem -.7rem 0 0; -} - -.popover-content { - padding: 9px 14px; -} - -.popover-arrow, .popover-arrow:after { - position: absolute; - display: block; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} - -.popover-arrow { - border-width: 11px; -} - -.popover-arrow:after { - content: ""; - border-width: 10px; -} - -.popover-top > .popover-arrow { +.popover.popover-top .popover-arrow, + .popover.bs-tether-element-attached-bottom .popover-arrow { bottom: -11px; left: 50%; margin-left: -11px; border-top-color: rgba(0, 0, 0, .25); border-bottom-width: 0; } -.popover-top > .popover-arrow:after { +.popover.popover-top .popover-arrow:after, + .popover.bs-tether-element-attached-bottom .popover-arrow:after { bottom: 1px; margin-left: -10px; content: ""; border-top-color: #fff; border-bottom-width: 0; } - -.popover-right > .popover-arrow { +.popover.popover-right, + .popover.bs-tether-element-attached-left { + margin-left: 10px; +} +.popover.popover-right .popover-arrow, + .popover.bs-tether-element-attached-left .popover-arrow { top: 50%; left: -11px; margin-top: -11px; border-right-color: rgba(0, 0, 0, .25); border-left-width: 0; } -.popover-right > .popover-arrow:after { +.popover.popover-right .popover-arrow:after, + .popover.bs-tether-element-attached-left .popover-arrow:after { bottom: -10px; left: 1px; content: ""; border-right-color: #fff; border-left-width: 0; } - -.popover-bottom > .popover-arrow { +.popover.popover-bottom, + .popover.bs-tether-element-attached-top { + margin-top: 10px; +} +.popover.popover-bottom .popover-arrow, + .popover.bs-tether-element-attached-top .popover-arrow { top: -11px; left: 50%; margin-left: -11px; border-top-width: 0; border-bottom-color: rgba(0, 0, 0, .25); } -.popover-bottom > .popover-arrow:after { +.popover.popover-bottom .popover-arrow:after, + .popover.bs-tether-element-attached-top .popover-arrow:after { top: 1px; margin-left: -10px; content: ""; border-top-width: 0; border-bottom-color: #fff; } - -.popover-left > .popover-arrow { +.popover.popover-left, + .popover.bs-tether-element-attached-right { + margin-left: -10px; +} +.popover.popover-left .popover-arrow, + .popover.bs-tether-element-attached-right .popover-arrow { top: 50%; right: -11px; margin-top: -11px; border-right-width: 0; border-left-color: rgba(0, 0, 0, .25); } -.popover-left > .popover-arrow:after { +.popover.popover-left .popover-arrow:after, + .popover.bs-tether-element-attached-right .popover-arrow:after { right: 1px; bottom: -10px; content: ""; @@ -4504,6 +5106,38 @@ button.close { border-left-color: #fff; } +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 1rem; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: -.7rem -.7rem 0 0; +} + +.popover-content { + padding: 9px 14px; +} + +.popover-arrow, +.popover-arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.popover-arrow { + border-width: 11px; +} + +.popover-arrow:after { + content: ""; + border-width: 10px; +} + .carousel { position: relative; } @@ -4520,7 +5154,8 @@ button.close { -o-transition: .6s ease-in-out left; transition: .6s ease-in-out left; } -.carousel-inner > .carousel-item > img, .carousel-inner > .carousel-item > a > img { +.carousel-inner > .carousel-item > img, + .carousel-inner > .carousel-item > a > img { line-height: 1; } @media all and (transform-3d), (-webkit-transform-3d) { @@ -4534,29 +5169,36 @@ button.close { -webkit-perspective: 1000; perspective: 1000; } - .carousel-inner > .carousel-item.next, .carousel-inner > .carousel-item.active.right { + .carousel-inner > .carousel-item.next, + .carousel-inner > .carousel-item.active.right { left: 0; -webkit-transform: translate3d(100%, 0, 0); transform: translate3d(100%, 0, 0); } - .carousel-inner > .carousel-item.prev, .carousel-inner > .carousel-item.active.left { + .carousel-inner > .carousel-item.prev, + .carousel-inner > .carousel-item.active.left { left: 0; -webkit-transform: translate3d(-100%, 0, 0); transform: translate3d(-100%, 0, 0); } - .carousel-inner > .carousel-item.next.left, .carousel-inner > .carousel-item.prev.right, .carousel-inner > .carousel-item.active { + .carousel-inner > .carousel-item.next.left, + .carousel-inner > .carousel-item.prev.right, + .carousel-inner > .carousel-item.active { left: 0; -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } } -.carousel-inner > .active, .carousel-inner > .next, .carousel-inner > .prev { +.carousel-inner > .active, + .carousel-inner > .next, + .carousel-inner > .prev { display: block; } .carousel-inner > .active { left: 0; } -.carousel-inner > .next, .carousel-inner > .prev { +.carousel-inner > .next, + .carousel-inner > .prev { position: absolute; top: 0; width: 100%; @@ -4567,7 +5209,8 @@ button.close { .carousel-inner > .prev { left: -100%; } -.carousel-inner > .next.left, .carousel-inner > .prev.right { +.carousel-inner > .next.left, + .carousel-inner > .prev.right { left: 0; } .carousel-inner > .active.left { @@ -4607,13 +5250,15 @@ button.close { filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); background-repeat: repeat-x; } -.carousel-control:focus, .carousel-control:hover { +.carousel-control:focus, + .carousel-control:hover { color: #fff; text-decoration: none; outline: 0; opacity: .9; } -.carousel-control .icon-prev, .carousel-control .icon-next { +.carousel-control .icon-prev, + .carousel-control .icon-next { position: absolute; top: 50%; z-index: 5; @@ -4685,7 +5330,8 @@ button.close { } @media (min-width: 34em) { - .carousel-control .icon-prev, .carousel-control .icon-next { + .carousel-control .icon-prev, + .carousel-control .icon-next { width: 30px; height: 30px; margin-top: -15px; @@ -4707,10 +5353,12 @@ button.close { } } -.clearfix:before, .clearfix:after { +.clearfix:before, +.clearfix:after { display: table; content: " "; } + .clearfix:after { clear: both; } @@ -4740,7 +5388,8 @@ button.close { border: 0; } -.sr-only-focusable:active, .sr-only-focusable:focus { +.sr-only-focusable:active, +.sr-only-focusable:focus { position: static; width: auto; height: auto; @@ -5023,7 +5672,8 @@ button.close { color: #0275d8; } -a.text-primary:focus, a.text-primary:hover { +a.text-primary:focus, +a.text-primary:hover { color: #025aa5; } @@ -5031,7 +5681,8 @@ a.text-primary:focus, a.text-primary:hover { color: #3c763d; } -a.text-success:focus, a.text-success:hover { +a.text-success:focus, +a.text-success:hover { color: #2b542c; } @@ -5039,7 +5690,8 @@ a.text-success:focus, a.text-success:hover { color: #31708f; } -a.text-info:focus, a.text-info:hover { +a.text-info:focus, +a.text-info:hover { color: #245269; } @@ -5047,7 +5699,8 @@ a.text-info:focus, a.text-info:hover { color: #8a6d3b; } -a.text-warning:focus, a.text-warning:hover { +a.text-warning:focus, +a.text-warning:hover { color: #66512c; } @@ -5055,7 +5708,8 @@ a.text-warning:focus, a.text-warning:hover { color: #a94442; } -a.text-danger:focus, a.text-danger:hover { +a.text-danger:focus, +a.text-danger:hover { color: #843534; } @@ -5072,7 +5726,8 @@ a.text-danger:focus, a.text-danger:hover { background-color: #0275d8; } -a.bg-primary:focus, a.bg-primary:hover { +a.bg-primary:focus, +a.bg-primary:hover { background-color: #025aa5; } @@ -5080,7 +5735,8 @@ a.bg-primary:focus, a.bg-primary:hover { background-color: #dff0d8; } -a.bg-success:focus, a.bg-success:hover { +a.bg-success:focus, +a.bg-success:hover { background-color: #c1e2b3; } @@ -5088,7 +5744,8 @@ a.bg-success:focus, a.bg-success:hover { background-color: #d9edf7; } -a.bg-info:focus, a.bg-info:hover { +a.bg-info:focus, +a.bg-info:hover { background-color: #afd9ee; } @@ -5096,7 +5753,8 @@ a.bg-info:focus, a.bg-info:hover { background-color: #fcf8e3; } -a.bg-warning:focus, a.bg-warning:hover { +a.bg-warning:focus, +a.bg-warning:hover { background-color: #f7ecb5; } @@ -5104,7 +5762,8 @@ a.bg-warning:focus, a.bg-warning:hover { background-color: #f2dede; } -a.bg-danger:focus, a.bg-danger:hover { +a.bg-danger:focus, +a.bg-danger:hover { background-color: #e4b9b9; } diff --git a/docs/dist/css/bootstrap.css.map b/docs/dist/css/bootstrap.css.map index d1e8f1c336..2eb5eb9701 100644 --- a/docs/dist/css/bootstrap.css.map +++ b/docs/dist/css/bootstrap.css.map @@ -1 +1 @@ -{"version":3,"sources":["bootstrap.css","../../_normalize.scss","../../mixins/_hover.scss","../../_print.scss","../../_reboot.scss","../../mixins/_tab-focus.scss","../../_type.scss","../../mixins/_clearfix.scss","../../_images.scss","../../mixins/_image.scss","../../_mixins.scss","../../_code.scss","../../_grid.scss","../../mixins/_grid.scss","../../mixins/_breakpoints.scss","../../mixins/_grid-framework.scss","../../_tables.scss","../../mixins/_table-row.scss","../../_variables.scss","../../_forms.scss","../../mixins/_forms.scss","../../_buttons.scss","../../mixins/_buttons.scss","../../_animation.scss","../../_dropdown.scss","../../mixins/_nav-divider.scss","../../mixins/_reset-filter.scss","../../_button-group.scss","../../_input-group.scss","../../_custom-forms.scss","../../_nav.scss","../../_navbar.scss","../../_card.scss","../../_breadcrumb.scss","../../_pagination.scss","../../mixins/_pagination.scss","../../_pager.scss","../../_labels.scss","../../mixins/_label.scss","../../_badge.scss","../../_jumbotron.scss","../../_alert.scss","../../mixins/_alert.scss","../../_progress.scss","../../mixins/_gradients.scss","../../mixins/_progress.scss","../../_media.scss","../../_list-group.scss","../../mixins/_list-group.scss","../../_responsive-embed.scss","../../_close.scss","../../_modal.scss","../../_tooltip.scss","../../_popover.scss","../../_carousel.scss","../../_utilities.scss","../../mixins/_center-block.scss","../../mixins/_pulls.scss","../../mixins/_screen-reader.scss","../../mixins/_hide-text.scss","../../mixins/_text-truncate.scss","../../mixins/_text-emphasis.scss","../../mixins/_background-variant.scss","../../_utilities-responsive.scss","../../mixins/_responsive-visibility.scss"],"names":[],"mappings":"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","file":"bootstrap.css"}
\ No newline at end of file +{"version":3,"sources":["../../scss/_normalize.scss","bootstrap.css","../../scss/mixins/_hover.scss","../../scss/_print.scss","../../scss/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_tab-focus.scss","../../scss/_type.scss","../../scss/mixins/_clearfix.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/_mixins.scss","../../scss/_code.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixins/_grid-framework.scss","../../scss/_tables.scss","../../scss/mixins/_table-row.scss","../../scss/_forms.scss","../../scss/mixins/_forms.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_animation.scss","../../scss/_dropdown.scss","../../scss/mixins/_nav-divider.scss","../../scss/mixins/_reset-filter.scss","../../scss/_button-group.scss","../../scss/mixins/_border-radius.scss","../../scss/_input-group.scss","../../scss/_custom-forms.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/_breadcrumb.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_pager.scss","../../scss/_labels.scss","../../scss/mixins/_label.scss","../../scss/_badge.scss","../../scss/_jumbotron.scss","../../scss/_alert.scss","../../scss/mixins/_alert.scss","../../scss/_progress.scss","../../scss/mixins/_gradients.scss","../../scss/mixins/_progress.scss","../../scss/_media.scss","../../scss/_list-group.scss","../../scss/mixins/_list-group.scss","../../scss/_responsive-embed.scss","../../scss/_close.scss","../../scss/_modal.scss","../../scss/_tooltip.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/_utilities.scss","../../scss/mixins/_center-block.scss","../../scss/mixins/_pulls.scss","../../scss/mixins/_screen-reader.scss","../../scss/mixins/_hide-text.scss","../../scss/mixins/_text-truncate.scss","../../scss/mixins/_text-emphasis.scss","../../scss/mixins/_background-variant.scss","../../scss/_utilities-responsive.scss","../../scss/mixins/_responsive-visibility.scss"],"names":[],"mappings":"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FWvC,iBAA8B,EEVpB;;AAD6B;EFWvC,iBAA8B,EEVpB;;AAD6B;EFWvC,UAA8B,EEVpB;;AAD6B;EFWvC,iBAA8B,EEVpB;;AAD6B;EFWvC,iBAA8B,EEVpB;;AAD6B;EFWvC,UAA8B,EEVpB;;AAD6B;EFWvC,iBAA8B,EEVpB;;AAD6B;EFWvC,iBAA8B,EEVpB;;AAD6B;EFWvC,WAA8B,EEVpB;;AAD6B;EFOvC,gBAAuB,EENb;;AAD6B;EFOvC,uBAAuB,EENb;;AAD6B;EFOvC,wBAAuB,EENb;;AAD6B;EFOvC,iBAAuB,EENb;;AAD6B;EFOvC,wBAAuB,EENb;;AAD6B;EFOvC,wBAAuB,EENb;;AAD6B;EFOvC,iBAAuB,EENb;;AAD6B;EFOvC,wBAAuB,EENb;;AAD6B;EFOvC,wBAAuB,EENb;;AAD6B;EFOvC,iBAAuB,EENb;;AAD6B;EFOvC,wBAAuB,EENb;;AAD6B;EFOvC,wBAAuB,EENb;;AAD6B;EFOvC,kBAAuB,EENb;;ADQR;ECxBkE;IAK5D,YAAY,EAJd;EAO+B;IFSnC,iBAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,WAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,WAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,WAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,YAAiB,EERX;EAM+B;IFevC,YAAuD,EEd7C;EAD6B;IFevC,iBAA+B,EEdrB;EAD6B;IFevC,kBAA+B,EEdrB;EAD6B;IFevC,WAA+B,EEdrB;EAD6B;IFevC,kBAA+B,EEdrB;EAD6B;IFevC,kBAA+B,EEdrB;EAD6B;IFevC,WAA+B,EEdrB;EAD6B;IFevC,kBAA+B,EEdrB;EAD6B;IFevC,kBAA+B,EEdrB;EAD6B;IFevC,WAA+B,EEdrB;EAD6B;IFevC,kBAA+B,EEdrB;EAD6B;IFevC,kBAA+B,EEdrB;EAD6B;IFevC,YAA+B,EEdrB;EAD6B;IFWvC,WAAsD,EEV5C;EAD6B;IFWvC,gBAA8B,EEVpB;EAD6B;IFWvC,iBAA8B,EEVpB;EAD6B;IFWvC,UAA8B,EEVpB;EAD6B;IFWvC,iBAA8B,EEVpB;EAD6B;IFWvC,iBAA8B,EEVpB;EAD6B;IFWvC,UAA8B,EEVpB;EAD6B;IFWvC,iBAA8B,EEVpB;EAD6B;IFWvC,iBAA8B,EEVpB;EAD6B;IFWvC,UAA8B,EEVpB;EAD6B;IFWvC,iBAA8B,EEVpB;EAD6B;IFWvC,iBAA8B,EEVpB;EAD6B;IFWvC,WAA8B,EEVpB;EAD6B;IFOvC,gBAAuB,EENb;EAD6B;IFOvC,uBAAuB,EENb;EAD6B;IFOvC,wBAAuB,EENb;EAD6B;IFOvC,iBAAuB,EENb;EAD6B;IFOvC,wBAAuB,EENb;EAD6B;IFOvC,wBAAuB,EENb;EAD6B;IFOvC,iBAAuB,EENb;EAD6B;IFOvC,wBAAuB,EENb;EAD6B;IFOvC,wBAAuB,EENb;EAD6B;IFOvC,iBAAuB,EENb;EAD6B;IFOvC,wBAAuB,EENb;EAD6B;IFOvC,wBAAuB,EENb;EAD6B;IFOvC,kBAAuB,EENb,EAAA;;ADQR;ECxBkE;IAK5D,YAAY,EAJd;EAO+B;IFSnC,iBAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,WAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,WAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,WAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,YAAiB,EERX;EAM+B;IFevC,YAAuD,EEd7C;EAD6B;IFevC,iBAA+B,EEdrB;EAD6B;IFevC,kBAA+B,EEdrB;EAD6B;IFevC,WAA+B,EEdrB;EAD6B;IFevC,kBAA+B,EEdrB;EAD6B;IFevC,kBAA+B,EEdrB;EAD6B;IFevC,WAA+B,EEdrB;EAD6B;IFevC,kBAA+B,EEdrB;EAD6B;IFevC,kBAA+B,EEdrB;EAD6B;IFevC,WAA+B,EEdrB;EAD6B;IFevC,kBAA+B,EEdrB;EAD6B;IFevC,kBAA+B,EEdrB;EAD6B;IFevC,YAA+B,EEdrB;EAD6B;IFWvC,WAAsD,EEV5C;EAD6B;IFWvC,gBAA8B,EEVpB;EAD6B;IFWvC,iBAA8B,EEVpB;EAD6B;IFWvC,UAA8B,EEVpB;EAD6B;IFWvC,iBAA8B,EEVpB;EAD6B;IFWvC,iBAA8B,EEVpB;EAD6B;IFWvC,UAA8B,EEVpB;EAD6B;IFWvC,iBAA8B,EEVpB;EAD6B;IFWvC,iBAA8B,EEVpB;EAD6B;IFWvC,UAA8B,EEVpB;EAD6B;IFWvC,iBAA8B,EEVpB;EAD6B;IFWvC,iBAA8B,EEVpB;EAD6B;IFWvC,WAA8B,EEVpB;EAD6B;IFOvC,gBAAuB,EENb;EAD6B;IFOvC,uBAAuB,EENb;EAD6B;IFOvC,wBAAuB,EENb;EAD6B;IFOvC,iBAAuB,EENb;EAD6B;IFOvC,wBAAuB,EENb;EAD6B;IFOvC,wBAAuB,EENb;EAD6B;IFOvC,iBAAuB,EENb;EAD6B;IFOvC,wBAAuB,EENb;EAD6B;IFOvC,wBAAuB,EENb;EAD6B;IFOvC,iBAAuB,EENb;EAD6B;IFOvC,wBAAuB,EENb;EAD6B;IFOvC,wBAAuB,EENb;EAD6B;IFOvC,kBAAuB,EENb,EAAA;;ADQR;ECxBkE;IAK5D,YAAY,EAJd;EAO+B;IFSnC,iBAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,WAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,WAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,WAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,kBAAiB,EERX;EAD6B;IFSnC,YAAiB,EERX;EAM+B;IFevC,YAAuD,EEd7C;EAD6B;IFevC,iBAA+B,EEdrB;EAD6B;IFevC,kBAA+B,EEdrB;EAD6B;IFevC,WAA+B,EEdrB;EAD6B;IFevC,kBAA+B,EEdrB;EAD6B;IFevC,kBAA+B,EEdrB;EAD6B;IFevC,WAA+B,EEdrB;EAD6B;IFevC,kBAA+B,EEdrB;EA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yCAA+B;OAA/B,oCAA+B;UAA/B,iCAA+B,EAX3B;EAiBD;;;;;;IftBH,qBAAqB;IAErB,2CAA2C;IAC3C,qBAAqB,EemBV;EnBNR;;ImBYD,sBAAsB,EnBZb;EmBcV;IACC,sBAAsB,EADf;EAKR;;IACC,uBAAuB;IACvB,WAAW,EAFH;EAQS;;;IACjB,oBhBuJwC;IgBtJxC,aAAa,EAFO;;AASJ;;EAClB,qBAAqB,EADG;;AAS1B;EC3DE,YjB2ImC;EiB1InC,0BjBSkC;EiBRlC,sBjB2IqC,EgBlFzB;EC9CH;;;;;IACP,YjB6HiC;IiB5HjC,0BATwB;IAUpB,sBATgB,EAMK;EpBVxB;IoBgBD,YjBwHiC;IiBvHjC,0BAdwB;IAepB,sBAdgB,EpBJX;EoBsBF;;;IAEP,uBAAuB,EAFE;EAYxB;;;;;;;;;;;;;;;IACC,0BjB5B8B;IiB6B1B,sBjBsG6B,EiBxGzB;EpBlCT;;;IoBuCC,0BjBhC8B;IiBiC1B,sBjBkG6B,EH1I1B;EoB4CX;IACE,ejBtCgC;IiBuChC,uBjB0FiC,EiB5F3B;;ADeV;EC9DE,ejBGkC;EiBFlC,uBjB+ImC;EiB9InC,mBjB+ImC,EgBnFrB;ECjDL;;;;;IACP,ejBXgC;IiBYhC,0BATwB;IAUpB,sBATgB,EAMK;EpBVxB;IoBgBD,ejBhBgC;IiBiBhC,0BAdwB;IAepB,sBAdgB,EpBJX;EoBsBF;;;IAEP,uBAAuB,EAFE;EAYxB;;;;;;;;;;;;;;;IACC,uBjB0G+B;IiBzG3B,mBjB0G2B,EiB5GvB;EpBlCT;;;IoBuCC,uBjBsG+B;IiBrG3B,mBjBsG2B,EH9IxB;EoB4CX;IACE,YjBgGiC;IiB/FjC,0BjB9CgC,EiB4C1B;;ADkBV;ECjEE,YjBmJmC;EiBlJnC,0BjBWkC;EiBVlC,sBjBmJqC,EgBpF5B;ECpDA;;;;;IACP,YjBqIiC;IiBpIjC,0BATwB;IAUpB,sBATgB,EAMK;EpBVxB;IoBgBD,YjBgIiC;IiB/HjC,0BAdwB;IAepB,sBAdgB,EpBJX;EoBsBF;;;IAEP,uBAAuB,EAFE;EAYxB;;;;;;;;;;;;;;;IACC,0BjB1B8B;IiB2B1B,sBjB8G6B,EiBhHzB;EpBlCT;;;IoBuCC,0BjB9B8B;IiB+B1B,sBjB0G6B,EHlJ1B;EoB4CX;IACE,ejBpCgC;IiBqChC,uBjBkGiC,EiBpG3B;;ADqBV;ECpEE,YjBuJmC;EiBtJnC,0BjBUkC;EiBTlC,sBjBuJqC,EgBrFzB;ECvDH;;;;;IACP,YjByIiC;IiBxIjC,0BATwB;IAUpB,sBATgB,EAMK;EpBVxB;IoBgBD,YjBoIiC;IiBnIjC,0BAdwB;IAepB,sBAdgB,EpBJX;EoBsBF;;;IAEP,uBAAuB,EAFE;EAYxB;;;;;;;;;;;;;;;IACC,0BjB3B8B;IiB4B1B,sBjBkH6B,EiBpHzB;EpBlCT;;;IoBuCC,0BjB/B8B;IiBgC1B,sBjB8G6B,EHtJ1B;EoB4CX;IACE,ejBrCgC;IiBsChC,uBjBsGiC,EiBxG3B;;ADwBV;ECvEE,YjB2JmC;EiB1JnC,0BjBYkC;EiBXlC,sBjB2JqC,EgBtFzB;EC1DH;;;;;IACP,YjB6IiC;IiB5IjC,0BATwB;IAUpB,sBATgB,EAMK;EpBVxB;IoBgBD,YjBwIiC;IiBvIjC,0BAdwB;IAepB,sBAdgB,EpBJX;EoBsBF;;;IAEP,uBAAuB,EAFE;EAYxB;;;;;;;;;;;;;;;IACC,0BjBzB8B;IiB0B1B,sBjBsH6B,EiBxHzB;EpBlCT;;;IoBuCC,0BjB7B8B;IiB8B1B,sBjBkH6B,EH1J1B;EoB4CX;IACE,ejBnCgC;IiBoChC,uBjB0GiC,EiB5G3B;;AD2BV;EC1EE,YjB+JmC;EiB9JnC,0BjBakC;EiBZlC,sBjB+JqC,EgBvF1B;EC7DF;;;;;IACP,YjBiJiC;IiBhJjC,0BATwB;IAUpB,sBATgB,EAMK;EpBVxB;IoBgBD,YjB4IiC;IiB3IjC,0BAdwB;IAepB,sBAdgB,EpBJX;EoBsBF;;;IAEP,uBAAuB,EAFE;EAYxB;;;;;;;;;;;;;;;IACC,0BjBxB8B;IiByB1B,sBjB0H6B,EiB5HzB;EpBlCT;;;IoBuCC,0BjB5B8B;IiB6B1B,sBjBsH6B,EH9J1B;EoB4CX;IACE,ejBlCgC;IiBmChC,uBjB8GiC,EiBhH3B;;ADqCV;EACE,oBAAoB;EACpB,ehB5EkC;EgB6ElC,iBAAiB,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;E2B3BjD,sB3B4BgD,E2B9BjC;EAMU;;;IACvB,e3ByB+C,E2B1Bb;I9B9QjC;;;;;;M8BkRC,Y3BuB0C,EHzSnC;EAAR;;I8BuRC,Y3BkB0C;I2BjB1C,0B3BoB4C,EH5SrC;E8B4RW;;IACpB,Y3BY4C;I2BX5C,0B3Bc8C,E2BhBjB;EAM/B;IACE,e3BK+C,E2BNlC;I9BlSZ;;M8BqSC,Y3BY0C;M2BX1C,8B3BYiD,EHlT1C;E8B0SX;IACE,e3BP+C,E2BMnC;EAKL;IACL,e3BR6C,E2BOrC;I9B/ST;;M8BmTG,Y3BVwC;M2BWxC,8B3BV+C,EH1S1C;EAiBR;;;I8BwSG,Y3BhBwC;I2BiBxC,0B3Bd0C,EH3RrC;EAAR;;;I8B8SG,Y3BlBwC;I2BmBxC,8B3BlB+C,EH7R1C;E8BqTX;;IACE,sBAAoB,EADR;E9BrTX;;;I8B6TG,Y3BrCwC;I2BsCxC,0B3BnC0C,EH3RrC;E8BmUX;IACE,e3B7C+C,E2B4CnC;I9B/VX;M8BkWC,Y3B9C0C,EHpTnC;E8BsWX;IACE,e3BpD+C,E2BmDtC;I9B3VR;;M8B+VC,Y3BtD0C,EHzSnC;IAAR;;;;M8BqWG,Y3BxDwC,EH7SnC;;A+BhBb;EACE,mBAAmB;EACnB,iBAAiB;EACjB,uBAAuB;EACvB,2BAA2B,EAJtB;;AAMP;EACE,cAAc;EACd,sBAAsB,EAFX;;AAIH;EACR,iBAAiB,EADI;;AAIR;EACX,oBAAoB,EADG;;A/BTtB;E+BeD,sBAAsB,E/Bfb;;A+BwBb;EACE,yBAAuB;EACvB,kCAAiC;EACjC,kCAAkC;EtB3BhC,mCsB4BsC,EAJ5B;;AAMd;EACE,yBAAuB;EACvB,kCAAiC;EACjC,+BAA+B;EtBjC7B,mCsBkCsC,EAJ5B;;AAYd;EACE,0B5BpCkC;E4BqClC,sB5BrCkC,E4BmCrB;;AAIf;EACE,0B5BvCkC;E4BwClC,sB5BxCkC,E4BsCrB;;AAIf;EACE,0B5B1CkC;E4B2ClC,sB5B3CkC,E4ByCxB;;AAIZ;EACE,0B5B7CkC;E4B8ClC,sB5B9CkC,E4B4CrB;;AAIf;EACE,0B5BhDkC;E4BiDlC,sB5BjDkC,E4B+CtB;;AAYZ;;EACE,uDAAiC,EADrB;;AAMd;;;;EACE,YAAY,EADI;;AAKC;;;EACjB,iCAAW,EADc;;A/BtExB;;E+B2EC,YAAY,E/B3EL;;A+BqFb;EACE,WAAW;EACX,iBAAiB;EACjB,eAAe,EAHC;;AAOlB;EACE,kBAAkB;EtBxGhB,uBsByG2B,EAFpB;;AAIX;EACE,mBAAmB;EACnB,OAAO;EACP,SAAS;EACT,UAAU;EACV,QAAQ;EACR,iBAAiB,EANA;;AAYnB;EACE,oCAAmC;EtBxHjC,mCsByHsC,EAF3B;;AAIf;EACE,oCAAmC;EtB5HjC,mCsB6HsC,EAFxB;;AAUlB;EACE,eAAe;EACf,oBAAoB;EACpB,0BAA0B,EAHjB;EAKT;IACE,oBAAoB;IACpB,YAAY;IACZ,gBAAgB,EAHX;;AAMT;EACE,uBAAuB;EACvB,sBAAsB,EAFL;;AAUnB;EACE,eAAe;EACf,YAAY;EACZ,oBAAoB,EAHT;EAKX;IACE,oBAAoB;IACpB,YAAY;IACZ,gBAAgB,EAHX;IAKH;MACA,eAAe;MACf,eAAe,EAFR;;AAYb;EACE,wBAAgB;KAAhB,qBAAgB;UAAhB,gBAAgB;EAChB,yBAAiB;KAAjB,sBAAiB;UAAjB,iBAAiB,EAFJ;EAIb;IACE,sBAAsB;IACtB,YAAY,EAFP;;ACxLT;EACE,sB7BijBkC;E6BhjBlC,oB7B6C+B;E6B5C/B,iBAAiB;EACjB,0B7BIkC;EMJhC,uBNwG8B,E6B5GrB;EAOT;IACA,sBAAsB,EADlB;IAGA;MACF,qBAAqB;MACrB,oBAAoB;MACpB,e7BN8B;M6BO9B,mBAAsC,EAJ3B;EAQb;IACA,e7BZgC,E6BWvB;;AClBb;EACE,sBAAsB;EACtB,gBAAgB;EAChB,iB9B4C+B;E8B3C/B,oB9B2C+B;EM3C7B,uBNwG8B,E8B5GrB;EAOT;IACA,gBAAgB,EADZ;IAIF;;MACA,mBAAmB;MACnB,YAAY;MACZ,wB9BgF4B;M8B/E5B,kBAAkB;MAClB,iB9B8D0B;M8B7D1B,e9BN8B;M8BO9B,sBAAsB;MACtB,uB9BgVqC;M8B/UrC,uB9BgVqC,E8BzV/B;IAaJ;;MACA,eAAe;MPZrB,mCvB+FgC;MuB9F7B,gCvB8F6B,E8BpFpB;IAON;;MP5BN,oCvByGgC;MuBxG7B,iCvBwG6B,E8B7EpB;EjChBT;;;;IiCyBC,e9Bd6B;I8Be7B,0B9BjC8B;I8BkC9B,mB9B8TqC,EHzV9B;EAiBR;;;;;;IiCiBC,WAAW;IACX,Y9BwTqC;I8BvTrC,gBAAgB;IAChB,0B9BzC8B;I8B0C9B,sB9B1C8B,EHqBvB;EAAR;;;;;;IiC6BG,e9BtD4B;I8BuD5B,oB9BoIoC;I8BnIpC,uB9BgTmC;I8B/SnC,mB9BgTmC,EHhV9B;;AkChCP;;EACA,wB/BgGyB;E+B/FzB,mB/BiE8B,E+BnExB;;AAMJ;;ERON,kCvBgG4B;EuB/FzB,+BvB+FyB,E+BvGhB;;AAMN;;ERTN,mCvB0G4B;EuBzGzB,gCvByGyB,E+BjGhB;;AAZR;;EACA,wB/BmGyB;E+BlGzB,mB/BkE6B,E+BpEvB;;AAMJ;;ERON,kCvBiG4B;EuBhGzB,+BvBgGyB,E+BxGhB;;AAMN;;ERTN,mCvB2G4B;EuB1GzB,gCvB0GyB,E+BlGhB;;ACZd;EACE,gBAAgB;EAChB,iBhC6C+B;EgC5C/B,oBhC4C+B;EgC3C/B,mBAAmB;EACnB,iBAAiB,EALX;E7BSL;;IACC,aAAa;IACb,eAAe,EAFR;EAIR;IACC,YAAY,EADL;E6BLT;IACE,gBAAgB,EADd;IAIA;;MACA,sBAAsB;MACtB,kBAAiB;MACjB,uBhCoVqC;MgCnVrC,uBhCoVqC;MgCnVrC,oBhCsWqC,EgC3W/B;InCGP;;MmCOG,sBAAsB;MACtB,0BhCf4B,EHOvB;EAiBR;;;ImCDG,ehCxB4B;IgCyB5B,oBhCkKoC;IgCjKpC,uBhCkUmC,EHnU9B;EmCIP;IACA,ehC9B8B;IgC+B9B,oBhC4JsC;IgC3JtC,uBhC4TqC,EgC/T/B;;AAUR;;EACA,aAAa,EADP;;AAON;;EACA,YAAY,EADN;;ACrDV;EACE,sBAAsB;EACtB,sBAAmB;EACnB,eAAe;EACf,kBAAkB;EAClB,eAAe;EACf,YjC+bgC;EiC9bhC,mBAAmB;EACnB,oBAAoB;EACpB,yBAAyB;E3BLvB,uBNwG8B,EiC5G1B;EAaL;IACC,cAAc,EADP;EAKJ;IACH,mBAAmB;IACnB,UAAU,EAFJ;;ApCHL;;EoCYD,YjC2a8B;EiC1a9B,sBAAsB;EACtB,gBAAgB,EpCdP;;AoCuBb;ECxCE,0BlCSkC,EiC+BpB;EpCvBX;;IqCbC,0BAAwB,ErCajB;;AoC2Bb;EC5CE,0BlCakC,EiC+BpB;EpC3BX;;IqCbC,0BAAwB,ErCajB;;AoC+Bb;EChDE,0BlCckC,EiCkCpB;EpC/BX;;IqCbC,0BAAwB,ErCajB;;AoCmCb;ECpDE,0BlCekC,EiCqCvB;EpCnCR;;IqCbC,0BAAwB,ErCajB;;AoCuCb;ECxDE,0BlCgBkC,EiCwCpB;EpCvCX;;IqCbC,0BAAwB,ErCajB;;AoC2Cb;EC5DE,0BlCiBkC,EiC2CrB;EpC3CV;;IqCbC,0BAAwB,ErCajB;;AsCfb;EACE,mBAAmB;EACnB,WAAW;EACX,sBAAsB;EACtB,oBAAoB;EACpB,mBAAmB;EACnB,iBAAiB;EACjB,kBnCmiBgC;EmCliBhC,YnC2hBgC;EmC1hBhC,mBAAmB;EACnB,oBAAoB;EACpB,0BnCJkC;EMHhC,mBNwiB6B,EmC5iBzB;EAeL;IACC,cAAc,EADP;EAKR;;IACC,UAAU,EADE;EAMa;;IACzB,enChBgC;ImCiBhC,uBnC4gB8B,EmC9gBF;EAIX;IACjB,aAAa,EADO;EAGC;IACrB,kBAAkB,EADM;EAGJ;IACpB,iBAAiB,EADM;;AtCrBtB;;EsC6BD,YnCwf8B;EmCvf9B,sBAAsB;EACtB,gBAAgB,EtC/BP;;AuCfb;EACE,mBAA+C;EAC/C,oBpCiYmC;EoChYnC,epCiYsC;EoChYtC,0BpCIkC;EMJhC,sBNyG0B,EoC7GlB;;AAQZ;EACE,epC6XsC,EoC9XpB;;AAIpB;EACE,0BAAwB,EADX;;A1B4BX;E0BvBF;IACE,mBpCiXiC,EoClXvB;EAIZ;IACE,kBpCiX6C,EoClX3B,EAAA;;AAKtB;EACE,iBAAiB;EACjB,gBAAgB;E9BxBd,iB8ByBsB,EAHR;;ACtBlB;EACE,crC6dgC;EqC5dhC,oBrCyC+B;EqCxC/B,8BAA8B;E/BH5B,uBNwG8B,EqCxG1B;EAQJ;;IACA,iBAAiB,EADb;EAGA;IACJ,gBAAgB,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AElB,oBAAoB;EACpB,uB3CifkC;E2ChflC,uB3CifkC,E2CxflB;EAUf;IpB3BD,iCvB8GgC;IuB7G/B,gCvB6G+B,E2CnFjB;EAGd;IACC,iBAAiB;IpBrBnB,oCvBoGgC;IuBnG/B,mCvBmG+B,E2ChFlB;;AAYf;EACC,Y3C2ekC,E2C5ejB;EAGjB;IACE,Y3C0egC,E2C3eR;E9C5BvB;;I8CkCD,Y3CmegC;I2ClehC,sBAAsB;IACtB,0B3CudmC,EH3f1B;;AAiBR;;;E8C2BC,e3CpD8B;E2CqD9B,oB3CsIsC;E2CrItC,0B3CrD8B,EHwBvB;E8CgCP;;;IACE,eAAe,EADS;EAG1B;;;IACE,e3C7D4B,E2C4DP;;A9CnCxB;;;E8C4CC,WAAW;EACX,Y3CmC0B;E2ClC1B,0B3CnE8B;E2CoE9B,sB3CpE8B,EHqBvB;E8CoDoB;;;;;;;;;IACzB,eAAe,EADkB;EAGnC;;;IACE,e3Csb+B,E2CvbV;;AC1FgC;EAEzD,e5CgZoC;E4C/YpC,0B5CgZoC,E4ClZpC;;AAGD;EAGC,e5C2YoC,E4C5YpC;EAGA;IACE,eAAe,EADS;E/CSzB;;I+CJC,e5CoYkC;I4CnYlC,0BAAwB,E/CGjB;EAiBR;;;I+CfG,YAAY;IACZ,0B5C6XgC;I4C5XhC,sB5C4XgC,EH/W3B;;A+CnCgD;EAEzD,e5CoZoC;E4CnZpC,0B5CoZoC,E4CtZpC;;AAGD;EAGC,e5C+YoC,E4ChZpC;EAGA;IACE,eAAe,EADS;E/CSzB;;I+CJC,e5CwYkC;I4CvYlC,0BAAwB,E/CGjB;EAiBR;;;I+CfG,YAAY;IACZ,0B5CiYgC;I4ChYhC,sB5CgYgC,EHnX3B;;A+CnCgD;EAEzD,e5CwZoC;E4CvZpC,0B5CwZoC,E4C1ZpC;;AAGD;EAGC,e5CmZoC,E4CpZpC;EAGA;IACE,eAAe,EADS;E/CSzB;;I+CJC,e5C4YkC;I4C3YlC,0BAAwB,E/CGjB;EAiBR;;;I+CfG,YAAY;IACZ,0B5CqYgC;I4CpYhC,sB5CoYgC,EHvX3B;;A+CnCgD;EAEzD,e5C4ZoC;E4C3ZpC,0B5C4ZoC,E4C9ZpC;;AAGD;EAGC,e5CuZoC,E4CxZpC;EAGA;IACE,eAAe,EADS;E/CSzB;;I+CJC,e5CgZkC;I4C/YlC,0BAAwB,E/CGjB;EAiBR;;;I+CfG,YAAY;IACZ,0B5CyYgC;I4CxYhC,sB5CwYgC,EH3X3B;;A8C8Eb;EACE,cAAc;EACd,mBAAmB,EAFK;;AAI1B;EACE,iBAAiB;EACjB,iBAAiB,EAFI;;AEjHvB;EACE,mBAAmB;EACnB,eAAe;EACf,UAAU;EACV,WAAW;EACX,iBAAiB,EALA;EAWjB;;;;;IACE,mBAAmB;IACnB,OAAO;IACP,UAAU;IACV,QAAQ;IACR,YAAY;IACZ,aAAa;IACb,UAAU,EAPL;;AAYT;EACE,uBAAuB,EADA;;AAKzB;EACE,oBAAoB,EADE;;AC7BxB;EACE,aAAa;EACb,kBAA2B;EAC3B,kB9CwkBgC;E8CvkBhC,eAAe;EACf,Y9CukBgC;E8CtkBhC,0B9CukBwC;E8CtkBxC,YAAY,EAPN;EjDeH;;IiDLD,Y9CkkB8B;I8CjkB9B,sBAAsB;IACtB,gBAAgB;IAChB,YAAY,EjDEH;;AiDMP;EACJ,WAAW;EACX,gBAAgB;EAChB,wBAAwB;EACxB,UAAU;EACV,yBAAyB,EALb;;ACdd;EACE,iBAAiB,EADN;;AAKb;EACE,gBAAgB;EAChB,OAAO;EACP,SAAS;EACT,UAAU;EACV,QAAQ;EACR,c/CqN6B;E+CpN7B,cAAc;EACd,iBAAiB;EAGjB,WAAW;EACX,kCAAkC,EAZ5B;EAeC;IACL,gEAA6C;QAA7C,4DAA6C;SAA7C,2DAA6C;YAA7C,wDAA6C,EADzB;EAGjB;IAAgB,mCAAoB;QAApB,+BAAoB;SAApB,8BAAoB;YAApB,2BAAoB,EAArB;;AAEV;EACV,mBAAmB;EACnB,iBAAiB,EAFC;;AAMpB;EACE,mBAAmB;EACnB,YAAY;EACZ,aAAa,EAHA;;AAOf;EACE,mBAAmB;EACnB,uB/CkaiD;E+CjajD,qCAA6B;UAA7B,6BAA6B;EAC7B,qC/CiaiD;E+ChajD,sB/C2D4B;E+CxD5B,WAAW,EARG;;AAYhB;EACE,gBAAgB;EAChB,OAAO;EACP,SAAS;EACT,UAAU;EACV,QAAQ;EACR,c/CuK6B;E+CtK7B,uB/CoZgC,E+C3ZjB;EAUd;IAAQ,WAAW,EAAZ;EACP;IAAM,a/CiZuB,E+CjZxB;;AAKR;EACE,mBAAiC;EACjC,c/CmYgC;E+ClYhC,iC/C0YmC,E+C7YtB;;AAMD;EACZ,iBAAiB,EADG;;AAKtB;EACE,UAAU;EACV,iB/CR8B,E+CMlB;;AAOd;EACE,mBAAmB;EACnB,c/C+WgC,E+CjXrB;;AAMb;EACE,c/C0WgC;E+CzWhC,kBAAkB;EAClB,8B/CkXmC,E+CrXtB;E5CxFZ;;IACC,aAAa;IACb,eAAe,EAFR;EAIR;IACC,YAAY,EADL;E4C2FF;IACL,iBAAiB;IACjB,iBAAiB,EAFN;EAKK;IAChB,kBAAkB,EADI;EAIX;IACX,eAAe,EADQ;;AAM3B;EACE,mBAAmB;EACnB,aAAa;EACb,YAAY;EACZ,aAAa;EACb,iBAAiB,EALO;;ArC/EtB;EqC0FF;IACE,a/CuV+B;I+CtV/B,kBAAkB,EAFL;EASf;IAAY,a/CgVqB,E+ChVtB,EAAA;;ArCnGT;EqCuGF;IAAY,a/C0UqB,E+C1UtB,EAAA;;AC9Ib;EACE,mBAAmB;EACnB,chDgO6B;EgD/N7B,eAAe;EAEf,4DhDoDyE;EgDnDzE,mBhD6DiC;EgD5DjC,oBAAoB;EACpB,iBAAiB;EACjB,WAAW,EATH;EAWP;IAAM,ahDyZuB,EgDzZxB;EAGL;;IACC,eAA+B;IAC/B,iBAAiB,EAFkB;IAInC;;MACE,UAAU;MACV,UAAU;MACV,kBhDiZ2B;MgDhZ3B,wBAAyD;MACzD,uBhD4Y4B,EgDjZd;EASjB;;IACC,ehD0Y6B;IgDzY7B,iBAAiB,EAFgB;IAIjC;;MACE,SAAS;MACT,QAAQ;MACR,iBhDoY2B;MgDnY3B,4BAA8E;MAC9E,yBhD+X4B,EgDpYd;EASjB;;IACC,eAA+B;IAC/B,gBAAgB,EAFgB;IAIhC;;MACE,OAAO;MACP,UAAU;MACV,kBhDuX2B;MgDtX3B,wBhDsX2B;MgDrX3B,0BhDkX4B,EgDvXd;EASjB;;IACC,ehDgX6B;IgD/W7B,kBAAkB,EAFgB;IAIlC;;MACE,SAAS;MACT,SAAS;MACT,iBhD0W2B;MgDzW3B,4BhDyW2B;MgDxW3B,wBhDqW4B,EgD1Wd;;AAWpB;EACE,iBhD4ViC;EgD3VjC,iBAAgB;EAChB,YhD2VgC;EgD1VhC,mBAAmB;EACnB,sBAAsB;EACtB,uBhDyVgC;EMha9B,uBNwG8B,EgDvClB;;AAWhB;EACE,mBAAmB;EACnB,SAAS;EACT,UAAU;EACV,0BAA0B;EAC1B,oBAAoB,EALN;;AChFhB;EACE,mBAAmB;EACnB,OAAO;EACP,QAAQ;EACR,cjD8N6B;EiD7N7B,eAAe;EACf,iBjDwayC;EiDvazC,aAAa;EAEb,4DjDiDyE;EiDhDzE,gBjDwD+B;EiDvD/B,oBAAoB;EACpB,iBjDkE8B;EiDjE9B,iBAAiB;EAEjB,oBAAoB;EACpB,uBjD6ZwC;EiD5ZxC,qCAA6B;UAA7B,6BAA6B;EAC7B,qCjD6ZwC;EM3atC,sBNyG0B,EiD7GpB;EA0BP;;IACC,kBjDyZsC,EiD1ZH;IAGnC;;MACE,cjDyZqD;MiDxZrD,UAAU;MACV,mBjDuZqD;MiDtZrD,sCjDuZuC;MiDtZvC,uBAAuB,EALT;MAMb;;QACC,YAAY;QACZ,mBjD+YkC;QiD9YlC,YAAY;QACZ,uBjDsYkC;QiDrYlC,uBAAuB,EALhB;EAWZ;;IACC,kBjDqYsC,EiDtYL;IAGjC;;MACE,SAAS;MACT,YjDoYqD;MiDnYrD,kBjDmYqD;MiDlYrD,wCjDmYuC;MiDlYvC,qBAAqB,EALP;MAMb;;QACC,cjD4XkC;QiD3XlC,UAAU;QACV,YAAY;QACZ,yBjDkXkC;QiDjXlC,qBAAqB,EALd;EAWZ;;IACC,iBjDiXsC,EiDlXN;IAGhC;;MACE,WjDiXqD;MiDhXrD,UAAU;MACV,mBjD+WqD;MiD9WrD,oBAAoB;MACpB,yCjD8WuC,EiDnXzB;MAMb;;QACC,SAAS;QACT,mBjDuWkC;QiDtWlC,YAAY;QACZ,oBAAoB;QACpB,0BjD6VkC,EiDlW3B;EAWZ;;IACC,mBjD6VsC,EiD9VJ;IAGlC;;MACE,SAAS;MACT,ajD4VqD;MiD3VrD,kBjD2VqD;MiD1VrD,sBAAsB;MACtB,uCjD0VuC,EiD/VzB;MAMb;;QACC,WAAW;QACX,cjDmVkC;QiDlVlC,YAAY;QACZ,sBAAsB;QACtB,wBjDyUkC,EiD9U3B;;AAaf;EACE,kBAAiB;EACjB,UAAU;EACV,gBjD7C+B;EiD8C/B,0BjDkU0C;EiDjU1C,iCAA+B;E3C7G7B,mC2C8GwE,EAN5D;;AAShB;EACE,kBAAiB,EADD;;AAWf;;EACC,mBAAmB;EACnB,eAAe;EACf,SAAS;EACT,UAAU;EACV,0BAA0B;EAC1B,oBAAoB,EANb;;AASX;EACE,mBjD6SyD,EiD9S3C;;AAGF;EACZ,YAAY;EACZ,mBjDsSwC,EiDxSpB;;AC3ItB;EACE,mBAAmB,EADV;;AAIX;EACE,mBAAmB;EACnB,YAAY;EACZ,iBAAiB,EAHF;EAKb;IACA,mBAAmB;IACnB,cAAc;IACd,yCAAiC;SAAjC,oCAAiC;YAAjC,iCAAiC,EAHjB;IAOV;;MAEJ,eAAe,EAFN;IAMX;MAbA;QAcE,uDAAqC;aAArC,6CAAqC;gBAArC,uCAAqC;QACrC,oCAA4B;gBAA5B,4BAA4B;QAC5B,0BAAkB;gBAAlB,kBAAkB,EAhBJ;QAmBN;;UACN,QAAQ;UACR,2CAAsB;kBAAtB,mCAAsB,EAFR;QAKR;;UACN,QAAQ;UACR,4CAAsB;kBAAtB,oCAAsB,EAFT;QAMd;;;UACC,QAAQ;UACR,wCAAsB;kBAAtB,gCAAsB,EAFd,EAAA;EASZ;;;IACA,eAAe,EADR;EAIP;IACA,QAAQ,EADC;EAKT;;IACA,mBAAmB;IACnB,OAAO;IACP,YAAY,EAHL;EAMP;IACA,WAAW,EADJ;EAGP;IACA,YAAY,EADL;EAIF;;IACL,QAAQ,EADK;EAIN;IACP,YAAY,EADE;EAGP;IACP,WAAW,EADI;;AAUnB;EACE,mBAAmB;EACnB,OAAO;EACP,UAAU;EACV,QAAQ;EACR,WlDke+C;EkDje/C,gBlDmegD;EkDlehD,YlD+dgD;EkD9dhD,mBAAmB;EACnB,0ClD2d0D;EkD1d1D,alD8d8C,EkDxe7B;EAehB;IVrGD,qHAAiC;IAAjC,mGAAiC;IAAjC,8FAAiC;IAAjC,+FAAiC;IACjC,4BAA4B;IAC5B,uHAAwJ,EUmGhJ;EAGP;IACC,SAAS;IACT,WAAW;IV1Gb,qHAAiC;IAAjC,mGAAiC;IAAjC,8FAAiC;IAAjC,+FAAiC;IACjC,4BAA4B;IAC5B,uHAAwJ,EUsG/I;ErD3FN;;IqDmGD,YlD4c8C;IkD3c9C,sBAAsB;IACtB,WAAW;IACX,YAAY,ErDtGH;EqD2GX;;IACE,mBAAmB;IACnB,SAAS;IACT,WAAW;IACX,sBAAsB;IACtB,YAAY;IACZ,aAAa;IACb,kBAAkB;IAClB,mBAAmB;IACnB,eAAe,EATL;EAWZ;IACE,UAAU;IACV,mBAAmB,EAFT;EAIZ;IACE,WAAW;IACX,oBAAoB,EAFV;EAKT;IACC,iBAAiB,EADT;EAKT;IACC,iBAAiB,EADT;;AAYd;EACE,mBAAmB;EACnB,aAAa;EACb,UAAU;EACV,YAAY;EACZ,WAAW;EACX,gBAAgB;EAChB,kBAAkB;EAClB,mBAAmB;EACnB,iBAAiB,EATG;EAWpB;IACE,sBAAsB;IACtB,YAAY;IACZ,aAAa;IACb,YAAY;IACZ,oBAAoB;IACpB,gBAAgB;IAMhB,8BAAsB;IACtB,uBlD6Y8C;IkD5Y9C,oBAAoB,EAdlB;EAgBJ;IACE,YAAY;IACZ,aAAa;IACb,UAAU;IACV,uBlDqY8C,EkDzYvC;;AAaX;EACE,mBAAmB;EACnB,WAAW;EACX,aAAa;EACb,UAAU;EACV,YAAY;EACZ,kBAAkB;EAClB,qBAAqB;EACrB,YlDuXgD;EkDtXhD,mBAAmB;EACnB,0ClD2W0D,EkDrXzC;EAYjB;IACE,kBAAkB,EADd;;AxC3KJ;EwCyLA;;IACE,YAAY;IACZ,aAAa;IACb,kBAAkB;IAClB,gBAAgB,EAJN;EAMZ;IACE,mBAAmB,EADT;EAGZ;IACE,oBAAoB,EADV;EAMd;IACE,WAAW;IACX,UAAU;IACV,qBAAqB,EAHJ;EAOnB;IACE,aAAa,EADO,EAAA;;A/C9OrB;;EACC,aAAa;EACb,eAAe,EAFR;;AAIR;EACC,YAAY,EADL;;AgDLX;ECVE,eAAe;EACf,kBAAkB;EAClB,mBAAmB,EDQN;;AAIf;EEbE,wBAAwB,EFab;;AAIb;EEpBE,uBAAuB,EFoBb;;AASZ;EGzBE,mBAAmB;EACnB,WAAW;EACX,YAAY;EACZ,WAAW;EACX,aAAa;EACb,iBAAiB;EACjB,uBAAU;EACV,UAAU,EHkBF;;AGPP;;EACC,iBAAiB;EACjB,YAAY;EACZ,aAAa;EACb,UAAU;EACV,kBAAkB;EAClB,WAAW,EANJ;;AHoBX;EAAS,UAAiB,EAAlB;;AACR;EAAS,cAAiB,EAAlB;;AACR;EAAS,gBAAiB,EAAlB;;AACR;EAAS,iBAAiB,EAAlB;;AACR;EAAS,eAAiB,EAAlB;;AAER;EAAO,anDG0B,EmDH3B;;AACN;EAAO,iBnDE0B,EmDF3B;;AACN;EAAO,mBnDC0B,EmDD3B;;AACN;EAAO,oBnDA0B,EmDA3B;;AACN;EAAO,kBnDD0B,EmDC3B;;AACN;EACE,mBnDH+B;EmDI/B,kBnDJ+B,EmDE3B;;AAIN;EACE,iBnDP+B;EmDQ/B,oBnDR+B,EmDM3B;;AAKN;EAAU,mBAAyB,EAA1B;;AACT;EAAU,qBAAyB,EAA1B;;AACT;EAAU,sBAAyB,EAA1B;;AACT;EAAU,oBAAyB,EAA1B;;AACT;EACE,qBAAwB;EACxB,oBAAwB,EAFjB;;AAIT;EACE,mBAAyB;EACzB,sBAAyB,EAFlB;;AAKT;EAAU,iBAAyB,EAA1B;;AACT;EAAU,mBAAyB,EAA1B;;AACT;EAAU,oBAAyB,EAA1B;;AACT;EAAU,kBAAyB,EAA1B;;AACT;EACE,mBAAwB;EACxB,kBAAwB,EAFjB;;AAIT;EACE,iBAAyB;EACzB,oBAAyB,EAFlB;;AAOT;EAAS,WAAkB,EAAnB;;AACR;EAAS,eAAkB,EAAnB;;AACR;EAAS,iBAAkB,EAAnB;;AACR;EAAS,kBAAkB,EAAnB;;AACR;EAAS,gBAAkB,EAAnB;;AAER;EAAO,cnD7C0B,EmD6C3B;;AACN;EAAO,kBnD9C0B,EmD8C3B;;AACN;EAAO,oBnD/C0B,EmD+C3B;;AACN;EAAO,qBnDhD0B,EmDgD3B;;AACN;EAAO,mBnDjD0B,EmDiD3B;;AACN;EACE,oBnDnD+B;EmDoD/B,mBnDpD+B,EmDkD3B;;AAIN;EACE,kBnDvD+B;EmDwD/B,qBnDxD+B,EmDsD3B;;AAKN;EAAU,oBAA0B,EAA3B;;AACT;EAAU,sBAA0B,EAA3B;;AACT;EAAU,uBAA0B,EAA3B;;AACT;EAAU,qBAA0B,EAA3B;;AACT;EACE,sBAAyB;EACzB,qBAAyB,EAFlB;;AAIT;EACE,oBAA0B;EAC1B,uBAA0B,EAFnB;;AAKT;EAAU,kBAA0B,EAA3B;;AACT;EAAU,oBAA0B,EAA3B;;AACT;EAAU,qBAA0B,EAA3B;;AACT;EAAU,mBAA0B,EAA3B;;AACT;EACE,oBAAyB;EACzB,mBAAyB,EAFlB;;AAIT;EACE,kBAA0B;EAC1B,qBAA0B,EAFnB;;AAQT;EACE,gBAAgB;EAChB,OAAO;EACP,SAAS;EACT,QAAQ;EACR,cnDwF6B,EmD7FrB;;AvDypIV;EuD/oIE,yBAAyB,EADjB;;AAIV;EACE,mBAAmB,EADT;;AAIZ;EI3JE,cAAc;EACd,mBAAmB;EACnB,kBAAkB;EAClB,8BAA8B;EAC9B,UAAU,EJuJA;;AAUZ;EAAuB,iBAAiB,EAAlB;;AACtB;EAAuB,kBAAkB,EAAnB;;AACtB;EAAuB,mBAAmB,EAApB;;AACtB;EAAuB,oBAAoB,EAArB;;AACtB;EAAuB,oBAAoB,EAArB;;AACtB;EKxKE,iBAAiB;EACjB,wBAAwB;EACxB,oBAAoB,ELsKA;;AAGtB;EAAuB,0BAA0B,EAA3B;;AACtB;EAAuB,0BAA0B,EAA3B;;AACtB;EAAuB,2BAA2B,EAA5B;;AAItB;EACE,enD1KkC,EmDyKvB;;AMnLkC;EAE3C,ezDYgC,EyDbhC;;A5DiBC;;E4DZC,eAAa,E5DYN;;A4DlBkC;EAE3C,ezDgZoC,EyDjZpC;;A5DiBC;;E4DZC,eAAa,E5DYN;;A4DlBkC;EAE3C,ezDoZoC,EyDrZpC;;A5DiBC;;E4DZC,eAAa,E5DYN;;A4DlBkC;EAE3C,ezDwZoC,EyDzZpC;;A5DiBC;;E4DZC,eAAa,E5DYN;;A4DlBkC;EAE3C,ezD4ZoC,EyD7ZpC;;A5DiBC;;E4DZC,eAAa,E5DYN;;AsDsLb;EACE,enD9LkC;EmD+LlC,0BnDnMkC,EmDiM1B;;AAKV;EAGE,YAAY,EAHD;;AO5MuB;EAEhC,0B1DWgC,E0DZhC;;A7DgBC;;E6DXC,0BAAwB,E7DWjB;;A6DjBuB;EAEhC,0B1DgZoC,E0DjZpC;;A7DgBC;;E6DXC,0BAAwB,E7DWjB;;A6DjBuB;EAEhC,0B1DoZoC,E0DrZpC;;A7DgBC;;E6DXC,0BAAwB,E7DWjB;;A6DjBuB;EAEhC,0B1DwZoC,E0DzZpC;;A7DgBC;;E6DXC,0BAAwB,E7DWjB;;A6DjBuB;EAEhC,0B1D4ZoC,E0D7ZpC;;A7DgBC;;E6DXC,0BAAwB,E7DWjB;;A8DX6B;EAGpC,yBAAyB,EAF3B;;AjDgDA;EiD5CD;IAGG,yBAAyB,EAF3B,EAAA;;AjD8BA;EiDpCsC;IAGpC,yBAAyB,EAF3B,EAAA;;AjDgDA;EiD5CD;IAGG,yBAAyB,EAF3B,EAAA;;AjD8BA;EiDpCsC;IAGpC,yBAAyB,EAF3B,EAAA;;AjDgDA;EiD5CD;IAGG,yBAAyB,EAF3B,EAAA;;AjD8BA;EiDpCsC;IAGpC,yBAAyB,EAF3B,EAAA;;AjDgDA;EiD5CD;IAGG,yBAAyB,EAF3B,EAAA;;AjD8BA;EiDpCsC;IAGpC,yBAAyB,EAF3B,EAAA;;AAID;EAGG,yBAAyB,EAF3B;;AAYJ;EACE,yBAAyB,EADL;EAGpB;IAHF;MAII,0BAA0B,EAJR,EAAA;;AAOtB;EACE,yBAAyB,EADJ;EAGrB;IAHF;MAII,2BAA2B,EAJR,EAAA;;AAOvB;EACE,yBAAyB,EADE;EAG3B;IAHF;MAII,iCAAiC,EAJR,EAAA;;AAS3B;ECnCuC;IAErC,yBAAyB,EADzB,EAAA","file":"bootstrap.css"}
\ No newline at end of file diff --git a/docs/dist/css/bootstrap.min.css b/docs/dist/css/bootstrap.min.css index 172960832e..e0f7b502bc 100644 --- a/docs/dist/css/bootstrap.min.css +++ b/docs/dist/css/bootstrap.min.css @@ -2,4 +2,4 @@ * Bootstrap v4.0.0-alpha (http://getbootstrap.com) * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.2 | MIT License | git.io/normalize */.label,sub,sup{vertical-align:baseline}img,legend{border:0}address,dl,ol,p,ul{margin-bottom:1rem}b,dt,optgroup,strong{font-weight:700}caption,th{text-align:left}fieldset,legend,td,th{padding:0}pre,textarea{overflow:auto}.btn-group>.btn-group,.btn-toolbar .btn-group,.btn-toolbar .input-group,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.dropdown-menu,.table-reflow thead,.table-reflow tr{float:left}.popover-arrow,.popover-arrow:after,.tooltip-arrow{width:0;height:0;border-color:transparent;border-style:solid}.breadcrumb,.dropdown-menu,.list-inline,.list-unstyled,.media-list,.nav,.pager{list-style:none}.btn-group-vertical>.btn-group:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal:after,.dropdown-menu>li>a,.modal-footer:after,.nav:after,.navbar:after,.pager:after,.row:after{clear:both}.badge,.btn,.dropdown-header,.dropdown-menu>li>a,.input-group-btn,.label,.table-reflow tbody{white-space:nowrap}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}dfn{font-style:italic}h1{margin:.67em 0}mark{color:#000;background:#ff0}.btn-danger.active,.btn-danger:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-secondary.active,.btn-secondary:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning:active,.btn.active,.btn:active,.form-control,.open>.btn-danger.dropdown-toggle,.open>.btn-info.dropdown-toggle,.open>.btn-primary.dropdown-toggle,.open>.btn-secondary.dropdown-toggle,.open>.btn-success.dropdown-toggle,.open>.btn-warning.dropdown-toggle{background-image:none}sub,sup{position:relative;font-size:75%;line-height:0}sup{top:-.5em}sub{bottom:-.25em}img{vertical-align:middle}svg:not(:root){overflow:hidden}hr{height:0;-webkit-box-sizing:content-box;box-sizing:content-box}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}address,legend{line-height:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:none}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}textarea{resize:vertical}table{border-spacing:0;border-collapse:collapse}@media print{blockquote,img,pre,tr{page-break-inside:avoid}*,:after,:before{text-shadow:none!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}abbr[title]:after{content:" (" attr(title) ")"}blockquote,pre{border:1px solid #999}thead{display:table-header-group}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:16px;-webkit-tap-highlight-color:transparent}*,:after,:before{-webkit-box-sizing:inherit;box-sizing:inherit}@at-root{@-ms-viewport{width:device-width}@viewport{width:device-width}}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:1rem;line-height:1.5;color:#373a3c;background-color:#fff}dl,h1,h2,h3,h4,h5,h6,ol,p,ul{margin-top:0}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #818a91}address{font-style:normal}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dd,label{margin-bottom:.5rem}dd{margin-left:0}blockquote,figure{margin:0 0 1rem}a{color:#0275d8;text-decoration:none}a:focus,a:hover{color:#014c8c;text-decoration:underline}a:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}[role=button]{cursor:pointer}table{background-color:transparent}caption{padding-top:.75rem;padding-bottom:.75rem;color:#818a91;caption-side:bottom}label{display:inline-block}button,input,select,textarea{margin:0;line-height:inherit}fieldset{min-width:0;margin:0;border:0}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6,legend{margin-bottom:.5rem}legend{display:block;width:100%;font-size:1.5rem}.list-inline>li,output{display:inline-block}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#818a91}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.blockquote,hr{margin-bottom:1rem}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:2.75rem}.h2,h2{font-size:2.25rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}hr{margin-top:1rem;border:0;border-top:.0625rem solid #eceeef}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0}.list-inline{padding-left:0;margin-left:-5px}.list-inline>li{padding-right:5px;padding-left:5px}.dl-horizontal{margin-right:-1.5rem;margin-left:-1.5rem}.container,.container-fluid{margin-right:auto;margin-left:auto}.dl-horizontal:after,.dl-horizontal:before{display:table;content:" "}.initialism{font-size:90%;text-transform:uppercase}.blockquote{padding:.5rem 1rem;font-size:1.25rem;border-left:.25rem solid #eceeef}.blockquote ol:last-child,.blockquote p:last-child,.blockquote ul:last-child{margin-bottom:0}.table,pre{margin-bottom:1rem}.blockquote footer{display:block;font-size:80%;line-height:1.5;color:#818a91}code,kbd{font-size:90%}.blockquote footer:before{content:"\2014 \00A0"}.blockquote-reverse footer:before,.dropdown-toggle:after{content:""}.blockquote-reverse{padding-right:1rem;padding-left:0;text-align:right;border-right:.25rem solid #eceeef;border-left:0}.blockquote-reverse footer:after{content:"\00A0 \2014"}.container-fluid:after,.container-fluid:before,.container:after,.container:before{display:table;content:" "}.carousel-inner>.carousel-item>a>img,.carousel-inner>.carousel-item>img,.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:.3rem}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:.25rem;line-height:1.5;background-color:#fff;border:1px solid #ddd;border-radius:.25rem;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}code,kbd{padding:.2rem .4rem}.img-circle{border-radius:50%}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.popover,.tooltip{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}code{color:#d44950;background-color:#f7f7f9;border-radius:.25rem}kbd{color:#fff;background-color:#333;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;margin-top:0;font-size:90%;line-height:1.5;color:#373a3c}pre code{padding:0;font-size:inherit;color:inherit;background-color:transparent;border-radius:0}.container,.container-fluid{padding-right:.75rem;padding-left:.75rem}.pre-scrollable{max-height:340px;overflow-y:scroll}.row{margin-right:-.75rem;margin-left:-.75rem}.row:after,.row:before{display:table;content:" "}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:.75rem;padding-left:.75rem}.col-xs-1{width:8.333333%}.col-xs-2{width:16.666667%}.col-xs-3{width:25%}.col-xs-4{width:33.333333%}.col-xs-5{width:41.666667%}.col-xs-6{width:50%}.col-xs-7{width:58.333333%}.col-xs-8{width:66.666667%}.col-xs-9{width:75%}.col-xs-10{width:83.333333%}.col-xs-11{width:91.666667%}.col-xs-12{width:100%}.col-xs-pull-0{right:auto}.col-xs-pull-1{right:8.333333%}.col-xs-pull-2{right:16.666667%}.col-xs-pull-3{right:25%}.col-xs-pull-4{right:33.333333%}.col-xs-pull-5{right:41.666667%}.col-xs-pull-6{right:50%}.col-xs-pull-7{right:58.333333%}.col-xs-pull-8{right:66.666667%}.col-xs-pull-9{right:75%}.col-xs-pull-10{right:83.333333%}.col-xs-pull-11{right:91.666667%}.col-xs-pull-12{right:100%}.col-xs-push-0{left:auto}.col-xs-push-1{left:8.333333%}.col-xs-push-2{left:16.666667%}.col-xs-push-3{left:25%}.col-xs-push-4{left:33.333333%}.col-xs-push-5{left:41.666667%}.col-xs-push-6{left:50%}.col-xs-push-7{left:58.333333%}.col-xs-push-8{left:66.666667%}.col-xs-push-9{left:75%}.col-xs-push-10{left:83.333333%}.col-xs-push-11{left:91.666667%}.col-xs-push-12{left:100%}.col-xs-offset-0{margin-left:0}.col-xs-offset-1{margin-left:8.333333%}.col-xs-offset-2{margin-left:16.666667%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-4{margin-left:33.333333%}.col-xs-offset-5{margin-left:41.666667%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-7{margin-left:58.333333%}.col-xs-offset-8{margin-left:66.666667%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-10{margin-left:83.333333%}.col-xs-offset-11{margin-left:91.666667%}.col-xs-offset-12{margin-left:100%}@media (min-width:34em){.container{max-width:34rem}.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-1{width:8.333333%}.col-sm-2{width:16.666667%}.col-sm-3{width:25%}.col-sm-4{width:33.333333%}.col-sm-5{width:41.666667%}.col-sm-6{width:50%}.col-sm-7{width:58.333333%}.col-sm-8{width:66.666667%}.col-sm-9{width:75%}.col-sm-10{width:83.333333%}.col-sm-11{width:91.666667%}.col-sm-12{width:100%}.col-sm-pull-0{right:auto}.col-sm-pull-1{right:8.333333%}.col-sm-pull-2{right:16.666667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.333333%}.col-sm-pull-5{right:41.666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.333333%}.col-sm-pull-8{right:66.666667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.333333%}.col-sm-pull-11{right:91.666667%}.col-sm-pull-12{right:100%}.col-sm-push-0{left:auto}.col-sm-push-1{left:8.333333%}.col-sm-push-2{left:16.666667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.333333%}.col-sm-push-5{left:41.666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.333333%}.col-sm-push-8{left:66.666667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.333333%}.col-sm-push-11{left:91.666667%}.col-sm-push-12{left:100%}.col-sm-offset-0{margin-left:0}.col-sm-offset-1{margin-left:8.333333%}.col-sm-offset-2{margin-left:16.666667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.333333%}.col-sm-offset-5{margin-left:41.666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.333333%}.col-sm-offset-8{margin-left:66.666667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.333333%}.col-sm-offset-11{margin-left:91.666667%}.col-sm-offset-12{margin-left:100%}}@media (min-width:48em){.container{max-width:45rem}.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-1{width:8.333333%}.col-md-2{width:16.666667%}.col-md-3{width:25%}.col-md-4{width:33.333333%}.col-md-5{width:41.666667%}.col-md-6{width:50%}.col-md-7{width:58.333333%}.col-md-8{width:66.666667%}.col-md-9{width:75%}.col-md-10{width:83.333333%}.col-md-11{width:91.666667%}.col-md-12{width:100%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.333333%}.col-md-pull-2{right:16.666667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.333333%}.col-md-pull-5{right:41.666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.333333%}.col-md-pull-8{right:66.666667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.333333%}.col-md-pull-11{right:91.666667%}.col-md-pull-12{right:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.333333%}.col-md-push-2{left:16.666667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.333333%}.col-md-push-5{left:41.666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.333333%}.col-md-push-8{left:66.666667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.333333%}.col-md-push-11{left:91.666667%}.col-md-push-12{left:100%}.col-md-offset-0{margin-left:0}.col-md-offset-1{margin-left:8.333333%}.col-md-offset-2{margin-left:16.666667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.333333%}.col-md-offset-5{margin-left:41.666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.333333%}.col-md-offset-8{margin-left:66.666667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.333333%}.col-md-offset-11{margin-left:91.666667%}.col-md-offset-12{margin-left:100%}}@media (min-width:62em){.container{max-width:60rem}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-1{width:8.333333%}.col-lg-2{width:16.666667%}.col-lg-3{width:25%}.col-lg-4{width:33.333333%}.col-lg-5{width:41.666667%}.col-lg-6{width:50%}.col-lg-7{width:58.333333%}.col-lg-8{width:66.666667%}.col-lg-9{width:75%}.col-lg-10{width:83.333333%}.col-lg-11{width:91.666667%}.col-lg-12{width:100%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.333333%}.col-lg-pull-2{right:16.666667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.333333%}.col-lg-pull-5{right:41.666667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.333333%}.col-lg-pull-8{right:66.666667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.333333%}.col-lg-pull-11{right:91.666667%}.col-lg-pull-12{right:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.333333%}.col-lg-push-2{left:16.666667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.333333%}.col-lg-push-5{left:41.666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.333333%}.col-lg-push-8{left:66.666667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.333333%}.col-lg-push-11{left:91.666667%}.col-lg-push-12{left:100%}.col-lg-offset-0{margin-left:0}.col-lg-offset-1{margin-left:8.333333%}.col-lg-offset-2{margin-left:16.666667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.333333%}.col-lg-offset-5{margin-left:41.666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.333333%}.col-lg-offset-8{margin-left:66.666667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.333333%}.col-lg-offset-11{margin-left:91.666667%}.col-lg-offset-12{margin-left:100%}}@media (min-width:75em){.container{max-width:72.25rem}.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9{float:left}.col-xl-1{width:8.333333%}.col-xl-2{width:16.666667%}.col-xl-3{width:25%}.col-xl-4{width:33.333333%}.col-xl-5{width:41.666667%}.col-xl-6{width:50%}.col-xl-7{width:58.333333%}.col-xl-8{width:66.666667%}.col-xl-9{width:75%}.col-xl-10{width:83.333333%}.col-xl-11{width:91.666667%}.col-xl-12{width:100%}.col-xl-pull-0{right:auto}.col-xl-pull-1{right:8.333333%}.col-xl-pull-2{right:16.666667%}.col-xl-pull-3{right:25%}.col-xl-pull-4{right:33.333333%}.col-xl-pull-5{right:41.666667%}.col-xl-pull-6{right:50%}.col-xl-pull-7{right:58.333333%}.col-xl-pull-8{right:66.666667%}.col-xl-pull-9{right:75%}.col-xl-pull-10{right:83.333333%}.col-xl-pull-11{right:91.666667%}.col-xl-pull-12{right:100%}.col-xl-push-0{left:auto}.col-xl-push-1{left:8.333333%}.col-xl-push-2{left:16.666667%}.col-xl-push-3{left:25%}.col-xl-push-4{left:33.333333%}.col-xl-push-5{left:41.666667%}.col-xl-push-6{left:50%}.col-xl-push-7{left:58.333333%}.col-xl-push-8{left:66.666667%}.col-xl-push-9{left:75%}.col-xl-push-10{left:83.333333%}.col-xl-push-11{left:91.666667%}.col-xl-push-12{left:100%}.col-xl-offset-0{margin-left:0}.col-xl-offset-1{margin-left:8.333333%}.col-xl-offset-2{margin-left:16.666667%}.col-xl-offset-3{margin-left:25%}.col-xl-offset-4{margin-left:33.333333%}.col-xl-offset-5{margin-left:41.666667%}.col-xl-offset-6{margin-left:50%}.col-xl-offset-7{margin-left:58.333333%}.col-xl-offset-8{margin-left:66.666667%}.col-xl-offset-9{margin-left:75%}.col-xl-offset-10{margin-left:83.333333%}.col-xl-offset-11{margin-left:91.666667%}.col-xl-offset-12{margin-left:100%}}.table{width:100%;max-width:100%}.table td,.table th{padding:.75rem;line-height:1.5;vertical-align:top;border-top:1px solid #eceeef}.table thead th{vertical-align:bottom;border-bottom:2px solid #eceeef}.table tbody+tbody{border-top:2px solid #eceeef}.table .table{background-color:#fff}.table-sm td,.table-sm th{padding:.3rem}.table-bordered,.table-bordered td,.table-bordered th{border:1px solid #eceeef}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-striped tbody tr:nth-of-type(odd){background-color:#f9f9f9}.table-active,.table-active>td,.table-active>th,.table-hover tbody tr:hover{background-color:#f5f5f5}.table-hover .table-active:hover,.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:#e8e8e8}.table-success,.table-success>td,.table-success>th{background-color:#dff0d8}.table-hover .table-success:hover,.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#d0e9c6}.table-info,.table-info>td,.table-info>th{background-color:#d9edf7}.table-hover .table-info:hover,.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#c4e3f3}.table-warning,.table-warning>td,.table-warning>th{background-color:#fcf8e3}.table-hover .table-warning:hover,.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#faf2cc}.table-danger,.table-danger>td,.table-danger>th{background-color:#f2dede}.table-hover .table-danger:hover,.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#ebcccc}.table-responsive{display:block;width:100%;overflow-x:auto}.collapsing,.embed-responsive,.media,.media-body,.modal,.modal-open{overflow:hidden}.thead-inverse th{color:#fff;background-color:#373a3c}.thead-default th{color:#55595c;background-color:#eceeef}.table-inverse{color:#eceeef;background-color:#373a3c}.table-inverse.table-bordered{border:0}.table-inverse td,.table-inverse th,.table-inverse thead th{border-color:#55595c}.table-reflow tbody{display:block}.table-reflow td,.table-reflow th{border-top:1px solid #eceeef;border-left:1px solid #eceeef}.table-reflow td:last-child,.table-reflow th:last-child{border-right:1px solid #eceeef}.table-reflow tbody:last-child tr:last-child td,.table-reflow tbody:last-child tr:last-child th,.table-reflow tfoot:last-child tr:last-child td,.table-reflow tfoot:last-child tr:last-child th,.table-reflow thead:last-child tr:last-child td,.table-reflow thead:last-child tr:last-child th{border-bottom:1px solid #eceeef}.table-reflow tr td,.table-reflow tr th{display:block!important;border:1px solid #eceeef}.form-control,.form-control-file,.form-control-range{display:block}.form-control{width:100%;padding:.5rem .75rem;font-size:1rem;line-height:1.5;color:#55595c;background-color:#fff;border:1px solid #ccc;border-radius:.25rem;-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:not(select[multiple]),.form-control:not(select[size]),.form-control:not(textarea){height:2.625rem}.form-control:focus{border-color:#66afe9;outline:0}.form-control::-webkit-input-placeholder{color:#999;opacity:1}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999;opacity:1}.form-control::placeholder{color:#999;opacity:1}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .form-control-feedback,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.form-control:disabled,.form-control[readonly],fieldset[disabled] .form-control{background-color:#eceeef;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:false}.form-control-label{padding:.5625rem .75rem;margin-bottom:0}.form-control-static{min-height:2.625rem;padding-top:.5625rem;padding-bottom:.5625rem;margin-bottom:0}.form-control-static.form-control-lg,.form-control-static.form-control-sm,.input-group-lg>.form-control-static.form-control,.input-group-lg>.form-control-static.input-group-addon,.input-group-lg>.input-group-btn>.form-control-static.btn,.input-group-sm>.form-control-static.form-control,.input-group-sm>.form-control-static.input-group-addon,.input-group-sm>.input-group-btn>.form-control-static.btn{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:2rem;padding:.3rem .75rem;font-size:.85rem;line-height:1.5;border-radius:.2rem}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:3.291667rem;padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.333333;border-radius:.3rem}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-bottom:.75rem}.checkbox label,.radio label{padding-left:1.25rem;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox label input:only-child,.radio label input:only-child{position:static}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:.25rem;margin-left:-1.25rem}.collapsing,.dropdown,.dropup,.has-feedback{position:relative}.checkbox+.checkbox,.radio+.radio{margin-top:-.25rem}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:1.25rem;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:.75rem}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox]:disabled,input[type=radio].disabled,input[type=radio]:disabled{cursor:false}.checkbox-inline.disabled,.checkbox.disabled label,.radio-inline.disabled,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio label,fieldset[disabled] .radio-inline{cursor:false}.has-feedback .form-control{padding-right:3.28125rem}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:2.625rem;height:2.625rem;line-height:2.625rem;text-align:center;pointer-events:none}.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:3.291667rem;height:3.291667rem;line-height:3.291667rem}.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:2rem;height:2rem;line-height:2rem}.has-success .form-control{border-color:#3c763d}.has-success .form-control:focus{border-color:#2b542c}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .form-control-feedback,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b}.has-warning .form-control:focus{border-color:#66512c}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .form-control-feedback,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442}.has-error .form-control:focus{border-color:#843534}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-feedback label~.form-control-feedback{top:6}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:.25rem;margin-bottom:.75rem;color:#747a7f}@media (min-width:34em){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.btn{display:inline-block;padding:.5rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:.0625rem solid transparent;border-radius:.25rem;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{text-decoration:none}.btn.active,.btn:active{outline:0}.btn.disabled,.btn:disabled,fieldset[disabled] .btn{cursor:false;opacity:.65}a.btn.disaabled,fieldset[disabled] a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#0275d8;border-color:#0267bf}.btn-primary.active,.btn-primary.focus,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open>.btn-primary.dropdown-toggle{color:#fff;background-color:#025aa5;border-color:#014682}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary:disabled,.btn-primary:disabled.active,.btn-primary:disabled.focus,.btn-primary:disabled:active,.btn-primary:disabled:focus,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus{background-color:#0275d8;border-color:#0267bf}.btn-primary.disabled:hover,.btn-primary:disabled:hover,fieldset[disabled] .btn-primary:hover{background-color:#0275d8;border-color:#0267bf}.btn-primary .badge{color:#0275d8;background-color:#fff}.btn-secondary{color:#373a3c;background-color:#fff;border-color:#ccc}.btn-secondary.active,.btn-secondary.focus,.btn-secondary:active,.btn-secondary:focus,.btn-secondary:hover,.open>.btn-secondary.dropdown-toggle{color:#373a3c;background-color:#e6e6e6;border-color:#adadad}.btn-secondary.disabled,.btn-secondary.disabled.active,.btn-secondary.disabled.focus,.btn-secondary.disabled:active,.btn-secondary.disabled:focus,.btn-secondary:disabled,.btn-secondary:disabled.active,.btn-secondary:disabled.focus,.btn-secondary:disabled:active,.btn-secondary:disabled:focus,fieldset[disabled] .btn-secondary,fieldset[disabled] .btn-secondary.active,fieldset[disabled] .btn-secondary.focus,fieldset[disabled] .btn-secondary:active,fieldset[disabled] .btn-secondary:focus{background-color:#fff;border-color:#ccc}.btn-secondary.disabled:hover,.btn-secondary:disabled:hover,fieldset[disabled] .btn-secondary:hover{background-color:#fff;border-color:#ccc}.btn-secondary .badge{color:#fff;background-color:#373a3c}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.active,.btn-info.focus,.btn-info:active,.btn-info:focus,.btn-info:hover,.open>.btn-info.dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info:disabled,.btn-info:disabled.active,.btn-info:disabled.focus,.btn-info:disabled:active,.btn-info:disabled:focus,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus{background-color:#5bc0de;border-color:#46b8da}.btn-info.disabled:hover,.btn-info:disabled:hover,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.active,.btn-success.focus,.btn-success:active,.btn-success:focus,.btn-success:hover,.open>.btn-success.dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success:disabled,.btn-success:disabled.active,.btn-success:disabled.focus,.btn-success:disabled:active,.btn-success:disabled:focus,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus{background-color:#5cb85c;border-color:#4cae4c}.btn-success.disabled:hover,.btn-success:disabled:hover,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.active,.btn-warning.focus,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open>.btn-warning.dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning:disabled,.btn-warning:disabled.active,.btn-warning:disabled.focus,.btn-warning:disabled:active,.btn-warning:disabled:focus,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus{background-color:#f0ad4e;border-color:#eea236}.btn-warning.disabled:hover,.btn-warning:disabled:hover,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.active,.btn-danger.focus,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open>.btn-danger.dropdown-toggle{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger:disabled,.btn-danger:disabled.active,.btn-danger:disabled.focus,.btn-danger:disabled:active,.btn-danger:disabled:focus,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus{background-color:#d9534f;border-color:#d43f3a}.btn-danger.disabled:hover,.btn-danger:disabled:hover,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#0275d8;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link:disabled,fieldset[disabled] .btn-link{background-color:transparent}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#014c8c;text-decoration:underline;background-color:transparent}.btn-link:disabled:focus,.btn-link:disabled:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#818a91;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.333333;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.3rem .75rem;font-size:.85rem;line-height:1.5;border-radius:.2rem}.btn-group-xs>.btn,.btn-xs{padding:.2rem .5rem;font-size:.75rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{height:0;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height;-o-transition-property:height;transition-property:height}.dropdown-toggle:after{display:inline-block;width:0;height:0;margin-left:.25rem;vertical-align:middle;border-top:.3em solid;border-right:.3em solid transparent;border-left:.3em solid transparent}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:1rem;text-align:left;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.badge,.c-indicator,.label,.pager{text-align:center}.dropdown-menu .divider{height:1px;margin:.5rem 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;font-weight:400;line-height:1.5;color:#373a3c}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#2b2d2f;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#0275d8;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#818a91}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:false;background-color:transparent;background-image:none;filter:"progid:DXImageTransform.Microsoft.gradient(enabled = false)"}.c-input,.file,.select>select{cursor:pointer}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:.85rem;line-height:1.5;color:#818a91}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover,.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:.3em solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar:after,.btn-toolbar:before{display:table;content:" "}.btn-toolbar:after{clear:both}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn .caret,.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group-lg.btn-group>.btn+.dropdown-toggle,.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group-lg>.btn .caret,.btn-lg .caret{border-width:.3em .3em 0}.dropup .btn-group-lg>.btn .caret,.dropup .btn-lg .caret{border-width:0 .3em .3em}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before{display:table;content:" "}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:.25rem;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:.25rem}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.c-input,.input-group,.input-group-btn,.input-group-btn>.btn{position:relative}.input-group{display:table;border-collapse:separate}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:.5rem .75rem;font-size:1rem;font-weight:400;line-height:1;color:#55595c;text-align:center;background-color:#eceeef;border:1px solid #ccc;border-radius:.25rem}.alert-link,.badge,.close,.label{font-weight:700}.input-group-addon.form-control-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn{padding:.3rem .75rem;font-size:.85rem;border-radius:.2rem}.input-group-addon.form-control-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn{padding:.75rem 1.5rem;font-size:1.25rem;border-radius:.3rem}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{font-size:0}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.c-input{display:inline;padding-left:1.5rem;color:#555}.c-input>input{position:absolute;z-index:-1;opacity:0}.c-input>input:checked~.c-indicator{color:#fff;background-color:#0074d9}.c-input>input:active~.c-indicator{color:#fff;background-color:#84c6ff}.c-input+.c-input{margin-left:1rem}.c-indicator{position:absolute;top:0;left:0;display:block;width:1rem;height:1rem;font-size:65%;line-height:1rem;color:#eee;-ms-user-select:none;user-select:none;background-color:#eee;background-repeat:no-repeat;background-position:center center;-webkit-background-size:50% 50%;background-size:50% 50%}.c-indicator,.file-custom{-webkit-user-select:none;-moz-user-select:none}.c-checkbox .c-indicator{border-radius:.25rem}.c-checkbox input:checked~.c-indicator{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNy4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgOCA4IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA4IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHBhdGggZmlsbD0iI0ZGRkZGRiIgZD0iTTYuNCwxTDUuNywxLjdMMi45LDQuNUwyLjEsMy43TDEuNCwzTDAsNC40bDAuNywwLjdsMS41LDEuNWwwLjcsMC43bDAuNy0wLjdsMy41LTMuNWwwLjctMC43TDYuNCwxTDYuNCwxeiINCgkvPg0KPC9zdmc+DQo=)}.c-checkbox input:indeterminate~.c-indicator{background-color:#0074d9;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNy4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB3aWR0aD0iOHB4IiBoZWlnaHQ9IjhweCIgdmlld0JveD0iMCAwIDggOCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgOCA4IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxwYXRoIGZpbGw9IiNGRkZGRkYiIGQ9Ik0wLDN2Mmg4VjNIMHoiLz4NCjwvc3ZnPg0K)}.c-radio .c-indicator{border-radius:50%}.c-radio input:checked~.c-indicator{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNy4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgOCA4IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA4IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHBhdGggZmlsbD0iI0ZGRkZGRiIgZD0iTTQsMUMyLjMsMSwxLDIuMywxLDRzMS4zLDMsMywzczMtMS4zLDMtM1M1LjcsMSw0LDF6Ii8+DQo8L3N2Zz4NCg==)}.c-inputs-stacked .c-input{display:inline}.c-inputs-stacked .c-input:after{display:block;margin-bottom:.25rem;content:""}.c-inputs-stacked .c-input+.c-input{margin-left:0}.select{position:relative;display:inline-block;color:#555}.select>select{display:inline-block;width:100%;-webkit-appearance:none;padding:.5rem 2.25rem .5rem 1rem;margin:0;line-height:1.5;color:#555;background-color:#eee;border:0;border-radius:.25rem;outline:0;appearance:none}.file-custom,.file-custom:before{color:#555;border:.075rem solid #ddd}.select>select:focus{-webkit-box-shadow:0 0 0 .075rem #fff,0 0 0 .2rem #0074d9;box-shadow:0 0 0 .075rem #fff,0 0 0 .2rem #0074d9}.select>select:focus:-moz-focusring{color:transparent;text-shadow:0 0 0 #000}.select>select:active{color:#fff;background-color:#0074d9}.select>select::-ms-expand{display:none}.select:after{position:absolute;top:50%;right:1.25rem;display:inline-block;width:0;height:0;margin-top:-.15rem;pointer-events:none;content:"";border-top:.35rem solid;border-right:.35rem solid transparent;border-bottom:.35rem solid transparent;border-left:.35rem solid transparent}.select select:hover{background-color:#ddd}@-moz-document url-prefix(){.select select{padding-right:1rem;text-indent:.01px;text-overflow:""}.select option{background-color:#fff}}@media screen and (min-width:0\0){.select select{z-index:1;padding:.5rem 1.5rem .5rem 1rem}.select:after{z-index:5}.select:before{position:absolute;top:0;right:1rem;bottom:0;z-index:2;display:block;width:1.5rem;content:"";background-color:#eee}.select select:active,.select select:focus,.select select:hover{color:#555;background-color:#eee}}.card-columns .card,.card-group,.progress{width:100%}.file-custom,.file-custom:before{position:absolute;padding:.5rem 1rem}.file{position:relative;display:inline-block;height:2.5rem}.file input{min-width:14rem;margin:0;filter:alpha(opacity=0);opacity:0}.nav-pills .nav-item+.nav-item,.nav-tabs .nav-item+.nav-item{margin-left:.2rem}.file-custom{top:0;right:0;left:0;z-index:5;height:2.5rem;line-height:1.5;-ms-user-select:none;user-select:none;background-color:#fff;border-radius:.25rem;-webkit-box-shadow:inset 0 .2rem .4rem rgba(0,0,0,.05);box-shadow:inset 0 .2rem .4rem rgba(0,0,0,.05)}.file-custom:after{content:"Choose file..."}.file-custom:before{top:-.075rem;right:-.075rem;bottom:-.075rem;z-index:6;display:block;height:2.5rem;line-height:1.5;content:"Browse";background-color:#eee;border-radius:0 .25rem .25rem 0}.navbar-brand,.navbar-toggler{margin-bottom:0;line-height:1}.nav-item,.navbar{position:relative}.file input:focus~.file-custom{-webkit-box-shadow:0 0 0 .075rem #fff,0 0 0 .2rem #0074d9;box-shadow:0 0 0 .075rem #fff,0 0 0 .2rem #0074d9}.nav{padding-left:0;margin-bottom:0}.nav:after,.nav:before{display:table;content:" "}.nav-item,.nav-link{display:inline-block}.nav-link{padding:.75em 1em;line-height:1}.nav-link:focus,.nav-link:hover{text-decoration:none;background-color:#eceeef}.disabled>.nav-link,.nav-link.disabled{color:#818a91}.disabled>.nav-link,.disabled>.nav-link:focus,.disabled>.nav-link:hover,.nav-link.disabled,.nav-link.disabled:focus,.nav-link.disabled:hover{color:#818a91;cursor:false;background-color:transparent}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs .nav-item{float:left;margin-bottom:-1px}.nav-tabs .nav-link{display:block;border:1px solid transparent;border-radius:.25rem .25rem 0 0}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#eceeef #eceeef #ddd}.nav-tabs .active>.nav-link,.nav-tabs .active>.nav-link:focus,.nav-tabs .active>.nav-link:hover,.nav-tabs .nav-link.active,.nav-tabs .nav-link.active:focus,.nav-tabs .nav-link.active:hover,.nav-tabs .nav-link.open,.nav-tabs .nav-link.open:focus,.nav-tabs .nav-link.open:hover,.nav-tabs .open>.nav-link,.nav-tabs .open>.nav-link:focus,.nav-tabs .open>.nav-link:hover{color:#55595c;background-color:#fff;border-color:#ddd #ddd transparent}.nav-tabs .disabled>.nav-link,.nav-tabs .disabled>.nav-link:focus,.nav-tabs .disabled>.nav-link:hover,.nav-tabs .nav-link.disabled,.nav-tabs .nav-link.disabled:focus,.nav-tabs .nav-link.disabled:hover{color:#818a91;background-color:transparent;border-color:transparent}.nav-pills .nav-item{float:left}.nav-pills .nav-link{display:block;border-radius:.25rem}.nav-pills .active>.nav-link,.nav-pills .active>.nav-link:focus,.nav-pills .active>.nav-link:hover,.nav-pills .nav-link.active,.nav-pills .nav-link.active:focus,.nav-pills .nav-link.active:hover,.nav-pills .nav-link.open,.nav-pills .nav-link.open:focus,.nav-pills .nav-link.open:hover,.nav-pills .open>.nav-link,.nav-pills .open>.nav-link:focus,.nav-pills .open>.nav-link:hover{color:#fff;cursor:default;background-color:#0275d8}.nav-stacked .nav-item{display:block;float:none}.nav-stacked .nav-item+.nav-item{margin-top:.2rem;margin-left:0}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{padding:1rem;margin-bottom:1}.navbar:after,.navbar:before{display:table;content:" "}.navbar-static-top{z-index:1000}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0}.navbar-fixed-top{top:0}.navbar-fixed-bottom{bottom:0}.navbar-sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1030;width:100%}.navbar-brand{float:left;padding:.625rem .75rem;margin-right:1rem;font-size:1.25rem}.navbar-brand>a:focus,.navbar-brand>a:hover{text-decoration:none}.navbar-brand>img{display:block}.navbar-toggler{padding:.55rem .75rem;margin-right:1rem;font-size:1.25rem;background:0 0;border:0}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}@media (min-width:34em){.navbar{border-radius:.25rem}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top,.navbar-sticky-top{border-radius:0}.navbar-toggleable-xs{display:block!important}}@media (min-width:48em){.navbar-toggleable-sm{display:block!important}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.card-header,.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-radius:.25rem .25rem 0 0}.navbar-condensed{padding-top:0;padding-bottom:0}.navbar-condensed .navbar-brand,.navbar-nav .nav-link{padding-top:.95rem;padding-bottom:.95rem}.navbar-condensed .form-inline{margin-top:.6rem}.navbar-nav .nav-item{float:left}.navbar-nav .nav-link{display:block;line-height:1.25}.navbar-nav .active>.nav-link,.navbar-nav .active>.nav-link:focus,.navbar-nav .active>.nav-link:hover,.navbar-nav .nav-link.active,.navbar-nav .nav-link.active:focus,.navbar-nav .nav-link.active:hover,.navbar-nav .nav-link.open,.navbar-nav .nav-link.open:focus,.navbar-nav .nav-link.open:hover,.navbar-nav .open>.nav-link,.navbar-nav .open>.nav-link:focus,.navbar-nav .open>.nav-link:hover{color:#555;cursor:default;background-color:#e7e7e7}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-inverse{background-color:#373a3c;border-color:#1f2021}.navbar-inverse .nav-pills>.nav-item>.nav-link,.navbar-inverse .navbar-brand>a,.navbar-inverse .navbar-toggler{color:#aab0b5}.navbar-inverse .nav-pills>.nav-item>.nav-link:focus,.navbar-inverse .nav-pills>.nav-item>.nav-link:hover,.navbar-inverse .navbar-brand>a:focus,.navbar-inverse .navbar-brand>a:hover,.navbar-inverse .navbar-toggler:focus,.navbar-inverse .navbar-toggler:hover{color:#fff}.navbar-inverse .nav-pills>.active>.nav-link,.navbar-inverse .nav-pills>.nav-item>.nav-link:focus,.navbar-inverse .nav-pills>.nav-item>.nav-link:hover,.navbar-inverse .nav-pills>.nav-link.active{color:#fff;background-color:#1f2021}.navbar-inverse .navbar-brand{color:#aab0b5}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#a2a8ae}.navbar-inverse .navbar-nav>li>a{color:#aab0b5}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#1f2021}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#262829}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#1f2021}.navbar-inverse .navbar-link{color:#aab0b5}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#aab0b5}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link:disabled:focus,.navbar-inverse .btn-link:disabled:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.card{position:relative;padding:1.25rem;margin-bottom:1.25rem;border:.075rem solid #eee}.card-title{margin-top:0;margin-bottom:.75rem}.card-text:last-child{margin-bottom:0}.card-actions .card-link+.card-link{margin-left:.75rem}.card-link:hover{text-decoration:none}.card-header{padding:.75rem 1.25rem;margin:-1.25rem -1.25rem 1.25rem;border-bottom:.075rem solid #eee}.card-footer{padding:.75rem 1.25rem;margin:1.25rem -1.25rem -1.25rem;border-top:.075rem solid #eee;border-radius:0 0 .25rem .25rem}.card-primary{background-color:#0275d8;border-color:#0275d8}.card-success{background-color:#5cb85c;border-color:#5cb85c}.card-info{background-color:#5bc0de;border-color:#5bc0de}.card-warning{background-color:#f0ad4e;border-color:#f0ad4e}.card-danger{background-color:#d9534f;border-color:#d9534f}.card-inverse .card-footer,.card-inverse .card-header{border-bottom:.075rem solid rgba(255,255,255,.2)}.card-inverse .card-blockquote,.card-inverse .card-footer,.card-inverse .card-header,.card-inverse .card-title{color:#fff}.card-inverse .card-blockquote>footer,.card-inverse .card-link,.card-inverse .card-text{color:rgba(255,255,255,.65)}.card-inverse .card-link:focus,.card-inverse .card-link:hover{color:#fff}.card-blockquote{padding:0;margin-bottom:0;border-left:0}.card-img{margin:-1.325rem;border-radius:.25rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img-top{margin:-1.325rem -1.325rem 1.25rem;border-radius:.25rem .25rem 0 0}.card-img-bottom{margin:1.25rem -1.325rem -1.325rem;border-radius:0 0 .25rem .25rem}.card-set{display:table;table-layout:fixed;border-spacing:1.25rem 0}.card-set .card{display:table-cell;float:none;max-width:none}.card-set-wrapper{margin-right:-1.25rem;margin-left:-1.25rem}.card-group{display:table;table-layout:fixed}.card-group .card{display:table-cell;float:none;max-width:none}.breadcrumb>li,.card-columns .card,.pagination{display:inline-block}.card-group .card+.card{margin-left:0;border-left:0}.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1rem;-moz-column-gap:1rem;column-gap:1rem}.breadcrumb{padding:.75rem 1rem;margin-bottom:1rem;background-color:#eceeef;border-radius:.25rem}.breadcrumb>li+li:before{padding-right:.5rem;padding-left:.5rem;color:#818a91;content:"/\00a0"}.breadcrumb>.active{color:#818a91}.pagination{padding-left:0;margin:1rem 0;border-radius:.25rem}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:.5rem .75rem;margin-left:-1px;line-height:1.5;color:#0275d8;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{color:#014c8c;background-color:#eceeef;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#0275d8;border-color:#0275d8}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#818a91;cursor:false;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm>li>a,.pagination-sm>li>span{padding:.3rem .75rem;font-size:.85rem}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.pager{padding-left:0;margin-top:1rem;margin-bottom:1rem}.pager:after,.pager:before{display:table;content:" "}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eceeef}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#818a91;cursor:false;background-color:#fff}.pager-next>a,.pager-next>span{float:right}.pager-prev>a,.pager-prev>span{float:left}.close,.list-group-item>.badge{float:right}.label{display:inline-block;padding:.25em .4em;font-size:75%;line-height:1;color:#fff;border-radius:.25rem}.label:empty{display:none}.btn .label{position:relative;top:-1px}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label-default{background-color:#818a91}.label-default[href]:focus,.label-default[href]:hover{background-color:#687077}.label-primary{background-color:#0275d8}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#025aa5}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{position:relative;top:-.1em;display:inline-block;padding-right:.6em;padding-left:.6em;font-size:.75em;color:#fff;background-color:#818a91;border-radius:2em}.badge:empty{display:none}.badge.pull-left,.badge.pull-right{top:.2em}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#0275d8;background-color:#fff}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.alert-heading,.jumbotron,.jumbotron-heading{color:inherit}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#eceeef;border-radius:.3rem}.jumbotron-hr{border-top-color:#d0d5d8}@media (min-width:34em){.jumbotron{padding:4rem 2rem}.jumbotron-heading{font-size:4.5rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{padding:15px;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-heading{margin-top:0}.alert-dismissible{padding-right:35px}.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d0e9c6}.alert-success hr{border-top-color:#c1e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bcdff1}.alert-info hr{border-top-color:#a6d5ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faf2cc}.alert-warning hr{border-top-color:#f7ecb5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebcccc}.alert-danger hr{border-top-color:#e4b9b9}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:block;height:1rem;margin-bottom:1rem}.progress[value]{color:#0074d9;border:0;appearance:none}.progress[value]::-webkit-progress-bar{background-color:#eee;border-radius:.25rem}.progress[value]::-webkit-progress-value::before{content:attr(value)}.progress[value]::-webkit-progress-value{background-color:#0074d9;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.progress[value="100"]::-webkit-progress-value{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}@media screen and ("min-width:0\0"){.progress{background-color:#eee;border-radius:.25rem}.progress-bar{display:inline-block;height:1rem;text-indent:-999rem;background-color:#0074d9;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.progress[width^="0"]{min-width:2rem;color:#818a91;background-color:transparent;background-image:none}.progress[width="100%"]{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}}.progress-striped[value]::-webkit-progress-value{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:1rem 1rem;background-size:1rem 1rem}.progress-striped[value]::-moz-progress-bar{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-animated[value]::-webkit-progress-value{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-animated[value]::-moz-progress-bar{animation:progress-bar-stripes 2s linear infinite}.progress-success[value]::-webkit-progress-value{background-color:#5cb85c}.progress-success[value]::-moz-progress-bar{background-color:#5cb85c}@media screen and ("min-width:0\0"){.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:1rem 1rem;background-size:1rem 1rem}.progress-animated .progress-bar-striped{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-success .progress-bar{background-color:#5cb85c}}.progress-info[value]::-webkit-progress-value{background-color:#5bc0de}.progress-info[value]::-moz-progress-bar{background-color:#5bc0de}@media screen and ("min-width:0\0"){.progress-info .progress-bar{background-color:#5bc0de}}.progress-warning[value]::-webkit-progress-value{background-color:#f0ad4e}.progress-warning[value]::-moz-progress-bar{background-color:#f0ad4e}@media screen and ("min-width:0\0"){.progress-warning .progress-bar{background-color:#f0ad4e}}.progress-danger[value]::-webkit-progress-value{background-color:#d9534f}.progress-danger[value]::-moz-progress-bar{background-color:#d9534f}@media screen and ("min-width:0\0"){.progress-danger .progress-bar{background-color:#d9534f}}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1}.media-body{width:10000px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-object{display:block}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#818a91;cursor:false;background-color:#eceeef}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#818a91}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#0275d8;border-color:#0275d8}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#a8d6fe}.list-group-item-state{color:#a94442;background-color:#f2dede}a.list-group-item-state{color:#a94442}a.list-group-item-state .list-group-item-heading{color:inherit}a.list-group-item-state:focus,a.list-group-item-state:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-state.active,a.list-group-item-state.active:focus,a.list-group-item-state.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.embed-responsive{position:relative;display:block;height:0;padding:0}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.close{font-size:1.5rem;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-content,.popover{border:1px solid rgba(0,0,0,.2)}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:transition .3s ease-out,translate(0,-25%);-ms-transform:transition .3s ease-out,translate(0,-25%);-o-transform:transition .3s ease-out,translate(0,-25%);transform:transition .3s ease-out,translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;background-clip:padding-box;border-radius:.3rem;outline:0}.modal-content,.popover{-webkit-background-clip:padding-box}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.in{opacity:.5}.modal-header{min-height:16.5px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.5}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:after,.modal-footer:before{display:table;content:" "}.popover-arrow:after,.popover-bottom>.popover-arrow:after,.popover-left>.popover-arrow:after,.popover-right>.popover-arrow:after,.popover-top>.popover-arrow:after{content:""}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:34em){.modal-dialog{width:600px;margin:30px auto}.modal-sm{width:300px}}@media (min-width:48em){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-size:.85rem;font-weight:400;line-height:1.4;opacity:0}.tooltip.in{opacity:.9}.tooltip-top{padding:5px 0;margin-top:-3px}.tooltip-right{padding:0 5px;margin-left:3px}.tooltip-bottom{padding:5px 0;margin-top:3px}.tooltip-left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:.25rem}.tooltip-arrow{position:absolute}.tooltip-top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip-right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip-left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip-bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-size:1rem;font-weight:400;line-height:1.5;text-align:left;white-space:normal;background-color:#fff;background-clip:padding-box;border-radius:.3rem}.text-nowrap,.text-truncate{white-space:nowrap}.popover-top{margin-top:-10px}.popover-right{margin-left:10px}.popover-bottom{margin-top:10px}.popover-left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:-.7rem -.7rem 0 0}.popover-content{padding:9px 14px}.popover-arrow,.popover-arrow:after{position:absolute;display:block}.carousel,.carousel-inner{position:relative}.popover-arrow{border-width:11px}.popover-arrow:after{border-width:10px}.popover-top>.popover-arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover-top>.popover-arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0}.popover-right>.popover-arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover-right>.popover-arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0}.popover-bottom>.popover-arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:rgba(0,0,0,.25)}.popover-bottom>.popover-arrow:after{top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover-left>.popover-arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:rgba(0,0,0,.25)}.popover-left>.popover-arrow:after{right:1px;bottom:-10px;border-right-width:0;border-left-color:#fff}.carousel-inner{width:100%;overflow:hidden}.carousel-inner>.carousel-item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.carousel-item>a>img,.carousel-inner>.carousel-item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.carousel-item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;perspective:1000}.carousel-inner>.carousel-item.active.right,.carousel-inner>.carousel-item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.carousel-item.active.left,.carousel-inner>.carousel-item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.carousel-item.active,.carousel-inner>.carousel-item.next.left,.carousel-inner>.carousel-item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);opacity:.5}.carousel-control.left{background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;width:20px;height:20px;margin-top:-10px;font-family:serif;line-height:1}.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-prev:before{content:"\2039"}.carousel-control .icon-next:before{content:"\203a"}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:transparent;border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn,.text-hide{text-shadow:none}@media (min-width:34em){.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .icon-prev{margin-left:-15px}.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.p-a-0,.sr-only{padding:0}.clearfix:after,.clearfix:before{display:table;content:" "}.center-block{display:block;margin-right:auto;margin-left:auto}.hidden-xl-down,.hidden-xs-up,.visible-print-block,[hidden]{display:none!important}.pull-right{float:right!important}.pull-left{float:left!important}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.m-a-0{margin:0}.m-t-0{margin-top:0}.m-t,.m-y{margin-top:1rem}.m-r-0{margin-right:0}.m-r,.m-x{margin-right:1rem}.m-b-0{margin-bottom:0}.m-b,.m-y{margin-bottom:1rem}.m-l-0{margin-left:0}.m-l,.m-x{margin-left:1rem}.m-a{margin:1rem}.m-l-md,.m-x-md{margin-left:1.5rem}.m-r-md,.m-x-md{margin-right:1.5rem}.m-b-md,.m-y-md{margin-bottom:1.5rem}.m-t-md,.m-y-md{margin-top:1.5rem}.m-l-lg,.m-x-lg{margin-left:3rem}.m-r-lg,.m-x-lg{margin-right:3rem}.m-b-lg,.m-y-lg{margin-bottom:3rem}.m-t-lg,.m-y-lg{margin-top:3rem}.p-t-0{padding-top:0}.p-t,.p-y{padding-top:1rem}.p-r-0{padding-right:0}.p-r,.p-x{padding-right:1rem}.p-b-0{padding-bottom:0}.p-b,.p-y{padding-bottom:1rem}.p-l-0{padding-left:0}.p-l,.p-x{padding-left:1rem}.p-a{padding:1rem}.p-l-md,.p-x-md{padding-left:1.5rem}.p-r-md,.p-x-md{padding-right:1.5rem}.p-b-md,.p-y-md{padding-bottom:1.5rem}.p-t-md,.p-y-md{padding-top:1.5rem}.p-l-lg,.p-x-lg{padding-left:3rem}.p-r-lg,.p-x-lg{padding-right:3rem}.p-b-lg,.p-y-lg{padding-bottom:3rem}.p-t-lg,.p-y-lg{padding-top:3rem}.pos-f-t{position:fixed;top:0;right:0;left:0;z-index:1030}.invisible{visibility:hidden}.text-hide{font:"0/0" a;color:transparent;background-color:transparent;border:0}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-truncate{overflow:hidden;text-overflow:ellipsis}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#818a91}.text-primary{color:#0275d8}a.text-primary:focus,a.text-primary:hover{color:#025aa5}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.inverse{color:#eceeef;background-color:#373a3c}.bg-primary{color:#fff;background-color:#0275d8}a.bg-primary:focus,a.bg-primary:hover{background-color:#025aa5}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}@media (max-width:33.9em){.hidden-xs-down{display:none!important}}@media (min-width:34em){.hidden-sm-up{display:none!important}}@media (max-width:47.9em){.hidden-sm-down{display:none!important}}@media (min-width:48em){.hidden-md-up{display:none!important}}@media (max-width:61.9em){.hidden-md-down{display:none!important}}@media (min-width:62em){.hidden-lg-up{display:none!important}}@media (max-width:74.9em){.hidden-lg-down{display:none!important}}@media (min-width:75em){.hidden-xl-up{display:none!important}}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}.hidden-print .hidden-print{display:none!important}}
\ No newline at end of file + *//*! normalize.css v3.0.2 | MIT License | git.io/normalize */.collapsing,.embed-responsive,.media,.media-body,.modal,.modal-open{overflow:hidden}img,legend{border:0}address,dl,ol,p,ul{margin-bottom:1rem}b,dt,optgroup,strong{font-weight:700}caption,th{text-align:left}fieldset,legend,td,th{padding:0}dl,h1,h2,h3,h4,h5,h6,ol,p,pre,ul{margin-top:0}pre,textarea{overflow:auto}.btn-group>.btn-group,.btn-toolbar .btn-group,.btn-toolbar .input-group,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.dropdown-menu,.table-reflow thead,.table-reflow tr{float:left}.form-control-feedback,.select:after,a.btn.disaabled,fieldset[disabled] a.btn{pointer-events:none}.btn-group-vertical>.btn-group:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal:after,.dropdown-menu>li>a,.modal-footer:after,.nav:after,.navbar:after,.pager:after,.row:after{clear:both}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}dfn{font-style:italic}h1{margin:.67em 0}mark{color:#000;background:#ff0}.btn-danger.active,.btn-danger:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-secondary.active,.btn-secondary:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning:active,.btn.active,.btn:active,.form-control,.open>.btn-danger.dropdown-toggle,.open>.btn-info.dropdown-toggle,.open>.btn-primary.dropdown-toggle,.open>.btn-secondary.dropdown-toggle,.open>.btn-success.dropdown-toggle,.open>.btn-warning.dropdown-toggle{background-image:none}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{vertical-align:middle}svg:not(:root){overflow:hidden}hr{height:0;-webkit-box-sizing:content-box;box-sizing:content-box}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}address,legend{line-height:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:none}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}textarea{resize:vertical}table{border-spacing:0;border-collapse:collapse}@media print{blockquote,img,pre,tr{page-break-inside:avoid}*,:after,:before{text-shadow:none!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}abbr[title]:after{content:" (" attr(title) ")"}blockquote,pre{border:1px solid #999}thead{display:table-header-group}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:16px;-webkit-tap-highlight-color:transparent}*,:after,:before{-webkit-box-sizing:inherit;box-sizing:inherit}@-ms-viewport{width:device-width}@viewport{width:device-width}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:1rem;line-height:1.5;color:#373a3c;background-color:#fff}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #818a91}address{font-style:normal}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dd,label{margin-bottom:.5rem}dd{margin-left:0}blockquote,figure{margin:0 0 1rem}a{color:#0275d8;text-decoration:none}a:focus,a:hover{color:#014c8c;text-decoration:underline}a:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}[role=button]{cursor:pointer}table{background-color:transparent}caption{padding-top:.75rem;padding-bottom:.75rem;color:#818a91;caption-side:bottom}label{display:inline-block}button,input,select,textarea{margin:0;line-height:inherit}fieldset{min-width:0;margin:0;border:0}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6,legend{margin-bottom:.5rem}legend{display:block;width:100%;font-size:1.5rem}.list-inline>li,output{display:inline-block}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#818a91}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.blockquote,hr{margin-bottom:1rem}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:2.75rem}.h2,h2{font-size:2.25rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.alert-link,.badge,.close,.label,kbd kbd{font-weight:700}hr{margin-top:1rem;border:0;border-top:.0625rem solid #eceeef}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-inline,.list-unstyled{list-style:none;padding-left:0}.list-inline{margin-left:-5px}.list-inline>li{padding-right:5px;padding-left:5px}.dl-horizontal{margin-right:-1.5rem;margin-left:-1.5rem}.container,.container-fluid{margin-right:auto;margin-left:auto}.dl-horizontal:after,.dl-horizontal:before{display:table;content:" "}.initialism{font-size:90%;text-transform:uppercase}.blockquote{padding:.5rem 1rem;font-size:1.25rem;border-left:.25rem solid #eceeef}.blockquote ol:last-child,.blockquote p:last-child,.blockquote ul:last-child{margin-bottom:0}.table,pre{margin-bottom:1rem}.blockquote footer{display:block;font-size:80%;line-height:1.5;color:#818a91}.blockquote footer:before{content:"\2014 \00A0"}.blockquote-reverse{padding-right:1rem;padding-left:0;text-align:right;border-right:.25rem solid #eceeef;border-left:0}.blockquote-reverse footer:before{content:""}.blockquote-reverse footer:after{content:"\00A0 \2014"}.carousel-inner>.carousel-item>a>img,.carousel-inner>.carousel-item>img,.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:.3rem}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:.25rem;line-height:1.5;background-color:#fff;border:1px solid #ddd;border-radius:.25rem;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}code,kbd{padding:.2rem .4rem;font-size:90%}.img-circle{border-radius:50%}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{color:#d44950;background-color:#f7f7f9;border-radius:.25rem}kbd{color:#fff;background-color:#333;border-radius:.2rem}kbd kbd{padding:0;font-size:100%}pre{display:block;font-size:90%;line-height:1.5;color:#373a3c}.container-fluid:after,.container-fluid:before,.container:after,.container:before,.row:after,.row:before{display:table;content:" "}pre code{padding:0;font-size:inherit;color:inherit;background-color:transparent;border-radius:0}.container,.container-fluid{padding-right:.75rem;padding-left:.75rem}.pre-scrollable{max-height:340px;overflow-y:scroll}.row{margin-right:-.75rem;margin-left:-.75rem}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:.75rem;padding-left:.75rem}.col-xs-1{width:8.333333%}.col-xs-2{width:16.666667%}.col-xs-3{width:25%}.col-xs-4{width:33.333333%}.col-xs-5{width:41.666667%}.col-xs-6{width:50%}.col-xs-7{width:58.333333%}.col-xs-8{width:66.666667%}.col-xs-9{width:75%}.col-xs-10{width:83.333333%}.col-xs-11{width:91.666667%}.col-xs-12{width:100%}.col-xs-pull-0{right:auto}.col-xs-pull-1{right:8.333333%}.col-xs-pull-2{right:16.666667%}.col-xs-pull-3{right:25%}.col-xs-pull-4{right:33.333333%}.col-xs-pull-5{right:41.666667%}.col-xs-pull-6{right:50%}.col-xs-pull-7{right:58.333333%}.col-xs-pull-8{right:66.666667%}.col-xs-pull-9{right:75%}.col-xs-pull-10{right:83.333333%}.col-xs-pull-11{right:91.666667%}.col-xs-pull-12{right:100%}.col-xs-push-0{left:auto}.col-xs-push-1{left:8.333333%}.col-xs-push-2{left:16.666667%}.col-xs-push-3{left:25%}.col-xs-push-4{left:33.333333%}.col-xs-push-5{left:41.666667%}.col-xs-push-6{left:50%}.col-xs-push-7{left:58.333333%}.col-xs-push-8{left:66.666667%}.col-xs-push-9{left:75%}.col-xs-push-10{left:83.333333%}.col-xs-push-11{left:91.666667%}.col-xs-push-12{left:100%}.col-xs-offset-0{margin-left:0}.col-xs-offset-1{margin-left:8.333333%}.col-xs-offset-2{margin-left:16.666667%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-4{margin-left:33.333333%}.col-xs-offset-5{margin-left:41.666667%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-7{margin-left:58.333333%}.col-xs-offset-8{margin-left:66.666667%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-10{margin-left:83.333333%}.col-xs-offset-11{margin-left:91.666667%}.col-xs-offset-12{margin-left:100%}@media (min-width:34em){.container{max-width:34rem}.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-1{width:8.333333%}.col-sm-2{width:16.666667%}.col-sm-3{width:25%}.col-sm-4{width:33.333333%}.col-sm-5{width:41.666667%}.col-sm-6{width:50%}.col-sm-7{width:58.333333%}.col-sm-8{width:66.666667%}.col-sm-9{width:75%}.col-sm-10{width:83.333333%}.col-sm-11{width:91.666667%}.col-sm-12{width:100%}.col-sm-pull-0{right:auto}.col-sm-pull-1{right:8.333333%}.col-sm-pull-2{right:16.666667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.333333%}.col-sm-pull-5{right:41.666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.333333%}.col-sm-pull-8{right:66.666667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.333333%}.col-sm-pull-11{right:91.666667%}.col-sm-pull-12{right:100%}.col-sm-push-0{left:auto}.col-sm-push-1{left:8.333333%}.col-sm-push-2{left:16.666667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.333333%}.col-sm-push-5{left:41.666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.333333%}.col-sm-push-8{left:66.666667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.333333%}.col-sm-push-11{left:91.666667%}.col-sm-push-12{left:100%}.col-sm-offset-0{margin-left:0}.col-sm-offset-1{margin-left:8.333333%}.col-sm-offset-2{margin-left:16.666667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.333333%}.col-sm-offset-5{margin-left:41.666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.333333%}.col-sm-offset-8{margin-left:66.666667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.333333%}.col-sm-offset-11{margin-left:91.666667%}.col-sm-offset-12{margin-left:100%}}@media (min-width:48em){.container{max-width:45rem}.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-1{width:8.333333%}.col-md-2{width:16.666667%}.col-md-3{width:25%}.col-md-4{width:33.333333%}.col-md-5{width:41.666667%}.col-md-6{width:50%}.col-md-7{width:58.333333%}.col-md-8{width:66.666667%}.col-md-9{width:75%}.col-md-10{width:83.333333%}.col-md-11{width:91.666667%}.col-md-12{width:100%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.333333%}.col-md-pull-2{right:16.666667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.333333%}.col-md-pull-5{right:41.666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.333333%}.col-md-pull-8{right:66.666667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.333333%}.col-md-pull-11{right:91.666667%}.col-md-pull-12{right:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.333333%}.col-md-push-2{left:16.666667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.333333%}.col-md-push-5{left:41.666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.333333%}.col-md-push-8{left:66.666667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.333333%}.col-md-push-11{left:91.666667%}.col-md-push-12{left:100%}.col-md-offset-0{margin-left:0}.col-md-offset-1{margin-left:8.333333%}.col-md-offset-2{margin-left:16.666667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.333333%}.col-md-offset-5{margin-left:41.666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.333333%}.col-md-offset-8{margin-left:66.666667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.333333%}.col-md-offset-11{margin-left:91.666667%}.col-md-offset-12{margin-left:100%}}@media (min-width:62em){.container{max-width:60rem}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-1{width:8.333333%}.col-lg-2{width:16.666667%}.col-lg-3{width:25%}.col-lg-4{width:33.333333%}.col-lg-5{width:41.666667%}.col-lg-6{width:50%}.col-lg-7{width:58.333333%}.col-lg-8{width:66.666667%}.col-lg-9{width:75%}.col-lg-10{width:83.333333%}.col-lg-11{width:91.666667%}.col-lg-12{width:100%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.333333%}.col-lg-pull-2{right:16.666667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.333333%}.col-lg-pull-5{right:41.666667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.333333%}.col-lg-pull-8{right:66.666667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.333333%}.col-lg-pull-11{right:91.666667%}.col-lg-pull-12{right:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.333333%}.col-lg-push-2{left:16.666667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.333333%}.col-lg-push-5{left:41.666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.333333%}.col-lg-push-8{left:66.666667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.333333%}.col-lg-push-11{left:91.666667%}.col-lg-push-12{left:100%}.col-lg-offset-0{margin-left:0}.col-lg-offset-1{margin-left:8.333333%}.col-lg-offset-2{margin-left:16.666667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.333333%}.col-lg-offset-5{margin-left:41.666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.333333%}.col-lg-offset-8{margin-left:66.666667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.333333%}.col-lg-offset-11{margin-left:91.666667%}.col-lg-offset-12{margin-left:100%}}@media (min-width:75em){.container{max-width:72.25rem}.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9{float:left}.col-xl-1{width:8.333333%}.col-xl-2{width:16.666667%}.col-xl-3{width:25%}.col-xl-4{width:33.333333%}.col-xl-5{width:41.666667%}.col-xl-6{width:50%}.col-xl-7{width:58.333333%}.col-xl-8{width:66.666667%}.col-xl-9{width:75%}.col-xl-10{width:83.333333%}.col-xl-11{width:91.666667%}.col-xl-12{width:100%}.col-xl-pull-0{right:auto}.col-xl-pull-1{right:8.333333%}.col-xl-pull-2{right:16.666667%}.col-xl-pull-3{right:25%}.col-xl-pull-4{right:33.333333%}.col-xl-pull-5{right:41.666667%}.col-xl-pull-6{right:50%}.col-xl-pull-7{right:58.333333%}.col-xl-pull-8{right:66.666667%}.col-xl-pull-9{right:75%}.col-xl-pull-10{right:83.333333%}.col-xl-pull-11{right:91.666667%}.col-xl-pull-12{right:100%}.col-xl-push-0{left:auto}.col-xl-push-1{left:8.333333%}.col-xl-push-2{left:16.666667%}.col-xl-push-3{left:25%}.col-xl-push-4{left:33.333333%}.col-xl-push-5{left:41.666667%}.col-xl-push-6{left:50%}.col-xl-push-7{left:58.333333%}.col-xl-push-8{left:66.666667%}.col-xl-push-9{left:75%}.col-xl-push-10{left:83.333333%}.col-xl-push-11{left:91.666667%}.col-xl-push-12{left:100%}.col-xl-offset-0{margin-left:0}.col-xl-offset-1{margin-left:8.333333%}.col-xl-offset-2{margin-left:16.666667%}.col-xl-offset-3{margin-left:25%}.col-xl-offset-4{margin-left:33.333333%}.col-xl-offset-5{margin-left:41.666667%}.col-xl-offset-6{margin-left:50%}.col-xl-offset-7{margin-left:58.333333%}.col-xl-offset-8{margin-left:66.666667%}.col-xl-offset-9{margin-left:75%}.col-xl-offset-10{margin-left:83.333333%}.col-xl-offset-11{margin-left:91.666667%}.col-xl-offset-12{margin-left:100%}}.table{width:100%;max-width:100%}.table td,.table th{padding:.75rem;line-height:1.5;vertical-align:top;border-top:1px solid #eceeef}.table thead th{vertical-align:bottom;border-bottom:2px solid #eceeef}.table tbody+tbody{border-top:2px solid #eceeef}.table .table{background-color:#fff}.table-sm td,.table-sm th{padding:.3rem}.table-bordered,.table-bordered td,.table-bordered th{border:1px solid #eceeef}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-striped tbody tr:nth-of-type(odd){background-color:#f9f9f9}.table-active,.table-active>td,.table-active>th,.table-hover tbody tr:hover{background-color:#f5f5f5}.table-hover .table-active:hover,.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:#e8e8e8}.table-success,.table-success>td,.table-success>th{background-color:#dff0d8}.table-hover .table-success:hover,.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#d0e9c6}.table-info,.table-info>td,.table-info>th{background-color:#d9edf7}.table-hover .table-info:hover,.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#c4e3f3}.table-warning,.table-warning>td,.table-warning>th{background-color:#fcf8e3}.table-hover .table-warning:hover,.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#faf2cc}.table-danger,.table-danger>td,.table-danger>th{background-color:#f2dede}.table-hover .table-danger:hover,.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#ebcccc}.table-responsive{display:block;width:100%;overflow-x:auto}.thead-inverse th{color:#fff;background-color:#373a3c}.thead-default th{color:#55595c;background-color:#eceeef}.table-inverse{color:#eceeef;background-color:#373a3c}.table-inverse.table-bordered{border:0}.table-inverse td,.table-inverse th,.table-inverse thead th{border-color:#55595c}.table-reflow tbody{display:block;white-space:nowrap}.table-reflow td,.table-reflow th{border-top:1px solid #eceeef;border-left:1px solid #eceeef}.table-reflow td:last-child,.table-reflow th:last-child{border-right:1px solid #eceeef}.table-reflow tbody:last-child tr:last-child td,.table-reflow tbody:last-child tr:last-child th,.table-reflow tfoot:last-child tr:last-child td,.table-reflow tfoot:last-child tr:last-child th,.table-reflow thead:last-child tr:last-child td,.table-reflow thead:last-child tr:last-child th{border-bottom:1px solid #eceeef}.table-reflow tr td,.table-reflow tr th{display:block!important;border:1px solid #eceeef}.form-control,.form-control-file,.form-control-range{display:block}.form-control{width:100%;padding:.5rem .75rem;font-size:1rem;line-height:1.5;color:#55595c;background-color:#fff;border:1px solid #ccc;border-radius:.25rem;-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:not(select[multiple]),.form-control:not(select[size]),.form-control:not(textarea){height:2.625rem}.form-control:focus{border-color:#66afe9;outline:0}.form-control::-webkit-input-placeholder{color:#999;opacity:1}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999;opacity:1}.form-control::placeholder{color:#999;opacity:1}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .form-control-feedback,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.form-control:disabled,.form-control[readonly],fieldset[disabled] .form-control{background-color:#eceeef;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}.form-control-label{padding:.5625rem .75rem;margin-bottom:0}.form-control-static{min-height:2.625rem;padding-top:.5625rem;padding-bottom:.5625rem;margin-bottom:0}.form-control-static.form-control-lg,.form-control-static.form-control-sm,.input-group-lg>.form-control-static.form-control,.input-group-lg>.form-control-static.input-group-addon,.input-group-lg>.input-group-btn>.form-control-static.btn,.input-group-sm>.form-control-static.form-control,.input-group-sm>.form-control-static.input-group-addon,.input-group-sm>.input-group-btn>.form-control-static.btn{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:2rem;padding:.3rem .75rem;font-size:.85rem;line-height:1.5;border-radius:.2rem}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:3.291667rem;padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.333333;border-radius:.3rem}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-bottom:.75rem}.checkbox label,.checkbox-inline,.radio label,.radio-inline{font-weight:400;padding-left:1.25rem;margin-bottom:0;cursor:pointer}.checkbox label input:only-child,.radio label input:only-child{position:static}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:.25rem;margin-left:-1.25rem}.collapsing,.dropdown,.dropup,.has-feedback{position:relative}.checkbox+.checkbox,.radio+.radio{margin-top:-.25rem}.checkbox-inline,.radio-inline{position:relative;display:inline-block;vertical-align:middle}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:.75rem}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox]:disabled,input[type=radio].disabled,input[type=radio]:disabled{cursor:not-allowed}.checkbox-inline.disabled,.checkbox.disabled label,.radio-inline.disabled,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio label,fieldset[disabled] .radio-inline{cursor:not-allowed}.has-feedback .form-control{padding-right:3.28125rem}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:2.625rem;height:2.625rem;line-height:2.625rem;text-align:center}.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:3.291667rem;height:3.291667rem;line-height:3.291667rem}.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:2rem;height:2rem;line-height:2rem}.has-success .form-control{border-color:#3c763d}.has-success .form-control:focus{border-color:#2b542c}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .form-control-feedback,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b}.has-warning .form-control:focus{border-color:#66512c}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .form-control-feedback,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442}.has-error .form-control:focus{border-color:#843534}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-feedback label~.form-control-feedback{top:6}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:.25rem;margin-bottom:.75rem;color:#747a7f}@media (min-width:34em){.form-inline .form-control-static,.form-inline .form-group{display:inline-block}.form-inline .control-label,.form-inline .form-group{margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.btn-block,input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.btn{display:inline-block;padding:.5rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:.0625rem solid transparent;border-radius:.25rem;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{text-decoration:none}.btn.active,.btn:active{outline:0}.btn.disabled,.btn:disabled,fieldset[disabled] .btn{cursor:not-allowed;opacity:.65}.btn-primary{color:#fff;background-color:#0275d8;border-color:#0267bf}.btn-primary.active,.btn-primary.focus,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open>.btn-primary.dropdown-toggle{color:#fff;background-color:#025aa5;border-color:#014682}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary:disabled,.btn-primary:disabled.active,.btn-primary:disabled.focus,.btn-primary:disabled:active,.btn-primary:disabled:focus,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus{background-color:#0275d8;border-color:#0267bf}.btn-primary.disabled:hover,.btn-primary:disabled:hover,fieldset[disabled] .btn-primary:hover{background-color:#0275d8;border-color:#0267bf}.btn-primary .badge{color:#0275d8;background-color:#fff}.btn-secondary{color:#373a3c;background-color:#fff;border-color:#ccc}.btn-secondary.active,.btn-secondary.focus,.btn-secondary:active,.btn-secondary:focus,.btn-secondary:hover,.open>.btn-secondary.dropdown-toggle{color:#373a3c;background-color:#e6e6e6;border-color:#adadad}.btn-secondary.disabled,.btn-secondary.disabled.active,.btn-secondary.disabled.focus,.btn-secondary.disabled:active,.btn-secondary.disabled:focus,.btn-secondary:disabled,.btn-secondary:disabled.active,.btn-secondary:disabled.focus,.btn-secondary:disabled:active,.btn-secondary:disabled:focus,fieldset[disabled] .btn-secondary,fieldset[disabled] .btn-secondary.active,fieldset[disabled] .btn-secondary.focus,fieldset[disabled] .btn-secondary:active,fieldset[disabled] .btn-secondary:focus{background-color:#fff;border-color:#ccc}.btn-secondary.disabled:hover,.btn-secondary:disabled:hover,fieldset[disabled] .btn-secondary:hover{background-color:#fff;border-color:#ccc}.btn-secondary .badge{color:#fff;background-color:#373a3c}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.active,.btn-info.focus,.btn-info:active,.btn-info:focus,.btn-info:hover,.open>.btn-info.dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info:disabled,.btn-info:disabled.active,.btn-info:disabled.focus,.btn-info:disabled:active,.btn-info:disabled:focus,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus{background-color:#5bc0de;border-color:#46b8da}.btn-info.disabled:hover,.btn-info:disabled:hover,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.active,.btn-success.focus,.btn-success:active,.btn-success:focus,.btn-success:hover,.open>.btn-success.dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success:disabled,.btn-success:disabled.active,.btn-success:disabled.focus,.btn-success:disabled:active,.btn-success:disabled:focus,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus{background-color:#5cb85c;border-color:#4cae4c}.btn-success.disabled:hover,.btn-success:disabled:hover,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.active,.btn-warning.focus,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open>.btn-warning.dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning:disabled,.btn-warning:disabled.active,.btn-warning:disabled.focus,.btn-warning:disabled:active,.btn-warning:disabled:focus,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus{background-color:#f0ad4e;border-color:#eea236}.btn-warning.disabled:hover,.btn-warning:disabled:hover,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.active,.btn-danger.focus,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open>.btn-danger.dropdown-toggle{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger:disabled,.btn-danger:disabled.active,.btn-danger:disabled.focus,.btn-danger:disabled:active,.btn-danger:disabled:focus,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus{background-color:#d9534f;border-color:#d43f3a}.btn-danger.disabled:hover,.btn-danger:disabled:hover,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#0275d8;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link:disabled,fieldset[disabled] .btn-link{background-color:transparent}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#014c8c;text-decoration:underline;background-color:transparent}.btn-link:disabled:focus,.btn-link:disabled:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#818a91;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.333333;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.3rem .75rem;font-size:.85rem;line-height:1.5;border-radius:.2rem}.btn-group-xs>.btn,.btn-xs{padding:.2rem .5rem;font-size:.75rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block}.btn-block+.btn-block{margin-top:5px}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{height:0;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height;-o-transition-property:height;transition-property:height}.dropdown-toggle:after{display:inline-block;width:0;height:0;margin-left:.25rem;vertical-align:middle;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-left:.3em solid transparent}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:1rem;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.badge,.c-indicator,.label,.pager{text-align:center}.dropdown-header,.dropdown-menu>li>a{white-space:nowrap;padding:3px 20px;line-height:1.5}.dropdown-menu .divider{height:1px;margin:.5rem 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;font-weight:400;color:#373a3c}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#2b2d2f;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#0275d8;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#818a91}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:"progid:DXImageTransform.Microsoft.gradient(enabled = false)"}.c-input,.file,.select>select{cursor:pointer}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;font-size:.85rem;color:#818a91}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover,.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:.3em solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar:after,.btn-toolbar:before{display:table;content:" "}.btn-toolbar:after{clear:both}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn .caret,.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group-lg.btn-group>.btn+.dropdown-toggle,.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group-lg>.btn .caret,.btn-lg .caret{border-width:.3em .3em 0}.dropup .btn-group-lg>.btn .caret,.dropup .btn-lg .caret{border-width:0 .3em .3em}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before{display:table;content:" "}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:.25rem;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:.25rem}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.c-input,.input-group,.input-group-btn,.input-group-btn>.btn{position:relative}.input-group{display:table;border-collapse:separate}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:.5rem .75rem;font-size:1rem;font-weight:400;line-height:1;color:#55595c;text-align:center;background-color:#eceeef;border:1px solid #ccc;border-radius:.25rem}.input-group-addon.form-control-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn{padding:.3rem .75rem;font-size:.85rem;border-radius:.2rem}.input-group-addon.form-control-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn{padding:.75rem 1.5rem;font-size:1.25rem;border-radius:.3rem}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{font-size:0;white-space:nowrap}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.c-input{display:inline;padding-left:1.5rem;color:#555}.c-input>input{position:absolute;z-index:-1;opacity:0}.c-input>input:checked~.c-indicator{color:#fff;background-color:#0074d9}.c-input>input:active~.c-indicator{color:#fff;background-color:#84c6ff}.c-input+.c-input{margin-left:1rem}.c-indicator{position:absolute;top:0;display:block;width:1rem;height:1rem;font-size:65%;line-height:1rem;color:#eee;user-select:none;background-color:#eee;background-repeat:no-repeat;background-position:center center;-webkit-background-size:50% 50%;background-size:50% 50%}.c-indicator,.file-custom{left:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.c-checkbox .c-indicator{border-radius:.25rem}.c-checkbox input:checked~.c-indicator{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNy4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgOCA4IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA4IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHBhdGggZmlsbD0iI0ZGRkZGRiIgZD0iTTYuNCwxTDUuNywxLjdMMi45LDQuNUwyLjEsMy43TDEuNCwzTDAsNC40bDAuNywwLjdsMS41LDEuNWwwLjcsMC43bDAuNy0wLjdsMy41LTMuNWwwLjctMC43TDYuNCwxTDYuNCwxeiINCgkvPg0KPC9zdmc+DQo=)}.c-checkbox input:indeterminate~.c-indicator{background-color:#0074d9;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNy4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB3aWR0aD0iOHB4IiBoZWlnaHQ9IjhweCIgdmlld0JveD0iMCAwIDggOCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgOCA4IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxwYXRoIGZpbGw9IiNGRkZGRkYiIGQ9Ik0wLDN2Mmg4VjNIMHoiLz4NCjwvc3ZnPg0K)}.c-radio .c-indicator{border-radius:50%}.c-radio input:checked~.c-indicator{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNy4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgOCA4IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA4IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHBhdGggZmlsbD0iI0ZGRkZGRiIgZD0iTTQsMUMyLjMsMSwxLDIuMywxLDRzMS4zLDMsMywzczMtMS4zLDMtM1M1LjcsMSw0LDF6Ii8+DQo8L3N2Zz4NCg==)}.c-inputs-stacked .c-input{display:inline}.c-inputs-stacked .c-input:after{display:block;margin-bottom:.25rem;content:""}.select,.select>select{display:inline-block;color:#555}.c-inputs-stacked .c-input+.c-input{margin-left:0}.select{position:relative}.select>select{width:100%;-webkit-appearance:none;padding:.5rem 2.25rem .5rem 1rem;margin:0;line-height:1.5;background-color:#eee;border:0;border-radius:.25rem;outline:0;-moz-appearance:none;appearance:none}.select>select:focus{-webkit-box-shadow:0 0 0 .075rem #fff,0 0 0 .2rem #0074d9;box-shadow:0 0 0 .075rem #fff,0 0 0 .2rem #0074d9}.select>select:focus:-moz-focusring{color:transparent;text-shadow:0 0 0 #000}.select>select:active{color:#fff;background-color:#0074d9}.select>select::-ms-expand{display:none}.select:after{position:absolute;top:50%;right:1.25rem;display:inline-block;width:0;height:0;margin-top:-.15rem;content:"";border-top:.35rem solid;border-right:.35rem solid transparent;border-bottom:.35rem solid transparent;border-left:.35rem solid transparent}.select select:hover{background-color:#ddd}@-moz-document url-prefix(){.select select{padding-right:1rem;text-indent:.01px;text-overflow:""}.select option{background-color:#fff}}@media screen and (min-width:0 \0){.select select{z-index:1;padding:.5rem 1.5rem .5rem 1rem}.select:after{z-index:5}.select:before{position:absolute;top:0;right:1rem;bottom:0;z-index:2;display:block;width:1.5rem;content:"";background-color:#eee}.select select:active,.select select:focus,.select select:hover{color:#555;background-color:#eee}}.card-columns .card,.card-group,.progress{width:100%}.file{position:relative;display:inline-block;height:2.5rem}.file-custom,.file-custom:before{position:absolute;height:2.5rem;padding:.5rem 1rem;line-height:1.5;color:#555;border:.075rem solid #ddd}.file input{min-width:14rem;margin:0;filter:alpha(opacity=0);opacity:0}.nav-pills .nav-item+.nav-item,.nav-tabs .nav-item+.nav-item{margin-left:.2rem}.file-custom{top:0;right:0;z-index:5;user-select:none;background-color:#fff;border-radius:.25rem;-webkit-box-shadow:inset 0 .2rem .4rem rgba(0,0,0,.05);box-shadow:inset 0 .2rem .4rem rgba(0,0,0,.05)}.file-custom:after{content:"Choose file..."}.file-custom:before{top:-.075rem;right:-.075rem;bottom:-.075rem;z-index:6;display:block;content:"Browse";background-color:#eee;border-radius:0 .25rem .25rem 0}.navbar-brand,.navbar-toggler{margin-bottom:0;line-height:1}.nav-item,.navbar{position:relative}.file input:focus~.file-custom{-webkit-box-shadow:0 0 0 .075rem #fff,0 0 0 .2rem #0074d9;box-shadow:0 0 0 .075rem #fff,0 0 0 .2rem #0074d9}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav:after,.nav:before{display:table;content:" "}.nav-item,.nav-link{display:inline-block}.nav-link{padding:.75em 1em;line-height:1}.nav-link:focus,.nav-link:hover{text-decoration:none;background-color:#eceeef}.disabled>.nav-link,.nav-link.disabled{color:#818a91}.disabled>.nav-link,.disabled>.nav-link:focus,.disabled>.nav-link:hover,.nav-link.disabled,.nav-link.disabled:focus,.nav-link.disabled:hover{color:#818a91;cursor:not-allowed;background-color:transparent}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs .nav-item{float:left;margin-bottom:-1px}.nav-tabs .nav-link{display:block;border:1px solid transparent;border-radius:.25rem .25rem 0 0}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#eceeef #eceeef #ddd}.nav-tabs .active>.nav-link,.nav-tabs .active>.nav-link:focus,.nav-tabs .active>.nav-link:hover,.nav-tabs .nav-link.active,.nav-tabs .nav-link.active:focus,.nav-tabs .nav-link.active:hover,.nav-tabs .nav-link.open,.nav-tabs .nav-link.open:focus,.nav-tabs .nav-link.open:hover,.nav-tabs .open>.nav-link,.nav-tabs .open>.nav-link:focus,.nav-tabs .open>.nav-link:hover{color:#55595c;background-color:#fff;border-color:#ddd #ddd transparent}.nav-tabs .disabled>.nav-link,.nav-tabs .disabled>.nav-link:focus,.nav-tabs .disabled>.nav-link:hover,.nav-tabs .nav-link.disabled,.nav-tabs .nav-link.disabled:focus,.nav-tabs .nav-link.disabled:hover{color:#818a91;background-color:transparent;border-color:transparent}.nav-pills .nav-item{float:left}.nav-pills .nav-link{display:block;border-radius:.25rem}.nav-pills .active>.nav-link,.nav-pills .active>.nav-link:focus,.nav-pills .active>.nav-link:hover,.nav-pills .nav-link.active,.nav-pills .nav-link.active:focus,.nav-pills .nav-link.active:hover,.nav-pills .nav-link.open,.nav-pills .nav-link.open:focus,.nav-pills .nav-link.open:hover,.nav-pills .open>.nav-link,.nav-pills .open>.nav-link:focus,.nav-pills .open>.nav-link:hover{color:#fff;cursor:default;background-color:#0275d8}.nav-stacked .nav-item{display:block;float:none}.nav-stacked .nav-item+.nav-item{margin-top:.2rem;margin-left:0}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{padding:1rem;margin-bottom:1}.navbar:after,.navbar:before{display:table;content:" "}.navbar-static-top{z-index:1000}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0}.navbar-fixed-top{top:0}.navbar-fixed-bottom{bottom:0}.navbar-sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1030;width:100%}.navbar-brand{float:left;padding:.625rem .75rem;margin-right:1rem;font-size:1.25rem}.navbar-brand>a:focus,.navbar-brand>a:hover{text-decoration:none}.navbar-brand>img{display:block}.navbar-toggler{padding:.55rem .75rem;margin-right:1rem;font-size:1.25rem;background:0 0;border:0}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}@media (min-width:34em){.navbar{border-radius:.25rem}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top,.navbar-sticky-top{border-radius:0}.navbar-toggleable-xs{display:block!important}}@media (min-width:48em){.navbar-toggleable-sm{display:block!important}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.card-header,.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-radius:.25rem .25rem 0 0}.navbar-condensed{padding-top:0;padding-bottom:0}.navbar-condensed .navbar-brand,.navbar-nav .nav-link{padding-top:.95rem;padding-bottom:.95rem}.navbar-condensed .form-inline{margin-top:.6rem}.navbar-nav .nav-item{float:left}.navbar-nav .nav-link{display:block;line-height:1.25}.navbar-nav .active>.nav-link,.navbar-nav .active>.nav-link:focus,.navbar-nav .active>.nav-link:hover,.navbar-nav .nav-link.active,.navbar-nav .nav-link.active:focus,.navbar-nav .nav-link.active:hover,.navbar-nav .nav-link.open,.navbar-nav .nav-link.open:focus,.navbar-nav .nav-link.open:hover,.navbar-nav .open>.nav-link,.navbar-nav .open>.nav-link:focus,.navbar-nav .open>.nav-link:hover{color:#555;cursor:default;background-color:#e7e7e7}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-inverse{background-color:#373a3c;border-color:#1f2021}.navbar-inverse .nav-pills>.nav-item>.nav-link,.navbar-inverse .navbar-brand>a,.navbar-inverse .navbar-toggler{color:#aab0b5}.navbar-inverse .nav-pills>.nav-item>.nav-link:focus,.navbar-inverse .nav-pills>.nav-item>.nav-link:hover,.navbar-inverse .navbar-brand>a:focus,.navbar-inverse .navbar-brand>a:hover,.navbar-inverse .navbar-toggler:focus,.navbar-inverse .navbar-toggler:hover{color:#fff}.navbar-inverse .nav-pills>.active>.nav-link,.navbar-inverse .nav-pills>.nav-item>.nav-link:focus,.navbar-inverse .nav-pills>.nav-item>.nav-link:hover,.navbar-inverse .nav-pills>.nav-link.active{color:#fff;background-color:#1f2021}.navbar-inverse .navbar-brand{color:#aab0b5}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#a2a8ae}.navbar-inverse .navbar-nav>li>a{color:#aab0b5}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#1f2021}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#262829}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#1f2021}.navbar-inverse .navbar-link{color:#aab0b5}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#aab0b5}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link:disabled:focus,.navbar-inverse .btn-link:disabled:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.card{position:relative;padding:1.25rem;margin-bottom:1.25rem;border:.075rem solid #eee}.card-title{margin-top:0;margin-bottom:.75rem}.card-text:last-child{margin-bottom:0}.card-actions .card-link+.card-link{margin-left:.75rem}.card-link:hover{text-decoration:none}.card-header{padding:.75rem 1.25rem;margin:-1.25rem -1.25rem 1.25rem;border-bottom:.075rem solid #eee}.card-footer{padding:.75rem 1.25rem;margin:1.25rem -1.25rem -1.25rem;border-top:.075rem solid #eee;border-radius:0 0 .25rem .25rem}.card-primary{background-color:#0275d8;border-color:#0275d8}.card-success{background-color:#5cb85c;border-color:#5cb85c}.card-info{background-color:#5bc0de;border-color:#5bc0de}.card-warning{background-color:#f0ad4e;border-color:#f0ad4e}.card-danger{background-color:#d9534f;border-color:#d9534f}.card-inverse .card-footer,.card-inverse .card-header{border-bottom:.075rem solid rgba(255,255,255,.2)}.card-inverse .card-blockquote,.card-inverse .card-footer,.card-inverse .card-header,.card-inverse .card-title{color:#fff}.card-inverse .card-blockquote>footer,.card-inverse .card-link,.card-inverse .card-text{color:rgba(255,255,255,.65)}.card-inverse .card-link:focus,.card-inverse .card-link:hover{color:#fff}.card-blockquote{padding:0;margin-bottom:0;border-left:0}.card-img{margin:-1.325rem;border-radius:.25rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img-top{margin:-1.325rem -1.325rem 1.25rem;border-radius:.25rem .25rem 0 0}.card-img-bottom{margin:1.25rem -1.325rem -1.325rem;border-radius:0 0 .25rem .25rem}.pager,.pagination{margin-top:1rem;margin-bottom:1rem}.card-set{display:table;table-layout:fixed;border-spacing:1.25rem 0}.card-set .card{display:table-cell;float:none;max-width:none}.card-set-wrapper{margin-right:-1.25rem;margin-left:-1.25rem}.card-group{display:table;table-layout:fixed}.card-group .card{display:table-cell;float:none;max-width:none}.breadcrumb>li,.card-columns .card,.pagination{display:inline-block}.card-group .card+.card{margin-left:0;border-left:0}.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1rem;-moz-column-gap:1rem;column-gap:1rem}.breadcrumb{padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#eceeef;border-radius:.25rem}.breadcrumb>li+li:before{padding-right:.5rem;padding-left:.5rem;color:#818a91;content:"/\\00a0"}.breadcrumb>.active{color:#818a91}.pagination{padding-left:0;border-radius:.25rem}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:.5rem .75rem;margin-left:-1px;line-height:1.5;color:#0275d8;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{color:#014c8c;background-color:#eceeef;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#0275d8;border-color:#0275d8}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#818a91;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm>li>a,.pagination-sm>li>span{padding:.3rem .75rem;font-size:.85rem}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.pager{padding-left:0;list-style:none}.pager:after,.pager:before{display:table;content:" "}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eceeef}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#818a91;cursor:not-allowed;background-color:#fff}.pager-next>a,.pager-next>span{float:right}.pager-prev>a,.pager-prev>span{float:left}.close,.list-group-item>.badge{float:right}.label{display:inline-block;padding:.25em .4em;font-size:75%;line-height:1;color:#fff;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.label:empty{display:none}.btn .label{position:relative;top:-1px}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label-default{background-color:#818a91}.label-default[href]:focus,.label-default[href]:hover{background-color:#687077}.label-primary{background-color:#0275d8}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#025aa5}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{position:relative;top:-.1em;display:inline-block;padding-right:.6em;padding-left:.6em;font-size:.75em;color:#fff;white-space:nowrap;background-color:#818a91;border-radius:2em}.badge:empty{display:none}.badge.pull-left,.badge.pull-right{top:.2em}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#0275d8;background-color:#fff}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.alert-heading,.jumbotron,.jumbotron-heading{color:inherit}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#eceeef;border-radius:.3rem}.jumbotron-hr{border-top-color:#d0d5d8}@media (min-width:34em){.jumbotron{padding:4rem 2rem}.jumbotron-heading{font-size:4.5rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{padding:15px;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-heading{margin-top:0}.alert-dismissible{padding-right:35px}.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d0e9c6}.alert-success hr{border-top-color:#c1e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bcdff1}.alert-info hr{border-top-color:#a6d5ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faf2cc}.alert-warning hr{border-top-color:#f7ecb5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebcccc}.alert-danger hr{border-top-color:#e4b9b9}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:block;height:1rem;margin-bottom:1rem}.progress[value]{-webkit-appearance:none;color:#0074d9;border:0;-moz-appearance:none;appearance:none}.progress[value]::-webkit-progress-bar{background-color:#eee;border-radius:.25rem}.progress[value]::-webkit-progress-value::before{content:attr(value)}.progress[value]::-webkit-progress-value{background-color:#0074d9;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.progress[value="100"]::-webkit-progress-value{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}@media screen and (min-width:0 \0){.progress{background-color:#eee;border-radius:.25rem}.progress-bar{display:inline-block;height:1rem;text-indent:-999rem;background-color:#0074d9;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.progress[width^="0"]{min-width:2rem;color:#818a91;background-color:transparent;background-image:none}.progress[width="100%"]{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}}.progress-striped[value]::-webkit-progress-value{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:1rem 1rem;background-size:1rem 1rem}.progress-striped[value]::-moz-progress-bar{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-animated[value]::-webkit-progress-value{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-animated[value]::-moz-progress-bar{animation:progress-bar-stripes 2s linear infinite}.progress-success[value]::-webkit-progress-value{background-color:#5cb85c}.progress-success[value]::-moz-progress-bar{background-color:#5cb85c}@media screen and (min-width:0 \0){.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:1rem 1rem;background-size:1rem 1rem}.progress-animated .progress-bar-striped{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-success .progress-bar{background-color:#5cb85c}}.progress-info[value]::-webkit-progress-value{background-color:#5bc0de}.progress-info[value]::-moz-progress-bar{background-color:#5bc0de}@media screen and (min-width:0 \0){.progress-info .progress-bar{background-color:#5bc0de}}.progress-warning[value]::-webkit-progress-value{background-color:#f0ad4e}.progress-warning[value]::-moz-progress-bar{background-color:#f0ad4e}@media screen and (min-width:0 \0){.progress-warning .progress-bar{background-color:#f0ad4e}}.progress-danger[value]::-webkit-progress-value{background-color:#d9534f}.progress-danger[value]::-moz-progress-bar{background-color:#d9534f}@media screen and (min-width:0 \0){.progress-danger .progress-bar{background-color:#d9534f}}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1}.media-body{width:10000px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-object{display:block}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#818a91;cursor:not-allowed;background-color:#eceeef}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#818a91}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#0275d8;border-color:#0275d8}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#a8d6fe}.list-group-item-state{color:#a94442;background-color:#f2dede}a.list-group-item-state{color:#a94442}a.list-group-item-state .list-group-item-heading{color:inherit}a.list-group-item-state:focus,a.list-group-item-state:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-state.active,a.list-group-item-state.active:focus,a.list-group-item-state.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.embed-responsive{position:relative;display:block;height:0;padding:0}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.close{font-size:1.5rem;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2}.carousel-caption,.carousel-control{text-shadow:0 1px 2px rgba(0,0,0,.6)}.popover,.tooltip{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:400}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-content,.popover{border:1px solid rgba(0,0,0,.2)}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:transition .3s ease-out,translate(0,-25%);-ms-transform:transition .3s ease-out,translate(0,-25%);-o-transform:transition .3s ease-out,translate(0,-25%);transform:transition .3s ease-out,translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;background-clip:padding-box;border-radius:.3rem;outline:0}.modal-content,.popover{-webkit-background-clip:padding-box}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.in{opacity:.5}.modal-header{min-height:16.5px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.5}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:after,.modal-footer:before{display:table;content:" "}.popover,.popover-arrow,.popover-arrow:after,.tooltip{display:block}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:34em){.modal-dialog{width:600px;margin:30px auto}.modal-sm{width:300px}}@media (min-width:48em){.modal-lg{width:900px}}.popover-arrow,.popover-arrow:after,.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip{position:absolute;z-index:1070;font-size:.85rem;line-height:1.4;opacity:0}.tooltip.in{opacity:.9}.tooltip.bs-tether-element-attached-bottom,.tooltip.tooltip-top{padding:5px 0;margin-top:-3px}.tooltip.bs-tether-element-attached-bottom .tooltip-arrow,.tooltip.tooltip-top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.bs-tether-element-attached-left,.tooltip.tooltip-right{padding:0 5px;margin-left:3px}.tooltip.bs-tether-element-attached-left .tooltip-arrow,.tooltip.tooltip-right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.bs-tether-element-attached-top,.tooltip.tooltip-bottom{padding:5px 0;margin-top:3px}.tooltip.bs-tether-element-attached-top .tooltip-arrow,.tooltip.tooltip-bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bs-tether-element-attached-right,.tooltip.tooltip-left{padding:0 5px;margin-left:-3px}.tooltip.bs-tether-element-attached-right .tooltip-arrow,.tooltip.tooltip-left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;max-width:276px;padding:1px;font-size:1rem;line-height:1.5;text-align:left;white-space:normal;background-color:#fff;background-clip:padding-box;border-radius:.3rem}.text-nowrap,.text-truncate{white-space:nowrap}.popover.bs-tether-element-attached-bottom,.popover.popover-top{margin-top:-10px}.popover.bs-tether-element-attached-bottom .popover-arrow,.popover.popover-top .popover-arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.bs-tether-element-attached-bottom .popover-arrow:after,.popover.popover-top .popover-arrow:after{bottom:1px;margin-left:-10px;content:"";border-top-color:#fff;border-bottom-width:0}.popover.bs-tether-element-attached-left,.popover.popover-right{margin-left:10px}.popover.bs-tether-element-attached-left .popover-arrow,.popover.popover-right .popover-arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.bs-tether-element-attached-left .popover-arrow:after,.popover.popover-right .popover-arrow:after{bottom:-10px;left:1px;content:"";border-right-color:#fff;border-left-width:0}.popover.bs-tether-element-attached-top,.popover.popover-bottom{margin-top:10px}.popover.bs-tether-element-attached-top .popover-arrow,.popover.popover-bottom .popover-arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:rgba(0,0,0,.25)}.popover.bs-tether-element-attached-top .popover-arrow:after,.popover.popover-bottom .popover-arrow:after{top:1px;margin-left:-10px;content:"";border-top-width:0;border-bottom-color:#fff}.popover.bs-tether-element-attached-right,.popover.popover-left{margin-left:-10px}.popover.bs-tether-element-attached-right .popover-arrow,.popover.popover-left .popover-arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:rgba(0,0,0,.25)}.popover.bs-tether-element-attached-right .popover-arrow:after,.popover.popover-left .popover-arrow:after{right:1px;bottom:-10px;content:"";border-right-width:0;border-left-color:#fff}.popover-title{padding:8px 14px;margin:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:-.7rem -.7rem 0 0}.popover-content{padding:9px 14px}.carousel,.carousel-inner{position:relative}.popover-arrow{border-width:11px}.popover-arrow:after{content:"";border-width:10px}.carousel-inner{width:100%;overflow:hidden}.carousel-inner>.carousel-item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.carousel-item>a>img,.carousel-inner>.carousel-item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.carousel-item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;perspective:1000}.carousel-inner>.carousel-item.active.right,.carousel-inner>.carousel-item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.carousel-item.active.left,.carousel-inner>.carousel-item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.carousel-item.active,.carousel-inner>.carousel-item.next.left,.carousel-inner>.carousel-item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;opacity:.5}.carousel-control.left{background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;width:20px;height:20px;margin-top:-10px;font-family:serif;line-height:1}.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-prev:before{content:"\2039"}.carousel-control .icon-next:before{content:"\203a"}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:transparent;border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}.carousel-caption .btn,.text-hide{text-shadow:none}@media (min-width:34em){.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .icon-prev{margin-left:-15px}.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.p-a-0,.sr-only{padding:0}.clearfix:after,.clearfix:before{display:table;content:" "}.center-block{display:block;margin-right:auto;margin-left:auto}.hidden-xl-down,.hidden-xs-up,.visible-print-block,[hidden]{display:none!important}.pull-right{float:right!important}.pull-left{float:left!important}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.m-a-0{margin:0}.m-t-0{margin-top:0}.m-t,.m-y{margin-top:1rem}.m-r-0{margin-right:0}.m-r,.m-x{margin-right:1rem}.m-b-0{margin-bottom:0}.m-b,.m-y{margin-bottom:1rem}.m-l-0{margin-left:0}.m-l,.m-x{margin-left:1rem}.m-a{margin:1rem}.m-l-md,.m-x-md{margin-left:1.5rem}.m-r-md,.m-x-md{margin-right:1.5rem}.m-b-md,.m-y-md{margin-bottom:1.5rem}.m-t-md,.m-y-md{margin-top:1.5rem}.m-l-lg,.m-x-lg{margin-left:3rem}.m-r-lg,.m-x-lg{margin-right:3rem}.m-b-lg,.m-y-lg{margin-bottom:3rem}.m-t-lg,.m-y-lg{margin-top:3rem}.p-t-0{padding-top:0}.p-t,.p-y{padding-top:1rem}.p-r-0{padding-right:0}.p-r,.p-x{padding-right:1rem}.p-b-0{padding-bottom:0}.p-b,.p-y{padding-bottom:1rem}.p-l-0{padding-left:0}.p-l,.p-x{padding-left:1rem}.p-a{padding:1rem}.p-l-md,.p-x-md{padding-left:1.5rem}.p-r-md,.p-x-md{padding-right:1.5rem}.p-b-md,.p-y-md{padding-bottom:1.5rem}.p-t-md,.p-y-md{padding-top:1.5rem}.p-l-lg,.p-x-lg{padding-left:3rem}.p-r-lg,.p-x-lg{padding-right:3rem}.p-b-lg,.p-y-lg{padding-bottom:3rem}.p-t-lg,.p-y-lg{padding-top:3rem}.pos-f-t{position:fixed;top:0;right:0;left:0;z-index:1030}.invisible{visibility:hidden}.text-hide{font:"0/0" a;color:transparent;background-color:transparent;border:0}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-truncate{overflow:hidden;text-overflow:ellipsis}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#818a91}.text-primary{color:#0275d8}a.text-primary:focus,a.text-primary:hover{color:#025aa5}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.inverse{color:#eceeef;background-color:#373a3c}.bg-primary{color:#fff;background-color:#0275d8}a.bg-primary:focus,a.bg-primary:hover{background-color:#025aa5}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}@media (max-width:33.9em){.hidden-xs-down{display:none!important}}@media (min-width:34em){.hidden-sm-up{display:none!important}}@media (max-width:47.9em){.hidden-sm-down{display:none!important}}@media (min-width:48em){.hidden-md-up{display:none!important}}@media (max-width:61.9em){.hidden-md-down{display:none!important}}@media (min-width:62em){.hidden-lg-up{display:none!important}}@media (max-width:74.9em){.hidden-lg-down{display:none!important}}@media (min-width:75em){.hidden-xl-up{display:none!important}}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}.hidden-print .hidden-print{display:none!important}}
\ No newline at end of file diff --git a/docs/dist/js/bootstrap.js b/docs/dist/js/bootstrap.js index b22c41b9ac..6f11dbaced 100644 --- a/docs/dist/js/bootstrap.js +++ b/docs/dist/js/bootstrap.js @@ -15,4417 +15,3491 @@ if (typeof jQuery === 'undefined') { } }(jQuery); -/** ======================================================================= - * Bootstrap: util.js v4.0.0 - * http://getbootstrap.com/javascript/#alerts - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== - * @fileoverview - Bootstrap's private util helper. Adds private util - * helpers for things like accesibility and transitions. These methods are - * shared across all bootstrap plugins. - * ======================================================================== - */ - -'use strict'; - - -/** - * @type {Object} - */ -var Bootstrap = {} - - -/** - * @const - * @type {string} - */ -Bootstrap.TRANSITION_END = 'bsTransitionEnd' - - -/** - * @const - * @type {Object} - */ -Bootstrap.TransitionEndEvent = { - 'WebkitTransition' : 'webkitTransitionEnd', - 'MozTransition' : 'transitionend', - 'OTransition' : 'oTransitionEnd otransitionend', - 'transition' : 'transitionend' -} - - -/** - * @param {Function} childConstructor - * @param {Function} parentConstructor - */ -Bootstrap.inherits = function(childConstructor, parentConstructor) { - /** @constructor */ - function tempConstructor() {} - tempConstructor.prototype = parentConstructor.prototype - childConstructor.prototype = new tempConstructor() - /** @override */ - childConstructor.prototype.constructor = childConstructor -} - - -/** - * @param {Element} element - * @return {string|null} - */ -Bootstrap.getSelectorFromElement = function (element) { - var selector = element.getAttribute('data-target') - - if (!selector) { - selector = element.getAttribute('href') || '' - selector = /^#[a-z]/i.test(selector) ? selector : null - } - - return selector -} - - -/** - * @param {string} prefix - * @return {string} - */ -Bootstrap.getUID = function (prefix) { - do prefix += ~~(Math.random() * 1000000) - while (document.getElementById(prefix)) - return prefix -} - - -/** - * @return {Object} - */ -Bootstrap.getSpecialTransitionEndEvent = function () { - return { - bindType: Bootstrap.transition.end, - delegateType: Bootstrap.transition.end, - handle: /** @param {jQuery.Event} event */ (function (event) { - if ($(event.target).is(this)) { - return event.handleObj.handler.apply(this, arguments) - } - }) - } -} - - -/** - * @param {Element} element - */ -Bootstrap.reflow = function (element) { - new Function('bs',"return bs")(element.offsetHeight) -} - - -/** - * @return {Object|boolean} - */ -Bootstrap.transitionEndTest = function () { - if (window['QUnit']) { - return false - } - - var el = document.createElement('bootstrap') - for (var name in Bootstrap.TransitionEndEvent) { - if (el.style[name] !== undefined) { - return { end: Bootstrap.TransitionEndEvent[name] } - } - } - return false -} - - -/** - * @param {number} duration - * @this {Element} - * @return {Object} - */ -Bootstrap.transitionEndEmulator = function (duration) { - var called = false - - $(this).one(Bootstrap.TRANSITION_END, function () { - called = true - }) - - var callback = function () { - if (!called) { - $(this).trigger(Bootstrap.transition.end) - } - }.bind(this) - - setTimeout(callback, duration) - - return this -} ++function ($) { /** - * ------------------------------------------------------------------------ - * jQuery Interface - * ------------------------------------------------------------------------ - */ - -$.fn.emulateTransitionEnd = Bootstrap.transitionEndEmulator - -$(function () { - Bootstrap.transition = Bootstrap.transitionEndTest() - - if (!Bootstrap.transition) { - return - } - - $.event.special[Bootstrap.TRANSITION_END] = Bootstrap.getSpecialTransitionEndEvent() -}) - -/** ======================================================================= - * Bootstrap: alert.js v4.0.0 - * http://getbootstrap.com/javascript/#alerts - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): util.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== - * @fileoverview - Bootstrap's generic alert component. Add dismiss - * functionality to all alert messages with this plugin. - * - * Public Methods & Properties: - * - * + $.alert - * + $.alert.noConflict - * + $.alert.Constructor - * + $.alert.Constructor.VERSION - * + $.alert.Constructor.prototype.close - * - * ======================================================================== + * -------------------------------------------------------------------------- */ 'use strict'; +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); -/** - * Our Alert class. - * @param {Element=} opt_element - * @constructor - */ -var Alert = function (opt_element) { - if (opt_element) { - $(opt_element).on('click', Alert._DISMISS_SELECTOR, Alert._handleDismiss(this)) - } -} - - -/** - * @const - * @type {string} - */ -Alert['VERSION'] = '4.0.0' - - -/** - * @const - * @type {string} - * @private - */ -Alert._NAME = 'alert' - - -/** - * @const - * @type {string} - * @private - */ -Alert._DATA_KEY = 'bs.alert' - - -/** - * @const - * @type {string} - * @private - */ -Alert._DISMISS_SELECTOR = '[data-dismiss="alert"]' - - -/** - * @const - * @type {number} - * @private - */ -Alert._TRANSITION_DURATION = 150 - - -/** - * @const - * @type {Function} - * @private - */ -Alert._JQUERY_NO_CONFLICT = $.fn[Alert._NAME] - - -/** - * @const - * @enum {string} - * @private - */ -Alert._Event = { - CLOSE : 'close.bs.alert', - CLOSED : 'closed.bs.alert' -} +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; } +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } -/** - * @const - * @enum {string} - * @private - */ -Alert._ClassName = { - ALERT : 'alert', - FADE : 'fade', - IN : 'in' -} - - -/** - * Provides the jQuery Interface for the alert component. - * @param {string=} opt_config - * @this {jQuery} - * @return {jQuery} - * @private - */ -Alert._jQueryInterface = function (opt_config) { - return this.each(function () { - var $this = $(this) - var data = $this.data(Alert._DATA_KEY) - - if (!data) { - data = new Alert(this) - $this.data(Alert._DATA_KEY, data) - } +var Util = (function ($) { - if (opt_config === 'close') { - data[opt_config](this) - } - }) -} + /** + * ------------------------------------------------------------------------ + * Private TransitionEnd Helpers + * ------------------------------------------------------------------------ + */ + var transition = false; -/** - * Close the alert component - * @param {Alert} alertInstance - * @return {Function} - * @private - */ -Alert._handleDismiss = function (alertInstance) { - return function (event) { - if (event) { - event.preventDefault() - } + var TransitionEndEvent = { + WebkitTransition: 'webkitTransitionEnd', + MozTransition: 'transitionend', + OTransition: 'oTransitionEnd otransitionend', + transition: 'transitionend' + }; - alertInstance['close'](this) + // shoutout AngusCroll (https://goo.gl/pxwQGp) + function toType(obj) { + return ({}).toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase(); } -} - -/** - * Close the alert component - * @param {Element} element - */ -Alert.prototype['close'] = function (element) { - var rootElement = this._getRootElement(element) - var customEvent = this._triggerCloseEvent(rootElement) - - if (customEvent.isDefaultPrevented()) return - - this._removeElement(rootElement) -} - - -/** - * Tries to get the alert's root element - * @return {Element} - * @private - */ -Alert.prototype._getRootElement = function (element) { - var parent = false - var selector = Bootstrap.getSelectorFromElement(element) - - if (selector) { - parent = $(selector)[0] - } - - if (!parent) { - parent = $(element).closest('.' + Alert._ClassName.ALERT)[0] + function isElement(obj) { + return (obj[0] || obj).nodeType; } - return parent -} - - -/** - * Trigger close event on element - * @return {$.Event} - * @private - */ -Alert.prototype._triggerCloseEvent = function (element) { - var closeEvent = $.Event(Alert._Event.CLOSE) - $(element).trigger(closeEvent) - return closeEvent -} - - -/** - * Trigger closed event and remove element from dom - * @private - */ -Alert.prototype._removeElement = function (element) { - $(element).removeClass(Alert._ClassName.IN) - - if (!Bootstrap.transition || !$(element).hasClass(Alert._ClassName.FADE)) { - this._destroyElement(element) - return - } - - $(element) - .one(Bootstrap.TRANSITION_END, this._destroyElement.bind(this, element)) - .emulateTransitionEnd(Alert._TRANSITION_DURATION) -} - - -/** - * clean up any lingering jquery data and kill element - * @private - */ -Alert.prototype._destroyElement = function (element) { - $(element) - .detach() - .trigger(Alert._Event.CLOSED) - .remove() -} - - -/** - * ------------------------------------------------------------------------ - * jQuery Interface + noConflict implementaiton - * ------------------------------------------------------------------------ - */ - -/** - * @const - * @type {Function} - */ -$.fn[Alert._NAME] = Alert._jQueryInterface - - -/** - * @const - * @type {Function} - */ -$.fn[Alert._NAME]['Constructor'] = Alert - - -/** - * @return {Function} - */ -$.fn[Alert._NAME]['noConflict'] = function () { - $.fn[Alert._NAME] = Alert._JQUERY_NO_CONFLICT - return Alert._jQueryInterface -} - - -/** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - -$(document).on('click.bs.alert.data-api', Alert._DISMISS_SELECTOR, Alert._handleDismiss(new Alert)) - -/** ======================================================================= - * Bootstrap: button.js v4.0.0 - * http://getbootstrap.com/javascript/#buttons - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== - * @fileoverview - Bootstrap's generic button component. - * - * Note (@fat): Deprecated "setState" – imo, better solutions for managing a - * buttons state should exist outside this plugin. - * - * Public Methods & Properties: - * - * + $.button - * + $.button.noConflict - * + $.button.Constructor - * + $.button.Constructor.VERSION - * + $.button.Constructor.prototype.toggle - * - * ======================================================================== - */ - -'use strict'; - - -/** - * Our Button class. - * @param {Element!} element - * @constructor - */ -var Button = function (element) { - - /** @private {Element} */ - this._element = element - -} - - -/** - * @const - * @type {string} - */ -Button['VERSION'] = '4.0.0' - - -/** - * @const - * @type {string} - * @private - */ -Button._NAME = 'button' - - -/** - * @const - * @type {string} - * @private - */ -Button._DATA_KEY = 'bs.button' - - -/** - * @const - * @type {Function} - * @private - */ -Button._JQUERY_NO_CONFLICT = $.fn[Button._NAME] - - -/** - * @const - * @enum {string} - * @private - */ -Button._ClassName = { - ACTIVE : 'active', - BUTTON : 'btn', - FOCUS : 'focus' -} - - -/** - * @const - * @enum {string} - * @private - */ -Button._Selector = { - DATA_TOGGLE_CARROT : '[data-toggle^="button"]', - DATA_TOGGLE : '[data-toggle="buttons"]', - INPUT : 'input', - ACTIVE : '.active', - BUTTON : '.btn' -} - - -/** - * Provides the jQuery Interface for the Button component. - * @param {string=} opt_config - * @this {jQuery} - * @return {jQuery} - * @private - */ -Button._jQueryInterface = function (opt_config) { - return this.each(function () { - var data = $(this).data(Button._DATA_KEY) - - if (!data) { - data = new Button(this) - $(this).data(Button._DATA_KEY, data) - } - - if (opt_config === 'toggle') { - data[opt_config]() - } - }) -} - - -/** - * Toggle's the button active state - */ -Button.prototype['toggle'] = function () { - var triggerChangeEvent = true - var rootElement = $(this._element).closest(Button._Selector.DATA_TOGGLE)[0] - - if (rootElement) { - var input = $(this._element).find(Button._Selector.INPUT)[0] - if (input) { - if (input.type == 'radio') { - if (input.checked && $(this._element).hasClass(Button._ClassName.ACTIVE)) { - triggerChangeEvent = false - } else { - var activeElement = $(rootElement).find(Button._Selector.ACTIVE)[0] - if (activeElement) { - $(activeElement).removeClass(Button._ClassName.ACTIVE) - } + function getSpecialTransitionEndEvent() { + return { + bindType: transition.end, + delegateType: transition.end, + handle: function handle(event) { + if ($(event.target).is(this)) { + return event.handleObj.handler.apply(this, arguments); } } - - if (triggerChangeEvent) { - input.checked = !$(this._element).hasClass(Button._ClassName.ACTIVE) - $(this._element).trigger('change') - } - } - } else { - this._element.setAttribute('aria-pressed', !$(this._element).hasClass(Button._ClassName.ACTIVE)) - } - - if (triggerChangeEvent) { - $(this._element).toggleClass(Button._ClassName.ACTIVE) + }; } -} - - -/** - * ------------------------------------------------------------------------ - * jQuery Interface + noConflict implementaiton - * ------------------------------------------------------------------------ - */ - -/** - * @const - * @type {Function} - */ -$.fn[Button._NAME] = Button._jQueryInterface - - -/** - * @const - * @type {Function} - */ -$.fn[Button._NAME]['Constructor'] = Button - - -/** - * @const - * @type {Function} - */ -$.fn[Button._NAME]['noConflict'] = function () { - $.fn[Button._NAME] = Button._JQUERY_NO_CONFLICT - return this -} - - -/** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - -$(document) - .on('click.bs.button.data-api', Button._Selector.DATA_TOGGLE_CARROT, function (event) { - event.preventDefault() - - var button = event.target - - if (!$(button).hasClass(Button._ClassName.BUTTON)) { - button = $(button).closest(Button._Selector.BUTTON) - } - - Button._jQueryInterface.call($(button), 'toggle') - }) - .on('focus.bs.button.data-api blur.bs.button.data-api', Button._Selector.DATA_TOGGLE_CARROT, function (event) { - var button = $(event.target).closest(Button._Selector.BUTTON)[0] - $(button).toggleClass(Button._ClassName.FOCUS, /^focus(in)?$/.test(event.type)) - }) - -/** ======================================================================= - * Bootstrap: carousel.js v4.0.0 - * http://getbootstrap.com/javascript/#carousel - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== - * @fileoverview - Bootstrap's carousel. A slideshow component for cycling - * through elements, like a carousel. Nested carousels are not supported. - * - * Public Methods & Properties: - * - * + $.carousel - * + $.carousel.noConflict - * + $.carousel.Constructor - * + $.carousel.Constructor.VERSION - * + $.carousel.Constructor.Defaults - * + $.carousel.Constructor.Defaults.interval - * + $.carousel.Constructor.Defaults.pause - * + $.carousel.Constructor.Defaults.wrap - * + $.carousel.Constructor.Defaults.keyboard - * + $.carousel.Constructor.Defaults.slide - * + $.carousel.Constructor.prototype.next - * + $.carousel.Constructor.prototype.prev - * + $.carousel.Constructor.prototype.pause - * + $.carousel.Constructor.prototype.cycle - * - * ======================================================================== - */ - -'use strict'; - - -/** - * Our carousel class. - * @param {Element!} element - * @param {Object=} opt_config - * @constructor - */ -var Carousel = function (element, opt_config) { - - /** @private {Element} */ - this._element = $(element)[0] - - /** @private {Element} */ - this._indicatorsElement = $(this._element).find(Carousel._Selector.INDICATORS)[0] - - /** @private {?Object} */ - this._config = opt_config || null - - /** @private {boolean} */ - this._isPaused = false - - /** @private {boolean} */ - this._isSliding = false - - /** @private {?number} */ - this._interval = null - - /** @private {?Element} */ - this._activeElement = null - - /** @private {?Array} */ - this._items = null - - this._addEventListeners() - -} - - -/** - * @const - * @type {string} - */ -Carousel['VERSION'] = '4.0.0' - - -/** - * @const - * @type {Object} - */ -Carousel['Defaults'] = { - 'interval' : 5000, - 'pause' : 'hover', - 'wrap' : true, - 'keyboard' : true, - 'slide' : false -} - - -/** - * @const - * @type {string} - * @private - */ -Carousel._NAME = 'carousel' - - -/** - * @const - * @type {string} - * @private - */ -Carousel._DATA_KEY = 'bs.carousel' - - -/** - * @const - * @type {number} - * @private - */ -Carousel._TRANSITION_DURATION = 600 - - -/** - * @const - * @enum {string} - * @private - */ -Carousel._Direction = { - NEXT : 'next', - PREVIOUS : 'prev' -} - -/** - * @const - * @enum {string} - * @private - */ -Carousel._Event = { - SLIDE : 'slide.bs.carousel', - SLID : 'slid.bs.carousel' -} - - -/** - * @const - * @enum {string} - * @private - */ -Carousel._ClassName = { - CAROUSEL : 'carousel', - ACTIVE : 'active', - SLIDE : 'slide', - RIGHT : 'right', - LEFT : 'left', - ITEM : 'carousel-item' -} - - -/** - * @const - * @enum {string} - * @private - */ -Carousel._Selector = { - ACTIVE : '.active', - ACTIVE_ITEM : '.active.carousel-item', - ITEM : '.carousel-item', - NEXT_PREV : '.next, .prev', - INDICATORS : '.carousel-indicators' -} - - -/** - * @const - * @type {Function} - * @private - */ -Carousel._JQUERY_NO_CONFLICT = $.fn[Carousel._NAME] - - -/** - * @param {Object=} opt_config - * @this {jQuery} - * @return {jQuery} - * @private - */ -Carousel._jQueryInterface = function (opt_config) { - return this.each(function () { - var data = $(this).data(Carousel._DATA_KEY) - var config = $.extend({}, Carousel['Defaults'], $(this).data(), typeof opt_config == 'object' && opt_config) - var action = typeof opt_config == 'string' ? opt_config : config.slide - - if (!data) { - data = new Carousel(this, config) - $(this).data(Carousel._DATA_KEY, data) + function transitionEndTest() { + if (window.QUnit) { + return false; } - if (typeof opt_config == 'number') { - data.to(opt_config) - - } else if (action) { - data[action]() + var el = document.createElement('bootstrap'); - } else if (config.interval) { - data['pause']() - data['cycle']() + for (var name in TransitionEndEvent) { + if (el.style[name] !== undefined) { + return { end: TransitionEndEvent[name] }; + } } - }) -} - - -/** - * Click handler for data api - * @param {Event} event - * @this {Element} - * @private - */ -Carousel._dataApiClickHandler = function (event) { - var selector = Bootstrap.getSelectorFromElement(this) - - if (!selector) { - return - } - - var target = $(selector)[0] - - if (!target || !$(target).hasClass(Carousel._ClassName.CAROUSEL)) { - return - } - - var config = $.extend({}, $(target).data(), $(this).data()) - - var slideIndex = this.getAttribute('data-slide-to') - if (slideIndex) { - config.interval = false - } - - Carousel._jQueryInterface.call($(target), config) - - if (slideIndex) { - $(target).data(Carousel._DATA_KEY).to(slideIndex) - } - - event.preventDefault() -} - - -/** - * Advance the carousel to the next slide - */ -Carousel.prototype['next'] = function () { - if (!this._isSliding) { - this._slide(Carousel._Direction.NEXT) - } -} - - -/** - * Return the carousel to the previous slide - */ -Carousel.prototype['prev'] = function () { - if (!this._isSliding) { - this._slide(Carousel._Direction.PREVIOUS) - } -} - - -/** - * Pause the carousel cycle - * @param {Event=} opt_event - */ -Carousel.prototype['pause'] = function (opt_event) { - if (!opt_event) { - this._isPaused = true - } - - if ($(this._element).find(Carousel._Selector.NEXT_PREV)[0] && Bootstrap.transition) { - $(this._element).trigger(Bootstrap.transition.end) - this['cycle'](true) - } - - clearInterval(this._interval) - this._interval = null -} - - -/** - * Cycle to the next carousel item - * @param {Event|boolean=} opt_event - */ -Carousel.prototype['cycle'] = function (opt_event) { - if (!opt_event) { - this._isPaused = false - } - - if (this._interval) { - clearInterval(this._interval) - this._interval = null - } - - if (this._config['interval'] && !this._isPaused) { - this._interval = setInterval(this['next'].bind(this), this._config['interval']) - } -} - - -/** - * @return {Object} - */ -Carousel.prototype['getConfig'] = function () { - return this._config -} - - -/** - * Move active carousel item to specified index - * @param {number} index - */ -Carousel.prototype.to = function (index) { - this._activeElement = $(this._element).find(Carousel._Selector.ACTIVE_ITEM)[0] - - var activeIndex = this._getItemIndex(this._activeElement) - - if (index > (this._items.length - 1) || index < 0) { - return - } - - if (this._isSliding) { - $(this._element).one(Carousel._Event.SLID, function () { this.to(index) }.bind(this)) - return - } - - if (activeIndex == index) { - this['pause']() - this['cycle']() - return - } - - var direction = index > activeIndex ? - Carousel._Direction.NEXT : - Carousel._Direction.PREVIOUS - - this._slide(direction, this._items[index]) -} - - -/** - * Add event listeners to root element - * @private - */ -Carousel.prototype._addEventListeners = function () { - if (this._config['keyboard']) { - $(this._element).on('keydown.bs.carousel', this._keydown.bind(this)) - } - - if (this._config['pause'] == 'hover' && !('ontouchstart' in document.documentElement)) { - $(this._element) - .on('mouseenter.bs.carousel', this['pause'].bind(this)) - .on('mouseleave.bs.carousel', this['cycle'].bind(this)) - } -} - - -/** - * Keydown handler - * @param {Event} event - * @private - */ -Carousel.prototype._keydown = function (event) { - event.preventDefault() - if (/input|textarea/i.test(event.target.tagName)) return - - switch (event.which) { - case 37: this['prev'](); break - case 39: this['next'](); break - default: return + return false; } -} + function transitionEndEmulator(duration) { + var _this = this; -/** - * Get item index - * @param {Element} element - * @return {number} - * @private - */ -Carousel.prototype._getItemIndex = function (element) { - this._items = $.makeArray($(element).parent().find(Carousel._Selector.ITEM)) + var called = false; - return this._items.indexOf(element) -} + $(this).one(Util.TRANSITION_END, function () { + called = true; + }); + setTimeout(function () { + if (!called) { + Util.triggerTransitionEnd(_this); + } + }, duration); -/** - * Get next displayed item based on direction - * @param {Carousel._Direction} direction - * @param {Element} activeElement - * @return {Element} - * @private - */ -Carousel.prototype._getItemByDirection = function (direction, activeElement) { - var activeIndex = this._getItemIndex(activeElement) - var isGoingToWrap = (direction === Carousel._Direction.PREVIOUS && activeIndex === 0) || - (direction === Carousel._Direction.NEXT && activeIndex == (this._items.length - 1)) - - if (isGoingToWrap && !this._config['wrap']) { - return activeElement + return this; } - var delta = direction == Carousel._Direction.PREVIOUS ? -1 : 1 - var itemIndex = (activeIndex + delta) % this._items.length - - return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex] -} - - -/** - * Trigger slide event on element - * @param {Element} relatedTarget - * @param {Carousel._ClassName} directionalClassname - * @return {$.Event} - * @private - */ -Carousel.prototype._triggerSlideEvent = function (relatedTarget, directionalClassname) { - var slideEvent = $.Event(Carousel._Event.SLIDE, { - relatedTarget: relatedTarget, - direction: directionalClassname - }) - - $(this._element).trigger(slideEvent) - - return slideEvent -} + function setTransitionEndSupport() { + transition = transitionEndTest(); + $.fn.emulateTransitionEnd = transitionEndEmulator; -/** - * Set the active indicator if available - * @param {Element} element - * @private - */ -Carousel.prototype._setActiveIndicatorElement = function (element) { - if (this._indicatorsElement) { - $(this._indicatorsElement) - .find(Carousel._Selector.ACTIVE) - .removeClass(Carousel._ClassName.ACTIVE) - - var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)] - if (nextIndicator) { - $(nextIndicator).addClass(Carousel._ClassName.ACTIVE) + if (Util.supportsTransitionEnd()) { + $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent(); } } -} + /** + * -------------------------------------------------------------------------- + * Public Util Api + * -------------------------------------------------------------------------- + */ -/** - * Slide the carousel element in a direction - * @param {Carousel._Direction} direction - * @param {Element=} opt_nextElement - */ -Carousel.prototype._slide = function (direction, opt_nextElement) { - var activeElement = $(this._element).find(Carousel._Selector.ACTIVE_ITEM)[0] - var nextElement = opt_nextElement || activeElement && this._getItemByDirection(direction, activeElement) + var Util = { - var isCycling = !!this._interval + TRANSITION_END: 'bsTransitionEnd', - var directionalClassName = direction == Carousel._Direction.NEXT ? - Carousel._ClassName.LEFT : - Carousel._ClassName.RIGHT + getUID: function getUID(prefix) { + do prefix += ~ ~(Math.random() * 1000000); while (document.getElementById(prefix)); + return prefix; + }, - if (nextElement && $(nextElement).hasClass(Carousel._ClassName.ACTIVE)) { - this._isSliding = false - return - } + getSelectorFromElement: function getSelectorFromElement(element) { + var selector = element.getAttribute('data-target'); - var slideEvent = this._triggerSlideEvent(nextElement, directionalClassName) - if (slideEvent.isDefaultPrevented()) { - return - } - - if (!activeElement || !nextElement) { - // some weirdness is happening, so we bail (maybe throw exception here alerting user that they're dom is off - return - } - - this._isSliding = true - - if (isCycling) { - this['pause']() - } - - this._setActiveIndicatorElement(nextElement) - - var slidEvent = $.Event(Carousel._Event.SLID, { relatedTarget: nextElement, direction: directionalClassName }) - - if (Bootstrap.transition && $(this._element).hasClass(Carousel._ClassName.SLIDE)) { - $(nextElement).addClass(direction) - - Bootstrap.reflow(nextElement) - - $(activeElement).addClass(directionalClassName) - $(nextElement).addClass(directionalClassName) - - $(activeElement) - .one(Bootstrap.TRANSITION_END, function () { - $(nextElement) - .removeClass(directionalClassName) - .removeClass(direction) - - $(nextElement).addClass(Carousel._ClassName.ACTIVE) - - $(activeElement) - .removeClass(Carousel._ClassName.ACTIVE) - .removeClass(direction) - .removeClass(directionalClassName) - - this._isSliding = false - - setTimeout(function () { - $(this._element).trigger(slidEvent) - }.bind(this), 0) - }.bind(this)) - .emulateTransitionEnd(Carousel._TRANSITION_DURATION) + if (!selector) { + selector = element.getAttribute('href') || ''; + selector = /^#[a-z]/i.test(selector) ? selector : null; + } - } else { - $(activeElement).removeClass(Carousel._ClassName.ACTIVE) - $(nextElement).addClass(Carousel._ClassName.ACTIVE) + return selector; + }, - this._isSliding = false - $(this._element).trigger(slidEvent) - } + reflow: function reflow(element) { + new Function('bs', 'return bs')(element.offsetHeight); + }, - if (isCycling) { - this['cycle']() - } -} + triggerTransitionEnd: function triggerTransitionEnd(element) { + $(element).trigger(transition.end); + }, + supportsTransitionEnd: function supportsTransitionEnd() { + return !!transition; + }, -/** - * ------------------------------------------------------------------------ - * jQuery Interface + noConflict implementaiton - * ------------------------------------------------------------------------ - */ + typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) { -/** - * @const - * @type {Function} - */ -$.fn[Carousel._NAME] = Carousel._jQueryInterface + for (var property in configTypes) { + var expectedTypes = configTypes[property]; + var value = config[property]; + var valueType = undefined; + if (value && isElement(value)) valueType = 'element';else valueType = toType(value); -/** - * @const - * @type {Function} - */ -$.fn[Carousel._NAME]['Constructor'] = Carousel + if (!new RegExp(expectedTypes).test(valueType)) { + throw new Error('' + componentName.toUpperCase() + ': ' + ('Option "' + property + '" provided type "' + valueType + '" ') + ('but expected type "' + expectedTypes + '".')); + } + } + } + }; -/** - * @const - * @type {Function} - */ -$.fn[Carousel._NAME]['noConflict'] = function () { - $.fn[Carousel._NAME] = Carousel._JQUERY_NO_CONFLICT - return this -} + setTransitionEndSupport(); + return Util; +})(jQuery); /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - -$(document) - .on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', Carousel._dataApiClickHandler) - -$(window).on('load', function () { - $('[data-ride="carousel"]').each(function () { - var $carousel = $(this) - Carousel._jQueryInterface.call($carousel, /** @type {Object} */ ($carousel.data())) - }) -}) - -/** ======================================================================= - * Bootstrap: collapse.js v4.0.0 - * http://getbootstrap.com/javascript/#collapse - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): alert.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== - * @fileoverview - Bootstrap's collapse plugin. Flexible support for - * collapsible components like accordions and navigation. - * - * Public Methods & Properties: - * - * + $.carousel - * + $.carousel.noConflict - * + $.carousel.Constructor - * + $.carousel.Constructor.VERSION - * + $.carousel.Constructor.Defaults - * + $.carousel.Constructor.Defaults.toggle - * + $.carousel.Constructor.Defaults.trigger - * + $.carousel.Constructor.Defaults.parent - * + $.carousel.Constructor.prototype.toggle - * + $.carousel.Constructor.prototype.show - * + $.carousel.Constructor.prototype.hide - * - * ======================================================================== - */ - -'use strict'; - - -/** - * Our collapse class. - * @param {Element!} element - * @param {Object=} opt_config - * @constructor - */ -var Collapse = function (element, opt_config) { - - /** @private {Element} */ - this._element = element - - /** @private {Object} */ - this._config = $.extend({}, Collapse['Defaults'], opt_config) - - /** @private {Element} */ - this._trigger = typeof this._config['trigger'] == 'string' ? - $(this._config['trigger'])[0] : this._config['trigger'] - - /** @private {boolean} */ - this._isTransitioning = false - - /** @private {?Element} */ - this._parent = this._config['parent'] ? this._getParent() : null - - if (!this._config['parent']) { - this._addAriaAndCollapsedClass(this._element, this._trigger) - } - - if (this._config['toggle']) { - this['toggle']() - } - -} - - -/** - * @const - * @type {string} - */ -Collapse['VERSION'] = '4.0.0' - - -/** - * @const - * @type {Object} - */ -Collapse['Defaults'] = { - 'toggle' : true, - 'trigger' : '[data-toggle="collapse"]', - 'parent' : null -} - - -/** - * @const - * @type {string} - * @private - */ -Collapse._NAME = 'collapse' - - -/** - * @const - * @type {string} - * @private - */ -Collapse._DATA_KEY = 'bs.collapse' - - -/** - * @const - * @type {number} - * @private - */ -Collapse._TRANSITION_DURATION = 600 - - -/** - * @const - * @type {Function} - * @private + * -------------------------------------------------------------------------- */ -Collapse._JQUERY_NO_CONFLICT = $.fn[Collapse._NAME] - -/** - * @const - * @enum {string} - * @private - */ -Collapse._Event = { - SHOW : 'show.bs.collapse', - SHOWN : 'shown.bs.collapse', - HIDE : 'hide.bs.collapse', - HIDDEN : 'hidden.bs.collapse' -} +var Alert = (function ($) { + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ -/** - * @const - * @enum {string} - * @private - */ -Collapse._ClassName = { - IN : 'in', - COLLAPSE : 'collapse', - COLLAPSING : 'collapsing', - COLLAPSED : 'collapsed' -} - - -/** - * @const - * @enum {string} - * @private - */ -Collapse._Dimension = { - WIDTH : 'width', - HEIGHT : 'height' -} + var NAME = 'alert'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.alert'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 150; + var Selector = { + DISMISS: '[data-dismiss="alert"]' + }; -/** - * @const - * @enum {string} - * @private - */ -Collapse._Selector = { - ACTIVES : '.panel > .in, .panel > .collapsing' -} + var Event = { + CLOSE: 'close' + EVENT_KEY, + CLOSED: 'closed' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + '' + DATA_API_KEY + }; + var ClassName = { + ALERT: 'alert', + FADE: 'fade', + IN: 'in' + }; -/** - * Provides the jQuery Interface for the alert component. - * @param {Object|string=} opt_config - * @this {jQuery} - * @return {jQuery} - * @private - */ -Collapse._jQueryInterface = function (opt_config) { - return this.each(function () { - var $this = $(this) - var data = $this.data(Collapse._DATA_KEY) - var config = $.extend({}, Collapse['Defaults'], $this.data(), typeof opt_config == 'object' && opt_config) - - if (!data && config['toggle'] && opt_config == 'show') { - config['toggle'] = false - } + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ - if (!data) { - data = new Collapse(this, config) - $this.data(Collapse._DATA_KEY, data) - } + var Alert = (function () { + function Alert(element) { + _classCallCheck(this, Alert); - if (typeof opt_config == 'string') { - data[opt_config]() + this._element = element; } - }) -} + _createClass(Alert, [{ + key: 'close', -/** - * Function for getting target element from element - * @return {Element} - * @private - */ -Collapse._getTargetFromElement = function (element) { - var selector = Bootstrap.getSelectorFromElement(element) + // public - return selector ? $(selector)[0] : null -} + value: function close(element) { + element = element || this._element; + var rootElement = this._getRootElement(element); + var customEvent = this._triggerCloseEvent(rootElement); -/** - * Toggles the collapse element based on the presence of the 'in' class - */ -Collapse.prototype['toggle'] = function () { - if ($(this._element).hasClass(Collapse._ClassName.IN)) { - this['hide']() - } else { - this['show']() - } -} - + if (customEvent.isDefaultPrevented()) { + return; + } -/** - * Show's the collapsing element - */ -Collapse.prototype['show'] = function () { - if (this._isTransitioning || $(this._element).hasClass(Collapse._ClassName.IN)) { - return - } + this._removeElement(rootElement); + } + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + this._element = null; + } + }, { + key: '_getRootElement', - var activesData, actives + // private - if (this._parent) { - actives = $.makeArray($(Collapse._Selector.ACTIVES)) - if (!actives.length) { - actives = null - } - } + value: function _getRootElement(element) { + var parent = false; + var selector = Util.getSelectorFromElement(element); - if (actives) { - activesData = $(actives).data(Collapse._DATA_KEY) - if (activesData && activesData._isTransitioning) { - return - } - } + if (selector) { + parent = $(selector)[0]; + } - var startEvent = $.Event(Collapse._Event.SHOW) - $(this._element).trigger(startEvent) - if (startEvent.isDefaultPrevented()) { - return - } + if (!parent) { + parent = $(element).closest('.' + ClassName.ALERT)[0]; + } - if (actives) { - Collapse._jQueryInterface.call($(actives), 'hide') - if (!activesData) { - $(actives).data(Collapse._DATA_KEY, null) - } - } + return parent; + } + }, { + key: '_triggerCloseEvent', + value: function _triggerCloseEvent(element) { + var closeEvent = $.Event(Event.CLOSE); + $(element).trigger(closeEvent); + return closeEvent; + } + }, { + key: '_removeElement', + value: function _removeElement(element) { + $(element).removeClass(ClassName.IN); + + if (!Util.supportsTransitionEnd() || !$(element).hasClass(ClassName.FADE)) { + this._destroyElement(element); + return; + } - var dimension = this._getDimension() + $(element).one(Util.TRANSITION_END, this._destroyElement.bind(this, element)).emulateTransitionEnd(TRANSITION_DURATION); + } + }, { + key: '_destroyElement', + value: function _destroyElement(element) { + $(element).detach().trigger(Event.CLOSED).remove(); + } + }], [{ + key: 'VERSION', - $(this._element) - .removeClass(Collapse._ClassName.COLLAPSE) - .addClass(Collapse._ClassName.COLLAPSING) + // getters - this._element.style[dimension] = 0 - this._element.setAttribute('aria-expanded', true) + get: function () { + return VERSION; + } + }, { + key: '_jQueryInterface', - if (this._trigger) { - $(this._trigger).removeClass(Collapse._ClassName.COLLAPSED) - this._trigger.setAttribute('aria-expanded', true) - } + // static - this['setTransitioning'](true) + value: function _jQueryInterface(config) { + return this.each(function () { + var $element = $(this); + var data = $element.data(DATA_KEY); - var complete = function () { - $(this._element) - .removeClass(Collapse._ClassName.COLLAPSING) - .addClass(Collapse._ClassName.COLLAPSE) - .addClass(Collapse._ClassName.IN) + if (!data) { + data = new Alert(this); + $element.data(DATA_KEY, data); + } - this._element.style[dimension] = '' + if (config === 'close') { + data[config](this); + } + }); + } + }, { + key: '_handleDismiss', + value: function _handleDismiss(alertInstance) { + return function (event) { + if (event) { + event.preventDefault(); + } - this['setTransitioning'](false) + alertInstance.close(this); + }; + } + }]); - $(this._element).trigger(Collapse._Event.SHOWN) - }.bind(this) + return Alert; + })(); - if (!Bootstrap.transition) { - complete() - return - } + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ - var scrollSize = 'scroll' + (dimension[0].toUpperCase() + dimension.slice(1)) + $(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert())); - $(this._element) - .one(Bootstrap.TRANSITION_END, complete) - .emulateTransitionEnd(Collapse._TRANSITION_DURATION) + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ - this._element.style[dimension] = this._element[scrollSize] + 'px' -} + $.fn[NAME] = Alert._jQueryInterface; + $.fn[NAME].Constructor = Alert; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Alert._jQueryInterface; + }; + return Alert; +})(jQuery); /** - * Hides's the collapsing element - */ -Collapse.prototype['hide'] = function () { - if (this._isTransitioning || !$(this._element).hasClass(Collapse._ClassName.IN)) { - return - } - - var startEvent = $.Event(Collapse._Event.HIDE) - $(this._element).trigger(startEvent) - if (startEvent.isDefaultPrevented()) return - - var dimension = this._getDimension() - var offsetDimension = dimension === Collapse._Dimension.WIDTH ? - 'offsetWidth' : 'offsetHeight' - - this._element.style[dimension] = this._element[offsetDimension] + 'px' - - Bootstrap.reflow(this._element) - - $(this._element) - .addClass(Collapse._ClassName.COLLAPSING) - .removeClass(Collapse._ClassName.COLLAPSE) - .removeClass(Collapse._ClassName.IN) - - this._element.setAttribute('aria-expanded', false) - - if (this._trigger) { - $(this._trigger).addClass(Collapse._ClassName.COLLAPSED) - this._trigger.setAttribute('aria-expanded', false) - } - - this['setTransitioning'](true) - - var complete = function () { - this['setTransitioning'](false) - $(this._element) - .removeClass(Collapse._ClassName.COLLAPSING) - .addClass(Collapse._ClassName.COLLAPSE) - .trigger(Collapse._Event.HIDDEN) - - }.bind(this) - - this._element.style[dimension] = 0 - - if (!Bootstrap.transition) { - return complete() - } + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): button.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Button = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'button'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.button'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 150; + + var ClassName = { + ACTIVE: 'active', + BUTTON: 'btn', + FOCUS: 'focus' + }; + + var Selector = { + DATA_TOGGLE_CARROT: '[data-toggle^="button"]', + DATA_TOGGLE: '[data-toggle="buttons"]', + INPUT: 'input', + ACTIVE: '.active', + BUTTON: '.btn' + }; + + var Event = { + CLICK_DATA_API: 'click' + EVENT_KEY + '' + DATA_API_KEY, + FOCUS_BLUR_DATA_API: 'focus' + EVENT_KEY + '' + DATA_API_KEY + ' ' + ('blur' + EVENT_KEY + '' + DATA_API_KEY) + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Button = (function () { + function Button(element) { + _classCallCheck(this, Button); + + this._element = element; + } + + _createClass(Button, [{ + key: 'toggle', + + // public + + value: function toggle() { + var triggerChangeEvent = true; + var rootElement = $(this._element).closest(Selector.DATA_TOGGLE)[0]; + + if (rootElement) { + var input = $(this._element).find(Selector.INPUT)[0]; + + if (input) { + if (input.type === 'radio') { + if (input.checked && $(this._element).hasClass(ClassName.ACTIVE)) { + triggerChangeEvent = false; + } else { + var activeElement = $(rootElement).find(Selector.ACTIVE)[0]; + + if (activeElement) { + $(activeElement).removeClass(ClassName.ACTIVE); + } + } + } + + if (triggerChangeEvent) { + input.checked = !$(this._element).hasClass(ClassName.ACTIVE); + $(this._element).trigger('change'); + } + } + } else { + this._element.setAttribute('aria-pressed', !$(this._element).hasClass(ClassName.ACTIVE)); + } - $(this._element) - .one(Bootstrap.TRANSITION_END, complete) - .emulateTransitionEnd(Collapse._TRANSITION_DURATION) -} + if (triggerChangeEvent) { + $(this._element).toggleClass(ClassName.ACTIVE); + } + } + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + this._element = null; + } + }], [{ + key: 'VERSION', + // getters + get: function () { + return VERSION; + } + }, { + key: '_jQueryInterface', -/** - * @param {boolean} isTransitioning - */ -Collapse.prototype['setTransitioning'] = function (isTransitioning) { - this._isTransitioning = isTransitioning -} + // static + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); -/** - * Returns the collapsing dimension - * @return {string} - * @private - */ -Collapse.prototype._getDimension = function () { - var hasWidth = $(this._element).hasClass(Collapse._Dimension.WIDTH) - return hasWidth ? Collapse._Dimension.WIDTH : Collapse._Dimension.HEIGHT -} + if (!data) { + data = new Button(this); + $(this).data(DATA_KEY, data); + } + if (config === 'toggle') { + data[config](); + } + }); + } + }]); -/** - * Returns the parent element - * @return {Element} - * @private - */ -Collapse.prototype._getParent = function () { - var selector = '[data-toggle="collapse"][data-parent="' + this._config['parent'] + '"]' - var parent = $(this._config['parent'])[0] - var elements = /** @type {Array.<Element>} */ ($.makeArray($(parent).find(selector))) + return Button; + })(); - for (var i = 0; i < elements.length; i++) { - this._addAriaAndCollapsedClass(Collapse._getTargetFromElement(elements[i]), elements[i]) - } + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ - return parent -} + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) { + event.preventDefault(); + var button = event.target; -/** - * Returns the parent element - * @param {Element} element - * @param {Element} trigger - * @private - */ -Collapse.prototype._addAriaAndCollapsedClass = function (element, trigger) { - if (element) { - var isOpen = $(element).hasClass(Collapse._ClassName.IN) - element.setAttribute('aria-expanded', isOpen) - - if (trigger) { - trigger.setAttribute('aria-expanded', isOpen) - $(trigger).toggleClass(Collapse._ClassName.COLLAPSED, !isOpen) + if (!$(button).hasClass(ClassName.BUTTON)) { + button = $(button).closest(Selector.BUTTON); } - } -} + Button._jQueryInterface.call($(button), 'toggle'); + }).on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) { + var button = $(event.target).closest(Selector.BUTTON)[0]; + $(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type)); + }); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ -/** - * ------------------------------------------------------------------------ - * jQuery Interface + noConflict implementaiton - * ------------------------------------------------------------------------ - */ - -/** - * @const - * @type {Function} - */ -$.fn[Collapse._NAME] = Collapse._jQueryInterface - - -/** - * @const - * @type {Function} - */ -$.fn[Collapse._NAME]['Constructor'] = Collapse - - -/** - * @const - * @type {Function} - */ -$.fn[Collapse._NAME]['noConflict'] = function () { - $.fn[Collapse._NAME] = Collapse._JQUERY_NO_CONFLICT - return this -} + $.fn[NAME] = Button._jQueryInterface; + $.fn[NAME].Constructor = Button; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Button._jQueryInterface; + }; + return Button; +})(jQuery); /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - -$(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (event) { - event.preventDefault() - - var target = Collapse._getTargetFromElement(this) - - var data = $(target).data(Collapse._DATA_KEY) - var config = data ? 'toggle' : $.extend({}, $(this).data(), { trigger: this }) - - Collapse._jQueryInterface.call($(target), config) -}) - -/** ======================================================================= - * Bootstrap: dropdown.js v4.0.0 - * http://getbootstrap.com/javascript/#dropdown - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): carousel.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== - * @fileoverview - Add dropdown menus to nearly anything with this simple - * plugin, including the navbar, tabs, and pills. - * - * Public Methods & Properties: - * - * + $.dropdown - * + $.dropdown.noConflict - * + $.dropdown.Constructor - * + $.dropdown.Constructor.VERSION - * + $.dropdown.Constructor.prototype.toggle - * - * ======================================================================== - */ - -'use strict'; - - -/** - * Our dropdown class. - * @param {Element!} element - * @constructor - */ -var Dropdown = function (element) { - $(element).on('click.bs.dropdown', this['toggle']) -} + * -------------------------------------------------------------------------- + */ + +var Carousel = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'carousel'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.carousel'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 600; + + var Default = { + interval: 5000, + keyboard: true, + slide: false, + pause: 'hover', + wrap: true + }; + + var DefaultType = { + interval: '(number|boolean)', + keyboard: 'boolean', + slide: '(boolean|string)', + pause: '(string|boolean)', + wrap: 'boolean' + }; + + var Direction = { + NEXT: 'next', + PREVIOUS: 'prev' + }; + + var Event = { + SLIDE: 'slide' + EVENT_KEY, + SLID: 'slid' + EVENT_KEY, + KEYDOWN: 'keydown' + EVENT_KEY, + MOUSEENTER: 'mouseenter' + EVENT_KEY, + MOUSELEAVE: 'mouseleave' + EVENT_KEY, + LOAD_DATA_API: 'load' + EVENT_KEY + '' + DATA_API_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + '' + DATA_API_KEY + }; + + var ClassName = { + CAROUSEL: 'carousel', + ACTIVE: 'active', + SLIDE: 'slide', + RIGHT: 'right', + LEFT: 'left', + ITEM: 'carousel-item' + }; + + var Selector = { + ACTIVE: '.active', + ACTIVE_ITEM: '.active.carousel-item', + ITEM: '.carousel-item', + NEXT_PREV: '.next, .prev', + INDICATORS: '.carousel-indicators', + DATA_SLIDE: '[data-slide], [data-slide-to]', + DATA_RIDE: '[data-ride="carousel"]' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Carousel = (function () { + function Carousel(element, config) { + _classCallCheck(this, Carousel); + + this._items = null; + this._interval = null; + this._activeElement = null; + + this._isPaused = false; + this._isSliding = false; + + this._config = this._getConfig(config); + this._element = $(element)[0]; + this._indicatorsElement = $(this._element).find(Selector.INDICATORS)[0]; + + this._addEventListeners(); + } + + _createClass(Carousel, [{ + key: 'next', + + // public + + value: function next() { + if (!this._isSliding) { + this._slide(Direction.NEXT); + } + } + }, { + key: 'prev', + value: function prev() { + if (!this._isSliding) { + this._slide(Direction.PREVIOUS); + } + } + }, { + key: 'pause', + value: function pause(event) { + if (!event) { + this._isPaused = true; + } + if ($(this._element).find(Selector.NEXT_PREV)[0] && Util.supportsTransitionEnd()) { + Util.triggerTransitionEnd(this._element); + this.cycle(true); + } -/** - * @const - * @type {string} - */ -Dropdown['VERSION'] = '4.0.0' + clearInterval(this._interval); + this._interval = null; + } + }, { + key: 'cycle', + value: function cycle(event) { + if (!event) { + this._isPaused = false; + } + if (this._interval) { + clearInterval(this._interval); + this._interval = null; + } -/** - * @const - * @type {string} - * @private - */ -Dropdown._NAME = 'dropdown' + if (this._config.interval && !this._isPaused) { + this._interval = setInterval($.proxy(this.next, this), this._config.interval); + } + } + }, { + key: 'to', + value: function to(index) { + var _this2 = this; + this._activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0]; -/** - * @const - * @type {string} - * @private - */ -Dropdown._DATA_KEY = 'bs.dropdown' + var activeIndex = this._getItemIndex(this._activeElement); + if (index > this._items.length - 1 || index < 0) { + return; + } -/** - * @const - * @type {Function} - * @private - */ -Dropdown._JQUERY_NO_CONFLICT = $.fn[Dropdown._NAME] + if (this._isSliding) { + $(this._element).one(Event.SLID, function () { + return _this2.to(index); + }); + return; + } + if (activeIndex == index) { + this.pause(); + this.cycle(); + return; + } -/** - * @const - * @enum {string} - * @private - */ -Dropdown._Event = { - HIDE : 'hide.bs.dropdown', - HIDDEN : 'hidden.bs.dropdown', - SHOW : 'show.bs.dropdown', - SHOWN : 'shown.bs.dropdown' -} + var direction = index > activeIndex ? Direction.NEXT : Direction.PREVIOUS; + this._slide(direction, this._items[index]); + } + }, { + key: 'dispose', + value: function dispose() { + $(this._element).off(EVENT_KEY); + $.removeData(this._element, DATA_KEY); + + this._items = null; + this._config = null; + this._element = null; + this._interval = null; + this._isPaused = null; + this._isSliding = null; + this._activeElement = null; + this._indicatorsElement = null; + } + }, { + key: '_getConfig', -/** - * @const - * @enum {string} - * @private - */ -Dropdown._ClassName = { - BACKDROP : 'dropdown-backdrop', - DISABLED : 'disabled', - OPEN : 'open' -} + // private + value: function _getConfig(config) { + config = $.extend({}, Default, config); + Util.typeCheckConfig(NAME, config, DefaultType); + return config; + } + }, { + key: '_addEventListeners', + value: function _addEventListeners() { + if (this._config.keyboard) { + $(this._element).on(Event.KEYDOWN, $.proxy(this._keydown, this)); + } -/** - * @const - * @enum {string} - * @private - */ -Dropdown._Selector = { - BACKDROP : '.dropdown-backdrop', - DATA_TOGGLE : '[data-toggle="dropdown"]', - FORM_CHILD : '.dropdown form', - ROLE_MENU : '[role="menu"]', - ROLE_LISTBOX : '[role="listbox"]', - NAVBAR_NAV : '.navbar-nav', - VISIBLE_ITEMS : '[role="menu"] li:not(.divider) a, [role="listbox"] li:not(.divider) a' -} + if (this._config.pause == 'hover' && !('ontouchstart' in document.documentElement)) { + $(this._element).on(Event.MOUSEENTER, $.proxy(this.pause, this)).on(Event.MOUSELEAVE, $.proxy(this.cycle, this)); + } + } + }, { + key: '_keydown', + value: function _keydown(event) { + event.preventDefault(); + + if (/input|textarea/i.test(event.target.tagName)) return; + + switch (event.which) { + case 37: + this.prev();break; + case 39: + this.next();break; + default: + return; + } + } + }, { + key: '_getItemIndex', + value: function _getItemIndex(element) { + this._items = $.makeArray($(element).parent().find(Selector.ITEM)); + return this._items.indexOf(element); + } + }, { + key: '_getItemByDirection', + value: function _getItemByDirection(direction, activeElement) { + var isNextDirection = direction === Direction.NEXT; + var isPrevDirection = direction === Direction.PREVIOUS; + var activeIndex = this._getItemIndex(activeElement); + var lastItemIndex = this._items.length - 1; + var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex == lastItemIndex; + + if (isGoingToWrap && !this._config.wrap) { + return activeElement; + } + var delta = direction == Direction.PREVIOUS ? -1 : 1; + var itemIndex = (activeIndex + delta) % this._items.length; -/** - * Provides the jQuery Interface for the alert component. - * @param {string=} opt_config - * @this {jQuery} - * @return {jQuery} - * @private - */ -Dropdown._jQueryInterface = function (opt_config) { - return this.each(function () { - var data = $(this).data(Dropdown._DATA_KEY) + return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex]; + } + }, { + key: '_triggerSlideEvent', + value: function _triggerSlideEvent(relatedTarget, directionalClassname) { + var slideEvent = $.Event(Event.SLIDE, { + relatedTarget: relatedTarget, + direction: directionalClassname + }); - if (!data) { - $(this).data(Dropdown._DATA_KEY, (data = new Dropdown(this))) - } + $(this._element).trigger(slideEvent); - if (typeof opt_config === 'string') { - data[opt_config].call(this) - } - }) -} + return slideEvent; + } + }, { + key: '_setActiveIndicatorElement', + value: function _setActiveIndicatorElement(element) { + if (this._indicatorsElement) { + $(this._indicatorsElement).find(Selector.ACTIVE).removeClass(ClassName.ACTIVE); + var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)]; -/** - * @param {Event=} opt_event - * @private - */ -Dropdown._clearMenus = function (opt_event) { - if (opt_event && opt_event.which == 3) { - return - } + if (nextIndicator) { + $(nextIndicator).addClass(ClassName.ACTIVE); + } + } + } + }, { + key: '_slide', + value: function _slide(direction, element) { + var _this3 = this; - var backdrop = $(Dropdown._Selector.BACKDROP)[0] - if (backdrop) { - backdrop.parentNode.removeChild(backdrop) - } + var activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0]; + var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement); - var toggles = /** @type {Array.<Element>} */ ($.makeArray($(Dropdown._Selector.DATA_TOGGLE))) + var isCycling = !!this._interval; - for (var i = 0; i < toggles.length; i++) { - var parent = Dropdown._getParentFromElement(toggles[i]) - var relatedTarget = { 'relatedTarget': toggles[i] } + var directionalClassName = direction == Direction.NEXT ? ClassName.LEFT : ClassName.RIGHT; - if (!$(parent).hasClass(Dropdown._ClassName.OPEN)) { - continue - } + if (nextElement && $(nextElement).hasClass(ClassName.ACTIVE)) { + this._isSliding = false; + return; + } - var hideEvent = $.Event(Dropdown._Event.HIDE, relatedTarget) - $(parent).trigger(hideEvent) - if (hideEvent.isDefaultPrevented()) { - continue - } + var slideEvent = this._triggerSlideEvent(nextElement, directionalClassName); + if (slideEvent.isDefaultPrevented()) { + return; + } - toggles[i].setAttribute('aria-expanded', 'false') + if (!activeElement || !nextElement) { + // some weirdness is happening, so we bail + return; + } - $(parent) - .removeClass(Dropdown._ClassName.OPEN) - .trigger(Dropdown._Event.HIDDEN, relatedTarget) - } -} + this._isSliding = true; + if (isCycling) { + this.pause(); + } -/** - * @param {Element} element - * @return {Element} - * @private - */ -Dropdown._getParentFromElement = function (element) { - var selector = Bootstrap.getSelectorFromElement(element) + this._setActiveIndicatorElement(nextElement); - if (selector) { - var parent = $(selector)[0] - } + var slidEvent = $.Event(Event.SLID, { + relatedTarget: nextElement, + direction: directionalClassName + }); - return /** @type {Element} */ (parent || element.parentNode) -} + if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.SLIDE)) { + $(nextElement).addClass(direction); -/** - * @param {Event} event - * @this {Element} - * @private - */ -Dropdown._dataApiKeydownHandler = function (event) { - if (!/(38|40|27|32)/.test(event.which) || /input|textarea/i.test(event.target.tagName)) { - return - } + Util.reflow(nextElement); - event.preventDefault() - event.stopPropagation() + $(activeElement).addClass(directionalClassName); + $(nextElement).addClass(directionalClassName); - if (this.disabled || $(this).hasClass(Dropdown._ClassName.DISABLED)) { - return - } + $(activeElement).one(Util.TRANSITION_END, function () { + $(nextElement).removeClass(directionalClassName).removeClass(direction); - var parent = Dropdown._getParentFromElement(this) - var isActive = $(parent).hasClass(Dropdown._ClassName.OPEN) + $(nextElement).addClass(ClassName.ACTIVE); - if ((!isActive && event.which != 27) || (isActive && event.which == 27)) { - if (event.which == 27) { - var toggle = $(parent).find(Dropdown._Selector.DATA_TOGGLE)[0] - $(toggle).trigger('focus') - } - $(this).trigger('click') - return - } + $(activeElement).removeClass(ClassName.ACTIVE).removeClass(direction).removeClass(directionalClassName); - var items = $.makeArray($(Dropdown._Selector.VISIBLE_ITEMS)) + _this3._isSliding = false; - items = items.filter(function (item) { - return item.offsetWidth || item.offsetHeight - }) + setTimeout(function () { + return $(_this3._element).trigger(slidEvent); + }, 0); + }).emulateTransitionEnd(TRANSITION_DURATION); + } else { + $(activeElement).removeClass(ClassName.ACTIVE); + $(nextElement).addClass(ClassName.ACTIVE); - if (!items.length) { - return - } + this._isSliding = false; + $(this._element).trigger(slidEvent); + } - var index = items.indexOf(event.target) + if (isCycling) { + this.cycle(); + } + } + }], [{ + key: 'VERSION', - if (event.which == 38 && index > 0) index-- // up - if (event.which == 40 && index < items.length - 1) index++ // down - if (!~index) index = 0 + // getters - items[index].focus() -} + get: function () { + return VERSION; + } + }, { + key: 'Default', + get: function () { + return Default; + } + }, { + key: '_jQueryInterface', + // static -/** - * Toggles the dropdown - * @this {Element} - * @return {boolean|undefined} - */ -Dropdown.prototype['toggle'] = function () { - if (this.disabled || $(this).hasClass(Dropdown._ClassName.DISABLED)) { - return - } + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = $.extend({}, Default, $(this).data()); - var parent = Dropdown._getParentFromElement(this) - var isActive = $(parent).hasClass(Dropdown._ClassName.OPEN) + if (typeof config === 'object') { + $.extend(_config, config); + } - Dropdown._clearMenus() + var action = typeof config === 'string' ? config : _config.slide; - if (isActive) { - return false - } + if (!data) { + data = new Carousel(this, _config); + $(this).data(DATA_KEY, data); + } - if ('ontouchstart' in document.documentElement && !$(parent).closest(Dropdown._Selector.NAVBAR_NAV).length) { - // if mobile we use a backdrop because click events don't delegate - var dropdown = document.createElement('div') - dropdown.className = Dropdown._ClassName.BACKDROP - this.parentNode.insertBefore(this, dropdown) - $(dropdown).on('click', Dropdown._clearMenus) - } + if (typeof config == 'number') { + data.to(config); + } else if (action) { + data[action](); + } else if (_config.interval) { + data.pause(); + data.cycle(); + } + }); + } + }, { + key: '_dataApiClickHandler', + value: function _dataApiClickHandler(event) { + var selector = Util.getSelectorFromElement(this); - var relatedTarget = { 'relatedTarget': this } - var showEvent = $.Event(Dropdown._Event.SHOW, relatedTarget) + if (!selector) { + return; + } - $(parent).trigger(showEvent) + var target = $(selector)[0]; - if (showEvent.isDefaultPrevented()) { - return - } + if (!target || !$(target).hasClass(ClassName.CAROUSEL)) { + return; + } - this.focus() - this.setAttribute('aria-expanded', 'true') + var config = $.extend({}, $(target).data(), $(this).data()); - $(parent).toggleClass(Dropdown._ClassName.OPEN) + var slideIndex = this.getAttribute('data-slide-to'); + if (slideIndex) { + config.interval = false; + } - $(parent).trigger(Dropdown._Event.SHOWN, relatedTarget) + Carousel._jQueryInterface.call($(target), config); - return false -} + if (slideIndex) { + $(target).data(DATA_KEY).to(slideIndex); + } + event.preventDefault(); + } + }]); -/** - * ------------------------------------------------------------------------ - * jQuery Interface + noConflict implementaiton - * ------------------------------------------------------------------------ - */ + return Carousel; + })(); -/** - * @const - * @type {Function} - */ -$.fn[Dropdown._NAME] = Dropdown._jQueryInterface + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + $(document).on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler); -/** - * @const - * @type {Function} - */ -$.fn[Dropdown._NAME]['Constructor'] = Dropdown + $(window).on(Event.LOAD_DATA_API, function () { + $(Selector.DATA_RIDE).each(function () { + var $carousel = $(this); + Carousel._jQueryInterface.call($carousel, $carousel.data()); + }); + }); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ -/** - * @const - * @type {Function} - */ -$.fn[Dropdown._NAME]['noConflict'] = function () { - $.fn[Dropdown._NAME] = Dropdown._JQUERY_NO_CONFLICT - return this -} + $.fn[NAME] = Carousel._jQueryInterface; + $.fn[NAME].Constructor = Carousel; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Carousel._jQueryInterface; + }; + return Carousel; +})(jQuery); /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - -$(document) - .on('click.bs.dropdown.data-api', Dropdown._clearMenus) - .on('click.bs.dropdown.data-api', Dropdown._Selector.FORM_CHILD, function (e) { e.stopPropagation() }) - .on('click.bs.dropdown.data-api', Dropdown._Selector.DATA_TOGGLE, Dropdown.prototype['toggle']) - .on('keydown.bs.dropdown.data-api', Dropdown._Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler) - .on('keydown.bs.dropdown.data-api', Dropdown._Selector.ROLE_MENU, Dropdown._dataApiKeydownHandler) - .on('keydown.bs.dropdown.data-api', Dropdown._Selector.ROLE_LISTBOX, Dropdown._dataApiKeydownHandler) - -/** ======================================================================= - * Bootstrap: modal.js v4.0.0 - * http://getbootstrap.com/javascript/#modal - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): collapse.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== - * @fileoverview - Bootstrap's modal plugin. Modals are streamlined, but - * flexible, dialog prompts with the minimum required functionality and - * smart defaults. - * - * Public Methods & Properties: - * - * + $.modal - * + $.modal.noConflict - * + $.modal.Constructor - * + $.modal.Constructor.VERSION - * + $.modal.Constructor.Defaults - * + $.modal.Constructor.Defaults.backdrop - * + $.modal.Constructor.Defaults.keyboard - * + $.modal.Constructor.Defaults.show - * + $.modal.Constructor.prototype.toggle - * + $.modal.Constructor.prototype.show - * + $.modal.Constructor.prototype.hide - * - * ======================================================================== - */ - -'use strict'; - - -/** - * Our modal class. - * @param {Element} element - * @param {Object} config - * @constructor - */ -var Modal = function (element, config) { + * -------------------------------------------------------------------------- + */ + +var Collapse = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'collapse'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.collapse'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 600; + + var Default = { + toggle: true, + parent: '' + }; + + var DefaultType = { + toggle: 'boolean', + parent: 'string' + }; + + var Event = { + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + '' + DATA_API_KEY + }; + + var ClassName = { + IN: 'in', + COLLAPSE: 'collapse', + COLLAPSING: 'collapsing', + COLLAPSED: 'collapsed' + }; + + var Dimension = { + WIDTH: 'width', + HEIGHT: 'height' + }; + + var Selector = { + ACTIVES: '.panel > .in, .panel > .collapsing', + DATA_TOGGLE: '[data-toggle="collapse"]' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Collapse = (function () { + function Collapse(element, config) { + _classCallCheck(this, Collapse); + + this._isTransitioning = false; + this._element = element; + this._config = this._getConfig(config); + this._triggerArray = $.makeArray($('[data-toggle="collapse"][href="#' + element.id + '"],' + ('[data-toggle="collapse"][data-target="#' + element.id + '"]'))); + + this._parent = this._config.parent ? this._getParent() : null; + + if (!this._config.parent) { + this._addAriaAndCollapsedClass(this._element, this._triggerArray); + } - /** @private {Object} */ - this._config = config + if (this._config.toggle) { + this.toggle(); + } + } - /** @private {Element} */ - this._element = element + _createClass(Collapse, [{ + key: 'toggle', - /** @private {Element} */ - this._backdrop = null + // public - /** @private {boolean} */ - this._isShown = false + value: function toggle() { + if ($(this._element).hasClass(ClassName.IN)) { + this.hide(); + } else { + this.show(); + } + } + }, { + key: 'show', + value: function show() { + var _this4 = this; - /** @private {boolean} */ - this._isBodyOverflowing = false + if (this._isTransitioning || $(this._element).hasClass(ClassName.IN)) { + return; + } - /** @private {number} */ - this._scrollbarWidth = 0 + var actives = undefined; + var activesData = undefined; -} + if (this._parent) { + actives = $.makeArray($(Selector.ACTIVES)); + if (!actives.length) { + actives = null; + } + } + if (actives) { + activesData = $(actives).data(DATA_KEY); + if (activesData && activesData._isTransitioning) { + return; + } + } -/** - * @const - * @type {string} - */ -Modal['VERSION'] = '4.0.0' + var startEvent = $.Event(Event.SHOW); + $(this._element).trigger(startEvent); + if (startEvent.isDefaultPrevented()) { + return; + } + if (actives) { + Collapse._jQueryInterface.call($(actives), 'hide'); + if (!activesData) { + $(actives).data(DATA_KEY, null); + } + } -/** - * @const - * @type {Object} - */ -Modal['Defaults'] = { - 'backdrop' : true, - 'keyboard' : true, - 'show' : true -} + var dimension = this._getDimension(); + $(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING); -/** - * @const - * @type {string} - * @private - */ -Modal._NAME = 'modal' + this._element.style[dimension] = 0; + this._element.setAttribute('aria-expanded', true); + if (this._triggerArray.length) { + $(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true); + } -/** - * @const - * @type {string} - * @private - */ -Modal._DATA_KEY = 'bs.modal' + this.setTransitioning(true); + var complete = function complete() { + $(_this4._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).addClass(ClassName.IN); -/** - * @const - * @type {number} - * @private - */ -Modal._TRANSITION_DURATION = 300 + _this4._element.style[dimension] = ''; + _this4.setTransitioning(false); -/** - * @const - * @type {number} - * @private - */ -Modal._BACKDROP_TRANSITION_DURATION = 150 + $(_this4._element).trigger(Event.SHOWN); + }; + if (!Util.supportsTransitionEnd()) { + complete(); + return; + } -/** - * @const - * @type {Function} - * @private - */ -Modal._JQUERY_NO_CONFLICT = $.fn[Modal._NAME] + var scrollSize = 'scroll' + (dimension[0].toUpperCase() + dimension.slice(1)); + $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); -/** - * @const - * @enum {string} - * @private - */ -Modal._Event = { - HIDE : 'hide.bs.modal', - HIDDEN : 'hidden.bs.modal', - SHOW : 'show.bs.modal', - SHOWN : 'shown.bs.modal' -} + this._element.style[dimension] = this._element[scrollSize] + 'px'; + } + }, { + key: 'hide', + value: function hide() { + var _this5 = this; + if (this._isTransitioning || !$(this._element).hasClass(ClassName.IN)) { + return; + } -/** - * @const - * @enum {string} - * @private - */ -Modal._ClassName = { - BACKDROP : 'modal-backdrop', - OPEN : 'modal-open', - FADE : 'fade', - IN : 'in' -} + var startEvent = $.Event(Event.HIDE); + $(this._element).trigger(startEvent); + if (startEvent.isDefaultPrevented()) { + return; + } + var dimension = this._getDimension(); + var offsetDimension = dimension === Dimension.WIDTH ? 'offsetWidth' : 'offsetHeight'; -/** - * @const - * @enum {string} - * @private - */ -Modal._Selector = { - DIALOG : '.modal-dialog', - DATA_TOGGLE : '[data-toggle="modal"]', - DATA_DISMISS : '[data-dismiss="modal"]', - SCROLLBAR_MEASURER : 'modal-scrollbar-measure' -} + this._element.style[dimension] = this._element[offsetDimension] + 'px'; + Util.reflow(this._element); + $(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.IN); -/** - * Provides the jQuery Interface for the alert component. - * @param {Object|string=} opt_config - * @param {Element=} opt_relatedTarget - * @this {jQuery} - * @return {jQuery} - * @private - */ -Modal._jQueryInterface = function Plugin(opt_config, opt_relatedTarget) { - return this.each(function () { - var data = $(this).data(Modal._DATA_KEY) - var config = $.extend({}, Modal['Defaults'], $(this).data(), typeof opt_config == 'object' && opt_config) - - if (!data) { - data = new Modal(this, config) - $(this).data(Modal._DATA_KEY, data) - } + this._element.setAttribute('aria-expanded', false); - if (typeof opt_config == 'string') { - data[opt_config](opt_relatedTarget) + if (this._triggerArray.length) { + $(this._triggerArray).addClass(ClassName.COLLAPSED).attr('aria-expanded', false); + } - } else if (config['show']) { - data['show'](opt_relatedTarget) - } - }) -} + this.setTransitioning(true); + var complete = function complete() { + _this5.setTransitioning(false); + $(_this5._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).trigger(Event.HIDDEN); + }; -/** - * @param {Element} relatedTarget - */ -Modal.prototype['toggle'] = function (relatedTarget) { - return this._isShown ? this['hide']() : this['show'](relatedTarget) -} + this._element.style[dimension] = 0; + if (!Util.supportsTransitionEnd()) { + return complete(); + } -/** - * @param {Element} relatedTarget - */ -Modal.prototype['show'] = function (relatedTarget) { - var showEvent = $.Event(Modal._Event.SHOW, { relatedTarget: relatedTarget }) + $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + } + }, { + key: 'setTransitioning', + value: function setTransitioning(isTransitioning) { + this._isTransitioning = isTransitioning; + } + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + + this._config = null; + this._parent = null; + this._element = null; + this._triggerArray = null; + this._isTransitioning = null; + } + }, { + key: '_getConfig', - $(this._element).trigger(showEvent) + // private - if (this._isShown || showEvent.isDefaultPrevented()) { - return - } + value: function _getConfig(config) { + config = $.extend({}, Default, config); + config.toggle = !!config.toggle; // coerce string values + Util.typeCheckConfig(NAME, config, DefaultType); + return config; + } + }, { + key: '_getDimension', + value: function _getDimension() { + var hasWidth = $(this._element).hasClass(Dimension.WIDTH); + return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT; + } + }, { + key: '_getParent', + value: function _getParent() { + var _this6 = this; - this._isShown = true + var parent = $(this._config.parent)[0]; + var selector = '[data-toggle="collapse"][data-parent="' + this._config.parent + '"]'; - this._checkScrollbar() - this._setScrollbar() + $(parent).find(selector).each(function (i, element) { + _this6._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]); + }); - $(document.body).addClass(Modal._ClassName.OPEN) + return parent; + } + }, { + key: '_addAriaAndCollapsedClass', + value: function _addAriaAndCollapsedClass(element, triggerArray) { + if (element) { + var isOpen = $(element).hasClass(ClassName.IN); + element.setAttribute('aria-expanded', isOpen); + + if (triggerArray.length) { + $(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen); + } + } + } + }], [{ + key: 'VERSION', - this._escape() - this._resize() + // getters - $(this._element).on('click.dismiss.bs.modal', Modal._Selector.DATA_DISMISS, this['hide'].bind(this)) + get: function () { + return VERSION; + } + }, { + key: 'Default', + get: function () { + return Default; + } + }, { + key: '_getTargetFromElement', - this._showBackdrop(this._showElement.bind(this, relatedTarget)) -} + // static + value: function _getTargetFromElement(element) { + var selector = Util.getSelectorFromElement(element); + return selector ? $(selector)[0] : null; + } + }, { + key: '_jQueryInterface', + value: function _jQueryInterface(config) { + return this.each(function () { + var $this = $(this); + var data = $this.data(DATA_KEY); + var _config = $.extend({}, Default, $this.data(), typeof config === 'object' && config); + + if (!data && _config.toggle && /show|hide/.test(config)) { + _config.toggle = false; + } -/** - * @param {Event} event - */ -Modal.prototype['hide'] = function (event) { - if (event) { - event.preventDefault() - } + if (!data) { + data = new Collapse(this, _config); + $this.data(DATA_KEY, data); + } - var hideEvent = $.Event(Modal._Event.HIDE) + if (typeof config === 'string') { + data[config](); + } + }); + } + }]); - $(this._element).trigger(hideEvent) + return Collapse; + })(); - if (!this._isShown || hideEvent.isDefaultPrevented()) { - return - } + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ - this._isShown = false + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + event.preventDefault(); - this._escape() - this._resize() + var target = Collapse._getTargetFromElement(this); - $(document).off('focusin.bs.modal') + var data = $(target).data(DATA_KEY); + var config = data ? 'toggle' : $(this).data(); - $(this._element).removeClass(Modal._ClassName.IN) - this._element.setAttribute('aria-hidden', true) + Collapse._jQueryInterface.call($(target), config); + }); - $(this._element).off('click.dismiss.bs.modal') + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ - if (Bootstrap.transition && $(this._element).hasClass(Modal._ClassName.FADE)) { - $(this._element) - .one(Bootstrap.TRANSITION_END, this._hideModal.bind(this)) - .emulateTransitionEnd(Modal._TRANSITION_DURATION) - } else { - this._hideModal() - } -} + $.fn[NAME] = Collapse._jQueryInterface; + $.fn[NAME].Constructor = Collapse; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Collapse._jQueryInterface; + }; + return Collapse; +})(jQuery); /** - * @param {Element} relatedTarget - * @private - */ -Modal.prototype._showElement = function (relatedTarget) { - var transition = Bootstrap.transition && $(this._element).hasClass(Modal._ClassName.FADE) - - if (!this._element.parentNode || this._element.parentNode.nodeType != Node.ELEMENT_NODE) { - document.body.appendChild(this._element) // don't move modals dom position - } - - this._element.style.display = 'block' - this._element.scrollTop = 0 - - if (this._config['backdrop']) { - this._adjustBackdrop() - } + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): dropdown.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Dropdown = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'dropdown'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.dropdown'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + CLICK: 'click' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + '' + DATA_API_KEY, + KEYDOWN_DATA_API: 'keydown' + EVENT_KEY + '' + DATA_API_KEY + }; + + var ClassName = { + BACKDROP: 'dropdown-backdrop', + DISABLED: 'disabled', + OPEN: 'open' + }; + + var Selector = { + BACKDROP: '.dropdown-backdrop', + DATA_TOGGLE: '[data-toggle="dropdown"]', + FORM_CHILD: '.dropdown form', + ROLE_MENU: '[role="menu"]', + ROLE_LISTBOX: '[role="listbox"]', + NAVBAR_NAV: '.navbar-nav', + VISIBLE_ITEMS: '[role="menu"] li:not(.disabled) a, ' + '[role="listbox"] li:not(.disabled) a' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Dropdown = (function () { + function Dropdown(element) { + _classCallCheck(this, Dropdown); + + this._element = element; + + this._addEventListeners(); + } + + _createClass(Dropdown, [{ + key: 'toggle', + + // public + + value: function toggle() { + if (this.disabled || $(this).hasClass(ClassName.DISABLED)) { + return; + } - if (transition) { - Bootstrap.reflow(this._element) - } + var parent = Dropdown._getParentFromElement(this); + var isActive = $(parent).hasClass(ClassName.OPEN); - $(this._element).addClass(Modal._ClassName.IN) - this._element.setAttribute('aria-hidden', false) + Dropdown._clearMenus(); - this._enforceFocus() + if (isActive) { + return false; + } - var shownEvent = $.Event(Modal._Event.SHOWN, { relatedTarget: relatedTarget }) + if ('ontouchstart' in document.documentElement && !$(parent).closest(Selector.NAVBAR_NAV).length) { - var transitionComplete = function () { - this._element.focus() - $(this._element).trigger(shownEvent) - }.bind(this) + // if mobile we use a backdrop because click events don't delegate + var dropdown = document.createElement('div'); + dropdown.className = ClassName.BACKDROP; + $(dropdown).insertBefore(this); + $(dropdown).on('click', Dropdown._clearMenus); + } - if (transition) { - var dialog = $(this._element).find(Modal._Selector.DIALOG)[0] - $(dialog) - .one(Bootstrap.TRANSITION_END, transitionComplete) - .emulateTransitionEnd(Modal._TRANSITION_DURATION) - } else { - transitionComplete() - } -} + var relatedTarget = { relatedTarget: this }; + var showEvent = $.Event(Event.SHOW, relatedTarget); + $(parent).trigger(showEvent); + if (showEvent.isDefaultPrevented()) { + return; + } -/** - * @private - */ -Modal.prototype._enforceFocus = function () { - $(document) - .off('focusin.bs.modal') // guard against infinite focus loop - .on('focusin.bs.modal', function (e) { - if (this._element !== e.target && !$(this._element).has(e.target).length) { - this._element.focus() - } - }.bind(this)) -} + this.focus(); + this.setAttribute('aria-expanded', 'true'); + $(parent).toggleClass(ClassName.OPEN); + $(parent).trigger(Event.SHOWN, relatedTarget); -/** - * @private - */ -Modal.prototype._escape = function () { - if (this._isShown && this._config['keyboard']) { - $(this._element).on('keydown.dismiss.bs.modal', function (event) { - if (event.which === 27) { - this['hide']() + return false; } - }.bind(this)) - - } else if (!this._isShown) { - $(this._element).off('keydown.dismiss.bs.modal') - } -} - - -/** - * @private - */ -Modal.prototype._resize = function () { - if (this._isShown) { - $(window).on('resize.bs.modal', this._handleUpdate.bind(this)) - } else { - $(window).off('resize.bs.modal') - } -} - - -/** - * @private - */ -Modal.prototype._hideModal = function () { - this._element.style.display = 'none' - this._showBackdrop(function () { - $(document.body).removeClass(Modal._ClassName.OPEN) - this._resetAdjustments() - this._resetScrollbar() - $(this._element).trigger(Modal._Event.HIDDEN) - }.bind(this)) -} + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + $(this._element).off(EVENT_KEY); + this._element = null; + } + }, { + key: '_addEventListeners', + // private -/** - * @private - */ -Modal.prototype._removeBackdrop = function () { - if (this._backdrop) { - this._backdrop.parentNode.removeChild(this._backdrop) - this._backdrop = null - } -} + value: function _addEventListeners() { + $(this._element).on(Event.CLICK, this.toggle); + } + }], [{ + key: 'VERSION', + // getters -/** - * @param {Function} callback - * @private - */ -Modal.prototype._showBackdrop = function (callback) { - var animate = $(this._element).hasClass(Modal._ClassName.FADE) ? Modal._ClassName.FADE : '' + get: function () { + return VERSION; + } + }, { + key: '_jQueryInterface', - if (this._isShown && this._config['backdrop']) { - var doAnimate = Bootstrap.transition && animate + // static - this._backdrop = document.createElement('div') - this._backdrop.className = Modal._ClassName.BACKDROP + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); - if (animate) { - $(this._backdrop).addClass(animate) - } + if (!data) { + $(this).data(DATA_KEY, data = new Dropdown(this)); + } - $(this._element).prepend(this._backdrop) + if (typeof config === 'string') { + data[config].call(this); + } + }); + } + }, { + key: '_clearMenus', + value: function _clearMenus(event) { + if (event && event.which === 3) { + return; + } - $(this._backdrop).on('click.dismiss.bs.modal', function (event) { - if (event.target !== event.currentTarget) return - this._config['backdrop'] === 'static' - ? this._element.focus() - : this['hide']() - }.bind(this)) + var backdrop = $(Selector.BACKDROP)[0]; + if (backdrop) { + backdrop.parentNode.removeChild(backdrop); + } - if (doAnimate) { - Bootstrap.reflow(this._backdrop) - } + var toggles = $.makeArray($(Selector.DATA_TOGGLE)); - $(this._backdrop).addClass(Modal._ClassName.IN) + for (var i = 0; i < toggles.length; i++) { + var _parent = Dropdown._getParentFromElement(toggles[i]); + var relatedTarget = { relatedTarget: toggles[i] }; - if (!callback) { - return - } + if (!$(_parent).hasClass(ClassName.OPEN)) { + continue; + } - if (!doAnimate) { - callback() - return - } + if (event && event.type === 'click' && /input|textarea/i.test(event.target.tagName) && $.contains(_parent, event.target)) { + continue; + } - $(this._backdrop) - .one(Bootstrap.TRANSITION_END, callback) - .emulateTransitionEnd(Modal._BACKDROP_TRANSITION_DURATION) + var hideEvent = $.Event(Event.HIDE, relatedTarget); + $(_parent).trigger(hideEvent); + if (hideEvent.isDefaultPrevented()) { + continue; + } - } else if (!this._isShown && this._backdrop) { - $(this._backdrop).removeClass(Modal._ClassName.IN) + toggles[i].setAttribute('aria-expanded', 'false'); - var callbackRemove = function () { - this._removeBackdrop() - if (callback) { - callback() + $(_parent).removeClass(ClassName.OPEN).trigger(Event.HIDDEN, relatedTarget); + } } - }.bind(this) - - if (Bootstrap.transition && $(this._element).hasClass(Modal._ClassName.FADE)) { - $(this._backdrop) - .one(Bootstrap.TRANSITION_END, callbackRemove) - .emulateTransitionEnd(Modal._BACKDROP_TRANSITION_DURATION) - } else { - callbackRemove() - } - - } else if (callback) { - callback() - } -} - - -/** - * ------------------------------------------------------------------------ - * the following methods are used to handle overflowing modals - * todo (fat): these should probably be refactored into a - * ------------------------------------------------------------------------ - */ - - -/** - * @private - */ -Modal.prototype._handleUpdate = function () { - if (this._config['backdrop']) this._adjustBackdrop() - this._adjustDialog() -} - -/** - * @private - */ -Modal.prototype._adjustBackdrop = function () { - this._backdrop.style.height = 0 // todo (fat): no clue why we do this - this._backdrop.style.height = this._element.scrollHeight + 'px' -} + }, { + key: '_getParentFromElement', + value: function _getParentFromElement(element) { + var parent = undefined; + var selector = Util.getSelectorFromElement(element); + + if (selector) { + parent = $(selector)[0]; + } + return parent || element.parentNode; + } + }, { + key: '_dataApiKeydownHandler', + value: function _dataApiKeydownHandler(event) { + if (!/(38|40|27|32)/.test(event.which) || /input|textarea/i.test(event.target.tagName)) { + return; + } -/** - * @private - */ -Modal.prototype._adjustDialog = function () { - var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight + event.preventDefault(); + event.stopPropagation(); - if (!this._isBodyOverflowing && isModalOverflowing) { - this._element.style.paddingLeft = this._scrollbarWidth + 'px' - } + if (this.disabled || $(this).hasClass(ClassName.DISABLED)) { + return; + } - if (this._isBodyOverflowing && !isModalOverflowing) { - this._element.style.paddingRight = this._scrollbarWidth + 'px' - } -} + var parent = Dropdown._getParentFromElement(this); + var isActive = $(parent).hasClass(ClassName.OPEN); + if (!isActive && event.which !== 27 || isActive && event.which === 27) { -/** - * @private - */ -Modal.prototype._resetAdjustments = function () { - this._element.style.paddingLeft = '' - this._element.style.paddingRight = '' -} + if (event.which === 27) { + var toggle = $(parent).find(Selector.DATA_TOGGLE)[0]; + $(toggle).trigger('focus'); + } + $(this).trigger('click'); + return; + } -/** - * @private - */ -Modal.prototype._checkScrollbar = function () { - this._isBodyOverflowing = document.body.scrollHeight > document.documentElement.clientHeight - this._scrollbarWidth = this._getScrollbarWidth() -} + var items = $.makeArray($(Selector.VISIBLE_ITEMS)); + items = items.filter(function (item) { + return item.offsetWidth || item.offsetHeight; + }); -/** - * @private - */ -Modal.prototype._setScrollbar = function () { - var bodyPadding = parseInt(($(document.body).css('padding-right') || 0), 10) + if (!items.length) { + return; + } - if (this._isBodyOverflowing) { - document.body.style.paddingRight = bodyPadding + this._scrollbarWidth + 'px' - } -} + var index = items.indexOf(event.target); + if (event.which === 38 && index > 0) index--; // up + if (event.which === 40 && index < items.length - 1) index++; // down + if (! ~index) index = 0; -/** - * @private - */ -Modal.prototype._resetScrollbar = function () { - document.body.style.paddingRight = '' -} + items[index].focus(); + } + }]); + return Dropdown; + })(); -/** - * @private - */ -Modal.prototype._getScrollbarWidth = function () { // thx walsh - var scrollDiv = document.createElement('div') - scrollDiv.className = Modal._Selector.SCROLLBAR_MEASURER - document.body.appendChild(scrollDiv) - var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth - document.body.removeChild(scrollDiv) - return scrollbarWidth -} + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + $(document).on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.ROLE_MENU, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.ROLE_LISTBOX, Dropdown._dataApiKeydownHandler).on(Event.CLICK_DATA_API, Dropdown._clearMenus).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, Dropdown.prototype.toggle).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) { + e.stopPropagation(); + }); -/** - * ------------------------------------------------------------------------ - * jQuery Interface + noConflict implementaiton - * ------------------------------------------------------------------------ - */ + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ -/** - * @const - * @type {Function} - */ -$.fn[Modal._NAME] = Modal._jQueryInterface + $.fn[NAME] = Dropdown._jQueryInterface; + $.fn[NAME].Constructor = Dropdown; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Dropdown._jQueryInterface; + }; + return Dropdown; +})(jQuery); /** - * @const - * @type {Function} - */ -$.fn[Modal._NAME]['Constructor'] = Modal + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): modal.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Modal = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'modal'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.modal'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 300; + var BACKDROP_TRANSITION_DURATION = 150; + + var Default = { + backdrop: true, + keyboard: true, + focus: true, + show: true + }; + + var DefaultType = { + backdrop: '(boolean|string)', + keyboard: 'boolean', + focus: 'boolean', + show: 'boolean' + }; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + FOCUSIN: 'focusin' + EVENT_KEY, + RESIZE: 'resize' + EVENT_KEY, + CLICK_DISMISS: 'click.dismiss' + EVENT_KEY, + KEYDOWN_DISMISS: 'keydown.dismiss' + EVENT_KEY, + MOUSEUP_DISMISS: 'mouseup.dismiss' + EVENT_KEY, + MOUSEDOWN_DISMISS: 'mousedown.dismiss' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + '' + DATA_API_KEY + }; + + var ClassName = { + BACKDROP: 'modal-backdrop', + OPEN: 'modal-open', + FADE: 'fade', + IN: 'in' + }; + + var Selector = { + DIALOG: '.modal-dialog', + DATA_TOGGLE: '[data-toggle="modal"]', + DATA_DISMISS: '[data-dismiss="modal"]', + SCROLLBAR_MEASURER: 'modal-scrollbar-measure' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Modal = (function () { + function Modal(element, config) { + _classCallCheck(this, Modal); + + this._config = this._getConfig(config); + this._element = element; + this._dialog = $(element).find(Selector.DIALOG)[0]; + this._backdrop = null; + this._isShown = false; + this._isBodyOverflowing = false; + this._ignoreBackdropClick = false; + this._originalBodyPadding = 0; + this._scrollbarWidth = 0; + } + + _createClass(Modal, [{ + key: 'toggle', + + // public + + value: function toggle(relatedTarget) { + return this._isShown ? this.hide() : this.show(relatedTarget); + } + }, { + key: 'show', + value: function show(relatedTarget) { + var _this7 = this; + var showEvent = $.Event(Event.SHOW, { + relatedTarget: relatedTarget + }); -/** - * @const - * @type {Function} - */ -$.fn[Modal._NAME]['noConflict'] = function () { - $.fn[Modal._NAME] = Modal._JQUERY_NO_CONFLICT - return this -} + $(this._element).trigger(showEvent); + if (this._isShown || showEvent.isDefaultPrevented()) { + return; + } -/** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ + this._isShown = true; -$(document).on('click.bs.modal.data-api', Modal._Selector.DATA_TOGGLE, function (event) { - var selector = Bootstrap.getSelectorFromElement(this) + this._checkScrollbar(); + this._setScrollbar(); - if (selector) { - var target = $(selector)[0] - } + $(document.body).addClass(ClassName.OPEN); - var config = $(target).data(Modal._DATA_KEY) ? 'toggle' : $.extend({}, $(target).data(), $(this).data()) + this._setEscapeEvent(); + this._setResizeEvent(); - if (this.tagName == 'A') { - event.preventDefault() - } + $(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, $.proxy(this.hide, this)); - var $target = $(target).one(Modal._Event.SHOW, function (showEvent) { - if (showEvent.isDefaultPrevented()) { - return // only register focus restorer if modal will actually get shown - } + $(this._dialog).on(Event.MOUSEDOWN_DISMISS, function () { + $(_this7._element).one(Event.MOUSEUP_DISMISS, function (event) { + if ($(event.target).is(_this7._element)) { + that._ignoreBackdropClick = true; + } + }); + }); - $target.one(Modal._Event.HIDDEN, function () { - if ($(this).is(':visible')) { - this.focus() + this._showBackdrop($.proxy(this._showElement, this, relatedTarget)); } - }.bind(this)) - }.bind(this)) - - Modal._jQueryInterface.call($(target), config, this) -}) - -/** ======================================================================= - * Bootstrap: scrollspy.js v4.0.0 - * http://getbootstrap.com/javascript/#scrollspy - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== - * @fileoverview - Bootstrap's scrollspy plugin. - * - * Public Methods & Properties: - * - * + $.scrollspy - * + $.scrollspy.noConflict - * + $.scrollspy.Constructor - * + $.scrollspy.Constructor.VERSION - * + $.scrollspy.Constructor.Defaults - * + $.scrollspy.Constructor.Defaults.offset - * + $.scrollspy.Constructor.prototype.refresh - * - * ======================================================================== - */ - -'use strict'; - - -/** - * Our scrollspy class. - * @param {Element!} element - * @param {Object=} opt_config - * @constructor - */ -function ScrollSpy(element, opt_config) { - - /** @private {Element|Window} */ - this._scrollElement = element.tagName == 'BODY' ? window : element + }, { + key: 'hide', + value: function hide(event) { + if (event) { + event.preventDefault(); + } - /** @private {Object} */ - this._config = $.extend({}, ScrollSpy['Defaults'], opt_config) + var hideEvent = $.Event(Event.HIDE); - /** @private {string} */ - this._selector = (this._config.target || '') + ' .nav li > a' + $(this._element).trigger(hideEvent); - /** @private {Array} */ - this._offsets = [] + if (!this._isShown || hideEvent.isDefaultPrevented()) { + return; + } - /** @private {Array} */ - this._targets = [] + this._isShown = false; - /** @private {Element} */ - this._activeTarget = null + this._setEscapeEvent(); + this._setResizeEvent(); - /** @private {number} */ - this._scrollHeight = 0 + $(document).off(Event.FOCUSIN); - $(this._scrollElement).on('scroll.bs.scrollspy', this._process.bind(this)) + $(this._element).removeClass(ClassName.IN); - this['refresh']() + $(this._element).off(Event.CLICK_DISMISS); + $(this._dialog).off(Event.MOUSEDOWN_DISMISS); - this._process() -} + if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) { + $(this._element).one(Util.TRANSITION_END, $.proxy(this._hideModal, this)).emulateTransitionEnd(TRANSITION_DURATION); + } else { + this._hideModal(); + } + } + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + + $(window).off(EVENT_KEY); + $(document).off(EVENT_KEY); + $(this._element).off(EVENT_KEY); + $(this._backdrop).off(EVENT_KEY); + + this._config = null; + this._element = null; + this._dialog = null; + this._backdrop = null; + this._isShown = null; + this._isBodyOverflowing = null; + this._ignoreBackdropClick = null; + this._originalBodyPadding = null; + this._scrollbarWidth = null; + } + }, { + key: '_getConfig', -/** - * @const - * @type {string} - */ -ScrollSpy['VERSION'] = '4.0.0' + // private + value: function _getConfig(config) { + config = $.extend({}, Default, config); + Util.typeCheckConfig(NAME, config, DefaultType); + return config; + } + }, { + key: '_showElement', + value: function _showElement(relatedTarget) { + var _this8 = this; -/** - * @const - * @type {Object} - */ -ScrollSpy['Defaults'] = { - 'offset': 10 -} + var transition = Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE); + if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) { + // don't move modals dom position + document.body.appendChild(this._element); + } -/** - * @const - * @type {string} - * @private - */ -ScrollSpy._NAME = 'scrollspy' + this._element.style.display = 'block'; + this._element.scrollTop = 0; + if (transition) { + Util.reflow(this._element); + } -/** - * @const - * @type {string} - * @private - */ -ScrollSpy._DATA_KEY = 'bs.scrollspy' + $(this._element).addClass(ClassName.IN); + if (this._config.focus) this._enforceFocus(); -/** - * @const - * @type {Function} - * @private - */ -ScrollSpy._JQUERY_NO_CONFLICT = $.fn[ScrollSpy._NAME] + var shownEvent = $.Event(Event.SHOWN, { + relatedTarget: relatedTarget + }); + var transitionComplete = function transitionComplete() { + if (_this8._config.focus) _this8._element.focus(); + $(_this8._element).trigger(shownEvent); + }; -/** - * @const - * @enum {string} - * @private - */ -ScrollSpy._Event = { - ACTIVATE: 'activate.bs.scrollspy' -} + if (transition) { + $(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(TRANSITION_DURATION); + } else { + transitionComplete(); + } + } + }, { + key: '_enforceFocus', + value: function _enforceFocus() { + var _this9 = this; + + $(document).off(Event.FOCUSIN) // guard against infinite focus loop + .on(Event.FOCUSIN, function (event) { + if (_this9._element !== event.target && !$(_this9._element).has(event.target).length) { + _this9._element.focus(); + } + }); + } + }, { + key: '_setEscapeEvent', + value: function _setEscapeEvent() { + var _this10 = this; + + if (this._isShown && this._config.keyboard) { + $(this._element).on(Event.KEYDOWN_DISMISS, function (event) { + if (event.which === 27) { + _this10.hide(); + } + }); + } else if (!this._isShown) { + $(this._element).off(Event.KEYDOWN_DISMISS); + } + } + }, { + key: '_setResizeEvent', + value: function _setResizeEvent() { + if (this._isShown) { + $(window).on(Event.RESIZE, $.proxy(this._handleUpdate, this)); + } else { + $(window).off(Event.RESIZE); + } + } + }, { + key: '_hideModal', + value: function _hideModal() { + var _this11 = this; + + this._element.style.display = 'none'; + this._showBackdrop(function () { + $(document.body).removeClass(ClassName.OPEN); + _this11._resetAdjustments(); + _this11._resetScrollbar(); + $(_this11._element).trigger(Event.HIDDEN); + }); + } + }, { + key: '_removeBackdrop', + value: function _removeBackdrop() { + if (this._backdrop) { + $(this._backdrop).remove(); + this._backdrop = null; + } + } + }, { + key: '_showBackdrop', + value: function _showBackdrop(callback) { + var _this12 = this; + var animate = $(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : ''; -/** - * @const - * @enum {string} - * @private - */ -ScrollSpy._ClassName = { - DROPDOWN_MENU : 'dropdown-menu', - ACTIVE : 'active' -} + if (this._isShown && this._config.backdrop) { + var doAnimate = Util.supportsTransitionEnd() && animate; + this._backdrop = document.createElement('div'); + this._backdrop.className = ClassName.BACKDROP; -/** - * @const - * @enum {string} - * @private - */ -ScrollSpy._Selector = { - DATA_SPY : '[data-spy="scroll"]', - ACTIVE : '.active', - LI_DROPDOWN : 'li.dropdown', - LI : 'li' -} + if (animate) { + $(this._backdrop).addClass(animate); + } + $(this._backdrop).appendTo(this.$body); + + $(this._element).on(Event.CLICK_DISMISS, function (event) { + if (_this12._ignoreBackdropClick) { + _this12._ignoreBackdropClick = false; + return; + } + if (event.target !== event.currentTarget) { + return; + } + if (_this12._config.backdrop === 'static') { + _this12._element.focus(); + } else { + _this12.hide(); + } + }); + + if (doAnimate) { + Util.reflow(this._backdrop); + } -/** - * @param {Object=} opt_config - * @this {jQuery} - * @return {jQuery} - * @private - */ -ScrollSpy._jQueryInterface = function (opt_config) { - return this.each(function () { - var data = $(this).data(ScrollSpy._DATA_KEY) - var config = typeof opt_config === 'object' && opt_config || null - - if (!data) { - data = new ScrollSpy(this, config) - $(this).data(ScrollSpy._DATA_KEY, data) - } + $(this._backdrop).addClass(ClassName.IN); - if (typeof opt_config === 'string') { - data[opt_config]() - } - }) -} + if (!callback) { + return; + } + if (!doAnimate) { + callback(); + return; + } -/** - * Refresh the scrollspy target cache - */ -ScrollSpy.prototype['refresh'] = function () { - var offsetMethod = 'offset' - var offsetBase = 0 + $(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION); + } else if (!this._isShown && this._backdrop) { + $(this._backdrop).removeClass(ClassName.IN); + + var callbackRemove = function callbackRemove() { + _this12._removeBackdrop(); + if (callback) { + callback(); + } + }; + + if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) { + $(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION); + } else { + callbackRemove(); + } + } else if (callback) { + callback(); + } + } + }, { + key: '_handleUpdate', - if (this._scrollElement !== this._scrollElement.window) { - offsetMethod = 'position' - offsetBase = this._getScrollTop() - } + // ---------------------------------------------------------------------- + // the following methods are used to handle overflowing modals + // todo (fat): these should probably be refactored out of modal.js + // ---------------------------------------------------------------------- - this._offsets = [] - this._targets = [] + value: function _handleUpdate() { + this._adjustDialog(); + } + }, { + key: '_adjustDialog', + value: function _adjustDialog() { + var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; - this._scrollHeight = this._getScrollHeight() + if (!this._isBodyOverflowing && isModalOverflowing) { + this._element.style.paddingLeft = this._scrollbarWidth + 'px'; + } - var targets = /** @type {Array.<Element>} */ ($.makeArray($(this._selector))) + if (this._isBodyOverflowing && !isModalOverflowing) { + this._element.style.paddingRight = this._scrollbarWidth + 'px'; + } + } + }, { + key: '_resetAdjustments', + value: function _resetAdjustments() { + this._element.style.paddingLeft = ''; + this._element.style.paddingRight = ''; + } + }, { + key: '_checkScrollbar', + value: function _checkScrollbar() { + var fullWindowWidth = window.innerWidth; + if (!fullWindowWidth) { + // workaround for missing window.innerWidth in IE8 + var documentElementRect = document.documentElement.getBoundingClientRect(); + fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left); + } + this._isBodyOverflowing = document.body.clientWidth < fullWindowWidth; + this._scrollbarWidth = this._getScrollbarWidth(); + } + }, { + key: '_setScrollbar', + value: function _setScrollbar() { + var bodyPadding = parseInt($(document.body).css('padding-right') || 0, 10); - targets - .map(function (element, index) { - var target - var targetSelector = Bootstrap.getSelectorFromElement(element) + this._originalBodyPadding = document.body.style.paddingRight || ''; - if (targetSelector) { - target = $(targetSelector)[0] + if (this._isBodyOverflowing) { + document.body.style.paddingRight = bodyPadding + this._scrollbarWidth + 'px'; + } } - - if (target && (target.offsetWidth || target.offsetHeight)) { - // todo (fat): remove sketch reliance on jQuery position/offset - return [$(target)[offsetMethod]().top + offsetBase, targetSelector] + }, { + key: '_resetScrollbar', + value: function _resetScrollbar() { + document.body.style.paddingRight = this._originalBodyPadding; } - }) - .filter(function (item) { return item }) - .sort(function (a, b) { return a[0] - b[0] }) - .forEach(function (item, index) { - this._offsets.push(item[0]) - this._targets.push(item[1]) - }.bind(this)) -} - + }, { + key: '_getScrollbarWidth', + value: function _getScrollbarWidth() { + // thx d.walsh + var scrollDiv = document.createElement('div'); + scrollDiv.className = Selector.SCROLLBAR_MEASURER; + document.body.appendChild(scrollDiv); + var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth; + document.body.removeChild(scrollDiv); + return scrollbarWidth; + } + }], [{ + key: 'VERSION', -/** - * @private - */ -ScrollSpy.prototype._getScrollTop = function () { - return this._scrollElement === window ? - this._scrollElement.scrollY : this._scrollElement.scrollTop -} + // getters + get: function () { + return VERSION; + } + }, { + key: 'Default', + get: function () { + return Default; + } + }, { + key: '_jQueryInterface', -/** - * @private - */ -ScrollSpy.prototype._getScrollHeight = function () { - return this._scrollElement.scrollHeight - || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight) -} + // static + value: function _jQueryInterface(config, relatedTarget) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = $.extend({}, Modal.Default, $(this).data(), typeof config === 'object' && config); -/** - * @private - */ -ScrollSpy.prototype._process = function () { - var scrollTop = this._getScrollTop() + this._config.offset - var scrollHeight = this._getScrollHeight() - var maxScroll = this._config.offset + scrollHeight - this._scrollElement.offsetHeight + if (!data) { + data = new Modal(this, _config); + $(this).data(DATA_KEY, data); + } - if (this._scrollHeight != scrollHeight) { - this['refresh']() - } + if (typeof config === 'string') { + data[config](relatedTarget); + } else if (_config.show) { + data.show(relatedTarget); + } + }); + } + }]); - if (scrollTop >= maxScroll) { - var target = this._targets[this._targets.length - 1] + return Modal; + })(); - if (this._activeTarget != target) { - this._activate(target) - } - } + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ - if (this._activeTarget && scrollTop < this._offsets[0]) { - this._activeTarget = null - this._clear() - return - } + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + var _this13 = this; - for (var i = this._offsets.length; i--;) { - var isActiveTarget = this._activeTarget != this._targets[i] - && scrollTop >= this._offsets[i] - && (!this._offsets[i + 1] || scrollTop < this._offsets[i + 1]) + var target = undefined; + var selector = Util.getSelectorFromElement(this); - if (isActiveTarget) { - this._activate(this._targets[i]) + if (selector) { + target = $(selector)[0]; } - } -} + var config = $(target).data(DATA_KEY) ? 'toggle' : $.extend({}, $(target).data(), $(this).data()); -/** - * @param {Element} target - * @private - */ -ScrollSpy.prototype._activate = function (target) { - this._activeTarget = target - - this._clear() - - var selector = this._selector - + '[data-target="' + target + '"],' - + this._selector + '[href="' + target + '"]' - - // todo (fat): this seems horribly wrong… getting all raw li elements up the tree ,_, - var parentListItems = $(selector).parents(ScrollSpy._Selector.LI) - - for (var i = parentListItems.length; i--;) { - $(parentListItems[i]).addClass(ScrollSpy._ClassName.ACTIVE) - - var itemParent = parentListItems[i].parentNode - - if (itemParent && $(itemParent).hasClass(ScrollSpy._ClassName.DROPDOWN_MENU)) { - var closestDropdown = $(itemParent).closest(ScrollSpy._Selector.LI_DROPDOWN)[0] - $(closestDropdown).addClass(ScrollSpy._ClassName.ACTIVE) + if (this.tagName === 'A') { + event.preventDefault(); } - } - - $(this._scrollElement).trigger(ScrollSpy._Event.ACTIVATE, { - relatedTarget: target - }) -} - - -/** - * @private - */ -ScrollSpy.prototype._clear = function () { - var activeParents = $(this._selector).parentsUntil(this._config.target, ScrollSpy._Selector.ACTIVE) - for (var i = activeParents.length; i--;) { - $(activeParents[i]).removeClass(ScrollSpy._ClassName.ACTIVE) - } -} - - -/** - * ------------------------------------------------------------------------ - * jQuery Interface + noConflict implementaiton - * ------------------------------------------------------------------------ - */ - -/** - * @const - * @type {Function} - */ -$.fn[ScrollSpy._NAME] = ScrollSpy._jQueryInterface + var $target = $(target).one(Event.SHOW, function (showEvent) { + if (showEvent.isDefaultPrevented()) { + // only register focus restorer if modal will actually get shown + return; + } + $target.one(Event.HIDDEN, function () { + if ($(_this13).is(':visible')) { + _this13.focus(); + } + }); + }); -/** - * @const - * @type {Function} - */ -$.fn[ScrollSpy._NAME]['Constructor'] = ScrollSpy + Modal._jQueryInterface.call($(target), config, this); + }); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ -/** - * @const - * @type {Function} - */ -$.fn[ScrollSpy._NAME]['noConflict'] = function () { - $.fn[ScrollSpy._NAME] = ScrollSpy._JQUERY_NO_CONFLICT - return this -} + $.fn[NAME] = Modal._jQueryInterface; + $.fn[NAME].Constructor = Modal; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Modal._jQueryInterface; + }; + return Modal; +})(jQuery); /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - -$(window).on('load.bs.scrollspy.data-api', function () { - var scrollSpys = /** @type {Array.<Element>} */ ($.makeArray($(ScrollSpy._Selector.DATA_SPY))) - - for (var i = scrollSpys.length; i--;) { - var $spy = $(scrollSpys[i]) - ScrollSpy._jQueryInterface.call($spy, /** @type {Object|null} */ ($spy.data())) - } -}) - -/** ======================================================================= - * Bootstrap: tooltip.js v4.0.0 - * http://getbootstrap.com/javascript/#tooltip - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): scrollspy.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== - * @fileoverview - Bootstrap's tooltip plugin. - * (Inspired by jQuery.tipsy by Jason Frame) - * - * Public Methods & Properties: - * - * + $.tooltip - * + $.tooltip.noConflict - * + $.tooltip.Constructor - * + $.tooltip.Constructor.VERSION - * + $.tooltip.Constructor.Defaults - * + $.tooltip.Constructor.Defaults.container - * + $.tooltip.Constructor.Defaults.animation - * + $.tooltip.Constructor.Defaults.placement - * + $.tooltip.Constructor.Defaults.selector - * + $.tooltip.Constructor.Defaults.template - * + $.tooltip.Constructor.Defaults.trigger - * + $.tooltip.Constructor.Defaults.title - * + $.tooltip.Constructor.Defaults.delay - * + $.tooltip.Constructor.Defaults.html - * + $.tooltip.Constructor.Defaults.viewport - * + $.tooltip.Constructor.Defaults.viewport.selector - * + $.tooltip.Constructor.Defaults.viewport.padding - * + $.tooltip.Constructor.prototype.enable - * + $.tooltip.Constructor.prototype.disable - * + $.tooltip.Constructor.prototype.destroy - * + $.tooltip.Constructor.prototype.toggleEnabled - * + $.tooltip.Constructor.prototype.toggle - * + $.tooltip.Constructor.prototype.show - * + $.tooltip.Constructor.prototype.hide - * - * ======================================================================== - */ - -'use strict'; - - -/** - * Our tooltip class. - * @param {Element!} element - * @param {Object=} opt_config - * @constructor - */ -var Tooltip = function (element, opt_config) { - - /** @private {boolean} */ - this._isEnabled = true - - /** @private {number} */ - this._timeout = 0 - - /** @private {string} */ - this._hoverState = '' - - /** @protected {Element} */ - this.element = element - - /** @protected {Object} */ - this.config = this._getConfig(opt_config) - - /** @protected {Element} */ - this.tip = null - - /** @protected {Element} */ - this.arrow = null - - if (this.config['viewport']) { - - /** @private {Element} */ - this._viewport = $(this.config['viewport']['selector'] || this.config['viewport'])[0] - - } - - this._setListeners() -} - - -/** - * @const - * @type {string} - */ -Tooltip['VERSION'] = '4.0.0' - - -/** - * @const - * @type {Object} - */ -Tooltip['Defaults'] = { - 'container' : false, - 'animation' : true, - 'placement' : 'top', - 'selector' : false, - 'template' : '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>', - 'trigger' : 'hover focus', - 'title' : '', - 'delay' : 0, - 'html' : false, - 'viewport': { - 'selector': 'body', - 'padding' : 0 - } -} - - -/** - * @const - * @enum {string} - * @protected + * -------------------------------------------------------------------------- */ -Tooltip.Direction = { - TOP: 'top', - LEFT: 'left', - RIGHT: 'right', - BOTTOM: 'bottom' -} +var ScrollSpy = (function ($) { -/** - * @const - * @type {string} - * @private - */ -Tooltip._NAME = 'tooltip' + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + var NAME = 'scrollspy'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.scrollspy'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; -/** - * @const - * @type {string} - * @private - */ -Tooltip._DATA_KEY = 'bs.tooltip' - - -/** - * @const - * @type {number} - * @private - */ -Tooltip._TRANSITION_DURATION = 150 + var Default = { + offset: 10, + method: 'auto', + target: '' + }; + var DefaultType = { + offset: 'number', + method: 'string', + target: '(string|element)' + }; -/** - * @const - * @enum {string} - * @private - */ -Tooltip._HoverState = { - IN: 'in', - OUT: 'out' -} + var Event = { + ACTIVATE: 'activate' + EVENT_KEY, + SCROLL: 'scroll' + EVENT_KEY, + LOAD_DATA_API: 'load' + EVENT_KEY + '' + DATA_API_KEY + }; + var ClassName = { + DROPDOWN_MENU: 'dropdown-menu', + ACTIVE: 'active' + }; -/** - * @const - * @enum {string} - * @private - */ -Tooltip._Event = { - HIDE : 'hide.bs.tooltip', - HIDDEN : 'hidden.bs.tooltip', - SHOW : 'show.bs.tooltip', - SHOWN : 'shown.bs.tooltip' -} + var Selector = { + DATA_SPY: '[data-spy="scroll"]', + ACTIVE: '.active', + LI: 'li', + LI_DROPDOWN: 'li.dropdown', + NAV_ANCHORS: '.nav li > a' + }; + var OffsetMethod = { + OFFSET: 'offset', + POSITION: 'position' + }; -/** - * @const - * @enum {string} - * @private - */ -Tooltip._ClassName = { - FADE : 'fade', - IN : 'in' -} + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + var ScrollSpy = (function () { + function ScrollSpy(element, config) { + _classCallCheck(this, ScrollSpy); -/** - * @const - * @enum {string} - * @private - */ -Tooltip._Selector = { - TOOLTIP : '.tooltip', - TOOLTIP_INNER : '.tooltip-inner', - TOOLTIP_ARROW : '.tooltip-arrow' -} + this._element = element; + this._scrollElement = element.tagName === 'BODY' ? window : element; + this._config = this._getConfig(config); + this._selector = '' + this._config.target + ' ' + Selector.NAV_ANCHORS; + this._offsets = []; + this._targets = []; + this._activeTarget = null; + this._scrollHeight = 0; + $(this._scrollElement).on(Event.SCROLL, $.proxy(this._process, this)); -/** - * @const - * @type {Function} - * @private - */ -Tooltip._JQUERY_NO_CONFLICT = $.fn[Tooltip._NAME] - - -/** - * @param {Object=} opt_config - * @this {jQuery} - * @return {jQuery} - * @private - */ -Tooltip._jQueryInterface = function (opt_config) { - return this.each(function () { - var data = $(this).data(Tooltip._DATA_KEY) - var config = typeof opt_config == 'object' ? opt_config : null - - if (!data && opt_config == 'destroy') { - return + this.refresh(); + this._process(); } - if (!data) { - data = new Tooltip(this, config) - $(this).data(Tooltip._DATA_KEY, data) - } + _createClass(ScrollSpy, [{ + key: 'refresh', - if (typeof opt_config === 'string') { - data[opt_config]() - } - }) -} + // public + value: function refresh() { + var _this14 = this; -/** - * Enable tooltip - */ -Tooltip.prototype['enable'] = function () { - this._isEnabled = true -} + var autoMethod = this._scrollElement !== this._scrollElement.window ? OffsetMethod.POSITION : OffsetMethod.OFFSET; + var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method; -/** - * Disable tooltip - */ -Tooltip.prototype['disable'] = function () { - this._isEnabled = false -} - - -/** - * Toggle the tooltip enable state - */ -Tooltip.prototype['toggleEnabled'] = function () { - this._isEnabled = !this._isEnabled -} + var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0; -/** - * Toggle the tooltips display - * @param {Event} opt_event - */ -Tooltip.prototype['toggle'] = function (opt_event) { - var context = this - var dataKey = this.getDataKey() + this._offsets = []; + this._targets = []; - if (opt_event) { - context = $(opt_event.currentTarget).data(dataKey) + this._scrollHeight = this._getScrollHeight(); - if (!context) { - context = new this.constructor(opt_event.currentTarget, this._getDelegateConfig()) - $(opt_event.currentTarget).data(dataKey, context) - } - } + var targets = $.makeArray($(this._selector)); - $(context.getTipElement()).hasClass(Tooltip._ClassName.IN) ? - context._leave(null, context) : - context._enter(null, context) -} + targets.map(function (element) { + var target = undefined; + var targetSelector = Util.getSelectorFromElement(element); + if (targetSelector) { + target = $(targetSelector)[0]; + } -/** - * Remove tooltip functionality - */ -Tooltip.prototype['destroy'] = function () { - clearTimeout(this._timeout) - this['hide'](function () { - $(this.element) - .off(Tooltip._Selector.TOOLTIP) - .removeData(this.getDataKey()) - }.bind(this)) -} + if (target && (target.offsetWidth || target.offsetHeight)) { + // todo (fat): remove sketch reliance on jQuery position/offset + return [$(target)[offsetMethod]().top + offsetBase, targetSelector]; + } + }).filter(function (item) { + return item; + }).sort(function (a, b) { + return a[0] - b[0]; + }).forEach(function (item) { + _this14._offsets.push(item[0]); + _this14._targets.push(item[1]); + }); + } + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + $(this._scrollElement).off(EVENT_KEY); + + this._element = null; + this._scrollElement = null; + this._config = null; + this._selector = null; + this._offsets = null; + this._targets = null; + this._activeTarget = null; + this._scrollHeight = null; + } + }, { + key: '_getConfig', + // private -/** - * Show the tooltip - * todo (fat): ~fuck~ this is a big function - refactor out all of positioning logic - * and replace with external lib - */ -Tooltip.prototype['show'] = function () { - var showEvent = $.Event(this.getEventObject().SHOW) + value: function _getConfig(config) { + config = $.extend({}, Default, config); - if (this.isWithContent() && this._isEnabled) { - $(this.element).trigger(showEvent) + if (typeof config.target !== 'string') { + var id = $(config.target).attr('id'); + if (!id) { + id = Util.getUID(NAME); + $(config.target).attr('id', id); + } + config.target = '#' + id; + } - var isInTheDom = $.contains(this.element.ownerDocument.documentElement, this.element) + Util.typeCheckConfig(NAME, config, DefaultType); - if (showEvent.isDefaultPrevented() || !isInTheDom) { - return - } + return config; + } + }, { + key: '_getScrollTop', + value: function _getScrollTop() { + return this._scrollElement === window ? this._scrollElement.scrollY : this._scrollElement.scrollTop; + } + }, { + key: '_getScrollHeight', + value: function _getScrollHeight() { + return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); + } + }, { + key: '_process', + value: function _process() { + var scrollTop = this._getScrollTop() + this._config.offset; + var scrollHeight = this._getScrollHeight(); + var maxScroll = this._config.offset + scrollHeight - this._scrollElement.offsetHeight; + + if (this._scrollHeight !== scrollHeight) { + this.refresh(); + } - var tip = this.getTipElement() - var tipId = Bootstrap.getUID(this.getName()) + if (scrollTop >= maxScroll) { + var target = this._targets[this._targets.length - 1]; - tip.setAttribute('id', tipId) - this.element.setAttribute('aria-describedby', tipId) + if (this._activeTarget !== target) { + this._activate(target); + } + } - this.setContent() + if (this._activeTarget && scrollTop < this._offsets[0]) { + this._activeTarget = null; + this._clear(); + return; + } - if (this.config['animation']) { - $(tip).addClass(Tooltip._ClassName.FADE) - } + for (var i = this._offsets.length; i--;) { + var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (this._offsets[i + 1] === undefined || scrollTop < this._offsets[i + 1]); - var placement = typeof this.config['placement'] == 'function' ? - this.config['placement'].call(this, tip, this.element) : - this.config['placement'] + if (isActiveTarget) { + this._activate(this._targets[i]); + } + } + } + }, { + key: '_activate', + value: function _activate(target) { + this._activeTarget = target; - var autoToken = /\s?auto?\s?/i - var isWithAutoPlacement = autoToken.test(placement) + this._clear(); - if (isWithAutoPlacement) { - placement = placement.replace(autoToken, '') || Tooltip.Direction.TOP - } + var selector = '' + this._selector + '[data-target="' + target + '"],' + ('' + this._selector + '[href="' + target + '"]'); - if (tip.parentNode && tip.parentNode.nodeType == Node.ELEMENT_NODE) { - tip.parentNode.removeChild(tip) - } + // todo (fat): getting all the raw li's up the tree is not great. + var parentListItems = $(selector).parents(Selector.LI); - tip.style.top = 0 - tip.style.left = 0 - tip.style.display = 'block' + for (var i = parentListItems.length; i--;) { + $(parentListItems[i]).addClass(ClassName.ACTIVE); - $(tip).addClass(Tooltip._NAME + '-' + placement) + var itemParent = parentListItems[i].parentNode; - $(tip).data(this.getDataKey(), this) + if (itemParent && $(itemParent).hasClass(ClassName.DROPDOWN_MENU)) { + var closestDropdown = $(itemParent).closest(Selector.LI_DROPDOWN)[0]; + $(closestDropdown).addClass(ClassName.ACTIVE); + } + } - if (this.config['container']) { - $(this.config['container'])[0].appendChild(tip) - } else { - this.element.parentNode.insertBefore(tip, this.element.nextSibling) - } + $(this._scrollElement).trigger(Event.ACTIVATE, { + relatedTarget: target + }); + } + }, { + key: '_clear', + value: function _clear() { + var activeParents = $(this._selector).parentsUntil(this._config.target, Selector.ACTIVE); - var position = this._getPosition() - var actualWidth = tip.offsetWidth - var actualHeight = tip.offsetHeight + for (var i = activeParents.length; i--;) { + $(activeParents[i]).removeClass(ClassName.ACTIVE); + } + } + }], [{ + key: 'VERSION', - var calculatedPlacement = this._getCalculatedAutoPlacement(isWithAutoPlacement, placement, position, actualWidth, actualHeight) - var calculatedOffset = this._getCalculatedOffset(calculatedPlacement, position, actualWidth, actualHeight) + // getters - this._applyCalculatedPlacement(calculatedOffset, calculatedPlacement) + get: function () { + return VERSION; + } + }, { + key: 'Default', + get: function () { + return Default; + } + }, { + key: '_jQueryInterface', - var complete = function () { - var prevHoverState = this.hoverState - $(this.element).trigger(this.getEventObject().SHOWN) - this.hoverState = null + // static - if (prevHoverState == 'out') this._leave(null, this) - }.bind(this) + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = typeof config === 'object' && config || null; - Bootstrap.transition && $(this._tip).hasClass(Tooltip._ClassName.FADE) ? - $(this._tip) - .one(Bootstrap.TRANSITION_END, complete) - .emulateTransitionEnd(Tooltip._TRANSITION_DURATION) : - complete() - } -} + if (!data) { + data = new ScrollSpy(this, _config); + $(this).data(DATA_KEY, data); + } + if (typeof config === 'string') { + data[config](); + } + }); + } + }]); -/** - * Hide the tooltip breh - */ -Tooltip.prototype['hide'] = function (callback) { - var tip = this.getTipElement() - var hideEvent = $.Event(this.getEventObject().HIDE) + return ScrollSpy; + })(); - var complete = function () { - if (this._hoverState != Tooltip._HoverState.IN) { - tip.parentNode.removeChild(tip) - } + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ - this.element.removeAttribute('aria-describedby') - $(this.element).trigger(this.getEventObject().HIDDEN) + $(window).on(Event.LOAD_DATA_API, function () { + var scrollSpys = $.makeArray($(Selector.DATA_SPY)); - if (callback) { - callback() + for (var i = scrollSpys.length; i--;) { + var $spy = $(scrollSpys[i]); + ScrollSpy._jQueryInterface.call($spy, $spy.data()); } - }.bind(this) - - $(this.element).trigger(hideEvent) - - if (hideEvent.isDefaultPrevented()) return - - $(tip).removeClass(Tooltip._ClassName.IN) - - if (Bootstrap.transition && $(this._tip).hasClass(Tooltip._ClassName.FADE)) { - $(tip) - .one(Bootstrap.TRANSITION_END, complete) - .emulateTransitionEnd(Tooltip._TRANSITION_DURATION) - } else { - complete() - } - - this._hoverState = '' -} + }); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ -/** - * @return {string} - */ -Tooltip.prototype['getHoverState'] = function (callback) { - return this._hoverState -} + $.fn[NAME] = ScrollSpy._jQueryInterface; + $.fn[NAME].Constructor = ScrollSpy; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return ScrollSpy._jQueryInterface; + }; + return ScrollSpy; +})(jQuery); /** - * @return {string} - * @protected - */ -Tooltip.prototype.getName = function () { - return Tooltip._NAME -} - - -/** - * @return {string} - * @protected - */ -Tooltip.prototype.getDataKey = function () { - return Tooltip._DATA_KEY -} - - -/** - * @return {Object} - * @protected - */ -Tooltip.prototype.getEventObject = function () { - return Tooltip._Event -} - - -/** - * @return {string} - * @protected - */ -Tooltip.prototype.getTitle = function () { - var title = this.element.getAttribute('data-original-title') - - if (!title) { - title = typeof this.config['title'] === 'function' ? - this.config['title'].call(this.element) : - this.config['title'] - } - - return /** @type {string} */ (title) -} - - -/** - * @return {Element} - * @protected - */ -Tooltip.prototype.getTipElement = function () { - return (this._tip = this._tip || $(this.config['template'])[0]) -} - - -/** - * @return {Element} - * @protected - */ -Tooltip.prototype.getArrowElement = function () { - return (this.arrow = this.arrow || $(this.getTipElement()).find(Tooltip._Selector.TOOLTIP_ARROW)[0]) -} - - -/** - * @return {boolean} - * @protected - */ -Tooltip.prototype.isWithContent = function () { - return !!this.getTitle() -} - - -/** - * @protected - */ -Tooltip.prototype.setContent = function () { - var tip = this.getTipElement() - var title = this.getTitle() - - $(tip).find(Tooltip._Selector.TOOLTIP_INNER)[0][this.config['html'] ? 'innerHTML' : 'innerText'] = title - - $(tip) - .removeClass(Tooltip._ClassName.FADE) - .removeClass(Tooltip._ClassName.IN) - - for (var direction in Tooltip.Direction) { - $(tip).removeClass(Tooltip._NAME + '-' + direction) - } -} - - -/** - * @private - */ -Tooltip.prototype._setListeners = function () { - var triggers = this.config['trigger'].split(' ') - - triggers.forEach(function (trigger) { - if (trigger == 'click') { - $(this.element).on('click.bs.tooltip', this.config['selector'], this['toggle'].bind(this)) - - } else if (trigger != 'manual') { - var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin' - var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout' - - $(this.element) - .on(eventIn + '.bs.tooltip', this.config['selector'], this._enter.bind(this)) - .on(eventOut + '.bs.tooltip', this.config['selector'], this._leave.bind(this)) - } - }.bind(this)) + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): tab.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Tab = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'tab'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.tab'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 150; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + '' + DATA_API_KEY + }; + + var ClassName = { + DROPDOWN_MENU: 'dropdown-menu', + ACTIVE: 'active', + FADE: 'fade', + IN: 'in' + }; + + var Selector = { + A: 'a', + LI: 'li', + LI_DROPDOWN: 'li.dropdown', + UL: 'ul:not(.dropdown-menu)', + FADE_CHILD: '> .fade', + ACTIVE: '.active', + ACTIVE_CHILD: '> .active', + DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"]', + DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu > .active' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Tab = (function () { + function Tab(element) { + _classCallCheck(this, Tab); + + this._element = element; + } + + _createClass(Tab, [{ + key: 'show', + + // public + + value: function show() { + var _this15 = this; + + if (this._element.parentNode && this._element.parentNode.nodeType == Node.ELEMENT_NODE && $(this._element).parent().hasClass(ClassName.ACTIVE)) { + return; + } - if (this.config['selector']) { - this.config = $.extend({}, this.config, { 'trigger': 'manual', 'selector': '' }) - } else { - this._fixTitle() - } -} + var target = undefined; + var previous = undefined; + var ulElement = $(this._element).closest(Selector.UL)[0]; + var selector = Util.getSelectorFromElement(this._element); + if (ulElement) { + previous = $.makeArray($(ulElement).find(Selector.ACTIVE)); + previous = previous[previous.length - 1]; -/** - * @param {Object=} opt_config - * @return {Object} - * @private - */ -Tooltip.prototype._getConfig = function (opt_config) { - var config = $.extend({}, this.constructor['Defaults'], $(this.element).data(), opt_config) + if (previous) { + previous = $(previous).find(Selector.A)[0]; + } + } - if (config['delay'] && typeof config['delay'] == 'number') { - config['delay'] = { - 'show': config['delay'], - 'hide': config['delay'] - } - } + var hideEvent = $.Event(Event.HIDE, { + relatedTarget: this._element + }); - return config -} + var showEvent = $.Event(Event.SHOW, { + relatedTarget: previous + }); + if (previous) { + $(previous).trigger(hideEvent); + } -/** - * @return {Object} - * @private - */ -Tooltip.prototype._getDelegateConfig = function () { - var config = {} - var defaults = this.constructor['Defaults'] - - if (this.config) { - for (var key in this.config) { - var value = this.config[key] - if (defaults[key] != value) config[key] = value - } - } + $(this._element).trigger(showEvent); - return config -} + if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) { + return; + } + if (selector) { + target = $(selector)[0]; + } + this._activate($(this._element).closest(Selector.LI)[0], ulElement); -/** - * @param {boolean} isWithAutoPlacement - * @param {string} placement - * @param {Object} position - * @param {number} actualWidth - * @param {number} actualHeight - * @return {string} - * @private - */ -Tooltip.prototype._getCalculatedAutoPlacement = function (isWithAutoPlacement, placement, position, actualWidth, actualHeight) { - if (isWithAutoPlacement) { - var originalPlacement = placement - var container = this.config['container'] ? $(this.config['container'])[0] : this.element.parentNode - var containerDim = this._getPosition(/** @type {Element} */ (container)) - - placement = placement == Tooltip.Direction.BOTTOM && position.bottom + actualHeight > containerDim.bottom ? Tooltip.Direction.TOP : - placement == Tooltip.Direction.TOP && position.top - actualHeight < containerDim.top ? Tooltip.Direction.BOTTOM : - placement == Tooltip.Direction.RIGHT && position.right + actualWidth > containerDim.width ? Tooltip.Direction.LEFT : - placement == Tooltip.Direction.LEFT && position.left - actualWidth < containerDim.left ? Tooltip.Direction.RIGHT : - placement - - $(this._tip) - .removeClass(Tooltip._NAME + '-' + originalPlacement) - .addClass(Tooltip._NAME + '-' + placement) - } + var complete = function complete() { + var hiddenEvent = $.Event(Event.HIDDEN, { + relatedTarget: _this15._element + }); - return placement -} + var shownEvent = $.Event(Event.SHOWN, { + relatedTarget: previous + }); + $(previous).trigger(hiddenEvent); + $(_this15._element).trigger(shownEvent); + }; -/** - * @param {string} placement - * @param {Object} position - * @param {number} actualWidth - * @param {number} actualHeight - * @return {{left: number, top: number}} - * @private - */ -Tooltip.prototype._getCalculatedOffset = function (placement, position, actualWidth, actualHeight) { - return placement == Tooltip.Direction.BOTTOM ? { top: position.top + position.height, left: position.left + position.width / 2 - actualWidth / 2 } : - placement == Tooltip.Direction.TOP ? { top: position.top - actualHeight, left: position.left + position.width / 2 - actualWidth / 2 } : - placement == Tooltip.Direction.LEFT ? { top: position.top + position.height / 2 - actualHeight / 2, left: position.left - actualWidth } : - /* placement == Tooltip.Direction.RIGHT */ { top: position.top + position.height / 2 - actualHeight / 2, left: position.left + position.width } -} + if (target) { + this._activate(target, target.parentNode, complete); + } else { + complete(); + } + } + }, { + key: 'dispose', + value: function dispose() { + $.removeClass(this._element, DATA_KEY); + this._element = null; + } + }, { + key: '_activate', + // private -/** - * @param {string} placement - * @param {Object} position - * @param {number} actualWidth - * @param {number} actualHeight - * @return {Object} - * @private - */ -Tooltip.prototype._getViewportAdjustedDelta = function (placement, position, actualWidth, actualHeight) { - var delta = { top: 0, left: 0 } + value: function _activate(element, container, callback) { + var active = $(container).find(Selector.ACTIVE_CHILD)[0]; + var isTransitioning = callback && Util.supportsTransitionEnd() && (active && $(active).hasClass(ClassName.FADE) || !!$(container).find(Selector.FADE_CHILD)[0]); - if (!this._viewport) { - return delta - } - - var viewportPadding = this.config['viewport'] && this.config['viewport']['padding'] || 0 - var viewportDimensions = this._getPosition(this._viewport) + var complete = $.proxy(this._transitionComplete, this, element, active, isTransitioning, callback); - if (placement === Tooltip.Direction.RIGHT || placement === Tooltip.Direction.LEFT) { - var topEdgeOffset = position.top - viewportPadding - viewportDimensions.scroll - var bottomEdgeOffset = position.top + viewportPadding - viewportDimensions.scroll + actualHeight + if (active && isTransitioning) { + $(active).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + } else { + complete(); + } - if (topEdgeOffset < viewportDimensions.top) { // top overflow - delta.top = viewportDimensions.top - topEdgeOffset + if (active) { + $(active).removeClass(ClassName.IN); + } + } + }, { + key: '_transitionComplete', + value: function _transitionComplete(element, active, isTransitioning, callback) { + if (active) { + $(active).removeClass(ClassName.ACTIVE); + + var dropdownChild = $(active).find(Selector.DROPDOWN_ACTIVE_CHILD)[0]; + if (dropdownChild) { + $(dropdownChild).removeClass(ClassName.ACTIVE); + } - } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow - delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset - } + var activeToggle = $(active).find(Selector.DATA_TOGGLE)[0]; + if (activeToggle) { + activeToggle.setAttribute('aria-expanded', false); + } + } - } else { - var leftEdgeOffset = position.left - viewportPadding - var rightEdgeOffset = position.left + viewportPadding + actualWidth + $(element).addClass(ClassName.ACTIVE); - if (leftEdgeOffset < viewportDimensions.left) { // left overflow - delta.left = viewportDimensions.left - leftEdgeOffset + var elementToggle = $(element).find(Selector.DATA_TOGGLE)[0]; + if (elementToggle) { + elementToggle.setAttribute('aria-expanded', true); + } - } else if (rightEdgeOffset > viewportDimensions.width) { // right overflow - delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset - } - } + if (isTransitioning) { + Util.reflow(element); + $(element).addClass(ClassName.IN); + } else { + $(element).removeClass(ClassName.FADE); + } - return delta -} + if (element.parentNode && $(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) { + var dropdownElement = $(element).closest(Selector.LI_DROPDOWN)[0]; + if (dropdownElement) { + $(dropdownElement).addClass(ClassName.ACTIVE); + } -/** - * @param {Element=} opt_element - * @return {Object} - * @private - */ -Tooltip.prototype._getPosition = function (opt_element) { - var element = opt_element || this.element - var isBody = element.tagName == 'BODY' - var rect = element.getBoundingClientRect() - var offset = isBody ? { top: 0, left: 0 } : $(element).offset() - var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : this.element.scrollTop } - var outerDims = isBody ? { width: window.innerWidth, height: window.innerHeight } : null - - return $.extend({}, rect, scroll, outerDims, offset) -} + elementToggle = $(element).find(Selector.DATA_TOGGLE)[0]; + if (elementToggle) { + elementToggle.setAttribute('aria-expanded', true); + } + } + if (callback) { + callback(); + } + } + }], [{ + key: 'VERSION', -/** - * @param {{left: number, top: number}} offset - * @param {string} placement - * @private - */ -Tooltip.prototype._applyCalculatedPlacement = function (offset, placement) { - var tip = this.getTipElement() - var width = tip.offsetWidth - var height = tip.offsetHeight - - // manually read margins because getBoundingClientRect includes difference - var marginTop = parseInt(tip.style.marginTop, 10) - var marginLeft = parseInt(tip.style.marginLeft, 10) - - // we must check for NaN for ie 8/9 - if (isNaN(marginTop)) { - marginTop = 0 - } - if (isNaN(marginLeft)) { - marginLeft = 0 - } + // getters - offset.top = offset.top + marginTop - offset.left = offset.left + marginLeft + get: function () { + return VERSION; + } + }, { + key: '_jQueryInterface', - // $.fn.offset doesn't round pixel values - // so we use setOffset directly with our own function B-0 - $.offset.setOffset(tip, $.extend({ - using: function (props) { - tip.style.top = Math.round(props.top) + 'px' - tip.style.left = Math.round(props.left) + 'px' - } - }, offset), 0) + // static - $(tip).addClass(Tooltip._ClassName.IN) + value: function _jQueryInterface(config) { + return this.each(function () { + var $this = $(this); + var data = $this.data(DATA_KEY); - // check to see if placing tip in new offset caused the tip to resize itself - var actualWidth = tip.offsetWidth - var actualHeight = tip.offsetHeight + if (!data) { + data = data = new Tab(this); + $this.data(DATA_KEY, data); + } - if (placement == Tooltip.Direction.TOP && actualHeight != height) { - offset.top = offset.top + height - actualHeight - } + if (typeof config === 'string') { + data[config](); + } + }); + } + }]); - var delta = this._getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight) + return Tab; + })(); - if (delta.left) { - offset.left += delta.left - } else { - offset.top += delta.top - } + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ - var isVertical = placement === Tooltip.Direction.TOP || placement === Tooltip.Direction.BOTTOM - var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight - var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight' + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + event.preventDefault(); + Tab._jQueryInterface.call($(this), 'show'); + }); - $(tip).offset(offset) + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ - this._replaceArrow(arrowDelta, tip[arrowOffsetPosition], isVertical) -} + $.fn[NAME] = Tab._jQueryInterface; + $.fn[NAME].Constructor = Tab; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Tab._jQueryInterface; + }; + return Tab; +})(jQuery); /** - * @param {number} delta - * @param {number} dimension - * @param {boolean} isHorizontal - * @private - */ -Tooltip.prototype._replaceArrow = function (delta, dimension, isHorizontal) { - var arrow = this.getArrowElement() - - arrow.style[isHorizontal ? 'left' : 'top'] = 50 * (1 - delta / dimension) + '%' - arrow.style[isHorizontal ? 'top' : 'left'] = '' -} - + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): tooltip.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Tooltip = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'tooltip'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.tooltip'; + var EVENT_KEY = '.' + DATA_KEY; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 150; + var CLASS_PREFIX = 'bs-tether'; + + var Default = { + animation: true, + template: '<div class="tooltip" role="tooltip">' + '<div class="tooltip-arrow"></div>' + '<div class="tooltip-inner"></div></div>', + trigger: 'hover focus', + title: '', + delay: 0, + html: false, + selector: false, + placement: 'top', + offset: '0 0', + constraints: [] + }; + + var DefaultType = { + animation: 'boolean', + template: 'string', + title: '(string|function)', + trigger: 'string', + delay: '(number|object)', + html: 'boolean', + selector: '(string|boolean)', + placement: '(string|function)', + offset: 'string', + constraints: 'array' + }; + + var AttachmentMap = { + TOP: 'bottom center', + RIGHT: 'middle left', + BOTTOM: 'top center', + LEFT: 'middle right' + }; + + var HoverState = { + IN: 'in', + OUT: 'out' + }; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + INSERTED: 'inserted' + EVENT_KEY, + CLICK: 'click' + EVENT_KEY, + FOCUSIN: 'focusin' + EVENT_KEY, + FOCUSOUT: 'focusout' + EVENT_KEY, + MOUSEENTER: 'mouseenter' + EVENT_KEY, + MOUSELEAVE: 'mouseleave' + EVENT_KEY + }; + + var ClassName = { + FADE: 'fade', + IN: 'in' + }; + + var Selector = { + TOOLTIP: '.tooltip', + TOOLTIP_INNER: '.tooltip-inner' + }; + + var TetherClass = { + element: false, + enabled: false + }; + + var Trigger = { + HOVER: 'hover', + FOCUS: 'focus', + CLICK: 'click', + MANUAL: 'manual' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Tooltip = (function () { + function Tooltip(element, config) { + _classCallCheck(this, Tooltip); + + // private + this._isEnabled = true; + this._timeout = 0; + this._hoverState = ''; + this._activeTrigger = {}; + this._tether = null; + + // protected + this.element = element; + this.config = this._getConfig(config); + this.tip = null; + + this._setListeners(); + } + + _createClass(Tooltip, [{ + key: 'enable', + + // public + + value: function enable() { + this._isEnabled = true; + } + }, { + key: 'disable', + value: function disable() { + this._isEnabled = false; + } + }, { + key: 'toggleEnabled', + value: function toggleEnabled() { + this._isEnabled = !this._isEnabled; + } + }, { + key: 'toggle', + value: function toggle(event) { + var context = this; + var dataKey = this.constructor.DATA_KEY; + + if (event) { + context = $(event.currentTarget).data(dataKey); + + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $(event.currentTarget).data(dataKey, context); + } + context._activeTrigger.click = !context._activeTrigger.click; -/** - * @private - */ -Tooltip.prototype._fixTitle = function () { - if (this.element.getAttribute('title') || typeof this.element.getAttribute('data-original-title') != 'string') { - this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '') - this.element.setAttribute('title', '') - } -} + if (context._isWithActiveTrigger()) { + context._enter(null, context); + } else { + context._leave(null, context); + } + } else { + $(context.getTipElement()).hasClass(ClassName.IN) ? context._leave(null, context) : context._enter(null, context); + } + } + }, { + key: 'dispose', + value: function dispose() { + clearTimeout(this._timeout); + this.cleanupTether(); -/** - * @param {Event=} opt_event - * @param {Object=} opt_context - * @private - */ -Tooltip.prototype._enter = function (opt_event, opt_context) { - var dataKey = this.getDataKey() - var context = opt_context || $(opt_event.currentTarget).data(dataKey) + $.removeData(this.element, this.constructor.DATA_KEY); - if (context && context._tip && context._tip.offsetWidth) { - context._hoverState = Tooltip._HoverState.IN - return - } + $(this.element).off(this.constructor.EVENT_KEY); - if (!context) { - context = new this.constructor(opt_event.currentTarget, this._getDelegateConfig()) - $(opt_event.currentTarget).data(dataKey, context) - } + if (this.tip) { + $(this.tip).remove(); + } - clearTimeout(context._timeout) + this._isEnabled = null; + this._timeout = null; + this._hoverState = null; + this._activeTrigger = null; + this._tether = null; - context._hoverState = Tooltip._HoverState.IN + this.element = null; + this.config = null; + this.tip = null; + } + }, { + key: 'show', + value: function show() { + var _this16 = this; - if (!context.config['delay'] || !context.config['delay']['show']) { - context['show']() - return - } + var showEvent = $.Event(this.constructor.Event.SHOW); - context._timeout = setTimeout(function () { - if (context._hoverState == Tooltip._HoverState.IN) { - context['show']() - } - }, context.config['delay']['show']) -} + if (this.isWithContent() && this._isEnabled) { + $(this.element).trigger(showEvent); + var isInTheDom = $.contains(this.element.ownerDocument.documentElement, this.element); -/** - * @param {Event=} opt_event - * @param {Object=} opt_context - * @private - */ -Tooltip.prototype._leave = function (opt_event, opt_context) { - var dataKey = this.getDataKey() - var context = opt_context || $(opt_event.currentTarget).data(dataKey) + if (showEvent.isDefaultPrevented() || !isInTheDom) { + return; + } - if (!context) { - context = new this.constructor(opt_event.currentTarget, this._getDelegateConfig()) - $(opt_event.currentTarget).data(dataKey, context) - } + var tip = this.getTipElement(); + var tipId = Util.getUID(this.constructor.NAME); - clearTimeout(context._timeout) + tip.setAttribute('id', tipId); + this.element.setAttribute('aria-describedby', tipId); - context._hoverState = Tooltip._HoverState.OUT + this.setContent(); - if (!context.config['delay'] || !context.config['delay']['hide']) { - context['hide']() - return - } + if (this.config.animation) { + $(tip).addClass(ClassName.FADE); + } - context._timeout = setTimeout(function () { - if (context._hoverState == Tooltip._HoverState.OUT) { - context['hide']() - } - }, context.config['delay']['hide']) -} + var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement; + var attachment = this._getAttachment(placement); + $(tip).data(this.constructor.DATA_KEY, this).appendTo(document.body); -/** - * ------------------------------------------------------------------------ - * jQuery Interface + noConflict implementaiton - * ------------------------------------------------------------------------ - */ + $(this.element).trigger(this.constructor.Event.INSERTED); -/** - * @const - * @type {Function} - */ -$.fn[Tooltip._NAME] = Tooltip._jQueryInterface + this._tether = new Tether({ + element: tip, + target: this.element, + attachment: attachment, + classes: TetherClass, + classPrefix: CLASS_PREFIX, + offset: this.config.offset, + constraints: this.config.constraints + }); + Util.reflow(tip); + this._tether.position(); -/** - * @const - * @type {Function} - */ -$.fn[Tooltip._NAME]['Constructor'] = Tooltip + $(tip).addClass(ClassName.IN); + var complete = function complete() { + var prevHoverState = _this16._hoverState; + _this16._hoverState = null; -/** - * @const - * @type {Function} - */ -$.fn[Tooltip._NAME]['noConflict'] = function () { - $.fn[Tooltip._NAME] = Tooltip._JQUERY_NO_CONFLICT - return this -} + $(_this16.element).trigger(_this16.constructor.Event.SHOWN); -/** ======================================================================= - * Bootstrap: popover.js v4.0.0 - * http://getbootstrap.com/javascript/#popovers - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== - * @fileoverview - Bootstrap's popover plugin - extends tooltip. - * - * Public Methods & Properties: - * - * + $.popover - * + $.popover.noConflict - * + $.popover.Constructor - * + $.popover.Constructor.VERSION - * + $.popover.Constructor.Defaults - * + $.popover.Constructor.Defaults.container - * + $.popover.Constructor.Defaults.animation - * + $.popover.Constructor.Defaults.placement - * + $.popover.Constructor.Defaults.selector - * + $.popover.Constructor.Defaults.template - * + $.popover.Constructor.Defaults.trigger - * + $.popover.Constructor.Defaults.title - * + $.popover.Constructor.Defaults.content - * + $.popover.Constructor.Defaults.delay - * + $.popover.Constructor.Defaults.html - * + $.popover.Constructor.Defaults.viewport - * + $.popover.Constructor.Defaults.viewport.selector - * + $.popover.Constructor.Defaults.viewport.padding - * + $.popover.Constructor.prototype.enable - * + $.popover.Constructor.prototype.disable - * + $.popover.Constructor.prototype.destroy - * + $.popover.Constructor.prototype.toggleEnabled - * + $.popover.Constructor.prototype.toggle - * + $.popover.Constructor.prototype.show - * + $.popover.Constructor.prototype.hide - * - * ======================================================================== - */ + if (prevHoverState === HoverState.OUT) { + _this16._leave(null, _this16); + } + }; + Util.supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE) ? $(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(Tooltip._TRANSITION_DURATION) : complete(); + } + } + }, { + key: 'hide', + value: function hide(callback) { + var _this17 = this; + + var tip = this.getTipElement(); + var hideEvent = $.Event(this.constructor.Event.HIDE); + var complete = function complete() { + if (_this17._hoverState !== HoverState.IN && tip.parentNode) { + tip.parentNode.removeChild(tip); + } -'use strict'; + _this17.element.removeAttribute('aria-describedby'); + $(_this17.element).trigger(_this17.constructor.Event.HIDDEN); + _this17.cleanupTether(); + if (callback) { + callback(); + } + }; -if (!Tooltip) throw new Error('Popover requires tooltip.js') + $(this.element).trigger(hideEvent); + if (hideEvent.isDefaultPrevented()) { + return; + } -/** - * Our tooltip class. - * @param {Element!} element - * @param {Object=} opt_config - * @constructor - * @extends {Tooltip} - */ -var Popover = function (element, opt_config) { - Tooltip.apply(this, arguments) -} -Bootstrap.inherits(Popover, Tooltip) + $(tip).removeClass(ClassName.IN); + if (Util.supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE)) { -/** - * @const - * @type {string} - */ -Popover['VERSION'] = '4.0.0' + $(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + } else { + complete(); + } + this._hoverState = ''; + } + }, { + key: 'isWithContent', -/** - * @const - * @type {Object} - */ -Popover['Defaults'] = $.extend({}, $.fn['tooltip']['Constructor']['Defaults'], { - 'placement': 'right', - 'trigger': 'click', - 'content': '', - 'template': '<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>' -}) + // protected + value: function isWithContent() { + return !!this.getTitle(); + } + }, { + key: 'getTipElement', + value: function getTipElement() { + return this.tip = this.tip || $(this.config.template)[0]; + } + }, { + key: 'setContent', + value: function setContent() { + var tip = this.getTipElement(); + var title = this.getTitle(); + var method = this.config.html ? 'innerHTML' : 'innerText'; -/** - * @const - * @type {string} - * @private - */ -Popover._NAME = 'popover' + $(tip).find(Selector.TOOLTIP_INNER)[0][method] = title; + $(tip).removeClass(ClassName.FADE).removeClass(ClassName.IN); -/** - * @const - * @type {string} - * @private - */ -Popover._DATA_KEY = 'bs.popover' + this.cleanupTether(); + } + }, { + key: 'getTitle', + value: function getTitle() { + var title = this.element.getAttribute('data-original-title'); + if (!title) { + title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title; + } -/** - * @const - * @enum {string} - * @private - */ -Popover._Event = { - HIDE : 'hide.bs.popover', - HIDDEN : 'hidden.bs.popover', - SHOW : 'show.bs.popover', - SHOWN : 'shown.bs.popover' -} + return title; + } + }, { + key: 'cleanupTether', + value: function cleanupTether() { + if (this._tether) { + this._tether.destroy(); + + // clean up after tether's junk classes + // remove after they fix issue + // (https://github.com/HubSpot/tether/issues/36) + $(this.element).removeClass(this._removeTetherClasses); + $(this.tip).removeClass(this._removeTetherClasses); + } + } + }, { + key: '_getAttachment', + // private -/** - * @const - * @enum {string} - * @private - */ -Popover._ClassName = { - FADE : 'fade', - IN : 'in' -} + value: function _getAttachment(placement) { + return AttachmentMap[placement.toUpperCase()]; + } + }, { + key: '_setListeners', + value: function _setListeners() { + var _this18 = this; + var triggers = this.config.trigger.split(' '); -/** - * @const - * @enum {string} - * @private - */ -Popover._Selector = { - TITLE : '.popover-title', - CONTENT : '.popover-content', - ARROW : '.popover-arrow' -} + triggers.forEach(function (trigger) { + if (trigger === 'click') { + $(_this18.element).on(_this18.constructor.Event.CLICK, _this18.config.selector, $.proxy(_this18.toggle, _this18)); + } else if (trigger !== Trigger.MANUAL) { + var eventIn = trigger == Trigger.HOVER ? _this18.constructor.Event.MOUSEENTER : _this18.constructor.Event.FOCUSIN; + var eventOut = trigger == Trigger.HOVER ? _this18.constructor.Event.MOUSELEAVE : _this18.constructor.Event.FOCUSOUT; + $(_this18.element).on(eventIn, _this18.config.selector, $.proxy(_this18._enter, _this18)).on(eventOut, _this18.config.selector, $.proxy(_this18._leave, _this18)); + } + }); -/** - * @const - * @type {Function} - * @private - */ -Popover._JQUERY_NO_CONFLICT = $.fn[Popover._NAME] + if (this.config.selector) { + this.config = $.extend({}, this.config, { + trigger: 'manual', + selector: '' + }); + } else { + this._fixTitle(); + } + } + }, { + key: '_removeTetherClasses', + value: function _removeTetherClasses(i, css) { + return ((css.baseVal || css).match(new RegExp('(^|\\s)' + CLASS_PREFIX + '-\\S+', 'g')) || []).join(' '); + } + }, { + key: '_fixTitle', + value: function _fixTitle() { + var titleType = typeof this.element.getAttribute('data-original-title'); + if (this.element.getAttribute('title') || titleType !== 'string') { + this.element.setAttribute('data-original-title', this.element.getAttribute('title') || ''); + this.element.setAttribute('title', ''); + } + } + }, { + key: '_enter', + value: function _enter(event, context) { + var dataKey = this.constructor.DATA_KEY; + context = context || $(event.currentTarget).data(dataKey); -/** - * @param {Object|string=} opt_config - * @this {jQuery} - * @return {jQuery} - * @private - */ -Popover._jQueryInterface = function (opt_config) { - return this.each(function () { - var data = $(this).data(Popover._DATA_KEY) - var config = typeof opt_config === 'object' ? opt_config : null + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $(event.currentTarget).data(dataKey, context); + } - if (!data && opt_config === 'destroy') { - return - } + if (event) { + context._activeTrigger[event.type == 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true; + } - if (!data) { - data = new Popover(this, config) - $(this).data(Popover._DATA_KEY, data) - } + if ($(context.getTipElement()).hasClass(ClassName.IN) || context._hoverState === HoverState.IN) { + context._hoverState = HoverState.IN; + return; + } - if (typeof opt_config === 'string') { - data[opt_config]() - } - }) -} + clearTimeout(context._timeout); + context._hoverState = HoverState.IN; -/** - * @return {string} - * @protected - */ -Popover.prototype.getName = function () { - return Popover._NAME -} + if (!context.config.delay || !context.config.delay.show) { + context.show(); + return; + } + context._timeout = setTimeout(function () { + if (context._hoverState === HoverState.IN) { + context.show(); + } + }, context.config.delay.show); + } + }, { + key: '_leave', + value: function _leave(event, context) { + var dataKey = this.constructor.DATA_KEY; -/** - * @override - */ -Popover.prototype.getDataKey = function () { - return Popover._DATA_KEY -} + context = context || $(event.currentTarget).data(dataKey); + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $(event.currentTarget).data(dataKey, context); + } -/** - * @override - */ -Popover.prototype.getEventObject = function () { - return Popover._Event -} + if (event) { + context._activeTrigger[event.type == 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false; + } + if (context._isWithActiveTrigger()) { + return; + } -/** - * @override - */ -Popover.prototype.getArrowElement = function () { - return (this.arrow = this.arrow || $(this.getTipElement()).find(Popover._Selector.ARROW)[0]) -} + clearTimeout(context._timeout); + context._hoverState = HoverState.OUT; -/** - * @override - */ -Popover.prototype.setContent = function () { - var tip = this.getTipElement() - var title = this.getTitle() - var content = this._getContent() - var titleElement = $(tip).find(Popover._Selector.TITLE)[0] - - if (titleElement) { - titleElement[this.config['html'] ? 'innerHTML' : 'innerText'] = title - } + if (!context.config.delay || !context.config.delay.hide) { + context.hide(); + return; + } - // we use append for html objects to maintain js events - $(tip).find(Popover._Selector.CONTENT).children().detach().end()[ - this.config['html'] ? (typeof content == 'string' ? 'html' : 'append') : 'text' - ](content) + context._timeout = setTimeout(function () { + if (context._hoverState === HoverState.OUT) { + context.hide(); + } + }, context.config.delay.hide); + } + }, { + key: '_isWithActiveTrigger', + value: function _isWithActiveTrigger() { + for (var trigger in this._activeTrigger) { + if (this._activeTrigger[trigger]) { + return true; + } + } - $(tip) - .removeClass(Popover._ClassName.FADE) - .removeClass(Popover._ClassName.IN) + return false; + } + }, { + key: '_getConfig', + value: function _getConfig(config) { + config = $.extend({}, this.constructor.Default, $(this.element).data(), config); + + if (config.delay && typeof config.delay === 'number') { + config.delay = { + show: config.delay, + hide: config.delay + }; + } - for (var direction in Tooltip.Direction) { - $(tip).removeClass(Popover._NAME + '-' + Tooltip.Direction[direction]) - } -} + Util.typeCheckConfig(NAME, config, this.constructor.DefaultType); + return config; + } + }, { + key: '_getDelegateConfig', + value: function _getDelegateConfig() { + var config = {}; + + if (this.config) { + for (var key in this.config) { + var value = this.config[key]; + if (this.constructor.Default[key] !== value) { + config[key] = value; + } + } + } -/** - * @override - */ -Popover.prototype.isWithContent = function () { - return this.getTitle() || this._getContent() -} + return config; + } + }], [{ + key: 'VERSION', + // getters -/** - * @override - */ -Popover.prototype.getTipElement = function () { - return (this.tip = this.tip || $(this.config['template'])[0]) -} + get: function () { + return VERSION; + } + }, { + key: 'Default', + get: function () { + return Default; + } + }, { + key: 'NAME', + get: function () { + return NAME; + } + }, { + key: 'DATA_KEY', + get: function () { + return DATA_KEY; + } + }, { + key: 'Event', + get: function () { + return Event; + } + }, { + key: 'EVENT_KEY', + get: function () { + return EVENT_KEY; + } + }, { + key: 'DefaultType', + get: function () { + return DefaultType; + } + }, { + key: '_jQueryInterface', + // static -/** - * @private - */ -Popover.prototype._getContent = function () { - return this.element.getAttribute('data-content') - || (typeof this.config['content'] == 'function' ? - this.config['content'].call(this.element) : - this.config['content']) -} + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = typeof config === 'object' ? config : null; + if (!data && /destroy|hide/.test(config)) { + return; + } + if (!data) { + data = new Tooltip(this, _config); + $(this).data(DATA_KEY, data); + } -/** - * ------------------------------------------------------------------------ - * jQuery Interface + noConflict implementaiton - * ------------------------------------------------------------------------ - */ + if (typeof config === 'string') { + data[config](); + } + }); + } + }]); -/** - * @const - * @type {Function} - */ -$.fn[Popover._NAME] = Popover._jQueryInterface + return Tooltip; + })(); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ -/** - * @const - * @type {Function} - */ -$.fn[Popover._NAME]['Constructor'] = Popover + $.fn[NAME] = Tooltip._jQueryInterface; + $.fn[NAME].Constructor = Tooltip; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Tooltip._jQueryInterface; + }; + return Tooltip; +})(jQuery); /** - * @const - * @type {Function} - */ -$.fn[Popover._NAME]['noConflict'] = function () { - $.fn[Popover._NAME] = Popover._JQUERY_NO_CONFLICT - return this -} - -/** ======================================================================= - * Bootstrap: tab.js v4.0.0 - * http://getbootstrap.com/javascript/#tabs - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): popover.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== - * @fileoverview - Bootstrap's tab plugin. Tab O_O - * - * Public Methods & Properties: - * - * + $.tab - * + $.tab.noConflict - * + $.tab.Constructor - * + $.tab.Constructor.VERSION - * + $.tab.Constructor.prototype.show - * - * ======================================================================== - */ - - -'use strict'; - -/** - * Our Tab class. - * @param {Element!} element - * @constructor - */ -var Tab = function (element) { - - /** @type {Element} */ - this._element = element - -} - - -/** - * @const - * @type {string} - */ -Tab['VERSION'] = '4.0.0' - - -/** - * @const - * @type {string} - * @private - */ -Tab._NAME = 'tab' - - -/** - * @const - * @type {string} - * @private - */ -Tab._DATA_KEY = 'bs.tab' - - -/** - * @const - * @type {number} - * @private - */ -Tab._TRANSITION_DURATION = 150 - - -/** - * @const - * @enum {string} - * @private - */ -Tab._Event = { - HIDE : 'hide.bs.tab', - HIDDEN : 'hidden.bs.tab', - SHOW : 'show.bs.tab', - SHOWN : 'shown.bs.tab' -} - - -/** - * @const - * @enum {string} - * @private - */ -Tab._ClassName = { - DROPDOWN_MENU : 'dropdown-menu', - ACTIVE : 'active', - FADE : 'fade', - IN : 'in' -} - - -/** - * @const - * @enum {string} - * @private - */ -Tab._Selector = { - A : 'a', - LI : 'li', - LI_DROPDOWN : 'li.dropdown', - UL : 'ul:not(.dropdown-menu)', - FADE_CHILD : ':scope > .fade', - ACTIVE : '.active', - ACTIVE_CHILD : ':scope > .active', - DATA_TOGGLE : '[data-toggle="tab"], [data-toggle="pill"]', - DROPDOWN_ACTIVE_CHILD : ':scope > .dropdown-menu > .active' -} - - -/** - * @param {Object|string=} opt_config - * @this {jQuery} - * @return {jQuery} - * @private - */ -Tab._jQueryInterface = function (opt_config) { - return this.each(function () { - var $this = $(this) - var data = $this.data(Tab._DATA_KEY) - - if (!data) { - data = data = new Tab(this) - $this.data(Tab._DATA_KEY, data) - } - - if (typeof opt_config === 'string') { - data[opt_config]() - } - }) -} - - -/** - * Show the tab - */ -Tab.prototype['show'] = function () { - if ( this._element.parentNode - && this._element.parentNode.nodeType == Node.ELEMENT_NODE - && $(this._element).parent().hasClass(Tab._ClassName.ACTIVE)) { - return - } - - var ulElement = $(this._element).closest(Tab._Selector.UL)[0] - var selector = Bootstrap.getSelectorFromElement(this._element) - - if (ulElement) { - var previous = /** @type {Array.<Element>} */ ($.makeArray($(ulElement).find(Tab._Selector.ACTIVE))) - previous = previous[previous.length - 1] - - if (previous) { - previous = $(previous).find('a')[0] + * -------------------------------------------------------------------------- + */ + +var Popover = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'popover'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.popover'; + var EVENT_KEY = '.' + DATA_KEY; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + + var Default = $.extend({}, Tooltip.Default, { + placement: 'right', + trigger: 'click', + content: '', + template: '<div class="popover" role="tooltip">' + '<div class="popover-arrow"></div>' + '<h3 class="popover-title"></h3>' + '<div class="popover-content"></div></div>' + }); + + var DefaultType = $.extend({}, Tooltip.DefaultType, { + content: '(string|function)' + }); + + var ClassName = { + FADE: 'fade', + IN: 'in' + }; + + var Selector = { + TITLE: '.popover-title', + CONTENT: '.popover-content', + ARROW: '.popover-arrow' + }; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + INSERTED: 'inserted' + EVENT_KEY, + CLICK: 'click' + EVENT_KEY, + FOCUSIN: 'focusin' + EVENT_KEY, + FOCUSOUT: 'focusout' + EVENT_KEY, + MOUSEENTER: 'mouseenter' + EVENT_KEY, + MOUSELEAVE: 'mouseleave' + EVENT_KEY + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Popover = (function (_Tooltip) { + function Popover() { + _classCallCheck(this, Popover); + + if (_Tooltip != null) { + _Tooltip.apply(this, arguments); + } } - } - - var hideEvent = $.Event(Tab._Event.HIDE, { - relatedTarget: this._element - }) - var showEvent = $.Event(Tab._Event.SHOW, { - relatedTarget: previous - }) + _inherits(Popover, _Tooltip); - if (previous) { - $(previous).trigger(hideEvent) - } - - $(this._element).trigger(showEvent) - - if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return - - if (selector) { - var target = $(selector)[0] - } - - this._activate($(this._element).closest(Tab._Selector.LI)[0], ulElement) - - var complete = function () { - var hiddenEvent = $.Event(Tab._Event.HIDDEN, { - relatedTarget: this._element - }) - - var shownEvent = $.Event(Tab._Event.SHOWN, { - relatedTarget: previous - }) - - $(previous).trigger(hiddenEvent) - $(this._element).trigger(shownEvent) - }.bind(this) - - if (target) { - this._activate(target, /** @type {Element} */ (target.parentNode), complete) - } else { - complete() - } -} + _createClass(Popover, [{ + key: 'isWithContent', + // overrides -/** - * @param {Element} element - * @param {Element} container - * @param {Function=} opt_callback - * @private - */ -Tab.prototype._activate = function (element, container, opt_callback) { - var active = $(container).find(Tab._Selector.ACTIVE_CHILD)[0] - var isTransitioning = opt_callback - && Bootstrap.transition - && ((active && $(active).hasClass(Tab._ClassName.FADE)) - || !!$(container).find(Tab._Selector.FADE_CHILD)[0]) - - var complete = this._transitionComplete.bind(this, element, active, isTransitioning, opt_callback) - - if (active && isTransitioning) { - $(active) - .one(Bootstrap.TRANSITION_END, complete) - .emulateTransitionEnd(Tab._TRANSITION_DURATION) - - } else { - complete() - } - - if (active) { - $(active).removeClass(Tab._ClassName.IN) - } -} - - -/** - * @param {Element} element - * @param {Element} active - * @param {boolean} isTransitioning - * @param {Function=} opt_callback - * @private - */ -Tab.prototype._transitionComplete = function (element, active, isTransitioning, opt_callback) { - if (active) { - $(active).removeClass(Tab._ClassName.ACTIVE) - - var dropdownChild = $(active).find(Tab._Selector.DROPDOWN_ACTIVE_CHILD)[0] - if (dropdownChild) { - $(dropdownChild).removeClass(Tab._ClassName.ACTIVE) - } - - var activeToggle = $(active).find(Tab._Selector.DATA_TOGGLE)[0] - if (activeToggle) { - activeToggle.setAttribute('aria-expanded', false) - } - } - - $(element).addClass(Tab._ClassName.ACTIVE) + value: function isWithContent() { + return this.getTitle() || this._getContent(); + } + }, { + key: 'getTipElement', + value: function getTipElement() { + return this.tip = this.tip || $(this.config.template)[0]; + } + }, { + key: 'setContent', + value: function setContent() { + var tip = this.getTipElement(); + var title = this.getTitle(); + var content = this._getContent(); + var titleElement = $(tip).find(Selector.TITLE)[0]; + + if (titleElement) { + titleElement[this.config.html ? 'innerHTML' : 'innerText'] = title; + } - var elementToggle = $(element).find(Tab._Selector.DATA_TOGGLE)[0] - if (elementToggle) { - elementToggle.setAttribute('aria-expanded', true) - } + // we use append for html objects to maintain js events + $(tip).find(Selector.CONTENT).children().detach().end()[this.config.html ? typeof content === 'string' ? 'html' : 'append' : 'text'](content); - if (isTransitioning) { - Bootstrap.reflow(element) - $(element).addClass(Tab._ClassName.IN) - } else { - $(element).removeClass(Tab._ClassName.FADE) - } + $(tip).removeClass(ClassName.FADE).removeClass(ClassName.IN); - if (element.parentNode && $(element.parentNode).hasClass(Tab._ClassName.DROPDOWN_MENU)) { - var dropdownElement = $(element).closest(Tab._Selector.LI_DROPDOWN)[0] - if (dropdownElement) { - $(dropdownElement).addClass(Tab._ClassName.ACTIVE) - } + this.cleanupTether(); + } + }, { + key: '_getContent', - elementToggle = $(element).find(Tab._Selector.DATA_TOGGLE)[0] - if (elementToggle) { - elementToggle.setAttribute('aria-expanded', true) - } - } + // private - if (opt_callback) { - opt_callback() - } -} + value: function _getContent() { + return this.element.getAttribute('data-content') || (typeof this.config.content == 'function' ? this.config.content.call(this.element) : this.config.content); + } + }], [{ + key: 'VERSION', + // getters -/** - * ------------------------------------------------------------------------ - * jQuery Interface + noConflict implementaiton - * ------------------------------------------------------------------------ - */ + get: function () { + return VERSION; + } + }, { + key: 'Default', + get: function () { + return Default; + } + }, { + key: 'NAME', + get: function () { + return NAME; + } + }, { + key: 'DATA_KEY', + get: function () { + return DATA_KEY; + } + }, { + key: 'Event', + get: function () { + return Event; + } + }, { + key: 'EVENT_KEY', + get: function () { + return EVENT_KEY; + } + }, { + key: 'DefaultType', + get: function () { + return DefaultType; + } + }, { + key: '_jQueryInterface', -/** - * @const - * @type {Function} - */ -$.fn[Tab._NAME] = Tab._jQueryInterface + // static + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = typeof config === 'object' ? config : null; -/** - * @const - * @type {Function} - */ -$.fn[Tab._NAME]['Constructor'] = Tab + if (!data && /destroy|hide/.test(config)) { + return; + } + if (!data) { + data = new Popover(this, _config); + $(this).data(DATA_KEY, data); + } -/** - * @const - * @type {Function} - */ -$.fn[Tab._NAME]['noConflict'] = function () { - $.fn[Tab._NAME] = Tab._JQUERY_NO_CONFLICT - return this -} + if (typeof config === 'string') { + data[config](); + } + }); + } + }]); + return Popover; + })(Tooltip); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ -// TAB DATA-API -// ============ + $.fn[NAME] = Popover._jQueryInterface; + $.fn[NAME].Constructor = Popover; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Popover._jQueryInterface; + }; -var clickHandler = function (e) { - e.preventDefault() - Tab._jQueryInterface.call($(this), 'show') -} + return Popover; +})(jQuery); -$(document) - .on('click.bs.tab.data-api', Tab._Selector.DATA_TOGGLE, clickHandler) +}(jQuery); diff --git a/docs/dist/js/bootstrap.min.js b/docs/dist/js/bootstrap.min.js index 089780400d..497cc8176c 100644 --- a/docs/dist/js/bootstrap.min.js +++ b/docs/dist/js/bootstrap.min.js @@ -3,75 +3,6 @@ * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) */ -if (typeof jQuery === 'undefined') { - throw new Error('Bootstrap\'s JavaScript requires jQuery') -} -+function ($) { - var version = $.fn.jquery.split(' ')[0].split('.') - if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) { - throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher') - } -}(jQuery); +if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(jQuery),+function(){"use strict";function a(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(a.__proto__=b)}function b(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}{var c=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),d=function(a){function b(a){return{}.toString.call(a).match(/\s([a-zA-Z]+)/)[1].toLowerCase()}function c(a){return(a[0]||a).nodeType}function d(){return{bindType:h.end,delegateType:h.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}}}function e(){if(window.QUnit)return!1;var a=document.createElement("bootstrap");for(var b in i)if(void 0!==a.style[b])return{end:i[b]};return!1}function f(b){var c=this,d=!1;return a(this).one(j.TRANSITION_END,function(){d=!0}),setTimeout(function(){d||j.triggerTransitionEnd(c)},b),this}function g(){h=e(),a.fn.emulateTransitionEnd=f,j.supportsTransitionEnd()&&(a.event.special[j.TRANSITION_END]=d())}var h=!1,i={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},j={TRANSITION_END:"bsTransitionEnd",getUID:function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},getSelectorFromElement:function(a){var b=a.getAttribute("data-target");return b||(b=a.getAttribute("href")||"",b=/^#[a-z]/i.test(b)?b:null),b},reflow:function(a){new Function("bs","return bs")(a.offsetHeight)},triggerTransitionEnd:function(b){a(b).trigger(h.end)},supportsTransitionEnd:function(){return!!h},typeCheckConfig:function(a,d,e){for(var f in e){var g=e[f],h=d[f],i=void 0;if(i=h&&c(h)?"element":b(h),!new RegExp(g).test(i))throw new Error(""+a.toUpperCase()+": "+('Option "'+f+'" provided type "'+i+'" ')+('but expected type "'+g+'".'))}}};return g(),j}(jQuery),e=(function(a){var e="alert",f="4.0.0",g="bs.alert",h="."+g,i=".data-api",j=a.fn[e],k=150,l={DISMISS:'[data-dismiss="alert"]'},m={CLOSE:"close"+h,CLOSED:"closed"+h,CLICK_DATA_API:"click"+h+i},n={ALERT:"alert",FADE:"fade",IN:"in"},o=function(){function e(a){b(this,e),this._element=a}return c(e,[{key:"close",value:function(a){a=a||this._element;var b=this._getRootElement(a),c=this._triggerCloseEvent(b);c.isDefaultPrevented()||this._removeElement(b)}},{key:"dispose",value:function(){a.removeData(this._element,g),this._element=null}},{key:"_getRootElement",value:function(b){var c=!1,e=d.getSelectorFromElement(b);return e&&(c=a(e)[0]),c||(c=a(b).closest("."+n.ALERT)[0]),c}},{key:"_triggerCloseEvent",value:function(b){var c=a.Event(m.CLOSE);return a(b).trigger(c),c}},{key:"_removeElement",value:function(b){return a(b).removeClass(n.IN),d.supportsTransitionEnd()&&a(b).hasClass(n.FADE)?void a(b).one(d.TRANSITION_END,this._destroyElement.bind(this,b)).emulateTransitionEnd(k):void this._destroyElement(b)}},{key:"_destroyElement",value:function(b){a(b).detach().trigger(m.CLOSED).remove()}}],[{key:"VERSION",get:function(){return f}},{key:"_jQueryInterface",value:function(b){return this.each(function(){var c=a(this),d=c.data(g);d||(d=new e(this),c.data(g,d)),"close"===b&&d[b](this)})}},{key:"_handleDismiss",value:function(a){return function(b){b&&b.preventDefault(),a.close(this)}}}]),e}();return a(document).on(m.CLICK_DATA_API,l.DISMISS,o._handleDismiss(new o)),a.fn[e]=o._jQueryInterface,a.fn[e].Constructor=o,a.fn[e].noConflict=function(){return a.fn[e]=j,o._jQueryInterface},o}(jQuery),function(a){var d="button",e="4.0.0",f="bs.button",g="."+f,h=".data-api",i=a.fn[d],j={ACTIVE:"active",BUTTON:"btn",FOCUS:"focus"},k={DATA_TOGGLE_CARROT:'[data-toggle^="button"]',DATA_TOGGLE:'[data-toggle="buttons"]',INPUT:"input",ACTIVE:".active",BUTTON:".btn"},l={CLICK_DATA_API:"click"+g+h,FOCUS_BLUR_DATA_API:"focus"+g+h+" "+("blur"+g+h)},m=function(){function d(a){b(this,d),this._element=a}return c(d,[{key:"toggle",value:function(){var b=!0,c=a(this._element).closest(k.DATA_TOGGLE)[0];if(c){var d=a(this._element).find(k.INPUT)[0];if(d){if("radio"===d.type)if(d.checked&&a(this._element).hasClass(j.ACTIVE))b=!1;else{var e=a(c).find(k.ACTIVE)[0];e&&a(e).removeClass(j.ACTIVE)}b&&(d.checked=!a(this._element).hasClass(j.ACTIVE),a(this._element).trigger("change"))}}else this._element.setAttribute("aria-pressed",!a(this._element).hasClass(j.ACTIVE));b&&a(this._element).toggleClass(j.ACTIVE)}},{key:"dispose",value:function(){a.removeData(this._element,f),this._element=null}}],[{key:"VERSION",get:function(){return e}},{key:"_jQueryInterface",value:function(b){return this.each(function(){var c=a(this).data(f);c||(c=new d(this),a(this).data(f,c)),"toggle"===b&&c[b]()})}}]),d}();return a(document).on(l.CLICK_DATA_API,k.DATA_TOGGLE_CARROT,function(b){b.preventDefault();var c=b.target;a(c).hasClass(j.BUTTON)||(c=a(c).closest(k.BUTTON)),m._jQueryInterface.call(a(c),"toggle")}).on(l.FOCUS_BLUR_DATA_API,k.DATA_TOGGLE_CARROT,function(b){var c=a(b.target).closest(k.BUTTON)[0];a(c).toggleClass(j.FOCUS,/^focus(in)?$/.test(b.type))}),a.fn[d]=m._jQueryInterface,a.fn[d].Constructor=m,a.fn[d].noConflict=function(){return a.fn[d]=i,m._jQueryInterface},m}(jQuery),function(a){var e="carousel",f="4.0.0",g="bs.carousel",h="."+g,i=".data-api",j=a.fn[e],k=600,l={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0},m={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean"},n={NEXT:"next",PREVIOUS:"prev"},o={SLIDE:"slide"+h,SLID:"slid"+h,KEYDOWN:"keydown"+h,MOUSEENTER:"mouseenter"+h,MOUSELEAVE:"mouseleave"+h,LOAD_DATA_API:"load"+h+i,CLICK_DATA_API:"click"+h+i},p={CAROUSEL:"carousel",ACTIVE:"active",SLIDE:"slide",RIGHT:"right",LEFT:"left",ITEM:"carousel-item"},q={ACTIVE:".active",ACTIVE_ITEM:".active.carousel-item",ITEM:".carousel-item",NEXT_PREV:".next, .prev",INDICATORS:".carousel-indicators",DATA_SLIDE:"[data-slide], [data-slide-to]",DATA_RIDE:'[data-ride="carousel"]'},r=function(){function i(c,d){b(this,i),this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this._config=this._getConfig(d),this._element=a(c)[0],this._indicatorsElement=a(this._element).find(q.INDICATORS)[0],this._addEventListeners()}return c(i,[{key:"next",value:function(){this._isSliding||this._slide(n.NEXT)}},{key:"prev",value:function(){this._isSliding||this._slide(n.PREVIOUS)}},{key:"pause",value:function(b){b||(this._isPaused=!0),a(this._element).find(q.NEXT_PREV)[0]&&d.supportsTransitionEnd()&&(d.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null}},{key:"cycle",value:function(b){b||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._interval=setInterval(a.proxy(this.next,this),this._config.interval))}},{key:"to",value:function(b){var c=this;this._activeElement=a(this._element).find(q.ACTIVE_ITEM)[0];var d=this._getItemIndex(this._activeElement);if(!(b>this._items.length-1||0>b)){if(this._isSliding)return void a(this._element).one(o.SLID,function(){return c.to(b)});if(d==b)return this.pause(),void this.cycle();var e=b>d?n.NEXT:n.PREVIOUS;this._slide(e,this._items[b])}}},{key:"dispose",value:function(){a(this._element).off(h),a.removeData(this._element,g),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null}},{key:"_getConfig",value:function(b){return b=a.extend({},l,b),d.typeCheckConfig(e,b,m),b}},{key:"_addEventListeners",value:function(){this._config.keyboard&&a(this._element).on(o.KEYDOWN,a.proxy(this._keydown,this)),"hover"!=this._config.pause||"ontouchstart"in document.documentElement||a(this._element).on(o.MOUSEENTER,a.proxy(this.pause,this)).on(o.MOUSELEAVE,a.proxy(this.cycle,this))}},{key:"_keydown",value:function(a){if(a.preventDefault(),!/input|textarea/i.test(a.target.tagName))switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}}},{key:"_getItemIndex",value:function(b){return this._items=a.makeArray(a(b).parent().find(q.ITEM)),this._items.indexOf(b)}},{key:"_getItemByDirection",value:function(a,b){var c=a===n.NEXT,d=a===n.PREVIOUS,e=this._getItemIndex(b),f=this._items.length-1,g=d&&0===e||c&&e==f;if(g&&!this._config.wrap)return b;var h=a==n.PREVIOUS?-1:1,i=(e+h)%this._items.length;return-1===i?this._items[this._items.length-1]:this._items[i]}},{key:"_triggerSlideEvent",value:function(b,c){var d=a.Event(o.SLIDE,{relatedTarget:b,direction:c});return a(this._element).trigger(d),d}},{key:"_setActiveIndicatorElement",value:function(b){if(this._indicatorsElement){a(this._indicatorsElement).find(q.ACTIVE).removeClass(p.ACTIVE);var c=this._indicatorsElement.children[this._getItemIndex(b)];c&&a(c).addClass(p.ACTIVE)}}},{key:"_slide",value:function(b,c){var e=this,f=a(this._element).find(q.ACTIVE_ITEM)[0],g=c||f&&this._getItemByDirection(b,f),h=!!this._interval,i=b==n.NEXT?p.LEFT:p.RIGHT;if(g&&a(g).hasClass(p.ACTIVE))return void(this._isSliding=!1);var j=this._triggerSlideEvent(g,i);if(!j.isDefaultPrevented()&&f&&g){this._isSliding=!0,h&&this.pause(),this._setActiveIndicatorElement(g);var l=a.Event(o.SLID,{relatedTarget:g,direction:i});d.supportsTransitionEnd()&&a(this._element).hasClass(p.SLIDE)?(a(g).addClass(b),d.reflow(g),a(f).addClass(i),a(g).addClass(i),a(f).one(d.TRANSITION_END,function(){a(g).removeClass(i).removeClass(b),a(g).addClass(p.ACTIVE),a(f).removeClass(p.ACTIVE).removeClass(b).removeClass(i),e._isSliding=!1,setTimeout(function(){return a(e._element).trigger(l)},0)}).emulateTransitionEnd(k)):(a(f).removeClass(p.ACTIVE),a(g).addClass(p.ACTIVE),this._isSliding=!1,a(this._element).trigger(l)),h&&this.cycle()}}}],[{key:"VERSION",get:function(){return f}},{key:"Default",get:function(){return l}},{key:"_jQueryInterface",value:function(b){return this.each(function(){var c=a(this).data(g),d=a.extend({},l,a(this).data());"object"==typeof b&&a.extend(d,b);var e="string"==typeof b?b:d.slide;c||(c=new i(this,d),a(this).data(g,c)),"number"==typeof b?c.to(b):e?c[e]():d.interval&&(c.pause(),c.cycle())})}},{key:"_dataApiClickHandler",value:function(b){var c=d.getSelectorFromElement(this);if(c){var e=a(c)[0];if(e&&a(e).hasClass(p.CAROUSEL)){var f=a.extend({},a(e).data(),a(this).data()),h=this.getAttribute("data-slide-to");h&&(f.interval=!1),i._jQueryInterface.call(a(e),f),h&&a(e).data(g).to(h),b.preventDefault()}}}}]),i}();return a(document).on(o.CLICK_DATA_API,q.DATA_SLIDE,r._dataApiClickHandler),a(window).on(o.LOAD_DATA_API,function(){a(q.DATA_RIDE).each(function(){var b=a(this);r._jQueryInterface.call(b,b.data())})}),a.fn[e]=r._jQueryInterface,a.fn[e].Constructor=r,a.fn[e].noConflict=function(){return a.fn[e]=j,r._jQueryInterface},r}(jQuery),function(a){var e="collapse",f="4.0.0",g="bs.collapse",h="."+g,i=".data-api",j=a.fn[e],k=600,l={toggle:!0,parent:""},m={toggle:"boolean",parent:"string"},n={SHOW:"show"+h,SHOWN:"shown"+h,HIDE:"hide"+h,HIDDEN:"hidden"+h,CLICK_DATA_API:"click"+h+i},o={IN:"in",COLLAPSE:"collapse",COLLAPSING:"collapsing",COLLAPSED:"collapsed"},p={WIDTH:"width",HEIGHT:"height"},q={ACTIVES:".panel > .in, .panel > .collapsing",DATA_TOGGLE:'[data-toggle="collapse"]'},r=function(){function h(c,d){b(this,h),this._isTransitioning=!1,this._element=c,this._config=this._getConfig(d),this._triggerArray=a.makeArray(a('[data-toggle="collapse"][href="#'+c.id+'"],'+('[data-toggle="collapse"][data-target="#'+c.id+'"]'))),this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}return c(h,[{key:"toggle",value:function(){a(this._element).hasClass(o.IN)?this.hide():this.show()}},{key:"show",value:function(){var b=this;if(!this._isTransitioning&&!a(this._element).hasClass(o.IN)){var c=void 0,e=void 0;if(this._parent&&(c=a.makeArray(a(q.ACTIVES)),c.length||(c=null)),!(c&&(e=a(c).data(g),e&&e._isTransitioning))){var f=a.Event(n.SHOW);if(a(this._element).trigger(f),!f.isDefaultPrevented()){c&&(h._jQueryInterface.call(a(c),"hide"),e||a(c).data(g,null));var i=this._getDimension();a(this._element).removeClass(o.COLLAPSE).addClass(o.COLLAPSING),this._element.style[i]=0,this._element.setAttribute("aria-expanded",!0),this._triggerArray.length&&a(this._triggerArray).removeClass(o.COLLAPSED).attr("aria-expanded",!0),this.setTransitioning(!0);var j=function(){a(b._element).removeClass(o.COLLAPSING).addClass(o.COLLAPSE).addClass(o.IN),b._element.style[i]="",b.setTransitioning(!1),a(b._element).trigger(n.SHOWN)};if(!d.supportsTransitionEnd())return void j();var l="scroll"+(i[0].toUpperCase()+i.slice(1));a(this._element).one(d.TRANSITION_END,j).emulateTransitionEnd(k),this._element.style[i]=this._element[l]+"px"}}}}},{key:"hide",value:function(){var b=this;if(!this._isTransitioning&&a(this._element).hasClass(o.IN)){var c=a.Event(n.HIDE);if(a(this._element).trigger(c),!c.isDefaultPrevented()){var e=this._getDimension(),f=e===p.WIDTH?"offsetWidth":"offsetHeight";this._element.style[e]=this._element[f]+"px",d.reflow(this._element),a(this._element).addClass(o.COLLAPSING).removeClass(o.COLLAPSE).removeClass(o.IN),this._element.setAttribute("aria-expanded",!1),this._triggerArray.length&&a(this._triggerArray).addClass(o.COLLAPSED).attr("aria-expanded",!1),this.setTransitioning(!0);var g=function(){b.setTransitioning(!1),a(b._element).removeClass(o.COLLAPSING).addClass(o.COLLAPSE).trigger(n.HIDDEN)};return this._element.style[e]=0,d.supportsTransitionEnd()?void a(this._element).one(d.TRANSITION_END,g).emulateTransitionEnd(k):g()}}}},{key:"setTransitioning",value:function(a){this._isTransitioning=a}},{key:"dispose",value:function(){a.removeData(this._element,g),this._config=null,this._parent=null,this._element=null,this._triggerArray=null,this._isTransitioning=null}},{key:"_getConfig",value:function(b){return b=a.extend({},l,b),b.toggle=!!b.toggle,d.typeCheckConfig(e,b,m),b}},{key:"_getDimension",value:function(){var b=a(this._element).hasClass(p.WIDTH);return b?p.WIDTH:p.HEIGHT}},{key:"_getParent",value:function(){var b=this,c=a(this._config.parent)[0],d='[data-toggle="collapse"][data-parent="'+this._config.parent+'"]';return a(c).find(d).each(function(a,c){b._addAriaAndCollapsedClass(h._getTargetFromElement(c),[c])}),c}},{key:"_addAriaAndCollapsedClass",value:function(b,c){if(b){var d=a(b).hasClass(o.IN);b.setAttribute("aria-expanded",d),c.length&&a(c).toggleClass(o.COLLAPSED,!d).attr("aria-expanded",d)}}}],[{key:"VERSION",get:function(){return f}},{key:"Default",get:function(){return l}},{key:"_getTargetFromElement",value:function(b){var c=d.getSelectorFromElement(b);return c?a(c)[0]:null}},{key:"_jQueryInterface",value:function(b){return this.each(function(){var c=a(this),d=c.data(g),e=a.extend({},l,c.data(),"object"==typeof b&&b);!d&&e.toggle&&/show|hide/.test(b)&&(e.toggle=!1),d||(d=new h(this,e),c.data(g,d)),"string"==typeof b&&d[b]()})}}]),h}();return a(document).on(n.CLICK_DATA_API,q.DATA_TOGGLE,function(b){b.preventDefault();var c=r._getTargetFromElement(this),d=a(c).data(g),e=d?"toggle":a(this).data();r._jQueryInterface.call(a(c),e)}),a.fn[e]=r._jQueryInterface,a.fn[e].Constructor=r,a.fn[e].noConflict=function(){return a.fn[e]=j,r._jQueryInterface},r}(jQuery),function(a){var e="dropdown",f="4.0.0",g="bs.dropdown",h="."+g,i=".data-api",j=a.fn[e],k={HIDE:"hide"+h,HIDDEN:"hidden"+h,SHOW:"show"+h,SHOWN:"shown"+h,CLICK:"click"+h,CLICK_DATA_API:"click"+h+i,KEYDOWN_DATA_API:"keydown"+h+i},l={BACKDROP:"dropdown-backdrop",DISABLED:"disabled",OPEN:"open"},m={BACKDROP:".dropdown-backdrop",DATA_TOGGLE:'[data-toggle="dropdown"]',FORM_CHILD:".dropdown form",ROLE_MENU:'[role="menu"]',ROLE_LISTBOX:'[role="listbox"]',NAVBAR_NAV:".navbar-nav",VISIBLE_ITEMS:'[role="menu"] li:not(.disabled) a, [role="listbox"] li:not(.disabled) a'},n=function(){function e(a){b(this,e),this._element=a,this._addEventListeners()}return c(e,[{key:"toggle",value:function(){if(!this.disabled&&!a(this).hasClass(l.DISABLED)){var b=e._getParentFromElement(this),c=a(b).hasClass(l.OPEN);if(e._clearMenus(),c)return!1;if("ontouchstart"in document.documentElement&&!a(b).closest(m.NAVBAR_NAV).length){var d=document.createElement("div");d.className=l.BACKDROP,a(d).insertBefore(this),a(d).on("click",e._clearMenus)}var f={relatedTarget:this},g=a.Event(k.SHOW,f);if(a(b).trigger(g),!g.isDefaultPrevented())return this.focus(),this.setAttribute("aria-expanded","true"),a(b).toggleClass(l.OPEN),a(b).trigger(k.SHOWN,f),!1}}},{key:"dispose",value:function(){a.removeData(this._element,g),a(this._element).off(h),this._element=null}},{key:"_addEventListeners",value:function(){a(this._element).on(k.CLICK,this.toggle)}}],[{key:"VERSION",get:function(){return f}},{key:"_jQueryInterface",value:function(b){return this.each(function(){var c=a(this).data(g);c||a(this).data(g,c=new e(this)),"string"==typeof b&&c[b].call(this)})}},{key:"_clearMenus",value:function(b){if(!b||3!==b.which){var c=a(m.BACKDROP)[0];c&&c.parentNode.removeChild(c);for(var d=a.makeArray(a(m.DATA_TOGGLE)),f=0;f<d.length;f++){var g=e._getParentFromElement(d[f]),h={relatedTarget:d[f]};if(a(g).hasClass(l.OPEN)&&!(b&&"click"===b.type&&/input|textarea/i.test(b.target.tagName)&&a.contains(g,b.target))){var i=a.Event(k.HIDE,h);a(g).trigger(i),i.isDefaultPrevented()||(d[f].setAttribute("aria-expanded","false"),a(g).removeClass(l.OPEN).trigger(k.HIDDEN,h))}}}}},{key:"_getParentFromElement",value:function(b){var c=void 0,e=d.getSelectorFromElement(b);return e&&(c=a(e)[0]),c||b.parentNode}},{key:"_dataApiKeydownHandler",value:function(b){if(/(38|40|27|32)/.test(b.which)&&!/input|textarea/i.test(b.target.tagName)&&(b.preventDefault(),b.stopPropagation(),!this.disabled&&!a(this).hasClass(l.DISABLED))){var c=e._getParentFromElement(this),d=a(c).hasClass(l.OPEN);if(!d&&27!==b.which||d&&27===b.which){if(27===b.which){var f=a(c).find(m.DATA_TOGGLE)[0];a(f).trigger("focus")}return void a(this).trigger("click")}var g=a.makeArray(a(m.VISIBLE_ITEMS));if(g=g.filter(function(a){return a.offsetWidth||a.offsetHeight}),g.length){var h=g.indexOf(b.target);38===b.which&&h>0&&h--,40===b.which&&h<g.length-1&&h++,~h||(h=0),g[h].focus()}}}}]),e}();return a(document).on(k.KEYDOWN_DATA_API,m.DATA_TOGGLE,n._dataApiKeydownHandler).on(k.KEYDOWN_DATA_API,m.ROLE_MENU,n._dataApiKeydownHandler).on(k.KEYDOWN_DATA_API,m.ROLE_LISTBOX,n._dataApiKeydownHandler).on(k.CLICK_DATA_API,n._clearMenus).on(k.CLICK_DATA_API,m.DATA_TOGGLE,n.prototype.toggle).on(k.CLICK_DATA_API,m.FORM_CHILD,function(a){a.stopPropagation()}),a.fn[e]=n._jQueryInterface,a.fn[e].Constructor=n,a.fn[e].noConflict=function(){return a.fn[e]=j,n._jQueryInterface},n}(jQuery),function(a){var e="modal",f="4.0.0",g="bs.modal",h="."+g,i=".data-api",j=a.fn[e],k=300,l=150,m={backdrop:!0,keyboard:!0,focus:!0,show:!0},n={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean",show:"boolean"},o={HIDE:"hide"+h,HIDDEN:"hidden"+h,SHOW:"show"+h,SHOWN:"shown"+h,FOCUSIN:"focusin"+h,RESIZE:"resize"+h,CLICK_DISMISS:"click.dismiss"+h,KEYDOWN_DISMISS:"keydown.dismiss"+h,MOUSEUP_DISMISS:"mouseup.dismiss"+h,MOUSEDOWN_DISMISS:"mousedown.dismiss"+h,CLICK_DATA_API:"click"+h+i},p={BACKDROP:"modal-backdrop",OPEN:"modal-open",FADE:"fade",IN:"in"},q={DIALOG:".modal-dialog",DATA_TOGGLE:'[data-toggle="modal"]',DATA_DISMISS:'[data-dismiss="modal"]',SCROLLBAR_MEASURER:"modal-scrollbar-measure"},r=function(){function i(c,d){b(this,i),this._config=this._getConfig(d),this._element=c,this._dialog=a(c).find(q.DIALOG)[0],this._backdrop=null,this._isShown=!1,this._isBodyOverflowing=!1,this._ignoreBackdropClick=!1,this._originalBodyPadding=0,this._scrollbarWidth=0}return c(i,[{key:"toggle",value:function(a){return this._isShown?this.hide():this.show(a)}},{key:"show",value:function(b){var c=this,d=a.Event(o.SHOW,{relatedTarget:b});a(this._element).trigger(d),this._isShown||d.isDefaultPrevented()||(this._isShown=!0,this._checkScrollbar(),this._setScrollbar(),a(document.body).addClass(p.OPEN),this._setEscapeEvent(),this._setResizeEvent(),a(this._element).on(o.CLICK_DISMISS,q.DATA_DISMISS,a.proxy(this.hide,this)),a(this._dialog).on(o.MOUSEDOWN_DISMISS,function(){a(c._element).one(o.MOUSEUP_DISMISS,function(b){a(b.target).is(c._element)&&(that._ignoreBackdropClick=!0)})}),this._showBackdrop(a.proxy(this._showElement,this,b)))}},{key:"hide",value:function(b){b&&b.preventDefault();var c=a.Event(o.HIDE);a(this._element).trigger(c),this._isShown&&!c.isDefaultPrevented()&&(this._isShown=!1,this._setEscapeEvent(),this._setResizeEvent(),a(document).off(o.FOCUSIN),a(this._element).removeClass(p.IN),a(this._element).off(o.CLICK_DISMISS),a(this._dialog).off(o.MOUSEDOWN_DISMISS),d.supportsTransitionEnd()&&a(this._element).hasClass(p.FADE)?a(this._element).one(d.TRANSITION_END,a.proxy(this._hideModal,this)).emulateTransitionEnd(k):this._hideModal())}},{key:"dispose",value:function(){a.removeData(this._element,g),a(window).off(h),a(document).off(h),a(this._element).off(h),a(this._backdrop).off(h),this._config=null,this._element=null,this._dialog=null,this._backdrop=null,this._isShown=null,this._isBodyOverflowing=null,this._ignoreBackdropClick=null,this._originalBodyPadding=null,this._scrollbarWidth=null}},{key:"_getConfig",value:function(b){return b=a.extend({},m,b),d.typeCheckConfig(e,b,n),b}},{key:"_showElement",value:function(b){var c=this,e=d.supportsTransitionEnd()&&a(this._element).hasClass(p.FADE);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.scrollTop=0,e&&d.reflow(this._element),a(this._element).addClass(p.IN),this._config.focus&&this._enforceFocus();var f=a.Event(o.SHOWN,{relatedTarget:b}),g=function(){c._config.focus&&c._element.focus(),a(c._element).trigger(f)};e?a(this._dialog).one(d.TRANSITION_END,g).emulateTransitionEnd(k):g()}},{key:"_enforceFocus",value:function(){var b=this;a(document).off(o.FOCUSIN).on(o.FOCUSIN,function(c){b._element===c.target||a(b._element).has(c.target).length||b._element.focus()})}},{key:"_setEscapeEvent",value:function(){var b=this;this._isShown&&this._config.keyboard?a(this._element).on(o.KEYDOWN_DISMISS,function(a){27===a.which&&b.hide()}):this._isShown||a(this._element).off(o.KEYDOWN_DISMISS)}},{key:"_setResizeEvent",value:function(){this._isShown?a(window).on(o.RESIZE,a.proxy(this._handleUpdate,this)):a(window).off(o.RESIZE)}},{key:"_hideModal",value:function(){var b=this;this._element.style.display="none",this._showBackdrop(function(){a(document.body).removeClass(p.OPEN),b._resetAdjustments(),b._resetScrollbar(),a(b._element).trigger(o.HIDDEN)})}},{key:"_removeBackdrop",value:function(){this._backdrop&&(a(this._backdrop).remove(),this._backdrop=null)}},{key:"_showBackdrop",value:function(b){var c=this,e=a(this._element).hasClass(p.FADE)?p.FADE:"";if(this._isShown&&this._config.backdrop){var f=d.supportsTransitionEnd()&&e;if(this._backdrop=document.createElement("div"),this._backdrop.className=p.BACKDROP,e&&a(this._backdrop).addClass(e),a(this._backdrop).appendTo(this.$body),a(this._element).on(o.CLICK_DISMISS,function(a){return c._ignoreBackdropClick?void(c._ignoreBackdropClick=!1):void(a.target===a.currentTarget&&("static"===c._config.backdrop?c._element.focus():c.hide()))}),f&&d.reflow(this._backdrop),a(this._backdrop).addClass(p.IN),!b)return;if(!f)return void b();a(this._backdrop).one(d.TRANSITION_END,b).emulateTransitionEnd(l)}else if(!this._isShown&&this._backdrop){a(this._backdrop).removeClass(p.IN);var g=function(){c._removeBackdrop(),b&&b()};d.supportsTransitionEnd()&&a(this._element).hasClass(p.FADE)?a(this._backdrop).one(d.TRANSITION_END,g).emulateTransitionEnd(l):g()}else b&&b()}},{key:"_handleUpdate",value:function(){this._adjustDialog()}},{key:"_adjustDialog",value:function(){var a=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&a&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!a&&(this._element.style.paddingRight=this._scrollbarWidth+"px")}},{key:"_resetAdjustments",value:function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}},{key:"_checkScrollbar",value:function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this._isBodyOverflowing=document.body.clientWidth<a,this._scrollbarWidth=this._getScrollbarWidth()}},{key:"_setScrollbar",value:function(){var b=parseInt(a(document.body).css("padding-right")||0,10);this._originalBodyPadding=document.body.style.paddingRight||"",this._isBodyOverflowing&&(document.body.style.paddingRight=b+this._scrollbarWidth+"px")}},{key:"_resetScrollbar",value:function(){document.body.style.paddingRight=this._originalBodyPadding}},{key:"_getScrollbarWidth",value:function(){var a=document.createElement("div");a.className=q.SCROLLBAR_MEASURER,document.body.appendChild(a);var b=a.offsetWidth-a.clientWidth;return document.body.removeChild(a),b}}],[{key:"VERSION",get:function(){return f}},{key:"Default",get:function(){return m}},{key:"_jQueryInterface",value:function(b,c){return this.each(function(){var d=a(this).data(g),e=a.extend({},i.Default,a(this).data(),"object"==typeof b&&b);d||(d=new i(this,e),a(this).data(g,d)),"string"==typeof b?d[b](c):e.show&&d.show(c)})}}]),i}();return a(document).on(o.CLICK_DATA_API,q.DATA_TOGGLE,function(b){var c=this,e=void 0,f=d.getSelectorFromElement(this);f&&(e=a(f)[0]);var h=a(e).data(g)?"toggle":a.extend({},a(e).data(),a(this).data());"A"===this.tagName&&b.preventDefault();var i=a(e).one(o.SHOW,function(b){b.isDefaultPrevented()||i.one(o.HIDDEN,function(){a(c).is(":visible")&&c.focus()})});r._jQueryInterface.call(a(e),h,this)}),a.fn[e]=r._jQueryInterface,a.fn[e].Constructor=r,a.fn[e].noConflict=function(){return a.fn[e]=j,r._jQueryInterface},r}(jQuery),function(a){var e="scrollspy",f="4.0.0",g="bs.scrollspy",h="."+g,i=".data-api",j=a.fn[e],k={offset:10,method:"auto",target:""},l={offset:"number",method:"string",target:"(string|element)"},m={ACTIVATE:"activate"+h,SCROLL:"scroll"+h,LOAD_DATA_API:"load"+h+i},n={DROPDOWN_MENU:"dropdown-menu",ACTIVE:"active"},o={DATA_SPY:'[data-spy="scroll"]',ACTIVE:".active",LI:"li",LI_DROPDOWN:"li.dropdown",NAV_ANCHORS:".nav li > a"},p={OFFSET:"offset",POSITION:"position"},q=function(){function i(c,d){b(this,i),this._element=c,this._scrollElement="BODY"===c.tagName?window:c,this._config=this._getConfig(d),this._selector=""+this._config.target+" "+o.NAV_ANCHORS,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,a(this._scrollElement).on(m.SCROLL,a.proxy(this._process,this)),this.refresh(),this._process()}return c(i,[{key:"refresh",value:function(){var b=this,c=this._scrollElement!==this._scrollElement.window?p.POSITION:p.OFFSET,e="auto"===this._config.method?c:this._config.method,f=e===p.POSITION?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight();var g=a.makeArray(a(this._selector));g.map(function(b){var c=void 0,g=d.getSelectorFromElement(b);return g&&(c=a(g)[0]),c&&(c.offsetWidth||c.offsetHeight)?[a(c)[e]().top+f,g]:void 0}).filter(function(a){return a}).sort(function(a,b){return a[0]-b[0]}).forEach(function(a){b._offsets.push(a[0]),b._targets.push(a[1])})}},{key:"dispose",value:function(){a.removeData(this._element,g),a(this._scrollElement).off(h),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null}},{key:"_getConfig",value:function(b){if(b=a.extend({},k,b),"string"!=typeof b.target){var c=a(b.target).attr("id");c||(c=d.getUID(e),a(b.target).attr("id",c)),b.target="#"+c}return d.typeCheckConfig(e,b,l),b}},{key:"_getScrollTop",value:function(){return this._scrollElement===window?this._scrollElement.scrollY:this._scrollElement.scrollTop}},{key:"_getScrollHeight",value:function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)}},{key:"_process",value:function(){var a=this._getScrollTop()+this._config.offset,b=this._getScrollHeight(),c=this._config.offset+b-this._scrollElement.offsetHeight;if(this._scrollHeight!==b&&this.refresh(),a>=c){var d=this._targets[this._targets.length-1];this._activeTarget!==d&&this._activate(d)}if(this._activeTarget&&a<this._offsets[0])return this._activeTarget=null,void this._clear();for(var e=this._offsets.length;e--;){var f=this._activeTarget!==this._targets[e]&&a>=this._offsets[e]&&(void 0===this._offsets[e+1]||a<this._offsets[e+1]);f&&this._activate(this._targets[e])}}},{key:"_activate",value:function(b){this._activeTarget=b,this._clear();for(var c=""+this._selector+'[data-target="'+b+'"],'+(""+this._selector+'[href="'+b+'"]'),d=a(c).parents(o.LI),e=d.length;e--;){a(d[e]).addClass(n.ACTIVE);var f=d[e].parentNode;if(f&&a(f).hasClass(n.DROPDOWN_MENU)){var g=a(f).closest(o.LI_DROPDOWN)[0];a(g).addClass(n.ACTIVE)}}a(this._scrollElement).trigger(m.ACTIVATE,{relatedTarget:b})}},{key:"_clear",value:function(){for(var b=a(this._selector).parentsUntil(this._config.target,o.ACTIVE),c=b.length;c--;)a(b[c]).removeClass(n.ACTIVE)}}],[{key:"VERSION",get:function(){return f}},{key:"Default",get:function(){return k}},{key:"_jQueryInterface",value:function(b){return this.each(function(){var c=a(this).data(g),d="object"==typeof b&&b||null;c||(c=new i(this,d),a(this).data(g,c)),"string"==typeof b&&c[b]()})}}]),i}();return a(window).on(m.LOAD_DATA_API,function(){for(var b=a.makeArray(a(o.DATA_SPY)),c=b.length;c--;){var d=a(b[c]);q._jQueryInterface.call(d,d.data())}}),a.fn[e]=q._jQueryInterface,a.fn[e].Constructor=q,a.fn[e].noConflict=function(){return a.fn[e]=j,q._jQueryInterface},q}(jQuery),function(a){var e="tab",f="4.0.0",g="bs.tab",h="."+g,i=".data-api",j=a.fn[e],k=150,l={HIDE:"hide"+h,HIDDEN:"hidden"+h,SHOW:"show"+h,SHOWN:"shown"+h,CLICK_DATA_API:"click"+h+i},m={DROPDOWN_MENU:"dropdown-menu",ACTIVE:"active",FADE:"fade",IN:"in"},n={A:"a",LI:"li",LI_DROPDOWN:"li.dropdown",UL:"ul:not(.dropdown-menu)",FADE_CHILD:"> .fade",ACTIVE:".active",ACTIVE_CHILD:"> .active",DATA_TOGGLE:'[data-toggle="tab"], [data-toggle="pill"]',DROPDOWN_ACTIVE_CHILD:"> .dropdown-menu > .active"},o=function(){function e(a){b(this,e),this._element=a}return c(e,[{key:"show",value:function(){var b=this;if(!this._element.parentNode||this._element.parentNode.nodeType!=Node.ELEMENT_NODE||!a(this._element).parent().hasClass(m.ACTIVE)){var c=void 0,e=void 0,f=a(this._element).closest(n.UL)[0],g=d.getSelectorFromElement(this._element);f&&(e=a.makeArray(a(f).find(n.ACTIVE)),e=e[e.length-1],e&&(e=a(e).find(n.A)[0]));var h=a.Event(l.HIDE,{relatedTarget:this._element}),i=a.Event(l.SHOW,{relatedTarget:e});if(e&&a(e).trigger(h),a(this._element).trigger(i),!i.isDefaultPrevented()&&!h.isDefaultPrevented()){g&&(c=a(g)[0]),this._activate(a(this._element).closest(n.LI)[0],f);var j=function(){var c=a.Event(l.HIDDEN,{relatedTarget:b._element}),d=a.Event(l.SHOWN,{relatedTarget:e});a(e).trigger(c),a(b._element).trigger(d)};c?this._activate(c,c.parentNode,j):j()}}}},{key:"dispose",value:function(){a.removeClass(this._element,g),this._element=null}},{key:"_activate",value:function(b,c,e){var f=a(c).find(n.ACTIVE_CHILD)[0],g=e&&d.supportsTransitionEnd()&&(f&&a(f).hasClass(m.FADE)||!!a(c).find(n.FADE_CHILD)[0]),h=a.proxy(this._transitionComplete,this,b,f,g,e); -(function($){var h,k,l={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};function m(a){var b=a.getAttribute("data-target");b||(b=a.getAttribute("href")||"",b=/^#[a-z]/i.test(b)?b:null);return b}function aa(a){do a+=~~(1E6*Math.random());while(document.getElementById(a));return a}function ba(){return{ha:k.end,ia:k.end,handle:function(a){if($(a.target).is(this))return a.handleObj.handler.apply(this,arguments)}}} -function n(a){(new Function("bs","return bs"))(a.offsetHeight)}function ca(){if(window.QUnit)return!1;var a=document.createElement("bootstrap"),b;for(b in l)if(void 0!==a.style[b])return{end:l[b]};return!1}$.fn.f=function(a){var b=!1;$(this).one("bsTransitionEnd",function(){b=!0});var c=function(){b||$(this).trigger(k.end)}.bind(this);setTimeout(c,a)};$(function(){(k=ca())&&($.event.special.bsTransitionEnd=ba())});function p(a){if(a)$(a).on("click",'[data-dismiss="alert"]',q(this))}p.VERSION="4.0.0";var da=$.fn.alert;function s(a){return this.each(function(){var b=$(this),c=b.data("bs.alert");c||(c=new p(this),b.data("bs.alert",c));if("close"===a)c[a](this)})}function q(a){return function(b){b&&b.preventDefault();a.close(this)}} -p.prototype.close=function(a){var b=!1,c=m(a);c&&(b=$(c)[0]);b||(b=$(a).closest(".alert")[0]);a=b;b=$.Event("close.bs.alert");$(a).trigger(b);b.isDefaultPrevented()||($(a).removeClass("in"),k&&$(a).hasClass("fade")?$(a).one("bsTransitionEnd",this.N.bind(this,a)).f(150):this.N(a))};p.prototype.N=function(a){$(a).detach().trigger("closed.bs.alert").remove()};$.fn.alert=s;$.fn.alert.Constructor=p;$.fn.alert.noConflict=function(){$.fn.alert=da;return s}; -$(document).on("click.bs.alert.data-api",'[data-dismiss="alert"]',q(new p));function t(a){this.a=a}t.VERSION="4.0.0";var ea=$.fn.button;function u(a){return this.each(function(){var b=$(this).data("bs.button");b||(b=new t(this),$(this).data("bs.button",b));if("toggle"===a)b[a]()})} -t.prototype.toggle=function(){var a=!0,b=$(this.a).closest('[data-toggle="buttons"]')[0];if(b){var c=$(this.a).find("input")[0];c&&("radio"==c.type&&(c.checked&&$(this.a).hasClass("active")?a=!1:(b=$(b).find(".active")[0])&&$(b).removeClass("active")),a&&(c.checked=!$(this.a).hasClass("active"),$(this.a).trigger("change")))}else this.a.setAttribute("aria-pressed",!$(this.a).hasClass("active"));a&&$(this.a).toggleClass("active")};$.fn.button=u;$.fn.button.Constructor=t; -$.fn.button.noConflict=function(){$.fn.button=ea;return this};$(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(a){a.preventDefault();a=a.target;$(a).hasClass("btn")||(a=$(a).closest(".btn"));u.call($(a),"toggle")}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(a){var b=$(a.target).closest(".btn")[0];$(b).toggleClass("focus",/^focus(in)?$/.test(a.type))});function v(a,b){this.a=$(a)[0];this.F=$(this.a).find(fa)[0];this.c=b||null;this.l=this.G=!1;this.h=this.M=this.k=null;if(this.c.keyboard)$(this.a).on("keydown.bs.carousel",this.Y.bind(this));if("hover"==this.c.pause&&!("ontouchstart"in document.documentElement))$(this.a).on("mouseenter.bs.carousel",this.pause.bind(this)).on("mouseleave.bs.carousel",this.cycle.bind(this))}v.VERSION="4.0.0";v.Defaults={interval:5E3,pause:"hover",wrap:!0,keyboard:!0,slide:!1};var fa=".carousel-indicators",ga=$.fn.carousel; -function w(a){return this.each(function(){var b=$(this).data("bs.carousel"),c=$.extend({},v.Defaults,$(this).data(),"object"==typeof a&&a),d="string"==typeof a?a:c.ja;b||(b=new v(this,c),$(this).data("bs.carousel",b));if("number"==typeof a)x(b,a);else if(d)b[d]();else c.interval&&(b.pause(),b.cycle())})}v.prototype.next=function(){this.l||z(this,"next")};v.prototype.prev=function(){this.l||z(this,"prev")}; -v.prototype.pause=function(a){a||(this.G=!0);$(this.a).find(".next, .prev")[0]&&k&&($(this.a).trigger(k.end),this.cycle(!0));clearInterval(this.k);this.k=null};v.prototype.cycle=function(a){a||(this.G=!1);this.k&&(clearInterval(this.k),this.k=null);this.c.interval&&!this.G&&(this.k=setInterval(this.next.bind(this),this.c.interval))};v.prototype.getConfig=function(){return this.c}; -function x(a,b){a.M=$(a.a).find(".active.carousel-item")[0];var c=A(a,a.M);if(!(b>a.h.length-1||0>b))if(a.l)$(a.a).one("slid.bs.carousel",function(){x(this,b)}.bind(a));else c==b?(a.pause(),a.cycle()):z(a,b>c?"next":"prev",a.h[b])}v.prototype.Y=function(a){a.preventDefault();if(!/input|textarea/i.test(a.target.tagName))switch(a.which){case 37:this.prev();break;case 39:this.next()}};function A(a,b){a.h=$.makeArray($(b).parent().find(".carousel-item"));return a.h.indexOf(b)} -function ha(a,b,c){var d=A(a,c);if(("prev"===b&&0===d||"next"===b&&d==a.h.length-1)&&!a.c.wrap)return c;b=(d+("prev"==b?-1:1))%a.h.length;return-1===b?a.h[a.h.length-1]:a.h[b]}function ia(a,b,c){b=$.Event("slide.bs.carousel",{relatedTarget:b,direction:c});$(a.a).trigger(b);return b}function ja(a,b){if(a.F){$(a.F).find(".active").removeClass("active");var c=a.F.children[A(a,b)];c&&$(c).addClass("active")}} -function z(a,b,c){var d=$(a.a).find(".active.carousel-item")[0],e=c||d&&ha(a,b,d);c=!!a.k;var f="next"==b?"left":"right";if(e&&$(e).hasClass("active"))a.l=!1;else if(!ia(a,e,f).isDefaultPrevented()&&d&&e){a.l=!0;c&&a.pause();ja(a,e);var g=$.Event("slid.bs.carousel",{relatedTarget:e,direction:f});k&&$(a.a).hasClass("slide")?($(e).addClass(b),n(e),$(d).addClass(f),$(e).addClass(f),$(d).one("bsTransitionEnd",function(){$(e).removeClass(f).removeClass(b);$(e).addClass("active");$(d).removeClass("active").removeClass(b).removeClass(f); -this.l=!1;setTimeout(function(){$(this.a).trigger(g)}.bind(this),0)}.bind(a)).f(600)):($(d).removeClass("active"),$(e).addClass("active"),a.l=!1,$(a.a).trigger(g));c&&a.cycle()}}$.fn.carousel=w;$.fn.carousel.Constructor=v;$.fn.carousel.noConflict=function(){$.fn.carousel=ga;return this}; -$(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(a){var b=m(this);if(b&&(b=$(b)[0])&&$(b).hasClass("carousel")){var c=$.extend({},$(b).data(),$(this).data()),d=this.getAttribute("data-slide-to");d&&(c.interval=!1);w.call($(b),c);d&&x($(b).data("bs.carousel"),d);a.preventDefault()}});$(window).on("load",function(){$('[data-ride="carousel"]').each(function(){var a=$(this);w.call(a,a.data())})});function B(a,b){this.a=a;this.c=$.extend({},B.Defaults,b);this.o="string"==typeof this.c.trigger?$(this.c.trigger)[0]:this.c.trigger;this.A=!1;var c;if(this.c.parent){var d='[data-toggle="collapse"][data-parent="'+this.c.parent+'"]';c=$(this.c.parent)[0];for(var d=$.makeArray($(c).find(d)),e=0;e<d.length;e++)C(D(d[e]),d[e])}else c=null;this.Z=c;this.c.parent||C(this.a,this.o);this.c.toggle&&this.toggle()}B.VERSION="4.0.0";B.Defaults={toggle:!0,trigger:'[data-toggle="collapse"]',parent:null}; -var ka=$.fn.collapse;function E(a){return this.each(function(){var b=$(this),c=b.data("bs.collapse"),d=$.extend({},B.Defaults,b.data(),"object"==typeof a&&a);!c&&d.toggle&&"show"==a&&(d.toggle=!1);c||(c=new B(this,d),b.data("bs.collapse",c));if("string"==typeof a)c[a]()})}function D(a){return(a=m(a))?$(a)[0]:null}B.prototype.toggle=function(){$(this.a).hasClass("in")?this.hide():this.show()}; -B.prototype.show=function(){if(!this.A&&!$(this.a).hasClass("in")){var a,b;this.Z&&(b=$.makeArray($(".panel > .in, .panel > .collapsing")),b.length||(b=null));if(b&&(a=$(b).data("bs.collapse"))&&a.A)return;var c=$.Event("show.bs.collapse");$(this.a).trigger(c);if(!c.isDefaultPrevented()){b&&(E.call($(b),"hide"),a||$(b).data("bs.collapse",null));var d=F(this);$(this.a).removeClass("collapse").addClass("collapsing");this.a.style[d]=0;this.a.setAttribute("aria-expanded",!0);this.o&&($(this.o).removeClass("collapsed"), -this.o.setAttribute("aria-expanded",!0));this.setTransitioning(!0);a=function(){$(this.a).removeClass("collapsing").addClass("collapse").addClass("in");this.a.style[d]="";this.setTransitioning(!1);$(this.a).trigger("shown.bs.collapse")}.bind(this);k?(b="scroll"+(d[0].toUpperCase()+d.slice(1)),$(this.a).one("bsTransitionEnd",a).f(600),this.a.style[d]=this.a[b]+"px"):a()}}}; -B.prototype.hide=function(){if(!this.A&&$(this.a).hasClass("in")){var a=$.Event("hide.bs.collapse");$(this.a).trigger(a);if(!a.isDefaultPrevented()){a=F(this);this.a.style[a]=this.a["width"===a?"offsetWidth":"offsetHeight"]+"px";n(this.a);$(this.a).addClass("collapsing").removeClass("collapse").removeClass("in");this.a.setAttribute("aria-expanded",!1);this.o&&($(this.o).addClass("collapsed"),this.o.setAttribute("aria-expanded",!1));this.setTransitioning(!0);var b=function(){this.setTransitioning(!1); -$(this.a).removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")}.bind(this);this.a.style[a]=0;if(!k)return b();$(this.a).one("bsTransitionEnd",b).f(600)}}};B.prototype.setTransitioning=function(a){this.A=a};function F(a){return $(a.a).hasClass("width")?"width":"height"}function C(a,b){if(a){var c=$(a).hasClass("in");a.setAttribute("aria-expanded",c);b&&(b.setAttribute("aria-expanded",c),$(b).toggleClass("collapsed",!c))}}$.fn.collapse=E;$.fn.collapse.Constructor=B; -$.fn.collapse.noConflict=function(){$.fn.collapse=ka;return this};$(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(a){a.preventDefault();a=D(this);var b=$(a).data("bs.collapse")?"toggle":$.extend({},$(this).data(),{trigger:this});E.call($(a),b)});function G(a){$(a).on("click.bs.dropdown",this.toggle)}G.VERSION="4.0.0";var la=$.fn.dropdown; -function H(a){if(!a||3!=a.which){(a=$(".dropdown-backdrop")[0])&&a.parentNode.removeChild(a);a=$.makeArray($('[data-toggle="dropdown"]'));for(var b=0;b<a.length;b++){var c=I(a[b]),d={relatedTarget:a[b]};if($(c).hasClass("open")){var e=$.Event("hide.bs.dropdown",d);$(c).trigger(e);e.isDefaultPrevented()||(a[b].setAttribute("aria-expanded","false"),$(c).removeClass("open").trigger("hidden.bs.dropdown",d))}}}}function I(a){var b=m(a);if(b)var c=$(b)[0];return c||a.parentNode} -function J(a){if(/(38|40|27|32)/.test(a.which)&&!/input|textarea/i.test(a.target.tagName)&&(a.preventDefault(),a.stopPropagation(),!this.disabled&&!$(this).hasClass("disabled"))){var b=I(this),c=$(b).hasClass("open");!c&&27!=a.which||c&&27==a.which?(27==a.which&&(a=$(b).find('[data-toggle="dropdown"]')[0],$(a).trigger("focus")),$(this).trigger("click")):(b=$.makeArray($('[role="menu"] li:not(.divider) a, [role="listbox"] li:not(.divider) a')),b=b.filter(function(a){return a.offsetWidth||a.offsetHeight}), -b.length&&(c=b.indexOf(a.target),38==a.which&&0<c&&c--,40==a.which&&c<b.length-1&&c++,~c||(c=0),b[c].focus()))}} -G.prototype.toggle=function(){if(!this.disabled&&!$(this).hasClass("disabled")){var a=I(this),b=$(a).hasClass("open");H();if(b)return!1;"ontouchstart"in document.documentElement&&!$(a).closest(".navbar-nav").length&&(b=document.createElement("div"),b.className="dropdown-backdrop",this.parentNode.insertBefore(this,b),$(b).on("click",H));var b={relatedTarget:this},c=$.Event("show.bs.dropdown",b);$(a).trigger(c);if(!c.isDefaultPrevented())return this.focus(),this.setAttribute("aria-expanded","true"), -$(a).toggleClass("open"),$(a).trigger("shown.bs.dropdown",b),!1}};$.fn.dropdown=function(a){return this.each(function(){var b=$(this).data("bs.dropdown");b||$(this).data("bs.dropdown",b=new G(this));"string"===typeof a&&b[a].call(this)})};$.fn.dropdown.Constructor=G;$.fn.dropdown.noConflict=function(){$.fn.dropdown=la;return this}; -$(document).on("click.bs.dropdown.data-api",H).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",'[data-toggle="dropdown"]',G.prototype.toggle).on("keydown.bs.dropdown.data-api",'[data-toggle="dropdown"]',J).on("keydown.bs.dropdown.data-api",'[role="menu"]',J).on("keydown.bs.dropdown.data-api",'[role="listbox"]',J);function K(a,b){this.c=b;this.a=a;this.d=null;this.w=this.g=!1;this.B=0}K.VERSION="4.0.0";K.Defaults={backdrop:!0,keyboard:!0,show:!0};var ma=$.fn.modal;function L(a,b){return this.each(function(){var c=$(this).data("bs.modal"),d=$.extend({},K.Defaults,$(this).data(),"object"==typeof a&&a);c||(c=new K(this,d),$(this).data("bs.modal",c));if("string"==typeof a)c[a](b);else d.show&&c.show(b)})}K.prototype.toggle=function(a){return this.g?this.hide():this.show(a)}; -K.prototype.show=function(a){var b=$.Event("show.bs.modal",{relatedTarget:a});$(this.a).trigger(b);if(!this.g&&!b.isDefaultPrevented()){this.g=!0;this.w=document.body.scrollHeight>document.documentElement.clientHeight;b=document.createElement("div");b.className="modal-scrollbar-measure";document.body.appendChild(b);var c=b.offsetWidth-b.clientWidth;document.body.removeChild(b);this.B=c;b=parseInt($(document.body).css("padding-right")||0,10);this.w&&(document.body.style.paddingRight=b+this.B+"px"); -$(document.body).addClass("modal-open");M(this);N(this);$(this.a).on("click.dismiss.bs.modal",'[data-dismiss="modal"]',this.hide.bind(this));O(this,this.$.bind(this,a))}}; -K.prototype.hide=function(a){a&&a.preventDefault();a=$.Event("hide.bs.modal");$(this.a).trigger(a);this.g&&!a.isDefaultPrevented()&&(this.g=!1,M(this),N(this),$(document).off("focusin.bs.modal"),$(this.a).removeClass("in"),this.a.setAttribute("aria-hidden",!0),$(this.a).off("click.dismiss.bs.modal"),k&&$(this.a).hasClass("fade")?$(this.a).one("bsTransitionEnd",this.P.bind(this)).f(300):this.P())}; -K.prototype.$=function(a){var b=k&&$(this.a).hasClass("fade");this.a.parentNode&&this.a.parentNode.nodeType==Node.ELEMENT_NODE||document.body.appendChild(this.a);this.a.style.display="block";this.a.scrollTop=0;this.c.backdrop&&P(this);b&&n(this.a);$(this.a).addClass("in");this.a.setAttribute("aria-hidden",!1);na(this);var c=$.Event("shown.bs.modal",{relatedTarget:a});a=function(){this.a.focus();$(this.a).trigger(c)}.bind(this);b?(b=$(this.a).find(".modal-dialog")[0],$(b).one("bsTransitionEnd",a).f(300)): -a()};function na(a){$(document).off("focusin.bs.modal").on("focusin.bs.modal",function(a){this.a===a.target||$(this.a).has(a.target).length||this.a.focus()}.bind(a))}function M(a){if(a.g&&a.c.keyboard)$(a.a).on("keydown.dismiss.bs.modal",function(a){27===a.which&&this.hide()}.bind(a));else a.g||$(a.a).off("keydown.dismiss.bs.modal")}function N(a){if(a.g)$(window).on("resize.bs.modal",a.X.bind(a));else $(window).off("resize.bs.modal")} -K.prototype.P=function(){this.a.style.display="none";O(this,function(){$(document.body).removeClass("modal-open");this.a.style.paddingLeft="";this.a.style.paddingRight="";document.body.style.paddingRight="";$(this.a).trigger("hidden.bs.modal")}.bind(this))}; -function O(a,b){var c=$(a.a).hasClass("fade")?"fade":"";if(a.g&&a.c.backdrop){var d=k&&c;a.d=document.createElement("div");a.d.className="modal-backdrop";c&&$(a.d).addClass(c);$(a.a).prepend(a.d);$(a.d).on("click.dismiss.bs.modal",function(a){a.target===a.currentTarget&&("static"===this.c.backdrop?this.a.focus():this.hide())}.bind(a));d&&n(a.d);$(a.d).addClass("in");b&&(d?$(a.d).one("bsTransitionEnd",b).f(150):b())}else!a.g&&a.d?($(a.d).removeClass("in"),c=function(){this.d&&(this.d.parentNode.removeChild(this.d), -this.d=null);b&&b()}.bind(a),k&&$(a.a).hasClass("fade")?$(a.d).one("bsTransitionEnd",c).f(150):c()):b&&b()}K.prototype.X=function(){this.c.backdrop&&P(this);var a=this.a.scrollHeight>document.documentElement.clientHeight;!this.w&&a&&(this.a.style.paddingLeft=this.B+"px");this.w&&!a&&(this.a.style.paddingRight=this.B+"px")};function P(a){a.d.style.height=0;a.d.style.height=a.a.scrollHeight+"px"}$.fn.modal=L;$.fn.modal.Constructor=K;$.fn.modal.noConflict=function(){$.fn.modal=ma;return this}; -$(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(a){var b=m(this);if(b)var c=$(b)[0];b=$(c).data("bs.modal")?"toggle":$.extend({},$(c).data(),$(this).data());"A"==this.tagName&&a.preventDefault();var d=$(c).one("show.bs.modal",function(a){if(!a.isDefaultPrevented())d.one("hidden.bs.modal",function(){$(this).is(":visible")&&this.focus()}.bind(this))}.bind(this));L.call($(c),b,this)});function Q(a,b){this.e="BODY"==a.tagName?window:a;this.c=$.extend({},Q.Defaults,b);this.C=(this.c.target||"")+" .nav li > a";this.m=[];this.p=[];this.s=null;this.R=0;$(this.e).on("scroll.bs.scrollspy",this.Q.bind(this));this.refresh();this.Q()}Q.VERSION="4.0.0";Q.Defaults={offset:10};var oa=$.fn.scrollspy;function R(a){return this.each(function(){var b=$(this).data("bs.scrollspy"),c="object"===typeof a&&a||null;b||(b=new Q(this,c),$(this).data("bs.scrollspy",b));if("string"===typeof a)b[a]()})} -Q.prototype.refresh=function(){var a="offset",b=0;this.e!==this.e.window&&(a="position",b=this.e===window?this.e.scrollY:this.e.scrollTop);this.m=[];this.p=[];this.R=this.e.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight);$.makeArray($(this.C)).map(function(c){var d;(c=m(c))&&(d=$(c)[0]);if(d&&(d.offsetWidth||d.offsetHeight))return[$(d)[a]().top+b,c]}).filter(function(a){return a}).sort(function(a,b){return a[0]-b[0]}).forEach(function(a){this.m.push(a[0]); -this.p.push(a[1])}.bind(this))};Q.prototype.Q=function(){var a=(this.e===window?this.e.scrollY:this.e.scrollTop)+this.c.offset,b=this.e.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight),c=this.c.offset+b-this.e.offsetHeight;this.R!=b&&this.refresh();a>=c&&(b=this.p[this.p.length-1],this.s!=b&&this.r(b));if(this.s&&a<this.m[0])this.s=null,S(this);else for(b=this.m.length;b--;)this.s!=this.p[b]&&a>=this.m[b]&&(!this.m[b+1]||a<this.m[b+1])&&this.r(this.p[b])}; -Q.prototype.r=function(a){this.s=a;S(this);for(var b=$(this.C+'[data-target="'+a+'"],'+this.C+'[href="'+a+'"]').parents("li"),c=b.length;c--;){$(b[c]).addClass("active");var d=b[c].parentNode;d&&$(d).hasClass("dropdown-menu")&&(d=$(d).closest("li.dropdown")[0],$(d).addClass("active"))}$(this.e).trigger("activate.bs.scrollspy",{relatedTarget:a})};function S(a){a=$(a.C).parentsUntil(a.c.target,".active");for(var b=a.length;b--;)$(a[b]).removeClass("active")}$.fn.scrollspy=R; -$.fn.scrollspy.Constructor=Q;$.fn.scrollspy.noConflict=function(){$.fn.scrollspy=oa;return this};$(window).on("load.bs.scrollspy.data-api",function(){for(var a=$.makeArray($('[data-spy="scroll"]')),b=a.length;b--;){var c=$(a[b]);R.call(c,c.data())}});function T(a,b){this.t=!0;this.u=0;this.j="";this.element=a;var c=$.extend({},this.constructor.Defaults,$(this.element).data(),b);c.delay&&"number"==typeof c.delay&&(c.delay={show:c.delay,hide:c.delay});this.b=c;this.D=this.W=null;this.b.viewport&&(this.S=$(this.b.viewport.selector||this.b.viewport)[0]);pa(this)}T.VERSION="4.0.0"; -T.Defaults={container:!1,animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,viewport:{selector:"body",padding:0}};var U={fa:"top",da:"left",ea:"right",ca:"bottom"},qa={J:"hide.bs.tooltip",I:"hidden.bs.tooltip",K:"show.bs.tooltip",L:"shown.bs.tooltip"},ra=$.fn.tooltip;T.prototype.enable=function(){this.t=!0}; -T.prototype.disable=function(){this.t=!1};T.prototype.toggleEnabled=function(){this.t=!this.t};T.prototype.toggle=function(a){var b=this,c=this.q();a&&(b=$(a.currentTarget).data(c),b||(b=new this.constructor(a.currentTarget,V(this)),$(a.currentTarget).data(c,b)));$(b.i()).hasClass("in")?b.H(null,b):b.O(null,b)};T.prototype.destroy=function(){clearTimeout(this.u);this.hide(function(){$(this.element).off(".tooltip").removeData(this.q())}.bind(this))}; -T.prototype.show=function(){var a=$.Event(this.v().K);if(this.U()&&this.t){$(this.element).trigger(a);var b=$.contains(this.element.ownerDocument.documentElement,this.element);if(!a.isDefaultPrevented()&&b){a=this.i();b=aa(this.getName());a.setAttribute("id",b);this.element.setAttribute("aria-describedby",b);this.V();this.b.animation&&$(a).addClass("fade");var b="function"==typeof this.b.placement?this.b.placement.call(this,a,this.element):this.b.placement,c=/\s?auto?\s?/i,d=c.test(b);d&&(b=b.replace(c, -"")||"top");a.parentNode&&a.parentNode.nodeType==Node.ELEMENT_NODE&&a.parentNode.removeChild(a);a.style.top=0;a.style.left=0;a.style.display="block";$(a).addClass("tooltip-"+b);$(a).data(this.q(),this);this.b.container?$(this.b.container)[0].appendChild(a):this.element.parentNode.insertBefore(a,this.element.nextSibling);var c=W(this),e=a.offsetWidth,a=a.offsetHeight,b=sa(this,d,b,c,e,a);ta(this,"bottom"==b?{top:c.top+c.height,left:c.left+c.width/2-e/2}:"top"==b?{top:c.top-a,left:c.left+c.width/2- -e/2}:"left"==b?{top:c.top+c.height/2-a/2,left:c.left-e}:{top:c.top+c.height/2-a/2,left:c.left+c.width},b);a=function(){var a=this.ba;$(this.element).trigger(this.v().L);this.ba=null;"out"==a&&this.H(null,this)}.bind(this);k&&$(this.n).hasClass("fade")?$(this.n).one("bsTransitionEnd",a).f(150):a()}}}; -T.prototype.hide=function(a){var b=this.i(),c=$.Event(this.v().J),d=function(){"in"!=this.j&&b.parentNode.removeChild(b);this.element.removeAttribute("aria-describedby");$(this.element).trigger(this.v().I);a&&a()}.bind(this);$(this.element).trigger(c);c.isDefaultPrevented()||($(b).removeClass("in"),k&&$(this.n).hasClass("fade")?$(b).one("bsTransitionEnd",d).f(150):d(),this.j="")};T.prototype.getHoverState=function(){return this.j};h=T.prototype;h.getName=function(){return"tooltip"};h.q=function(){return"bs.tooltip"}; -h.v=function(){return qa};function X(a){var b=a.element.getAttribute("data-original-title");b||(b="function"===typeof a.b.title?a.b.title.call(a.element):a.b.title);return b}h.i=function(){return this.n=this.n||$(this.b.template)[0]};h.T=function(){return this.D=this.D||$(this.i()).find(".tooltip-arrow")[0]};h.U=function(){return!!X(this)}; -h.V=function(){var a=this.i(),b=X(this);$(a).find(".tooltip-inner")[0][this.b.html?"innerHTML":"innerText"]=b;$(a).removeClass("fade").removeClass("in");for(var c in U)$(a).removeClass("tooltip-"+c)}; -function pa(a){a.b.trigger.split(" ").forEach(function(a){if("click"==a)$(this.element).on("click.bs.tooltip",this.b.selector,this.toggle.bind(this));else if("manual"!=a){var c="hover"==a?"mouseenter":"focusin";a="hover"==a?"mouseleave":"focusout";$(this.element).on(c+".bs.tooltip",this.b.selector,this.O.bind(this)).on(a+".bs.tooltip",this.b.selector,this.H.bind(this))}}.bind(a));a.b.selector?a.b=$.extend({},a.b,{trigger:"manual",selector:""}):ua(a)} -function V(a){var b={},c=a.constructor.Defaults;if(a.b)for(var d in a.b){var e=a.b[d];c[d]!=e&&(b[d]=e)}return b}function sa(a,b,c,d,e,f){if(b){b=c;var g=a.b.container?$(a.b.container)[0]:a.element.parentNode,g=W(a,g);c="bottom"==c&&d.bottom+f>g.bottom?"top":"top"==c&&d.top-f<g.top?"bottom":"right"==c&&d.right+e>g.width?"left":"left"==c&&d.left-e<g.left?"right":c;$(a.n).removeClass("tooltip-"+b).addClass("tooltip-"+c)}return c} -function va(a,b,c,d,e){var f={top:0,left:0};if(!a.S)return f;var g=a.b.viewport&&a.b.viewport.padding||0;a=W(a,a.S);"right"===b||"left"===b?(d=c.top-g-a.scroll,c=c.top+g-a.scroll+e,d<a.top?f.top=a.top-d:c>a.top+a.height&&(f.top=a.top+a.height-c)):(e=c.left-g,c=c.left+g+d,e<a.left?f.left=a.left-e:c>a.width&&(f.left=a.left+a.width-c));return f} -function W(a,b){var c=b||a.element,d="BODY"==c.tagName,e=c.getBoundingClientRect(),c=d?{top:0,left:0}:$(c).offset();return $.extend({},e,{scroll:d?document.documentElement.scrollTop||document.body.scrollTop:a.element.scrollTop},d?{width:window.innerWidth,height:window.innerHeight}:null,c)} -function ta(a,b,c){var d=a.i(),e=d.offsetWidth,f=d.offsetHeight,g=parseInt(d.style.marginTop,10),r=parseInt(d.style.marginLeft,10);isNaN(g)&&(g=0);isNaN(r)&&(r=0);b.top+=g;b.left+=r;$.offset.setOffset(d,$.extend({ka:function(a){d.style.top=Math.round(a.top)+"px";d.style.left=Math.round(a.left)+"px"}},b),0);$(d).addClass("in");g=d.offsetWidth;r=d.offsetHeight;"top"==c&&r!=f&&(b.top=b.top+f-r);var y=va(a,c,b,g,r);y.left?b.left+=y.left:b.top+=y.top;e=(c="top"===c||"bottom"===c)?2*y.left-e+g:2*y.top- -f+r;f=c?"offsetWidth":"offsetHeight";$(d).offset(b);wa(a,e,d[f],c)}function wa(a,b,c,d){a=a.T();a.style[d?"left":"top"]=50*(1-b/c)+"%";a.style[d?"top":"left"]=""}function ua(a){if(a.element.getAttribute("title")||"string"!=typeof a.element.getAttribute("data-original-title"))a.element.setAttribute("data-original-title",a.element.getAttribute("title")||""),a.element.setAttribute("title","")} -h.O=function(a,b){var c=this.q(),d=b||$(a.currentTarget).data(c);d&&d.n&&d.n.offsetWidth?d.j="in":(d||(d=new this.constructor(a.currentTarget,V(this)),$(a.currentTarget).data(c,d)),clearTimeout(d.u),d.j="in",d.b.delay&&d.b.delay.show?d.u=setTimeout(function(){"in"==d.j&&d.show()},d.b.delay.show):d.show())}; -h.H=function(a,b){var c=this.q(),d=b||$(a.currentTarget).data(c);d||(d=new this.constructor(a.currentTarget,V(this)),$(a.currentTarget).data(c,d));clearTimeout(d.u);d.j="out";d.b.delay&&d.b.delay.hide?d.u=setTimeout(function(){"out"==d.j&&d.hide()},d.b.delay.hide):d.hide()};$.fn.tooltip=function(a){return this.each(function(){var b=$(this).data("bs.tooltip"),c="object"==typeof a?a:null;if(b||"destroy"!=a)if(b||(b=new T(this,c),$(this).data("bs.tooltip",b)),"string"===typeof a)b[a]()})}; -$.fn.tooltip.Constructor=T;$.fn.tooltip.noConflict=function(){$.fn.tooltip=ra;return this};if(!T)throw Error("Popover requires tooltip.js");function Y(a,b){T.apply(this,arguments)}(function(){function a(){}a.prototype=T.prototype;Y.prototype=new a;Y.prototype.constructor=Y})();Y.VERSION="4.0.0";Y.Defaults=$.extend({},$.fn.tooltip.Constructor.Defaults,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}); -var xa={J:"hide.bs.popover",I:"hidden.bs.popover",K:"show.bs.popover",L:"shown.bs.popover"},ya=$.fn.popover;h=Y.prototype;h.getName=function(){return"popover"};h.q=function(){return"bs.popover"};h.v=function(){return xa};h.T=function(){return this.D=this.D||$(this.i()).find(".popover-arrow")[0]}; -h.V=function(){var a=this.i(),b=X(this),c=za(this),d=$(a).find(".popover-title")[0];d&&(d[this.b.html?"innerHTML":"innerText"]=b);$(a).find(".popover-content").children().detach().end()[this.b.html?"string"==typeof c?"html":"append":"text"](c);$(a).removeClass("fade").removeClass("in");for(var e in U)$(a).removeClass("popover-"+U[e])};h.U=function(){return X(this)||za(this)};h.i=function(){return this.W=this.W||$(this.b.template)[0]}; -function za(a){return a.element.getAttribute("data-content")||("function"==typeof a.b.content?a.b.content.call(a.element):a.b.content)}$.fn.popover=function(a){return this.each(function(){var b=$(this).data("bs.popover"),c="object"===typeof a?a:null;if(b||"destroy"!==a)if(b||(b=new Y(this,c),$(this).data("bs.popover",b)),"string"===typeof a)b[a]()})};$.fn.popover.Constructor=Y;$.fn.popover.noConflict=function(){$.fn.popover=ya;return this};function Z(a){this.a=a}Z.VERSION="4.0.0";function Aa(a){return this.each(function(){var b=$(this),c=b.data("bs.tab");c||(c=c=new Z(this),b.data("bs.tab",c));if("string"===typeof a)c[a]()})} -Z.prototype.show=function(){if(!this.a.parentNode||this.a.parentNode.nodeType!=Node.ELEMENT_NODE||!$(this.a).parent().hasClass("active")){var a=$(this.a).closest("ul:not(.dropdown-menu)")[0],b=m(this.a);if(a){var c=$.makeArray($(a).find(".active"));(c=c[c.length-1])&&(c=$(c).find("a")[0])}var d=$.Event("hide.bs.tab",{relatedTarget:this.a}),e=$.Event("show.bs.tab",{relatedTarget:c});c&&$(c).trigger(d);$(this.a).trigger(e);if(!e.isDefaultPrevented()&&!d.isDefaultPrevented()){if(b)var f=$(b)[0];this.r($(this.a).closest("li")[0], -a);a=function(){var a=$.Event("hidden.bs.tab",{relatedTarget:this.a}),b=$.Event("shown.bs.tab",{relatedTarget:c});$(c).trigger(a);$(this.a).trigger(b)}.bind(this);f?this.r(f,f.parentNode,a):a()}}};Z.prototype.r=function(a,b,c){var d=$(b).find(":scope > .active")[0];b=c&&k&&(d&&$(d).hasClass("fade")||!!$(b).find(":scope > .fade")[0]);a=this.aa.bind(this,a,d,b,c);d&&b?$(d).one("bsTransitionEnd",a).f(150):a();d&&$(d).removeClass("in")}; -Z.prototype.aa=function(a,b,c,d){if(b){$(b).removeClass("active");var e=$(b).find(":scope > .dropdown-menu > .active")[0];e&&$(e).removeClass("active");(b=$(b).find('[data-toggle="tab"], [data-toggle="pill"]')[0])&&b.setAttribute("aria-expanded",!1)}$(a).addClass("active");(b=$(a).find('[data-toggle="tab"], [data-toggle="pill"]')[0])&&b.setAttribute("aria-expanded",!0);c?(n(a),$(a).addClass("in")):$(a).removeClass("fade");a.parentNode&&$(a.parentNode).hasClass("dropdown-menu")&&((c=$(a).closest("li.dropdown")[0])&& -$(c).addClass("active"),(b=$(a).find('[data-toggle="tab"], [data-toggle="pill"]')[0])&&b.setAttribute("aria-expanded",!0));d&&d()};$.fn.tab=Aa;$.fn.tab.Constructor=Z;$.fn.tab.noConflict=function(){$.fn.tab=Z.ga;return this};$(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(a){a.preventDefault();Aa.call($(this),"show")});})(jQuery); +f&&g?a(f).one(d.TRANSITION_END,h).emulateTransitionEnd(k):h(),f&&a(f).removeClass(m.IN)}},{key:"_transitionComplete",value:function(b,c,e,f){if(c){a(c).removeClass(m.ACTIVE);var g=a(c).find(n.DROPDOWN_ACTIVE_CHILD)[0];g&&a(g).removeClass(m.ACTIVE);var h=a(c).find(n.DATA_TOGGLE)[0];h&&h.setAttribute("aria-expanded",!1)}a(b).addClass(m.ACTIVE);var i=a(b).find(n.DATA_TOGGLE)[0];if(i&&i.setAttribute("aria-expanded",!0),e?(d.reflow(b),a(b).addClass(m.IN)):a(b).removeClass(m.FADE),b.parentNode&&a(b.parentNode).hasClass(m.DROPDOWN_MENU)){var j=a(b).closest(n.LI_DROPDOWN)[0];j&&a(j).addClass(m.ACTIVE),i=a(b).find(n.DATA_TOGGLE)[0],i&&i.setAttribute("aria-expanded",!0)}f&&f()}}],[{key:"VERSION",get:function(){return f}},{key:"_jQueryInterface",value:function(b){return this.each(function(){var c=a(this),d=c.data(g);d||(d=d=new e(this),c.data(g,d)),"string"==typeof b&&d[b]()})}}]),e}();return a(document).on(l.CLICK_DATA_API,n.DATA_TOGGLE,function(b){b.preventDefault(),o._jQueryInterface.call(a(this),"show")}),a.fn[e]=o._jQueryInterface,a.fn[e].Constructor=o,a.fn[e].noConflict=function(){return a.fn[e]=j,o._jQueryInterface},o}(jQuery),function(a){var e="tooltip",f="4.0.0",g="bs.tooltip",h="."+g,i=a.fn[e],j=150,k="bs-tether",l={animation:!0,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:"0 0",constraints:[]},m={animation:"boolean",template:"string",title:"(string|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"string",constraints:"array"},n={TOP:"bottom center",RIGHT:"middle left",BOTTOM:"top center",LEFT:"middle right"},o={IN:"in",OUT:"out"},p={HIDE:"hide"+h,HIDDEN:"hidden"+h,SHOW:"show"+h,SHOWN:"shown"+h,INSERTED:"inserted"+h,CLICK:"click"+h,FOCUSIN:"focusin"+h,FOCUSOUT:"focusout"+h,MOUSEENTER:"mouseenter"+h,MOUSELEAVE:"mouseleave"+h},q={FADE:"fade",IN:"in"},r={TOOLTIP:".tooltip",TOOLTIP_INNER:".tooltip-inner"},s={element:!1,enabled:!1},t={HOVER:"hover",FOCUS:"focus",CLICK:"click",MANUAL:"manual"},u=function(){function i(a,c){b(this,i),this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._tether=null,this.element=a,this.config=this._getConfig(c),this.tip=null,this._setListeners()}return c(i,[{key:"enable",value:function(){this._isEnabled=!0}},{key:"disable",value:function(){this._isEnabled=!1}},{key:"toggleEnabled",value:function(){this._isEnabled=!this._isEnabled}},{key:"toggle",value:function(b){var c=this,d=this.constructor.DATA_KEY;b?(c=a(b.currentTarget).data(d),c||(c=new this.constructor(b.currentTarget,this._getDelegateConfig()),a(b.currentTarget).data(d,c)),c._activeTrigger.click=!c._activeTrigger.click,c._isWithActiveTrigger()?c._enter(null,c):c._leave(null,c)):a(c.getTipElement()).hasClass(q.IN)?c._leave(null,c):c._enter(null,c)}},{key:"dispose",value:function(){clearTimeout(this._timeout),this.cleanupTether(),a.removeData(this.element,this.constructor.DATA_KEY),a(this.element).off(this.constructor.EVENT_KEY),this.tip&&a(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._tether=null,this.element=null,this.config=null,this.tip=null}},{key:"show",value:function(){var b=this,c=a.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){a(this.element).trigger(c);var e=a.contains(this.element.ownerDocument.documentElement,this.element);if(c.isDefaultPrevented()||!e)return;var f=this.getTipElement(),g=d.getUID(this.constructor.NAME);f.setAttribute("id",g),this.element.setAttribute("aria-describedby",g),this.setContent(),this.config.animation&&a(f).addClass(q.FADE);var h="function"==typeof this.config.placement?this.config.placement.call(this,f,this.element):this.config.placement,j=this._getAttachment(h);a(f).data(this.constructor.DATA_KEY,this).appendTo(document.body),a(this.element).trigger(this.constructor.Event.INSERTED),this._tether=new Tether({element:f,target:this.element,attachment:j,classes:s,classPrefix:k,offset:this.config.offset,constraints:this.config.constraints}),d.reflow(f),this._tether.position(),a(f).addClass(q.IN);var l=function(){var c=b._hoverState;b._hoverState=null,a(b.element).trigger(b.constructor.Event.SHOWN),c===o.OUT&&b._leave(null,b)};d.supportsTransitionEnd()&&a(this.tip).hasClass(q.FADE)?a(this.tip).one(d.TRANSITION_END,l).emulateTransitionEnd(i._TRANSITION_DURATION):l()}}},{key:"hide",value:function(b){var c=this,e=this.getTipElement(),f=a.Event(this.constructor.Event.HIDE),g=function(){c._hoverState!==o.IN&&e.parentNode&&e.parentNode.removeChild(e),c.element.removeAttribute("aria-describedby"),a(c.element).trigger(c.constructor.Event.HIDDEN),c.cleanupTether(),b&&b()};a(this.element).trigger(f),f.isDefaultPrevented()||(a(e).removeClass(q.IN),d.supportsTransitionEnd()&&a(this.tip).hasClass(q.FADE)?a(e).one(d.TRANSITION_END,g).emulateTransitionEnd(j):g(),this._hoverState="")}},{key:"isWithContent",value:function(){return!!this.getTitle()}},{key:"getTipElement",value:function(){return this.tip=this.tip||a(this.config.template)[0]}},{key:"setContent",value:function(){var b=this.getTipElement(),c=this.getTitle(),d=this.config.html?"innerHTML":"innerText";a(b).find(r.TOOLTIP_INNER)[0][d]=c,a(b).removeClass(q.FADE).removeClass(q.IN),this.cleanupTether()}},{key:"getTitle",value:function(){var a=this.element.getAttribute("data-original-title");return a||(a="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),a}},{key:"cleanupTether",value:function(){this._tether&&(this._tether.destroy(),a(this.element).removeClass(this._removeTetherClasses),a(this.tip).removeClass(this._removeTetherClasses))}},{key:"_getAttachment",value:function(a){return n[a.toUpperCase()]}},{key:"_setListeners",value:function(){var b=this,c=this.config.trigger.split(" ");c.forEach(function(c){if("click"===c)a(b.element).on(b.constructor.Event.CLICK,b.config.selector,a.proxy(b.toggle,b));else if(c!==t.MANUAL){var d=c==t.HOVER?b.constructor.Event.MOUSEENTER:b.constructor.Event.FOCUSIN,e=c==t.HOVER?b.constructor.Event.MOUSELEAVE:b.constructor.Event.FOCUSOUT;a(b.element).on(d,b.config.selector,a.proxy(b._enter,b)).on(e,b.config.selector,a.proxy(b._leave,b))}}),this.config.selector?this.config=a.extend({},this.config,{trigger:"manual",selector:""}):this._fixTitle()}},{key:"_removeTetherClasses",value:function(a,b){return((b.baseVal||b).match(new RegExp("(^|\\s)"+k+"-\\S+","g"))||[]).join(" ")}},{key:"_fixTitle",value:function(){var a=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==a)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))}},{key:"_enter",value:function(b,c){var d=this.constructor.DATA_KEY;return c=c||a(b.currentTarget).data(d),c||(c=new this.constructor(b.currentTarget,this._getDelegateConfig()),a(b.currentTarget).data(d,c)),b&&(c._activeTrigger["focusin"==b.type?t.FOCUS:t.HOVER]=!0),a(c.getTipElement()).hasClass(q.IN)||c._hoverState===o.IN?void(c._hoverState=o.IN):(clearTimeout(c._timeout),c._hoverState=o.IN,c.config.delay&&c.config.delay.show?void(c._timeout=setTimeout(function(){c._hoverState===o.IN&&c.show()},c.config.delay.show)):void c.show())}},{key:"_leave",value:function(b,c){var d=this.constructor.DATA_KEY;return c=c||a(b.currentTarget).data(d),c||(c=new this.constructor(b.currentTarget,this._getDelegateConfig()),a(b.currentTarget).data(d,c)),b&&(c._activeTrigger["focusout"==b.type?t.FOCUS:t.HOVER]=!1),c._isWithActiveTrigger()?void 0:(clearTimeout(c._timeout),c._hoverState=o.OUT,c.config.delay&&c.config.delay.hide?void(c._timeout=setTimeout(function(){c._hoverState===o.OUT&&c.hide()},c.config.delay.hide)):void c.hide())}},{key:"_isWithActiveTrigger",value:function(){for(var a in this._activeTrigger)if(this._activeTrigger[a])return!0;return!1}},{key:"_getConfig",value:function(b){return b=a.extend({},this.constructor.Default,a(this.element).data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),d.typeCheckConfig(e,b,this.constructor.DefaultType),b}},{key:"_getDelegateConfig",value:function(){var a={};if(this.config)for(var b in this.config){var c=this.config[b];this.constructor.Default[b]!==c&&(a[b]=c)}return a}}],[{key:"VERSION",get:function(){return f}},{key:"Default",get:function(){return l}},{key:"NAME",get:function(){return e}},{key:"DATA_KEY",get:function(){return g}},{key:"Event",get:function(){return p}},{key:"EVENT_KEY",get:function(){return h}},{key:"DefaultType",get:function(){return m}},{key:"_jQueryInterface",value:function(b){return this.each(function(){var c=a(this).data(g),d="object"==typeof b?b:null;(c||!/destroy|hide/.test(b))&&(c||(c=new i(this,d),a(this).data(g,c)),"string"==typeof b&&c[b]())})}}]),i}();return a.fn[e]=u._jQueryInterface,a.fn[e].Constructor=u,a.fn[e].noConflict=function(){return a.fn[e]=i,u._jQueryInterface},u}(jQuery));!function(d){var f="popover",g="4.0.0",h="bs.popover",i="."+h,j=d.fn[f],k=d.extend({},e.Default,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),l=d.extend({},e.DefaultType,{content:"(string|function)"}),m={FADE:"fade",IN:"in"},n={TITLE:".popover-title",CONTENT:".popover-content",ARROW:".popover-arrow"},o={HIDE:"hide"+i,HIDDEN:"hidden"+i,SHOW:"show"+i,SHOWN:"shown"+i,INSERTED:"inserted"+i,CLICK:"click"+i,FOCUSIN:"focusin"+i,FOCUSOUT:"focusout"+i,MOUSEENTER:"mouseenter"+i,MOUSELEAVE:"mouseleave"+i},p=function(e){function j(){b(this,j),null!=e&&e.apply(this,arguments)}return a(j,e),c(j,[{key:"isWithContent",value:function(){return this.getTitle()||this._getContent()}},{key:"getTipElement",value:function(){return this.tip=this.tip||d(this.config.template)[0]}},{key:"setContent",value:function(){var a=this.getTipElement(),b=this.getTitle(),c=this._getContent(),e=d(a).find(n.TITLE)[0];e&&(e[this.config.html?"innerHTML":"innerText"]=b),d(a).find(n.CONTENT).children().detach().end()[this.config.html?"string"==typeof c?"html":"append":"text"](c),d(a).removeClass(m.FADE).removeClass(m.IN),this.cleanupTether()}},{key:"_getContent",value:function(){return this.element.getAttribute("data-content")||("function"==typeof this.config.content?this.config.content.call(this.element):this.config.content)}}],[{key:"VERSION",get:function(){return g}},{key:"Default",get:function(){return k}},{key:"NAME",get:function(){return f}},{key:"DATA_KEY",get:function(){return h}},{key:"Event",get:function(){return o}},{key:"EVENT_KEY",get:function(){return i}},{key:"DefaultType",get:function(){return l}},{key:"_jQueryInterface",value:function(a){return this.each(function(){var b=d(this).data(h),c="object"==typeof a?a:null;(b||!/destroy|hide/.test(a))&&(b||(b=new j(this,c),d(this).data(h,b)),"string"==typeof a&&b[a]())})}}]),j}(e);return d.fn[f]=p._jQueryInterface,d.fn[f].Constructor=p,d.fn[f].noConflict=function(){return d.fn[f]=j,p._jQueryInterface},p}(jQuery)}}(jQuery);
\ No newline at end of file diff --git a/docs/dist/js/npm.js b/docs/dist/js/npm.js index f9e8027f18..d0564681c8 100644 --- a/docs/dist/js/npm.js +++ b/docs/dist/js/npm.js @@ -1,12 +1,12 @@ // This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment. -require('../../js/util.js') -require('../../js/alert.js') -require('../../js/button.js') -require('../../js/carousel.js') -require('../../js/collapse.js') -require('../../js/dropdown.js') -require('../../js/modal.js') -require('../../js/scrollspy.js') -require('../../js/tooltip.js') -require('../../js/popover.js') -require('../../js/tab.js')
\ No newline at end of file +require('./umd/util.js') +require('./umd/alert.js') +require('./umd/button.js') +require('./umd/carousel.js') +require('./umd/collapse.js') +require('./umd/dropdown.js') +require('./umd/modal.js') +require('./umd/scrollspy.js') +require('./umd/tab.js') +require('./umd/tooltip.js') +require('./umd/popover.js')
\ No newline at end of file diff --git a/docs/dist/js/umd/alert.js b/docs/dist/js/umd/alert.js new file mode 100644 index 0000000000..4c2e1f77e0 --- /dev/null +++ b/docs/dist/js/umd/alert.js @@ -0,0 +1,211 @@ +(function (global, factory) { + if (typeof define === 'function' && define.amd) { + define(['exports', 'module', './util'], factory); + } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') { + factory(exports, module, require('./util')); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, mod, global.Util); + global.alert = mod.exports; + } +})(this, function (exports, module, _util) { + 'use strict'; + + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + + var _Util = _interopRequireDefault(_util); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): alert.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Alert = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'alert'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.alert'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 150; + + var Selector = { + DISMISS: '[data-dismiss="alert"]' + }; + + var Event = { + CLOSE: 'close' + EVENT_KEY, + CLOSED: 'closed' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + '' + DATA_API_KEY + }; + + var ClassName = { + ALERT: 'alert', + FADE: 'fade', + IN: 'in' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Alert = (function () { + function Alert(element) { + _classCallCheck(this, Alert); + + this._element = element; + } + + _createClass(Alert, [{ + key: 'close', + + // public + + value: function close(element) { + element = element || this._element; + + var rootElement = this._getRootElement(element); + var customEvent = this._triggerCloseEvent(rootElement); + + if (customEvent.isDefaultPrevented()) { + return; + } + + this._removeElement(rootElement); + } + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + this._element = null; + } + }, { + key: '_getRootElement', + + // private + + value: function _getRootElement(element) { + var parent = false; + var selector = _Util['default'].getSelectorFromElement(element); + + if (selector) { + parent = $(selector)[0]; + } + + if (!parent) { + parent = $(element).closest('.' + ClassName.ALERT)[0]; + } + + return parent; + } + }, { + key: '_triggerCloseEvent', + value: function _triggerCloseEvent(element) { + var closeEvent = $.Event(Event.CLOSE); + $(element).trigger(closeEvent); + return closeEvent; + } + }, { + key: '_removeElement', + value: function _removeElement(element) { + $(element).removeClass(ClassName.IN); + + if (!_Util['default'].supportsTransitionEnd() || !$(element).hasClass(ClassName.FADE)) { + this._destroyElement(element); + return; + } + + $(element).one(_Util['default'].TRANSITION_END, this._destroyElement.bind(this, element)).emulateTransitionEnd(TRANSITION_DURATION); + } + }, { + key: '_destroyElement', + value: function _destroyElement(element) { + $(element).detach().trigger(Event.CLOSED).remove(); + } + }], [{ + key: 'VERSION', + + // getters + + get: function () { + return VERSION; + } + }, { + key: '_jQueryInterface', + + // static + + value: function _jQueryInterface(config) { + return this.each(function () { + var $element = $(this); + var data = $element.data(DATA_KEY); + + if (!data) { + data = new Alert(this); + $element.data(DATA_KEY, data); + } + + if (config === 'close') { + data[config](this); + } + }); + } + }, { + key: '_handleDismiss', + value: function _handleDismiss(alertInstance) { + return function (event) { + if (event) { + event.preventDefault(); + } + + alertInstance.close(this); + }; + } + }]); + + return Alert; + })(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert())); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Alert._jQueryInterface; + $.fn[NAME].Constructor = Alert; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Alert._jQueryInterface; + }; + + return Alert; + })(jQuery); + + module.exports = Alert; +});
\ No newline at end of file diff --git a/docs/dist/js/umd/button.js b/docs/dist/js/umd/button.js new file mode 100644 index 0000000000..b6a690219d --- /dev/null +++ b/docs/dist/js/umd/button.js @@ -0,0 +1,189 @@ +(function (global, factory) { + if (typeof define === 'function' && define.amd) { + define(['exports', 'module'], factory); + } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') { + factory(exports, module); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, mod); + global.button = mod.exports; + } +})(this, function (exports, module) { + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): button.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + 'use strict'; + + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + + var Button = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'button'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.button'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 150; + + var ClassName = { + ACTIVE: 'active', + BUTTON: 'btn', + FOCUS: 'focus' + }; + + var Selector = { + DATA_TOGGLE_CARROT: '[data-toggle^="button"]', + DATA_TOGGLE: '[data-toggle="buttons"]', + INPUT: 'input', + ACTIVE: '.active', + BUTTON: '.btn' + }; + + var Event = { + CLICK_DATA_API: 'click' + EVENT_KEY + '' + DATA_API_KEY, + FOCUS_BLUR_DATA_API: 'focus' + EVENT_KEY + '' + DATA_API_KEY + ' ' + ('blur' + EVENT_KEY + '' + DATA_API_KEY) + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Button = (function () { + function Button(element) { + _classCallCheck(this, Button); + + this._element = element; + } + + _createClass(Button, [{ + key: 'toggle', + + // public + + value: function toggle() { + var triggerChangeEvent = true; + var rootElement = $(this._element).closest(Selector.DATA_TOGGLE)[0]; + + if (rootElement) { + var input = $(this._element).find(Selector.INPUT)[0]; + + if (input) { + if (input.type === 'radio') { + if (input.checked && $(this._element).hasClass(ClassName.ACTIVE)) { + triggerChangeEvent = false; + } else { + var activeElement = $(rootElement).find(Selector.ACTIVE)[0]; + + if (activeElement) { + $(activeElement).removeClass(ClassName.ACTIVE); + } + } + } + + if (triggerChangeEvent) { + input.checked = !$(this._element).hasClass(ClassName.ACTIVE); + $(this._element).trigger('change'); + } + } + } else { + this._element.setAttribute('aria-pressed', !$(this._element).hasClass(ClassName.ACTIVE)); + } + + if (triggerChangeEvent) { + $(this._element).toggleClass(ClassName.ACTIVE); + } + } + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + this._element = null; + } + }], [{ + key: 'VERSION', + + // getters + + get: function () { + return VERSION; + } + }, { + key: '_jQueryInterface', + + // static + + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + + if (!data) { + data = new Button(this); + $(this).data(DATA_KEY, data); + } + + if (config === 'toggle') { + data[config](); + } + }); + } + }]); + + return Button; + })(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) { + event.preventDefault(); + + var button = event.target; + + if (!$(button).hasClass(ClassName.BUTTON)) { + button = $(button).closest(Selector.BUTTON); + } + + Button._jQueryInterface.call($(button), 'toggle'); + }).on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) { + var button = $(event.target).closest(Selector.BUTTON)[0]; + $(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type)); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Button._jQueryInterface; + $.fn[NAME].Constructor = Button; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Button._jQueryInterface; + }; + + return Button; + })(jQuery); + + module.exports = Button; +});
\ No newline at end of file diff --git a/docs/dist/js/umd/carousel.js b/docs/dist/js/umd/carousel.js new file mode 100644 index 0000000000..d19c7e2577 --- /dev/null +++ b/docs/dist/js/umd/carousel.js @@ -0,0 +1,485 @@ +(function (global, factory) { + if (typeof define === 'function' && define.amd) { + define(['exports', 'module', './util'], factory); + } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') { + factory(exports, module, require('./util')); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, mod, global.Util); + global.carousel = mod.exports; + } +})(this, function (exports, module, _util) { + 'use strict'; + + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + + var _Util = _interopRequireDefault(_util); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): carousel.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Carousel = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'carousel'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.carousel'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 600; + + var Default = { + interval: 5000, + keyboard: true, + slide: false, + pause: 'hover', + wrap: true + }; + + var DefaultType = { + interval: '(number|boolean)', + keyboard: 'boolean', + slide: '(boolean|string)', + pause: '(string|boolean)', + wrap: 'boolean' + }; + + var Direction = { + NEXT: 'next', + PREVIOUS: 'prev' + }; + + var Event = { + SLIDE: 'slide' + EVENT_KEY, + SLID: 'slid' + EVENT_KEY, + KEYDOWN: 'keydown' + EVENT_KEY, + MOUSEENTER: 'mouseenter' + EVENT_KEY, + MOUSELEAVE: 'mouseleave' + EVENT_KEY, + LOAD_DATA_API: 'load' + EVENT_KEY + '' + DATA_API_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + '' + DATA_API_KEY + }; + + var ClassName = { + CAROUSEL: 'carousel', + ACTIVE: 'active', + SLIDE: 'slide', + RIGHT: 'right', + LEFT: 'left', + ITEM: 'carousel-item' + }; + + var Selector = { + ACTIVE: '.active', + ACTIVE_ITEM: '.active.carousel-item', + ITEM: '.carousel-item', + NEXT_PREV: '.next, .prev', + INDICATORS: '.carousel-indicators', + DATA_SLIDE: '[data-slide], [data-slide-to]', + DATA_RIDE: '[data-ride="carousel"]' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Carousel = (function () { + function Carousel(element, config) { + _classCallCheck(this, Carousel); + + this._items = null; + this._interval = null; + this._activeElement = null; + + this._isPaused = false; + this._isSliding = false; + + this._config = this._getConfig(config); + this._element = $(element)[0]; + this._indicatorsElement = $(this._element).find(Selector.INDICATORS)[0]; + + this._addEventListeners(); + } + + _createClass(Carousel, [{ + key: 'next', + + // public + + value: function next() { + if (!this._isSliding) { + this._slide(Direction.NEXT); + } + } + }, { + key: 'prev', + value: function prev() { + if (!this._isSliding) { + this._slide(Direction.PREVIOUS); + } + } + }, { + key: 'pause', + value: function pause(event) { + if (!event) { + this._isPaused = true; + } + + if ($(this._element).find(Selector.NEXT_PREV)[0] && _Util['default'].supportsTransitionEnd()) { + _Util['default'].triggerTransitionEnd(this._element); + this.cycle(true); + } + + clearInterval(this._interval); + this._interval = null; + } + }, { + key: 'cycle', + value: function cycle(event) { + if (!event) { + this._isPaused = false; + } + + if (this._interval) { + clearInterval(this._interval); + this._interval = null; + } + + if (this._config.interval && !this._isPaused) { + this._interval = setInterval($.proxy(this.next, this), this._config.interval); + } + } + }, { + key: 'to', + value: function to(index) { + var _this = this; + + this._activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0]; + + var activeIndex = this._getItemIndex(this._activeElement); + + if (index > this._items.length - 1 || index < 0) { + return; + } + + if (this._isSliding) { + $(this._element).one(Event.SLID, function () { + return _this.to(index); + }); + return; + } + + if (activeIndex == index) { + this.pause(); + this.cycle(); + return; + } + + var direction = index > activeIndex ? Direction.NEXT : Direction.PREVIOUS; + + this._slide(direction, this._items[index]); + } + }, { + key: 'dispose', + value: function dispose() { + $(this._element).off(EVENT_KEY); + $.removeData(this._element, DATA_KEY); + + this._items = null; + this._config = null; + this._element = null; + this._interval = null; + this._isPaused = null; + this._isSliding = null; + this._activeElement = null; + this._indicatorsElement = null; + } + }, { + key: '_getConfig', + + // private + + value: function _getConfig(config) { + config = $.extend({}, Default, config); + _Util['default'].typeCheckConfig(NAME, config, DefaultType); + return config; + } + }, { + key: '_addEventListeners', + value: function _addEventListeners() { + if (this._config.keyboard) { + $(this._element).on(Event.KEYDOWN, $.proxy(this._keydown, this)); + } + + if (this._config.pause == 'hover' && !('ontouchstart' in document.documentElement)) { + $(this._element).on(Event.MOUSEENTER, $.proxy(this.pause, this)).on(Event.MOUSELEAVE, $.proxy(this.cycle, this)); + } + } + }, { + key: '_keydown', + value: function _keydown(event) { + event.preventDefault(); + + if (/input|textarea/i.test(event.target.tagName)) return; + + switch (event.which) { + case 37: + this.prev();break; + case 39: + this.next();break; + default: + return; + } + } + }, { + key: '_getItemIndex', + value: function _getItemIndex(element) { + this._items = $.makeArray($(element).parent().find(Selector.ITEM)); + return this._items.indexOf(element); + } + }, { + key: '_getItemByDirection', + value: function _getItemByDirection(direction, activeElement) { + var isNextDirection = direction === Direction.NEXT; + var isPrevDirection = direction === Direction.PREVIOUS; + var activeIndex = this._getItemIndex(activeElement); + var lastItemIndex = this._items.length - 1; + var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex == lastItemIndex; + + if (isGoingToWrap && !this._config.wrap) { + return activeElement; + } + + var delta = direction == Direction.PREVIOUS ? -1 : 1; + var itemIndex = (activeIndex + delta) % this._items.length; + + return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex]; + } + }, { + key: '_triggerSlideEvent', + value: function _triggerSlideEvent(relatedTarget, directionalClassname) { + var slideEvent = $.Event(Event.SLIDE, { + relatedTarget: relatedTarget, + direction: directionalClassname + }); + + $(this._element).trigger(slideEvent); + + return slideEvent; + } + }, { + key: '_setActiveIndicatorElement', + value: function _setActiveIndicatorElement(element) { + if (this._indicatorsElement) { + $(this._indicatorsElement).find(Selector.ACTIVE).removeClass(ClassName.ACTIVE); + + var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)]; + + if (nextIndicator) { + $(nextIndicator).addClass(ClassName.ACTIVE); + } + } + } + }, { + key: '_slide', + value: function _slide(direction, element) { + var _this2 = this; + + var activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0]; + var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement); + + var isCycling = !!this._interval; + + var directionalClassName = direction == Direction.NEXT ? ClassName.LEFT : ClassName.RIGHT; + + if (nextElement && $(nextElement).hasClass(ClassName.ACTIVE)) { + this._isSliding = false; + return; + } + + var slideEvent = this._triggerSlideEvent(nextElement, directionalClassName); + if (slideEvent.isDefaultPrevented()) { + return; + } + + if (!activeElement || !nextElement) { + // some weirdness is happening, so we bail + return; + } + + this._isSliding = true; + + if (isCycling) { + this.pause(); + } + + this._setActiveIndicatorElement(nextElement); + + var slidEvent = $.Event(Event.SLID, { + relatedTarget: nextElement, + direction: directionalClassName + }); + + if (_Util['default'].supportsTransitionEnd() && $(this._element).hasClass(ClassName.SLIDE)) { + + $(nextElement).addClass(direction); + + _Util['default'].reflow(nextElement); + + $(activeElement).addClass(directionalClassName); + $(nextElement).addClass(directionalClassName); + + $(activeElement).one(_Util['default'].TRANSITION_END, function () { + $(nextElement).removeClass(directionalClassName).removeClass(direction); + + $(nextElement).addClass(ClassName.ACTIVE); + + $(activeElement).removeClass(ClassName.ACTIVE).removeClass(direction).removeClass(directionalClassName); + + _this2._isSliding = false; + + setTimeout(function () { + return $(_this2._element).trigger(slidEvent); + }, 0); + }).emulateTransitionEnd(TRANSITION_DURATION); + } else { + $(activeElement).removeClass(ClassName.ACTIVE); + $(nextElement).addClass(ClassName.ACTIVE); + + this._isSliding = false; + $(this._element).trigger(slidEvent); + } + + if (isCycling) { + this.cycle(); + } + } + }], [{ + key: 'VERSION', + + // getters + + get: function () { + return VERSION; + } + }, { + key: 'Default', + get: function () { + return Default; + } + }, { + key: '_jQueryInterface', + + // static + + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = $.extend({}, Default, $(this).data()); + + if (typeof config === 'object') { + $.extend(_config, config); + } + + var action = typeof config === 'string' ? config : _config.slide; + + if (!data) { + data = new Carousel(this, _config); + $(this).data(DATA_KEY, data); + } + + if (typeof config == 'number') { + data.to(config); + } else if (action) { + data[action](); + } else if (_config.interval) { + data.pause(); + data.cycle(); + } + }); + } + }, { + key: '_dataApiClickHandler', + value: function _dataApiClickHandler(event) { + var selector = _Util['default'].getSelectorFromElement(this); + + if (!selector) { + return; + } + + var target = $(selector)[0]; + + if (!target || !$(target).hasClass(ClassName.CAROUSEL)) { + return; + } + + var config = $.extend({}, $(target).data(), $(this).data()); + + var slideIndex = this.getAttribute('data-slide-to'); + if (slideIndex) { + config.interval = false; + } + + Carousel._jQueryInterface.call($(target), config); + + if (slideIndex) { + $(target).data(DATA_KEY).to(slideIndex); + } + + event.preventDefault(); + } + }]); + + return Carousel; + })(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler); + + $(window).on(Event.LOAD_DATA_API, function () { + $(Selector.DATA_RIDE).each(function () { + var $carousel = $(this); + Carousel._jQueryInterface.call($carousel, $carousel.data()); + }); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Carousel._jQueryInterface; + $.fn[NAME].Constructor = Carousel; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Carousel._jQueryInterface; + }; + + return Carousel; + })(jQuery); + + module.exports = Carousel; +});
\ No newline at end of file diff --git a/docs/dist/js/umd/collapse.js b/docs/dist/js/umd/collapse.js new file mode 100644 index 0000000000..1002dda7ad --- /dev/null +++ b/docs/dist/js/umd/collapse.js @@ -0,0 +1,380 @@ +(function (global, factory) { + if (typeof define === 'function' && define.amd) { + define(['exports', 'module', './util'], factory); + } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') { + factory(exports, module, require('./util')); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, mod, global.Util); + global.collapse = mod.exports; + } +})(this, function (exports, module, _util) { + 'use strict'; + + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + + var _Util = _interopRequireDefault(_util); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): collapse.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Collapse = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'collapse'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.collapse'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 600; + + var Default = { + toggle: true, + parent: '' + }; + + var DefaultType = { + toggle: 'boolean', + parent: 'string' + }; + + var Event = { + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + '' + DATA_API_KEY + }; + + var ClassName = { + IN: 'in', + COLLAPSE: 'collapse', + COLLAPSING: 'collapsing', + COLLAPSED: 'collapsed' + }; + + var Dimension = { + WIDTH: 'width', + HEIGHT: 'height' + }; + + var Selector = { + ACTIVES: '.panel > .in, .panel > .collapsing', + DATA_TOGGLE: '[data-toggle="collapse"]' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Collapse = (function () { + function Collapse(element, config) { + _classCallCheck(this, Collapse); + + this._isTransitioning = false; + this._element = element; + this._config = this._getConfig(config); + this._triggerArray = $.makeArray($('[data-toggle="collapse"][href="#' + element.id + '"],' + ('[data-toggle="collapse"][data-target="#' + element.id + '"]'))); + + this._parent = this._config.parent ? this._getParent() : null; + + if (!this._config.parent) { + this._addAriaAndCollapsedClass(this._element, this._triggerArray); + } + + if (this._config.toggle) { + this.toggle(); + } + } + + _createClass(Collapse, [{ + key: 'toggle', + + // public + + value: function toggle() { + if ($(this._element).hasClass(ClassName.IN)) { + this.hide(); + } else { + this.show(); + } + } + }, { + key: 'show', + value: function show() { + var _this = this; + + if (this._isTransitioning || $(this._element).hasClass(ClassName.IN)) { + return; + } + + var actives = undefined; + var activesData = undefined; + + if (this._parent) { + actives = $.makeArray($(Selector.ACTIVES)); + if (!actives.length) { + actives = null; + } + } + + if (actives) { + activesData = $(actives).data(DATA_KEY); + if (activesData && activesData._isTransitioning) { + return; + } + } + + var startEvent = $.Event(Event.SHOW); + $(this._element).trigger(startEvent); + if (startEvent.isDefaultPrevented()) { + return; + } + + if (actives) { + Collapse._jQueryInterface.call($(actives), 'hide'); + if (!activesData) { + $(actives).data(DATA_KEY, null); + } + } + + var dimension = this._getDimension(); + + $(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING); + + this._element.style[dimension] = 0; + this._element.setAttribute('aria-expanded', true); + + if (this._triggerArray.length) { + $(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true); + } + + this.setTransitioning(true); + + var complete = function complete() { + $(_this._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).addClass(ClassName.IN); + + _this._element.style[dimension] = ''; + + _this.setTransitioning(false); + + $(_this._element).trigger(Event.SHOWN); + }; + + if (!_Util['default'].supportsTransitionEnd()) { + complete(); + return; + } + + var scrollSize = 'scroll' + (dimension[0].toUpperCase() + dimension.slice(1)); + + $(this._element).one(_Util['default'].TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + + this._element.style[dimension] = this._element[scrollSize] + 'px'; + } + }, { + key: 'hide', + value: function hide() { + var _this2 = this; + + if (this._isTransitioning || !$(this._element).hasClass(ClassName.IN)) { + return; + } + + var startEvent = $.Event(Event.HIDE); + $(this._element).trigger(startEvent); + if (startEvent.isDefaultPrevented()) { + return; + } + + var dimension = this._getDimension(); + var offsetDimension = dimension === Dimension.WIDTH ? 'offsetWidth' : 'offsetHeight'; + + this._element.style[dimension] = this._element[offsetDimension] + 'px'; + + _Util['default'].reflow(this._element); + + $(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.IN); + + this._element.setAttribute('aria-expanded', false); + + if (this._triggerArray.length) { + $(this._triggerArray).addClass(ClassName.COLLAPSED).attr('aria-expanded', false); + } + + this.setTransitioning(true); + + var complete = function complete() { + _this2.setTransitioning(false); + $(_this2._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).trigger(Event.HIDDEN); + }; + + this._element.style[dimension] = 0; + + if (!_Util['default'].supportsTransitionEnd()) { + return complete(); + } + + $(this._element).one(_Util['default'].TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + } + }, { + key: 'setTransitioning', + value: function setTransitioning(isTransitioning) { + this._isTransitioning = isTransitioning; + } + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + + this._config = null; + this._parent = null; + this._element = null; + this._triggerArray = null; + this._isTransitioning = null; + } + }, { + key: '_getConfig', + + // private + + value: function _getConfig(config) { + config = $.extend({}, Default, config); + config.toggle = !!config.toggle; // coerce string values + _Util['default'].typeCheckConfig(NAME, config, DefaultType); + return config; + } + }, { + key: '_getDimension', + value: function _getDimension() { + var hasWidth = $(this._element).hasClass(Dimension.WIDTH); + return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT; + } + }, { + key: '_getParent', + value: function _getParent() { + var _this3 = this; + + var parent = $(this._config.parent)[0]; + var selector = '[data-toggle="collapse"][data-parent="' + this._config.parent + '"]'; + + $(parent).find(selector).each(function (i, element) { + _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]); + }); + + return parent; + } + }, { + key: '_addAriaAndCollapsedClass', + value: function _addAriaAndCollapsedClass(element, triggerArray) { + if (element) { + var isOpen = $(element).hasClass(ClassName.IN); + element.setAttribute('aria-expanded', isOpen); + + if (triggerArray.length) { + $(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen); + } + } + } + }], [{ + key: 'VERSION', + + // getters + + get: function () { + return VERSION; + } + }, { + key: 'Default', + get: function () { + return Default; + } + }, { + key: '_getTargetFromElement', + + // static + + value: function _getTargetFromElement(element) { + var selector = _Util['default'].getSelectorFromElement(element); + return selector ? $(selector)[0] : null; + } + }, { + key: '_jQueryInterface', + value: function _jQueryInterface(config) { + return this.each(function () { + var $this = $(this); + var data = $this.data(DATA_KEY); + var _config = $.extend({}, Default, $this.data(), typeof config === 'object' && config); + + if (!data && _config.toggle && /show|hide/.test(config)) { + _config.toggle = false; + } + + if (!data) { + data = new Collapse(this, _config); + $this.data(DATA_KEY, data); + } + + if (typeof config === 'string') { + data[config](); + } + }); + } + }]); + + return Collapse; + })(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + event.preventDefault(); + + var target = Collapse._getTargetFromElement(this); + + var data = $(target).data(DATA_KEY); + var config = data ? 'toggle' : $(this).data(); + + Collapse._jQueryInterface.call($(target), config); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Collapse._jQueryInterface; + $.fn[NAME].Constructor = Collapse; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Collapse._jQueryInterface; + }; + + return Collapse; + })(jQuery); + + module.exports = Collapse; +});
\ No newline at end of file diff --git a/docs/dist/js/umd/dropdown.js b/docs/dist/js/umd/dropdown.js new file mode 100644 index 0000000000..9c04e45b3e --- /dev/null +++ b/docs/dist/js/umd/dropdown.js @@ -0,0 +1,300 @@ +(function (global, factory) { + if (typeof define === 'function' && define.amd) { + define(['exports', 'module', './util'], factory); + } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') { + factory(exports, module, require('./util')); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, mod, global.Util); + global.dropdown = mod.exports; + } +})(this, function (exports, module, _util) { + 'use strict'; + + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + + var _Util = _interopRequireDefault(_util); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): dropdown.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Dropdown = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'dropdown'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.dropdown'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + CLICK: 'click' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + '' + DATA_API_KEY, + KEYDOWN_DATA_API: 'keydown' + EVENT_KEY + '' + DATA_API_KEY + }; + + var ClassName = { + BACKDROP: 'dropdown-backdrop', + DISABLED: 'disabled', + OPEN: 'open' + }; + + var Selector = { + BACKDROP: '.dropdown-backdrop', + DATA_TOGGLE: '[data-toggle="dropdown"]', + FORM_CHILD: '.dropdown form', + ROLE_MENU: '[role="menu"]', + ROLE_LISTBOX: '[role="listbox"]', + NAVBAR_NAV: '.navbar-nav', + VISIBLE_ITEMS: '[role="menu"] li:not(.disabled) a, ' + '[role="listbox"] li:not(.disabled) a' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Dropdown = (function () { + function Dropdown(element) { + _classCallCheck(this, Dropdown); + + this._element = element; + + this._addEventListeners(); + } + + _createClass(Dropdown, [{ + key: 'toggle', + + // public + + value: function toggle() { + if (this.disabled || $(this).hasClass(ClassName.DISABLED)) { + return; + } + + var parent = Dropdown._getParentFromElement(this); + var isActive = $(parent).hasClass(ClassName.OPEN); + + Dropdown._clearMenus(); + + if (isActive) { + return false; + } + + if ('ontouchstart' in document.documentElement && !$(parent).closest(Selector.NAVBAR_NAV).length) { + + // if mobile we use a backdrop because click events don't delegate + var dropdown = document.createElement('div'); + dropdown.className = ClassName.BACKDROP; + $(dropdown).insertBefore(this); + $(dropdown).on('click', Dropdown._clearMenus); + } + + var relatedTarget = { relatedTarget: this }; + var showEvent = $.Event(Event.SHOW, relatedTarget); + + $(parent).trigger(showEvent); + + if (showEvent.isDefaultPrevented()) { + return; + } + + this.focus(); + this.setAttribute('aria-expanded', 'true'); + + $(parent).toggleClass(ClassName.OPEN); + $(parent).trigger(Event.SHOWN, relatedTarget); + + return false; + } + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + $(this._element).off(EVENT_KEY); + this._element = null; + } + }, { + key: '_addEventListeners', + + // private + + value: function _addEventListeners() { + $(this._element).on(Event.CLICK, this.toggle); + } + }], [{ + key: 'VERSION', + + // getters + + get: function () { + return VERSION; + } + }, { + key: '_jQueryInterface', + + // static + + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + + if (!data) { + $(this).data(DATA_KEY, data = new Dropdown(this)); + } + + if (typeof config === 'string') { + data[config].call(this); + } + }); + } + }, { + key: '_clearMenus', + value: function _clearMenus(event) { + if (event && event.which === 3) { + return; + } + + var backdrop = $(Selector.BACKDROP)[0]; + if (backdrop) { + backdrop.parentNode.removeChild(backdrop); + } + + var toggles = $.makeArray($(Selector.DATA_TOGGLE)); + + for (var i = 0; i < toggles.length; i++) { + var _parent = Dropdown._getParentFromElement(toggles[i]); + var relatedTarget = { relatedTarget: toggles[i] }; + + if (!$(_parent).hasClass(ClassName.OPEN)) { + continue; + } + + if (event && event.type === 'click' && /input|textarea/i.test(event.target.tagName) && $.contains(_parent, event.target)) { + continue; + } + + var hideEvent = $.Event(Event.HIDE, relatedTarget); + $(_parent).trigger(hideEvent); + if (hideEvent.isDefaultPrevented()) { + continue; + } + + toggles[i].setAttribute('aria-expanded', 'false'); + + $(_parent).removeClass(ClassName.OPEN).trigger(Event.HIDDEN, relatedTarget); + } + } + }, { + key: '_getParentFromElement', + value: function _getParentFromElement(element) { + var parent = undefined; + var selector = _Util['default'].getSelectorFromElement(element); + + if (selector) { + parent = $(selector)[0]; + } + + return parent || element.parentNode; + } + }, { + key: '_dataApiKeydownHandler', + value: function _dataApiKeydownHandler(event) { + if (!/(38|40|27|32)/.test(event.which) || /input|textarea/i.test(event.target.tagName)) { + return; + } + + event.preventDefault(); + event.stopPropagation(); + + if (this.disabled || $(this).hasClass(ClassName.DISABLED)) { + return; + } + + var parent = Dropdown._getParentFromElement(this); + var isActive = $(parent).hasClass(ClassName.OPEN); + + if (!isActive && event.which !== 27 || isActive && event.which === 27) { + + if (event.which === 27) { + var toggle = $(parent).find(Selector.DATA_TOGGLE)[0]; + $(toggle).trigger('focus'); + } + + $(this).trigger('click'); + return; + } + + var items = $.makeArray($(Selector.VISIBLE_ITEMS)); + + items = items.filter(function (item) { + return item.offsetWidth || item.offsetHeight; + }); + + if (!items.length) { + return; + } + + var index = items.indexOf(event.target); + + if (event.which === 38 && index > 0) index--; // up + if (event.which === 40 && index < items.length - 1) index++; // down + if (! ~index) index = 0; + + items[index].focus(); + } + }]); + + return Dropdown; + })(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.ROLE_MENU, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.ROLE_LISTBOX, Dropdown._dataApiKeydownHandler).on(Event.CLICK_DATA_API, Dropdown._clearMenus).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, Dropdown.prototype.toggle).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) { + e.stopPropagation(); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Dropdown._jQueryInterface; + $.fn[NAME].Constructor = Dropdown; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Dropdown._jQueryInterface; + }; + + return Dropdown; + })(jQuery); + + module.exports = Dropdown; +});
\ No newline at end of file diff --git a/docs/dist/js/umd/modal.js b/docs/dist/js/umd/modal.js new file mode 100644 index 0000000000..ba7ccc30ba --- /dev/null +++ b/docs/dist/js/umd/modal.js @@ -0,0 +1,548 @@ +(function (global, factory) { + if (typeof define === 'function' && define.amd) { + define(['exports', 'module', './util'], factory); + } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') { + factory(exports, module, require('./util')); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, mod, global.Util); + global.modal = mod.exports; + } +})(this, function (exports, module, _util) { + 'use strict'; + + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + + var _Util = _interopRequireDefault(_util); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): modal.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Modal = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'modal'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.modal'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 300; + var BACKDROP_TRANSITION_DURATION = 150; + + var Default = { + backdrop: true, + keyboard: true, + focus: true, + show: true + }; + + var DefaultType = { + backdrop: '(boolean|string)', + keyboard: 'boolean', + focus: 'boolean', + show: 'boolean' + }; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + FOCUSIN: 'focusin' + EVENT_KEY, + RESIZE: 'resize' + EVENT_KEY, + CLICK_DISMISS: 'click.dismiss' + EVENT_KEY, + KEYDOWN_DISMISS: 'keydown.dismiss' + EVENT_KEY, + MOUSEUP_DISMISS: 'mouseup.dismiss' + EVENT_KEY, + MOUSEDOWN_DISMISS: 'mousedown.dismiss' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + '' + DATA_API_KEY + }; + + var ClassName = { + BACKDROP: 'modal-backdrop', + OPEN: 'modal-open', + FADE: 'fade', + IN: 'in' + }; + + var Selector = { + DIALOG: '.modal-dialog', + DATA_TOGGLE: '[data-toggle="modal"]', + DATA_DISMISS: '[data-dismiss="modal"]', + SCROLLBAR_MEASURER: 'modal-scrollbar-measure' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Modal = (function () { + function Modal(element, config) { + _classCallCheck(this, Modal); + + this._config = this._getConfig(config); + this._element = element; + this._dialog = $(element).find(Selector.DIALOG)[0]; + this._backdrop = null; + this._isShown = false; + this._isBodyOverflowing = false; + this._ignoreBackdropClick = false; + this._originalBodyPadding = 0; + this._scrollbarWidth = 0; + } + + _createClass(Modal, [{ + key: 'toggle', + + // public + + value: function toggle(relatedTarget) { + return this._isShown ? this.hide() : this.show(relatedTarget); + } + }, { + key: 'show', + value: function show(relatedTarget) { + var _this = this; + + var showEvent = $.Event(Event.SHOW, { + relatedTarget: relatedTarget + }); + + $(this._element).trigger(showEvent); + + if (this._isShown || showEvent.isDefaultPrevented()) { + return; + } + + this._isShown = true; + + this._checkScrollbar(); + this._setScrollbar(); + + $(document.body).addClass(ClassName.OPEN); + + this._setEscapeEvent(); + this._setResizeEvent(); + + $(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, $.proxy(this.hide, this)); + + $(this._dialog).on(Event.MOUSEDOWN_DISMISS, function () { + $(_this._element).one(Event.MOUSEUP_DISMISS, function (event) { + if ($(event.target).is(_this._element)) { + that._ignoreBackdropClick = true; + } + }); + }); + + this._showBackdrop($.proxy(this._showElement, this, relatedTarget)); + } + }, { + key: 'hide', + value: function hide(event) { + if (event) { + event.preventDefault(); + } + + var hideEvent = $.Event(Event.HIDE); + + $(this._element).trigger(hideEvent); + + if (!this._isShown || hideEvent.isDefaultPrevented()) { + return; + } + + this._isShown = false; + + this._setEscapeEvent(); + this._setResizeEvent(); + + $(document).off(Event.FOCUSIN); + + $(this._element).removeClass(ClassName.IN); + + $(this._element).off(Event.CLICK_DISMISS); + $(this._dialog).off(Event.MOUSEDOWN_DISMISS); + + if (_Util['default'].supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) { + + $(this._element).one(_Util['default'].TRANSITION_END, $.proxy(this._hideModal, this)).emulateTransitionEnd(TRANSITION_DURATION); + } else { + this._hideModal(); + } + } + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + + $(window).off(EVENT_KEY); + $(document).off(EVENT_KEY); + $(this._element).off(EVENT_KEY); + $(this._backdrop).off(EVENT_KEY); + + this._config = null; + this._element = null; + this._dialog = null; + this._backdrop = null; + this._isShown = null; + this._isBodyOverflowing = null; + this._ignoreBackdropClick = null; + this._originalBodyPadding = null; + this._scrollbarWidth = null; + } + }, { + key: '_getConfig', + + // private + + value: function _getConfig(config) { + config = $.extend({}, Default, config); + _Util['default'].typeCheckConfig(NAME, config, DefaultType); + return config; + } + }, { + key: '_showElement', + value: function _showElement(relatedTarget) { + var _this2 = this; + + var transition = _Util['default'].supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE); + + if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) { + // don't move modals dom position + document.body.appendChild(this._element); + } + + this._element.style.display = 'block'; + this._element.scrollTop = 0; + + if (transition) { + _Util['default'].reflow(this._element); + } + + $(this._element).addClass(ClassName.IN); + + if (this._config.focus) this._enforceFocus(); + + var shownEvent = $.Event(Event.SHOWN, { + relatedTarget: relatedTarget + }); + + var transitionComplete = function transitionComplete() { + if (_this2._config.focus) _this2._element.focus(); + $(_this2._element).trigger(shownEvent); + }; + + if (transition) { + $(this._dialog).one(_Util['default'].TRANSITION_END, transitionComplete).emulateTransitionEnd(TRANSITION_DURATION); + } else { + transitionComplete(); + } + } + }, { + key: '_enforceFocus', + value: function _enforceFocus() { + var _this3 = this; + + $(document).off(Event.FOCUSIN) // guard against infinite focus loop + .on(Event.FOCUSIN, function (event) { + if (_this3._element !== event.target && !$(_this3._element).has(event.target).length) { + _this3._element.focus(); + } + }); + } + }, { + key: '_setEscapeEvent', + value: function _setEscapeEvent() { + var _this4 = this; + + if (this._isShown && this._config.keyboard) { + $(this._element).on(Event.KEYDOWN_DISMISS, function (event) { + if (event.which === 27) { + _this4.hide(); + } + }); + } else if (!this._isShown) { + $(this._element).off(Event.KEYDOWN_DISMISS); + } + } + }, { + key: '_setResizeEvent', + value: function _setResizeEvent() { + if (this._isShown) { + $(window).on(Event.RESIZE, $.proxy(this._handleUpdate, this)); + } else { + $(window).off(Event.RESIZE); + } + } + }, { + key: '_hideModal', + value: function _hideModal() { + var _this5 = this; + + this._element.style.display = 'none'; + this._showBackdrop(function () { + $(document.body).removeClass(ClassName.OPEN); + _this5._resetAdjustments(); + _this5._resetScrollbar(); + $(_this5._element).trigger(Event.HIDDEN); + }); + } + }, { + key: '_removeBackdrop', + value: function _removeBackdrop() { + if (this._backdrop) { + $(this._backdrop).remove(); + this._backdrop = null; + } + } + }, { + key: '_showBackdrop', + value: function _showBackdrop(callback) { + var _this6 = this; + + var animate = $(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : ''; + + if (this._isShown && this._config.backdrop) { + var doAnimate = _Util['default'].supportsTransitionEnd() && animate; + + this._backdrop = document.createElement('div'); + this._backdrop.className = ClassName.BACKDROP; + + if (animate) { + $(this._backdrop).addClass(animate); + } + + $(this._backdrop).appendTo(this.$body); + + $(this._element).on(Event.CLICK_DISMISS, function (event) { + if (_this6._ignoreBackdropClick) { + _this6._ignoreBackdropClick = false; + return; + } + if (event.target !== event.currentTarget) { + return; + } + if (_this6._config.backdrop === 'static') { + _this6._element.focus(); + } else { + _this6.hide(); + } + }); + + if (doAnimate) { + _Util['default'].reflow(this._backdrop); + } + + $(this._backdrop).addClass(ClassName.IN); + + if (!callback) { + return; + } + + if (!doAnimate) { + callback(); + return; + } + + $(this._backdrop).one(_Util['default'].TRANSITION_END, callback).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION); + } else if (!this._isShown && this._backdrop) { + $(this._backdrop).removeClass(ClassName.IN); + + var callbackRemove = function callbackRemove() { + _this6._removeBackdrop(); + if (callback) { + callback(); + } + }; + + if (_Util['default'].supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) { + $(this._backdrop).one(_Util['default'].TRANSITION_END, callbackRemove).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION); + } else { + callbackRemove(); + } + } else if (callback) { + callback(); + } + } + }, { + key: '_handleUpdate', + + // ---------------------------------------------------------------------- + // the following methods are used to handle overflowing modals + // todo (fat): these should probably be refactored out of modal.js + // ---------------------------------------------------------------------- + + value: function _handleUpdate() { + this._adjustDialog(); + } + }, { + key: '_adjustDialog', + value: function _adjustDialog() { + var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; + + if (!this._isBodyOverflowing && isModalOverflowing) { + this._element.style.paddingLeft = this._scrollbarWidth + 'px'; + } + + if (this._isBodyOverflowing && !isModalOverflowing) { + this._element.style.paddingRight = this._scrollbarWidth + 'px'; + } + } + }, { + key: '_resetAdjustments', + value: function _resetAdjustments() { + this._element.style.paddingLeft = ''; + this._element.style.paddingRight = ''; + } + }, { + key: '_checkScrollbar', + value: function _checkScrollbar() { + var fullWindowWidth = window.innerWidth; + if (!fullWindowWidth) { + // workaround for missing window.innerWidth in IE8 + var documentElementRect = document.documentElement.getBoundingClientRect(); + fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left); + } + this._isBodyOverflowing = document.body.clientWidth < fullWindowWidth; + this._scrollbarWidth = this._getScrollbarWidth(); + } + }, { + key: '_setScrollbar', + value: function _setScrollbar() { + var bodyPadding = parseInt($(document.body).css('padding-right') || 0, 10); + + this._originalBodyPadding = document.body.style.paddingRight || ''; + + if (this._isBodyOverflowing) { + document.body.style.paddingRight = bodyPadding + this._scrollbarWidth + 'px'; + } + } + }, { + key: '_resetScrollbar', + value: function _resetScrollbar() { + document.body.style.paddingRight = this._originalBodyPadding; + } + }, { + key: '_getScrollbarWidth', + value: function _getScrollbarWidth() { + // thx d.walsh + var scrollDiv = document.createElement('div'); + scrollDiv.className = Selector.SCROLLBAR_MEASURER; + document.body.appendChild(scrollDiv); + var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth; + document.body.removeChild(scrollDiv); + return scrollbarWidth; + } + }], [{ + key: 'VERSION', + + // getters + + get: function () { + return VERSION; + } + }, { + key: 'Default', + get: function () { + return Default; + } + }, { + key: '_jQueryInterface', + + // static + + value: function _jQueryInterface(config, relatedTarget) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = $.extend({}, Modal.Default, $(this).data(), typeof config === 'object' && config); + + if (!data) { + data = new Modal(this, _config); + $(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + data[config](relatedTarget); + } else if (_config.show) { + data.show(relatedTarget); + } + }); + } + }]); + + return Modal; + })(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + var _this7 = this; + + var target = undefined; + var selector = _Util['default'].getSelectorFromElement(this); + + if (selector) { + target = $(selector)[0]; + } + + var config = $(target).data(DATA_KEY) ? 'toggle' : $.extend({}, $(target).data(), $(this).data()); + + if (this.tagName === 'A') { + event.preventDefault(); + } + + var $target = $(target).one(Event.SHOW, function (showEvent) { + if (showEvent.isDefaultPrevented()) { + // only register focus restorer if modal will actually get shown + return; + } + + $target.one(Event.HIDDEN, function () { + if ($(_this7).is(':visible')) { + _this7.focus(); + } + }); + }); + + Modal._jQueryInterface.call($(target), config, this); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Modal._jQueryInterface; + $.fn[NAME].Constructor = Modal; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Modal._jQueryInterface; + }; + + return Modal; + })(jQuery); + + module.exports = Modal; +});
\ No newline at end of file diff --git a/docs/dist/js/umd/popover.js b/docs/dist/js/umd/popover.js new file mode 100644 index 0000000000..e37dd717a4 --- /dev/null +++ b/docs/dist/js/umd/popover.js @@ -0,0 +1,223 @@ +(function (global, factory) { + if (typeof define === 'function' && define.amd) { + define(['exports', 'module', './tooltip'], factory); + } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') { + factory(exports, module, require('./tooltip')); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, mod, global.Tooltip); + global.popover = mod.exports; + } +})(this, function (exports, module, _tooltip) { + 'use strict'; + + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + + function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; } + + var _Tooltip2 = _interopRequireDefault(_tooltip); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): popover.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Popover = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'popover'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.popover'; + var EVENT_KEY = '.' + DATA_KEY; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + + var Default = $.extend({}, _Tooltip2['default'].Default, { + placement: 'right', + trigger: 'click', + content: '', + template: '<div class="popover" role="tooltip">' + '<div class="popover-arrow"></div>' + '<h3 class="popover-title"></h3>' + '<div class="popover-content"></div></div>' + }); + + var DefaultType = $.extend({}, _Tooltip2['default'].DefaultType, { + content: '(string|function)' + }); + + var ClassName = { + FADE: 'fade', + IN: 'in' + }; + + var Selector = { + TITLE: '.popover-title', + CONTENT: '.popover-content', + ARROW: '.popover-arrow' + }; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + INSERTED: 'inserted' + EVENT_KEY, + CLICK: 'click' + EVENT_KEY, + FOCUSIN: 'focusin' + EVENT_KEY, + FOCUSOUT: 'focusout' + EVENT_KEY, + MOUSEENTER: 'mouseenter' + EVENT_KEY, + MOUSELEAVE: 'mouseleave' + EVENT_KEY + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Popover = (function (_Tooltip) { + function Popover() { + _classCallCheck(this, Popover); + + if (_Tooltip != null) { + _Tooltip.apply(this, arguments); + } + } + + _inherits(Popover, _Tooltip); + + _createClass(Popover, [{ + key: 'isWithContent', + + // overrides + + value: function isWithContent() { + return this.getTitle() || this._getContent(); + } + }, { + key: 'getTipElement', + value: function getTipElement() { + return this.tip = this.tip || $(this.config.template)[0]; + } + }, { + key: 'setContent', + value: function setContent() { + var tip = this.getTipElement(); + var title = this.getTitle(); + var content = this._getContent(); + var titleElement = $(tip).find(Selector.TITLE)[0]; + + if (titleElement) { + titleElement[this.config.html ? 'innerHTML' : 'innerText'] = title; + } + + // we use append for html objects to maintain js events + $(tip).find(Selector.CONTENT).children().detach().end()[this.config.html ? typeof content === 'string' ? 'html' : 'append' : 'text'](content); + + $(tip).removeClass(ClassName.FADE).removeClass(ClassName.IN); + + this.cleanupTether(); + } + }, { + key: '_getContent', + + // private + + value: function _getContent() { + return this.element.getAttribute('data-content') || (typeof this.config.content == 'function' ? this.config.content.call(this.element) : this.config.content); + } + }], [{ + key: 'VERSION', + + // getters + + get: function () { + return VERSION; + } + }, { + key: 'Default', + get: function () { + return Default; + } + }, { + key: 'NAME', + get: function () { + return NAME; + } + }, { + key: 'DATA_KEY', + get: function () { + return DATA_KEY; + } + }, { + key: 'Event', + get: function () { + return Event; + } + }, { + key: 'EVENT_KEY', + get: function () { + return EVENT_KEY; + } + }, { + key: 'DefaultType', + get: function () { + return DefaultType; + } + }, { + key: '_jQueryInterface', + + // static + + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = typeof config === 'object' ? config : null; + + if (!data && /destroy|hide/.test(config)) { + return; + } + + if (!data) { + data = new Popover(this, _config); + $(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + data[config](); + } + }); + } + }]); + + return Popover; + })(_Tooltip2['default']); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Popover._jQueryInterface; + $.fn[NAME].Constructor = Popover; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Popover._jQueryInterface; + }; + + return Popover; + })(jQuery); + + module.exports = Popover; +});
\ No newline at end of file diff --git a/docs/dist/js/umd/scrollspy.js b/docs/dist/js/umd/scrollspy.js new file mode 100644 index 0000000000..19f1dfb537 --- /dev/null +++ b/docs/dist/js/umd/scrollspy.js @@ -0,0 +1,334 @@ +(function (global, factory) { + if (typeof define === 'function' && define.amd) { + define(['exports', 'module', './util'], factory); + } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') { + factory(exports, module, require('./util')); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, mod, global.Util); + global.scrollspy = mod.exports; + } +})(this, function (exports, module, _util) { + 'use strict'; + + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + + var _Util = _interopRequireDefault(_util); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): scrollspy.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var ScrollSpy = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'scrollspy'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.scrollspy'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + + var Default = { + offset: 10, + method: 'auto', + target: '' + }; + + var DefaultType = { + offset: 'number', + method: 'string', + target: '(string|element)' + }; + + var Event = { + ACTIVATE: 'activate' + EVENT_KEY, + SCROLL: 'scroll' + EVENT_KEY, + LOAD_DATA_API: 'load' + EVENT_KEY + '' + DATA_API_KEY + }; + + var ClassName = { + DROPDOWN_MENU: 'dropdown-menu', + ACTIVE: 'active' + }; + + var Selector = { + DATA_SPY: '[data-spy="scroll"]', + ACTIVE: '.active', + LI: 'li', + LI_DROPDOWN: 'li.dropdown', + NAV_ANCHORS: '.nav li > a' + }; + + var OffsetMethod = { + OFFSET: 'offset', + POSITION: 'position' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var ScrollSpy = (function () { + function ScrollSpy(element, config) { + _classCallCheck(this, ScrollSpy); + + this._element = element; + this._scrollElement = element.tagName === 'BODY' ? window : element; + this._config = this._getConfig(config); + this._selector = '' + this._config.target + ' ' + Selector.NAV_ANCHORS; + this._offsets = []; + this._targets = []; + this._activeTarget = null; + this._scrollHeight = 0; + + $(this._scrollElement).on(Event.SCROLL, $.proxy(this._process, this)); + + this.refresh(); + this._process(); + } + + _createClass(ScrollSpy, [{ + key: 'refresh', + + // public + + value: function refresh() { + var _this = this; + + var autoMethod = this._scrollElement !== this._scrollElement.window ? OffsetMethod.POSITION : OffsetMethod.OFFSET; + + var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method; + + var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0; + + this._offsets = []; + this._targets = []; + + this._scrollHeight = this._getScrollHeight(); + + var targets = $.makeArray($(this._selector)); + + targets.map(function (element) { + var target = undefined; + var targetSelector = _Util['default'].getSelectorFromElement(element); + + if (targetSelector) { + target = $(targetSelector)[0]; + } + + if (target && (target.offsetWidth || target.offsetHeight)) { + // todo (fat): remove sketch reliance on jQuery position/offset + return [$(target)[offsetMethod]().top + offsetBase, targetSelector]; + } + }).filter(function (item) { + return item; + }).sort(function (a, b) { + return a[0] - b[0]; + }).forEach(function (item) { + _this._offsets.push(item[0]); + _this._targets.push(item[1]); + }); + } + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + $(this._scrollElement).off(EVENT_KEY); + + this._element = null; + this._scrollElement = null; + this._config = null; + this._selector = null; + this._offsets = null; + this._targets = null; + this._activeTarget = null; + this._scrollHeight = null; + } + }, { + key: '_getConfig', + + // private + + value: function _getConfig(config) { + config = $.extend({}, Default, config); + + if (typeof config.target !== 'string') { + var id = $(config.target).attr('id'); + if (!id) { + id = _Util['default'].getUID(NAME); + $(config.target).attr('id', id); + } + config.target = '#' + id; + } + + _Util['default'].typeCheckConfig(NAME, config, DefaultType); + + return config; + } + }, { + key: '_getScrollTop', + value: function _getScrollTop() { + return this._scrollElement === window ? this._scrollElement.scrollY : this._scrollElement.scrollTop; + } + }, { + key: '_getScrollHeight', + value: function _getScrollHeight() { + return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); + } + }, { + key: '_process', + value: function _process() { + var scrollTop = this._getScrollTop() + this._config.offset; + var scrollHeight = this._getScrollHeight(); + var maxScroll = this._config.offset + scrollHeight - this._scrollElement.offsetHeight; + + if (this._scrollHeight !== scrollHeight) { + this.refresh(); + } + + if (scrollTop >= maxScroll) { + var target = this._targets[this._targets.length - 1]; + + if (this._activeTarget !== target) { + this._activate(target); + } + } + + if (this._activeTarget && scrollTop < this._offsets[0]) { + this._activeTarget = null; + this._clear(); + return; + } + + for (var i = this._offsets.length; i--;) { + var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (this._offsets[i + 1] === undefined || scrollTop < this._offsets[i + 1]); + + if (isActiveTarget) { + this._activate(this._targets[i]); + } + } + } + }, { + key: '_activate', + value: function _activate(target) { + this._activeTarget = target; + + this._clear(); + + var selector = '' + this._selector + '[data-target="' + target + '"],' + ('' + this._selector + '[href="' + target + '"]'); + + // todo (fat): getting all the raw li's up the tree is not great. + var parentListItems = $(selector).parents(Selector.LI); + + for (var i = parentListItems.length; i--;) { + $(parentListItems[i]).addClass(ClassName.ACTIVE); + + var itemParent = parentListItems[i].parentNode; + + if (itemParent && $(itemParent).hasClass(ClassName.DROPDOWN_MENU)) { + var closestDropdown = $(itemParent).closest(Selector.LI_DROPDOWN)[0]; + $(closestDropdown).addClass(ClassName.ACTIVE); + } + } + + $(this._scrollElement).trigger(Event.ACTIVATE, { + relatedTarget: target + }); + } + }, { + key: '_clear', + value: function _clear() { + var activeParents = $(this._selector).parentsUntil(this._config.target, Selector.ACTIVE); + + for (var i = activeParents.length; i--;) { + $(activeParents[i]).removeClass(ClassName.ACTIVE); + } + } + }], [{ + key: 'VERSION', + + // getters + + get: function () { + return VERSION; + } + }, { + key: 'Default', + get: function () { + return Default; + } + }, { + key: '_jQueryInterface', + + // static + + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = typeof config === 'object' && config || null; + + if (!data) { + data = new ScrollSpy(this, _config); + $(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + data[config](); + } + }); + } + }]); + + return ScrollSpy; + })(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(window).on(Event.LOAD_DATA_API, function () { + var scrollSpys = $.makeArray($(Selector.DATA_SPY)); + + for (var i = scrollSpys.length; i--;) { + var $spy = $(scrollSpys[i]); + ScrollSpy._jQueryInterface.call($spy, $spy.data()); + } + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = ScrollSpy._jQueryInterface; + $.fn[NAME].Constructor = ScrollSpy; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return ScrollSpy._jQueryInterface; + }; + + return ScrollSpy; + })(jQuery); + + module.exports = ScrollSpy; +});
\ No newline at end of file diff --git a/docs/dist/js/umd/tab.js b/docs/dist/js/umd/tab.js new file mode 100644 index 0000000000..98ced4c55b --- /dev/null +++ b/docs/dist/js/umd/tab.js @@ -0,0 +1,292 @@ +(function (global, factory) { + if (typeof define === 'function' && define.amd) { + define(['exports', 'module', './util'], factory); + } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') { + factory(exports, module, require('./util')); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, mod, global.Util); + global.tab = mod.exports; + } +})(this, function (exports, module, _util) { + 'use strict'; + + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + + var _Util = _interopRequireDefault(_util); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): tab.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Tab = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'tab'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.tab'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 150; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + '' + DATA_API_KEY + }; + + var ClassName = { + DROPDOWN_MENU: 'dropdown-menu', + ACTIVE: 'active', + FADE: 'fade', + IN: 'in' + }; + + var Selector = { + A: 'a', + LI: 'li', + LI_DROPDOWN: 'li.dropdown', + UL: 'ul:not(.dropdown-menu)', + FADE_CHILD: '> .fade', + ACTIVE: '.active', + ACTIVE_CHILD: '> .active', + DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"]', + DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu > .active' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Tab = (function () { + function Tab(element) { + _classCallCheck(this, Tab); + + this._element = element; + } + + _createClass(Tab, [{ + key: 'show', + + // public + + value: function show() { + var _this = this; + + if (this._element.parentNode && this._element.parentNode.nodeType == Node.ELEMENT_NODE && $(this._element).parent().hasClass(ClassName.ACTIVE)) { + return; + } + + var target = undefined; + var previous = undefined; + var ulElement = $(this._element).closest(Selector.UL)[0]; + var selector = _Util['default'].getSelectorFromElement(this._element); + + if (ulElement) { + previous = $.makeArray($(ulElement).find(Selector.ACTIVE)); + previous = previous[previous.length - 1]; + + if (previous) { + previous = $(previous).find(Selector.A)[0]; + } + } + + var hideEvent = $.Event(Event.HIDE, { + relatedTarget: this._element + }); + + var showEvent = $.Event(Event.SHOW, { + relatedTarget: previous + }); + + if (previous) { + $(previous).trigger(hideEvent); + } + + $(this._element).trigger(showEvent); + + if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) { + return; + } + + if (selector) { + target = $(selector)[0]; + } + + this._activate($(this._element).closest(Selector.LI)[0], ulElement); + + var complete = function complete() { + var hiddenEvent = $.Event(Event.HIDDEN, { + relatedTarget: _this._element + }); + + var shownEvent = $.Event(Event.SHOWN, { + relatedTarget: previous + }); + + $(previous).trigger(hiddenEvent); + $(_this._element).trigger(shownEvent); + }; + + if (target) { + this._activate(target, target.parentNode, complete); + } else { + complete(); + } + } + }, { + key: 'dispose', + value: function dispose() { + $.removeClass(this._element, DATA_KEY); + this._element = null; + } + }, { + key: '_activate', + + // private + + value: function _activate(element, container, callback) { + var active = $(container).find(Selector.ACTIVE_CHILD)[0]; + var isTransitioning = callback && _Util['default'].supportsTransitionEnd() && (active && $(active).hasClass(ClassName.FADE) || !!$(container).find(Selector.FADE_CHILD)[0]); + + var complete = $.proxy(this._transitionComplete, this, element, active, isTransitioning, callback); + + if (active && isTransitioning) { + $(active).one(_Util['default'].TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + } else { + complete(); + } + + if (active) { + $(active).removeClass(ClassName.IN); + } + } + }, { + key: '_transitionComplete', + value: function _transitionComplete(element, active, isTransitioning, callback) { + if (active) { + $(active).removeClass(ClassName.ACTIVE); + + var dropdownChild = $(active).find(Selector.DROPDOWN_ACTIVE_CHILD)[0]; + if (dropdownChild) { + $(dropdownChild).removeClass(ClassName.ACTIVE); + } + + var activeToggle = $(active).find(Selector.DATA_TOGGLE)[0]; + if (activeToggle) { + activeToggle.setAttribute('aria-expanded', false); + } + } + + $(element).addClass(ClassName.ACTIVE); + + var elementToggle = $(element).find(Selector.DATA_TOGGLE)[0]; + if (elementToggle) { + elementToggle.setAttribute('aria-expanded', true); + } + + if (isTransitioning) { + _Util['default'].reflow(element); + $(element).addClass(ClassName.IN); + } else { + $(element).removeClass(ClassName.FADE); + } + + if (element.parentNode && $(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) { + + var dropdownElement = $(element).closest(Selector.LI_DROPDOWN)[0]; + if (dropdownElement) { + $(dropdownElement).addClass(ClassName.ACTIVE); + } + + elementToggle = $(element).find(Selector.DATA_TOGGLE)[0]; + if (elementToggle) { + elementToggle.setAttribute('aria-expanded', true); + } + } + + if (callback) { + callback(); + } + } + }], [{ + key: 'VERSION', + + // getters + + get: function () { + return VERSION; + } + }, { + key: '_jQueryInterface', + + // static + + value: function _jQueryInterface(config) { + return this.each(function () { + var $this = $(this); + var data = $this.data(DATA_KEY); + + if (!data) { + data = data = new Tab(this); + $this.data(DATA_KEY, data); + } + + if (typeof config === 'string') { + data[config](); + } + }); + } + }]); + + return Tab; + })(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + event.preventDefault(); + Tab._jQueryInterface.call($(this), 'show'); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Tab._jQueryInterface; + $.fn[NAME].Constructor = Tab; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Tab._jQueryInterface; + }; + + return Tab; + })(jQuery); + + module.exports = Tab; +});
\ No newline at end of file diff --git a/docs/dist/js/umd/tooltip.js b/docs/dist/js/umd/tooltip.js new file mode 100644 index 0000000000..49fca2a75c --- /dev/null +++ b/docs/dist/js/umd/tooltip.js @@ -0,0 +1,613 @@ +(function (global, factory) { + if (typeof define === 'function' && define.amd) { + define(['exports', 'module', './util'], factory); + } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') { + factory(exports, module, require('./util')); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, mod, global.Util); + global.tooltip = mod.exports; + } +})(this, function (exports, module, _util) { + 'use strict'; + + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + + var _Util = _interopRequireDefault(_util); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): tooltip.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + var Tooltip = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'tooltip'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.tooltip'; + var EVENT_KEY = '.' + DATA_KEY; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 150; + var CLASS_PREFIX = 'bs-tether'; + + var Default = { + animation: true, + template: '<div class="tooltip" role="tooltip">' + '<div class="tooltip-arrow"></div>' + '<div class="tooltip-inner"></div></div>', + trigger: 'hover focus', + title: '', + delay: 0, + html: false, + selector: false, + placement: 'top', + offset: '0 0', + constraints: [] + }; + + var DefaultType = { + animation: 'boolean', + template: 'string', + title: '(string|function)', + trigger: 'string', + delay: '(number|object)', + html: 'boolean', + selector: '(string|boolean)', + placement: '(string|function)', + offset: 'string', + constraints: 'array' + }; + + var AttachmentMap = { + TOP: 'bottom center', + RIGHT: 'middle left', + BOTTOM: 'top center', + LEFT: 'middle right' + }; + + var HoverState = { + IN: 'in', + OUT: 'out' + }; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + INSERTED: 'inserted' + EVENT_KEY, + CLICK: 'click' + EVENT_KEY, + FOCUSIN: 'focusin' + EVENT_KEY, + FOCUSOUT: 'focusout' + EVENT_KEY, + MOUSEENTER: 'mouseenter' + EVENT_KEY, + MOUSELEAVE: 'mouseleave' + EVENT_KEY + }; + + var ClassName = { + FADE: 'fade', + IN: 'in' + }; + + var Selector = { + TOOLTIP: '.tooltip', + TOOLTIP_INNER: '.tooltip-inner' + }; + + var TetherClass = { + element: false, + enabled: false + }; + + var Trigger = { + HOVER: 'hover', + FOCUS: 'focus', + CLICK: 'click', + MANUAL: 'manual' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Tooltip = (function () { + function Tooltip(element, config) { + _classCallCheck(this, Tooltip); + + // private + this._isEnabled = true; + this._timeout = 0; + this._hoverState = ''; + this._activeTrigger = {}; + this._tether = null; + + // protected + this.element = element; + this.config = this._getConfig(config); + this.tip = null; + + this._setListeners(); + } + + _createClass(Tooltip, [{ + key: 'enable', + + // public + + value: function enable() { + this._isEnabled = true; + } + }, { + key: 'disable', + value: function disable() { + this._isEnabled = false; + } + }, { + key: 'toggleEnabled', + value: function toggleEnabled() { + this._isEnabled = !this._isEnabled; + } + }, { + key: 'toggle', + value: function toggle(event) { + var context = this; + var dataKey = this.constructor.DATA_KEY; + + if (event) { + context = $(event.currentTarget).data(dataKey); + + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $(event.currentTarget).data(dataKey, context); + } + + context._activeTrigger.click = !context._activeTrigger.click; + + if (context._isWithActiveTrigger()) { + context._enter(null, context); + } else { + context._leave(null, context); + } + } else { + $(context.getTipElement()).hasClass(ClassName.IN) ? context._leave(null, context) : context._enter(null, context); + } + } + }, { + key: 'dispose', + value: function dispose() { + clearTimeout(this._timeout); + + this.cleanupTether(); + + $.removeData(this.element, this.constructor.DATA_KEY); + + $(this.element).off(this.constructor.EVENT_KEY); + + if (this.tip) { + $(this.tip).remove(); + } + + this._isEnabled = null; + this._timeout = null; + this._hoverState = null; + this._activeTrigger = null; + this._tether = null; + + this.element = null; + this.config = null; + this.tip = null; + } + }, { + key: 'show', + value: function show() { + var _this = this; + + var showEvent = $.Event(this.constructor.Event.SHOW); + + if (this.isWithContent() && this._isEnabled) { + $(this.element).trigger(showEvent); + + var isInTheDom = $.contains(this.element.ownerDocument.documentElement, this.element); + + if (showEvent.isDefaultPrevented() || !isInTheDom) { + return; + } + + var tip = this.getTipElement(); + var tipId = _Util['default'].getUID(this.constructor.NAME); + + tip.setAttribute('id', tipId); + this.element.setAttribute('aria-describedby', tipId); + + this.setContent(); + + if (this.config.animation) { + $(tip).addClass(ClassName.FADE); + } + + var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement; + + var attachment = this._getAttachment(placement); + + $(tip).data(this.constructor.DATA_KEY, this).appendTo(document.body); + + $(this.element).trigger(this.constructor.Event.INSERTED); + + this._tether = new Tether({ + element: tip, + target: this.element, + attachment: attachment, + classes: TetherClass, + classPrefix: CLASS_PREFIX, + offset: this.config.offset, + constraints: this.config.constraints + }); + + _Util['default'].reflow(tip); + this._tether.position(); + + $(tip).addClass(ClassName.IN); + + var complete = function complete() { + var prevHoverState = _this._hoverState; + _this._hoverState = null; + + $(_this.element).trigger(_this.constructor.Event.SHOWN); + + if (prevHoverState === HoverState.OUT) { + _this._leave(null, _this); + } + }; + + _Util['default'].supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE) ? $(this.tip).one(_Util['default'].TRANSITION_END, complete).emulateTransitionEnd(Tooltip._TRANSITION_DURATION) : complete(); + } + } + }, { + key: 'hide', + value: function hide(callback) { + var _this2 = this; + + var tip = this.getTipElement(); + var hideEvent = $.Event(this.constructor.Event.HIDE); + var complete = function complete() { + if (_this2._hoverState !== HoverState.IN && tip.parentNode) { + tip.parentNode.removeChild(tip); + } + + _this2.element.removeAttribute('aria-describedby'); + $(_this2.element).trigger(_this2.constructor.Event.HIDDEN); + _this2.cleanupTether(); + + if (callback) { + callback(); + } + }; + + $(this.element).trigger(hideEvent); + + if (hideEvent.isDefaultPrevented()) { + return; + } + + $(tip).removeClass(ClassName.IN); + + if (_Util['default'].supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE)) { + + $(tip).one(_Util['default'].TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + } else { + complete(); + } + + this._hoverState = ''; + } + }, { + key: 'isWithContent', + + // protected + + value: function isWithContent() { + return !!this.getTitle(); + } + }, { + key: 'getTipElement', + value: function getTipElement() { + return this.tip = this.tip || $(this.config.template)[0]; + } + }, { + key: 'setContent', + value: function setContent() { + var tip = this.getTipElement(); + var title = this.getTitle(); + var method = this.config.html ? 'innerHTML' : 'innerText'; + + $(tip).find(Selector.TOOLTIP_INNER)[0][method] = title; + + $(tip).removeClass(ClassName.FADE).removeClass(ClassName.IN); + + this.cleanupTether(); + } + }, { + key: 'getTitle', + value: function getTitle() { + var title = this.element.getAttribute('data-original-title'); + + if (!title) { + title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title; + } + + return title; + } + }, { + key: 'cleanupTether', + value: function cleanupTether() { + if (this._tether) { + this._tether.destroy(); + + // clean up after tether's junk classes + // remove after they fix issue + // (https://github.com/HubSpot/tether/issues/36) + $(this.element).removeClass(this._removeTetherClasses); + $(this.tip).removeClass(this._removeTetherClasses); + } + } + }, { + key: '_getAttachment', + + // private + + value: function _getAttachment(placement) { + return AttachmentMap[placement.toUpperCase()]; + } + }, { + key: '_setListeners', + value: function _setListeners() { + var _this3 = this; + + var triggers = this.config.trigger.split(' '); + + triggers.forEach(function (trigger) { + if (trigger === 'click') { + $(_this3.element).on(_this3.constructor.Event.CLICK, _this3.config.selector, $.proxy(_this3.toggle, _this3)); + } else if (trigger !== Trigger.MANUAL) { + var eventIn = trigger == Trigger.HOVER ? _this3.constructor.Event.MOUSEENTER : _this3.constructor.Event.FOCUSIN; + var eventOut = trigger == Trigger.HOVER ? _this3.constructor.Event.MOUSELEAVE : _this3.constructor.Event.FOCUSOUT; + + $(_this3.element).on(eventIn, _this3.config.selector, $.proxy(_this3._enter, _this3)).on(eventOut, _this3.config.selector, $.proxy(_this3._leave, _this3)); + } + }); + + if (this.config.selector) { + this.config = $.extend({}, this.config, { + trigger: 'manual', + selector: '' + }); + } else { + this._fixTitle(); + } + } + }, { + key: '_removeTetherClasses', + value: function _removeTetherClasses(i, css) { + return ((css.baseVal || css).match(new RegExp('(^|\\s)' + CLASS_PREFIX + '-\\S+', 'g')) || []).join(' '); + } + }, { + key: '_fixTitle', + value: function _fixTitle() { + var titleType = typeof this.element.getAttribute('data-original-title'); + if (this.element.getAttribute('title') || titleType !== 'string') { + this.element.setAttribute('data-original-title', this.element.getAttribute('title') || ''); + this.element.setAttribute('title', ''); + } + } + }, { + key: '_enter', + value: function _enter(event, context) { + var dataKey = this.constructor.DATA_KEY; + + context = context || $(event.currentTarget).data(dataKey); + + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $(event.currentTarget).data(dataKey, context); + } + + if (event) { + context._activeTrigger[event.type == 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true; + } + + if ($(context.getTipElement()).hasClass(ClassName.IN) || context._hoverState === HoverState.IN) { + context._hoverState = HoverState.IN; + return; + } + + clearTimeout(context._timeout); + + context._hoverState = HoverState.IN; + + if (!context.config.delay || !context.config.delay.show) { + context.show(); + return; + } + + context._timeout = setTimeout(function () { + if (context._hoverState === HoverState.IN) { + context.show(); + } + }, context.config.delay.show); + } + }, { + key: '_leave', + value: function _leave(event, context) { + var dataKey = this.constructor.DATA_KEY; + + context = context || $(event.currentTarget).data(dataKey); + + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $(event.currentTarget).data(dataKey, context); + } + + if (event) { + context._activeTrigger[event.type == 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false; + } + + if (context._isWithActiveTrigger()) { + return; + } + + clearTimeout(context._timeout); + + context._hoverState = HoverState.OUT; + + if (!context.config.delay || !context.config.delay.hide) { + context.hide(); + return; + } + + context._timeout = setTimeout(function () { + if (context._hoverState === HoverState.OUT) { + context.hide(); + } + }, context.config.delay.hide); + } + }, { + key: '_isWithActiveTrigger', + value: function _isWithActiveTrigger() { + for (var trigger in this._activeTrigger) { + if (this._activeTrigger[trigger]) { + return true; + } + } + + return false; + } + }, { + key: '_getConfig', + value: function _getConfig(config) { + config = $.extend({}, this.constructor.Default, $(this.element).data(), config); + + if (config.delay && typeof config.delay === 'number') { + config.delay = { + show: config.delay, + hide: config.delay + }; + } + + _Util['default'].typeCheckConfig(NAME, config, this.constructor.DefaultType); + + return config; + } + }, { + key: '_getDelegateConfig', + value: function _getDelegateConfig() { + var config = {}; + + if (this.config) { + for (var key in this.config) { + var value = this.config[key]; + if (this.constructor.Default[key] !== value) { + config[key] = value; + } + } + } + + return config; + } + }], [{ + key: 'VERSION', + + // getters + + get: function () { + return VERSION; + } + }, { + key: 'Default', + get: function () { + return Default; + } + }, { + key: 'NAME', + get: function () { + return NAME; + } + }, { + key: 'DATA_KEY', + get: function () { + return DATA_KEY; + } + }, { + key: 'Event', + get: function () { + return Event; + } + }, { + key: 'EVENT_KEY', + get: function () { + return EVENT_KEY; + } + }, { + key: 'DefaultType', + get: function () { + return DefaultType; + } + }, { + key: '_jQueryInterface', + + // static + + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = typeof config === 'object' ? config : null; + + if (!data && /destroy|hide/.test(config)) { + return; + } + + if (!data) { + data = new Tooltip(this, _config); + $(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + data[config](); + } + }); + } + }]); + + return Tooltip; + })(); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Tooltip._jQueryInterface; + $.fn[NAME].Constructor = Tooltip; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Tooltip._jQueryInterface; + }; + + return Tooltip; + })(jQuery); + + module.exports = Tooltip; +});
\ No newline at end of file diff --git a/docs/dist/js/umd/util.js b/docs/dist/js/umd/util.js new file mode 100644 index 0000000000..a813505c84 --- /dev/null +++ b/docs/dist/js/umd/util.js @@ -0,0 +1,166 @@ +(function (global, factory) { + if (typeof define === 'function' && define.amd) { + define(['exports', 'module'], factory); + } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') { + factory(exports, module); + } else { + var mod = { + exports: {} + }; + factory(mod.exports, mod); + global.util = mod.exports; + } +})(this, function (exports, module) { + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): util.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + + 'use strict'; + + var Util = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Private TransitionEnd Helpers + * ------------------------------------------------------------------------ + */ + + var transition = false; + + var TransitionEndEvent = { + WebkitTransition: 'webkitTransitionEnd', + MozTransition: 'transitionend', + OTransition: 'oTransitionEnd otransitionend', + transition: 'transitionend' + }; + + // shoutout AngusCroll (https://goo.gl/pxwQGp) + function toType(obj) { + return ({}).toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase(); + } + + function isElement(obj) { + return (obj[0] || obj).nodeType; + } + + function getSpecialTransitionEndEvent() { + return { + bindType: transition.end, + delegateType: transition.end, + handle: function handle(event) { + if ($(event.target).is(this)) { + return event.handleObj.handler.apply(this, arguments); + } + } + }; + } + + function transitionEndTest() { + if (window.QUnit) { + return false; + } + + var el = document.createElement('bootstrap'); + + for (var name in TransitionEndEvent) { + if (el.style[name] !== undefined) { + return { end: TransitionEndEvent[name] }; + } + } + + return false; + } + + function transitionEndEmulator(duration) { + var _this = this; + + var called = false; + + $(this).one(Util.TRANSITION_END, function () { + called = true; + }); + + setTimeout(function () { + if (!called) { + Util.triggerTransitionEnd(_this); + } + }, duration); + + return this; + } + + function setTransitionEndSupport() { + transition = transitionEndTest(); + + $.fn.emulateTransitionEnd = transitionEndEmulator; + + if (Util.supportsTransitionEnd()) { + $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent(); + } + } + + /** + * -------------------------------------------------------------------------- + * Public Util Api + * -------------------------------------------------------------------------- + */ + + var Util = { + + TRANSITION_END: 'bsTransitionEnd', + + getUID: function getUID(prefix) { + do prefix += ~ ~(Math.random() * 1000000); while (document.getElementById(prefix)); + return prefix; + }, + + getSelectorFromElement: function getSelectorFromElement(element) { + var selector = element.getAttribute('data-target'); + + if (!selector) { + selector = element.getAttribute('href') || ''; + selector = /^#[a-z]/i.test(selector) ? selector : null; + } + + return selector; + }, + + reflow: function reflow(element) { + new Function('bs', 'return bs')(element.offsetHeight); + }, + + triggerTransitionEnd: function triggerTransitionEnd(element) { + $(element).trigger(transition.end); + }, + + supportsTransitionEnd: function supportsTransitionEnd() { + return !!transition; + }, + + typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) { + + for (var property in configTypes) { + var expectedTypes = configTypes[property]; + var value = config[property]; + var valueType = undefined; + + if (value && isElement(value)) valueType = 'element';else valueType = toType(value); + + if (!new RegExp(expectedTypes).test(valueType)) { + throw new Error('' + componentName.toUpperCase() + ': ' + ('Option "' + property + '" provided type "' + valueType + '" ') + ('but expected type "' + expectedTypes + '".')); + } + } + } + + }; + + setTransitionEndSupport(); + + return Util; + })(jQuery); + + module.exports = Util; +});
\ No newline at end of file diff --git a/docs/examples/carousel/index.html b/docs/examples/carousel/index.html index 3e88fd0ff5..4e11922ff0 100644 --- a/docs/examples/carousel/index.html +++ b/docs/examples/carousel/index.html @@ -51,13 +51,8 @@ <li data-target="#myCarousel" data-slide-to="2"></li> </ol> <div class="carousel-inner" role="listbox"> -<<<<<<< HEAD <div class="carousel-item active"> - <img src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="First slide"> -======= - <div class="item active"> <img class="first-slide" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="First slide"> ->>>>>>> master <div class="container"> <div class="carousel-caption text-left"> <h1>Example headline.</h1> @@ -66,13 +61,8 @@ </div> </div> </div> -<<<<<<< HEAD <div class="carousel-item"> - <img src="data:image/gif;base64,R0lGODlhAQABAIAAAGZmZgAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="Second slide"> -======= - <div class="item"> <img class="second-slide" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="Second slide"> ->>>>>>> master <div class="container"> <div class="carousel-caption"> <h1>Another example headline.</h1> @@ -81,13 +71,8 @@ </div> </div> </div> -<<<<<<< HEAD <div class="carousel-item"> - <img src="data:image/gif;base64,R0lGODlhAQABAIAAAFVVVQAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="Third slide"> -======= - <div class="item"> <img class="third-slide" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="Third slide"> ->>>>>>> master <div class="container"> <div class="carousel-caption text-right"> <h1>One more for good measure.</h1> diff --git a/grunt/bs-commonjs-generator.js b/grunt/bs-commonjs-generator.js index b0642cd8f1..700b839ce0 100644 --- a/grunt/bs-commonjs-generator.js +++ b/grunt/bs-commonjs-generator.js @@ -1,4 +1,5 @@ 'use strict'; + var fs = require('fs'); var path = require('path'); @@ -8,8 +9,7 @@ module.exports = function generateCommonJSModule(grunt, srcFiles, destFilepath) var destDir = path.dirname(destFilepath); function srcPathToDestRequire(srcFilepath) { - var requirePath = path.relative(destDir, srcFilepath).replace(/\\/g, '/'); - return 'require(\'' + requirePath + '\')'; + return 'require(\'' + srcFilepath + '\')'; } var moduleOutputJs = COMMONJS_BANNER + srcFiles.map(srcPathToDestRequire).join('\n'); diff --git a/js/.jscsrc b/js/.jscsrc index caf1938f21..8d5ef3e569 100644 --- a/js/.jscsrc +++ b/js/.jscsrc @@ -1,4 +1,5 @@ { + "esnext": true, "disallowEmptyBlocks": true, "disallowKeywords": ["with"], "disallowMixedSpacesAndTabs": true, @@ -17,8 +18,11 @@ "requireCamelCaseOrUpperCaseIdentifiers": true, "requireCapitalizedConstructors": true, "requireCommaBeforeLineBreak": true, + "requireDollarBeforejQueryAssignment": true, "requireDotNotation": true, "requireLineFeedAtFileEnd": true, + "requirePaddingNewLinesAfterUseStrict": true, + "requirePaddingNewLinesBeforeExport": true, "requireSpaceAfterBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!==", ">", "<", ">=", "<="], "requireSpaceAfterKeywords": ["if", "else", "for", "while", "do", "switch", "return", "try", "catch"], "requireSpaceAfterLineComment": true, @@ -31,7 +35,9 @@ "requireSpacesInFunctionExpression": { "beforeOpeningCurlyBrace": true }, "requireSpacesInNamedFunctionExpression": { "beforeOpeningCurlyBrace": true }, "requireSpacesInsideObjectBrackets": "allButNested", + "validateAlignedFunctionParameters": true, "validateIndentation": 2, "validateLineBreaks": "LF", + "validateNewlineAfterArrayElements": true, "validateQuoteMarks": "'" } diff --git a/js/.jshintrc b/js/.jshintrc deleted file mode 100644 index a59e1d00a1..0000000000 --- a/js/.jshintrc +++ /dev/null @@ -1,15 +0,0 @@ -{ - "asi" : true, - "browser" : true, - "eqeqeq" : false, - "eqnull" : true, - "es3" : true, - "expr" : true, - "jquery" : true, - "latedef" : true, - "laxbreak" : true, - "nonbsp" : true, - "strict" : true, - "undef" : true, - "unused" : true -} diff --git a/js/alert.js b/js/alert.js deleted file mode 100644 index 38bce06a4d..0000000000 --- a/js/alert.js +++ /dev/null @@ -1,260 +0,0 @@ -/** ======================================================================= - * Bootstrap: alert.js v4.0.0 - * http://getbootstrap.com/javascript/#alerts - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== - * @fileoverview - Bootstrap's generic alert component. Add dismiss - * functionality to all alert messages with this plugin. - * - * Public Methods & Properties: - * - * + $.alert - * + $.alert.noConflict - * + $.alert.Constructor - * + $.alert.Constructor.VERSION - * + $.alert.Constructor.prototype.close - * - * ======================================================================== - */ - -'use strict'; - - -/** - * Our Alert class. - * @param {Element=} opt_element - * @constructor - */ -var Alert = function (opt_element) { - if (opt_element) { - $(opt_element).on('click', Alert._DISMISS_SELECTOR, Alert._handleDismiss(this)) - } -} - - -/** - * @const - * @type {string} - */ -Alert['VERSION'] = '4.0.0' - - -/** - * @const - * @type {string} - * @private - */ -Alert._NAME = 'alert' - - -/** - * @const - * @type {string} - * @private - */ -Alert._DATA_KEY = 'bs.alert' - - -/** - * @const - * @type {string} - * @private - */ -Alert._DISMISS_SELECTOR = '[data-dismiss="alert"]' - - -/** - * @const - * @type {number} - * @private - */ -Alert._TRANSITION_DURATION = 150 - - -/** - * @const - * @type {Function} - * @private - */ -Alert._JQUERY_NO_CONFLICT = $.fn[Alert._NAME] - - -/** - * @const - * @enum {string} - * @private - */ -Alert._Event = { - CLOSE : 'close.bs.alert', - CLOSED : 'closed.bs.alert' -} - - -/** - * @const - * @enum {string} - * @private - */ -Alert._ClassName = { - ALERT : 'alert', - FADE : 'fade', - IN : 'in' -} - - -/** - * Provides the jQuery Interface for the alert component. - * @param {string=} opt_config - * @this {jQuery} - * @return {jQuery} - * @private - */ -Alert._jQueryInterface = function (opt_config) { - return this.each(function () { - var $this = $(this) - var data = $this.data(Alert._DATA_KEY) - - if (!data) { - data = new Alert(this) - $this.data(Alert._DATA_KEY, data) - } - - if (opt_config === 'close') { - data[opt_config](this) - } - }) -} - - -/** - * Close the alert component - * @param {Alert} alertInstance - * @return {Function} - * @private - */ -Alert._handleDismiss = function (alertInstance) { - return function (event) { - if (event) { - event.preventDefault() - } - - alertInstance['close'](this) - } -} - - -/** - * Close the alert component - * @param {Element} element - */ -Alert.prototype['close'] = function (element) { - var rootElement = this._getRootElement(element) - var customEvent = this._triggerCloseEvent(rootElement) - - if (customEvent.isDefaultPrevented()) return - - this._removeElement(rootElement) -} - - -/** - * Tries to get the alert's root element - * @return {Element} - * @private - */ -Alert.prototype._getRootElement = function (element) { - var parent = false - var selector = Bootstrap.getSelectorFromElement(element) - - if (selector) { - parent = $(selector)[0] - } - - if (!parent) { - parent = $(element).closest('.' + Alert._ClassName.ALERT)[0] - } - - return parent -} - - -/** - * Trigger close event on element - * @return {$.Event} - * @private - */ -Alert.prototype._triggerCloseEvent = function (element) { - var closeEvent = $.Event(Alert._Event.CLOSE) - $(element).trigger(closeEvent) - return closeEvent -} - - -/** - * Trigger closed event and remove element from dom - * @private - */ -Alert.prototype._removeElement = function (element) { - $(element).removeClass(Alert._ClassName.IN) - - if (!Bootstrap.transition || !$(element).hasClass(Alert._ClassName.FADE)) { - this._destroyElement(element) - return - } - - $(element) - .one(Bootstrap.TRANSITION_END, this._destroyElement.bind(this, element)) - .emulateTransitionEnd(Alert._TRANSITION_DURATION) -} - - -/** - * clean up any lingering jquery data and kill element - * @private - */ -Alert.prototype._destroyElement = function (element) { - $(element) - .detach() - .trigger(Alert._Event.CLOSED) - .remove() -} - - -/** - * ------------------------------------------------------------------------ - * jQuery Interface + noConflict implementaiton - * ------------------------------------------------------------------------ - */ - -/** - * @const - * @type {Function} - */ -$.fn[Alert._NAME] = Alert._jQueryInterface - - -/** - * @const - * @type {Function} - */ -$.fn[Alert._NAME]['Constructor'] = Alert - - -/** - * @return {Function} - */ -$.fn[Alert._NAME]['noConflict'] = function () { - $.fn[Alert._NAME] = Alert._JQUERY_NO_CONFLICT - return Alert._jQueryInterface -} - - -/** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - -$(document).on('click.bs.alert.data-api', Alert._DISMISS_SELECTOR, Alert._handleDismiss(new Alert)) diff --git a/js/button.js b/js/button.js deleted file mode 100644 index 8ee2d6b084..0000000000 --- a/js/button.js +++ /dev/null @@ -1,207 +0,0 @@ -/** ======================================================================= - * Bootstrap: button.js v4.0.0 - * http://getbootstrap.com/javascript/#buttons - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== - * @fileoverview - Bootstrap's generic button component. - * - * Note (@fat): Deprecated "setState" – imo, better solutions for managing a - * buttons state should exist outside this plugin. - * - * Public Methods & Properties: - * - * + $.button - * + $.button.noConflict - * + $.button.Constructor - * + $.button.Constructor.VERSION - * + $.button.Constructor.prototype.toggle - * - * ======================================================================== - */ - -'use strict'; - - -/** - * Our Button class. - * @param {Element!} element - * @constructor - */ -var Button = function (element) { - - /** @private {Element} */ - this._element = element - -} - - -/** - * @const - * @type {string} - */ -Button['VERSION'] = '4.0.0' - - -/** - * @const - * @type {string} - * @private - */ -Button._NAME = 'button' - - -/** - * @const - * @type {string} - * @private - */ -Button._DATA_KEY = 'bs.button' - - -/** - * @const - * @type {Function} - * @private - */ -Button._JQUERY_NO_CONFLICT = $.fn[Button._NAME] - - -/** - * @const - * @enum {string} - * @private - */ -Button._ClassName = { - ACTIVE : 'active', - BUTTON : 'btn', - FOCUS : 'focus' -} - - -/** - * @const - * @enum {string} - * @private - */ -Button._Selector = { - DATA_TOGGLE_CARROT : '[data-toggle^="button"]', - DATA_TOGGLE : '[data-toggle="buttons"]', - INPUT : 'input', - ACTIVE : '.active', - BUTTON : '.btn' -} - - -/** - * Provides the jQuery Interface for the Button component. - * @param {string=} opt_config - * @this {jQuery} - * @return {jQuery} - * @private - */ -Button._jQueryInterface = function (opt_config) { - return this.each(function () { - var data = $(this).data(Button._DATA_KEY) - - if (!data) { - data = new Button(this) - $(this).data(Button._DATA_KEY, data) - } - - if (opt_config === 'toggle') { - data[opt_config]() - } - }) -} - - -/** - * Toggle's the button active state - */ -Button.prototype['toggle'] = function () { - var triggerChangeEvent = true - var rootElement = $(this._element).closest(Button._Selector.DATA_TOGGLE)[0] - - if (rootElement) { - var input = $(this._element).find(Button._Selector.INPUT)[0] - if (input) { - if (input.type == 'radio') { - if (input.checked && $(this._element).hasClass(Button._ClassName.ACTIVE)) { - triggerChangeEvent = false - } else { - var activeElement = $(rootElement).find(Button._Selector.ACTIVE)[0] - if (activeElement) { - $(activeElement).removeClass(Button._ClassName.ACTIVE) - } - } - } - - if (triggerChangeEvent) { - input.checked = !$(this._element).hasClass(Button._ClassName.ACTIVE) - $(this._element).trigger('change') - } - } - } else { - this._element.setAttribute('aria-pressed', !$(this._element).hasClass(Button._ClassName.ACTIVE)) - } - - if (triggerChangeEvent) { - $(this._element).toggleClass(Button._ClassName.ACTIVE) - } -} - - -/** - * ------------------------------------------------------------------------ - * jQuery Interface + noConflict implementaiton - * ------------------------------------------------------------------------ - */ - -/** - * @const - * @type {Function} - */ -$.fn[Button._NAME] = Button._jQueryInterface - - -/** - * @const - * @type {Function} - */ -$.fn[Button._NAME]['Constructor'] = Button - - -/** - * @const - * @type {Function} - */ -$.fn[Button._NAME]['noConflict'] = function () { - $.fn[Button._NAME] = Button._JQUERY_NO_CONFLICT - return this -} - - -/** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - -$(document) - .on('click.bs.button.data-api', Button._Selector.DATA_TOGGLE_CARROT, function (event) { - event.preventDefault() - - var button = event.target - - if (!$(button).hasClass(Button._ClassName.BUTTON)) { - button = $(button).closest(Button._Selector.BUTTON) - } - - Button._jQueryInterface.call($(button), 'toggle') - }) - .on('focus.bs.button.data-api blur.bs.button.data-api', Button._Selector.DATA_TOGGLE_CARROT, function (event) { - var button = $(event.target).closest(Button._Selector.BUTTON)[0] - $(button).toggleClass(Button._ClassName.FOCUS, /^focus(in)?$/.test(event.type)) - }) diff --git a/js/carousel.js b/js/carousel.js deleted file mode 100644 index 8f33f48601..0000000000 --- a/js/carousel.js +++ /dev/null @@ -1,576 +0,0 @@ -/** ======================================================================= - * Bootstrap: carousel.js v4.0.0 - * http://getbootstrap.com/javascript/#carousel - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== - * @fileoverview - Bootstrap's carousel. A slideshow component for cycling - * through elements, like a carousel. Nested carousels are not supported. - * - * Public Methods & Properties: - * - * + $.carousel - * + $.carousel.noConflict - * + $.carousel.Constructor - * + $.carousel.Constructor.VERSION - * + $.carousel.Constructor.Defaults - * + $.carousel.Constructor.Defaults.interval - * + $.carousel.Constructor.Defaults.pause - * + $.carousel.Constructor.Defaults.wrap - * + $.carousel.Constructor.Defaults.keyboard - * + $.carousel.Constructor.Defaults.slide - * + $.carousel.Constructor.prototype.next - * + $.carousel.Constructor.prototype.prev - * + $.carousel.Constructor.prototype.pause - * + $.carousel.Constructor.prototype.cycle - * - * ======================================================================== - */ - -'use strict'; - - -/** - * Our carousel class. - * @param {Element!} element - * @param {Object=} opt_config - * @constructor - */ -var Carousel = function (element, opt_config) { - - /** @private {Element} */ - this._element = $(element)[0] - - /** @private {Element} */ - this._indicatorsElement = $(this._element).find(Carousel._Selector.INDICATORS)[0] - - /** @private {?Object} */ - this._config = opt_config || null - - /** @private {boolean} */ - this._isPaused = false - - /** @private {boolean} */ - this._isSliding = false - - /** @private {?number} */ - this._interval = null - - /** @private {?Element} */ - this._activeElement = null - - /** @private {?Array} */ - this._items = null - - this._addEventListeners() - -} - - -/** - * @const - * @type {string} - */ -Carousel['VERSION'] = '4.0.0' - - -/** - * @const - * @type {Object} - */ -Carousel['Defaults'] = { - 'interval' : 5000, - 'pause' : 'hover', - 'wrap' : true, - 'keyboard' : true, - 'slide' : false -} - - -/** - * @const - * @type {string} - * @private - */ -Carousel._NAME = 'carousel' - - -/** - * @const - * @type {string} - * @private - */ -Carousel._DATA_KEY = 'bs.carousel' - - -/** - * @const - * @type {number} - * @private - */ -Carousel._TRANSITION_DURATION = 600 - - -/** - * @const - * @enum {string} - * @private - */ -Carousel._Direction = { - NEXT : 'next', - PREVIOUS : 'prev' -} - - -/** - * @const - * @enum {string} - * @private - */ -Carousel._Event = { - SLIDE : 'slide.bs.carousel', - SLID : 'slid.bs.carousel' -} - - -/** - * @const - * @enum {string} - * @private - */ -Carousel._ClassName = { - CAROUSEL : 'carousel', - ACTIVE : 'active', - SLIDE : 'slide', - RIGHT : 'right', - LEFT : 'left', - ITEM : 'carousel-item' -} - - -/** - * @const - * @enum {string} - * @private - */ -Carousel._Selector = { - ACTIVE : '.active', - ACTIVE_ITEM : '.active.carousel-item', - ITEM : '.carousel-item', - NEXT_PREV : '.next, .prev', - INDICATORS : '.carousel-indicators' -} - - -/** - * @const - * @type {Function} - * @private - */ -Carousel._JQUERY_NO_CONFLICT = $.fn[Carousel._NAME] - - -/** - * @param {Object=} opt_config - * @this {jQuery} - * @return {jQuery} - * @private - */ -Carousel._jQueryInterface = function (opt_config) { - return this.each(function () { - var data = $(this).data(Carousel._DATA_KEY) - var config = $.extend({}, Carousel['Defaults'], $(this).data(), typeof opt_config == 'object' && opt_config) - var action = typeof opt_config == 'string' ? opt_config : config.slide - - if (!data) { - data = new Carousel(this, config) - $(this).data(Carousel._DATA_KEY, data) - } - - if (typeof opt_config == 'number') { - data.to(opt_config) - - } else if (action) { - data[action]() - - } else if (config.interval) { - data['pause']() - data['cycle']() - } - }) -} - - -/** - * Click handler for data api - * @param {Event} event - * @this {Element} - * @private - */ -Carousel._dataApiClickHandler = function (event) { - var selector = Bootstrap.getSelectorFromElement(this) - - if (!selector) { - return - } - - var target = $(selector)[0] - - if (!target || !$(target).hasClass(Carousel._ClassName.CAROUSEL)) { - return - } - - var config = $.extend({}, $(target).data(), $(this).data()) - - var slideIndex = this.getAttribute('data-slide-to') - if (slideIndex) { - config.interval = false - } - - Carousel._jQueryInterface.call($(target), config) - - if (slideIndex) { - $(target).data(Carousel._DATA_KEY).to(slideIndex) - } - - event.preventDefault() -} - - -/** - * Advance the carousel to the next slide - */ -Carousel.prototype['next'] = function () { - if (!this._isSliding) { - this._slide(Carousel._Direction.NEXT) - } -} - - -/** - * Return the carousel to the previous slide - */ -Carousel.prototype['prev'] = function () { - if (!this._isSliding) { - this._slide(Carousel._Direction.PREVIOUS) - } -} - - -/** - * Pause the carousel cycle - * @param {Event=} opt_event - */ -Carousel.prototype['pause'] = function (opt_event) { - if (!opt_event) { - this._isPaused = true - } - - if ($(this._element).find(Carousel._Selector.NEXT_PREV)[0] && Bootstrap.transition) { - $(this._element).trigger(Bootstrap.transition.end) - this['cycle'](true) - } - - clearInterval(this._interval) - this._interval = null -} - - -/** - * Cycle to the next carousel item - * @param {Event|boolean=} opt_event - */ -Carousel.prototype['cycle'] = function (opt_event) { - if (!opt_event) { - this._isPaused = false - } - - if (this._interval) { - clearInterval(this._interval) - this._interval = null - } - - if (this._config['interval'] && !this._isPaused) { - this._interval = setInterval(this['next'].bind(this), this._config['interval']) - } -} - - -/** - * @return {Object} - */ -Carousel.prototype['getConfig'] = function () { - return this._config -} - - -/** - * Move active carousel item to specified index - * @param {number} index - */ -Carousel.prototype.to = function (index) { - this._activeElement = $(this._element).find(Carousel._Selector.ACTIVE_ITEM)[0] - - var activeIndex = this._getItemIndex(this._activeElement) - - if (index > (this._items.length - 1) || index < 0) { - return - } - - if (this._isSliding) { - $(this._element).one(Carousel._Event.SLID, function () { this.to(index) }.bind(this)) - return - } - - if (activeIndex == index) { - this['pause']() - this['cycle']() - return - } - - var direction = index > activeIndex ? - Carousel._Direction.NEXT : - Carousel._Direction.PREVIOUS - - this._slide(direction, this._items[index]) -} - - -/** - * Add event listeners to root element - * @private - */ -Carousel.prototype._addEventListeners = function () { - if (this._config['keyboard']) { - $(this._element).on('keydown.bs.carousel', this._keydown.bind(this)) - } - - if (this._config['pause'] == 'hover' && !('ontouchstart' in document.documentElement)) { - $(this._element) - .on('mouseenter.bs.carousel', this['pause'].bind(this)) - .on('mouseleave.bs.carousel', this['cycle'].bind(this)) - } -} - - -/** - * Keydown handler - * @param {Event} event - * @private - */ -Carousel.prototype._keydown = function (event) { - event.preventDefault() - - if (/input|textarea/i.test(event.target.tagName)) return - - switch (event.which) { - case 37: this['prev'](); break - case 39: this['next'](); break - default: return - } -} - - -/** - * Get item index - * @param {Element} element - * @return {number} - * @private - */ -Carousel.prototype._getItemIndex = function (element) { - this._items = $.makeArray($(element).parent().find(Carousel._Selector.ITEM)) - - return this._items.indexOf(element) -} - - -/** - * Get next displayed item based on direction - * @param {Carousel._Direction} direction - * @param {Element} activeElement - * @return {Element} - * @private - */ -Carousel.prototype._getItemByDirection = function (direction, activeElement) { - var activeIndex = this._getItemIndex(activeElement) - var isGoingToWrap = (direction === Carousel._Direction.PREVIOUS && activeIndex === 0) || - (direction === Carousel._Direction.NEXT && activeIndex == (this._items.length - 1)) - - if (isGoingToWrap && !this._config['wrap']) { - return activeElement - } - - var delta = direction == Carousel._Direction.PREVIOUS ? -1 : 1 - var itemIndex = (activeIndex + delta) % this._items.length - - return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex] -} - - -/** - * Trigger slide event on element - * @param {Element} relatedTarget - * @param {Carousel._ClassName} directionalClassname - * @return {$.Event} - * @private - */ -Carousel.prototype._triggerSlideEvent = function (relatedTarget, directionalClassname) { - var slideEvent = $.Event(Carousel._Event.SLIDE, { - relatedTarget: relatedTarget, - direction: directionalClassname - }) - - $(this._element).trigger(slideEvent) - - return slideEvent -} - - -/** - * Set the active indicator if available - * @param {Element} element - * @private - */ -Carousel.prototype._setActiveIndicatorElement = function (element) { - if (this._indicatorsElement) { - $(this._indicatorsElement) - .find(Carousel._Selector.ACTIVE) - .removeClass(Carousel._ClassName.ACTIVE) - - var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)] - if (nextIndicator) { - $(nextIndicator).addClass(Carousel._ClassName.ACTIVE) - } - } -} - - -/** - * Slide the carousel element in a direction - * @param {Carousel._Direction} direction - * @param {Element=} opt_nextElement - */ -Carousel.prototype._slide = function (direction, opt_nextElement) { - var activeElement = $(this._element).find(Carousel._Selector.ACTIVE_ITEM)[0] - var nextElement = opt_nextElement || activeElement && this._getItemByDirection(direction, activeElement) - - var isCycling = !!this._interval - - var directionalClassName = direction == Carousel._Direction.NEXT ? - Carousel._ClassName.LEFT : - Carousel._ClassName.RIGHT - - if (nextElement && $(nextElement).hasClass(Carousel._ClassName.ACTIVE)) { - this._isSliding = false - return - } - - var slideEvent = this._triggerSlideEvent(nextElement, directionalClassName) - if (slideEvent.isDefaultPrevented()) { - return - } - - if (!activeElement || !nextElement) { - // some weirdness is happening, so we bail (maybe throw exception here alerting user that they're dom is off - return - } - - this._isSliding = true - - if (isCycling) { - this['pause']() - } - - this._setActiveIndicatorElement(nextElement) - - var slidEvent = $.Event(Carousel._Event.SLID, { relatedTarget: nextElement, direction: directionalClassName }) - - if (Bootstrap.transition && $(this._element).hasClass(Carousel._ClassName.SLIDE)) { - $(nextElement).addClass(direction) - - Bootstrap.reflow(nextElement) - - $(activeElement).addClass(directionalClassName) - $(nextElement).addClass(directionalClassName) - - $(activeElement) - .one(Bootstrap.TRANSITION_END, function () { - $(nextElement) - .removeClass(directionalClassName) - .removeClass(direction) - - $(nextElement).addClass(Carousel._ClassName.ACTIVE) - - $(activeElement) - .removeClass(Carousel._ClassName.ACTIVE) - .removeClass(direction) - .removeClass(directionalClassName) - - this._isSliding = false - - setTimeout(function () { - $(this._element).trigger(slidEvent) - }.bind(this), 0) - }.bind(this)) - .emulateTransitionEnd(Carousel._TRANSITION_DURATION) - - } else { - $(activeElement).removeClass(Carousel._ClassName.ACTIVE) - $(nextElement).addClass(Carousel._ClassName.ACTIVE) - - this._isSliding = false - $(this._element).trigger(slidEvent) - } - - if (isCycling) { - this['cycle']() - } -} - - -/** - * ------------------------------------------------------------------------ - * jQuery Interface + noConflict implementaiton - * ------------------------------------------------------------------------ - */ - -/** - * @const - * @type {Function} - */ -$.fn[Carousel._NAME] = Carousel._jQueryInterface - - -/** - * @const - * @type {Function} - */ -$.fn[Carousel._NAME]['Constructor'] = Carousel - - -/** - * @const - * @type {Function} - */ -$.fn[Carousel._NAME]['noConflict'] = function () { - $.fn[Carousel._NAME] = Carousel._JQUERY_NO_CONFLICT - return this -} - - -/** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - -$(document) - .on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', Carousel._dataApiClickHandler) - -$(window).on('load', function () { - $('[data-ride="carousel"]').each(function () { - var $carousel = $(this) - Carousel._jQueryInterface.call($carousel, /** @type {Object} */ ($carousel.data())) - }) -}) diff --git a/js/collapse.js b/js/collapse.js deleted file mode 100644 index 156163e3f9..0000000000 --- a/js/collapse.js +++ /dev/null @@ -1,455 +0,0 @@ -/** ======================================================================= - * Bootstrap: collapse.js v4.0.0 - * http://getbootstrap.com/javascript/#collapse - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== - * @fileoverview - Bootstrap's collapse plugin. Flexible support for - * collapsible components like accordions and navigation. - * - * Public Methods & Properties: - * - * + $.carousel - * + $.carousel.noConflict - * + $.carousel.Constructor - * + $.carousel.Constructor.VERSION - * + $.carousel.Constructor.Defaults - * + $.carousel.Constructor.Defaults.toggle - * + $.carousel.Constructor.Defaults.trigger - * + $.carousel.Constructor.Defaults.parent - * + $.carousel.Constructor.prototype.toggle - * + $.carousel.Constructor.prototype.show - * + $.carousel.Constructor.prototype.hide - * - * ======================================================================== - */ - -'use strict'; - - -/** - * Our collapse class. - * @param {Element!} element - * @param {Object=} opt_config - * @constructor - */ -var Collapse = function (element, opt_config) { - - /** @private {Element} */ - this._element = element - - /** @private {Object} */ - this._config = $.extend({}, Collapse['Defaults'], opt_config) - - /** @private {Element} */ - this._trigger = typeof this._config['trigger'] == 'string' ? - $(this._config['trigger'])[0] : this._config['trigger'] - - /** @private {boolean} */ - this._isTransitioning = false - - /** @private {?Element} */ - this._parent = this._config['parent'] ? this._getParent() : null - - if (!this._config['parent']) { - this._addAriaAndCollapsedClass(this._element, this._trigger) - } - - if (this._config['toggle']) { - this['toggle']() - } - -} - - -/** - * @const - * @type {string} - */ -Collapse['VERSION'] = '4.0.0' - - -/** - * @const - * @type {Object} - */ -Collapse['Defaults'] = { - 'toggle' : true, - 'trigger' : '[data-toggle="collapse"]', - 'parent' : null -} - - -/** - * @const - * @type {string} - * @private - */ -Collapse._NAME = 'collapse' - - -/** - * @const - * @type {string} - * @private - */ -Collapse._DATA_KEY = 'bs.collapse' - - -/** - * @const - * @type {number} - * @private - */ -Collapse._TRANSITION_DURATION = 600 - - -/** - * @const - * @type {Function} - * @private - */ -Collapse._JQUERY_NO_CONFLICT = $.fn[Collapse._NAME] - - -/** - * @const - * @enum {string} - * @private - */ -Collapse._Event = { - SHOW : 'show.bs.collapse', - SHOWN : 'shown.bs.collapse', - HIDE : 'hide.bs.collapse', - HIDDEN : 'hidden.bs.collapse' -} - - -/** - * @const - * @enum {string} - * @private - */ -Collapse._ClassName = { - IN : 'in', - COLLAPSE : 'collapse', - COLLAPSING : 'collapsing', - COLLAPSED : 'collapsed' -} - - -/** - * @const - * @enum {string} - * @private - */ -Collapse._Dimension = { - WIDTH : 'width', - HEIGHT : 'height' -} - - -/** - * @const - * @enum {string} - * @private - */ -Collapse._Selector = { - ACTIVES : '.panel > .in, .panel > .collapsing' -} - - -/** - * Provides the jQuery Interface for the alert component. - * @param {Object|string=} opt_config - * @this {jQuery} - * @return {jQuery} - * @private - */ -Collapse._jQueryInterface = function (opt_config) { - return this.each(function () { - var $this = $(this) - var data = $this.data(Collapse._DATA_KEY) - var config = $.extend({}, Collapse['Defaults'], $this.data(), typeof opt_config == 'object' && opt_config) - - if (!data && config['toggle'] && opt_config == 'show') { - config['toggle'] = false - } - - if (!data) { - data = new Collapse(this, config) - $this.data(Collapse._DATA_KEY, data) - } - - if (typeof opt_config == 'string') { - data[opt_config]() - } - }) -} - - -/** - * Function for getting target element from element - * @return {Element} - * @private - */ -Collapse._getTargetFromElement = function (element) { - var selector = Bootstrap.getSelectorFromElement(element) - - return selector ? $(selector)[0] : null -} - - -/** - * Toggles the collapse element based on the presence of the 'in' class - */ -Collapse.prototype['toggle'] = function () { - if ($(this._element).hasClass(Collapse._ClassName.IN)) { - this['hide']() - } else { - this['show']() - } -} - - -/** - * Show's the collapsing element - */ -Collapse.prototype['show'] = function () { - if (this._isTransitioning || $(this._element).hasClass(Collapse._ClassName.IN)) { - return - } - - var activesData, actives - - if (this._parent) { - actives = $.makeArray($(Collapse._Selector.ACTIVES)) - if (!actives.length) { - actives = null - } - } - - if (actives) { - activesData = $(actives).data(Collapse._DATA_KEY) - if (activesData && activesData._isTransitioning) { - return - } - } - - var startEvent = $.Event(Collapse._Event.SHOW) - $(this._element).trigger(startEvent) - if (startEvent.isDefaultPrevented()) { - return - } - - if (actives) { - Collapse._jQueryInterface.call($(actives), 'hide') - if (!activesData) { - $(actives).data(Collapse._DATA_KEY, null) - } - } - - var dimension = this._getDimension() - - $(this._element) - .removeClass(Collapse._ClassName.COLLAPSE) - .addClass(Collapse._ClassName.COLLAPSING) - - this._element.style[dimension] = 0 - this._element.setAttribute('aria-expanded', true) - - if (this._trigger) { - $(this._trigger).removeClass(Collapse._ClassName.COLLAPSED) - this._trigger.setAttribute('aria-expanded', true) - } - - this['setTransitioning'](true) - - var complete = function () { - $(this._element) - .removeClass(Collapse._ClassName.COLLAPSING) - .addClass(Collapse._ClassName.COLLAPSE) - .addClass(Collapse._ClassName.IN) - - this._element.style[dimension] = '' - - this['setTransitioning'](false) - - $(this._element).trigger(Collapse._Event.SHOWN) - }.bind(this) - - if (!Bootstrap.transition) { - complete() - return - } - - var scrollSize = 'scroll' + (dimension[0].toUpperCase() + dimension.slice(1)) - - $(this._element) - .one(Bootstrap.TRANSITION_END, complete) - .emulateTransitionEnd(Collapse._TRANSITION_DURATION) - - this._element.style[dimension] = this._element[scrollSize] + 'px' -} - - -/** - * Hides's the collapsing element - */ -Collapse.prototype['hide'] = function () { - if (this._isTransitioning || !$(this._element).hasClass(Collapse._ClassName.IN)) { - return - } - - var startEvent = $.Event(Collapse._Event.HIDE) - $(this._element).trigger(startEvent) - if (startEvent.isDefaultPrevented()) return - - var dimension = this._getDimension() - var offsetDimension = dimension === Collapse._Dimension.WIDTH ? - 'offsetWidth' : 'offsetHeight' - - this._element.style[dimension] = this._element[offsetDimension] + 'px' - - Bootstrap.reflow(this._element) - - $(this._element) - .addClass(Collapse._ClassName.COLLAPSING) - .removeClass(Collapse._ClassName.COLLAPSE) - .removeClass(Collapse._ClassName.IN) - - this._element.setAttribute('aria-expanded', false) - - if (this._trigger) { - $(this._trigger).addClass(Collapse._ClassName.COLLAPSED) - this._trigger.setAttribute('aria-expanded', false) - } - - this['setTransitioning'](true) - - var complete = function () { - this['setTransitioning'](false) - $(this._element) - .removeClass(Collapse._ClassName.COLLAPSING) - .addClass(Collapse._ClassName.COLLAPSE) - .trigger(Collapse._Event.HIDDEN) - - }.bind(this) - - this._element.style[dimension] = 0 - - if (!Bootstrap.transition) { - return complete() - } - - $(this._element) - .one(Bootstrap.TRANSITION_END, complete) - .emulateTransitionEnd(Collapse._TRANSITION_DURATION) -} - - - -/** - * @param {boolean} isTransitioning - */ -Collapse.prototype['setTransitioning'] = function (isTransitioning) { - this._isTransitioning = isTransitioning -} - - -/** - * Returns the collapsing dimension - * @return {string} - * @private - */ -Collapse.prototype._getDimension = function () { - var hasWidth = $(this._element).hasClass(Collapse._Dimension.WIDTH) - return hasWidth ? Collapse._Dimension.WIDTH : Collapse._Dimension.HEIGHT -} - - -/** - * Returns the parent element - * @return {Element} - * @private - */ -Collapse.prototype._getParent = function () { - var selector = '[data-toggle="collapse"][data-parent="' + this._config['parent'] + '"]' - var parent = $(this._config['parent'])[0] - var elements = /** @type {Array.<Element>} */ ($.makeArray($(parent).find(selector))) - - for (var i = 0; i < elements.length; i++) { - this._addAriaAndCollapsedClass(Collapse._getTargetFromElement(elements[i]), elements[i]) - } - - return parent -} - - -/** - * Returns the parent element - * @param {Element} element - * @param {Element} trigger - * @private - */ -Collapse.prototype._addAriaAndCollapsedClass = function (element, trigger) { - if (element) { - var isOpen = $(element).hasClass(Collapse._ClassName.IN) - element.setAttribute('aria-expanded', isOpen) - - if (trigger) { - trigger.setAttribute('aria-expanded', isOpen) - $(trigger).toggleClass(Collapse._ClassName.COLLAPSED, !isOpen) - } - } -} - - - -/** - * ------------------------------------------------------------------------ - * jQuery Interface + noConflict implementaiton - * ------------------------------------------------------------------------ - */ - -/** - * @const - * @type {Function} - */ -$.fn[Collapse._NAME] = Collapse._jQueryInterface - - -/** - * @const - * @type {Function} - */ -$.fn[Collapse._NAME]['Constructor'] = Collapse - - -/** - * @const - * @type {Function} - */ -$.fn[Collapse._NAME]['noConflict'] = function () { - $.fn[Collapse._NAME] = Collapse._JQUERY_NO_CONFLICT - return this -} - - -/** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - -$(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (event) { - event.preventDefault() - - var target = Collapse._getTargetFromElement(this) - - var data = $(target).data(Collapse._DATA_KEY) - var config = data ? 'toggle' : $.extend({}, $(this).data(), { trigger: this }) - - Collapse._jQueryInterface.call($(target), config) -}) diff --git a/js/dist/alert.js b/js/dist/alert.js new file mode 100644 index 0000000000..876a5f3d04 --- /dev/null +++ b/js/dist/alert.js @@ -0,0 +1,192 @@ +'use strict'; + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): alert.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Alert = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'alert'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.alert'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 150; + + var Selector = { + DISMISS: '[data-dismiss="alert"]' + }; + + var Event = { + CLOSE: 'close' + EVENT_KEY, + CLOSED: 'closed' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + '' + DATA_API_KEY + }; + + var ClassName = { + ALERT: 'alert', + FADE: 'fade', + IN: 'in' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Alert = (function () { + function Alert(element) { + _classCallCheck(this, Alert); + + this._element = element; + } + + _createClass(Alert, [{ + key: 'close', + + // public + + value: function close(element) { + element = element || this._element; + + var rootElement = this._getRootElement(element); + var customEvent = this._triggerCloseEvent(rootElement); + + if (customEvent.isDefaultPrevented()) { + return; + } + + this._removeElement(rootElement); + } + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + this._element = null; + } + }, { + key: '_getRootElement', + + // private + + value: function _getRootElement(element) { + var parent = false; + var selector = Util.getSelectorFromElement(element); + + if (selector) { + parent = $(selector)[0]; + } + + if (!parent) { + parent = $(element).closest('.' + ClassName.ALERT)[0]; + } + + return parent; + } + }, { + key: '_triggerCloseEvent', + value: function _triggerCloseEvent(element) { + var closeEvent = $.Event(Event.CLOSE); + $(element).trigger(closeEvent); + return closeEvent; + } + }, { + key: '_removeElement', + value: function _removeElement(element) { + $(element).removeClass(ClassName.IN); + + if (!Util.supportsTransitionEnd() || !$(element).hasClass(ClassName.FADE)) { + this._destroyElement(element); + return; + } + + $(element).one(Util.TRANSITION_END, this._destroyElement.bind(this, element)).emulateTransitionEnd(TRANSITION_DURATION); + } + }, { + key: '_destroyElement', + value: function _destroyElement(element) { + $(element).detach().trigger(Event.CLOSED).remove(); + } + }], [{ + key: 'VERSION', + + // getters + + get: function () { + return VERSION; + } + }, { + key: '_jQueryInterface', + + // static + + value: function _jQueryInterface(config) { + return this.each(function () { + var $element = $(this); + var data = $element.data(DATA_KEY); + + if (!data) { + data = new Alert(this); + $element.data(DATA_KEY, data); + } + + if (config === 'close') { + data[config](this); + } + }); + } + }, { + key: '_handleDismiss', + value: function _handleDismiss(alertInstance) { + return function (event) { + if (event) { + event.preventDefault(); + } + + alertInstance.close(this); + }; + } + }]); + + return Alert; + })(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert())); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Alert._jQueryInterface; + $.fn[NAME].Constructor = Alert; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Alert._jQueryInterface; + }; + + return Alert; +})(jQuery); +//# sourceMappingURL=alert.js.map
\ No newline at end of file diff --git a/js/dist/alert.js.map b/js/dist/alert.js.map new file mode 100644 index 0000000000..a030fb73c8 --- /dev/null +++ b/js/dist/alert.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["js/src/alert.js"],"names":[],"mappings":"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","file":"js/src/alert.js","sourcesContent":["import Util from './util'\n\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Alert = (($) => {\n\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'alert'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.alert'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const TRANSITION_DURATION = 150\n\n const Selector = {\n DISMISS : '[data-dismiss=\"alert\"]'\n }\n\n const Event = {\n CLOSE : `close${EVENT_KEY}`,\n CLOSED : `closed${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n ALERT : 'alert',\n FADE : 'fade',\n IN : 'in'\n }\n\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Alert {\n\n constructor(element) {\n this._element = element\n }\n\n\n // getters\n\n static get VERSION() {\n return VERSION\n }\n\n\n // public\n\n close(element) {\n element = element || this._element\n\n let rootElement = this._getRootElement(element)\n let customEvent = this._triggerCloseEvent(rootElement)\n\n if (customEvent.isDefaultPrevented()) {\n return\n }\n\n this._removeElement(rootElement)\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n\n // private\n\n _getRootElement(element) {\n let parent = false\n let selector = Util.getSelectorFromElement(element)\n\n if (selector) {\n parent = $(selector)[0]\n }\n\n if (!parent) {\n parent = $(element).closest(`.${ClassName.ALERT}`)[0]\n }\n\n return parent\n }\n\n _triggerCloseEvent(element) {\n var closeEvent = $.Event(Event.CLOSE)\n $(element).trigger(closeEvent)\n return closeEvent\n }\n\n _removeElement(element) {\n $(element).removeClass(ClassName.IN)\n\n if (!Util.supportsTransitionEnd() ||\n !$(element).hasClass(ClassName.FADE)) {\n this._destroyElement(element)\n return\n }\n\n $(element)\n .one(Util.TRANSITION_END, this._destroyElement.bind(this, element))\n .emulateTransitionEnd(TRANSITION_DURATION)\n }\n\n _destroyElement(element) {\n $(element)\n .detach()\n .trigger(Event.CLOSED)\n .remove()\n }\n\n\n // static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let $element = $(this)\n let data = $element.data(DATA_KEY)\n\n if (!data) {\n data = new Alert(this)\n $element.data(DATA_KEY, data)\n }\n\n if (config === 'close') {\n data[config](this)\n }\n })\n }\n\n static _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault()\n }\n\n alertInstance.close(this)\n }\n }\n\n }\n\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document).on(\n Event.CLICK_DATA_API,\n Selector.DISMISS,\n Alert._handleDismiss(new Alert())\n )\n\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Alert._jQueryInterface\n $.fn[NAME].Constructor = Alert\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Alert._jQueryInterface\n }\n\n return Alert\n\n})(jQuery)\n\nexport default Alert\n"]}
\ No newline at end of file diff --git a/js/dist/button.js b/js/dist/button.js new file mode 100644 index 0000000000..fe6cfe9818 --- /dev/null +++ b/js/dist/button.js @@ -0,0 +1,174 @@ +'use strict'; + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): button.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Button = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'button'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.button'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 150; + + var ClassName = { + ACTIVE: 'active', + BUTTON: 'btn', + FOCUS: 'focus' + }; + + var Selector = { + DATA_TOGGLE_CARROT: '[data-toggle^="button"]', + DATA_TOGGLE: '[data-toggle="buttons"]', + INPUT: 'input', + ACTIVE: '.active', + BUTTON: '.btn' + }; + + var Event = { + CLICK_DATA_API: 'click' + EVENT_KEY + '' + DATA_API_KEY, + FOCUS_BLUR_DATA_API: 'focus' + EVENT_KEY + '' + DATA_API_KEY + ' ' + ('blur' + EVENT_KEY + '' + DATA_API_KEY) + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Button = (function () { + function Button(element) { + _classCallCheck(this, Button); + + this._element = element; + } + + _createClass(Button, [{ + key: 'toggle', + + // public + + value: function toggle() { + var triggerChangeEvent = true; + var rootElement = $(this._element).closest(Selector.DATA_TOGGLE)[0]; + + if (rootElement) { + var input = $(this._element).find(Selector.INPUT)[0]; + + if (input) { + if (input.type === 'radio') { + if (input.checked && $(this._element).hasClass(ClassName.ACTIVE)) { + triggerChangeEvent = false; + } else { + var activeElement = $(rootElement).find(Selector.ACTIVE)[0]; + + if (activeElement) { + $(activeElement).removeClass(ClassName.ACTIVE); + } + } + } + + if (triggerChangeEvent) { + input.checked = !$(this._element).hasClass(ClassName.ACTIVE); + $(this._element).trigger('change'); + } + } + } else { + this._element.setAttribute('aria-pressed', !$(this._element).hasClass(ClassName.ACTIVE)); + } + + if (triggerChangeEvent) { + $(this._element).toggleClass(ClassName.ACTIVE); + } + } + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + this._element = null; + } + }], [{ + key: 'VERSION', + + // getters + + get: function () { + return VERSION; + } + }, { + key: '_jQueryInterface', + + // static + + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + + if (!data) { + data = new Button(this); + $(this).data(DATA_KEY, data); + } + + if (config === 'toggle') { + data[config](); + } + }); + } + }]); + + return Button; + })(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) { + event.preventDefault(); + + var button = event.target; + + if (!$(button).hasClass(ClassName.BUTTON)) { + button = $(button).closest(Selector.BUTTON); + } + + Button._jQueryInterface.call($(button), 'toggle'); + }).on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) { + var button = $(event.target).closest(Selector.BUTTON)[0]; + $(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type)); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Button._jQueryInterface; + $.fn[NAME].Constructor = Button; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Button._jQueryInterface; + }; + + return Button; +})(jQuery); +//# sourceMappingURL=button.js.map
\ No newline at end of file diff --git a/js/dist/button.js.map b/js/dist/button.js.map new file mode 100644 index 0000000000..109755be80 --- /dev/null +++ b/js/dist/button.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["js/src/button.js"],"names":[],"mappings":"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","file":"js/src/button.js","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Button = (($) => {\n\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'button'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.button'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const TRANSITION_DURATION = 150\n\n const ClassName = {\n ACTIVE : 'active',\n BUTTON : 'btn',\n FOCUS : 'focus'\n }\n\n const Selector = {\n DATA_TOGGLE_CARROT : '[data-toggle^=\"button\"]',\n DATA_TOGGLE : '[data-toggle=\"buttons\"]',\n INPUT : 'input',\n ACTIVE : '.active',\n BUTTON : '.btn'\n }\n\n const Event = {\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`,\n FOCUS_BLUR_DATA_API : `focus${EVENT_KEY}${DATA_API_KEY} `\n + `blur${EVENT_KEY}${DATA_API_KEY}`\n }\n\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Button {\n\n constructor(element) {\n this._element = element\n }\n\n\n // getters\n\n static get VERSION() {\n return VERSION\n }\n\n\n // public\n\n toggle() {\n let triggerChangeEvent = true\n let rootElement = $(this._element).closest(\n Selector.DATA_TOGGLE\n )[0]\n\n if (rootElement) {\n let input = $(this._element).find(Selector.INPUT)[0]\n\n if (input) {\n if (input.type === 'radio') {\n if (input.checked &&\n $(this._element).hasClass(ClassName.ACTIVE)) {\n triggerChangeEvent = false\n\n } else {\n let activeElement = $(rootElement).find(Selector.ACTIVE)[0]\n\n if (activeElement) {\n $(activeElement).removeClass(ClassName.ACTIVE)\n }\n }\n }\n\n if (triggerChangeEvent) {\n input.checked = !$(this._element).hasClass(ClassName.ACTIVE)\n $(this._element).trigger('change')\n }\n }\n } else {\n this._element.setAttribute('aria-pressed',\n !$(this._element).hasClass(ClassName.ACTIVE))\n }\n\n if (triggerChangeEvent) {\n $(this._element).toggleClass(ClassName.ACTIVE)\n }\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n\n // static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n\n if (!data) {\n data = new Button(this)\n $(this).data(DATA_KEY, data)\n }\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n\n }\n\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) {\n event.preventDefault()\n\n let button = event.target\n\n if (!$(button).hasClass(ClassName.BUTTON)) {\n button = $(button).closest(Selector.BUTTON)\n }\n\n Button._jQueryInterface.call($(button), 'toggle')\n })\n .on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) {\n var button = $(event.target).closest(Selector.BUTTON)[0]\n $(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type))\n })\n\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Button._jQueryInterface\n $.fn[NAME].Constructor = Button\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Button._jQueryInterface\n }\n\n return Button\n\n})(jQuery)\n\nexport default Button\n"]}
\ No newline at end of file diff --git a/js/dist/carousel.js b/js/dist/carousel.js new file mode 100644 index 0000000000..029c69fdba --- /dev/null +++ b/js/dist/carousel.js @@ -0,0 +1,466 @@ +'use strict'; + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): carousel.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Carousel = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'carousel'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.carousel'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 600; + + var Default = { + interval: 5000, + keyboard: true, + slide: false, + pause: 'hover', + wrap: true + }; + + var DefaultType = { + interval: '(number|boolean)', + keyboard: 'boolean', + slide: '(boolean|string)', + pause: '(string|boolean)', + wrap: 'boolean' + }; + + var Direction = { + NEXT: 'next', + PREVIOUS: 'prev' + }; + + var Event = { + SLIDE: 'slide' + EVENT_KEY, + SLID: 'slid' + EVENT_KEY, + KEYDOWN: 'keydown' + EVENT_KEY, + MOUSEENTER: 'mouseenter' + EVENT_KEY, + MOUSELEAVE: 'mouseleave' + EVENT_KEY, + LOAD_DATA_API: 'load' + EVENT_KEY + '' + DATA_API_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + '' + DATA_API_KEY + }; + + var ClassName = { + CAROUSEL: 'carousel', + ACTIVE: 'active', + SLIDE: 'slide', + RIGHT: 'right', + LEFT: 'left', + ITEM: 'carousel-item' + }; + + var Selector = { + ACTIVE: '.active', + ACTIVE_ITEM: '.active.carousel-item', + ITEM: '.carousel-item', + NEXT_PREV: '.next, .prev', + INDICATORS: '.carousel-indicators', + DATA_SLIDE: '[data-slide], [data-slide-to]', + DATA_RIDE: '[data-ride="carousel"]' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Carousel = (function () { + function Carousel(element, config) { + _classCallCheck(this, Carousel); + + this._items = null; + this._interval = null; + this._activeElement = null; + + this._isPaused = false; + this._isSliding = false; + + this._config = this._getConfig(config); + this._element = $(element)[0]; + this._indicatorsElement = $(this._element).find(Selector.INDICATORS)[0]; + + this._addEventListeners(); + } + + _createClass(Carousel, [{ + key: 'next', + + // public + + value: function next() { + if (!this._isSliding) { + this._slide(Direction.NEXT); + } + } + }, { + key: 'prev', + value: function prev() { + if (!this._isSliding) { + this._slide(Direction.PREVIOUS); + } + } + }, { + key: 'pause', + value: function pause(event) { + if (!event) { + this._isPaused = true; + } + + if ($(this._element).find(Selector.NEXT_PREV)[0] && Util.supportsTransitionEnd()) { + Util.triggerTransitionEnd(this._element); + this.cycle(true); + } + + clearInterval(this._interval); + this._interval = null; + } + }, { + key: 'cycle', + value: function cycle(event) { + if (!event) { + this._isPaused = false; + } + + if (this._interval) { + clearInterval(this._interval); + this._interval = null; + } + + if (this._config.interval && !this._isPaused) { + this._interval = setInterval($.proxy(this.next, this), this._config.interval); + } + } + }, { + key: 'to', + value: function to(index) { + var _this = this; + + this._activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0]; + + var activeIndex = this._getItemIndex(this._activeElement); + + if (index > this._items.length - 1 || index < 0) { + return; + } + + if (this._isSliding) { + $(this._element).one(Event.SLID, function () { + return _this.to(index); + }); + return; + } + + if (activeIndex == index) { + this.pause(); + this.cycle(); + return; + } + + var direction = index > activeIndex ? Direction.NEXT : Direction.PREVIOUS; + + this._slide(direction, this._items[index]); + } + }, { + key: 'dispose', + value: function dispose() { + $(this._element).off(EVENT_KEY); + $.removeData(this._element, DATA_KEY); + + this._items = null; + this._config = null; + this._element = null; + this._interval = null; + this._isPaused = null; + this._isSliding = null; + this._activeElement = null; + this._indicatorsElement = null; + } + }, { + key: '_getConfig', + + // private + + value: function _getConfig(config) { + config = $.extend({}, Default, config); + Util.typeCheckConfig(NAME, config, DefaultType); + return config; + } + }, { + key: '_addEventListeners', + value: function _addEventListeners() { + if (this._config.keyboard) { + $(this._element).on(Event.KEYDOWN, $.proxy(this._keydown, this)); + } + + if (this._config.pause == 'hover' && !('ontouchstart' in document.documentElement)) { + $(this._element).on(Event.MOUSEENTER, $.proxy(this.pause, this)).on(Event.MOUSELEAVE, $.proxy(this.cycle, this)); + } + } + }, { + key: '_keydown', + value: function _keydown(event) { + event.preventDefault(); + + if (/input|textarea/i.test(event.target.tagName)) return; + + switch (event.which) { + case 37: + this.prev();break; + case 39: + this.next();break; + default: + return; + } + } + }, { + key: '_getItemIndex', + value: function _getItemIndex(element) { + this._items = $.makeArray($(element).parent().find(Selector.ITEM)); + return this._items.indexOf(element); + } + }, { + key: '_getItemByDirection', + value: function _getItemByDirection(direction, activeElement) { + var isNextDirection = direction === Direction.NEXT; + var isPrevDirection = direction === Direction.PREVIOUS; + var activeIndex = this._getItemIndex(activeElement); + var lastItemIndex = this._items.length - 1; + var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex == lastItemIndex; + + if (isGoingToWrap && !this._config.wrap) { + return activeElement; + } + + var delta = direction == Direction.PREVIOUS ? -1 : 1; + var itemIndex = (activeIndex + delta) % this._items.length; + + return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex]; + } + }, { + key: '_triggerSlideEvent', + value: function _triggerSlideEvent(relatedTarget, directionalClassname) { + var slideEvent = $.Event(Event.SLIDE, { + relatedTarget: relatedTarget, + direction: directionalClassname + }); + + $(this._element).trigger(slideEvent); + + return slideEvent; + } + }, { + key: '_setActiveIndicatorElement', + value: function _setActiveIndicatorElement(element) { + if (this._indicatorsElement) { + $(this._indicatorsElement).find(Selector.ACTIVE).removeClass(ClassName.ACTIVE); + + var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)]; + + if (nextIndicator) { + $(nextIndicator).addClass(ClassName.ACTIVE); + } + } + } + }, { + key: '_slide', + value: function _slide(direction, element) { + var _this2 = this; + + var activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0]; + var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement); + + var isCycling = !!this._interval; + + var directionalClassName = direction == Direction.NEXT ? ClassName.LEFT : ClassName.RIGHT; + + if (nextElement && $(nextElement).hasClass(ClassName.ACTIVE)) { + this._isSliding = false; + return; + } + + var slideEvent = this._triggerSlideEvent(nextElement, directionalClassName); + if (slideEvent.isDefaultPrevented()) { + return; + } + + if (!activeElement || !nextElement) { + // some weirdness is happening, so we bail + return; + } + + this._isSliding = true; + + if (isCycling) { + this.pause(); + } + + this._setActiveIndicatorElement(nextElement); + + var slidEvent = $.Event(Event.SLID, { + relatedTarget: nextElement, + direction: directionalClassName + }); + + if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.SLIDE)) { + + $(nextElement).addClass(direction); + + Util.reflow(nextElement); + + $(activeElement).addClass(directionalClassName); + $(nextElement).addClass(directionalClassName); + + $(activeElement).one(Util.TRANSITION_END, function () { + $(nextElement).removeClass(directionalClassName).removeClass(direction); + + $(nextElement).addClass(ClassName.ACTIVE); + + $(activeElement).removeClass(ClassName.ACTIVE).removeClass(direction).removeClass(directionalClassName); + + _this2._isSliding = false; + + setTimeout(function () { + return $(_this2._element).trigger(slidEvent); + }, 0); + }).emulateTransitionEnd(TRANSITION_DURATION); + } else { + $(activeElement).removeClass(ClassName.ACTIVE); + $(nextElement).addClass(ClassName.ACTIVE); + + this._isSliding = false; + $(this._element).trigger(slidEvent); + } + + if (isCycling) { + this.cycle(); + } + } + }], [{ + key: 'VERSION', + + // getters + + get: function () { + return VERSION; + } + }, { + key: 'Default', + get: function () { + return Default; + } + }, { + key: '_jQueryInterface', + + // static + + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = $.extend({}, Default, $(this).data()); + + if (typeof config === 'object') { + $.extend(_config, config); + } + + var action = typeof config === 'string' ? config : _config.slide; + + if (!data) { + data = new Carousel(this, _config); + $(this).data(DATA_KEY, data); + } + + if (typeof config == 'number') { + data.to(config); + } else if (action) { + data[action](); + } else if (_config.interval) { + data.pause(); + data.cycle(); + } + }); + } + }, { + key: '_dataApiClickHandler', + value: function _dataApiClickHandler(event) { + var selector = Util.getSelectorFromElement(this); + + if (!selector) { + return; + } + + var target = $(selector)[0]; + + if (!target || !$(target).hasClass(ClassName.CAROUSEL)) { + return; + } + + var config = $.extend({}, $(target).data(), $(this).data()); + + var slideIndex = this.getAttribute('data-slide-to'); + if (slideIndex) { + config.interval = false; + } + + Carousel._jQueryInterface.call($(target), config); + + if (slideIndex) { + $(target).data(DATA_KEY).to(slideIndex); + } + + event.preventDefault(); + } + }]); + + return Carousel; + })(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler); + + $(window).on(Event.LOAD_DATA_API, function () { + $(Selector.DATA_RIDE).each(function () { + var $carousel = $(this); + Carousel._jQueryInterface.call($carousel, $carousel.data()); + }); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Carousel._jQueryInterface; + $.fn[NAME].Constructor = Carousel; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Carousel._jQueryInterface; + }; + + return Carousel; +})(jQuery); +//# sourceMappingURL=carousel.js.map
\ No newline at end of file diff --git a/js/dist/carousel.js.map b/js/dist/carousel.js.map new file mode 100644 index 0000000000..0978f4836f --- /dev/null +++ b/js/dist/carousel.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["js/src/carousel.js"],"names":[],"mappings":"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","file":"js/src/carousel.js","sourcesContent":["import Util from './util'\n\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Carousel = (($) => {\n\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'carousel'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.carousel'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const TRANSITION_DURATION = 600\n\n const Default = {\n interval : 5000,\n keyboard : true,\n slide : false,\n pause : 'hover',\n wrap : true\n }\n\n const DefaultType = {\n interval : '(number|boolean)',\n keyboard : 'boolean',\n slide : '(boolean|string)',\n pause : '(string|boolean)',\n wrap : 'boolean'\n }\n\n const Direction = {\n NEXT : 'next',\n PREVIOUS : 'prev'\n }\n\n const Event = {\n SLIDE : `slide${EVENT_KEY}`,\n SLID : `slid${EVENT_KEY}`,\n KEYDOWN : `keydown${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`,\n LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n CAROUSEL : 'carousel',\n ACTIVE : 'active',\n SLIDE : 'slide',\n RIGHT : 'right',\n LEFT : 'left',\n ITEM : 'carousel-item'\n }\n\n const Selector = {\n ACTIVE : '.active',\n ACTIVE_ITEM : '.active.carousel-item',\n ITEM : '.carousel-item',\n NEXT_PREV : '.next, .prev',\n INDICATORS : '.carousel-indicators',\n DATA_SLIDE : '[data-slide], [data-slide-to]',\n DATA_RIDE : '[data-ride=\"carousel\"]'\n }\n\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Carousel {\n\n constructor(element, config) {\n this._items = null\n this._interval = null\n this._activeElement = null\n\n this._isPaused = false\n this._isSliding = false\n\n this._config = this._getConfig(config)\n this._element = $(element)[0]\n this._indicatorsElement = $(this._element).find(Selector.INDICATORS)[0]\n\n this._addEventListeners()\n }\n\n\n // getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n\n // public\n\n next() {\n if (!this._isSliding) {\n this._slide(Direction.NEXT)\n }\n }\n\n prev() {\n if (!this._isSliding) {\n this._slide(Direction.PREVIOUS)\n }\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if ($(this._element).find(Selector.NEXT_PREV)[0] &&\n Util.supportsTransitionEnd()) {\n Util.triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config.interval && !this._isPaused) {\n this._interval = setInterval(\n $.proxy(this.next, this), this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0]\n\n let activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > (this._items.length - 1) || index < 0) {\n return\n }\n\n if (this._isSliding) {\n $(this._element).one(Event.SLID, () => this.to(index))\n return\n }\n\n if (activeIndex == index) {\n this.pause()\n this.cycle()\n return\n }\n\n var direction = index > activeIndex ?\n Direction.NEXT :\n Direction.PREVIOUS\n\n this._slide(direction, this._items[index])\n }\n\n dispose() {\n $(this._element).off(EVENT_KEY)\n $.removeData(this._element, DATA_KEY)\n\n this._items = null\n this._config = null\n this._element = null\n this._interval = null\n this._isPaused = null\n this._isSliding = null\n this._activeElement = null\n this._indicatorsElement = null\n }\n\n\n // private\n\n _getConfig(config) {\n config = $.extend({}, Default, config)\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n $(this._element)\n .on(Event.KEYDOWN, $.proxy(this._keydown, this))\n }\n\n if (this._config.pause == 'hover' &&\n !('ontouchstart' in document.documentElement)) {\n $(this._element)\n .on(Event.MOUSEENTER, $.proxy(this.pause, this))\n .on(Event.MOUSELEAVE, $.proxy(this.cycle, this))\n }\n }\n\n _keydown(event) {\n event.preventDefault()\n\n if (/input|textarea/i.test(event.target.tagName)) return\n\n switch (event.which) {\n case 37: this.prev(); break\n case 39: this.next(); break\n default: return\n }\n }\n\n _getItemIndex(element) {\n this._items = $.makeArray($(element).parent().find(Selector.ITEM))\n return this._items.indexOf(element)\n }\n\n _getItemByDirection(direction, activeElement) {\n let isNextDirection = direction === Direction.NEXT\n let isPrevDirection = direction === Direction.PREVIOUS\n let activeIndex = this._getItemIndex(activeElement)\n let lastItemIndex = (this._items.length - 1)\n let isGoingToWrap = (isPrevDirection && activeIndex === 0) ||\n (isNextDirection && activeIndex == lastItemIndex)\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement\n }\n\n let delta = direction == Direction.PREVIOUS ? -1 : 1\n let itemIndex = (activeIndex + delta) % this._items.length\n\n return itemIndex === -1 ?\n this._items[this._items.length - 1] : this._items[itemIndex]\n }\n\n\n _triggerSlideEvent(relatedTarget, directionalClassname) {\n let slideEvent = $.Event(Event.SLIDE, {\n relatedTarget: relatedTarget,\n direction: directionalClassname\n })\n\n $(this._element).trigger(slideEvent)\n\n return slideEvent\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n $(this._indicatorsElement)\n .find(Selector.ACTIVE)\n .removeClass(ClassName.ACTIVE)\n\n let nextIndicator = this._indicatorsElement.children[\n this._getItemIndex(element)\n ]\n\n if (nextIndicator) {\n $(nextIndicator).addClass(ClassName.ACTIVE)\n }\n }\n }\n\n _slide(direction, element) {\n let activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0]\n let nextElement = element || activeElement &&\n this._getItemByDirection(direction, activeElement)\n\n let isCycling = !!this._interval\n\n let directionalClassName = direction == Direction.NEXT ?\n ClassName.LEFT :\n ClassName.RIGHT\n\n if (nextElement && $(nextElement).hasClass(ClassName.ACTIVE)) {\n this._isSliding = false\n return\n }\n\n let slideEvent = this._triggerSlideEvent(nextElement, directionalClassName)\n if (slideEvent.isDefaultPrevented()) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // some weirdness is happening, so we bail\n return\n }\n\n this._isSliding = true\n\n if (isCycling) {\n this.pause()\n }\n\n this._setActiveIndicatorElement(nextElement)\n\n var slidEvent = $.Event(Event.SLID, {\n relatedTarget: nextElement,\n direction: directionalClassName\n })\n\n if (Util.supportsTransitionEnd() &&\n $(this._element).hasClass(ClassName.SLIDE)) {\n\n $(nextElement).addClass(direction)\n\n Util.reflow(nextElement)\n\n $(activeElement).addClass(directionalClassName)\n $(nextElement).addClass(directionalClassName)\n\n $(activeElement)\n .one(Util.TRANSITION_END, () => {\n $(nextElement)\n .removeClass(directionalClassName)\n .removeClass(direction)\n\n $(nextElement).addClass(ClassName.ACTIVE)\n\n $(activeElement)\n .removeClass(ClassName.ACTIVE)\n .removeClass(direction)\n .removeClass(directionalClassName)\n\n this._isSliding = false\n\n setTimeout(() => $(this._element).trigger(slidEvent), 0)\n\n })\n .emulateTransitionEnd(TRANSITION_DURATION)\n\n } else {\n $(activeElement).removeClass(ClassName.ACTIVE)\n $(nextElement).addClass(ClassName.ACTIVE)\n\n this._isSliding = false\n $(this._element).trigger(slidEvent)\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n\n // static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n let _config = $.extend({}, Default, $(this).data())\n\n if (typeof config === 'object') {\n $.extend(_config, config)\n }\n\n let action = typeof config === 'string' ? config : _config.slide\n\n if (!data) {\n data = new Carousel(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config == 'number') {\n data.to(config)\n\n } else if (action) {\n data[action]()\n\n } else if (_config.interval) {\n data.pause()\n data.cycle()\n }\n })\n }\n\n static _dataApiClickHandler(event) {\n let selector = Util.getSelectorFromElement(this)\n\n if (!selector) {\n return\n }\n\n let target = $(selector)[0]\n\n if (!target || !$(target).hasClass(ClassName.CAROUSEL)) {\n return\n }\n\n let config = $.extend({}, $(target).data(), $(this).data())\n\n let slideIndex = this.getAttribute('data-slide-to')\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel._jQueryInterface.call($(target), config)\n\n if (slideIndex) {\n $(target).data(DATA_KEY).to(slideIndex)\n }\n\n event.preventDefault()\n }\n\n }\n\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler)\n\n $(window).on(Event.LOAD_DATA_API, function () {\n $(Selector.DATA_RIDE).each(function () {\n let $carousel = $(this)\n Carousel._jQueryInterface.call($carousel, $carousel.data())\n })\n })\n\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Carousel._jQueryInterface\n $.fn[NAME].Constructor = Carousel\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Carousel._jQueryInterface\n }\n\n return Carousel\n\n})(jQuery)\n\nexport default Carousel\n"]}
\ No newline at end of file diff --git a/js/dist/collapse.js b/js/dist/collapse.js new file mode 100644 index 0000000000..9db1b8e603 --- /dev/null +++ b/js/dist/collapse.js @@ -0,0 +1,361 @@ +'use strict'; + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): collapse.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Collapse = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'collapse'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.collapse'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 600; + + var Default = { + toggle: true, + parent: '' + }; + + var DefaultType = { + toggle: 'boolean', + parent: 'string' + }; + + var Event = { + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + '' + DATA_API_KEY + }; + + var ClassName = { + IN: 'in', + COLLAPSE: 'collapse', + COLLAPSING: 'collapsing', + COLLAPSED: 'collapsed' + }; + + var Dimension = { + WIDTH: 'width', + HEIGHT: 'height' + }; + + var Selector = { + ACTIVES: '.panel > .in, .panel > .collapsing', + DATA_TOGGLE: '[data-toggle="collapse"]' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Collapse = (function () { + function Collapse(element, config) { + _classCallCheck(this, Collapse); + + this._isTransitioning = false; + this._element = element; + this._config = this._getConfig(config); + this._triggerArray = $.makeArray($('[data-toggle="collapse"][href="#' + element.id + '"],' + ('[data-toggle="collapse"][data-target="#' + element.id + '"]'))); + + this._parent = this._config.parent ? this._getParent() : null; + + if (!this._config.parent) { + this._addAriaAndCollapsedClass(this._element, this._triggerArray); + } + + if (this._config.toggle) { + this.toggle(); + } + } + + _createClass(Collapse, [{ + key: 'toggle', + + // public + + value: function toggle() { + if ($(this._element).hasClass(ClassName.IN)) { + this.hide(); + } else { + this.show(); + } + } + }, { + key: 'show', + value: function show() { + var _this = this; + + if (this._isTransitioning || $(this._element).hasClass(ClassName.IN)) { + return; + } + + var actives = undefined; + var activesData = undefined; + + if (this._parent) { + actives = $.makeArray($(Selector.ACTIVES)); + if (!actives.length) { + actives = null; + } + } + + if (actives) { + activesData = $(actives).data(DATA_KEY); + if (activesData && activesData._isTransitioning) { + return; + } + } + + var startEvent = $.Event(Event.SHOW); + $(this._element).trigger(startEvent); + if (startEvent.isDefaultPrevented()) { + return; + } + + if (actives) { + Collapse._jQueryInterface.call($(actives), 'hide'); + if (!activesData) { + $(actives).data(DATA_KEY, null); + } + } + + var dimension = this._getDimension(); + + $(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING); + + this._element.style[dimension] = 0; + this._element.setAttribute('aria-expanded', true); + + if (this._triggerArray.length) { + $(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true); + } + + this.setTransitioning(true); + + var complete = function complete() { + $(_this._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).addClass(ClassName.IN); + + _this._element.style[dimension] = ''; + + _this.setTransitioning(false); + + $(_this._element).trigger(Event.SHOWN); + }; + + if (!Util.supportsTransitionEnd()) { + complete(); + return; + } + + var scrollSize = 'scroll' + (dimension[0].toUpperCase() + dimension.slice(1)); + + $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + + this._element.style[dimension] = this._element[scrollSize] + 'px'; + } + }, { + key: 'hide', + value: function hide() { + var _this2 = this; + + if (this._isTransitioning || !$(this._element).hasClass(ClassName.IN)) { + return; + } + + var startEvent = $.Event(Event.HIDE); + $(this._element).trigger(startEvent); + if (startEvent.isDefaultPrevented()) { + return; + } + + var dimension = this._getDimension(); + var offsetDimension = dimension === Dimension.WIDTH ? 'offsetWidth' : 'offsetHeight'; + + this._element.style[dimension] = this._element[offsetDimension] + 'px'; + + Util.reflow(this._element); + + $(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.IN); + + this._element.setAttribute('aria-expanded', false); + + if (this._triggerArray.length) { + $(this._triggerArray).addClass(ClassName.COLLAPSED).attr('aria-expanded', false); + } + + this.setTransitioning(true); + + var complete = function complete() { + _this2.setTransitioning(false); + $(_this2._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).trigger(Event.HIDDEN); + }; + + this._element.style[dimension] = 0; + + if (!Util.supportsTransitionEnd()) { + return complete(); + } + + $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + } + }, { + key: 'setTransitioning', + value: function setTransitioning(isTransitioning) { + this._isTransitioning = isTransitioning; + } + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + + this._config = null; + this._parent = null; + this._element = null; + this._triggerArray = null; + this._isTransitioning = null; + } + }, { + key: '_getConfig', + + // private + + value: function _getConfig(config) { + config = $.extend({}, Default, config); + config.toggle = !!config.toggle; // coerce string values + Util.typeCheckConfig(NAME, config, DefaultType); + return config; + } + }, { + key: '_getDimension', + value: function _getDimension() { + var hasWidth = $(this._element).hasClass(Dimension.WIDTH); + return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT; + } + }, { + key: '_getParent', + value: function _getParent() { + var _this3 = this; + + var parent = $(this._config.parent)[0]; + var selector = '[data-toggle="collapse"][data-parent="' + this._config.parent + '"]'; + + $(parent).find(selector).each(function (i, element) { + _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]); + }); + + return parent; + } + }, { + key: '_addAriaAndCollapsedClass', + value: function _addAriaAndCollapsedClass(element, triggerArray) { + if (element) { + var isOpen = $(element).hasClass(ClassName.IN); + element.setAttribute('aria-expanded', isOpen); + + if (triggerArray.length) { + $(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen); + } + } + } + }], [{ + key: 'VERSION', + + // getters + + get: function () { + return VERSION; + } + }, { + key: 'Default', + get: function () { + return Default; + } + }, { + key: '_getTargetFromElement', + + // static + + value: function _getTargetFromElement(element) { + var selector = Util.getSelectorFromElement(element); + return selector ? $(selector)[0] : null; + } + }, { + key: '_jQueryInterface', + value: function _jQueryInterface(config) { + return this.each(function () { + var $this = $(this); + var data = $this.data(DATA_KEY); + var _config = $.extend({}, Default, $this.data(), typeof config === 'object' && config); + + if (!data && _config.toggle && /show|hide/.test(config)) { + _config.toggle = false; + } + + if (!data) { + data = new Collapse(this, _config); + $this.data(DATA_KEY, data); + } + + if (typeof config === 'string') { + data[config](); + } + }); + } + }]); + + return Collapse; + })(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + event.preventDefault(); + + var target = Collapse._getTargetFromElement(this); + + var data = $(target).data(DATA_KEY); + var config = data ? 'toggle' : $(this).data(); + + Collapse._jQueryInterface.call($(target), config); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Collapse._jQueryInterface; + $.fn[NAME].Constructor = Collapse; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Collapse._jQueryInterface; + }; + + return Collapse; +})(jQuery); +//# sourceMappingURL=collapse.js.map
\ No newline at end of file diff --git a/js/dist/collapse.js.map b/js/dist/collapse.js.map new file mode 100644 index 0000000000..abd2bac68a --- /dev/null +++ b/js/dist/collapse.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["js/src/collapse.js"],"names":[],"mappings":"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","file":"js/src/collapse.js","sourcesContent":["import Util from './util'\n\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Collapse = (($) => {\n\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'collapse'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.collapse'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const TRANSITION_DURATION = 600\n\n const Default = {\n toggle : true,\n parent : ''\n }\n\n const DefaultType = {\n toggle : 'boolean',\n parent : 'string'\n }\n\n const Event = {\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n IN : 'in',\n COLLAPSE : 'collapse',\n COLLAPSING : 'collapsing',\n COLLAPSED : 'collapsed'\n }\n\n const Dimension = {\n WIDTH : 'width',\n HEIGHT : 'height'\n }\n\n const Selector = {\n ACTIVES : '.panel > .in, .panel > .collapsing',\n DATA_TOGGLE : '[data-toggle=\"collapse\"]'\n }\n\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Collapse {\n\n constructor(element, config) {\n this._isTransitioning = false\n this._element = element\n this._config = this._getConfig(config)\n this._triggerArray = $.makeArray($(\n `[data-toggle=\"collapse\"][href=\"#${element.id}\"],` +\n `[data-toggle=\"collapse\"][data-target=\"#${element.id}\"]`\n ))\n\n this._parent = this._config.parent ? this._getParent() : null\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n\n // getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n\n // public\n\n toggle() {\n if ($(this._element).hasClass(ClassName.IN)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning ||\n $(this._element).hasClass(ClassName.IN)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = $.makeArray($(Selector.ACTIVES))\n if (!actives.length) {\n actives = null\n }\n }\n\n if (actives) {\n activesData = $(actives).data(DATA_KEY)\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n let startEvent = $.Event(Event.SHOW)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n if (actives) {\n Collapse._jQueryInterface.call($(actives), 'hide')\n if (!activesData) {\n $(actives).data(DATA_KEY, null)\n }\n }\n\n let dimension = this._getDimension()\n\n $(this._element)\n .removeClass(ClassName.COLLAPSE)\n .addClass(ClassName.COLLAPSING)\n\n this._element.style[dimension] = 0\n this._element.setAttribute('aria-expanded', true)\n\n if (this._triggerArray.length) {\n $(this._triggerArray)\n .removeClass(ClassName.COLLAPSED)\n .attr('aria-expanded', true)\n }\n\n this.setTransitioning(true)\n\n let complete = () => {\n $(this._element)\n .removeClass(ClassName.COLLAPSING)\n .addClass(ClassName.COLLAPSE)\n .addClass(ClassName.IN)\n\n this._element.style[dimension] = ''\n\n this.setTransitioning(false)\n\n $(this._element).trigger(Event.SHOWN)\n }\n\n if (!Util.supportsTransitionEnd()) {\n complete()\n return\n }\n\n let scrollSize = 'scroll'\n + (dimension[0].toUpperCase()\n + dimension.slice(1))\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(TRANSITION_DURATION)\n\n this._element.style[dimension] = this._element[scrollSize] + 'px'\n }\n\n hide() {\n if (this._isTransitioning ||\n !$(this._element).hasClass(ClassName.IN)) {\n return\n }\n\n let startEvent = $.Event(Event.HIDE)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n let dimension = this._getDimension()\n let offsetDimension = dimension === Dimension.WIDTH ?\n 'offsetWidth' : 'offsetHeight'\n\n this._element.style[dimension] = this._element[offsetDimension] + 'px'\n\n Util.reflow(this._element)\n\n $(this._element)\n .addClass(ClassName.COLLAPSING)\n .removeClass(ClassName.COLLAPSE)\n .removeClass(ClassName.IN)\n\n this._element.setAttribute('aria-expanded', false)\n\n if (this._triggerArray.length) {\n $(this._triggerArray)\n .addClass(ClassName.COLLAPSED)\n .attr('aria-expanded', false)\n }\n\n this.setTransitioning(true)\n\n let complete = () => {\n this.setTransitioning(false)\n $(this._element)\n .removeClass(ClassName.COLLAPSING)\n .addClass(ClassName.COLLAPSE)\n .trigger(Event.HIDDEN)\n }\n\n this._element.style[dimension] = 0\n\n if (!Util.supportsTransitionEnd()) {\n return complete()\n }\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(TRANSITION_DURATION)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._parent = null\n this._element = null\n this._triggerArray = null\n this._isTransitioning = null\n }\n\n\n // private\n\n _getConfig(config) {\n config = $.extend({}, Default, config)\n config.toggle = !!config.toggle // coerce string values\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n let hasWidth = $(this._element).hasClass(Dimension.WIDTH)\n return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT\n }\n\n _getParent() {\n let parent = $(this._config.parent)[0]\n let selector =\n `[data-toggle=\"collapse\"][data-parent=\"${this._config.parent}\"]`\n\n $(parent).find(selector).each((i, element) => {\n this._addAriaAndCollapsedClass(\n Collapse._getTargetFromElement(element),\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n if (element) {\n let isOpen = $(element).hasClass(ClassName.IN)\n element.setAttribute('aria-expanded', isOpen)\n\n if (triggerArray.length) {\n $(triggerArray)\n .toggleClass(ClassName.COLLAPSED, !isOpen)\n .attr('aria-expanded', isOpen)\n }\n }\n }\n\n\n // static\n\n static _getTargetFromElement(element) {\n let selector = Util.getSelectorFromElement(element)\n return selector ? $(selector)[0] : null\n }\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let $this = $(this)\n let data = $this.data(DATA_KEY)\n let _config = $.extend(\n {},\n Default,\n $this.data(),\n typeof config === 'object' && config\n )\n\n if (!data && _config.toggle && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n if (!data) {\n data = new Collapse(this, _config)\n $this.data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n data[config]()\n }\n })\n }\n\n }\n\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n event.preventDefault()\n\n let target = Collapse._getTargetFromElement(this)\n\n let data = $(target).data(DATA_KEY)\n let config = data ? 'toggle' : $(this).data()\n\n Collapse._jQueryInterface.call($(target), config)\n })\n\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Collapse._jQueryInterface\n $.fn[NAME].Constructor = Collapse\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Collapse._jQueryInterface\n }\n\n return Collapse\n\n})(jQuery)\n\nexport default Collapse\n"]}
\ No newline at end of file diff --git a/js/dist/dropdown.js b/js/dist/dropdown.js new file mode 100644 index 0000000000..2ab5cf700d --- /dev/null +++ b/js/dist/dropdown.js @@ -0,0 +1,281 @@ +'use strict'; + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): dropdown.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Dropdown = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'dropdown'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.dropdown'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + CLICK: 'click' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + '' + DATA_API_KEY, + KEYDOWN_DATA_API: 'keydown' + EVENT_KEY + '' + DATA_API_KEY + }; + + var ClassName = { + BACKDROP: 'dropdown-backdrop', + DISABLED: 'disabled', + OPEN: 'open' + }; + + var Selector = { + BACKDROP: '.dropdown-backdrop', + DATA_TOGGLE: '[data-toggle="dropdown"]', + FORM_CHILD: '.dropdown form', + ROLE_MENU: '[role="menu"]', + ROLE_LISTBOX: '[role="listbox"]', + NAVBAR_NAV: '.navbar-nav', + VISIBLE_ITEMS: '[role="menu"] li:not(.disabled) a, ' + '[role="listbox"] li:not(.disabled) a' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Dropdown = (function () { + function Dropdown(element) { + _classCallCheck(this, Dropdown); + + this._element = element; + + this._addEventListeners(); + } + + _createClass(Dropdown, [{ + key: 'toggle', + + // public + + value: function toggle() { + if (this.disabled || $(this).hasClass(ClassName.DISABLED)) { + return; + } + + var parent = Dropdown._getParentFromElement(this); + var isActive = $(parent).hasClass(ClassName.OPEN); + + Dropdown._clearMenus(); + + if (isActive) { + return false; + } + + if ('ontouchstart' in document.documentElement && !$(parent).closest(Selector.NAVBAR_NAV).length) { + + // if mobile we use a backdrop because click events don't delegate + var dropdown = document.createElement('div'); + dropdown.className = ClassName.BACKDROP; + $(dropdown).insertBefore(this); + $(dropdown).on('click', Dropdown._clearMenus); + } + + var relatedTarget = { relatedTarget: this }; + var showEvent = $.Event(Event.SHOW, relatedTarget); + + $(parent).trigger(showEvent); + + if (showEvent.isDefaultPrevented()) { + return; + } + + this.focus(); + this.setAttribute('aria-expanded', 'true'); + + $(parent).toggleClass(ClassName.OPEN); + $(parent).trigger(Event.SHOWN, relatedTarget); + + return false; + } + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + $(this._element).off(EVENT_KEY); + this._element = null; + } + }, { + key: '_addEventListeners', + + // private + + value: function _addEventListeners() { + $(this._element).on(Event.CLICK, this.toggle); + } + }], [{ + key: 'VERSION', + + // getters + + get: function () { + return VERSION; + } + }, { + key: '_jQueryInterface', + + // static + + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + + if (!data) { + $(this).data(DATA_KEY, data = new Dropdown(this)); + } + + if (typeof config === 'string') { + data[config].call(this); + } + }); + } + }, { + key: '_clearMenus', + value: function _clearMenus(event) { + if (event && event.which === 3) { + return; + } + + var backdrop = $(Selector.BACKDROP)[0]; + if (backdrop) { + backdrop.parentNode.removeChild(backdrop); + } + + var toggles = $.makeArray($(Selector.DATA_TOGGLE)); + + for (var i = 0; i < toggles.length; i++) { + var _parent = Dropdown._getParentFromElement(toggles[i]); + var relatedTarget = { relatedTarget: toggles[i] }; + + if (!$(_parent).hasClass(ClassName.OPEN)) { + continue; + } + + if (event && event.type === 'click' && /input|textarea/i.test(event.target.tagName) && $.contains(_parent, event.target)) { + continue; + } + + var hideEvent = $.Event(Event.HIDE, relatedTarget); + $(_parent).trigger(hideEvent); + if (hideEvent.isDefaultPrevented()) { + continue; + } + + toggles[i].setAttribute('aria-expanded', 'false'); + + $(_parent).removeClass(ClassName.OPEN).trigger(Event.HIDDEN, relatedTarget); + } + } + }, { + key: '_getParentFromElement', + value: function _getParentFromElement(element) { + var parent = undefined; + var selector = Util.getSelectorFromElement(element); + + if (selector) { + parent = $(selector)[0]; + } + + return parent || element.parentNode; + } + }, { + key: '_dataApiKeydownHandler', + value: function _dataApiKeydownHandler(event) { + if (!/(38|40|27|32)/.test(event.which) || /input|textarea/i.test(event.target.tagName)) { + return; + } + + event.preventDefault(); + event.stopPropagation(); + + if (this.disabled || $(this).hasClass(ClassName.DISABLED)) { + return; + } + + var parent = Dropdown._getParentFromElement(this); + var isActive = $(parent).hasClass(ClassName.OPEN); + + if (!isActive && event.which !== 27 || isActive && event.which === 27) { + + if (event.which === 27) { + var toggle = $(parent).find(Selector.DATA_TOGGLE)[0]; + $(toggle).trigger('focus'); + } + + $(this).trigger('click'); + return; + } + + var items = $.makeArray($(Selector.VISIBLE_ITEMS)); + + items = items.filter(function (item) { + return item.offsetWidth || item.offsetHeight; + }); + + if (!items.length) { + return; + } + + var index = items.indexOf(event.target); + + if (event.which === 38 && index > 0) index--; // up + if (event.which === 40 && index < items.length - 1) index++; // down + if (! ~index) index = 0; + + items[index].focus(); + } + }]); + + return Dropdown; + })(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.ROLE_MENU, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.ROLE_LISTBOX, Dropdown._dataApiKeydownHandler).on(Event.CLICK_DATA_API, Dropdown._clearMenus).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, Dropdown.prototype.toggle).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) { + e.stopPropagation(); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Dropdown._jQueryInterface; + $.fn[NAME].Constructor = Dropdown; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Dropdown._jQueryInterface; + }; + + return Dropdown; +})(jQuery); +//# sourceMappingURL=dropdown.js.map
\ No newline at end of file diff --git a/js/dist/dropdown.js.map b/js/dist/dropdown.js.map new file mode 100644 index 0000000000..fa59184e94 --- /dev/null +++ b/js/dist/dropdown.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["js/src/dropdown.js"],"names":[],"mappings":"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","file":"js/src/dropdown.js","sourcesContent":["import Util from './util'\n\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Dropdown = (($) => {\n\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'dropdown'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.dropdown'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n\n const Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`,\n KEYDOWN_DATA_API : `keydown${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n BACKDROP : 'dropdown-backdrop',\n DISABLED : 'disabled',\n OPEN : 'open'\n }\n\n const Selector = {\n BACKDROP : '.dropdown-backdrop',\n DATA_TOGGLE : '[data-toggle=\"dropdown\"]',\n FORM_CHILD : '.dropdown form',\n ROLE_MENU : '[role=\"menu\"]',\n ROLE_LISTBOX : '[role=\"listbox\"]',\n NAVBAR_NAV : '.navbar-nav',\n VISIBLE_ITEMS : '[role=\"menu\"] li:not(.disabled) a, '\n + '[role=\"listbox\"] li:not(.disabled) a'\n }\n\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Dropdown {\n\n constructor(element) {\n this._element = element\n\n this._addEventListeners()\n }\n\n\n // getters\n\n static get VERSION() {\n return VERSION\n }\n\n\n // public\n\n toggle() {\n if (this.disabled || $(this).hasClass(ClassName.DISABLED)) {\n return\n }\n\n let parent = Dropdown._getParentFromElement(this)\n let isActive = $(parent).hasClass(ClassName.OPEN)\n\n Dropdown._clearMenus()\n\n if (isActive) {\n return false\n }\n\n if ('ontouchstart' in document.documentElement &&\n (!$(parent).closest(Selector.NAVBAR_NAV).length)) {\n\n // if mobile we use a backdrop because click events don't delegate\n let dropdown = document.createElement('div')\n dropdown.className = ClassName.BACKDROP\n $(dropdown).insertBefore(this)\n $(dropdown).on('click', Dropdown._clearMenus)\n }\n\n let relatedTarget = { relatedTarget : this }\n let showEvent = $.Event(Event.SHOW, relatedTarget)\n\n $(parent).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented()) {\n return\n }\n\n this.focus()\n this.setAttribute('aria-expanded', 'true')\n\n $(parent).toggleClass(ClassName.OPEN)\n $(parent).trigger(Event.SHOWN, relatedTarget)\n\n return false\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._element).off(EVENT_KEY)\n this._element = null\n }\n\n\n // private\n\n _addEventListeners() {\n $(this._element).on(Event.CLICK, this.toggle)\n }\n\n\n // static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n\n if (!data) {\n $(this).data(DATA_KEY, (data = new Dropdown(this)))\n }\n\n if (typeof config === 'string') {\n data[config].call(this)\n }\n })\n }\n\n static _clearMenus(event) {\n if (event && event.which === 3) {\n return\n }\n\n let backdrop = $(Selector.BACKDROP)[0]\n if (backdrop) {\n backdrop.parentNode.removeChild(backdrop)\n }\n\n let toggles = $.makeArray($(Selector.DATA_TOGGLE))\n\n for (let i = 0; i < toggles.length; i++) {\n let parent = Dropdown._getParentFromElement(toggles[i])\n let relatedTarget = { relatedTarget : toggles[i] }\n\n if (!$(parent).hasClass(ClassName.OPEN)) {\n continue\n }\n\n if (event && event.type === 'click' &&\n (/input|textarea/i.test(event.target.tagName)) &&\n ($.contains(parent, event.target))) {\n continue\n }\n\n let hideEvent = $.Event(Event.HIDE, relatedTarget)\n $(parent).trigger(hideEvent)\n if (hideEvent.isDefaultPrevented()) {\n continue\n }\n\n toggles[i].setAttribute('aria-expanded', 'false')\n\n $(parent)\n .removeClass(ClassName.OPEN)\n .trigger(Event.HIDDEN, relatedTarget)\n }\n }\n\n static _getParentFromElement(element) {\n let parent\n let selector = Util.getSelectorFromElement(element)\n\n if (selector) {\n parent = $(selector)[0]\n }\n\n return parent || element.parentNode\n }\n\n static _dataApiKeydownHandler(event) {\n if (!/(38|40|27|32)/.test(event.which) ||\n /input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (this.disabled || $(this).hasClass(ClassName.DISABLED)) {\n return\n }\n\n let parent = Dropdown._getParentFromElement(this)\n let isActive = $(parent).hasClass(ClassName.OPEN)\n\n if ((!isActive && event.which !== 27) ||\n (isActive && event.which === 27)) {\n\n if (event.which === 27) {\n let toggle = $(parent).find(Selector.DATA_TOGGLE)[0]\n $(toggle).trigger('focus')\n }\n\n $(this).trigger('click')\n return\n }\n\n let items = $.makeArray($(Selector.VISIBLE_ITEMS))\n\n items = items.filter((item) => {\n return item.offsetWidth || item.offsetHeight\n })\n\n if (!items.length) {\n return\n }\n\n let index = items.indexOf(event.target)\n\n if (event.which === 38 && index > 0) index-- // up\n if (event.which === 40 && index < items.length - 1) index++ // down\n if (!~index) index = 0\n\n items[index].focus()\n }\n\n }\n\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document)\n .on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler)\n .on(Event.KEYDOWN_DATA_API, Selector.ROLE_MENU, Dropdown._dataApiKeydownHandler)\n .on(Event.KEYDOWN_DATA_API, Selector.ROLE_LISTBOX, Dropdown._dataApiKeydownHandler)\n .on(Event.CLICK_DATA_API, Dropdown._clearMenus)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, Dropdown.prototype.toggle)\n .on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) {\n e.stopPropagation()\n })\n\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Dropdown._jQueryInterface\n $.fn[NAME].Constructor = Dropdown\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Dropdown._jQueryInterface\n }\n\n return Dropdown\n\n})(jQuery)\n\nexport default Dropdown\n"]}
\ No newline at end of file diff --git a/js/dist/modal.js b/js/dist/modal.js new file mode 100644 index 0000000000..2a63877259 --- /dev/null +++ b/js/dist/modal.js @@ -0,0 +1,529 @@ +'use strict'; + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): modal.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Modal = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'modal'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.modal'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 300; + var BACKDROP_TRANSITION_DURATION = 150; + + var Default = { + backdrop: true, + keyboard: true, + focus: true, + show: true + }; + + var DefaultType = { + backdrop: '(boolean|string)', + keyboard: 'boolean', + focus: 'boolean', + show: 'boolean' + }; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + FOCUSIN: 'focusin' + EVENT_KEY, + RESIZE: 'resize' + EVENT_KEY, + CLICK_DISMISS: 'click.dismiss' + EVENT_KEY, + KEYDOWN_DISMISS: 'keydown.dismiss' + EVENT_KEY, + MOUSEUP_DISMISS: 'mouseup.dismiss' + EVENT_KEY, + MOUSEDOWN_DISMISS: 'mousedown.dismiss' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + '' + DATA_API_KEY + }; + + var ClassName = { + BACKDROP: 'modal-backdrop', + OPEN: 'modal-open', + FADE: 'fade', + IN: 'in' + }; + + var Selector = { + DIALOG: '.modal-dialog', + DATA_TOGGLE: '[data-toggle="modal"]', + DATA_DISMISS: '[data-dismiss="modal"]', + SCROLLBAR_MEASURER: 'modal-scrollbar-measure' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Modal = (function () { + function Modal(element, config) { + _classCallCheck(this, Modal); + + this._config = this._getConfig(config); + this._element = element; + this._dialog = $(element).find(Selector.DIALOG)[0]; + this._backdrop = null; + this._isShown = false; + this._isBodyOverflowing = false; + this._ignoreBackdropClick = false; + this._originalBodyPadding = 0; + this._scrollbarWidth = 0; + } + + _createClass(Modal, [{ + key: 'toggle', + + // public + + value: function toggle(relatedTarget) { + return this._isShown ? this.hide() : this.show(relatedTarget); + } + }, { + key: 'show', + value: function show(relatedTarget) { + var _this = this; + + var showEvent = $.Event(Event.SHOW, { + relatedTarget: relatedTarget + }); + + $(this._element).trigger(showEvent); + + if (this._isShown || showEvent.isDefaultPrevented()) { + return; + } + + this._isShown = true; + + this._checkScrollbar(); + this._setScrollbar(); + + $(document.body).addClass(ClassName.OPEN); + + this._setEscapeEvent(); + this._setResizeEvent(); + + $(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, $.proxy(this.hide, this)); + + $(this._dialog).on(Event.MOUSEDOWN_DISMISS, function () { + $(_this._element).one(Event.MOUSEUP_DISMISS, function (event) { + if ($(event.target).is(_this._element)) { + that._ignoreBackdropClick = true; + } + }); + }); + + this._showBackdrop($.proxy(this._showElement, this, relatedTarget)); + } + }, { + key: 'hide', + value: function hide(event) { + if (event) { + event.preventDefault(); + } + + var hideEvent = $.Event(Event.HIDE); + + $(this._element).trigger(hideEvent); + + if (!this._isShown || hideEvent.isDefaultPrevented()) { + return; + } + + this._isShown = false; + + this._setEscapeEvent(); + this._setResizeEvent(); + + $(document).off(Event.FOCUSIN); + + $(this._element).removeClass(ClassName.IN); + + $(this._element).off(Event.CLICK_DISMISS); + $(this._dialog).off(Event.MOUSEDOWN_DISMISS); + + if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) { + + $(this._element).one(Util.TRANSITION_END, $.proxy(this._hideModal, this)).emulateTransitionEnd(TRANSITION_DURATION); + } else { + this._hideModal(); + } + } + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + + $(window).off(EVENT_KEY); + $(document).off(EVENT_KEY); + $(this._element).off(EVENT_KEY); + $(this._backdrop).off(EVENT_KEY); + + this._config = null; + this._element = null; + this._dialog = null; + this._backdrop = null; + this._isShown = null; + this._isBodyOverflowing = null; + this._ignoreBackdropClick = null; + this._originalBodyPadding = null; + this._scrollbarWidth = null; + } + }, { + key: '_getConfig', + + // private + + value: function _getConfig(config) { + config = $.extend({}, Default, config); + Util.typeCheckConfig(NAME, config, DefaultType); + return config; + } + }, { + key: '_showElement', + value: function _showElement(relatedTarget) { + var _this2 = this; + + var transition = Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE); + + if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) { + // don't move modals dom position + document.body.appendChild(this._element); + } + + this._element.style.display = 'block'; + this._element.scrollTop = 0; + + if (transition) { + Util.reflow(this._element); + } + + $(this._element).addClass(ClassName.IN); + + if (this._config.focus) this._enforceFocus(); + + var shownEvent = $.Event(Event.SHOWN, { + relatedTarget: relatedTarget + }); + + var transitionComplete = function transitionComplete() { + if (_this2._config.focus) _this2._element.focus(); + $(_this2._element).trigger(shownEvent); + }; + + if (transition) { + $(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(TRANSITION_DURATION); + } else { + transitionComplete(); + } + } + }, { + key: '_enforceFocus', + value: function _enforceFocus() { + var _this3 = this; + + $(document).off(Event.FOCUSIN) // guard against infinite focus loop + .on(Event.FOCUSIN, function (event) { + if (_this3._element !== event.target && !$(_this3._element).has(event.target).length) { + _this3._element.focus(); + } + }); + } + }, { + key: '_setEscapeEvent', + value: function _setEscapeEvent() { + var _this4 = this; + + if (this._isShown && this._config.keyboard) { + $(this._element).on(Event.KEYDOWN_DISMISS, function (event) { + if (event.which === 27) { + _this4.hide(); + } + }); + } else if (!this._isShown) { + $(this._element).off(Event.KEYDOWN_DISMISS); + } + } + }, { + key: '_setResizeEvent', + value: function _setResizeEvent() { + if (this._isShown) { + $(window).on(Event.RESIZE, $.proxy(this._handleUpdate, this)); + } else { + $(window).off(Event.RESIZE); + } + } + }, { + key: '_hideModal', + value: function _hideModal() { + var _this5 = this; + + this._element.style.display = 'none'; + this._showBackdrop(function () { + $(document.body).removeClass(ClassName.OPEN); + _this5._resetAdjustments(); + _this5._resetScrollbar(); + $(_this5._element).trigger(Event.HIDDEN); + }); + } + }, { + key: '_removeBackdrop', + value: function _removeBackdrop() { + if (this._backdrop) { + $(this._backdrop).remove(); + this._backdrop = null; + } + } + }, { + key: '_showBackdrop', + value: function _showBackdrop(callback) { + var _this6 = this; + + var animate = $(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : ''; + + if (this._isShown && this._config.backdrop) { + var doAnimate = Util.supportsTransitionEnd() && animate; + + this._backdrop = document.createElement('div'); + this._backdrop.className = ClassName.BACKDROP; + + if (animate) { + $(this._backdrop).addClass(animate); + } + + $(this._backdrop).appendTo(this.$body); + + $(this._element).on(Event.CLICK_DISMISS, function (event) { + if (_this6._ignoreBackdropClick) { + _this6._ignoreBackdropClick = false; + return; + } + if (event.target !== event.currentTarget) { + return; + } + if (_this6._config.backdrop === 'static') { + _this6._element.focus(); + } else { + _this6.hide(); + } + }); + + if (doAnimate) { + Util.reflow(this._backdrop); + } + + $(this._backdrop).addClass(ClassName.IN); + + if (!callback) { + return; + } + + if (!doAnimate) { + callback(); + return; + } + + $(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION); + } else if (!this._isShown && this._backdrop) { + $(this._backdrop).removeClass(ClassName.IN); + + var callbackRemove = function callbackRemove() { + _this6._removeBackdrop(); + if (callback) { + callback(); + } + }; + + if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) { + $(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION); + } else { + callbackRemove(); + } + } else if (callback) { + callback(); + } + } + }, { + key: '_handleUpdate', + + // ---------------------------------------------------------------------- + // the following methods are used to handle overflowing modals + // todo (fat): these should probably be refactored out of modal.js + // ---------------------------------------------------------------------- + + value: function _handleUpdate() { + this._adjustDialog(); + } + }, { + key: '_adjustDialog', + value: function _adjustDialog() { + var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; + + if (!this._isBodyOverflowing && isModalOverflowing) { + this._element.style.paddingLeft = this._scrollbarWidth + 'px'; + } + + if (this._isBodyOverflowing && !isModalOverflowing) { + this._element.style.paddingRight = this._scrollbarWidth + 'px'; + } + } + }, { + key: '_resetAdjustments', + value: function _resetAdjustments() { + this._element.style.paddingLeft = ''; + this._element.style.paddingRight = ''; + } + }, { + key: '_checkScrollbar', + value: function _checkScrollbar() { + var fullWindowWidth = window.innerWidth; + if (!fullWindowWidth) { + // workaround for missing window.innerWidth in IE8 + var documentElementRect = document.documentElement.getBoundingClientRect(); + fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left); + } + this._isBodyOverflowing = document.body.clientWidth < fullWindowWidth; + this._scrollbarWidth = this._getScrollbarWidth(); + } + }, { + key: '_setScrollbar', + value: function _setScrollbar() { + var bodyPadding = parseInt($(document.body).css('padding-right') || 0, 10); + + this._originalBodyPadding = document.body.style.paddingRight || ''; + + if (this._isBodyOverflowing) { + document.body.style.paddingRight = bodyPadding + this._scrollbarWidth + 'px'; + } + } + }, { + key: '_resetScrollbar', + value: function _resetScrollbar() { + document.body.style.paddingRight = this._originalBodyPadding; + } + }, { + key: '_getScrollbarWidth', + value: function _getScrollbarWidth() { + // thx d.walsh + var scrollDiv = document.createElement('div'); + scrollDiv.className = Selector.SCROLLBAR_MEASURER; + document.body.appendChild(scrollDiv); + var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth; + document.body.removeChild(scrollDiv); + return scrollbarWidth; + } + }], [{ + key: 'VERSION', + + // getters + + get: function () { + return VERSION; + } + }, { + key: 'Default', + get: function () { + return Default; + } + }, { + key: '_jQueryInterface', + + // static + + value: function _jQueryInterface(config, relatedTarget) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = $.extend({}, Modal.Default, $(this).data(), typeof config === 'object' && config); + + if (!data) { + data = new Modal(this, _config); + $(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + data[config](relatedTarget); + } else if (_config.show) { + data.show(relatedTarget); + } + }); + } + }]); + + return Modal; + })(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + var _this7 = this; + + var target = undefined; + var selector = Util.getSelectorFromElement(this); + + if (selector) { + target = $(selector)[0]; + } + + var config = $(target).data(DATA_KEY) ? 'toggle' : $.extend({}, $(target).data(), $(this).data()); + + if (this.tagName === 'A') { + event.preventDefault(); + } + + var $target = $(target).one(Event.SHOW, function (showEvent) { + if (showEvent.isDefaultPrevented()) { + // only register focus restorer if modal will actually get shown + return; + } + + $target.one(Event.HIDDEN, function () { + if ($(_this7).is(':visible')) { + _this7.focus(); + } + }); + }); + + Modal._jQueryInterface.call($(target), config, this); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Modal._jQueryInterface; + $.fn[NAME].Constructor = Modal; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Modal._jQueryInterface; + }; + + return Modal; +})(jQuery); +//# sourceMappingURL=modal.js.map
\ No newline at end of file diff --git a/js/dist/modal.js.map b/js/dist/modal.js.map new file mode 100644 index 0000000000..5d10cd6d37 --- /dev/null +++ b/js/dist/modal.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["js/src/modal.js"],"names":[],"mappings":"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","file":"js/src/modal.js","sourcesContent":["import Util from './util'\n\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Modal = (($) => {\n\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'modal'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.modal'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const TRANSITION_DURATION = 300\n const BACKDROP_TRANSITION_DURATION = 150\n\n const Default = {\n backdrop : true,\n keyboard : true,\n focus : true,\n show : true\n }\n\n const DefaultType = {\n backdrop : '(boolean|string)',\n keyboard : 'boolean',\n focus : 'boolean',\n show : 'boolean'\n }\n\n const Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n RESIZE : `resize${EVENT_KEY}`,\n CLICK_DISMISS : `click.dismiss${EVENT_KEY}`,\n KEYDOWN_DISMISS : `keydown.dismiss${EVENT_KEY}`,\n MOUSEUP_DISMISS : `mouseup.dismiss${EVENT_KEY}`,\n MOUSEDOWN_DISMISS : `mousedown.dismiss${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n BACKDROP : 'modal-backdrop',\n OPEN : 'modal-open',\n FADE : 'fade',\n IN : 'in'\n }\n\n const Selector = {\n DIALOG : '.modal-dialog',\n DATA_TOGGLE : '[data-toggle=\"modal\"]',\n DATA_DISMISS : '[data-dismiss=\"modal\"]',\n SCROLLBAR_MEASURER : 'modal-scrollbar-measure'\n }\n\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Modal {\n\n constructor(element, config) {\n this._config = this._getConfig(config)\n this._element = element\n this._dialog = $(element).find(Selector.DIALOG)[0]\n this._backdrop = null\n this._isShown = false\n this._isBodyOverflowing = false\n this._ignoreBackdropClick = false\n this._originalBodyPadding = 0\n this._scrollbarWidth = 0\n }\n\n\n // getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n\n // public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n let showEvent = $.Event(Event.SHOW, {\n relatedTarget: relatedTarget\n })\n\n $(this._element).trigger(showEvent)\n\n if (this._isShown || showEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = true\n\n this._checkScrollbar()\n this._setScrollbar()\n\n $(document.body).addClass(ClassName.OPEN)\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(this._element).on(\n Event.CLICK_DISMISS,\n Selector.DATA_DISMISS,\n $.proxy(this.hide, this)\n )\n\n $(this._dialog).on(Event.MOUSEDOWN_DISMISS, () => {\n $(this._element).one(Event.MOUSEUP_DISMISS, (event) => {\n if ($(event.target).is(this._element)) {\n that._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(\n $.proxy(this._showElement, this, relatedTarget)\n )\n }\n\n hide(event) {\n if (event) {\n event.preventDefault()\n }\n\n let hideEvent = $.Event(Event.HIDE)\n\n $(this._element).trigger(hideEvent)\n\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = false\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(document).off(Event.FOCUSIN)\n\n $(this._element).removeClass(ClassName.IN)\n\n $(this._element).off(Event.CLICK_DISMISS)\n $(this._dialog).off(Event.MOUSEDOWN_DISMISS)\n\n if (Util.supportsTransitionEnd() &&\n ($(this._element).hasClass(ClassName.FADE))) {\n\n $(this._element)\n .one(Util.TRANSITION_END, $.proxy(this._hideModal, this))\n .emulateTransitionEnd(TRANSITION_DURATION)\n } else {\n this._hideModal()\n }\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n\n $(window).off(EVENT_KEY)\n $(document).off(EVENT_KEY)\n $(this._element).off(EVENT_KEY)\n $(this._backdrop).off(EVENT_KEY)\n\n this._config = null\n this._element = null\n this._dialog = null\n this._backdrop = null\n this._isShown = null\n this._isBodyOverflowing = null\n this._ignoreBackdropClick = null\n this._originalBodyPadding = null\n this._scrollbarWidth = null\n }\n\n\n // private\n\n _getConfig(config) {\n config = $.extend({}, Default, config)\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _showElement(relatedTarget) {\n let transition = Util.supportsTransitionEnd() &&\n $(this._element).hasClass(ClassName.FADE)\n\n if (!this._element.parentNode ||\n (this._element.parentNode.nodeType !== Node.ELEMENT_NODE)) {\n // don't move modals dom position\n document.body.appendChild(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.scrollTop = 0\n\n if (transition) {\n Util.reflow(this._element)\n }\n\n $(this._element).addClass(ClassName.IN)\n\n if (this._config.focus) this._enforceFocus()\n\n let shownEvent = $.Event(Event.SHOWN, {\n relatedTarget: relatedTarget\n })\n\n let transitionComplete = () => {\n if (this._config.focus) this._element.focus()\n $(this._element).trigger(shownEvent)\n }\n\n if (transition) {\n $(this._dialog)\n .one(Util.TRANSITION_END, transitionComplete)\n .emulateTransitionEnd(TRANSITION_DURATION)\n } else {\n transitionComplete()\n }\n }\n\n _enforceFocus() {\n $(document)\n .off(Event.FOCUSIN) // guard against infinite focus loop\n .on(Event.FOCUSIN, (event) => {\n if (this._element !== event.target &&\n (!$(this._element).has(event.target).length)) {\n this._element.focus()\n }\n })\n }\n\n _setEscapeEvent() {\n if (this._isShown && this._config.keyboard) {\n $(this._element).on(Event.KEYDOWN_DISMISS, (event) => {\n if (event.which === 27) {\n this.hide()\n }\n })\n\n } else if (!this._isShown) {\n $(this._element).off(Event.KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n $(window).on(Event.RESIZE, $.proxy(this._handleUpdate, this))\n } else {\n $(window).off(Event.RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._showBackdrop(() => {\n $(document.body).removeClass(ClassName.OPEN)\n this._resetAdjustments()\n this._resetScrollbar()\n $(this._element).trigger(Event.HIDDEN)\n })\n }\n\n _removeBackdrop() {\n if (this._backdrop) {\n $(this._backdrop).remove()\n this._backdrop = null\n }\n }\n\n _showBackdrop(callback) {\n let animate = $(this._element).hasClass(ClassName.FADE) ?\n ClassName.FADE : ''\n\n if (this._isShown && this._config.backdrop) {\n let doAnimate = Util.supportsTransitionEnd() && animate\n\n this._backdrop = document.createElement('div')\n this._backdrop.className = ClassName.BACKDROP\n\n if (animate) {\n $(this._backdrop).addClass(animate)\n }\n\n $(this._backdrop).appendTo(this.$body)\n\n $(this._element).on(Event.CLICK_DISMISS, (event) => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n if (event.target !== event.currentTarget) {\n return\n }\n if (this._config.backdrop === 'static') {\n this._element.focus()\n } else {\n this.hide()\n }\n })\n\n if (doAnimate) {\n Util.reflow(this._backdrop)\n }\n\n $(this._backdrop).addClass(ClassName.IN)\n\n if (!callback) {\n return\n }\n\n if (!doAnimate) {\n callback()\n return\n }\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callback)\n .emulateTransitionEnd(BACKDROP_TRANSITION_DURATION)\n\n } else if (!this._isShown && this._backdrop) {\n $(this._backdrop).removeClass(ClassName.IN)\n\n let callbackRemove = () => {\n this._removeBackdrop()\n if (callback) {\n callback()\n }\n }\n\n if (Util.supportsTransitionEnd() &&\n ($(this._element).hasClass(ClassName.FADE))) {\n $(this._backdrop)\n .one(Util.TRANSITION_END, callbackRemove)\n .emulateTransitionEnd(BACKDROP_TRANSITION_DURATION)\n } else {\n callbackRemove()\n }\n\n } else if (callback) {\n callback()\n }\n }\n\n\n // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // todo (fat): these should probably be refactored out of modal.js\n // ----------------------------------------------------------------------\n\n _handleUpdate() {\n this._adjustDialog()\n }\n\n _adjustDialog() {\n let isModalOverflowing =\n this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = this._scrollbarWidth + 'px'\n }\n\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = this._scrollbarWidth + 'px'\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n _checkScrollbar() {\n let fullWindowWidth = window.innerWidth\n if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8\n let documentElementRect = document.documentElement.getBoundingClientRect()\n fullWindowWidth =\n documentElementRect.right - Math.abs(documentElementRect.left)\n }\n this._isBodyOverflowing = document.body.clientWidth < fullWindowWidth\n this._scrollbarWidth = this._getScrollbarWidth()\n }\n\n _setScrollbar() {\n let bodyPadding = parseInt(\n $(document.body).css('padding-right') || 0,\n 10\n )\n\n this._originalBodyPadding = document.body.style.paddingRight || ''\n\n if (this._isBodyOverflowing) {\n document.body.style.paddingRight =\n bodyPadding + this._scrollbarWidth + 'px'\n }\n }\n\n _resetScrollbar() {\n document.body.style.paddingRight = this._originalBodyPadding\n }\n\n _getScrollbarWidth() { // thx d.walsh\n let scrollDiv = document.createElement('div')\n scrollDiv.className = Selector.SCROLLBAR_MEASURER\n document.body.appendChild(scrollDiv)\n let scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n document.body.removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n\n // static\n\n static _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n let _config = $.extend(\n {},\n Modal.Default,\n $(this).data(),\n typeof config === 'object' && config\n )\n\n if (!data) {\n data = new Modal(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n data[config](relatedTarget)\n\n } else if (_config.show) {\n data.show(relatedTarget)\n }\n })\n }\n\n }\n\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n let target\n let selector = Util.getSelectorFromElement(this)\n\n if (selector) {\n target = $(selector)[0]\n }\n\n let config = $(target).data(DATA_KEY) ?\n 'toggle' : $.extend({}, $(target).data(), $(this).data())\n\n if (this.tagName === 'A') {\n event.preventDefault()\n }\n\n let $target = $(target).one(Event.SHOW, (showEvent) => {\n if (showEvent.isDefaultPrevented()) {\n // only register focus restorer if modal will actually get shown\n return\n }\n\n $target.one(Event.HIDDEN, () => {\n if ($(this).is(':visible')) {\n this.focus()\n }\n })\n })\n\n Modal._jQueryInterface.call($(target), config, this)\n })\n\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Modal._jQueryInterface\n $.fn[NAME].Constructor = Modal\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Modal._jQueryInterface\n }\n\n return Modal\n\n})(jQuery)\n\nexport default Modal\n"]}
\ No newline at end of file diff --git a/js/dist/popover.js b/js/dist/popover.js new file mode 100644 index 0000000000..8a30917c3b --- /dev/null +++ b/js/dist/popover.js @@ -0,0 +1,204 @@ +'use strict'; + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; } + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): popover.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Popover = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'popover'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.popover'; + var EVENT_KEY = '.' + DATA_KEY; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + + var Default = $.extend({}, Tooltip.Default, { + placement: 'right', + trigger: 'click', + content: '', + template: '<div class="popover" role="tooltip">' + '<div class="popover-arrow"></div>' + '<h3 class="popover-title"></h3>' + '<div class="popover-content"></div></div>' + }); + + var DefaultType = $.extend({}, Tooltip.DefaultType, { + content: '(string|function)' + }); + + var ClassName = { + FADE: 'fade', + IN: 'in' + }; + + var Selector = { + TITLE: '.popover-title', + CONTENT: '.popover-content', + ARROW: '.popover-arrow' + }; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + INSERTED: 'inserted' + EVENT_KEY, + CLICK: 'click' + EVENT_KEY, + FOCUSIN: 'focusin' + EVENT_KEY, + FOCUSOUT: 'focusout' + EVENT_KEY, + MOUSEENTER: 'mouseenter' + EVENT_KEY, + MOUSELEAVE: 'mouseleave' + EVENT_KEY + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Popover = (function (_Tooltip) { + function Popover() { + _classCallCheck(this, Popover); + + if (_Tooltip != null) { + _Tooltip.apply(this, arguments); + } + } + + _inherits(Popover, _Tooltip); + + _createClass(Popover, [{ + key: 'isWithContent', + + // overrides + + value: function isWithContent() { + return this.getTitle() || this._getContent(); + } + }, { + key: 'getTipElement', + value: function getTipElement() { + return this.tip = this.tip || $(this.config.template)[0]; + } + }, { + key: 'setContent', + value: function setContent() { + var tip = this.getTipElement(); + var title = this.getTitle(); + var content = this._getContent(); + var titleElement = $(tip).find(Selector.TITLE)[0]; + + if (titleElement) { + titleElement[this.config.html ? 'innerHTML' : 'innerText'] = title; + } + + // we use append for html objects to maintain js events + $(tip).find(Selector.CONTENT).children().detach().end()[this.config.html ? typeof content === 'string' ? 'html' : 'append' : 'text'](content); + + $(tip).removeClass(ClassName.FADE).removeClass(ClassName.IN); + + this.cleanupTether(); + } + }, { + key: '_getContent', + + // private + + value: function _getContent() { + return this.element.getAttribute('data-content') || (typeof this.config.content == 'function' ? this.config.content.call(this.element) : this.config.content); + } + }], [{ + key: 'VERSION', + + // getters + + get: function () { + return VERSION; + } + }, { + key: 'Default', + get: function () { + return Default; + } + }, { + key: 'NAME', + get: function () { + return NAME; + } + }, { + key: 'DATA_KEY', + get: function () { + return DATA_KEY; + } + }, { + key: 'Event', + get: function () { + return Event; + } + }, { + key: 'EVENT_KEY', + get: function () { + return EVENT_KEY; + } + }, { + key: 'DefaultType', + get: function () { + return DefaultType; + } + }, { + key: '_jQueryInterface', + + // static + + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = typeof config === 'object' ? config : null; + + if (!data && /destroy|hide/.test(config)) { + return; + } + + if (!data) { + data = new Popover(this, _config); + $(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + data[config](); + } + }); + } + }]); + + return Popover; + })(Tooltip); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Popover._jQueryInterface; + $.fn[NAME].Constructor = Popover; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Popover._jQueryInterface; + }; + + return Popover; +})(jQuery); +//# sourceMappingURL=popover.js.map
\ No newline at end of file diff --git a/js/dist/popover.js.map b/js/dist/popover.js.map new file mode 100644 index 0000000000..edc1301017 --- /dev/null +++ b/js/dist/popover.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["js/src/popover.js"],"names":[],"mappings":"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","file":"js/src/popover.js","sourcesContent":["import Tooltip from './tooltip'\n\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Popover = (($) => {\n\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'popover'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.popover'\n const EVENT_KEY = `.${DATA_KEY}`\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n\n const Default = $.extend({}, Tooltip.Default, {\n placement : 'right',\n trigger : 'click',\n content : '',\n template : '<div class=\"popover\" role=\"tooltip\">'\n + '<div class=\"popover-arrow\"></div>'\n + '<h3 class=\"popover-title\"></h3>'\n + '<div class=\"popover-content\"></div></div>'\n })\n\n const DefaultType = $.extend({}, Tooltip.DefaultType, {\n content : '(string|function)'\n })\n\n const ClassName = {\n FADE : 'fade',\n IN : 'in'\n }\n\n const Selector = {\n TITLE : '.popover-title',\n CONTENT : '.popover-content',\n ARROW : '.popover-arrow'\n }\n\n const Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n INSERTED : `inserted${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n FOCUSOUT : `focusout${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`\n }\n\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Popover extends Tooltip {\n\n\n // getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n\n // overrides\n\n isWithContent() {\n return this.getTitle() || this._getContent()\n }\n\n getTipElement() {\n return (this.tip = this.tip || $(this.config.template)[0])\n }\n\n setContent() {\n let tip = this.getTipElement()\n let title = this.getTitle()\n let content = this._getContent()\n let titleElement = $(tip).find(Selector.TITLE)[0]\n\n if (titleElement) {\n titleElement[\n this.config.html ? 'innerHTML' : 'innerText'\n ] = title\n }\n\n // we use append for html objects to maintain js events\n $(tip).find(Selector.CONTENT).children().detach().end()[\n this.config.html ?\n (typeof content === 'string' ? 'html' : 'append') : 'text'\n ](content)\n\n $(tip)\n .removeClass(ClassName.FADE)\n .removeClass(ClassName.IN)\n\n this.cleanupTether()\n }\n\n // private\n\n _getContent() {\n return this.element.getAttribute('data-content')\n || (typeof this.config.content == 'function' ?\n this.config.content.call(this.element) :\n this.config.content)\n }\n\n\n // static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n let _config = typeof config === 'object' ? config : null\n\n if (!data && /destroy|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Popover(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n data[config]()\n }\n })\n }\n }\n\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Popover._jQueryInterface\n $.fn[NAME].Constructor = Popover\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Popover._jQueryInterface\n }\n\n return Popover\n\n})(jQuery)\n\nexport default Popover\n"]}
\ No newline at end of file diff --git a/js/dist/scrollspy.js b/js/dist/scrollspy.js new file mode 100644 index 0000000000..b214f86eeb --- /dev/null +++ b/js/dist/scrollspy.js @@ -0,0 +1,315 @@ +'use strict'; + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): scrollspy.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var ScrollSpy = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'scrollspy'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.scrollspy'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + + var Default = { + offset: 10, + method: 'auto', + target: '' + }; + + var DefaultType = { + offset: 'number', + method: 'string', + target: '(string|element)' + }; + + var Event = { + ACTIVATE: 'activate' + EVENT_KEY, + SCROLL: 'scroll' + EVENT_KEY, + LOAD_DATA_API: 'load' + EVENT_KEY + '' + DATA_API_KEY + }; + + var ClassName = { + DROPDOWN_MENU: 'dropdown-menu', + ACTIVE: 'active' + }; + + var Selector = { + DATA_SPY: '[data-spy="scroll"]', + ACTIVE: '.active', + LI: 'li', + LI_DROPDOWN: 'li.dropdown', + NAV_ANCHORS: '.nav li > a' + }; + + var OffsetMethod = { + OFFSET: 'offset', + POSITION: 'position' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var ScrollSpy = (function () { + function ScrollSpy(element, config) { + _classCallCheck(this, ScrollSpy); + + this._element = element; + this._scrollElement = element.tagName === 'BODY' ? window : element; + this._config = this._getConfig(config); + this._selector = '' + this._config.target + ' ' + Selector.NAV_ANCHORS; + this._offsets = []; + this._targets = []; + this._activeTarget = null; + this._scrollHeight = 0; + + $(this._scrollElement).on(Event.SCROLL, $.proxy(this._process, this)); + + this.refresh(); + this._process(); + } + + _createClass(ScrollSpy, [{ + key: 'refresh', + + // public + + value: function refresh() { + var _this = this; + + var autoMethod = this._scrollElement !== this._scrollElement.window ? OffsetMethod.POSITION : OffsetMethod.OFFSET; + + var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method; + + var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0; + + this._offsets = []; + this._targets = []; + + this._scrollHeight = this._getScrollHeight(); + + var targets = $.makeArray($(this._selector)); + + targets.map(function (element) { + var target = undefined; + var targetSelector = Util.getSelectorFromElement(element); + + if (targetSelector) { + target = $(targetSelector)[0]; + } + + if (target && (target.offsetWidth || target.offsetHeight)) { + // todo (fat): remove sketch reliance on jQuery position/offset + return [$(target)[offsetMethod]().top + offsetBase, targetSelector]; + } + }).filter(function (item) { + return item; + }).sort(function (a, b) { + return a[0] - b[0]; + }).forEach(function (item) { + _this._offsets.push(item[0]); + _this._targets.push(item[1]); + }); + } + }, { + key: 'dispose', + value: function dispose() { + $.removeData(this._element, DATA_KEY); + $(this._scrollElement).off(EVENT_KEY); + + this._element = null; + this._scrollElement = null; + this._config = null; + this._selector = null; + this._offsets = null; + this._targets = null; + this._activeTarget = null; + this._scrollHeight = null; + } + }, { + key: '_getConfig', + + // private + + value: function _getConfig(config) { + config = $.extend({}, Default, config); + + if (typeof config.target !== 'string') { + var id = $(config.target).attr('id'); + if (!id) { + id = Util.getUID(NAME); + $(config.target).attr('id', id); + } + config.target = '#' + id; + } + + Util.typeCheckConfig(NAME, config, DefaultType); + + return config; + } + }, { + key: '_getScrollTop', + value: function _getScrollTop() { + return this._scrollElement === window ? this._scrollElement.scrollY : this._scrollElement.scrollTop; + } + }, { + key: '_getScrollHeight', + value: function _getScrollHeight() { + return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); + } + }, { + key: '_process', + value: function _process() { + var scrollTop = this._getScrollTop() + this._config.offset; + var scrollHeight = this._getScrollHeight(); + var maxScroll = this._config.offset + scrollHeight - this._scrollElement.offsetHeight; + + if (this._scrollHeight !== scrollHeight) { + this.refresh(); + } + + if (scrollTop >= maxScroll) { + var target = this._targets[this._targets.length - 1]; + + if (this._activeTarget !== target) { + this._activate(target); + } + } + + if (this._activeTarget && scrollTop < this._offsets[0]) { + this._activeTarget = null; + this._clear(); + return; + } + + for (var i = this._offsets.length; i--;) { + var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (this._offsets[i + 1] === undefined || scrollTop < this._offsets[i + 1]); + + if (isActiveTarget) { + this._activate(this._targets[i]); + } + } + } + }, { + key: '_activate', + value: function _activate(target) { + this._activeTarget = target; + + this._clear(); + + var selector = '' + this._selector + '[data-target="' + target + '"],' + ('' + this._selector + '[href="' + target + '"]'); + + // todo (fat): getting all the raw li's up the tree is not great. + var parentListItems = $(selector).parents(Selector.LI); + + for (var i = parentListItems.length; i--;) { + $(parentListItems[i]).addClass(ClassName.ACTIVE); + + var itemParent = parentListItems[i].parentNode; + + if (itemParent && $(itemParent).hasClass(ClassName.DROPDOWN_MENU)) { + var closestDropdown = $(itemParent).closest(Selector.LI_DROPDOWN)[0]; + $(closestDropdown).addClass(ClassName.ACTIVE); + } + } + + $(this._scrollElement).trigger(Event.ACTIVATE, { + relatedTarget: target + }); + } + }, { + key: '_clear', + value: function _clear() { + var activeParents = $(this._selector).parentsUntil(this._config.target, Selector.ACTIVE); + + for (var i = activeParents.length; i--;) { + $(activeParents[i]).removeClass(ClassName.ACTIVE); + } + } + }], [{ + key: 'VERSION', + + // getters + + get: function () { + return VERSION; + } + }, { + key: 'Default', + get: function () { + return Default; + } + }, { + key: '_jQueryInterface', + + // static + + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = typeof config === 'object' && config || null; + + if (!data) { + data = new ScrollSpy(this, _config); + $(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + data[config](); + } + }); + } + }]); + + return ScrollSpy; + })(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(window).on(Event.LOAD_DATA_API, function () { + var scrollSpys = $.makeArray($(Selector.DATA_SPY)); + + for (var i = scrollSpys.length; i--;) { + var $spy = $(scrollSpys[i]); + ScrollSpy._jQueryInterface.call($spy, $spy.data()); + } + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = ScrollSpy._jQueryInterface; + $.fn[NAME].Constructor = ScrollSpy; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return ScrollSpy._jQueryInterface; + }; + + return ScrollSpy; +})(jQuery); +//# sourceMappingURL=scrollspy.js.map
\ No newline at end of file diff --git a/js/dist/scrollspy.js.map b/js/dist/scrollspy.js.map new file mode 100644 index 0000000000..bde96eda32 --- /dev/null +++ b/js/dist/scrollspy.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["js/src/scrollspy.js"],"names":[],"mappings":"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","file":"js/src/scrollspy.js","sourcesContent":["import Util from './util'\n\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst ScrollSpy = (($) => {\n\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'scrollspy'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.scrollspy'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n\n const Default = {\n offset : 10,\n method : 'auto',\n target : ''\n }\n\n const DefaultType = {\n offset : 'number',\n method : 'string',\n target : '(string|element)'\n }\n\n const Event = {\n ACTIVATE : `activate${EVENT_KEY}`,\n SCROLL : `scroll${EVENT_KEY}`,\n LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n DROPDOWN_MENU : 'dropdown-menu',\n ACTIVE : 'active'\n }\n\n const Selector = {\n DATA_SPY : '[data-spy=\"scroll\"]',\n ACTIVE : '.active',\n LI : 'li',\n LI_DROPDOWN : 'li.dropdown',\n NAV_ANCHORS : '.nav li > a'\n }\n\n const OffsetMethod = {\n OFFSET : 'offset',\n POSITION : 'position'\n }\n\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class ScrollSpy {\n\n constructor(element, config) {\n this._element = element\n this._scrollElement = element.tagName === 'BODY' ? window : element\n this._config = this._getConfig(config)\n this._selector = `${this._config.target} ${Selector.NAV_ANCHORS}`\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n $(this._scrollElement).on(Event.SCROLL, $.proxy(this._process, this))\n\n this.refresh()\n this._process()\n }\n\n\n // getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n\n // public\n\n refresh() {\n let autoMethod = this._scrollElement !== this._scrollElement.window ?\n OffsetMethod.POSITION : OffsetMethod.OFFSET\n\n let offsetMethod = this._config.method === 'auto' ?\n autoMethod : this._config.method\n\n let offsetBase = offsetMethod === OffsetMethod.POSITION ?\n this._getScrollTop() : 0\n\n this._offsets = []\n this._targets = []\n\n this._scrollHeight = this._getScrollHeight()\n\n let targets = $.makeArray($(this._selector))\n\n targets\n .map((element) => {\n let target\n let targetSelector = Util.getSelectorFromElement(element)\n\n if (targetSelector) {\n target = $(targetSelector)[0]\n }\n\n if (target && (target.offsetWidth || target.offsetHeight)) {\n // todo (fat): remove sketch reliance on jQuery position/offset\n return [\n $(target)[offsetMethod]().top + offsetBase,\n targetSelector\n ]\n }\n })\n .filter((item) => item)\n .sort((a, b) => a[0] - b[0])\n .forEach((item) => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._scrollElement).off(EVENT_KEY)\n\n this._element = null\n this._scrollElement = null\n this._config = null\n this._selector = null\n this._offsets = null\n this._targets = null\n this._activeTarget = null\n this._scrollHeight = null\n }\n\n\n // private\n\n _getConfig(config) {\n config = $.extend({}, Default, config)\n\n if (typeof config.target !== 'string') {\n let id = $(config.target).attr('id')\n if (!id) {\n id = Util.getUID(NAME)\n $(config.target).attr('id', id)\n }\n config.target = `#${id}`\n }\n\n Util.typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window ?\n this._scrollElement.scrollY : this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _process() {\n let scrollTop = this._getScrollTop() + this._config.offset\n let scrollHeight = this._getScrollHeight()\n let maxScroll = this._config.offset\n + scrollHeight\n - this._scrollElement.offsetHeight\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n let target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0]) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n for (let i = this._offsets.length; i--;) {\n let isActiveTarget = this._activeTarget !== this._targets[i]\n && scrollTop >= this._offsets[i]\n && (this._offsets[i + 1] === undefined ||\n scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n let selector =\n `${this._selector}[data-target=\"${target}\"],` +\n `${this._selector}[href=\"${target}\"]`\n\n // todo (fat): getting all the raw li's up the tree is not great.\n let parentListItems = $(selector).parents(Selector.LI)\n\n for (let i = parentListItems.length; i--;) {\n $(parentListItems[i]).addClass(ClassName.ACTIVE)\n\n let itemParent = parentListItems[i].parentNode\n\n if (itemParent && $(itemParent).hasClass(ClassName.DROPDOWN_MENU)) {\n let closestDropdown = $(itemParent)\n .closest(Selector.LI_DROPDOWN)[0]\n $(closestDropdown).addClass(ClassName.ACTIVE)\n }\n }\n\n $(this._scrollElement).trigger(Event.ACTIVATE, {\n relatedTarget: target\n })\n }\n\n _clear() {\n let activeParents = $(this._selector).parentsUntil(\n this._config.target,\n Selector.ACTIVE\n )\n\n for (let i = activeParents.length; i--;) {\n $(activeParents[i]).removeClass(ClassName.ACTIVE)\n }\n }\n\n\n // static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n let _config = typeof config === 'object' && config || null\n\n if (!data) {\n data = new ScrollSpy(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n data[config]()\n }\n })\n }\n\n\n }\n\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(window).on(Event.LOAD_DATA_API, function () {\n let scrollSpys = $.makeArray($(Selector.DATA_SPY))\n\n for (let i = scrollSpys.length; i--;) {\n let $spy = $(scrollSpys[i])\n ScrollSpy._jQueryInterface.call($spy, $spy.data())\n }\n })\n\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = ScrollSpy._jQueryInterface\n $.fn[NAME].Constructor = ScrollSpy\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return ScrollSpy._jQueryInterface\n }\n\n return ScrollSpy\n\n})(jQuery)\n\nexport default ScrollSpy\n"]}
\ No newline at end of file diff --git a/js/dist/tab.js b/js/dist/tab.js new file mode 100644 index 0000000000..95c5619400 --- /dev/null +++ b/js/dist/tab.js @@ -0,0 +1,273 @@ +'use strict'; + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): tab.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Tab = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'tab'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.tab'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 150; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + '' + DATA_API_KEY + }; + + var ClassName = { + DROPDOWN_MENU: 'dropdown-menu', + ACTIVE: 'active', + FADE: 'fade', + IN: 'in' + }; + + var Selector = { + A: 'a', + LI: 'li', + LI_DROPDOWN: 'li.dropdown', + UL: 'ul:not(.dropdown-menu)', + FADE_CHILD: '> .fade', + ACTIVE: '.active', + ACTIVE_CHILD: '> .active', + DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"]', + DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu > .active' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Tab = (function () { + function Tab(element) { + _classCallCheck(this, Tab); + + this._element = element; + } + + _createClass(Tab, [{ + key: 'show', + + // public + + value: function show() { + var _this = this; + + if (this._element.parentNode && this._element.parentNode.nodeType == Node.ELEMENT_NODE && $(this._element).parent().hasClass(ClassName.ACTIVE)) { + return; + } + + var target = undefined; + var previous = undefined; + var ulElement = $(this._element).closest(Selector.UL)[0]; + var selector = Util.getSelectorFromElement(this._element); + + if (ulElement) { + previous = $.makeArray($(ulElement).find(Selector.ACTIVE)); + previous = previous[previous.length - 1]; + + if (previous) { + previous = $(previous).find(Selector.A)[0]; + } + } + + var hideEvent = $.Event(Event.HIDE, { + relatedTarget: this._element + }); + + var showEvent = $.Event(Event.SHOW, { + relatedTarget: previous + }); + + if (previous) { + $(previous).trigger(hideEvent); + } + + $(this._element).trigger(showEvent); + + if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) { + return; + } + + if (selector) { + target = $(selector)[0]; + } + + this._activate($(this._element).closest(Selector.LI)[0], ulElement); + + var complete = function complete() { + var hiddenEvent = $.Event(Event.HIDDEN, { + relatedTarget: _this._element + }); + + var shownEvent = $.Event(Event.SHOWN, { + relatedTarget: previous + }); + + $(previous).trigger(hiddenEvent); + $(_this._element).trigger(shownEvent); + }; + + if (target) { + this._activate(target, target.parentNode, complete); + } else { + complete(); + } + } + }, { + key: 'dispose', + value: function dispose() { + $.removeClass(this._element, DATA_KEY); + this._element = null; + } + }, { + key: '_activate', + + // private + + value: function _activate(element, container, callback) { + var active = $(container).find(Selector.ACTIVE_CHILD)[0]; + var isTransitioning = callback && Util.supportsTransitionEnd() && (active && $(active).hasClass(ClassName.FADE) || !!$(container).find(Selector.FADE_CHILD)[0]); + + var complete = $.proxy(this._transitionComplete, this, element, active, isTransitioning, callback); + + if (active && isTransitioning) { + $(active).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + } else { + complete(); + } + + if (active) { + $(active).removeClass(ClassName.IN); + } + } + }, { + key: '_transitionComplete', + value: function _transitionComplete(element, active, isTransitioning, callback) { + if (active) { + $(active).removeClass(ClassName.ACTIVE); + + var dropdownChild = $(active).find(Selector.DROPDOWN_ACTIVE_CHILD)[0]; + if (dropdownChild) { + $(dropdownChild).removeClass(ClassName.ACTIVE); + } + + var activeToggle = $(active).find(Selector.DATA_TOGGLE)[0]; + if (activeToggle) { + activeToggle.setAttribute('aria-expanded', false); + } + } + + $(element).addClass(ClassName.ACTIVE); + + var elementToggle = $(element).find(Selector.DATA_TOGGLE)[0]; + if (elementToggle) { + elementToggle.setAttribute('aria-expanded', true); + } + + if (isTransitioning) { + Util.reflow(element); + $(element).addClass(ClassName.IN); + } else { + $(element).removeClass(ClassName.FADE); + } + + if (element.parentNode && $(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) { + + var dropdownElement = $(element).closest(Selector.LI_DROPDOWN)[0]; + if (dropdownElement) { + $(dropdownElement).addClass(ClassName.ACTIVE); + } + + elementToggle = $(element).find(Selector.DATA_TOGGLE)[0]; + if (elementToggle) { + elementToggle.setAttribute('aria-expanded', true); + } + } + + if (callback) { + callback(); + } + } + }], [{ + key: 'VERSION', + + // getters + + get: function () { + return VERSION; + } + }, { + key: '_jQueryInterface', + + // static + + value: function _jQueryInterface(config) { + return this.each(function () { + var $this = $(this); + var data = $this.data(DATA_KEY); + + if (!data) { + data = data = new Tab(this); + $this.data(DATA_KEY, data); + } + + if (typeof config === 'string') { + data[config](); + } + }); + } + }]); + + return Tab; + })(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + event.preventDefault(); + Tab._jQueryInterface.call($(this), 'show'); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Tab._jQueryInterface; + $.fn[NAME].Constructor = Tab; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Tab._jQueryInterface; + }; + + return Tab; +})(jQuery); +//# sourceMappingURL=tab.js.map
\ No newline at end of file diff --git a/js/dist/tab.js.map b/js/dist/tab.js.map new file mode 100644 index 0000000000..82a86ecb16 --- /dev/null +++ b/js/dist/tab.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["js/src/tab.js"],"names":[],"mappings":"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","file":"js/src/tab.js","sourcesContent":["import Util from './util'\n\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Tab = (($) => {\n\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'tab'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.tab'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const TRANSITION_DURATION = 150\n\n const Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n DROPDOWN_MENU : 'dropdown-menu',\n ACTIVE : 'active',\n FADE : 'fade',\n IN : 'in'\n }\n\n const Selector = {\n A : 'a',\n LI : 'li',\n LI_DROPDOWN : 'li.dropdown',\n UL : 'ul:not(.dropdown-menu)',\n FADE_CHILD : '> .fade',\n ACTIVE : '.active',\n ACTIVE_CHILD : '> .active',\n DATA_TOGGLE : '[data-toggle=\"tab\"], [data-toggle=\"pill\"]',\n DROPDOWN_ACTIVE_CHILD : '> .dropdown-menu > .active'\n }\n\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Tab {\n\n constructor(element) {\n this._element = element\n }\n\n\n // getters\n\n static get VERSION() {\n return VERSION\n }\n\n\n // public\n\n show() {\n if (this._element.parentNode &&\n (this._element.parentNode.nodeType == Node.ELEMENT_NODE) &&\n ($(this._element).parent().hasClass(ClassName.ACTIVE))) {\n return\n }\n\n let target\n let previous\n let ulElement = $(this._element).closest(Selector.UL)[0]\n let selector = Util.getSelectorFromElement(this._element)\n\n if (ulElement) {\n previous = $.makeArray($(ulElement).find(Selector.ACTIVE))\n previous = previous[previous.length - 1]\n\n if (previous) {\n previous = $(previous).find(Selector.A)[0]\n }\n }\n\n let hideEvent = $.Event(Event.HIDE, {\n relatedTarget: this._element\n })\n\n let showEvent = $.Event(Event.SHOW, {\n relatedTarget: previous\n })\n\n if (previous) {\n $(previous).trigger(hideEvent)\n }\n\n $(this._element).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented() ||\n (hideEvent.isDefaultPrevented())) {\n return\n }\n\n if (selector) {\n target = $(selector)[0]\n }\n\n this._activate(\n $(this._element).closest(Selector.LI)[0],\n ulElement\n )\n\n let complete = () => {\n let hiddenEvent = $.Event(Event.HIDDEN, {\n relatedTarget: this._element\n })\n\n let shownEvent = $.Event(Event.SHOWN, {\n relatedTarget: previous\n })\n\n $(previous).trigger(hiddenEvent)\n $(this._element).trigger(shownEvent)\n }\n\n if (target) {\n this._activate(target, target.parentNode, complete)\n } else {\n complete()\n }\n }\n\n dispose() {\n $.removeClass(this._element, DATA_KEY)\n this._element = null\n }\n\n\n // private\n\n _activate(element, container, callback) {\n let active = $(container).find(Selector.ACTIVE_CHILD)[0]\n let isTransitioning = callback\n && Util.supportsTransitionEnd()\n && ((active && $(active).hasClass(ClassName.FADE))\n || !!$(container).find(Selector.FADE_CHILD)[0])\n\n let complete = $.proxy(\n this._transitionComplete,\n this,\n element,\n active,\n isTransitioning,\n callback\n )\n\n if (active && isTransitioning) {\n $(active)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(TRANSITION_DURATION)\n\n } else {\n complete()\n }\n\n if (active) {\n $(active).removeClass(ClassName.IN)\n }\n }\n\n _transitionComplete(element, active, isTransitioning, callback) {\n if (active) {\n $(active).removeClass(ClassName.ACTIVE)\n\n let dropdownChild = $(active).find(\n Selector.DROPDOWN_ACTIVE_CHILD\n )[0]\n if (dropdownChild) {\n $(dropdownChild).removeClass(ClassName.ACTIVE)\n }\n\n let activeToggle = $(active).find(Selector.DATA_TOGGLE)[0]\n if (activeToggle) {\n activeToggle.setAttribute('aria-expanded', false)\n }\n }\n\n $(element).addClass(ClassName.ACTIVE)\n\n let elementToggle = $(element).find(Selector.DATA_TOGGLE)[0]\n if (elementToggle) {\n elementToggle.setAttribute('aria-expanded', true)\n }\n\n if (isTransitioning) {\n Util.reflow(element)\n $(element).addClass(ClassName.IN)\n } else {\n $(element).removeClass(ClassName.FADE)\n }\n\n if (element.parentNode &&\n ($(element.parentNode).hasClass(ClassName.DROPDOWN_MENU))) {\n\n let dropdownElement = $(element).closest(Selector.LI_DROPDOWN)[0]\n if (dropdownElement) {\n $(dropdownElement).addClass(ClassName.ACTIVE)\n }\n\n elementToggle = $(element).find(Selector.DATA_TOGGLE)[0]\n if (elementToggle) {\n elementToggle.setAttribute('aria-expanded', true)\n }\n }\n\n if (callback) {\n callback()\n }\n }\n\n\n // static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let $this = $(this)\n let data = $this.data(DATA_KEY)\n\n if (!data) {\n data = data = new Tab(this)\n $this.data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n data[config]()\n }\n })\n }\n\n }\n\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n event.preventDefault()\n Tab._jQueryInterface.call($(this), 'show')\n })\n\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Tab._jQueryInterface\n $.fn[NAME].Constructor = Tab\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tab._jQueryInterface\n }\n\n return Tab\n\n})(jQuery)\n\nexport default Tab\n"]}
\ No newline at end of file diff --git a/js/dist/tooltip.js b/js/dist/tooltip.js new file mode 100644 index 0000000000..864e0bb762 --- /dev/null +++ b/js/dist/tooltip.js @@ -0,0 +1,594 @@ +'use strict'; + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): tooltip.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Tooltip = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'tooltip'; + var VERSION = '4.0.0'; + var DATA_KEY = 'bs.tooltip'; + var EVENT_KEY = '.' + DATA_KEY; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 150; + var CLASS_PREFIX = 'bs-tether'; + + var Default = { + animation: true, + template: '<div class="tooltip" role="tooltip">' + '<div class="tooltip-arrow"></div>' + '<div class="tooltip-inner"></div></div>', + trigger: 'hover focus', + title: '', + delay: 0, + html: false, + selector: false, + placement: 'top', + offset: '0 0', + constraints: [] + }; + + var DefaultType = { + animation: 'boolean', + template: 'string', + title: '(string|function)', + trigger: 'string', + delay: '(number|object)', + html: 'boolean', + selector: '(string|boolean)', + placement: '(string|function)', + offset: 'string', + constraints: 'array' + }; + + var AttachmentMap = { + TOP: 'bottom center', + RIGHT: 'middle left', + BOTTOM: 'top center', + LEFT: 'middle right' + }; + + var HoverState = { + IN: 'in', + OUT: 'out' + }; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + INSERTED: 'inserted' + EVENT_KEY, + CLICK: 'click' + EVENT_KEY, + FOCUSIN: 'focusin' + EVENT_KEY, + FOCUSOUT: 'focusout' + EVENT_KEY, + MOUSEENTER: 'mouseenter' + EVENT_KEY, + MOUSELEAVE: 'mouseleave' + EVENT_KEY + }; + + var ClassName = { + FADE: 'fade', + IN: 'in' + }; + + var Selector = { + TOOLTIP: '.tooltip', + TOOLTIP_INNER: '.tooltip-inner' + }; + + var TetherClass = { + element: false, + enabled: false + }; + + var Trigger = { + HOVER: 'hover', + FOCUS: 'focus', + CLICK: 'click', + MANUAL: 'manual' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Tooltip = (function () { + function Tooltip(element, config) { + _classCallCheck(this, Tooltip); + + // private + this._isEnabled = true; + this._timeout = 0; + this._hoverState = ''; + this._activeTrigger = {}; + this._tether = null; + + // protected + this.element = element; + this.config = this._getConfig(config); + this.tip = null; + + this._setListeners(); + } + + _createClass(Tooltip, [{ + key: 'enable', + + // public + + value: function enable() { + this._isEnabled = true; + } + }, { + key: 'disable', + value: function disable() { + this._isEnabled = false; + } + }, { + key: 'toggleEnabled', + value: function toggleEnabled() { + this._isEnabled = !this._isEnabled; + } + }, { + key: 'toggle', + value: function toggle(event) { + var context = this; + var dataKey = this.constructor.DATA_KEY; + + if (event) { + context = $(event.currentTarget).data(dataKey); + + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $(event.currentTarget).data(dataKey, context); + } + + context._activeTrigger.click = !context._activeTrigger.click; + + if (context._isWithActiveTrigger()) { + context._enter(null, context); + } else { + context._leave(null, context); + } + } else { + $(context.getTipElement()).hasClass(ClassName.IN) ? context._leave(null, context) : context._enter(null, context); + } + } + }, { + key: 'dispose', + value: function dispose() { + clearTimeout(this._timeout); + + this.cleanupTether(); + + $.removeData(this.element, this.constructor.DATA_KEY); + + $(this.element).off(this.constructor.EVENT_KEY); + + if (this.tip) { + $(this.tip).remove(); + } + + this._isEnabled = null; + this._timeout = null; + this._hoverState = null; + this._activeTrigger = null; + this._tether = null; + + this.element = null; + this.config = null; + this.tip = null; + } + }, { + key: 'show', + value: function show() { + var _this = this; + + var showEvent = $.Event(this.constructor.Event.SHOW); + + if (this.isWithContent() && this._isEnabled) { + $(this.element).trigger(showEvent); + + var isInTheDom = $.contains(this.element.ownerDocument.documentElement, this.element); + + if (showEvent.isDefaultPrevented() || !isInTheDom) { + return; + } + + var tip = this.getTipElement(); + var tipId = Util.getUID(this.constructor.NAME); + + tip.setAttribute('id', tipId); + this.element.setAttribute('aria-describedby', tipId); + + this.setContent(); + + if (this.config.animation) { + $(tip).addClass(ClassName.FADE); + } + + var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement; + + var attachment = this._getAttachment(placement); + + $(tip).data(this.constructor.DATA_KEY, this).appendTo(document.body); + + $(this.element).trigger(this.constructor.Event.INSERTED); + + this._tether = new Tether({ + element: tip, + target: this.element, + attachment: attachment, + classes: TetherClass, + classPrefix: CLASS_PREFIX, + offset: this.config.offset, + constraints: this.config.constraints + }); + + Util.reflow(tip); + this._tether.position(); + + $(tip).addClass(ClassName.IN); + + var complete = function complete() { + var prevHoverState = _this._hoverState; + _this._hoverState = null; + + $(_this.element).trigger(_this.constructor.Event.SHOWN); + + if (prevHoverState === HoverState.OUT) { + _this._leave(null, _this); + } + }; + + Util.supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE) ? $(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(Tooltip._TRANSITION_DURATION) : complete(); + } + } + }, { + key: 'hide', + value: function hide(callback) { + var _this2 = this; + + var tip = this.getTipElement(); + var hideEvent = $.Event(this.constructor.Event.HIDE); + var complete = function complete() { + if (_this2._hoverState !== HoverState.IN && tip.parentNode) { + tip.parentNode.removeChild(tip); + } + + _this2.element.removeAttribute('aria-describedby'); + $(_this2.element).trigger(_this2.constructor.Event.HIDDEN); + _this2.cleanupTether(); + + if (callback) { + callback(); + } + }; + + $(this.element).trigger(hideEvent); + + if (hideEvent.isDefaultPrevented()) { + return; + } + + $(tip).removeClass(ClassName.IN); + + if (Util.supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE)) { + + $(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + } else { + complete(); + } + + this._hoverState = ''; + } + }, { + key: 'isWithContent', + + // protected + + value: function isWithContent() { + return !!this.getTitle(); + } + }, { + key: 'getTipElement', + value: function getTipElement() { + return this.tip = this.tip || $(this.config.template)[0]; + } + }, { + key: 'setContent', + value: function setContent() { + var tip = this.getTipElement(); + var title = this.getTitle(); + var method = this.config.html ? 'innerHTML' : 'innerText'; + + $(tip).find(Selector.TOOLTIP_INNER)[0][method] = title; + + $(tip).removeClass(ClassName.FADE).removeClass(ClassName.IN); + + this.cleanupTether(); + } + }, { + key: 'getTitle', + value: function getTitle() { + var title = this.element.getAttribute('data-original-title'); + + if (!title) { + title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title; + } + + return title; + } + }, { + key: 'cleanupTether', + value: function cleanupTether() { + if (this._tether) { + this._tether.destroy(); + + // clean up after tether's junk classes + // remove after they fix issue + // (https://github.com/HubSpot/tether/issues/36) + $(this.element).removeClass(this._removeTetherClasses); + $(this.tip).removeClass(this._removeTetherClasses); + } + } + }, { + key: '_getAttachment', + + // private + + value: function _getAttachment(placement) { + return AttachmentMap[placement.toUpperCase()]; + } + }, { + key: '_setListeners', + value: function _setListeners() { + var _this3 = this; + + var triggers = this.config.trigger.split(' '); + + triggers.forEach(function (trigger) { + if (trigger === 'click') { + $(_this3.element).on(_this3.constructor.Event.CLICK, _this3.config.selector, $.proxy(_this3.toggle, _this3)); + } else if (trigger !== Trigger.MANUAL) { + var eventIn = trigger == Trigger.HOVER ? _this3.constructor.Event.MOUSEENTER : _this3.constructor.Event.FOCUSIN; + var eventOut = trigger == Trigger.HOVER ? _this3.constructor.Event.MOUSELEAVE : _this3.constructor.Event.FOCUSOUT; + + $(_this3.element).on(eventIn, _this3.config.selector, $.proxy(_this3._enter, _this3)).on(eventOut, _this3.config.selector, $.proxy(_this3._leave, _this3)); + } + }); + + if (this.config.selector) { + this.config = $.extend({}, this.config, { + trigger: 'manual', + selector: '' + }); + } else { + this._fixTitle(); + } + } + }, { + key: '_removeTetherClasses', + value: function _removeTetherClasses(i, css) { + return ((css.baseVal || css).match(new RegExp('(^|\\s)' + CLASS_PREFIX + '-\\S+', 'g')) || []).join(' '); + } + }, { + key: '_fixTitle', + value: function _fixTitle() { + var titleType = typeof this.element.getAttribute('data-original-title'); + if (this.element.getAttribute('title') || titleType !== 'string') { + this.element.setAttribute('data-original-title', this.element.getAttribute('title') || ''); + this.element.setAttribute('title', ''); + } + } + }, { + key: '_enter', + value: function _enter(event, context) { + var dataKey = this.constructor.DATA_KEY; + + context = context || $(event.currentTarget).data(dataKey); + + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $(event.currentTarget).data(dataKey, context); + } + + if (event) { + context._activeTrigger[event.type == 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true; + } + + if ($(context.getTipElement()).hasClass(ClassName.IN) || context._hoverState === HoverState.IN) { + context._hoverState = HoverState.IN; + return; + } + + clearTimeout(context._timeout); + + context._hoverState = HoverState.IN; + + if (!context.config.delay || !context.config.delay.show) { + context.show(); + return; + } + + context._timeout = setTimeout(function () { + if (context._hoverState === HoverState.IN) { + context.show(); + } + }, context.config.delay.show); + } + }, { + key: '_leave', + value: function _leave(event, context) { + var dataKey = this.constructor.DATA_KEY; + + context = context || $(event.currentTarget).data(dataKey); + + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $(event.currentTarget).data(dataKey, context); + } + + if (event) { + context._activeTrigger[event.type == 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false; + } + + if (context._isWithActiveTrigger()) { + return; + } + + clearTimeout(context._timeout); + + context._hoverState = HoverState.OUT; + + if (!context.config.delay || !context.config.delay.hide) { + context.hide(); + return; + } + + context._timeout = setTimeout(function () { + if (context._hoverState === HoverState.OUT) { + context.hide(); + } + }, context.config.delay.hide); + } + }, { + key: '_isWithActiveTrigger', + value: function _isWithActiveTrigger() { + for (var trigger in this._activeTrigger) { + if (this._activeTrigger[trigger]) { + return true; + } + } + + return false; + } + }, { + key: '_getConfig', + value: function _getConfig(config) { + config = $.extend({}, this.constructor.Default, $(this.element).data(), config); + + if (config.delay && typeof config.delay === 'number') { + config.delay = { + show: config.delay, + hide: config.delay + }; + } + + Util.typeCheckConfig(NAME, config, this.constructor.DefaultType); + + return config; + } + }, { + key: '_getDelegateConfig', + value: function _getDelegateConfig() { + var config = {}; + + if (this.config) { + for (var key in this.config) { + var value = this.config[key]; + if (this.constructor.Default[key] !== value) { + config[key] = value; + } + } + } + + return config; + } + }], [{ + key: 'VERSION', + + // getters + + get: function () { + return VERSION; + } + }, { + key: 'Default', + get: function () { + return Default; + } + }, { + key: 'NAME', + get: function () { + return NAME; + } + }, { + key: 'DATA_KEY', + get: function () { + return DATA_KEY; + } + }, { + key: 'Event', + get: function () { + return Event; + } + }, { + key: 'EVENT_KEY', + get: function () { + return EVENT_KEY; + } + }, { + key: 'DefaultType', + get: function () { + return DefaultType; + } + }, { + key: '_jQueryInterface', + + // static + + value: function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = typeof config === 'object' ? config : null; + + if (!data && /destroy|hide/.test(config)) { + return; + } + + if (!data) { + data = new Tooltip(this, _config); + $(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + data[config](); + } + }); + } + }]); + + return Tooltip; + })(); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Tooltip._jQueryInterface; + $.fn[NAME].Constructor = Tooltip; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Tooltip._jQueryInterface; + }; + + return Tooltip; +})(jQuery); +//# sourceMappingURL=tooltip.js.map
\ No newline at end of file diff --git a/js/dist/tooltip.js.map b/js/dist/tooltip.js.map new file mode 100644 index 0000000000..e823424cb7 --- /dev/null +++ b/js/dist/tooltip.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["js/src/tooltip.js"],"names":[],"mappings":"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","file":"js/src/tooltip.js","sourcesContent":["import Util from './util'\n\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Tooltip = (($) => {\n\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'tooltip'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.tooltip'\n const EVENT_KEY = `.${DATA_KEY}`\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const TRANSITION_DURATION = 150\n const CLASS_PREFIX = 'bs-tether'\n\n const Default = {\n animation : true,\n template : '<div class=\"tooltip\" role=\"tooltip\">'\n + '<div class=\"tooltip-arrow\"></div>'\n + '<div class=\"tooltip-inner\"></div></div>',\n trigger : 'hover focus',\n title : '',\n delay : 0,\n html : false,\n selector : false,\n placement : 'top',\n offset : '0 0',\n constraints : []\n }\n\n const DefaultType = {\n animation : 'boolean',\n template : 'string',\n title : '(string|function)',\n trigger : 'string',\n delay : '(number|object)',\n html : 'boolean',\n selector : '(string|boolean)',\n placement : '(string|function)',\n offset : 'string',\n constraints : 'array'\n }\n\n const AttachmentMap = {\n TOP : 'bottom center',\n RIGHT : 'middle left',\n BOTTOM : 'top center',\n LEFT : 'middle right'\n }\n\n const HoverState = {\n IN : 'in',\n OUT : 'out'\n }\n\n const Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n INSERTED : `inserted${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n FOCUSOUT : `focusout${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`\n }\n\n const ClassName = {\n FADE : 'fade',\n IN : 'in'\n }\n\n const Selector = {\n TOOLTIP : '.tooltip',\n TOOLTIP_INNER : '.tooltip-inner'\n }\n\n const TetherClass = {\n element : false,\n enabled : false\n }\n\n const Trigger = {\n HOVER : 'hover',\n FOCUS : 'focus',\n CLICK : 'click',\n MANUAL : 'manual'\n }\n\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Tooltip {\n\n constructor(element, config) {\n\n // private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._tether = null\n\n // protected\n this.element = element\n this.config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n\n }\n\n\n // getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n\n // public\n\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n let context = this\n let dataKey = this.constructor.DATA_KEY\n\n if (event) {\n context = $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n context._activeTrigger.click = !context._activeTrigger.click\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context)\n } else {\n context._leave(null, context)\n }\n\n } else {\n $(context.getTipElement()).hasClass(ClassName.IN) ?\n context._leave(null, context) :\n context._enter(null, context)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n this.cleanupTether()\n\n $.removeData(this.element, this.constructor.DATA_KEY)\n\n $(this.element).off(this.constructor.EVENT_KEY)\n\n if (this.tip) {\n $(this.tip).remove()\n }\n\n this._isEnabled = null\n this._timeout = null\n this._hoverState = null\n this._activeTrigger = null\n this._tether = null\n\n this.element = null\n this.config = null\n this.tip = null\n }\n\n show() {\n let showEvent = $.Event(this.constructor.Event.SHOW)\n\n if (this.isWithContent() && this._isEnabled) {\n $(this.element).trigger(showEvent)\n\n let isInTheDom = $.contains(\n this.element.ownerDocument.documentElement,\n this.element\n )\n\n if (showEvent.isDefaultPrevented() || !isInTheDom) {\n return\n }\n\n let tip = this.getTipElement()\n let tipId = Util.getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this.element.setAttribute('aria-describedby', tipId)\n\n this.setContent()\n\n if (this.config.animation) {\n $(tip).addClass(ClassName.FADE)\n }\n\n let placement = typeof this.config.placement === 'function' ?\n this.config.placement.call(this, tip, this.element) :\n this.config.placement\n\n let attachment = this._getAttachment(placement)\n\n $(tip)\n .data(this.constructor.DATA_KEY, this)\n .appendTo(document.body)\n\n $(this.element).trigger(this.constructor.Event.INSERTED)\n\n this._tether = new Tether({\n element : tip,\n target : this.element,\n attachment : attachment,\n classes : TetherClass,\n classPrefix : CLASS_PREFIX,\n offset : this.config.offset,\n constraints : this.config.constraints\n })\n\n Util.reflow(tip)\n this._tether.position()\n\n $(tip).addClass(ClassName.IN)\n\n let complete = () => {\n let prevHoverState = this._hoverState\n this._hoverState = null\n\n $(this.element).trigger(this.constructor.Event.SHOWN)\n\n if (prevHoverState === HoverState.OUT) {\n this._leave(null, this)\n }\n }\n\n Util.supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE) ?\n $(this.tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(Tooltip._TRANSITION_DURATION) :\n complete()\n }\n }\n\n hide(callback) {\n let tip = this.getTipElement()\n let hideEvent = $.Event(this.constructor.Event.HIDE)\n let complete = () => {\n if (this._hoverState !== HoverState.IN && tip.parentNode) {\n tip.parentNode.removeChild(tip)\n }\n\n this.element.removeAttribute('aria-describedby')\n $(this.element).trigger(this.constructor.Event.HIDDEN)\n this.cleanupTether()\n\n if (callback) {\n callback()\n }\n }\n\n $(this.element).trigger(hideEvent)\n\n if (hideEvent.isDefaultPrevented()) {\n return\n }\n\n $(tip).removeClass(ClassName.IN)\n\n if (Util.supportsTransitionEnd() &&\n ($(this.tip).hasClass(ClassName.FADE))) {\n\n $(tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(TRANSITION_DURATION)\n\n } else {\n complete()\n }\n\n this._hoverState = ''\n }\n\n\n // protected\n\n isWithContent() {\n return !!this.getTitle()\n }\n\n getTipElement() {\n return (this.tip = this.tip || $(this.config.template)[0])\n }\n\n setContent() {\n let tip = this.getTipElement()\n let title = this.getTitle()\n let method = this.config.html ? 'innerHTML' : 'innerText'\n\n $(tip).find(Selector.TOOLTIP_INNER)[0][method] = title\n\n $(tip)\n .removeClass(ClassName.FADE)\n .removeClass(ClassName.IN)\n\n this.cleanupTether()\n }\n\n getTitle() {\n let title = this.element.getAttribute('data-original-title')\n\n if (!title) {\n title = typeof this.config.title === 'function' ?\n this.config.title.call(this.element) :\n this.config.title\n }\n\n return title\n }\n\n cleanupTether() {\n if (this._tether) {\n this._tether.destroy()\n\n // clean up after tether's junk classes\n // remove after they fix issue\n // (https://github.com/HubSpot/tether/issues/36)\n $(this.element).removeClass(this._removeTetherClasses)\n $(this.tip).removeClass(this._removeTetherClasses)\n }\n }\n\n\n // private\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n let triggers = this.config.trigger.split(' ')\n\n triggers.forEach((trigger) => {\n if (trigger === 'click') {\n $(this.element).on(\n this.constructor.Event.CLICK,\n this.config.selector,\n $.proxy(this.toggle, this)\n )\n\n } else if (trigger !== Trigger.MANUAL) {\n let eventIn = trigger == Trigger.HOVER ?\n this.constructor.Event.MOUSEENTER :\n this.constructor.Event.FOCUSIN\n let eventOut = trigger == Trigger.HOVER ?\n this.constructor.Event.MOUSELEAVE :\n this.constructor.Event.FOCUSOUT\n\n $(this.element)\n .on(\n eventIn,\n this.config.selector,\n $.proxy(this._enter, this)\n )\n .on(\n eventOut,\n this.config.selector,\n $.proxy(this._leave, this)\n )\n }\n })\n\n if (this.config.selector) {\n this.config = $.extend({}, this.config, {\n trigger : 'manual',\n selector : ''\n })\n } else {\n this._fixTitle()\n }\n }\n\n _removeTetherClasses(i, css) {\n return ((css.baseVal || css).match(\n new RegExp(`(^|\\\\s)${CLASS_PREFIX}-\\\\S+`, 'g')) || []\n ).join(' ')\n }\n\n _fixTitle() {\n let titleType = typeof this.element.getAttribute('data-original-title')\n if (this.element.getAttribute('title') ||\n (titleType !== 'string')) {\n this.element.setAttribute(\n 'data-original-title',\n this.element.getAttribute('title') || ''\n )\n this.element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n let dataKey = this.constructor.DATA_KEY\n\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type == 'focusin' ? Trigger.FOCUS : Trigger.HOVER\n ] = true\n }\n\n if ($(context.getTipElement()).hasClass(ClassName.IN) ||\n (context._hoverState === HoverState.IN)) {\n context._hoverState = HoverState.IN\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HoverState.IN\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HoverState.IN) {\n context.show()\n }\n }, context.config.delay.show)\n }\n\n _leave(event, context) {\n let dataKey = this.constructor.DATA_KEY\n\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type == 'focusout' ? Trigger.FOCUS : Trigger.HOVER\n ] = false\n }\n\n if (context._isWithActiveTrigger()) {\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HoverState.OUT\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HoverState.OUT) {\n context.hide()\n }\n }, context.config.delay.hide)\n }\n\n _isWithActiveTrigger() {\n for (let trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true\n }\n }\n\n return false\n }\n\n _getConfig(config) {\n config = $.extend(\n {},\n this.constructor.Default,\n $(this.element).data(),\n config\n )\n\n if (config.delay && typeof config.delay === 'number') {\n config.delay = {\n show : config.delay,\n hide : config.delay\n }\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n return config\n }\n\n _getDelegateConfig() {\n let config = {}\n\n if (this.config) {\n for (let key in this.config) {\n let value = this.config[key]\n if (this.constructor.Default[key] !== value) {\n config[key] = value\n }\n }\n }\n\n return config\n }\n\n\n // static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n let _config = typeof config === 'object' ?\n config : null\n\n if (!data && /destroy|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Tooltip(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n data[config]()\n }\n })\n }\n\n }\n\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Tooltip._jQueryInterface\n $.fn[NAME].Constructor = Tooltip\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tooltip._jQueryInterface\n }\n\n return Tooltip\n\n})(jQuery)\n\nexport default Tooltip\n"]}
\ No newline at end of file diff --git a/js/dist/util.js b/js/dist/util.js new file mode 100644 index 0000000000..a135c3f385 --- /dev/null +++ b/js/dist/util.js @@ -0,0 +1,151 @@ +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): util.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +'use strict'; + +var Util = (function ($) { + + /** + * ------------------------------------------------------------------------ + * Private TransitionEnd Helpers + * ------------------------------------------------------------------------ + */ + + var transition = false; + + var TransitionEndEvent = { + WebkitTransition: 'webkitTransitionEnd', + MozTransition: 'transitionend', + OTransition: 'oTransitionEnd otransitionend', + transition: 'transitionend' + }; + + // shoutout AngusCroll (https://goo.gl/pxwQGp) + function toType(obj) { + return ({}).toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase(); + } + + function isElement(obj) { + return (obj[0] || obj).nodeType; + } + + function getSpecialTransitionEndEvent() { + return { + bindType: transition.end, + delegateType: transition.end, + handle: function handle(event) { + if ($(event.target).is(this)) { + return event.handleObj.handler.apply(this, arguments); + } + } + }; + } + + function transitionEndTest() { + if (window.QUnit) { + return false; + } + + var el = document.createElement('bootstrap'); + + for (var name in TransitionEndEvent) { + if (el.style[name] !== undefined) { + return { end: TransitionEndEvent[name] }; + } + } + + return false; + } + + function transitionEndEmulator(duration) { + var _this = this; + + var called = false; + + $(this).one(Util.TRANSITION_END, function () { + called = true; + }); + + setTimeout(function () { + if (!called) { + Util.triggerTransitionEnd(_this); + } + }, duration); + + return this; + } + + function setTransitionEndSupport() { + transition = transitionEndTest(); + + $.fn.emulateTransitionEnd = transitionEndEmulator; + + if (Util.supportsTransitionEnd()) { + $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent(); + } + } + + /** + * -------------------------------------------------------------------------- + * Public Util Api + * -------------------------------------------------------------------------- + */ + + var Util = { + + TRANSITION_END: 'bsTransitionEnd', + + getUID: function getUID(prefix) { + do prefix += ~ ~(Math.random() * 1000000); while (document.getElementById(prefix)); + return prefix; + }, + + getSelectorFromElement: function getSelectorFromElement(element) { + var selector = element.getAttribute('data-target'); + + if (!selector) { + selector = element.getAttribute('href') || ''; + selector = /^#[a-z]/i.test(selector) ? selector : null; + } + + return selector; + }, + + reflow: function reflow(element) { + new Function('bs', 'return bs')(element.offsetHeight); + }, + + triggerTransitionEnd: function triggerTransitionEnd(element) { + $(element).trigger(transition.end); + }, + + supportsTransitionEnd: function supportsTransitionEnd() { + return !!transition; + }, + + typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) { + + for (var property in configTypes) { + var expectedTypes = configTypes[property]; + var value = config[property]; + var valueType = undefined; + + if (value && isElement(value)) valueType = 'element';else valueType = toType(value); + + if (!new RegExp(expectedTypes).test(valueType)) { + throw new Error('' + componentName.toUpperCase() + ': ' + ('Option "' + property + '" provided type "' + valueType + '" ') + ('but expected type "' + expectedTypes + '".')); + } + } + } + + }; + + setTransitionEndSupport(); + + return Util; +})(jQuery); +//# sourceMappingURL=util.js.map
\ No newline at end of file diff --git a/js/dist/util.js.map b/js/dist/util.js.map new file mode 100644 index 0000000000..7c73c492e6 --- /dev/null +++ b/js/dist/util.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["js/src/util.js"],"names":[],"mappings":"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","file":"js/src/util.js","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Util = (($) => {\n\n\n /**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n\n let transition = false\n\n const TransitionEndEvent = {\n WebkitTransition : 'webkitTransitionEnd',\n MozTransition : 'transitionend',\n OTransition : 'oTransitionEnd otransitionend',\n transition : 'transitionend'\n }\n\n // shoutout AngusCroll (https://goo.gl/pxwQGp)\n function toType(obj) {\n return ({}).toString.call(obj).match(/\\s([a-zA-Z]+)/)[1].toLowerCase()\n }\n\n function isElement(obj) {\n return (obj[0] || obj).nodeType;\n }\n\n function getSpecialTransitionEndEvent() {\n return {\n bindType: transition.end,\n delegateType: transition.end,\n handle: function (event) {\n if ($(event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments)\n }\n }\n }\n }\n\n function transitionEndTest() {\n if (window.QUnit) {\n return false\n }\n\n let el = document.createElement('bootstrap')\n\n for (var name in TransitionEndEvent) {\n if (el.style[name] !== undefined) {\n return { end: TransitionEndEvent[name] }\n }\n }\n\n return false\n }\n\n function transitionEndEmulator(duration) {\n let called = false\n\n $(this).one(Util.TRANSITION_END, function () {\n called = true\n })\n\n setTimeout(() => {\n if (!called) {\n Util.triggerTransitionEnd(this)\n }\n }, duration)\n\n return this\n }\n\n function setTransitionEndSupport() {\n transition = transitionEndTest()\n\n $.fn.emulateTransitionEnd = transitionEndEmulator\n\n if (Util.supportsTransitionEnd()) {\n $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent()\n }\n }\n\n\n /**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\n let Util = {\n\n TRANSITION_END: 'bsTransitionEnd',\n\n getUID(prefix) {\n do prefix += ~~(Math.random() * 1000000)\n while (document.getElementById(prefix))\n return prefix\n },\n\n getSelectorFromElement(element) {\n let selector = element.getAttribute('data-target')\n\n if (!selector) {\n selector = element.getAttribute('href') || ''\n selector = /^#[a-z]/i.test(selector) ? selector : null\n }\n\n return selector\n },\n\n reflow(element) {\n new Function('bs', 'return bs')(element.offsetHeight)\n },\n\n triggerTransitionEnd(element) {\n $(element).trigger(transition.end)\n },\n\n supportsTransitionEnd() {\n return !!transition\n },\n\n typeCheckConfig(componentName, config, configTypes) {\n\n for (let property in configTypes) {\n let expectedTypes = configTypes[property]\n let value = config[property]\n let valueType\n\n if (value && isElement(value)) valueType = 'element'\n else valueType = toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`)\n }\n }\n }\n\n }\n\n setTransitionEndSupport()\n\n return Util\n\n})(jQuery)\n\nexport default Util\n"]}
\ No newline at end of file diff --git a/js/dropdown.js b/js/dropdown.js deleted file mode 100644 index 4599d5ba92..0000000000 --- a/js/dropdown.js +++ /dev/null @@ -1,322 +0,0 @@ -/** ======================================================================= - * Bootstrap: dropdown.js v4.0.0 - * http://getbootstrap.com/javascript/#dropdown - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== - * @fileoverview - Add dropdown menus to nearly anything with this simple - * plugin, including the navbar, tabs, and pills. - * - * Public Methods & Properties: - * - * + $.dropdown - * + $.dropdown.noConflict - * + $.dropdown.Constructor - * + $.dropdown.Constructor.VERSION - * + $.dropdown.Constructor.prototype.toggle - * - * ======================================================================== - */ - -'use strict'; - - -/** - * Our dropdown class. - * @param {Element!} element - * @constructor - */ -var Dropdown = function (element) { - $(element).on('click.bs.dropdown', this['toggle']) -} - - -/** - * @const - * @type {string} - */ -Dropdown['VERSION'] = '4.0.0' - - -/** - * @const - * @type {string} - * @private - */ -Dropdown._NAME = 'dropdown' - - -/** - * @const - * @type {string} - * @private - */ -Dropdown._DATA_KEY = 'bs.dropdown' - - -/** - * @const - * @type {Function} - * @private - */ -Dropdown._JQUERY_NO_CONFLICT = $.fn[Dropdown._NAME] - - -/** - * @const - * @enum {string} - * @private - */ -Dropdown._Event = { - HIDE : 'hide.bs.dropdown', - HIDDEN : 'hidden.bs.dropdown', - SHOW : 'show.bs.dropdown', - SHOWN : 'shown.bs.dropdown' -} - - -/** - * @const - * @enum {string} - * @private - */ -Dropdown._ClassName = { - BACKDROP : 'dropdown-backdrop', - DISABLED : 'disabled', - OPEN : 'open' -} - - -/** - * @const - * @enum {string} - * @private - */ -Dropdown._Selector = { - BACKDROP : '.dropdown-backdrop', - DATA_TOGGLE : '[data-toggle="dropdown"]', - FORM_CHILD : '.dropdown form', - ROLE_MENU : '[role="menu"]', - ROLE_LISTBOX : '[role="listbox"]', - NAVBAR_NAV : '.navbar-nav', - VISIBLE_ITEMS : '[role="menu"] li:not(.divider) a, [role="listbox"] li:not(.divider) a' -} - - -/** - * Provides the jQuery Interface for the alert component. - * @param {string=} opt_config - * @this {jQuery} - * @return {jQuery} - * @private - */ -Dropdown._jQueryInterface = function (opt_config) { - return this.each(function () { - var data = $(this).data(Dropdown._DATA_KEY) - - if (!data) { - $(this).data(Dropdown._DATA_KEY, (data = new Dropdown(this))) - } - - if (typeof opt_config === 'string') { - data[opt_config].call(this) - } - }) -} - - -/** - * @param {Event=} opt_event - * @private - */ -Dropdown._clearMenus = function (opt_event) { - if (opt_event && opt_event.which == 3) { - return - } - - var backdrop = $(Dropdown._Selector.BACKDROP)[0] - if (backdrop) { - backdrop.parentNode.removeChild(backdrop) - } - - var toggles = /** @type {Array.<Element>} */ ($.makeArray($(Dropdown._Selector.DATA_TOGGLE))) - - for (var i = 0; i < toggles.length; i++) { - var parent = Dropdown._getParentFromElement(toggles[i]) - var relatedTarget = { 'relatedTarget': toggles[i] } - - if (!$(parent).hasClass(Dropdown._ClassName.OPEN)) { - continue - } - - var hideEvent = $.Event(Dropdown._Event.HIDE, relatedTarget) - $(parent).trigger(hideEvent) - if (hideEvent.isDefaultPrevented()) { - continue - } - - toggles[i].setAttribute('aria-expanded', 'false') - - $(parent) - .removeClass(Dropdown._ClassName.OPEN) - .trigger(Dropdown._Event.HIDDEN, relatedTarget) - } -} - - -/** - * @param {Element} element - * @return {Element} - * @private - */ -Dropdown._getParentFromElement = function (element) { - var selector = Bootstrap.getSelectorFromElement(element) - - if (selector) { - var parent = $(selector)[0] - } - - return /** @type {Element} */ (parent || element.parentNode) -} - - -/** - * @param {Event} event - * @this {Element} - * @private - */ -Dropdown._dataApiKeydownHandler = function (event) { - if (!/(38|40|27|32)/.test(event.which) || /input|textarea/i.test(event.target.tagName)) { - return - } - - event.preventDefault() - event.stopPropagation() - - if (this.disabled || $(this).hasClass(Dropdown._ClassName.DISABLED)) { - return - } - - var parent = Dropdown._getParentFromElement(this) - var isActive = $(parent).hasClass(Dropdown._ClassName.OPEN) - - if ((!isActive && event.which != 27) || (isActive && event.which == 27)) { - if (event.which == 27) { - var toggle = $(parent).find(Dropdown._Selector.DATA_TOGGLE)[0] - $(toggle).trigger('focus') - } - $(this).trigger('click') - return - } - - var items = $.makeArray($(Dropdown._Selector.VISIBLE_ITEMS)) - - items = items.filter(function (item) { - return item.offsetWidth || item.offsetHeight - }) - - if (!items.length) { - return - } - - var index = items.indexOf(event.target) - - if (event.which == 38 && index > 0) index-- // up - if (event.which == 40 && index < items.length - 1) index++ // down - if (!~index) index = 0 - - items[index].focus() -} - - -/** - * Toggles the dropdown - * @this {Element} - * @return {boolean|undefined} - */ -Dropdown.prototype['toggle'] = function () { - if (this.disabled || $(this).hasClass(Dropdown._ClassName.DISABLED)) { - return - } - - var parent = Dropdown._getParentFromElement(this) - var isActive = $(parent).hasClass(Dropdown._ClassName.OPEN) - - Dropdown._clearMenus() - - if (isActive) { - return false - } - - if ('ontouchstart' in document.documentElement && !$(parent).closest(Dropdown._Selector.NAVBAR_NAV).length) { - // if mobile we use a backdrop because click events don't delegate - var dropdown = document.createElement('div') - dropdown.className = Dropdown._ClassName.BACKDROP - this.parentNode.insertBefore(this, dropdown) - $(dropdown).on('click', Dropdown._clearMenus) - } - - var relatedTarget = { 'relatedTarget': this } - var showEvent = $.Event(Dropdown._Event.SHOW, relatedTarget) - - $(parent).trigger(showEvent) - - if (showEvent.isDefaultPrevented()) { - return - } - - this.focus() - this.setAttribute('aria-expanded', 'true') - - $(parent).toggleClass(Dropdown._ClassName.OPEN) - - $(parent).trigger(Dropdown._Event.SHOWN, relatedTarget) - - return false -} - - -/** - * ------------------------------------------------------------------------ - * jQuery Interface + noConflict implementaiton - * ------------------------------------------------------------------------ - */ - -/** - * @const - * @type {Function} - */ -$.fn[Dropdown._NAME] = Dropdown._jQueryInterface - - -/** - * @const - * @type {Function} - */ -$.fn[Dropdown._NAME]['Constructor'] = Dropdown - - -/** - * @const - * @type {Function} - */ -$.fn[Dropdown._NAME]['noConflict'] = function () { - $.fn[Dropdown._NAME] = Dropdown._JQUERY_NO_CONFLICT - return this -} - - -/** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - -$(document) - .on('click.bs.dropdown.data-api', Dropdown._clearMenus) - .on('click.bs.dropdown.data-api', Dropdown._Selector.FORM_CHILD, function (e) { e.stopPropagation() }) - .on('click.bs.dropdown.data-api', Dropdown._Selector.DATA_TOGGLE, Dropdown.prototype['toggle']) - .on('keydown.bs.dropdown.data-api', Dropdown._Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler) - .on('keydown.bs.dropdown.data-api', Dropdown._Selector.ROLE_MENU, Dropdown._dataApiKeydownHandler) - .on('keydown.bs.dropdown.data-api', Dropdown._Selector.ROLE_LISTBOX, Dropdown._dataApiKeydownHandler) diff --git a/js/externs/bootstrap.js b/js/externs/bootstrap.js deleted file mode 100644 index b4c2e36c28..0000000000 --- a/js/externs/bootstrap.js +++ /dev/null @@ -1,6 +0,0 @@ -jQuery.event.prototype.handleObj = function () {} -jQuery.event.prototype.handleObj.handler = function () {} -$.event.special = function () {} -$.event.trueHover = true -$.offset = {} -$.offset.setOffset = function (a,b,c) {} diff --git a/js/externs/jQuery.js b/js/externs/jQuery.js deleted file mode 100644 index f9b80c497d..0000000000 --- a/js/externs/jQuery.js +++ /dev/null @@ -1,2159 +0,0 @@ -/* - * Copyright 2011 The Closure Compiler Authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @fileoverview Externs for jQuery 1.9.1 - * - * Note that some functions use different return types depending on the number - * of parameters passed in. In these cases, you may need to annotate the type - * of the result in your code, so the JSCompiler understands which type you're - * expecting. For example: - * <code>var elt = /** @type {Element} * / (foo.get(0));</code> - * - * @see http://api.jquery.com/ - * @externs - */ - -/** - * @typedef {(Window|Document|Element|Array.<Element>|string|jQuery| - * NodeList)} - */ -var jQuerySelector; - -/** @typedef {function(...)|Array.<function(...)>} */ -var jQueryCallback; - -/** @typedef { - { - accepts: (Object.<string, string>|undefined), - async: (?boolean|undefined), - beforeSend: (function(jQuery.jqXHR, (jQueryAjaxSettings|Object.<string, *>))|undefined), - cache: (?boolean|undefined), - complete: (function(jQuery.jqXHR, string)|undefined), - contents: (Object.<string, RegExp>|undefined), - contentType: (?string|undefined), - context: (Object.<?, ?>|jQueryAjaxSettings|undefined), - converters: (Object.<string, Function>|undefined), - crossDomain: (?boolean|undefined), - data: (Object.<?, ?>|?string|Array.<?>|undefined), - dataFilter: (function(string, string):?|undefined), - dataType: (?string|undefined), - error: (function(jQuery.jqXHR, string, string)|undefined), - global: (?boolean|undefined), - headers: (Object.<?, ?>|undefined), - ifModified: (?boolean|undefined), - isLocal: (?boolean|undefined), - jsonp: (?string|undefined), - jsonpCallback: (?string|function()|undefined), - mimeType: (?string|undefined), - password: (?string|undefined), - processData: (?boolean|undefined), - scriptCharset: (?string|undefined), - statusCode: (Object.<number, function()>|undefined), - success: (function(?, string, jQuery.jqXHR)|undefined), - timeout: (?number|undefined), - traditional: (?boolean|undefined), - type: (?string|undefined), - url: (?string|undefined), - username: (?string|undefined), - xhr: (function():(ActiveXObject|XMLHttpRequest)|undefined), - xhrFields: (Object.<?, ?>|undefined) - }} */ -var jQueryAjaxSettings; - -/** - * @constructor - * @param {(jQuerySelector|Element|Object|Array.<Element>|jQuery|string| - * function())=} arg1 - * @param {(Element|jQuery|Document| - * Object.<string, (string|function(!jQuery.event=))>)=} arg2 - * @return {!jQuery} - */ -function jQuery(arg1, arg2) {} - -/** - * @constructor - * @extends {jQuery} - * @param {(jQuerySelector|Element|Object|Array.<Element>|jQuery|string| - * function())=} arg1 - * @param {(Element|jQuery|Document| - * Object.<string, (string|function(!jQuery.event=))>)=} arg2 - * @return {!jQuery} - */ -function $(arg1, arg2) {} - -/** - * @param {(jQuerySelector|Array.<Element>|string|jQuery)} arg1 - * @param {Element=} context - * @return {!jQuery} - * @nosideeffects - */ -jQuery.prototype.add = function(arg1, context) {}; - -/** - * @param {(jQuerySelector|Array.<Element>|string|jQuery)=} arg1 - * @return {!jQuery} - * @nosideeffects - */ -jQuery.prototype.addBack = function(arg1) {}; - -/** - * @param {(string|function(number,String))} arg1 - * @return {!jQuery} - */ -jQuery.prototype.addClass = function(arg1) {}; - -/** - * @param {(string|Element|jQuery|function(number))} arg1 - * @param {(string|Element|Array.<Element>|jQuery)=} content - * @return {!jQuery} - */ -jQuery.prototype.after = function(arg1, content) {}; - -/** - * @param {(string|jQueryAjaxSettings|Object.<string,*>)} arg1 - * @param {(jQueryAjaxSettings|Object.<string, *>)=} settings - * @return {jQuery.jqXHR} - */ -jQuery.ajax = function(arg1, settings) {}; - -/** - * @param {(string|jQueryAjaxSettings|Object.<string, *>)} arg1 - * @param {(jQueryAjaxSettings|Object.<string, *>)=} settings - * @return {jQuery.jqXHR} - */ -$.ajax = function(arg1, settings) {}; - -/** - * @param {function(!jQuery.event,XMLHttpRequest,(jQueryAjaxSettings|Object.<string, *>))} handler - * @return {!jQuery} - */ -jQuery.prototype.ajaxComplete = function(handler) {}; - -/** - * @param {function(!jQuery.event,jQuery.jqXHR,(jQueryAjaxSettings|Object.<string, *>),*)} handler - * @return {!jQuery} - */ -jQuery.prototype.ajaxError = function(handler) {}; - -/** - * @param {(string|function((jQueryAjaxSettings|Object.<string, *>),(jQueryAjaxSettings|Object.<string, *>),jQuery.jqXHR))} dataTypes - * @param {function((jQueryAjaxSettings|Object.<string, *>),(jQueryAjaxSettings|Object.<string, *>),jQuery.jqXHR)=} handler - */ -jQuery.ajaxPrefilter = function(dataTypes, handler) {}; - -/** - * @param {(string|function((jQueryAjaxSettings|Object.<string, *>),(jQueryAjaxSettings|Object.<string, *>),jQuery.jqXHR))} dataTypes - * @param {function((jQueryAjaxSettings|Object.<string, *>),(jQueryAjaxSettings|Object.<string, *>),jQuery.jqXHR)=} handler - */ -$.ajaxPrefilter = function(dataTypes, handler) {}; - -/** - * @param {function(!jQuery.event,jQuery.jqXHR,(jQueryAjaxSettings|Object.<string, *>))} handler - * @return {!jQuery} - */ -jQuery.prototype.ajaxSend = function(handler) {}; - -/** @const {jQueryAjaxSettings|Object.<string, *>} */ -jQuery.ajaxSettings; - -/** @const {jQueryAjaxSettings|Object.<string, *>} */ -$.ajaxSettings = {}; - -/** @type {Object.<string, boolean>} */ -jQuery.ajaxSettings.flatOptions = {}; - -/** @type {Object.<string, boolean>} */ -$.ajaxSettings.flatOptions = {}; - -/** @type {boolean} */ -jQuery.ajaxSettings.processData; - -/** @type {boolean} */ -$.ajaxSettings.processData; - -/** @type {Object.<string, string>} */ -jQuery.ajaxSettings.responseFields = {}; - -/** @type {Object.<string, string>} */ -$.ajaxSettings.responseFields = {}; - -/** @param {jQueryAjaxSettings|Object.<string, *>} options */ -jQuery.ajaxSetup = function(options) {}; - -/** @param {jQueryAjaxSettings|Object.<string, *>} options */ -$.ajaxSetup = function(options) {}; - -/** - * @param {function()} handler - * @return {!jQuery} - */ -jQuery.prototype.ajaxStart = function(handler) {}; - -/** - * @param {function()} handler - * @return {!jQuery} - */ -jQuery.prototype.ajaxStop = function(handler) {}; - -/** - * @param {function(!jQuery.event,XMLHttpRequest,(jQueryAjaxSettings|Object.<string, *>), ?)} handler - * @return {!jQuery} - */ -jQuery.prototype.ajaxSuccess = function(handler) {}; - -/** - * @deprecated Please use .addBack(selector) instead. - * @return {!jQuery} - * @nosideeffects - */ -jQuery.prototype.andSelf = function() {}; - -/** - * @param {Object.<string,*>} properties - * @param {(string|number|function()|Object.<string,*>)=} arg2 - * @param {(string|function())=} easing - * @param {function()=} complete - * @return {!jQuery} - */ -jQuery.prototype.animate = function(properties, arg2, easing, complete) {}; - -/** - * @param {(string|Element|Array.<Element>|jQuery|function(number,string))} arg1 - * @param {...(string|Element|Array.<Element>|jQuery)} content - * @return {!jQuery} - */ -jQuery.prototype.append = function(arg1, content) {}; - -/** - * @param {(jQuerySelector|Element|jQuery)} target - * @return {!jQuery} - */ -jQuery.prototype.appendTo = function(target) {}; - -/** - * @param {(string|Object.<string,*>)} arg1 - * @param {(string|number|boolean|function(number,string))=} arg2 - * @return {(string|!jQuery)} - */ -jQuery.prototype.attr = function(arg1, arg2) {}; - -/** - * @param {(string|Element|jQuery|function())} arg1 - * @param {(string|Element|Array.<Element>|jQuery)=} content - * @return {!jQuery} - */ -jQuery.prototype.before = function(arg1, content) {}; - -/** - * @param {(string|Object.<string, function(!jQuery.event=)>)} arg1 - * @param {(Object.<string, *>|function(!jQuery.event=)|boolean)=} eventData - * @param {(function(!jQuery.event=)|boolean)=} arg3 - * @return {!jQuery} - */ -jQuery.prototype.bind = function(arg1, eventData, arg3) {}; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)=} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.blur = function(arg1, handler) {}; - -/** - * @constructor - * @private - */ -jQuery.callbacks = function () {}; - -/** - * @param {string=} flags - * @return {jQuery.callbacks} - */ -jQuery.Callbacks = function (flags) {}; - -/** @param {function()} callbacks */ -jQuery.callbacks.prototype.add = function(callbacks) {}; - -/** @return {undefined} */ -jQuery.callbacks.prototype.disable = function() {}; - -/** @return {undefined} */ -jQuery.callbacks.prototype.empty = function() {}; - -/** @param {...*} var_args */ -jQuery.callbacks.prototype.fire = function(var_args) {}; - -/** @return {boolean} */ -jQuery.callbacks.prototype.fired = function() {}; - -/** @param {...*} var_args */ -jQuery.callbacks.prototype.fireWith = function(var_args) {}; - -/** - * @param {function()} callback - * @return {boolean} - * @nosideeffects - */ -jQuery.callbacks.prototype.has = function(callback) {}; - -/** @return {undefined} */ -jQuery.callbacks.prototype.lock = function() {}; - -/** @return {boolean} */ -jQuery.callbacks.prototype.locked = function() {}; - -/** @param {function()} callbacks */ -jQuery.callbacks.prototype.remove = function(callbacks) {}; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)=} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.change = function(arg1, handler) {}; - -/** - * @param {jQuerySelector=} selector - * @return {!jQuery} - * @nosideeffects - */ -jQuery.prototype.children = function(selector) {}; - -/** - * @param {string=} queueName - * @return {!jQuery} - */ -jQuery.prototype.clearQueue = function(queueName) {}; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)=} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.click = function(arg1, handler) {}; - -/** - * @param {boolean=} withDataAndEvents - * @param {boolean=} deepWithDataAndEvents - * @return {!jQuery} - * @suppress {checkTypes} see https://code.google.com/p/closure-compiler/issues/detail?id=583 - */ -jQuery.prototype.clone = function(withDataAndEvents, deepWithDataAndEvents) {}; - -/** - * @param {(jQuerySelector|jQuery|Element|string)} arg1 - * @param {Element=} context - * @return {!jQuery} - * @nosideeffects - */ -jQuery.prototype.closest = function(arg1, context) {}; - -/** - * @param {Element} container - * @param {Element} contained - * @return {boolean} - */ -jQuery.contains = function(container, contained) {}; - -/** - * @param {Element} container - * @param {Element} contained - * @return {boolean} - */ -$.contains = function(container, contained) {}; - -/** - * @return {!jQuery} - * @nosideeffects - */ -jQuery.prototype.contents = function() {}; - -/** @type {Element|Document} */ -jQuery.prototype.context; - -/** - * @param {(string|Object.<string,*>)} arg1 - * @param {(string|number|function(number,*))=} arg2 - * @return {(string|!jQuery)} - */ -jQuery.prototype.css = function(arg1, arg2) {}; - -/** @type {Object.<string, *>} */ -jQuery.cssHooks; - -/** @type {Object.<string, *>} */ -$.cssHooks; - -/** - * @param {Element} elem - * @param {string=} key - * @param {*=} value - * @return {*} - */ -jQuery.data = function(elem, key, value) {}; - -/** - * @param {(string|Object.<string, *>)=} arg1 - * @param {*=} value - * @return {*} - */ -jQuery.prototype.data = function(arg1, value) {}; - -/** - * @param {Element} elem - * @param {string=} key - * @param {*=} value - * @return {*} - */ -$.data = function(elem, key, value) {}; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)=} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.dblclick = function(arg1, handler) {}; - -/** - * @constructor - * @implements {jQuery.Promise} - * @param {function()=} opt_fn - * @see http://api.jquery.com/category/deferred-object/ - */ -jQuery.deferred = function(opt_fn) {}; - -/** - * @constructor - * @extends {jQuery.deferred} - * @param {function()=} opt_fn - * @return {jQuery.Deferred} - */ -jQuery.Deferred = function(opt_fn) {}; - -/** - * @constructor - * @extends {jQuery.deferred} - * @param {function()=} opt_fn - * @see http://api.jquery.com/category/deferred-object/ - */ -$.deferred = function(opt_fn) {}; - -/** - * @constructor - * @extends {jQuery.deferred} - * @param {function()=} opt_fn - * @return {jQuery.deferred} - */ -$.Deferred = function(opt_fn) {}; - -/** - * @override - * @param {jQueryCallback} alwaysCallbacks - * @param {jQueryCallback=} alwaysCallbacks2 - * @return {jQuery.deferred} - */ -jQuery.deferred.prototype.always - = function(alwaysCallbacks, alwaysCallbacks2) {}; - -/** - * @override - * @param {jQueryCallback} doneCallbacks - * @param {jQueryCallback=} doneCallbacks2 - * @return {jQuery.deferred} - */ -jQuery.deferred.prototype.done = function(doneCallbacks, doneCallbacks2) {}; - -/** - * @override - * @param {jQueryCallback} failCallbacks - * @param {jQueryCallback=} failCallbacks2 - * @return {jQuery.deferred} - */ -jQuery.deferred.prototype.fail = function(failCallbacks, failCallbacks2) {}; - -/** - * @param {...*} var_args - * @return {jQuery.deferred} - */ -jQuery.deferred.prototype.notify = function(var_args) {}; - -/** - * @param {Object} context - * @param {...*} var_args - * @return {jQuery.deferred} - */ -jQuery.deferred.prototype.notifyWith = function(context, var_args) {}; - -/** - * @deprecated Please use deferred.then() instead. - * @override - * @param {function()=} doneFilter - * @param {function()=} failFilter - * @param {function()=} progressFilter - * @return {jQuery.Promise} - */ -jQuery.deferred.prototype.pipe = - function(doneFilter, failFilter, progressFilter) {}; - -/** - * @param {jQueryCallback} progressCallbacks - * @return {jQuery.deferred} - */ -jQuery.deferred.prototype.progress = function(progressCallbacks) {}; - -/** - * @param {Object=} target - * @return {jQuery.Promise} - */ -jQuery.deferred.prototype.promise = function(target) {}; - -/** - * @param {...*} var_args - * @return {jQuery.deferred} - */ -jQuery.deferred.prototype.reject = function(var_args) {}; - -/** - * @param {Object} context - * @param {Array.<*>=} args - * @return {jQuery.deferred} - */ -jQuery.deferred.prototype.rejectWith = function(context, args) {}; - -/** - * @param {...*} var_args - * @return {jQuery.deferred} - */ -jQuery.deferred.prototype.resolve = function(var_args) {}; - -/** - * @param {Object} context - * @param {Array.<*>=} args - * @return {jQuery.deferred} - */ -jQuery.deferred.prototype.resolveWith = function(context, args) {}; - -/** @return {string} */ -jQuery.deferred.prototype.state = function() {}; - -/** - * @override - * @param {jQueryCallback} doneCallbacks - * @param {jQueryCallback=} failCallbacks - * @param {jQueryCallback=} progressCallbacks - * @return {jQuery.deferred} - */ -jQuery.deferred.prototype.then - = function(doneCallbacks, failCallbacks, progressCallbacks) {}; - -/** - * @param {number} duration - * @param {string=} queueName - * @return {!jQuery} - */ -jQuery.prototype.delay = function(duration, queueName) {}; - -/** - * @param {string} selector - * @param {(string|Object.<string,*>)} arg2 - * @param {(function(!jQuery.event=)|Object.<string, *>)=} arg3 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.delegate = function(selector, arg2, arg3, handler) {}; - -/** - * @param {Element} elem - * @param {string=} queueName - */ -jQuery.dequeue = function(elem, queueName) {}; - -/** - * @param {string=} queueName - * @return {!jQuery} - */ -jQuery.prototype.dequeue = function(queueName) {}; - -/** - * @param {Element} elem - * @param {string=} queueName - */ -$.dequeue = function(elem, queueName) {}; - -/** - * @param {jQuerySelector=} selector - * @return {!jQuery} - */ -jQuery.prototype.detach = function(selector) {}; - -/** - * @param {Object} collection - * @param {function((number|string),?)} callback - * @return {Object} - */ -jQuery.each = function(collection, callback) {}; - -/** - * @param {function(number,Element)} fnc - * @return {!jQuery} - */ -jQuery.prototype.each = function(fnc) {}; - -/** - * @param {Object} collection - * @param {function((number|string),?)} callback - * @return {Object} - */ -$.each = function(collection, callback) {}; - -/** @return {!jQuery} */ -jQuery.prototype.empty = function() {}; - -/** - * @return {!jQuery} - * @nosideeffects - */ -jQuery.prototype.end = function() {}; - -/** - * @param {number} arg1 - * @return {!jQuery} - */ -jQuery.prototype.eq = function(arg1) {}; - -/** @param {string} message */ -jQuery.error = function(message) {}; - -/** - * @deprecated Please use .on( "error", handler ) instead. - * @param {(function(!jQuery.event=)|Object.<string, *>)} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.error = function(arg1, handler) {}; - -/** @param {string} message */ -$.error = function(message) {}; - -/** - * @constructor - * @param {string} eventType - */ -jQuery.event = function(eventType) {}; - -/** - * @constructor - * @extends {jQuery.event} - * @param {string} eventType - * @param {Object=} properties - * @return {jQuery.Event} - */ -jQuery.Event = function(eventType, properties) {}; - -/** - * @constructor - * @extends {jQuery.event} - * @param {string} eventType - */ -$.event = function(eventType) {}; - -/** - * @constructor - * @extends {jQuery.event} - * @param {string} eventType - * @param {Object=} properties - * @return {$.Event} - */ -$.Event = function(eventType, properties) {}; - -/** @type {Element} */ -jQuery.event.prototype.currentTarget; - -/** @type {Object.<string, *>} */ -jQuery.event.prototype.data; - -/** @type {Element} */ -jQuery.event.prototype.delegateTarget; - -/** - * @return {boolean} - * @nosideeffects - */ -jQuery.event.prototype.isDefaultPrevented = function() {}; - -/** - * @return {boolean} - * @nosideeffects - */ -jQuery.event.prototype.isImmediatePropagationStopped = function() {}; - -/** - * @return {boolean} - * @nosideeffects - */ -jQuery.event.prototype.isPropagationStopped = function() {}; - -/** @type {string} */ -jQuery.event.prototype.namespace; - -/** @type {Event} */ -jQuery.event.prototype.originalEvent; - -/** @type {number} */ -jQuery.event.prototype.pageX; - -/** @type {number} */ -jQuery.event.prototype.pageY; - -/** @return {undefined} */ -jQuery.event.prototype.preventDefault = function() {}; - -/** @type {Object.<string, *>} */ -jQuery.event.prototype.props; - -/** @type {Element} */ -jQuery.event.prototype.relatedTarget; - -/** @type {*} */ -jQuery.event.prototype.result; - -/** @return {undefined} */ -jQuery.event.prototype.stopImmediatePropagation = function() {}; - -/** @return {undefined} */ -jQuery.event.prototype.stopPropagation = function() {}; - -/** @type {Element} */ -jQuery.event.prototype.target; - -/** @type {number} */ -jQuery.event.prototype.timeStamp; - -/** @type {string} */ -jQuery.event.prototype.type; - -/** @type {number} */ -jQuery.event.prototype.which; - -/** - * @param {(Object|boolean)} arg1 - * @param {...*} var_args - * @return {Object} - */ -jQuery.extend = function(arg1, var_args) {}; - -/** - * @param {(Object|boolean)} arg1 - * @param {...*} var_args - * @return {Object} - */ -jQuery.prototype.extend = function(arg1, var_args) {}; - -/** - * @param {(Object|boolean)} arg1 - * @param {...*} var_args - * @return {Object} - */ -$.extend = function(arg1, var_args) {}; - -/** - * @param {(string|number|function())=} duration - * @param {(function()|string)=} arg2 - * @param {function()=} callback - * @return {!jQuery} - */ -jQuery.prototype.fadeIn = function(duration, arg2, callback) {}; - -/** - * @param {(string|number|function())=} duration - * @param {(function()|string)=} arg2 - * @param {function()=} callback - * @return {!jQuery} - */ -jQuery.prototype.fadeOut = function(duration, arg2, callback) {}; - -/** - * @param {(string|number)} duration - * @param {number} opacity - * @param {(function()|string)=} arg3 - * @param {function()=} callback - * @return {!jQuery} - */ -jQuery.prototype.fadeTo = function(duration, opacity, arg3, callback) {}; - -/** - * @param {(string|number|function())=} duration - * @param {(string|function())=} easing - * @param {function()=} callback - * @return {!jQuery} - */ -jQuery.prototype.fadeToggle = function(duration, easing, callback) {}; - -/** - * @param {(jQuerySelector|function(number)|Element|jQuery)} arg1 - * @return {!jQuery} - */ -jQuery.prototype.filter = function(arg1) {}; - -/** - * @param {(jQuerySelector|jQuery|Element)} arg1 - * @return {!jQuery} - * @nosideeffects - */ -jQuery.prototype.find = function(arg1) {}; - -/** @return {!jQuery} */ -jQuery.prototype.first = function() {}; - -/** @see http://docs.jquery.com/Plugins/Authoring */ -jQuery.fn = jQuery.prototype; - -/** @see http://docs.jquery.com/Plugins/Authoring */ -$.fn = $.prototype; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)=} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.focus = function(arg1, handler) {}; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.focusin = function(arg1, handler) {}; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.focusout = function(arg1, handler) {}; - -/** @const */ -jQuery.fx = {}; - -/** @const */ -$.fx = {}; - -/** @type {number} */ -jQuery.fx.interval; - -/** @type {number} */ -$.fx.interval; - -/** @type {boolean} */ -jQuery.fx.off; - -/** @type {boolean} */ -$.fx.off; - -/** - * @param {string} url - * @param {(Object.<string,*>|string| - * function(string,string,jQuery.jqXHR))=} data - * @param {(function(string,string,jQuery.jqXHR)|string)=} success - * @param {string=} dataType - * @return {jQuery.jqXHR} - */ -jQuery.get = function(url, data, success, dataType) {}; - -/** - * @param {number=} index - * @return {(Element|Array.<Element>)} - * @nosideeffects - */ -jQuery.prototype.get = function(index) {}; - -/** - * @param {string} url - * @param {(Object.<string,*>|string| - * function(string,string,jQuery.jqXHR))=} data - * @param {(function(string,string,jQuery.jqXHR)|string)=} success - * @param {string=} dataType - * @return {jQuery.jqXHR} - */ -$.get = function(url, data, success, dataType) {}; - -/** - * @param {string} url - * @param {(Object.<string,*>| - * function(Object.<string,*>,string,jQuery.jqXHR))=} data - * @param {function(Object.<string,*>,string,jQuery.jqXHR)=} success - * @return {jQuery.jqXHR} - * @see http://api.jquery.com/jquery.getjson/#jQuery-getJSON-url-data-success - */ -jQuery.getJSON = function(url, data, success) {}; - -/** - * @param {string} url - * @param {(Object.<string,*>| - * function(Object.<string,*>,string,jQuery.jqXHR))=} data - * @param {function(Object.<string,*>,string,jQuery.jqXHR)=} success - * @return {jQuery.jqXHR} - * @see http://api.jquery.com/jquery.getjson/#jQuery-getJSON-url-data-success - */ -$.getJSON = function(url, data, success) {}; - -/** - * @param {string} url - * @param {function(Node,string,jQuery.jqXHR)=} success - * @return {jQuery.jqXHR} - */ -jQuery.getScript = function(url, success) {}; - -/** - * @param {string} url - * @param {function(Node,string,jQuery.jqXHR)=} success - * @return {jQuery.jqXHR} - */ -$.getScript = function(url, success) {}; - -/** @param {string} code */ -jQuery.globalEval = function(code) {}; - -/** @param {string} code */ -$.globalEval = function(code) {}; - -/** - * @param {Array.<*>} arr - * @param {function(*,number)} fnc - * @param {boolean=} invert - * @return {Array.<*>} - */ -jQuery.grep = function(arr, fnc, invert) {}; - -/** - * @param {Array.<*>} arr - * @param {function(*,number)} fnc - * @param {boolean=} invert - * @return {Array.<*>} - */ -$.grep = function(arr, fnc, invert) {}; - -/** - * @param {(string|Element)} arg1 - * @return {!jQuery} - * @nosideeffects - */ -jQuery.prototype.has = function(arg1) {}; - -/** - * @param {string} className - * @return {boolean} - * @nosideeffects - */ -jQuery.prototype.hasClass = function(className) {}; - -/** - * @param {Element} elem - * @return {boolean} - * @nosideeffects - */ -jQuery.hasData = function(elem) {}; - -/** - * @param {Element} elem - * @return {boolean} - * @nosideeffects - */ -$.hasData = function(elem) {}; - -/** - * @param {(string|number|function(number,number))=} arg1 - * @return {(number|!jQuery)} - */ -jQuery.prototype.height = function(arg1) {}; - -/** - * @param {(string|number|function())=} duration - * @param {(function()|string)=} arg2 - * @param {function()=} callback - * @return {!jQuery} - */ -jQuery.prototype.hide = function(duration, arg2, callback) {}; - -/** @param {boolean} hold */ -jQuery.holdReady = function(hold) {}; - -/** @param {boolean} hold */ -$.holdReady = function(hold) {}; - -/** - * @param {function(!jQuery.event=)} arg1 - * @param {function(!jQuery.event=)=} handlerOut - * @return {!jQuery} - */ -jQuery.prototype.hover = function(arg1, handlerOut) {}; - -/** - * @param {(string|function(number,string))=} arg1 - * @return {(string|!jQuery)} - */ -jQuery.prototype.html = function(arg1) {}; - -/** - * @param {*} value - * @param {Array.<*>} arr - * @param {number=} fromIndex - * @return {number} - * @nosideeffects - */ -jQuery.inArray = function(value, arr, fromIndex) {}; - -/** - * @param {*} value - * @param {Array.<*>} arr - * @param {number=} fromIndex - * @return {number} - * @nosideeffects - */ -$.inArray = function(value, arr, fromIndex) {}; - -/** - * @param {(jQuerySelector|Element|jQuery)=} arg1 - * @return {number} - */ -jQuery.prototype.index = function(arg1) {}; - -/** - * @return {number} - * @nosideeffects - */ -jQuery.prototype.innerHeight = function() {}; - -/** - * @return {number} - * @nosideeffects - */ -jQuery.prototype.innerWidth = function() {}; - -/** - * @param {(jQuerySelector|Element|jQuery)} target - * @return {!jQuery} - */ -jQuery.prototype.insertAfter = function(target) {}; - -/** - * @param {(jQuerySelector|Element|jQuery)} target - * @return {!jQuery} - */ -jQuery.prototype.insertBefore = function(target) {}; - -/** - * @param {(jQuerySelector|function(number)|jQuery|Element)} arg1 - * @return {boolean} - */ -jQuery.prototype.is = function(arg1) {}; - -/** - * @param {*} obj - * @return {boolean} - * @nosideeffects - */ -jQuery.isArray = function(obj) {}; - -/** - * @param {*} obj - * @return {boolean} - * @nosideeffects - */ -$.isArray = function(obj) {}; - -/** - * @param {Object} obj - * @return {boolean} - * @nosideeffects - */ -jQuery.isEmptyObject = function(obj) {}; - -/** - * @param {Object} obj - * @return {boolean} - * @nosideeffects - */ -$.isEmptyObject = function(obj) {}; - -/** - * @param {*} obj - * @return {boolean} - * @nosideeffects - */ -jQuery.isFunction = function(obj) {}; - -/** - * @param {*} obj - * @return {boolean} - * @nosideeffects - */ -$.isFunction = function(obj) {}; - -/** - * @param {*} value - * @return {boolean} - * @nosideeffects - */ -jQuery.isNumeric = function(value) {}; - -/** - * @param {*} value - * @return {boolean} - * @nosideeffects - */ -$.isNumeric = function(value) {}; - -/** - * @param {*} obj - * @return {boolean} - * @nosideeffects - */ -jQuery.isPlainObject = function(obj) {}; - -/** - * @param {*} obj - * @return {boolean} - * @nosideeffects - */ -$.isPlainObject = function(obj) {}; - -/** - * @param {*} obj - * @return {boolean} - * @nosideeffects - */ -jQuery.isWindow = function(obj) {}; - -/** - * @param {*} obj - * @return {boolean} - * @nosideeffects - */ -$.isWindow = function(obj) {}; - -/** - * @param {Element} node - * @return {boolean} - * @nosideeffects - */ -jQuery.isXMLDoc = function(node) {}; - -/** - * @param {Element} node - * @return {boolean} - * @nosideeffects - */ -$.isXMLDoc = function(node) {}; - -/** @type {string} */ -jQuery.prototype.jquery; - -/** - * @constructor - * @extends {XMLHttpRequest} - * @implements {jQuery.Promise} - * @private - * @see http://api.jquery.com/jQuery.ajax/#jqXHR - */ -jQuery.jqXHR = function () {}; - -/** - * @override - * @param {jQueryCallback} alwaysCallbacks - * @param {jQueryCallback=} alwaysCallbacks2 - * @return {jQuery.jqXHR} - */ -jQuery.jqXHR.prototype.always = - function(alwaysCallbacks, alwaysCallbacks2) {}; - -/** - * @deprecated - * @param {function()} callback - * @return {jQuery.jqXHR} -*/ -jQuery.jqXHR.prototype.complete = function (callback) {}; - -/** - * @override - * @param {jQueryCallback} doneCallbacks - * @return {jQuery.jqXHR} - */ -jQuery.jqXHR.prototype.done = function(doneCallbacks) {}; - -/** - * @deprecated - * @param {function()} callback - * @return {jQuery.jqXHR} -*/ -jQuery.jqXHR.prototype.error = function (callback) {}; - -/** - * @override - * @param {jQueryCallback} failCallbacks - * @return {jQuery.jqXHR} - */ -jQuery.jqXHR.prototype.fail = function(failCallbacks) {}; - -/** - * @deprecated - * @override - */ -jQuery.jqXHR.prototype.onreadystatechange = function (callback) {}; - -/** - * @override - * @param {function()=} doneFilter - * @param {function()=} failFilter - * @param {function()=} progressFilter - * @return {jQuery.jqXHR} - */ -jQuery.jqXHR.prototype.pipe = - function(doneFilter, failFilter, progressFilter) {}; - -/** - * @deprecated - * @param {function()} callback - * @return {jQuery.jqXHR} -*/ -jQuery.jqXHR.prototype.success = function (callback) {}; - -/** - * @override - * @param {jQueryCallback} doneCallbacks - * @param {jQueryCallback=} failCallbacks - * @param {jQueryCallback=} progressCallbacks - * @return {jQuery.jqXHR} - */ -jQuery.jqXHR.prototype.then = - function(doneCallbacks, failCallbacks, progressCallbacks) {}; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)=} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.keydown = function(arg1, handler) {}; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)=} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.keypress = function(arg1, handler) {}; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)=} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.keyup = function(arg1, handler) {}; - -/** @return {!jQuery} */ -jQuery.prototype.last = function() {}; - -/** @type {number} */ -jQuery.prototype.length; - -/** - * @deprecated Please avoid the document loading Event invocation of - * .load() and use .on( "load", handler ) instead. (The AJAX - * module invocation signature is OK.) - * @param {(function(!jQuery.event=)|Object.<string, *>|string)} arg1 - * @param {(function(!jQuery.event=)|Object.<string,*>|string)=} arg2 - * @param {function(string,string,XMLHttpRequest)=} complete - * @return {!jQuery} - */ -jQuery.prototype.load = function(arg1, arg2, complete) {}; - -/** - * @param {*} obj - * @return {Array.<*>} - */ -jQuery.makeArray = function(obj) {}; - -/** - * @param {*} obj - * @return {Array.<*>} - */ -$.makeArray = function(obj) {}; - -/** - * @param {(Array.<*>|Object.<string, *>)} arg1 - * @param {(function(*,number)|function(*,(string|number)))} callback - * @return {Array.<*>} - */ -jQuery.map = function(arg1, callback) {}; - -/** - * @param {function(number,Element)} callback - * @return {!jQuery} - */ -jQuery.prototype.map = function(callback) {}; - -/** - * @param {(Array.<*>|Object.<string, *>)} arg1 - * @param {(function(*,number)|function(*,(string|number)))} callback - * @return {Array.<*>} - */ -$.map = function(arg1, callback) {}; - -/** - * @param {Array.<*>} first - * @param {Array.<*>} second - * @return {Array.<*>} - */ -jQuery.merge = function(first, second) {}; - -/** - * @param {Array.<*>} first - * @param {Array.<*>} second - * @return {Array.<*>} - */ -$.merge = function(first, second) {}; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)=} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.mousedown = function(arg1, handler) {}; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)=} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.mouseenter = function(arg1, handler) {}; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)=} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.mouseleave = function(arg1, handler) {}; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)=} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.mousemove = function(arg1, handler) {}; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)=} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.mouseout = function(arg1, handler) {}; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)=} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.mouseover = function(arg1, handler) {}; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)=} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.mouseup = function(arg1, handler) {}; - -/** - * @param {jQuerySelector=} selector - * @return {!jQuery} - * @nosideeffects - */ -jQuery.prototype.next = function(selector) {}; - -/** - * @param {string=} selector - * @return {!jQuery} - * @nosideeffects - */ -jQuery.prototype.nextAll = function(selector) {}; - -/** - * @param {(jQuerySelector|Element)=} arg1 - * @param {jQuerySelector=} filter - * @return {!jQuery} - * @nosideeffects - */ -jQuery.prototype.nextUntil = function(arg1, filter) {}; - -/** - * @param {boolean=} removeAll - * @return {Object} - */ -jQuery.noConflict = function(removeAll) {}; - -/** - * @param {boolean=} removeAll - * @return {Object} - */ -$.noConflict = function(removeAll) {}; - -/** - * @return {function()} - * @nosideeffects - */ -jQuery.noop = function() {}; - -/** - * @return {function()} - * @nosideeffects - */ -$.noop = function() {}; - -/** - * @param {(jQuerySelector|Array.<Element>|function(number)|jQuery)} arg1 - * @return {!jQuery} - */ -jQuery.prototype.not = function(arg1) {}; - -/** - * @return {number} - * @nosideeffects - */ -jQuery.now = function() {}; - -/** - * @return {number} - * @nosideeffects - */ -$.now = function() {}; - -/** - * @param {(string|Object.<string,*>)=} arg1 - * @param {(string|function(!jQuery.event=))=} selector - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.off = function(arg1, selector, handler) {}; - -/** - * @param {({left:number,top:number}| - * function(number,{top:number,left:number}))=} arg1 - * @return {({left:number,top:number}|!jQuery)} - */ -jQuery.prototype.offset = function(arg1) {}; - -/** - * @return {!jQuery} - * @nosideeffects - */ -jQuery.prototype.offsetParent = function() {}; - -/** - * @param {(string|Object.<string,*>)} arg1 - * @param {*=} selector - * @param {*=} data - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.on = function(arg1, selector, data, handler) {}; - -/** - * @param {(string|Object.<string,*>)} arg1 - * @param {*=} arg2 - * @param {*=} arg3 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.one = function(arg1, arg2, arg3, handler) {}; - -/** - * @param {boolean=} includeMargin - * @return {number} - * @nosideeffects - */ -jQuery.prototype.outerHeight = function(includeMargin) {}; - -/** - * @param {boolean=} includeMargin - * @return {number} - * @nosideeffects - */ -jQuery.prototype.outerWidth = function(includeMargin) {}; - -/** - * @param {(Object.<string, *>|Array.<Object.<string, *>>)} obj - * @param {boolean=} traditional - * @return {string} - */ -jQuery.param = function(obj, traditional) {}; - -/** - * @param {(Object.<string, *>|Array.<Object.<string, *>>)} obj - * @param {boolean=} traditional - * @return {string} - */ -$.param = function(obj, traditional) {}; - -/** - * @param {jQuerySelector=} selector - * @return {!jQuery} - * @nosideeffects - */ -jQuery.prototype.parent = function(selector) {}; - -/** - * @param {jQuerySelector=} selector - * @return {!jQuery} - * @nosideeffects - */ -jQuery.prototype.parents = function(selector) {}; - -/** - * @param {(jQuerySelector|Element)=} arg1 - * @param {jQuerySelector=} filter - * @return {!jQuery} - * @nosideeffects - */ -jQuery.prototype.parentsUntil = function(arg1, filter) {}; - -/** - * @param {string} data - * @param {(Element|boolean)=} context - * @param {boolean=} keepScripts - * @return {Array.<Element>} - */ -jQuery.parseHTML = function(data, context, keepScripts) {}; - -/** - * @param {string} data - * @param {(Element|boolean)=} context - * @param {boolean=} keepScripts - * @return {Array.<Element>} - */ -$.parseHTML = function(data, context, keepScripts) {}; - -/** - * @param {string} json - * @return {string|number|Object.<string, *>|Array.<?>|boolean} - */ -jQuery.parseJSON = function(json) {}; - -/** - * @param {string} json - * @return {Object.<string, *>} - */ -$.parseJSON = function(json) {}; - -/** - * @param {string} data - * @return {Document} - */ -jQuery.parseXML = function(data) {}; - -/** - * @param {string} data - * @return {Document} - */ -$.parseXML = function(data) {}; - -/** - * @return {{left:number,top:number}} - * @nosideeffects - */ -jQuery.prototype.position = function() {}; - -/** - * @param {string} url - * @param {(Object.<string,*>|string| - * function(string,string,jQuery.jqXHR))=} data - * @param {(function(string,string,jQuery.jqXHR)|string)=} success - * @param {string=} dataType - * @return {jQuery.jqXHR} - */ -jQuery.post = function(url, data, success, dataType) {}; - -/** - * @param {string} url - * @param {(Object.<string,*>|string| - * function(string,string,jQuery.jqXHR))=} data - * @param {(function(string,string,jQuery.jqXHR)|string)=} success - * @param {string=} dataType - * @return {jQuery.jqXHR} - */ -$.post = function(url, data, success, dataType) {}; - -/** - * @param {(string|Element|jQuery|function(number,string))} arg1 - * @param {(string|Element|jQuery)=} content - * @return {!jQuery} - */ -jQuery.prototype.prepend = function(arg1, content) {}; - -/** - * @param {(jQuerySelector|Element|jQuery)} target - * @return {!jQuery} - */ -jQuery.prototype.prependTo = function(target) {}; - -/** - * @param {jQuerySelector=} selector - * @return {!jQuery} - * @nosideeffects - */ -jQuery.prototype.prev = function(selector) {}; - -/** - * @param {jQuerySelector=} selector - * @return {!jQuery} - * @nosideeffects - */ -jQuery.prototype.prevAll = function(selector) {}; - -/** - * @param {(jQuerySelector|Element)=} arg1 - * @param {jQuerySelector=} filter - * @return {!jQuery} - * @nosideeffects - */ -jQuery.prototype.prevUntil = function(arg1, filter) {}; - -/** - * @param {(string|Object)=} type - * @param {Object=} target - * @return {jQuery.Promise} - */ -jQuery.prototype.promise = function(type, target) {}; - -/** - * @interface - * @private - * @see http://api.jquery.com/Types/#Promise - */ -jQuery.Promise = function () {}; - -/** - * @param {jQueryCallback} alwaysCallbacks - * @param {jQueryCallback=} alwaysCallbacks2 - * @return {jQuery.Promise} - */ -jQuery.Promise.prototype.always = - function(alwaysCallbacks, alwaysCallbacks2) {}; - -/** - * @param {jQueryCallback} doneCallbacks - * @return {jQuery.Promise} - */ -jQuery.Promise.prototype.done = function(doneCallbacks) {}; - -/** - * @param {jQueryCallback} failCallbacks - * @return {jQuery.Promise} - */ -jQuery.Promise.prototype.fail = function(failCallbacks) {}; - -/** - * @param {function()=} doneFilter - * @param {function()=} failFilter - * @param {function()=} progressFilter - * @return {jQuery.Promise} - */ -jQuery.Promise.prototype.pipe = - function(doneFilter, failFilter, progressFilter) {}; - -/** - * @param {jQueryCallback} doneCallbacks - * @param {jQueryCallback=} failCallbacks - * @param {jQueryCallback=} progressCallbacks - * @return {jQuery.Promise} - */ -jQuery.Promise.prototype.then = - function(doneCallbacks, failCallbacks, progressCallbacks) {}; - -/** - * @param {(string|Object.<string,*>)} arg1 - * @param {(string|number|boolean|function(number,String))=} arg2 - * @return {(string|boolean|!jQuery)} - */ -jQuery.prototype.prop = function(arg1, arg2) {}; - -/** - * @param {...*} var_args - * @return {function()} - */ -jQuery.proxy = function(var_args) {}; - -/** - * @param {...*} var_args - * @return {function()} - */ -$.proxy = function(var_args) {}; - -/** - * @param {Array.<Element>} elements - * @param {string=} name - * @param {Array.<*>=} args - * @return {!jQuery} - */ -jQuery.prototype.pushStack = function(elements, name, args) {}; - -/** - * @param {(string|Array.<function()>|function(function()))=} queueName - * @param {(Array.<function()>|function(function()))=} arg2 - * @return {(Array.<Element>|!jQuery)} - */ -jQuery.prototype.queue = function(queueName, arg2) {}; - -/** - * @param {Element} elem - * @param {string=} queueName - * @param {(Array.<function()>|function())=} arg3 - * @return {(Array.<Element>|!jQuery)} - */ -jQuery.queue = function(elem, queueName, arg3) {}; - -/** - * @param {Element} elem - * @param {string=} queueName - * @param {(Array.<function()>|function())=} arg3 - * @return {(Array.<Element>|!jQuery)} - */ -$.queue = function(elem, queueName, arg3) {}; - -/** - * @param {function()} handler - * @return {!jQuery} - */ -jQuery.prototype.ready = function(handler) {}; - -/** - * @param {string=} selector - * @return {!jQuery} - */ -jQuery.prototype.remove = function(selector) {}; - -/** - * @param {string} attributeName - * @return {!jQuery} - */ -jQuery.prototype.removeAttr = function(attributeName) {}; - -/** - * @param {(string|function(number,string))=} arg1 - * @return {!jQuery} - */ -jQuery.prototype.removeClass = function(arg1) {}; - -/** - * @param {(string|Array.<string>)=} arg1 - * @return {!jQuery} - */ -jQuery.prototype.removeData = function(arg1) {}; - -/** - * @param {Element} elem - * @param {string=} name - * @return {!jQuery} - */ -jQuery.removeData = function(elem, name) {}; - -/** - * @param {Element} elem - * @param {string=} name - * @return {!jQuery} - */ -$.removeData = function(elem, name) {}; - -/** - * @param {string} propertyName - * @return {!jQuery} - */ -jQuery.prototype.removeProp = function(propertyName) {}; - -/** - * @param {jQuerySelector} target - * @return {!jQuery} - */ -jQuery.prototype.replaceAll = function(target) {}; - -/** - * @param {(string|Element|jQuery|function())} arg1 - * @return {!jQuery} - */ -jQuery.prototype.replaceWith = function(arg1) {}; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)=} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.resize = function(arg1, handler) {}; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)=} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.scroll = function(arg1, handler) {}; - -/** - * @param {number=} value - * @return {(number|!jQuery)} - */ -jQuery.prototype.scrollLeft = function(value) {}; - -/** - * @param {number=} value - * @return {(number|!jQuery)} - */ -jQuery.prototype.scrollTop = function(value) {}; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)=} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.select = function(arg1, handler) {}; - -/** - * @return {string} - * @nosideeffects - */ -jQuery.prototype.serialize = function() {}; - -/** - * @return {Array.<Object.<string, *>>} - * @nosideeffects - */ -jQuery.prototype.serializeArray = function() {}; - -/** - * @param {(string|number|function())=} duration - * @param {(function()|string)=} arg2 - * @param {function()=} callback - * @return {!jQuery} - */ -jQuery.prototype.show = function(duration, arg2, callback) {}; - -/** - * @param {jQuerySelector=} selector - * @return {!jQuery} - * @nosideeffects - */ -jQuery.prototype.siblings = function(selector) {}; - -/** - * @deprecated Please use the .length property instead. - * @return {number} - * @nosideeffects - */ -jQuery.prototype.size = function() {}; - -/** - * @param {number} start - * @param {number=} end - * @return {!jQuery} - */ -jQuery.prototype.slice = function(start, end) {}; - -/** - * @param {(Object.<string,*>|string|number)=} optionsOrDuration - * @param {(function()|string)=} completeOrEasing - * @param {function()=} complete - * @return {!jQuery} - */ -jQuery.prototype.slideDown = - function(optionsOrDuration, completeOrEasing, complete) {}; - -/** - * @param {(Object.<string,*>|string|number)=} optionsOrDuration - * @param {(function()|string)=} completeOrEasing - * @param {function()=} complete - * @return {!jQuery} - */ -jQuery.prototype.slideToggle = - function(optionsOrDuration, completeOrEasing, complete) {}; - -/** - * @param {(Object.<string,*>|string|number)=} optionsOrDuration - * @param {(function()|string)=} completeOrEasing - * @param {function()=} complete - * @return {!jQuery} - */ -jQuery.prototype.slideUp = - function(optionsOrDuration, completeOrEasing, complete) {}; - -/** - * @param {(boolean|string)=} arg1 - * @param {boolean=} arg2 - * @param {boolean=} jumpToEnd - * @return {!jQuery} - */ -jQuery.prototype.stop = function(arg1, arg2, jumpToEnd) {}; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)=} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.submit = function(arg1, handler) {}; - -/** @type {Object.<string, *>} - * @deprecated Please try to use feature detection instead. - */ -jQuery.support; - -/** @type {Object.<string, *>} - * @deprecated Please try to use feature detection instead. - */ -$.support; - -/** - * @deprecated Please try to use feature detection instead. - * @type {boolean} - */ -jQuery.support.boxModel; - -/** - * @deprecated Please try to use feature detection instead. - * @type {boolean} - */ -$.support.boxModel; - -/** @type {boolean} */ -jQuery.support.changeBubbles; - -/** @type {boolean} */ -$.support.changeBubbles; - -/** @type {boolean} */ -jQuery.support.cors; - -/** @type {boolean} */ -$.support.cors; - -/** @type {boolean} */ -jQuery.support.cssFloat; - -/** @type {boolean} */ -$.support.cssFloat; - -/** @type {boolean} */ -jQuery.support.hrefNormalized; - -/** @type {boolean} */ -$.support.hrefNormalized; - -/** @type {boolean} */ -jQuery.support.htmlSerialize; - -/** @type {boolean} */ -$.support.htmlSerialize; - -/** @type {boolean} */ -jQuery.support.leadingWhitespace; - -/** @type {boolean} */ -$.support.leadingWhitespace; - -/** @type {boolean} */ -jQuery.support.noCloneEvent; - -/** @type {boolean} */ -$.support.noCloneEvent; - -/** @type {boolean} */ -jQuery.support.opacity; - -/** @type {boolean} */ -$.support.opacity; - -/** @type {boolean} */ -jQuery.support.style; - -/** @type {boolean} */ -$.support.style; - -/** @type {boolean} */ -jQuery.support.submitBubbles; - -/** @type {boolean} */ -$.support.submitBubbles; - -/** @type {boolean} */ -jQuery.support.tbody; - -/** @type {boolean} */ -$.support.tbody; - -/** - * @param {(string|function(number,string))=} arg1 - * @return {(string|!jQuery)} - */ -jQuery.prototype.text = function(arg1) {}; - -/** - * @return {Array.<Element>} - * @nosideeffects - */ -jQuery.prototype.toArray = function() {}; - -/** - * Refers to the method from the Effects category. There used to be a toggle - * method on the Events category which was removed starting version 1.9. - * @param {(number|string|Object.<string,*>|boolean)=} arg1 - * @param {(function()|string)=} arg2 - * @param {function()=} arg3 - * @return {!jQuery} - */ -jQuery.prototype.toggle = function(arg1, arg2, arg3) {}; - -/** - * @param {(string|boolean|function(number,string,boolean))=} arg1 - * @param {boolean=} flag - * @return {!jQuery} - */ -jQuery.prototype.toggleClass = function(arg1, flag) {}; - -/** - * @param {(string|jQuery.event)} arg1 - * @param {...*} var_args - * @return {!jQuery} - */ -jQuery.prototype.trigger = function(arg1, var_args) {}; - -/** - * @param {string|jQuery.event} eventType - * @param {Array.<*>=} extraParameters - * @return {*} - */ -jQuery.prototype.triggerHandler = function(eventType, extraParameters) {}; - -/** - * @param {string} str - * @return {string} - * @nosideeffects - */ -jQuery.trim = function(str) {}; - -/** - * @param {string} str - * @return {string} - * @nosideeffects - */ -$.trim = function(str) {}; - -/** - * @param {*} obj - * @return {string} - * @nosideeffects - */ -jQuery.type = function(obj) {}; - -/** - * @param {*} obj - * @return {string} - * @nosideeffects - */ -$.type = function(obj) {}; - -/** - * @param {(string|function(!jQuery.event=)|jQuery.event)=} arg1 - * @param {(function(!jQuery.event=)|boolean)=} arg2 - * @return {!jQuery} - */ -jQuery.prototype.unbind = function(arg1, arg2) {}; - -/** - * @param {string=} arg1 - * @param {(string|Object.<string,*>)=} arg2 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.undelegate = function(arg1, arg2, handler) {}; - -/** - * @param {Array.<Element>} arr - * @return {Array.<Element>} - */ -jQuery.unique = function(arr) {}; - -/** - * @param {Array.<Element>} arr - * @return {Array.<Element>} - */ -$.unique = function(arr) {}; - -/** - * @deprecated Please use .on( "unload", handler ) instead. - * @param {(function(!jQuery.event=)|Object.<string, *>)} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.unload = function(arg1, handler) {}; - -/** @return {!jQuery} */ -jQuery.prototype.unwrap = function() {}; - -/** - * @param {(string|Array.<string>|function(number,*))=} arg1 - * @return {(string|number|Array.<string>|!jQuery)} - */ -jQuery.prototype.val = function(arg1) {}; - -/** - * Note: The official documentation (https://api.jquery.com/jQuery.when/) says - * jQuery.when accepts deferreds, but it actually accepts any type, e.g.: - * - * jQuery.when(jQuery.ready, jQuery.ajax(''), jQuery('#my-element'), 1) - * - * If an argument is not an "observable" (a promise-like object) it is wrapped - * into a promise. - * @param {*} deferred - * @param {...*} deferreds - * @return {jQuery.Promise} - */ -jQuery.when = function(deferred, deferreds) {}; - -/** - * Note: See jQuery.when(). - * @param {*} deferred - * @param {...*} deferreds - * @return {jQuery.Promise} - */ -$.when = function(deferred, deferreds) {}; - -/** - * @param {(string|number|function(number,number))=} arg1 - * @return {(number|!jQuery)} - */ -jQuery.prototype.width = function(arg1) {}; - -/** - * @param {(string|jQuerySelector|Element|jQuery|function(number))} arg1 - * @return {!jQuery} - */ -jQuery.prototype.wrap = function(arg1) {}; - -/** - * @param {(string|jQuerySelector|Element|jQuery)} wrappingElement - * @return {!jQuery} - */ -jQuery.prototype.wrapAll = function(wrappingElement) {}; - -/** - * @param {(string|jQuerySelector|Element|jQuery|function(number))} arg1 - * @return {!jQuery} - */ -jQuery.prototype.wrapInner = function(arg1) {}; diff --git a/js/modal.js b/js/modal.js deleted file mode 100644 index fb4cd03296..0000000000 --- a/js/modal.js +++ /dev/null @@ -1,598 +0,0 @@ -/** ======================================================================= - * Bootstrap: modal.js v4.0.0 - * http://getbootstrap.com/javascript/#modal - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== - * @fileoverview - Bootstrap's modal plugin. Modals are streamlined, but - * flexible, dialog prompts with the minimum required functionality and - * smart defaults. - * - * Public Methods & Properties: - * - * + $.modal - * + $.modal.noConflict - * + $.modal.Constructor - * + $.modal.Constructor.VERSION - * + $.modal.Constructor.Defaults - * + $.modal.Constructor.Defaults.backdrop - * + $.modal.Constructor.Defaults.keyboard - * + $.modal.Constructor.Defaults.show - * + $.modal.Constructor.prototype.toggle - * + $.modal.Constructor.prototype.show - * + $.modal.Constructor.prototype.hide - * - * ======================================================================== - */ - -'use strict'; - - -/** - * Our modal class. - * @param {Element} element - * @param {Object} config - * @constructor - */ -var Modal = function (element, config) { - - /** @private {Object} */ - this._config = config - - /** @private {Element} */ - this._element = element - - /** @private {Element} */ - this._backdrop = null - - /** @private {boolean} */ - this._isShown = false - - /** @private {boolean} */ - this._isBodyOverflowing = false - - /** @private {number} */ - this._scrollbarWidth = 0 - -} - - -/** - * @const - * @type {string} - */ -Modal['VERSION'] = '4.0.0' - - -/** - * @const - * @type {Object} - */ -Modal['Defaults'] = { - 'backdrop' : true, - 'keyboard' : true, - 'show' : true -} - - -/** - * @const - * @type {string} - * @private - */ -Modal._NAME = 'modal' - - -/** - * @const - * @type {string} - * @private - */ -Modal._DATA_KEY = 'bs.modal' - - -/** - * @const - * @type {number} - * @private - */ -Modal._TRANSITION_DURATION = 300 - - -/** - * @const - * @type {number} - * @private - */ -Modal._BACKDROP_TRANSITION_DURATION = 150 - - -/** - * @const - * @type {Function} - * @private - */ -Modal._JQUERY_NO_CONFLICT = $.fn[Modal._NAME] - - -/** - * @const - * @enum {string} - * @private - */ -Modal._Event = { - HIDE : 'hide.bs.modal', - HIDDEN : 'hidden.bs.modal', - SHOW : 'show.bs.modal', - SHOWN : 'shown.bs.modal' -} - - -/** - * @const - * @enum {string} - * @private - */ -Modal._ClassName = { - BACKDROP : 'modal-backdrop', - OPEN : 'modal-open', - FADE : 'fade', - IN : 'in' -} - - -/** - * @const - * @enum {string} - * @private - */ -Modal._Selector = { - DIALOG : '.modal-dialog', - DATA_TOGGLE : '[data-toggle="modal"]', - DATA_DISMISS : '[data-dismiss="modal"]', - SCROLLBAR_MEASURER : 'modal-scrollbar-measure' -} - - - -/** - * Provides the jQuery Interface for the alert component. - * @param {Object|string=} opt_config - * @param {Element=} opt_relatedTarget - * @this {jQuery} - * @return {jQuery} - * @private - */ -Modal._jQueryInterface = function Plugin(opt_config, opt_relatedTarget) { - return this.each(function () { - var data = $(this).data(Modal._DATA_KEY) - var config = $.extend({}, Modal['Defaults'], $(this).data(), typeof opt_config == 'object' && opt_config) - - if (!data) { - data = new Modal(this, config) - $(this).data(Modal._DATA_KEY, data) - } - - if (typeof opt_config == 'string') { - data[opt_config](opt_relatedTarget) - - } else if (config['show']) { - data['show'](opt_relatedTarget) - } - }) -} - - -/** - * @param {Element} relatedTarget - */ -Modal.prototype['toggle'] = function (relatedTarget) { - return this._isShown ? this['hide']() : this['show'](relatedTarget) -} - - -/** - * @param {Element} relatedTarget - */ -Modal.prototype['show'] = function (relatedTarget) { - var showEvent = $.Event(Modal._Event.SHOW, { relatedTarget: relatedTarget }) - - $(this._element).trigger(showEvent) - - if (this._isShown || showEvent.isDefaultPrevented()) { - return - } - - this._isShown = true - - this._checkScrollbar() - this._setScrollbar() - - $(document.body).addClass(Modal._ClassName.OPEN) - - this._escape() - this._resize() - - $(this._element).on('click.dismiss.bs.modal', Modal._Selector.DATA_DISMISS, this['hide'].bind(this)) - - this._showBackdrop(this._showElement.bind(this, relatedTarget)) -} - - -/** - * @param {Event} event - */ -Modal.prototype['hide'] = function (event) { - if (event) { - event.preventDefault() - } - - var hideEvent = $.Event(Modal._Event.HIDE) - - $(this._element).trigger(hideEvent) - - if (!this._isShown || hideEvent.isDefaultPrevented()) { - return - } - - this._isShown = false - - this._escape() - this._resize() - - $(document).off('focusin.bs.modal') - - $(this._element).removeClass(Modal._ClassName.IN) - this._element.setAttribute('aria-hidden', true) - - $(this._element).off('click.dismiss.bs.modal') - - if (Bootstrap.transition && $(this._element).hasClass(Modal._ClassName.FADE)) { - $(this._element) - .one(Bootstrap.TRANSITION_END, this._hideModal.bind(this)) - .emulateTransitionEnd(Modal._TRANSITION_DURATION) - } else { - this._hideModal() - } -} - - -/** - * @param {Element} relatedTarget - * @private - */ -Modal.prototype._showElement = function (relatedTarget) { - var transition = Bootstrap.transition && $(this._element).hasClass(Modal._ClassName.FADE) - - if (!this._element.parentNode || this._element.parentNode.nodeType != Node.ELEMENT_NODE) { - document.body.appendChild(this._element) // don't move modals dom position - } - - this._element.style.display = 'block' - this._element.scrollTop = 0 - - if (this._config['backdrop']) { - this._adjustBackdrop() - } - - if (transition) { - Bootstrap.reflow(this._element) - } - - $(this._element).addClass(Modal._ClassName.IN) - this._element.setAttribute('aria-hidden', false) - - this._enforceFocus() - - var shownEvent = $.Event(Modal._Event.SHOWN, { relatedTarget: relatedTarget }) - - var transitionComplete = function () { - this._element.focus() - $(this._element).trigger(shownEvent) - }.bind(this) - - if (transition) { - var dialog = $(this._element).find(Modal._Selector.DIALOG)[0] - $(dialog) - .one(Bootstrap.TRANSITION_END, transitionComplete) - .emulateTransitionEnd(Modal._TRANSITION_DURATION) - } else { - transitionComplete() - } -} - - - -/** - * @private - */ -Modal.prototype._enforceFocus = function () { - $(document) - .off('focusin.bs.modal') // guard against infinite focus loop - .on('focusin.bs.modal', function (e) { - if (this._element !== e.target && !$(this._element).has(e.target).length) { - this._element.focus() - } - }.bind(this)) -} - - -/** - * @private - */ -Modal.prototype._escape = function () { - if (this._isShown && this._config['keyboard']) { - $(this._element).on('keydown.dismiss.bs.modal', function (event) { - if (event.which === 27) { - this['hide']() - } - }.bind(this)) - - } else if (!this._isShown) { - $(this._element).off('keydown.dismiss.bs.modal') - } -} - - -/** - * @private - */ -Modal.prototype._resize = function () { - if (this._isShown) { - $(window).on('resize.bs.modal', this._handleUpdate.bind(this)) - } else { - $(window).off('resize.bs.modal') - } -} - - -/** - * @private - */ -Modal.prototype._hideModal = function () { - this._element.style.display = 'none' - this._showBackdrop(function () { - $(document.body).removeClass(Modal._ClassName.OPEN) - this._resetAdjustments() - this._resetScrollbar() - $(this._element).trigger(Modal._Event.HIDDEN) - }.bind(this)) -} - - -/** - * @private - */ -Modal.prototype._removeBackdrop = function () { - if (this._backdrop) { - this._backdrop.parentNode.removeChild(this._backdrop) - this._backdrop = null - } -} - - -/** - * @param {Function} callback - * @private - */ -Modal.prototype._showBackdrop = function (callback) { - var animate = $(this._element).hasClass(Modal._ClassName.FADE) ? Modal._ClassName.FADE : '' - - if (this._isShown && this._config['backdrop']) { - var doAnimate = Bootstrap.transition && animate - - this._backdrop = document.createElement('div') - this._backdrop.className = Modal._ClassName.BACKDROP - - if (animate) { - $(this._backdrop).addClass(animate) - } - - $(this._element).prepend(this._backdrop) - - $(this._backdrop).on('click.dismiss.bs.modal', function (event) { - if (event.target !== event.currentTarget) return - this._config['backdrop'] === 'static' - ? this._element.focus() - : this['hide']() - }.bind(this)) - - if (doAnimate) { - Bootstrap.reflow(this._backdrop) - } - - $(this._backdrop).addClass(Modal._ClassName.IN) - - if (!callback) { - return - } - - if (!doAnimate) { - callback() - return - } - - $(this._backdrop) - .one(Bootstrap.TRANSITION_END, callback) - .emulateTransitionEnd(Modal._BACKDROP_TRANSITION_DURATION) - - } else if (!this._isShown && this._backdrop) { - $(this._backdrop).removeClass(Modal._ClassName.IN) - - var callbackRemove = function () { - this._removeBackdrop() - if (callback) { - callback() - } - }.bind(this) - - if (Bootstrap.transition && $(this._element).hasClass(Modal._ClassName.FADE)) { - $(this._backdrop) - .one(Bootstrap.TRANSITION_END, callbackRemove) - .emulateTransitionEnd(Modal._BACKDROP_TRANSITION_DURATION) - } else { - callbackRemove() - } - - } else if (callback) { - callback() - } -} - - -/** - * ------------------------------------------------------------------------ - * the following methods are used to handle overflowing modals - * todo (fat): these should probably be refactored into a - * ------------------------------------------------------------------------ - */ - - -/** - * @private - */ -Modal.prototype._handleUpdate = function () { - if (this._config['backdrop']) this._adjustBackdrop() - this._adjustDialog() -} - -/** - * @private - */ -Modal.prototype._adjustBackdrop = function () { - this._backdrop.style.height = 0 // todo (fat): no clue why we do this - this._backdrop.style.height = this._element.scrollHeight + 'px' -} - - -/** - * @private - */ -Modal.prototype._adjustDialog = function () { - var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight - - if (!this._isBodyOverflowing && isModalOverflowing) { - this._element.style.paddingLeft = this._scrollbarWidth + 'px' - } - - if (this._isBodyOverflowing && !isModalOverflowing) { - this._element.style.paddingRight = this._scrollbarWidth + 'px' - } -} - - -/** - * @private - */ -Modal.prototype._resetAdjustments = function () { - this._element.style.paddingLeft = '' - this._element.style.paddingRight = '' -} - - -/** - * @private - */ -Modal.prototype._checkScrollbar = function () { - this._isBodyOverflowing = document.body.scrollHeight > document.documentElement.clientHeight - this._scrollbarWidth = this._getScrollbarWidth() -} - - -/** - * @private - */ -Modal.prototype._setScrollbar = function () { - var bodyPadding = parseInt(($(document.body).css('padding-right') || 0), 10) - - if (this._isBodyOverflowing) { - document.body.style.paddingRight = bodyPadding + this._scrollbarWidth + 'px' - } -} - - -/** - * @private - */ -Modal.prototype._resetScrollbar = function () { - document.body.style.paddingRight = '' -} - - -/** - * @private - */ -Modal.prototype._getScrollbarWidth = function () { // thx walsh - var scrollDiv = document.createElement('div') - scrollDiv.className = Modal._Selector.SCROLLBAR_MEASURER - document.body.appendChild(scrollDiv) - var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth - document.body.removeChild(scrollDiv) - return scrollbarWidth -} - - -/** - * ------------------------------------------------------------------------ - * jQuery Interface + noConflict implementaiton - * ------------------------------------------------------------------------ - */ - -/** - * @const - * @type {Function} - */ -$.fn[Modal._NAME] = Modal._jQueryInterface - - -/** - * @const - * @type {Function} - */ -$.fn[Modal._NAME]['Constructor'] = Modal - - -/** - * @const - * @type {Function} - */ -$.fn[Modal._NAME]['noConflict'] = function () { - $.fn[Modal._NAME] = Modal._JQUERY_NO_CONFLICT - return this -} - - -/** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - -$(document).on('click.bs.modal.data-api', Modal._Selector.DATA_TOGGLE, function (event) { - var selector = Bootstrap.getSelectorFromElement(this) - - if (selector) { - var target = $(selector)[0] - } - - var config = $(target).data(Modal._DATA_KEY) ? 'toggle' : $.extend({}, $(target).data(), $(this).data()) - - if (this.tagName == 'A') { - event.preventDefault() - } - - var $target = $(target).one(Modal._Event.SHOW, function (showEvent) { - if (showEvent.isDefaultPrevented()) { - return // only register focus restorer if modal will actually get shown - } - - $target.one(Modal._Event.HIDDEN, function () { - if ($(this).is(':visible')) { - this.focus() - } - }.bind(this)) - }.bind(this)) - - Modal._jQueryInterface.call($(target), config, this) -}) diff --git a/js/popover.js b/js/popover.js deleted file mode 100644 index 5663355516..0000000000 --- a/js/popover.js +++ /dev/null @@ -1,283 +0,0 @@ -/** ======================================================================= - * Bootstrap: popover.js v4.0.0 - * http://getbootstrap.com/javascript/#popovers - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== - * @fileoverview - Bootstrap's popover plugin - extends tooltip. - * - * Public Methods & Properties: - * - * + $.popover - * + $.popover.noConflict - * + $.popover.Constructor - * + $.popover.Constructor.VERSION - * + $.popover.Constructor.Defaults - * + $.popover.Constructor.Defaults.container - * + $.popover.Constructor.Defaults.animation - * + $.popover.Constructor.Defaults.placement - * + $.popover.Constructor.Defaults.selector - * + $.popover.Constructor.Defaults.template - * + $.popover.Constructor.Defaults.trigger - * + $.popover.Constructor.Defaults.title - * + $.popover.Constructor.Defaults.content - * + $.popover.Constructor.Defaults.delay - * + $.popover.Constructor.Defaults.html - * + $.popover.Constructor.Defaults.viewport - * + $.popover.Constructor.Defaults.viewport.selector - * + $.popover.Constructor.Defaults.viewport.padding - * + $.popover.Constructor.prototype.enable - * + $.popover.Constructor.prototype.disable - * + $.popover.Constructor.prototype.destroy - * + $.popover.Constructor.prototype.toggleEnabled - * + $.popover.Constructor.prototype.toggle - * + $.popover.Constructor.prototype.show - * + $.popover.Constructor.prototype.hide - * - * ======================================================================== - */ - - -'use strict'; - - -if (!Tooltip) throw new Error('Popover requires tooltip.js') - - -/** - * Our tooltip class. - * @param {Element!} element - * @param {Object=} opt_config - * @constructor - * @extends {Tooltip} - */ -var Popover = function (element, opt_config) { - Tooltip.apply(this, arguments) -} -Bootstrap.inherits(Popover, Tooltip) - - -/** - * @const - * @type {string} - */ -Popover['VERSION'] = '4.0.0' - - -/** - * @const - * @type {Object} - */ -Popover['Defaults'] = $.extend({}, $.fn['tooltip']['Constructor']['Defaults'], { - 'placement': 'right', - 'trigger': 'click', - 'content': '', - 'template': '<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>' -}) - - -/** - * @const - * @type {string} - * @private - */ -Popover._NAME = 'popover' - - -/** - * @const - * @type {string} - * @private - */ -Popover._DATA_KEY = 'bs.popover' - - -/** - * @const - * @enum {string} - * @private - */ -Popover._Event = { - HIDE : 'hide.bs.popover', - HIDDEN : 'hidden.bs.popover', - SHOW : 'show.bs.popover', - SHOWN : 'shown.bs.popover' -} - - -/** - * @const - * @enum {string} - * @private - */ -Popover._ClassName = { - FADE : 'fade', - IN : 'in' -} - - -/** - * @const - * @enum {string} - * @private - */ -Popover._Selector = { - TITLE : '.popover-title', - CONTENT : '.popover-content', - ARROW : '.popover-arrow' -} - - -/** - * @const - * @type {Function} - * @private - */ -Popover._JQUERY_NO_CONFLICT = $.fn[Popover._NAME] - - -/** - * @param {Object|string=} opt_config - * @this {jQuery} - * @return {jQuery} - * @private - */ -Popover._jQueryInterface = function (opt_config) { - return this.each(function () { - var data = $(this).data(Popover._DATA_KEY) - var config = typeof opt_config === 'object' ? opt_config : null - - if (!data && opt_config === 'destroy') { - return - } - - if (!data) { - data = new Popover(this, config) - $(this).data(Popover._DATA_KEY, data) - } - - if (typeof opt_config === 'string') { - data[opt_config]() - } - }) -} - - -/** - * @return {string} - * @protected - */ -Popover.prototype.getName = function () { - return Popover._NAME -} - - -/** - * @override - */ -Popover.prototype.getDataKey = function () { - return Popover._DATA_KEY -} - - -/** - * @override - */ -Popover.prototype.getEventObject = function () { - return Popover._Event -} - - -/** - * @override - */ -Popover.prototype.getArrowElement = function () { - return (this.arrow = this.arrow || $(this.getTipElement()).find(Popover._Selector.ARROW)[0]) -} - - -/** - * @override - */ -Popover.prototype.setContent = function () { - var tip = this.getTipElement() - var title = this.getTitle() - var content = this._getContent() - var titleElement = $(tip).find(Popover._Selector.TITLE)[0] - - if (titleElement) { - titleElement[this.config['html'] ? 'innerHTML' : 'innerText'] = title - } - - // we use append for html objects to maintain js events - $(tip).find(Popover._Selector.CONTENT).children().detach().end()[ - this.config['html'] ? (typeof content == 'string' ? 'html' : 'append') : 'text' - ](content) - - $(tip) - .removeClass(Popover._ClassName.FADE) - .removeClass(Popover._ClassName.IN) - - for (var direction in Tooltip.Direction) { - $(tip).removeClass(Popover._NAME + '-' + Tooltip.Direction[direction]) - } -} - - -/** - * @override - */ -Popover.prototype.isWithContent = function () { - return this.getTitle() || this._getContent() -} - - -/** - * @override - */ -Popover.prototype.getTipElement = function () { - return (this.tip = this.tip || $(this.config['template'])[0]) -} - - -/** - * @private - */ -Popover.prototype._getContent = function () { - return this.element.getAttribute('data-content') - || (typeof this.config['content'] == 'function' ? - this.config['content'].call(this.element) : - this.config['content']) -} - - - -/** - * ------------------------------------------------------------------------ - * jQuery Interface + noConflict implementaiton - * ------------------------------------------------------------------------ - */ - -/** - * @const - * @type {Function} - */ -$.fn[Popover._NAME] = Popover._jQueryInterface - - -/** - * @const - * @type {Function} - */ -$.fn[Popover._NAME]['Constructor'] = Popover - - -/** - * @const - * @type {Function} - */ -$.fn[Popover._NAME]['noConflict'] = function () { - $.fn[Popover._NAME] = Popover._JQUERY_NO_CONFLICT - return this -} diff --git a/js/scrollspy.js b/js/scrollspy.js deleted file mode 100644 index 150241b540..0000000000 --- a/js/scrollspy.js +++ /dev/null @@ -1,346 +0,0 @@ -/** ======================================================================= - * Bootstrap: scrollspy.js v4.0.0 - * http://getbootstrap.com/javascript/#scrollspy - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== - * @fileoverview - Bootstrap's scrollspy plugin. - * - * Public Methods & Properties: - * - * + $.scrollspy - * + $.scrollspy.noConflict - * + $.scrollspy.Constructor - * + $.scrollspy.Constructor.VERSION - * + $.scrollspy.Constructor.Defaults - * + $.scrollspy.Constructor.Defaults.offset - * + $.scrollspy.Constructor.prototype.refresh - * - * ======================================================================== - */ - -'use strict'; - - -/** - * Our scrollspy class. - * @param {Element!} element - * @param {Object=} opt_config - * @constructor - */ -function ScrollSpy(element, opt_config) { - - /** @private {Element|Window} */ - this._scrollElement = element.tagName == 'BODY' ? window : element - - /** @private {Object} */ - this._config = $.extend({}, ScrollSpy['Defaults'], opt_config) - - /** @private {string} */ - this._selector = (this._config.target || '') + ' .nav li > a' - - /** @private {Array} */ - this._offsets = [] - - /** @private {Array} */ - this._targets = [] - - /** @private {Element} */ - this._activeTarget = null - - /** @private {number} */ - this._scrollHeight = 0 - - $(this._scrollElement).on('scroll.bs.scrollspy', this._process.bind(this)) - - this['refresh']() - - this._process() -} - - -/** - * @const - * @type {string} - */ -ScrollSpy['VERSION'] = '4.0.0' - - -/** - * @const - * @type {Object} - */ -ScrollSpy['Defaults'] = { - 'offset': 10 -} - - -/** - * @const - * @type {string} - * @private - */ -ScrollSpy._NAME = 'scrollspy' - - -/** - * @const - * @type {string} - * @private - */ -ScrollSpy._DATA_KEY = 'bs.scrollspy' - - -/** - * @const - * @type {Function} - * @private - */ -ScrollSpy._JQUERY_NO_CONFLICT = $.fn[ScrollSpy._NAME] - - -/** - * @const - * @enum {string} - * @private - */ -ScrollSpy._Event = { - ACTIVATE: 'activate.bs.scrollspy' -} - - -/** - * @const - * @enum {string} - * @private - */ -ScrollSpy._ClassName = { - DROPDOWN_MENU : 'dropdown-menu', - ACTIVE : 'active' -} - - -/** - * @const - * @enum {string} - * @private - */ -ScrollSpy._Selector = { - DATA_SPY : '[data-spy="scroll"]', - ACTIVE : '.active', - LI_DROPDOWN : 'li.dropdown', - LI : 'li' -} - - -/** - * @param {Object=} opt_config - * @this {jQuery} - * @return {jQuery} - * @private - */ -ScrollSpy._jQueryInterface = function (opt_config) { - return this.each(function () { - var data = $(this).data(ScrollSpy._DATA_KEY) - var config = typeof opt_config === 'object' && opt_config || null - - if (!data) { - data = new ScrollSpy(this, config) - $(this).data(ScrollSpy._DATA_KEY, data) - } - - if (typeof opt_config === 'string') { - data[opt_config]() - } - }) -} - - -/** - * Refresh the scrollspy target cache - */ -ScrollSpy.prototype['refresh'] = function () { - var offsetMethod = 'offset' - var offsetBase = 0 - - if (this._scrollElement !== this._scrollElement.window) { - offsetMethod = 'position' - offsetBase = this._getScrollTop() - } - - this._offsets = [] - this._targets = [] - - this._scrollHeight = this._getScrollHeight() - - var targets = /** @type {Array.<Element>} */ ($.makeArray($(this._selector))) - - targets - .map(function (element, index) { - var target - var targetSelector = Bootstrap.getSelectorFromElement(element) - - if (targetSelector) { - target = $(targetSelector)[0] - } - - if (target && (target.offsetWidth || target.offsetHeight)) { - // todo (fat): remove sketch reliance on jQuery position/offset - return [$(target)[offsetMethod]().top + offsetBase, targetSelector] - } - }) - .filter(function (item) { return item }) - .sort(function (a, b) { return a[0] - b[0] }) - .forEach(function (item, index) { - this._offsets.push(item[0]) - this._targets.push(item[1]) - }.bind(this)) -} - - -/** - * @private - */ -ScrollSpy.prototype._getScrollTop = function () { - return this._scrollElement === window ? - this._scrollElement.scrollY : this._scrollElement.scrollTop -} - - -/** - * @private - */ -ScrollSpy.prototype._getScrollHeight = function () { - return this._scrollElement.scrollHeight - || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight) -} - - -/** - * @private - */ -ScrollSpy.prototype._process = function () { - var scrollTop = this._getScrollTop() + this._config.offset - var scrollHeight = this._getScrollHeight() - var maxScroll = this._config.offset + scrollHeight - this._scrollElement.offsetHeight - - if (this._scrollHeight != scrollHeight) { - this['refresh']() - } - - if (scrollTop >= maxScroll) { - var target = this._targets[this._targets.length - 1] - - if (this._activeTarget != target) { - this._activate(target) - } - } - - if (this._activeTarget && scrollTop < this._offsets[0]) { - this._activeTarget = null - this._clear() - return - } - - for (var i = this._offsets.length; i--;) { - var isActiveTarget = this._activeTarget != this._targets[i] - && scrollTop >= this._offsets[i] - && (!this._offsets[i + 1] || scrollTop < this._offsets[i + 1]) - - if (isActiveTarget) { - this._activate(this._targets[i]) - } - } -} - - -/** - * @param {Element} target - * @private - */ -ScrollSpy.prototype._activate = function (target) { - this._activeTarget = target - - this._clear() - - var selector = this._selector - + '[data-target="' + target + '"],' - + this._selector + '[href="' + target + '"]' - - // todo (fat): this seems horribly wrong… getting all raw li elements up the tree ,_, - var parentListItems = $(selector).parents(ScrollSpy._Selector.LI) - - for (var i = parentListItems.length; i--;) { - $(parentListItems[i]).addClass(ScrollSpy._ClassName.ACTIVE) - - var itemParent = parentListItems[i].parentNode - - if (itemParent && $(itemParent).hasClass(ScrollSpy._ClassName.DROPDOWN_MENU)) { - var closestDropdown = $(itemParent).closest(ScrollSpy._Selector.LI_DROPDOWN)[0] - $(closestDropdown).addClass(ScrollSpy._ClassName.ACTIVE) - } - } - - $(this._scrollElement).trigger(ScrollSpy._Event.ACTIVATE, { - relatedTarget: target - }) -} - - -/** - * @private - */ -ScrollSpy.prototype._clear = function () { - var activeParents = $(this._selector).parentsUntil(this._config.target, ScrollSpy._Selector.ACTIVE) - - for (var i = activeParents.length; i--;) { - $(activeParents[i]).removeClass(ScrollSpy._ClassName.ACTIVE) - } -} - - -/** - * ------------------------------------------------------------------------ - * jQuery Interface + noConflict implementaiton - * ------------------------------------------------------------------------ - */ - -/** - * @const - * @type {Function} - */ -$.fn[ScrollSpy._NAME] = ScrollSpy._jQueryInterface - - -/** - * @const - * @type {Function} - */ -$.fn[ScrollSpy._NAME]['Constructor'] = ScrollSpy - - -/** - * @const - * @type {Function} - */ -$.fn[ScrollSpy._NAME]['noConflict'] = function () { - $.fn[ScrollSpy._NAME] = ScrollSpy._JQUERY_NO_CONFLICT - return this -} - - -/** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - -$(window).on('load.bs.scrollspy.data-api', function () { - var scrollSpys = /** @type {Array.<Element>} */ ($.makeArray($(ScrollSpy._Selector.DATA_SPY))) - - for (var i = scrollSpys.length; i--;) { - var $spy = $(scrollSpys[i]) - ScrollSpy._jQueryInterface.call($spy, /** @type {Object|null} */ ($spy.data())) - } -}) diff --git a/js/src/alert.js b/js/src/alert.js new file mode 100644 index 0000000000..eda74d7064 --- /dev/null +++ b/js/src/alert.js @@ -0,0 +1,192 @@ +import Util from './util' + + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): alert.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +const Alert = (($) => { + + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + const NAME = 'alert' + const VERSION = '4.0.0' + const DATA_KEY = 'bs.alert' + const EVENT_KEY = `.${DATA_KEY}` + const DATA_API_KEY = '.data-api' + const JQUERY_NO_CONFLICT = $.fn[NAME] + const TRANSITION_DURATION = 150 + + const Selector = { + DISMISS : '[data-dismiss="alert"]' + } + + const Event = { + CLOSE : `close${EVENT_KEY}`, + CLOSED : `closed${EVENT_KEY}`, + CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}` + } + + const ClassName = { + ALERT : 'alert', + FADE : 'fade', + IN : 'in' + } + + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + class Alert { + + constructor(element) { + this._element = element + } + + + // getters + + static get VERSION() { + return VERSION + } + + + // public + + close(element) { + element = element || this._element + + let rootElement = this._getRootElement(element) + let customEvent = this._triggerCloseEvent(rootElement) + + if (customEvent.isDefaultPrevented()) { + return + } + + this._removeElement(rootElement) + } + + dispose() { + $.removeData(this._element, DATA_KEY) + this._element = null + } + + + // private + + _getRootElement(element) { + let parent = false + let selector = Util.getSelectorFromElement(element) + + if (selector) { + parent = $(selector)[0] + } + + if (!parent) { + parent = $(element).closest(`.${ClassName.ALERT}`)[0] + } + + return parent + } + + _triggerCloseEvent(element) { + var closeEvent = $.Event(Event.CLOSE) + $(element).trigger(closeEvent) + return closeEvent + } + + _removeElement(element) { + $(element).removeClass(ClassName.IN) + + if (!Util.supportsTransitionEnd() || + !$(element).hasClass(ClassName.FADE)) { + this._destroyElement(element) + return + } + + $(element) + .one(Util.TRANSITION_END, this._destroyElement.bind(this, element)) + .emulateTransitionEnd(TRANSITION_DURATION) + } + + _destroyElement(element) { + $(element) + .detach() + .trigger(Event.CLOSED) + .remove() + } + + + // static + + static _jQueryInterface(config) { + return this.each(function () { + let $element = $(this) + let data = $element.data(DATA_KEY) + + if (!data) { + data = new Alert(this) + $element.data(DATA_KEY, data) + } + + if (config === 'close') { + data[config](this) + } + }) + } + + static _handleDismiss(alertInstance) { + return function (event) { + if (event) { + event.preventDefault() + } + + alertInstance.close(this) + } + } + + } + + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on( + Event.CLICK_DATA_API, + Selector.DISMISS, + Alert._handleDismiss(new Alert()) + ) + + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Alert._jQueryInterface + $.fn[NAME].Constructor = Alert + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT + return Alert._jQueryInterface + } + + return Alert + +})(jQuery) + +export default Alert diff --git a/js/src/button.js b/js/src/button.js new file mode 100644 index 0000000000..8210e8ae07 --- /dev/null +++ b/js/src/button.js @@ -0,0 +1,174 @@ +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): button.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +const Button = (($) => { + + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + const NAME = 'button' + const VERSION = '4.0.0' + const DATA_KEY = 'bs.button' + const EVENT_KEY = `.${DATA_KEY}` + const DATA_API_KEY = '.data-api' + const JQUERY_NO_CONFLICT = $.fn[NAME] + const TRANSITION_DURATION = 150 + + const ClassName = { + ACTIVE : 'active', + BUTTON : 'btn', + FOCUS : 'focus' + } + + const Selector = { + DATA_TOGGLE_CARROT : '[data-toggle^="button"]', + DATA_TOGGLE : '[data-toggle="buttons"]', + INPUT : 'input', + ACTIVE : '.active', + BUTTON : '.btn' + } + + const Event = { + CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`, + FOCUS_BLUR_DATA_API : `focus${EVENT_KEY}${DATA_API_KEY} ` + + `blur${EVENT_KEY}${DATA_API_KEY}` + } + + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + class Button { + + constructor(element) { + this._element = element + } + + + // getters + + static get VERSION() { + return VERSION + } + + + // public + + toggle() { + let triggerChangeEvent = true + let rootElement = $(this._element).closest( + Selector.DATA_TOGGLE + )[0] + + if (rootElement) { + let input = $(this._element).find(Selector.INPUT)[0] + + if (input) { + if (input.type === 'radio') { + if (input.checked && + $(this._element).hasClass(ClassName.ACTIVE)) { + triggerChangeEvent = false + + } else { + let activeElement = $(rootElement).find(Selector.ACTIVE)[0] + + if (activeElement) { + $(activeElement).removeClass(ClassName.ACTIVE) + } + } + } + + if (triggerChangeEvent) { + input.checked = !$(this._element).hasClass(ClassName.ACTIVE) + $(this._element).trigger('change') + } + } + } else { + this._element.setAttribute('aria-pressed', + !$(this._element).hasClass(ClassName.ACTIVE)) + } + + if (triggerChangeEvent) { + $(this._element).toggleClass(ClassName.ACTIVE) + } + } + + dispose() { + $.removeData(this._element, DATA_KEY) + this._element = null + } + + + // static + + static _jQueryInterface(config) { + return this.each(function () { + let data = $(this).data(DATA_KEY) + + if (!data) { + data = new Button(this) + $(this).data(DATA_KEY, data) + } + + if (config === 'toggle') { + data[config]() + } + }) + } + + } + + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document) + .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) { + event.preventDefault() + + let button = event.target + + if (!$(button).hasClass(ClassName.BUTTON)) { + button = $(button).closest(Selector.BUTTON) + } + + Button._jQueryInterface.call($(button), 'toggle') + }) + .on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) { + var button = $(event.target).closest(Selector.BUTTON)[0] + $(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type)) + }) + + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Button._jQueryInterface + $.fn[NAME].Constructor = Button + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT + return Button._jQueryInterface + } + + return Button + +})(jQuery) + +export default Button diff --git a/js/src/carousel.js b/js/src/carousel.js new file mode 100644 index 0000000000..c11f0a599d --- /dev/null +++ b/js/src/carousel.js @@ -0,0 +1,468 @@ +import Util from './util' + + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): carousel.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +const Carousel = (($) => { + + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + const NAME = 'carousel' + const VERSION = '4.0.0' + const DATA_KEY = 'bs.carousel' + const EVENT_KEY = `.${DATA_KEY}` + const DATA_API_KEY = '.data-api' + const JQUERY_NO_CONFLICT = $.fn[NAME] + const TRANSITION_DURATION = 600 + + const Default = { + interval : 5000, + keyboard : true, + slide : false, + pause : 'hover', + wrap : true + } + + const DefaultType = { + interval : '(number|boolean)', + keyboard : 'boolean', + slide : '(boolean|string)', + pause : '(string|boolean)', + wrap : 'boolean' + } + + const Direction = { + NEXT : 'next', + PREVIOUS : 'prev' + } + + const Event = { + SLIDE : `slide${EVENT_KEY}`, + SLID : `slid${EVENT_KEY}`, + KEYDOWN : `keydown${EVENT_KEY}`, + MOUSEENTER : `mouseenter${EVENT_KEY}`, + MOUSELEAVE : `mouseleave${EVENT_KEY}`, + LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`, + CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}` + } + + const ClassName = { + CAROUSEL : 'carousel', + ACTIVE : 'active', + SLIDE : 'slide', + RIGHT : 'right', + LEFT : 'left', + ITEM : 'carousel-item' + } + + const Selector = { + ACTIVE : '.active', + ACTIVE_ITEM : '.active.carousel-item', + ITEM : '.carousel-item', + NEXT_PREV : '.next, .prev', + INDICATORS : '.carousel-indicators', + DATA_SLIDE : '[data-slide], [data-slide-to]', + DATA_RIDE : '[data-ride="carousel"]' + } + + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + class Carousel { + + constructor(element, config) { + this._items = null + this._interval = null + this._activeElement = null + + this._isPaused = false + this._isSliding = false + + this._config = this._getConfig(config) + this._element = $(element)[0] + this._indicatorsElement = $(this._element).find(Selector.INDICATORS)[0] + + this._addEventListeners() + } + + + // getters + + static get VERSION() { + return VERSION + } + + static get Default() { + return Default + } + + + // public + + next() { + if (!this._isSliding) { + this._slide(Direction.NEXT) + } + } + + prev() { + if (!this._isSliding) { + this._slide(Direction.PREVIOUS) + } + } + + pause(event) { + if (!event) { + this._isPaused = true + } + + if ($(this._element).find(Selector.NEXT_PREV)[0] && + Util.supportsTransitionEnd()) { + Util.triggerTransitionEnd(this._element) + this.cycle(true) + } + + clearInterval(this._interval) + this._interval = null + } + + cycle(event) { + if (!event) { + this._isPaused = false + } + + if (this._interval) { + clearInterval(this._interval) + this._interval = null + } + + if (this._config.interval && !this._isPaused) { + this._interval = setInterval( + $.proxy(this.next, this), this._config.interval + ) + } + } + + to(index) { + this._activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0] + + let activeIndex = this._getItemIndex(this._activeElement) + + if (index > (this._items.length - 1) || index < 0) { + return + } + + if (this._isSliding) { + $(this._element).one(Event.SLID, () => this.to(index)) + return + } + + if (activeIndex == index) { + this.pause() + this.cycle() + return + } + + var direction = index > activeIndex ? + Direction.NEXT : + Direction.PREVIOUS + + this._slide(direction, this._items[index]) + } + + dispose() { + $(this._element).off(EVENT_KEY) + $.removeData(this._element, DATA_KEY) + + this._items = null + this._config = null + this._element = null + this._interval = null + this._isPaused = null + this._isSliding = null + this._activeElement = null + this._indicatorsElement = null + } + + + // private + + _getConfig(config) { + config = $.extend({}, Default, config) + Util.typeCheckConfig(NAME, config, DefaultType) + return config + } + + _addEventListeners() { + if (this._config.keyboard) { + $(this._element) + .on(Event.KEYDOWN, $.proxy(this._keydown, this)) + } + + if (this._config.pause == 'hover' && + !('ontouchstart' in document.documentElement)) { + $(this._element) + .on(Event.MOUSEENTER, $.proxy(this.pause, this)) + .on(Event.MOUSELEAVE, $.proxy(this.cycle, this)) + } + } + + _keydown(event) { + event.preventDefault() + + if (/input|textarea/i.test(event.target.tagName)) return + + switch (event.which) { + case 37: this.prev(); break + case 39: this.next(); break + default: return + } + } + + _getItemIndex(element) { + this._items = $.makeArray($(element).parent().find(Selector.ITEM)) + return this._items.indexOf(element) + } + + _getItemByDirection(direction, activeElement) { + let isNextDirection = direction === Direction.NEXT + let isPrevDirection = direction === Direction.PREVIOUS + let activeIndex = this._getItemIndex(activeElement) + let lastItemIndex = (this._items.length - 1) + let isGoingToWrap = (isPrevDirection && activeIndex === 0) || + (isNextDirection && activeIndex == lastItemIndex) + + if (isGoingToWrap && !this._config.wrap) { + return activeElement + } + + let delta = direction == Direction.PREVIOUS ? -1 : 1 + let itemIndex = (activeIndex + delta) % this._items.length + + return itemIndex === -1 ? + this._items[this._items.length - 1] : this._items[itemIndex] + } + + + _triggerSlideEvent(relatedTarget, directionalClassname) { + let slideEvent = $.Event(Event.SLIDE, { + relatedTarget: relatedTarget, + direction: directionalClassname + }) + + $(this._element).trigger(slideEvent) + + return slideEvent + } + + _setActiveIndicatorElement(element) { + if (this._indicatorsElement) { + $(this._indicatorsElement) + .find(Selector.ACTIVE) + .removeClass(ClassName.ACTIVE) + + let nextIndicator = this._indicatorsElement.children[ + this._getItemIndex(element) + ] + + if (nextIndicator) { + $(nextIndicator).addClass(ClassName.ACTIVE) + } + } + } + + _slide(direction, element) { + let activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0] + let nextElement = element || activeElement && + this._getItemByDirection(direction, activeElement) + + let isCycling = !!this._interval + + let directionalClassName = direction == Direction.NEXT ? + ClassName.LEFT : + ClassName.RIGHT + + if (nextElement && $(nextElement).hasClass(ClassName.ACTIVE)) { + this._isSliding = false + return + } + + let slideEvent = this._triggerSlideEvent(nextElement, directionalClassName) + if (slideEvent.isDefaultPrevented()) { + return + } + + if (!activeElement || !nextElement) { + // some weirdness is happening, so we bail + return + } + + this._isSliding = true + + if (isCycling) { + this.pause() + } + + this._setActiveIndicatorElement(nextElement) + + var slidEvent = $.Event(Event.SLID, { + relatedTarget: nextElement, + direction: directionalClassName + }) + + if (Util.supportsTransitionEnd() && + $(this._element).hasClass(ClassName.SLIDE)) { + + $(nextElement).addClass(direction) + + Util.reflow(nextElement) + + $(activeElement).addClass(directionalClassName) + $(nextElement).addClass(directionalClassName) + + $(activeElement) + .one(Util.TRANSITION_END, () => { + $(nextElement) + .removeClass(directionalClassName) + .removeClass(direction) + + $(nextElement).addClass(ClassName.ACTIVE) + + $(activeElement) + .removeClass(ClassName.ACTIVE) + .removeClass(direction) + .removeClass(directionalClassName) + + this._isSliding = false + + setTimeout(() => $(this._element).trigger(slidEvent), 0) + + }) + .emulateTransitionEnd(TRANSITION_DURATION) + + } else { + $(activeElement).removeClass(ClassName.ACTIVE) + $(nextElement).addClass(ClassName.ACTIVE) + + this._isSliding = false + $(this._element).trigger(slidEvent) + } + + if (isCycling) { + this.cycle() + } + } + + + // static + + static _jQueryInterface(config) { + return this.each(function () { + let data = $(this).data(DATA_KEY) + let _config = $.extend({}, Default, $(this).data()) + + if (typeof config === 'object') { + $.extend(_config, config) + } + + let action = typeof config === 'string' ? config : _config.slide + + if (!data) { + data = new Carousel(this, _config) + $(this).data(DATA_KEY, data) + } + + if (typeof config == 'number') { + data.to(config) + + } else if (action) { + data[action]() + + } else if (_config.interval) { + data.pause() + data.cycle() + } + }) + } + + static _dataApiClickHandler(event) { + let selector = Util.getSelectorFromElement(this) + + if (!selector) { + return + } + + let target = $(selector)[0] + + if (!target || !$(target).hasClass(ClassName.CAROUSEL)) { + return + } + + let config = $.extend({}, $(target).data(), $(this).data()) + + let slideIndex = this.getAttribute('data-slide-to') + if (slideIndex) { + config.interval = false + } + + Carousel._jQueryInterface.call($(target), config) + + if (slideIndex) { + $(target).data(DATA_KEY).to(slideIndex) + } + + event.preventDefault() + } + + } + + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document) + .on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler) + + $(window).on(Event.LOAD_DATA_API, function () { + $(Selector.DATA_RIDE).each(function () { + let $carousel = $(this) + Carousel._jQueryInterface.call($carousel, $carousel.data()) + }) + }) + + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Carousel._jQueryInterface + $.fn[NAME].Constructor = Carousel + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT + return Carousel._jQueryInterface + } + + return Carousel + +})(jQuery) + +export default Carousel diff --git a/js/src/collapse.js b/js/src/collapse.js new file mode 100644 index 0000000000..e911c98d1d --- /dev/null +++ b/js/src/collapse.js @@ -0,0 +1,379 @@ +import Util from './util' + + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): collapse.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +const Collapse = (($) => { + + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + const NAME = 'collapse' + const VERSION = '4.0.0' + const DATA_KEY = 'bs.collapse' + const EVENT_KEY = `.${DATA_KEY}` + const DATA_API_KEY = '.data-api' + const JQUERY_NO_CONFLICT = $.fn[NAME] + const TRANSITION_DURATION = 600 + + const Default = { + toggle : true, + parent : '' + } + + const DefaultType = { + toggle : 'boolean', + parent : 'string' + } + + const Event = { + SHOW : `show${EVENT_KEY}`, + SHOWN : `shown${EVENT_KEY}`, + HIDE : `hide${EVENT_KEY}`, + HIDDEN : `hidden${EVENT_KEY}`, + CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}` + } + + const ClassName = { + IN : 'in', + COLLAPSE : 'collapse', + COLLAPSING : 'collapsing', + COLLAPSED : 'collapsed' + } + + const Dimension = { + WIDTH : 'width', + HEIGHT : 'height' + } + + const Selector = { + ACTIVES : '.panel > .in, .panel > .collapsing', + DATA_TOGGLE : '[data-toggle="collapse"]' + } + + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + class Collapse { + + constructor(element, config) { + this._isTransitioning = false + this._element = element + this._config = this._getConfig(config) + this._triggerArray = $.makeArray($( + `[data-toggle="collapse"][href="#${element.id}"],` + + `[data-toggle="collapse"][data-target="#${element.id}"]` + )) + + this._parent = this._config.parent ? this._getParent() : null + + if (!this._config.parent) { + this._addAriaAndCollapsedClass(this._element, this._triggerArray) + } + + if (this._config.toggle) { + this.toggle() + } + } + + + // getters + + static get VERSION() { + return VERSION + } + + static get Default() { + return Default + } + + + // public + + toggle() { + if ($(this._element).hasClass(ClassName.IN)) { + this.hide() + } else { + this.show() + } + } + + show() { + if (this._isTransitioning || + $(this._element).hasClass(ClassName.IN)) { + return + } + + let actives + let activesData + + if (this._parent) { + actives = $.makeArray($(Selector.ACTIVES)) + if (!actives.length) { + actives = null + } + } + + if (actives) { + activesData = $(actives).data(DATA_KEY) + if (activesData && activesData._isTransitioning) { + return + } + } + + let startEvent = $.Event(Event.SHOW) + $(this._element).trigger(startEvent) + if (startEvent.isDefaultPrevented()) { + return + } + + if (actives) { + Collapse._jQueryInterface.call($(actives), 'hide') + if (!activesData) { + $(actives).data(DATA_KEY, null) + } + } + + let dimension = this._getDimension() + + $(this._element) + .removeClass(ClassName.COLLAPSE) + .addClass(ClassName.COLLAPSING) + + this._element.style[dimension] = 0 + this._element.setAttribute('aria-expanded', true) + + if (this._triggerArray.length) { + $(this._triggerArray) + .removeClass(ClassName.COLLAPSED) + .attr('aria-expanded', true) + } + + this.setTransitioning(true) + + let complete = () => { + $(this._element) + .removeClass(ClassName.COLLAPSING) + .addClass(ClassName.COLLAPSE) + .addClass(ClassName.IN) + + this._element.style[dimension] = '' + + this.setTransitioning(false) + + $(this._element).trigger(Event.SHOWN) + } + + if (!Util.supportsTransitionEnd()) { + complete() + return + } + + let scrollSize = 'scroll' + + (dimension[0].toUpperCase() + + dimension.slice(1)) + + $(this._element) + .one(Util.TRANSITION_END, complete) + .emulateTransitionEnd(TRANSITION_DURATION) + + this._element.style[dimension] = this._element[scrollSize] + 'px' + } + + hide() { + if (this._isTransitioning || + !$(this._element).hasClass(ClassName.IN)) { + return + } + + let startEvent = $.Event(Event.HIDE) + $(this._element).trigger(startEvent) + if (startEvent.isDefaultPrevented()) { + return + } + + let dimension = this._getDimension() + let offsetDimension = dimension === Dimension.WIDTH ? + 'offsetWidth' : 'offsetHeight' + + this._element.style[dimension] = this._element[offsetDimension] + 'px' + + Util.reflow(this._element) + + $(this._element) + .addClass(ClassName.COLLAPSING) + .removeClass(ClassName.COLLAPSE) + .removeClass(ClassName.IN) + + this._element.setAttribute('aria-expanded', false) + + if (this._triggerArray.length) { + $(this._triggerArray) + .addClass(ClassName.COLLAPSED) + .attr('aria-expanded', false) + } + + this.setTransitioning(true) + + let complete = () => { + this.setTransitioning(false) + $(this._element) + .removeClass(ClassName.COLLAPSING) + .addClass(ClassName.COLLAPSE) + .trigger(Event.HIDDEN) + } + + this._element.style[dimension] = 0 + + if (!Util.supportsTransitionEnd()) { + return complete() + } + + $(this._element) + .one(Util.TRANSITION_END, complete) + .emulateTransitionEnd(TRANSITION_DURATION) + } + + setTransitioning(isTransitioning) { + this._isTransitioning = isTransitioning + } + + dispose() { + $.removeData(this._element, DATA_KEY) + + this._config = null + this._parent = null + this._element = null + this._triggerArray = null + this._isTransitioning = null + } + + + // private + + _getConfig(config) { + config = $.extend({}, Default, config) + config.toggle = !!config.toggle // coerce string values + Util.typeCheckConfig(NAME, config, DefaultType) + return config + } + + _getDimension() { + let hasWidth = $(this._element).hasClass(Dimension.WIDTH) + return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT + } + + _getParent() { + let parent = $(this._config.parent)[0] + let selector = + `[data-toggle="collapse"][data-parent="${this._config.parent}"]` + + $(parent).find(selector).each((i, element) => { + this._addAriaAndCollapsedClass( + Collapse._getTargetFromElement(element), + [element] + ) + }) + + return parent + } + + _addAriaAndCollapsedClass(element, triggerArray) { + if (element) { + let isOpen = $(element).hasClass(ClassName.IN) + element.setAttribute('aria-expanded', isOpen) + + if (triggerArray.length) { + $(triggerArray) + .toggleClass(ClassName.COLLAPSED, !isOpen) + .attr('aria-expanded', isOpen) + } + } + } + + + // static + + static _getTargetFromElement(element) { + let selector = Util.getSelectorFromElement(element) + return selector ? $(selector)[0] : null + } + + static _jQueryInterface(config) { + return this.each(function () { + let $this = $(this) + let data = $this.data(DATA_KEY) + let _config = $.extend( + {}, + Default, + $this.data(), + typeof config === 'object' && config + ) + + if (!data && _config.toggle && /show|hide/.test(config)) { + _config.toggle = false + } + + if (!data) { + data = new Collapse(this, _config) + $this.data(DATA_KEY, data) + } + + if (typeof config === 'string') { + data[config]() + } + }) + } + + } + + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + event.preventDefault() + + let target = Collapse._getTargetFromElement(this) + + let data = $(target).data(DATA_KEY) + let config = data ? 'toggle' : $(this).data() + + Collapse._jQueryInterface.call($(target), config) + }) + + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Collapse._jQueryInterface + $.fn[NAME].Constructor = Collapse + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT + return Collapse._jQueryInterface + } + + return Collapse + +})(jQuery) + +export default Collapse diff --git a/js/src/dropdown.js b/js/src/dropdown.js new file mode 100644 index 0000000000..bae0f7adb2 --- /dev/null +++ b/js/src/dropdown.js @@ -0,0 +1,286 @@ +import Util from './util' + + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): dropdown.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +const Dropdown = (($) => { + + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + const NAME = 'dropdown' + const VERSION = '4.0.0' + const DATA_KEY = 'bs.dropdown' + const EVENT_KEY = `.${DATA_KEY}` + const DATA_API_KEY = '.data-api' + const JQUERY_NO_CONFLICT = $.fn[NAME] + + const Event = { + HIDE : `hide${EVENT_KEY}`, + HIDDEN : `hidden${EVENT_KEY}`, + SHOW : `show${EVENT_KEY}`, + SHOWN : `shown${EVENT_KEY}`, + CLICK : `click${EVENT_KEY}`, + CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`, + KEYDOWN_DATA_API : `keydown${EVENT_KEY}${DATA_API_KEY}` + } + + const ClassName = { + BACKDROP : 'dropdown-backdrop', + DISABLED : 'disabled', + OPEN : 'open' + } + + const Selector = { + BACKDROP : '.dropdown-backdrop', + DATA_TOGGLE : '[data-toggle="dropdown"]', + FORM_CHILD : '.dropdown form', + ROLE_MENU : '[role="menu"]', + ROLE_LISTBOX : '[role="listbox"]', + NAVBAR_NAV : '.navbar-nav', + VISIBLE_ITEMS : '[role="menu"] li:not(.disabled) a, ' + + '[role="listbox"] li:not(.disabled) a' + } + + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + class Dropdown { + + constructor(element) { + this._element = element + + this._addEventListeners() + } + + + // getters + + static get VERSION() { + return VERSION + } + + + // public + + toggle() { + if (this.disabled || $(this).hasClass(ClassName.DISABLED)) { + return + } + + let parent = Dropdown._getParentFromElement(this) + let isActive = $(parent).hasClass(ClassName.OPEN) + + Dropdown._clearMenus() + + if (isActive) { + return false + } + + if ('ontouchstart' in document.documentElement && + (!$(parent).closest(Selector.NAVBAR_NAV).length)) { + + // if mobile we use a backdrop because click events don't delegate + let dropdown = document.createElement('div') + dropdown.className = ClassName.BACKDROP + $(dropdown).insertBefore(this) + $(dropdown).on('click', Dropdown._clearMenus) + } + + let relatedTarget = { relatedTarget : this } + let showEvent = $.Event(Event.SHOW, relatedTarget) + + $(parent).trigger(showEvent) + + if (showEvent.isDefaultPrevented()) { + return + } + + this.focus() + this.setAttribute('aria-expanded', 'true') + + $(parent).toggleClass(ClassName.OPEN) + $(parent).trigger(Event.SHOWN, relatedTarget) + + return false + } + + dispose() { + $.removeData(this._element, DATA_KEY) + $(this._element).off(EVENT_KEY) + this._element = null + } + + + // private + + _addEventListeners() { + $(this._element).on(Event.CLICK, this.toggle) + } + + + // static + + static _jQueryInterface(config) { + return this.each(function () { + let data = $(this).data(DATA_KEY) + + if (!data) { + $(this).data(DATA_KEY, (data = new Dropdown(this))) + } + + if (typeof config === 'string') { + data[config].call(this) + } + }) + } + + static _clearMenus(event) { + if (event && event.which === 3) { + return + } + + let backdrop = $(Selector.BACKDROP)[0] + if (backdrop) { + backdrop.parentNode.removeChild(backdrop) + } + + let toggles = $.makeArray($(Selector.DATA_TOGGLE)) + + for (let i = 0; i < toggles.length; i++) { + let parent = Dropdown._getParentFromElement(toggles[i]) + let relatedTarget = { relatedTarget : toggles[i] } + + if (!$(parent).hasClass(ClassName.OPEN)) { + continue + } + + if (event && event.type === 'click' && + (/input|textarea/i.test(event.target.tagName)) && + ($.contains(parent, event.target))) { + continue + } + + let hideEvent = $.Event(Event.HIDE, relatedTarget) + $(parent).trigger(hideEvent) + if (hideEvent.isDefaultPrevented()) { + continue + } + + toggles[i].setAttribute('aria-expanded', 'false') + + $(parent) + .removeClass(ClassName.OPEN) + .trigger(Event.HIDDEN, relatedTarget) + } + } + + static _getParentFromElement(element) { + let parent + let selector = Util.getSelectorFromElement(element) + + if (selector) { + parent = $(selector)[0] + } + + return parent || element.parentNode + } + + static _dataApiKeydownHandler(event) { + if (!/(38|40|27|32)/.test(event.which) || + /input|textarea/i.test(event.target.tagName)) { + return + } + + event.preventDefault() + event.stopPropagation() + + if (this.disabled || $(this).hasClass(ClassName.DISABLED)) { + return + } + + let parent = Dropdown._getParentFromElement(this) + let isActive = $(parent).hasClass(ClassName.OPEN) + + if ((!isActive && event.which !== 27) || + (isActive && event.which === 27)) { + + if (event.which === 27) { + let toggle = $(parent).find(Selector.DATA_TOGGLE)[0] + $(toggle).trigger('focus') + } + + $(this).trigger('click') + return + } + + let items = $.makeArray($(Selector.VISIBLE_ITEMS)) + + items = items.filter((item) => { + return item.offsetWidth || item.offsetHeight + }) + + if (!items.length) { + return + } + + let index = items.indexOf(event.target) + + if (event.which === 38 && index > 0) index-- // up + if (event.which === 40 && index < items.length - 1) index++ // down + if (!~index) index = 0 + + items[index].focus() + } + + } + + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document) + .on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler) + .on(Event.KEYDOWN_DATA_API, Selector.ROLE_MENU, Dropdown._dataApiKeydownHandler) + .on(Event.KEYDOWN_DATA_API, Selector.ROLE_LISTBOX, Dropdown._dataApiKeydownHandler) + .on(Event.CLICK_DATA_API, Dropdown._clearMenus) + .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, Dropdown.prototype.toggle) + .on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) { + e.stopPropagation() + }) + + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Dropdown._jQueryInterface + $.fn[NAME].Constructor = Dropdown + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT + return Dropdown._jQueryInterface + } + + return Dropdown + +})(jQuery) + +export default Dropdown diff --git a/js/src/modal.js b/js/src/modal.js new file mode 100644 index 0000000000..2ca603b23b --- /dev/null +++ b/js/src/modal.js @@ -0,0 +1,527 @@ +import Util from './util' + + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): modal.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +const Modal = (($) => { + + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + const NAME = 'modal' + const VERSION = '4.0.0' + const DATA_KEY = 'bs.modal' + const EVENT_KEY = `.${DATA_KEY}` + const DATA_API_KEY = '.data-api' + const JQUERY_NO_CONFLICT = $.fn[NAME] + const TRANSITION_DURATION = 300 + const BACKDROP_TRANSITION_DURATION = 150 + + const Default = { + backdrop : true, + keyboard : true, + focus : true, + show : true + } + + const DefaultType = { + backdrop : '(boolean|string)', + keyboard : 'boolean', + focus : 'boolean', + show : 'boolean' + } + + const Event = { + HIDE : `hide${EVENT_KEY}`, + HIDDEN : `hidden${EVENT_KEY}`, + SHOW : `show${EVENT_KEY}`, + SHOWN : `shown${EVENT_KEY}`, + FOCUSIN : `focusin${EVENT_KEY}`, + RESIZE : `resize${EVENT_KEY}`, + CLICK_DISMISS : `click.dismiss${EVENT_KEY}`, + KEYDOWN_DISMISS : `keydown.dismiss${EVENT_KEY}`, + MOUSEUP_DISMISS : `mouseup.dismiss${EVENT_KEY}`, + MOUSEDOWN_DISMISS : `mousedown.dismiss${EVENT_KEY}`, + CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}` + } + + const ClassName = { + BACKDROP : 'modal-backdrop', + OPEN : 'modal-open', + FADE : 'fade', + IN : 'in' + } + + const Selector = { + DIALOG : '.modal-dialog', + DATA_TOGGLE : '[data-toggle="modal"]', + DATA_DISMISS : '[data-dismiss="modal"]', + SCROLLBAR_MEASURER : 'modal-scrollbar-measure' + } + + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + class Modal { + + constructor(element, config) { + this._config = this._getConfig(config) + this._element = element + this._dialog = $(element).find(Selector.DIALOG)[0] + this._backdrop = null + this._isShown = false + this._isBodyOverflowing = false + this._ignoreBackdropClick = false + this._originalBodyPadding = 0 + this._scrollbarWidth = 0 + } + + + // getters + + static get VERSION() { + return VERSION + } + + static get Default() { + return Default + } + + + // public + + toggle(relatedTarget) { + return this._isShown ? this.hide() : this.show(relatedTarget) + } + + show(relatedTarget) { + let showEvent = $.Event(Event.SHOW, { + relatedTarget: relatedTarget + }) + + $(this._element).trigger(showEvent) + + if (this._isShown || showEvent.isDefaultPrevented()) { + return + } + + this._isShown = true + + this._checkScrollbar() + this._setScrollbar() + + $(document.body).addClass(ClassName.OPEN) + + this._setEscapeEvent() + this._setResizeEvent() + + $(this._element).on( + Event.CLICK_DISMISS, + Selector.DATA_DISMISS, + $.proxy(this.hide, this) + ) + + $(this._dialog).on(Event.MOUSEDOWN_DISMISS, () => { + $(this._element).one(Event.MOUSEUP_DISMISS, (event) => { + if ($(event.target).is(this._element)) { + that._ignoreBackdropClick = true + } + }) + }) + + this._showBackdrop( + $.proxy(this._showElement, this, relatedTarget) + ) + } + + hide(event) { + if (event) { + event.preventDefault() + } + + let hideEvent = $.Event(Event.HIDE) + + $(this._element).trigger(hideEvent) + + if (!this._isShown || hideEvent.isDefaultPrevented()) { + return + } + + this._isShown = false + + this._setEscapeEvent() + this._setResizeEvent() + + $(document).off(Event.FOCUSIN) + + $(this._element).removeClass(ClassName.IN) + + $(this._element).off(Event.CLICK_DISMISS) + $(this._dialog).off(Event.MOUSEDOWN_DISMISS) + + if (Util.supportsTransitionEnd() && + ($(this._element).hasClass(ClassName.FADE))) { + + $(this._element) + .one(Util.TRANSITION_END, $.proxy(this._hideModal, this)) + .emulateTransitionEnd(TRANSITION_DURATION) + } else { + this._hideModal() + } + } + + dispose() { + $.removeData(this._element, DATA_KEY) + + $(window).off(EVENT_KEY) + $(document).off(EVENT_KEY) + $(this._element).off(EVENT_KEY) + $(this._backdrop).off(EVENT_KEY) + + this._config = null + this._element = null + this._dialog = null + this._backdrop = null + this._isShown = null + this._isBodyOverflowing = null + this._ignoreBackdropClick = null + this._originalBodyPadding = null + this._scrollbarWidth = null + } + + + // private + + _getConfig(config) { + config = $.extend({}, Default, config) + Util.typeCheckConfig(NAME, config, DefaultType) + return config + } + + _showElement(relatedTarget) { + let transition = Util.supportsTransitionEnd() && + $(this._element).hasClass(ClassName.FADE) + + if (!this._element.parentNode || + (this._element.parentNode.nodeType !== Node.ELEMENT_NODE)) { + // don't move modals dom position + document.body.appendChild(this._element) + } + + this._element.style.display = 'block' + this._element.scrollTop = 0 + + if (transition) { + Util.reflow(this._element) + } + + $(this._element).addClass(ClassName.IN) + + if (this._config.focus) this._enforceFocus() + + let shownEvent = $.Event(Event.SHOWN, { + relatedTarget: relatedTarget + }) + + let transitionComplete = () => { + if (this._config.focus) this._element.focus() + $(this._element).trigger(shownEvent) + } + + if (transition) { + $(this._dialog) + .one(Util.TRANSITION_END, transitionComplete) + .emulateTransitionEnd(TRANSITION_DURATION) + } else { + transitionComplete() + } + } + + _enforceFocus() { + $(document) + .off(Event.FOCUSIN) // guard against infinite focus loop + .on(Event.FOCUSIN, (event) => { + if (this._element !== event.target && + (!$(this._element).has(event.target).length)) { + this._element.focus() + } + }) + } + + _setEscapeEvent() { + if (this._isShown && this._config.keyboard) { + $(this._element).on(Event.KEYDOWN_DISMISS, (event) => { + if (event.which === 27) { + this.hide() + } + }) + + } else if (!this._isShown) { + $(this._element).off(Event.KEYDOWN_DISMISS) + } + } + + _setResizeEvent() { + if (this._isShown) { + $(window).on(Event.RESIZE, $.proxy(this._handleUpdate, this)) + } else { + $(window).off(Event.RESIZE) + } + } + + _hideModal() { + this._element.style.display = 'none' + this._showBackdrop(() => { + $(document.body).removeClass(ClassName.OPEN) + this._resetAdjustments() + this._resetScrollbar() + $(this._element).trigger(Event.HIDDEN) + }) + } + + _removeBackdrop() { + if (this._backdrop) { + $(this._backdrop).remove() + this._backdrop = null + } + } + + _showBackdrop(callback) { + let animate = $(this._element).hasClass(ClassName.FADE) ? + ClassName.FADE : '' + + if (this._isShown && this._config.backdrop) { + let doAnimate = Util.supportsTransitionEnd() && animate + + this._backdrop = document.createElement('div') + this._backdrop.className = ClassName.BACKDROP + + if (animate) { + $(this._backdrop).addClass(animate) + } + + $(this._backdrop).appendTo(this.$body) + + $(this._element).on(Event.CLICK_DISMISS, (event) => { + if (this._ignoreBackdropClick) { + this._ignoreBackdropClick = false + return + } + if (event.target !== event.currentTarget) { + return + } + if (this._config.backdrop === 'static') { + this._element.focus() + } else { + this.hide() + } + }) + + if (doAnimate) { + Util.reflow(this._backdrop) + } + + $(this._backdrop).addClass(ClassName.IN) + + if (!callback) { + return + } + + if (!doAnimate) { + callback() + return + } + + $(this._backdrop) + .one(Util.TRANSITION_END, callback) + .emulateTransitionEnd(BACKDROP_TRANSITION_DURATION) + + } else if (!this._isShown && this._backdrop) { + $(this._backdrop).removeClass(ClassName.IN) + + let callbackRemove = () => { + this._removeBackdrop() + if (callback) { + callback() + } + } + + if (Util.supportsTransitionEnd() && + ($(this._element).hasClass(ClassName.FADE))) { + $(this._backdrop) + .one(Util.TRANSITION_END, callbackRemove) + .emulateTransitionEnd(BACKDROP_TRANSITION_DURATION) + } else { + callbackRemove() + } + + } else if (callback) { + callback() + } + } + + + // ---------------------------------------------------------------------- + // the following methods are used to handle overflowing modals + // todo (fat): these should probably be refactored out of modal.js + // ---------------------------------------------------------------------- + + _handleUpdate() { + this._adjustDialog() + } + + _adjustDialog() { + let isModalOverflowing = + this._element.scrollHeight > document.documentElement.clientHeight + + if (!this._isBodyOverflowing && isModalOverflowing) { + this._element.style.paddingLeft = this._scrollbarWidth + 'px' + } + + if (this._isBodyOverflowing && !isModalOverflowing) { + this._element.style.paddingRight = this._scrollbarWidth + 'px' + } + } + + _resetAdjustments() { + this._element.style.paddingLeft = '' + this._element.style.paddingRight = '' + } + + _checkScrollbar() { + let fullWindowWidth = window.innerWidth + if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8 + let documentElementRect = document.documentElement.getBoundingClientRect() + fullWindowWidth = + documentElementRect.right - Math.abs(documentElementRect.left) + } + this._isBodyOverflowing = document.body.clientWidth < fullWindowWidth + this._scrollbarWidth = this._getScrollbarWidth() + } + + _setScrollbar() { + let bodyPadding = parseInt( + $(document.body).css('padding-right') || 0, + 10 + ) + + this._originalBodyPadding = document.body.style.paddingRight || '' + + if (this._isBodyOverflowing) { + document.body.style.paddingRight = + bodyPadding + this._scrollbarWidth + 'px' + } + } + + _resetScrollbar() { + document.body.style.paddingRight = this._originalBodyPadding + } + + _getScrollbarWidth() { // thx d.walsh + let scrollDiv = document.createElement('div') + scrollDiv.className = Selector.SCROLLBAR_MEASURER + document.body.appendChild(scrollDiv) + let scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth + document.body.removeChild(scrollDiv) + return scrollbarWidth + } + + + // static + + static _jQueryInterface(config, relatedTarget) { + return this.each(function () { + let data = $(this).data(DATA_KEY) + let _config = $.extend( + {}, + Modal.Default, + $(this).data(), + typeof config === 'object' && config + ) + + if (!data) { + data = new Modal(this, _config) + $(this).data(DATA_KEY, data) + } + + if (typeof config === 'string') { + data[config](relatedTarget) + + } else if (_config.show) { + data.show(relatedTarget) + } + }) + } + + } + + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + let target + let selector = Util.getSelectorFromElement(this) + + if (selector) { + target = $(selector)[0] + } + + let config = $(target).data(DATA_KEY) ? + 'toggle' : $.extend({}, $(target).data(), $(this).data()) + + if (this.tagName === 'A') { + event.preventDefault() + } + + let $target = $(target).one(Event.SHOW, (showEvent) => { + if (showEvent.isDefaultPrevented()) { + // only register focus restorer if modal will actually get shown + return + } + + $target.one(Event.HIDDEN, () => { + if ($(this).is(':visible')) { + this.focus() + } + }) + }) + + Modal._jQueryInterface.call($(target), config, this) + }) + + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Modal._jQueryInterface + $.fn[NAME].Constructor = Modal + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT + return Modal._jQueryInterface + } + + return Modal + +})(jQuery) + +export default Modal diff --git a/js/src/popover.js b/js/src/popover.js new file mode 100644 index 0000000000..31c7a3ae1a --- /dev/null +++ b/js/src/popover.js @@ -0,0 +1,191 @@ +import Tooltip from './tooltip' + + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): popover.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +const Popover = (($) => { + + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + const NAME = 'popover' + const VERSION = '4.0.0' + const DATA_KEY = 'bs.popover' + const EVENT_KEY = `.${DATA_KEY}` + const JQUERY_NO_CONFLICT = $.fn[NAME] + + const Default = $.extend({}, Tooltip.Default, { + placement : 'right', + trigger : 'click', + content : '', + template : '<div class="popover" role="tooltip">' + + '<div class="popover-arrow"></div>' + + '<h3 class="popover-title"></h3>' + + '<div class="popover-content"></div></div>' + }) + + const DefaultType = $.extend({}, Tooltip.DefaultType, { + content : '(string|function)' + }) + + const ClassName = { + FADE : 'fade', + IN : 'in' + } + + const Selector = { + TITLE : '.popover-title', + CONTENT : '.popover-content', + ARROW : '.popover-arrow' + } + + const Event = { + HIDE : `hide${EVENT_KEY}`, + HIDDEN : `hidden${EVENT_KEY}`, + SHOW : `show${EVENT_KEY}`, + SHOWN : `shown${EVENT_KEY}`, + INSERTED : `inserted${EVENT_KEY}`, + CLICK : `click${EVENT_KEY}`, + FOCUSIN : `focusin${EVENT_KEY}`, + FOCUSOUT : `focusout${EVENT_KEY}`, + MOUSEENTER : `mouseenter${EVENT_KEY}`, + MOUSELEAVE : `mouseleave${EVENT_KEY}` + } + + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + class Popover extends Tooltip { + + + // getters + + static get VERSION() { + return VERSION + } + + static get Default() { + return Default + } + + static get NAME() { + return NAME + } + + static get DATA_KEY() { + return DATA_KEY + } + + static get Event() { + return Event + } + + static get EVENT_KEY() { + return EVENT_KEY + } + + static get DefaultType() { + return DefaultType + } + + + // overrides + + isWithContent() { + return this.getTitle() || this._getContent() + } + + getTipElement() { + return (this.tip = this.tip || $(this.config.template)[0]) + } + + setContent() { + let tip = this.getTipElement() + let title = this.getTitle() + let content = this._getContent() + let titleElement = $(tip).find(Selector.TITLE)[0] + + if (titleElement) { + titleElement[ + this.config.html ? 'innerHTML' : 'innerText' + ] = title + } + + // we use append for html objects to maintain js events + $(tip).find(Selector.CONTENT).children().detach().end()[ + this.config.html ? + (typeof content === 'string' ? 'html' : 'append') : 'text' + ](content) + + $(tip) + .removeClass(ClassName.FADE) + .removeClass(ClassName.IN) + + this.cleanupTether() + } + + // private + + _getContent() { + return this.element.getAttribute('data-content') + || (typeof this.config.content == 'function' ? + this.config.content.call(this.element) : + this.config.content) + } + + + // static + + static _jQueryInterface(config) { + return this.each(function () { + let data = $(this).data(DATA_KEY) + let _config = typeof config === 'object' ? config : null + + if (!data && /destroy|hide/.test(config)) { + return + } + + if (!data) { + data = new Popover(this, _config) + $(this).data(DATA_KEY, data) + } + + if (typeof config === 'string') { + data[config]() + } + }) + } + } + + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Popover._jQueryInterface + $.fn[NAME].Constructor = Popover + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT + return Popover._jQueryInterface + } + + return Popover + +})(jQuery) + +export default Popover diff --git a/js/src/scrollspy.js b/js/src/scrollspy.js new file mode 100644 index 0000000000..a407511f65 --- /dev/null +++ b/js/src/scrollspy.js @@ -0,0 +1,323 @@ +import Util from './util' + + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): scrollspy.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +const ScrollSpy = (($) => { + + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + const NAME = 'scrollspy' + const VERSION = '4.0.0' + const DATA_KEY = 'bs.scrollspy' + const EVENT_KEY = `.${DATA_KEY}` + const DATA_API_KEY = '.data-api' + const JQUERY_NO_CONFLICT = $.fn[NAME] + + const Default = { + offset : 10, + method : 'auto', + target : '' + } + + const DefaultType = { + offset : 'number', + method : 'string', + target : '(string|element)' + } + + const Event = { + ACTIVATE : `activate${EVENT_KEY}`, + SCROLL : `scroll${EVENT_KEY}`, + LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}` + } + + const ClassName = { + DROPDOWN_MENU : 'dropdown-menu', + ACTIVE : 'active' + } + + const Selector = { + DATA_SPY : '[data-spy="scroll"]', + ACTIVE : '.active', + LI : 'li', + LI_DROPDOWN : 'li.dropdown', + NAV_ANCHORS : '.nav li > a' + } + + const OffsetMethod = { + OFFSET : 'offset', + POSITION : 'position' + } + + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + class ScrollSpy { + + constructor(element, config) { + this._element = element + this._scrollElement = element.tagName === 'BODY' ? window : element + this._config = this._getConfig(config) + this._selector = `${this._config.target} ${Selector.NAV_ANCHORS}` + this._offsets = [] + this._targets = [] + this._activeTarget = null + this._scrollHeight = 0 + + $(this._scrollElement).on(Event.SCROLL, $.proxy(this._process, this)) + + this.refresh() + this._process() + } + + + // getters + + static get VERSION() { + return VERSION + } + + static get Default() { + return Default + } + + + // public + + refresh() { + let autoMethod = this._scrollElement !== this._scrollElement.window ? + OffsetMethod.POSITION : OffsetMethod.OFFSET + + let offsetMethod = this._config.method === 'auto' ? + autoMethod : this._config.method + + let offsetBase = offsetMethod === OffsetMethod.POSITION ? + this._getScrollTop() : 0 + + this._offsets = [] + this._targets = [] + + this._scrollHeight = this._getScrollHeight() + + let targets = $.makeArray($(this._selector)) + + targets + .map((element) => { + let target + let targetSelector = Util.getSelectorFromElement(element) + + if (targetSelector) { + target = $(targetSelector)[0] + } + + if (target && (target.offsetWidth || target.offsetHeight)) { + // todo (fat): remove sketch reliance on jQuery position/offset + return [ + $(target)[offsetMethod]().top + offsetBase, + targetSelector + ] + } + }) + .filter((item) => item) + .sort((a, b) => a[0] - b[0]) + .forEach((item) => { + this._offsets.push(item[0]) + this._targets.push(item[1]) + }) + } + + dispose() { + $.removeData(this._element, DATA_KEY) + $(this._scrollElement).off(EVENT_KEY) + + this._element = null + this._scrollElement = null + this._config = null + this._selector = null + this._offsets = null + this._targets = null + this._activeTarget = null + this._scrollHeight = null + } + + + // private + + _getConfig(config) { + config = $.extend({}, Default, config) + + if (typeof config.target !== 'string') { + let id = $(config.target).attr('id') + if (!id) { + id = Util.getUID(NAME) + $(config.target).attr('id', id) + } + config.target = `#${id}` + } + + Util.typeCheckConfig(NAME, config, DefaultType) + + return config + } + + _getScrollTop() { + return this._scrollElement === window ? + this._scrollElement.scrollY : this._scrollElement.scrollTop + } + + _getScrollHeight() { + return this._scrollElement.scrollHeight || Math.max( + document.body.scrollHeight, + document.documentElement.scrollHeight + ) + } + + _process() { + let scrollTop = this._getScrollTop() + this._config.offset + let scrollHeight = this._getScrollHeight() + let maxScroll = this._config.offset + + scrollHeight + - this._scrollElement.offsetHeight + + if (this._scrollHeight !== scrollHeight) { + this.refresh() + } + + if (scrollTop >= maxScroll) { + let target = this._targets[this._targets.length - 1] + + if (this._activeTarget !== target) { + this._activate(target) + } + } + + if (this._activeTarget && scrollTop < this._offsets[0]) { + this._activeTarget = null + this._clear() + return + } + + for (let i = this._offsets.length; i--;) { + let isActiveTarget = this._activeTarget !== this._targets[i] + && scrollTop >= this._offsets[i] + && (this._offsets[i + 1] === undefined || + scrollTop < this._offsets[i + 1]) + + if (isActiveTarget) { + this._activate(this._targets[i]) + } + } + } + + _activate(target) { + this._activeTarget = target + + this._clear() + + let selector = + `${this._selector}[data-target="${target}"],` + + `${this._selector}[href="${target}"]` + + // todo (fat): getting all the raw li's up the tree is not great. + let parentListItems = $(selector).parents(Selector.LI) + + for (let i = parentListItems.length; i--;) { + $(parentListItems[i]).addClass(ClassName.ACTIVE) + + let itemParent = parentListItems[i].parentNode + + if (itemParent && $(itemParent).hasClass(ClassName.DROPDOWN_MENU)) { + let closestDropdown = $(itemParent) + .closest(Selector.LI_DROPDOWN)[0] + $(closestDropdown).addClass(ClassName.ACTIVE) + } + } + + $(this._scrollElement).trigger(Event.ACTIVATE, { + relatedTarget: target + }) + } + + _clear() { + let activeParents = $(this._selector).parentsUntil( + this._config.target, + Selector.ACTIVE + ) + + for (let i = activeParents.length; i--;) { + $(activeParents[i]).removeClass(ClassName.ACTIVE) + } + } + + + // static + + static _jQueryInterface(config) { + return this.each(function () { + let data = $(this).data(DATA_KEY) + let _config = typeof config === 'object' && config || null + + if (!data) { + data = new ScrollSpy(this, _config) + $(this).data(DATA_KEY, data) + } + + if (typeof config === 'string') { + data[config]() + } + }) + } + + + } + + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(window).on(Event.LOAD_DATA_API, function () { + let scrollSpys = $.makeArray($(Selector.DATA_SPY)) + + for (let i = scrollSpys.length; i--;) { + let $spy = $(scrollSpys[i]) + ScrollSpy._jQueryInterface.call($spy, $spy.data()) + } + }) + + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = ScrollSpy._jQueryInterface + $.fn[NAME].Constructor = ScrollSpy + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT + return ScrollSpy._jQueryInterface + } + + return ScrollSpy + +})(jQuery) + +export default ScrollSpy diff --git a/js/src/tab.js b/js/src/tab.js new file mode 100644 index 0000000000..4d8d7dec8d --- /dev/null +++ b/js/src/tab.js @@ -0,0 +1,287 @@ +import Util from './util' + + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): tab.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +const Tab = (($) => { + + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + const NAME = 'tab' + const VERSION = '4.0.0' + const DATA_KEY = 'bs.tab' + const EVENT_KEY = `.${DATA_KEY}` + const DATA_API_KEY = '.data-api' + const JQUERY_NO_CONFLICT = $.fn[NAME] + const TRANSITION_DURATION = 150 + + const Event = { + HIDE : `hide${EVENT_KEY}`, + HIDDEN : `hidden${EVENT_KEY}`, + SHOW : `show${EVENT_KEY}`, + SHOWN : `shown${EVENT_KEY}`, + CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}` + } + + const ClassName = { + DROPDOWN_MENU : 'dropdown-menu', + ACTIVE : 'active', + FADE : 'fade', + IN : 'in' + } + + const Selector = { + A : 'a', + LI : 'li', + LI_DROPDOWN : 'li.dropdown', + UL : 'ul:not(.dropdown-menu)', + FADE_CHILD : '> .fade', + ACTIVE : '.active', + ACTIVE_CHILD : '> .active', + DATA_TOGGLE : '[data-toggle="tab"], [data-toggle="pill"]', + DROPDOWN_ACTIVE_CHILD : '> .dropdown-menu > .active' + } + + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + class Tab { + + constructor(element) { + this._element = element + } + + + // getters + + static get VERSION() { + return VERSION + } + + + // public + + show() { + if (this._element.parentNode && + (this._element.parentNode.nodeType == Node.ELEMENT_NODE) && + ($(this._element).parent().hasClass(ClassName.ACTIVE))) { + return + } + + let target + let previous + let ulElement = $(this._element).closest(Selector.UL)[0] + let selector = Util.getSelectorFromElement(this._element) + + if (ulElement) { + previous = $.makeArray($(ulElement).find(Selector.ACTIVE)) + previous = previous[previous.length - 1] + + if (previous) { + previous = $(previous).find(Selector.A)[0] + } + } + + let hideEvent = $.Event(Event.HIDE, { + relatedTarget: this._element + }) + + let showEvent = $.Event(Event.SHOW, { + relatedTarget: previous + }) + + if (previous) { + $(previous).trigger(hideEvent) + } + + $(this._element).trigger(showEvent) + + if (showEvent.isDefaultPrevented() || + (hideEvent.isDefaultPrevented())) { + return + } + + if (selector) { + target = $(selector)[0] + } + + this._activate( + $(this._element).closest(Selector.LI)[0], + ulElement + ) + + let complete = () => { + let hiddenEvent = $.Event(Event.HIDDEN, { + relatedTarget: this._element + }) + + let shownEvent = $.Event(Event.SHOWN, { + relatedTarget: previous + }) + + $(previous).trigger(hiddenEvent) + $(this._element).trigger(shownEvent) + } + + if (target) { + this._activate(target, target.parentNode, complete) + } else { + complete() + } + } + + dispose() { + $.removeClass(this._element, DATA_KEY) + this._element = null + } + + + // private + + _activate(element, container, callback) { + let active = $(container).find(Selector.ACTIVE_CHILD)[0] + let isTransitioning = callback + && Util.supportsTransitionEnd() + && ((active && $(active).hasClass(ClassName.FADE)) + || !!$(container).find(Selector.FADE_CHILD)[0]) + + let complete = $.proxy( + this._transitionComplete, + this, + element, + active, + isTransitioning, + callback + ) + + if (active && isTransitioning) { + $(active) + .one(Util.TRANSITION_END, complete) + .emulateTransitionEnd(TRANSITION_DURATION) + + } else { + complete() + } + + if (active) { + $(active).removeClass(ClassName.IN) + } + } + + _transitionComplete(element, active, isTransitioning, callback) { + if (active) { + $(active).removeClass(ClassName.ACTIVE) + + let dropdownChild = $(active).find( + Selector.DROPDOWN_ACTIVE_CHILD + )[0] + if (dropdownChild) { + $(dropdownChild).removeClass(ClassName.ACTIVE) + } + + let activeToggle = $(active).find(Selector.DATA_TOGGLE)[0] + if (activeToggle) { + activeToggle.setAttribute('aria-expanded', false) + } + } + + $(element).addClass(ClassName.ACTIVE) + + let elementToggle = $(element).find(Selector.DATA_TOGGLE)[0] + if (elementToggle) { + elementToggle.setAttribute('aria-expanded', true) + } + + if (isTransitioning) { + Util.reflow(element) + $(element).addClass(ClassName.IN) + } else { + $(element).removeClass(ClassName.FADE) + } + + if (element.parentNode && + ($(element.parentNode).hasClass(ClassName.DROPDOWN_MENU))) { + + let dropdownElement = $(element).closest(Selector.LI_DROPDOWN)[0] + if (dropdownElement) { + $(dropdownElement).addClass(ClassName.ACTIVE) + } + + elementToggle = $(element).find(Selector.DATA_TOGGLE)[0] + if (elementToggle) { + elementToggle.setAttribute('aria-expanded', true) + } + } + + if (callback) { + callback() + } + } + + + // static + + static _jQueryInterface(config) { + return this.each(function () { + let $this = $(this) + let data = $this.data(DATA_KEY) + + if (!data) { + data = data = new Tab(this) + $this.data(DATA_KEY, data) + } + + if (typeof config === 'string') { + data[config]() + } + }) + } + + } + + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document) + .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + event.preventDefault() + Tab._jQueryInterface.call($(this), 'show') + }) + + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Tab._jQueryInterface + $.fn[NAME].Constructor = Tab + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT + return Tab._jQueryInterface + } + + return Tab + +})(jQuery) + +export default Tab diff --git a/js/src/tooltip.js b/js/src/tooltip.js new file mode 100644 index 0000000000..5d62e154ad --- /dev/null +++ b/js/src/tooltip.js @@ -0,0 +1,632 @@ +import Util from './util' + + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): tooltip.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +const Tooltip = (($) => { + + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + const NAME = 'tooltip' + const VERSION = '4.0.0' + const DATA_KEY = 'bs.tooltip' + const EVENT_KEY = `.${DATA_KEY}` + const JQUERY_NO_CONFLICT = $.fn[NAME] + const TRANSITION_DURATION = 150 + const CLASS_PREFIX = 'bs-tether' + + const Default = { + animation : true, + template : '<div class="tooltip" role="tooltip">' + + '<div class="tooltip-arrow"></div>' + + '<div class="tooltip-inner"></div></div>', + trigger : 'hover focus', + title : '', + delay : 0, + html : false, + selector : false, + placement : 'top', + offset : '0 0', + constraints : [] + } + + const DefaultType = { + animation : 'boolean', + template : 'string', + title : '(string|function)', + trigger : 'string', + delay : '(number|object)', + html : 'boolean', + selector : '(string|boolean)', + placement : '(string|function)', + offset : 'string', + constraints : 'array' + } + + const AttachmentMap = { + TOP : 'bottom center', + RIGHT : 'middle left', + BOTTOM : 'top center', + LEFT : 'middle right' + } + + const HoverState = { + IN : 'in', + OUT : 'out' + } + + const Event = { + HIDE : `hide${EVENT_KEY}`, + HIDDEN : `hidden${EVENT_KEY}`, + SHOW : `show${EVENT_KEY}`, + SHOWN : `shown${EVENT_KEY}`, + INSERTED : `inserted${EVENT_KEY}`, + CLICK : `click${EVENT_KEY}`, + FOCUSIN : `focusin${EVENT_KEY}`, + FOCUSOUT : `focusout${EVENT_KEY}`, + MOUSEENTER : `mouseenter${EVENT_KEY}`, + MOUSELEAVE : `mouseleave${EVENT_KEY}` + } + + const ClassName = { + FADE : 'fade', + IN : 'in' + } + + const Selector = { + TOOLTIP : '.tooltip', + TOOLTIP_INNER : '.tooltip-inner' + } + + const TetherClass = { + element : false, + enabled : false + } + + const Trigger = { + HOVER : 'hover', + FOCUS : 'focus', + CLICK : 'click', + MANUAL : 'manual' + } + + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + class Tooltip { + + constructor(element, config) { + + // private + this._isEnabled = true + this._timeout = 0 + this._hoverState = '' + this._activeTrigger = {} + this._tether = null + + // protected + this.element = element + this.config = this._getConfig(config) + this.tip = null + + this._setListeners() + + } + + + // getters + + static get VERSION() { + return VERSION + } + + static get Default() { + return Default + } + + static get NAME() { + return NAME + } + + static get DATA_KEY() { + return DATA_KEY + } + + static get Event() { + return Event + } + + static get EVENT_KEY() { + return EVENT_KEY + } + + static get DefaultType() { + return DefaultType + } + + + // public + + enable() { + this._isEnabled = true + } + + disable() { + this._isEnabled = false + } + + toggleEnabled() { + this._isEnabled = !this._isEnabled + } + + toggle(event) { + let context = this + let dataKey = this.constructor.DATA_KEY + + if (event) { + context = $(event.currentTarget).data(dataKey) + + if (!context) { + context = new this.constructor( + event.currentTarget, + this._getDelegateConfig() + ) + $(event.currentTarget).data(dataKey, context) + } + + context._activeTrigger.click = !context._activeTrigger.click + + if (context._isWithActiveTrigger()) { + context._enter(null, context) + } else { + context._leave(null, context) + } + + } else { + $(context.getTipElement()).hasClass(ClassName.IN) ? + context._leave(null, context) : + context._enter(null, context) + } + } + + dispose() { + clearTimeout(this._timeout) + + this.cleanupTether() + + $.removeData(this.element, this.constructor.DATA_KEY) + + $(this.element).off(this.constructor.EVENT_KEY) + + if (this.tip) { + $(this.tip).remove() + } + + this._isEnabled = null + this._timeout = null + this._hoverState = null + this._activeTrigger = null + this._tether = null + + this.element = null + this.config = null + this.tip = null + } + + show() { + let showEvent = $.Event(this.constructor.Event.SHOW) + + if (this.isWithContent() && this._isEnabled) { + $(this.element).trigger(showEvent) + + let isInTheDom = $.contains( + this.element.ownerDocument.documentElement, + this.element + ) + + if (showEvent.isDefaultPrevented() || !isInTheDom) { + return + } + + let tip = this.getTipElement() + let tipId = Util.getUID(this.constructor.NAME) + + tip.setAttribute('id', tipId) + this.element.setAttribute('aria-describedby', tipId) + + this.setContent() + + if (this.config.animation) { + $(tip).addClass(ClassName.FADE) + } + + let placement = typeof this.config.placement === 'function' ? + this.config.placement.call(this, tip, this.element) : + this.config.placement + + let attachment = this._getAttachment(placement) + + $(tip) + .data(this.constructor.DATA_KEY, this) + .appendTo(document.body) + + $(this.element).trigger(this.constructor.Event.INSERTED) + + this._tether = new Tether({ + element : tip, + target : this.element, + attachment : attachment, + classes : TetherClass, + classPrefix : CLASS_PREFIX, + offset : this.config.offset, + constraints : this.config.constraints + }) + + Util.reflow(tip) + this._tether.position() + + $(tip).addClass(ClassName.IN) + + let complete = () => { + let prevHoverState = this._hoverState + this._hoverState = null + + $(this.element).trigger(this.constructor.Event.SHOWN) + + if (prevHoverState === HoverState.OUT) { + this._leave(null, this) + } + } + + Util.supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE) ? + $(this.tip) + .one(Util.TRANSITION_END, complete) + .emulateTransitionEnd(Tooltip._TRANSITION_DURATION) : + complete() + } + } + + hide(callback) { + let tip = this.getTipElement() + let hideEvent = $.Event(this.constructor.Event.HIDE) + let complete = () => { + if (this._hoverState !== HoverState.IN && tip.parentNode) { + tip.parentNode.removeChild(tip) + } + + this.element.removeAttribute('aria-describedby') + $(this.element).trigger(this.constructor.Event.HIDDEN) + this.cleanupTether() + + if (callback) { + callback() + } + } + + $(this.element).trigger(hideEvent) + + if (hideEvent.isDefaultPrevented()) { + return + } + + $(tip).removeClass(ClassName.IN) + + if (Util.supportsTransitionEnd() && + ($(this.tip).hasClass(ClassName.FADE))) { + + $(tip) + .one(Util.TRANSITION_END, complete) + .emulateTransitionEnd(TRANSITION_DURATION) + + } else { + complete() + } + + this._hoverState = '' + } + + + // protected + + isWithContent() { + return !!this.getTitle() + } + + getTipElement() { + return (this.tip = this.tip || $(this.config.template)[0]) + } + + setContent() { + let tip = this.getTipElement() + let title = this.getTitle() + let method = this.config.html ? 'innerHTML' : 'innerText' + + $(tip).find(Selector.TOOLTIP_INNER)[0][method] = title + + $(tip) + .removeClass(ClassName.FADE) + .removeClass(ClassName.IN) + + this.cleanupTether() + } + + getTitle() { + let title = this.element.getAttribute('data-original-title') + + if (!title) { + title = typeof this.config.title === 'function' ? + this.config.title.call(this.element) : + this.config.title + } + + return title + } + + cleanupTether() { + if (this._tether) { + this._tether.destroy() + + // clean up after tether's junk classes + // remove after they fix issue + // (https://github.com/HubSpot/tether/issues/36) + $(this.element).removeClass(this._removeTetherClasses) + $(this.tip).removeClass(this._removeTetherClasses) + } + } + + + // private + + _getAttachment(placement) { + return AttachmentMap[placement.toUpperCase()] + } + + _setListeners() { + let triggers = this.config.trigger.split(' ') + + triggers.forEach((trigger) => { + if (trigger === 'click') { + $(this.element).on( + this.constructor.Event.CLICK, + this.config.selector, + $.proxy(this.toggle, this) + ) + + } else if (trigger !== Trigger.MANUAL) { + let eventIn = trigger == Trigger.HOVER ? + this.constructor.Event.MOUSEENTER : + this.constructor.Event.FOCUSIN + let eventOut = trigger == Trigger.HOVER ? + this.constructor.Event.MOUSELEAVE : + this.constructor.Event.FOCUSOUT + + $(this.element) + .on( + eventIn, + this.config.selector, + $.proxy(this._enter, this) + ) + .on( + eventOut, + this.config.selector, + $.proxy(this._leave, this) + ) + } + }) + + if (this.config.selector) { + this.config = $.extend({}, this.config, { + trigger : 'manual', + selector : '' + }) + } else { + this._fixTitle() + } + } + + _removeTetherClasses(i, css) { + return ((css.baseVal || css).match( + new RegExp(`(^|\\s)${CLASS_PREFIX}-\\S+`, 'g')) || [] + ).join(' ') + } + + _fixTitle() { + let titleType = typeof this.element.getAttribute('data-original-title') + if (this.element.getAttribute('title') || + (titleType !== 'string')) { + this.element.setAttribute( + 'data-original-title', + this.element.getAttribute('title') || '' + ) + this.element.setAttribute('title', '') + } + } + + _enter(event, context) { + let dataKey = this.constructor.DATA_KEY + + context = context || $(event.currentTarget).data(dataKey) + + if (!context) { + context = new this.constructor( + event.currentTarget, + this._getDelegateConfig() + ) + $(event.currentTarget).data(dataKey, context) + } + + if (event) { + context._activeTrigger[ + event.type == 'focusin' ? Trigger.FOCUS : Trigger.HOVER + ] = true + } + + if ($(context.getTipElement()).hasClass(ClassName.IN) || + (context._hoverState === HoverState.IN)) { + context._hoverState = HoverState.IN + return + } + + clearTimeout(context._timeout) + + context._hoverState = HoverState.IN + + if (!context.config.delay || !context.config.delay.show) { + context.show() + return + } + + context._timeout = setTimeout(() => { + if (context._hoverState === HoverState.IN) { + context.show() + } + }, context.config.delay.show) + } + + _leave(event, context) { + let dataKey = this.constructor.DATA_KEY + + context = context || $(event.currentTarget).data(dataKey) + + if (!context) { + context = new this.constructor( + event.currentTarget, + this._getDelegateConfig() + ) + $(event.currentTarget).data(dataKey, context) + } + + if (event) { + context._activeTrigger[ + event.type == 'focusout' ? Trigger.FOCUS : Trigger.HOVER + ] = false + } + + if (context._isWithActiveTrigger()) { + return + } + + clearTimeout(context._timeout) + + context._hoverState = HoverState.OUT + + if (!context.config.delay || !context.config.delay.hide) { + context.hide() + return + } + + context._timeout = setTimeout(() => { + if (context._hoverState === HoverState.OUT) { + context.hide() + } + }, context.config.delay.hide) + } + + _isWithActiveTrigger() { + for (let trigger in this._activeTrigger) { + if (this._activeTrigger[trigger]) { + return true + } + } + + return false + } + + _getConfig(config) { + config = $.extend( + {}, + this.constructor.Default, + $(this.element).data(), + config + ) + + if (config.delay && typeof config.delay === 'number') { + config.delay = { + show : config.delay, + hide : config.delay + } + } + + Util.typeCheckConfig( + NAME, + config, + this.constructor.DefaultType + ) + + return config + } + + _getDelegateConfig() { + let config = {} + + if (this.config) { + for (let key in this.config) { + let value = this.config[key] + if (this.constructor.Default[key] !== value) { + config[key] = value + } + } + } + + return config + } + + + // static + + static _jQueryInterface(config) { + return this.each(function () { + let data = $(this).data(DATA_KEY) + let _config = typeof config === 'object' ? + config : null + + if (!data && /destroy|hide/.test(config)) { + return + } + + if (!data) { + data = new Tooltip(this, _config) + $(this).data(DATA_KEY, data) + } + + if (typeof config === 'string') { + data[config]() + } + }) + } + + } + + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Tooltip._jQueryInterface + $.fn[NAME].Constructor = Tooltip + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT + return Tooltip._jQueryInterface + } + + return Tooltip + +})(jQuery) + +export default Tooltip diff --git a/js/src/util.js b/js/src/util.js new file mode 100644 index 0000000000..86bea65788 --- /dev/null +++ b/js/src/util.js @@ -0,0 +1,156 @@ +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0): util.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +const Util = (($) => { + + + /** + * ------------------------------------------------------------------------ + * Private TransitionEnd Helpers + * ------------------------------------------------------------------------ + */ + + let transition = false + + const TransitionEndEvent = { + WebkitTransition : 'webkitTransitionEnd', + MozTransition : 'transitionend', + OTransition : 'oTransitionEnd otransitionend', + transition : 'transitionend' + } + + // shoutout AngusCroll (https://goo.gl/pxwQGp) + function toType(obj) { + return ({}).toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase() + } + + function isElement(obj) { + return (obj[0] || obj).nodeType; + } + + function getSpecialTransitionEndEvent() { + return { + bindType: transition.end, + delegateType: transition.end, + handle: function (event) { + if ($(event.target).is(this)) { + return event.handleObj.handler.apply(this, arguments) + } + } + } + } + + function transitionEndTest() { + if (window.QUnit) { + return false + } + + let el = document.createElement('bootstrap') + + for (var name in TransitionEndEvent) { + if (el.style[name] !== undefined) { + return { end: TransitionEndEvent[name] } + } + } + + return false + } + + function transitionEndEmulator(duration) { + let called = false + + $(this).one(Util.TRANSITION_END, function () { + called = true + }) + + setTimeout(() => { + if (!called) { + Util.triggerTransitionEnd(this) + } + }, duration) + + return this + } + + function setTransitionEndSupport() { + transition = transitionEndTest() + + $.fn.emulateTransitionEnd = transitionEndEmulator + + if (Util.supportsTransitionEnd()) { + $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent() + } + } + + + /** + * -------------------------------------------------------------------------- + * Public Util Api + * -------------------------------------------------------------------------- + */ + + let Util = { + + TRANSITION_END: 'bsTransitionEnd', + + getUID(prefix) { + do prefix += ~~(Math.random() * 1000000) + while (document.getElementById(prefix)) + return prefix + }, + + getSelectorFromElement(element) { + let selector = element.getAttribute('data-target') + + if (!selector) { + selector = element.getAttribute('href') || '' + selector = /^#[a-z]/i.test(selector) ? selector : null + } + + return selector + }, + + reflow(element) { + new Function('bs', 'return bs')(element.offsetHeight) + }, + + triggerTransitionEnd(element) { + $(element).trigger(transition.end) + }, + + supportsTransitionEnd() { + return !!transition + }, + + typeCheckConfig(componentName, config, configTypes) { + + for (let property in configTypes) { + let expectedTypes = configTypes[property] + let value = config[property] + let valueType + + if (value && isElement(value)) valueType = 'element' + else valueType = toType(value) + + if (!new RegExp(expectedTypes).test(valueType)) { + throw new Error( + `${componentName.toUpperCase()}: ` + + `Option "${property}" provided type "${valueType}" ` + + `but expected type "${expectedTypes}".`) + } + } + } + + } + + setTransitionEndSupport() + + return Util + +})(jQuery) + +export default Util diff --git a/js/tab.js b/js/tab.js deleted file mode 100644 index 07897294a3..0000000000 --- a/js/tab.js +++ /dev/null @@ -1,324 +0,0 @@ -/** ======================================================================= - * Bootstrap: tab.js v4.0.0 - * http://getbootstrap.com/javascript/#tabs - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== - * @fileoverview - Bootstrap's tab plugin. Tab O_O - * - * Public Methods & Properties: - * - * + $.tab - * + $.tab.noConflict - * + $.tab.Constructor - * + $.tab.Constructor.VERSION - * + $.tab.Constructor.prototype.show - * - * ======================================================================== - */ - - -'use strict'; - -/** - * Our Tab class. - * @param {Element!} element - * @constructor - */ -var Tab = function (element) { - - /** @type {Element} */ - this._element = element - -} - - -/** - * @const - * @type {string} - */ -Tab['VERSION'] = '4.0.0' - - -/** - * @const - * @type {string} - * @private - */ -Tab._NAME = 'tab' - - -/** - * @const - * @type {string} - * @private - */ -Tab._DATA_KEY = 'bs.tab' - - -/** - * @const - * @type {number} - * @private - */ -Tab._TRANSITION_DURATION = 150 - - -/** - * @const - * @enum {string} - * @private - */ -Tab._Event = { - HIDE : 'hide.bs.tab', - HIDDEN : 'hidden.bs.tab', - SHOW : 'show.bs.tab', - SHOWN : 'shown.bs.tab' -} - - -/** - * @const - * @enum {string} - * @private - */ -Tab._ClassName = { - DROPDOWN_MENU : 'dropdown-menu', - ACTIVE : 'active', - FADE : 'fade', - IN : 'in' -} - - -/** - * @const - * @enum {string} - * @private - */ -Tab._Selector = { - A : 'a', - LI : 'li', - LI_DROPDOWN : 'li.dropdown', - UL : 'ul:not(.dropdown-menu)', - FADE_CHILD : ':scope > .fade', - ACTIVE : '.active', - ACTIVE_CHILD : ':scope > .active', - DATA_TOGGLE : '[data-toggle="tab"], [data-toggle="pill"]', - DROPDOWN_ACTIVE_CHILD : ':scope > .dropdown-menu > .active' -} - - -/** - * @param {Object|string=} opt_config - * @this {jQuery} - * @return {jQuery} - * @private - */ -Tab._jQueryInterface = function (opt_config) { - return this.each(function () { - var $this = $(this) - var data = $this.data(Tab._DATA_KEY) - - if (!data) { - data = data = new Tab(this) - $this.data(Tab._DATA_KEY, data) - } - - if (typeof opt_config === 'string') { - data[opt_config]() - } - }) -} - - -/** - * Show the tab - */ -Tab.prototype['show'] = function () { - if ( this._element.parentNode - && this._element.parentNode.nodeType == Node.ELEMENT_NODE - && $(this._element).parent().hasClass(Tab._ClassName.ACTIVE)) { - return - } - - var ulElement = $(this._element).closest(Tab._Selector.UL)[0] - var selector = Bootstrap.getSelectorFromElement(this._element) - - if (ulElement) { - var previous = /** @type {Array.<Element>} */ ($.makeArray($(ulElement).find(Tab._Selector.ACTIVE))) - previous = previous[previous.length - 1] - - if (previous) { - previous = $(previous).find('a')[0] - } - } - - var hideEvent = $.Event(Tab._Event.HIDE, { - relatedTarget: this._element - }) - - var showEvent = $.Event(Tab._Event.SHOW, { - relatedTarget: previous - }) - - if (previous) { - $(previous).trigger(hideEvent) - } - - $(this._element).trigger(showEvent) - - if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return - - if (selector) { - var target = $(selector)[0] - } - - this._activate($(this._element).closest(Tab._Selector.LI)[0], ulElement) - - var complete = function () { - var hiddenEvent = $.Event(Tab._Event.HIDDEN, { - relatedTarget: this._element - }) - - var shownEvent = $.Event(Tab._Event.SHOWN, { - relatedTarget: previous - }) - - $(previous).trigger(hiddenEvent) - $(this._element).trigger(shownEvent) - }.bind(this) - - if (target) { - this._activate(target, /** @type {Element} */ (target.parentNode), complete) - } else { - complete() - } -} - - -/** - * @param {Element} element - * @param {Element} container - * @param {Function=} opt_callback - * @private - */ -Tab.prototype._activate = function (element, container, opt_callback) { - var active = $(container).find(Tab._Selector.ACTIVE_CHILD)[0] - var isTransitioning = opt_callback - && Bootstrap.transition - && ((active && $(active).hasClass(Tab._ClassName.FADE)) - || !!$(container).find(Tab._Selector.FADE_CHILD)[0]) - - var complete = this._transitionComplete.bind(this, element, active, isTransitioning, opt_callback) - - if (active && isTransitioning) { - $(active) - .one(Bootstrap.TRANSITION_END, complete) - .emulateTransitionEnd(Tab._TRANSITION_DURATION) - - } else { - complete() - } - - if (active) { - $(active).removeClass(Tab._ClassName.IN) - } -} - - -/** - * @param {Element} element - * @param {Element} active - * @param {boolean} isTransitioning - * @param {Function=} opt_callback - * @private - */ -Tab.prototype._transitionComplete = function (element, active, isTransitioning, opt_callback) { - if (active) { - $(active).removeClass(Tab._ClassName.ACTIVE) - - var dropdownChild = $(active).find(Tab._Selector.DROPDOWN_ACTIVE_CHILD)[0] - if (dropdownChild) { - $(dropdownChild).removeClass(Tab._ClassName.ACTIVE) - } - - var activeToggle = $(active).find(Tab._Selector.DATA_TOGGLE)[0] - if (activeToggle) { - activeToggle.setAttribute('aria-expanded', false) - } - } - - $(element).addClass(Tab._ClassName.ACTIVE) - - var elementToggle = $(element).find(Tab._Selector.DATA_TOGGLE)[0] - if (elementToggle) { - elementToggle.setAttribute('aria-expanded', true) - } - - if (isTransitioning) { - Bootstrap.reflow(element) - $(element).addClass(Tab._ClassName.IN) - } else { - $(element).removeClass(Tab._ClassName.FADE) - } - - if (element.parentNode && $(element.parentNode).hasClass(Tab._ClassName.DROPDOWN_MENU)) { - var dropdownElement = $(element).closest(Tab._Selector.LI_DROPDOWN)[0] - if (dropdownElement) { - $(dropdownElement).addClass(Tab._ClassName.ACTIVE) - } - - elementToggle = $(element).find(Tab._Selector.DATA_TOGGLE)[0] - if (elementToggle) { - elementToggle.setAttribute('aria-expanded', true) - } - } - - if (opt_callback) { - opt_callback() - } -} - - -/** - * ------------------------------------------------------------------------ - * jQuery Interface + noConflict implementaiton - * ------------------------------------------------------------------------ - */ - -/** - * @const - * @type {Function} - */ -$.fn[Tab._NAME] = Tab._jQueryInterface - - -/** - * @const - * @type {Function} - */ -$.fn[Tab._NAME]['Constructor'] = Tab - - -/** - * @const - * @type {Function} - */ -$.fn[Tab._NAME]['noConflict'] = function () { - $.fn[Tab._NAME] = Tab._JQUERY_NO_CONFLICT - return this -} - - - -// TAB DATA-API -// ============ - -var clickHandler = function (e) { - e.preventDefault() - Tab._jQueryInterface.call($(this), 'show') -} - -$(document) - .on('click.bs.tab.data-api', Tab._Selector.DATA_TOGGLE, clickHandler) diff --git a/js/tests/closure.html b/js/tests/closure.html deleted file mode 100644 index 82c65f62b8..0000000000 --- a/js/tests/closure.html +++ /dev/null @@ -1,83 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset="utf-8"> - <title>Bootstrap Plugin Test Suite</title> - <meta name="viewport" content="width=device-width, initial-scale=1"> - - <!-- jQuery --> - <script src="vendor/jquery.min.js"></script> - - <!-- QUnit --> - <link rel="stylesheet" href="vendor/qunit.css" media="screen"> - <script src="vendor/qunit.js"></script> - <style> - #qunit-tests > li.pass { - display: none;/* Make it easier to see failing tests in Sauce screencasts */ - } - - #qunit-fixture { - top: 0; - left: 0; - } - </style> - <script> - // See https://github.com/axemclion/grunt-saucelabs#test-result-details-with-qunit - var log = [] - QUnit.done(function (testResults) { - var tests = [] - for (var i = 0, len = log.length; i < len; i++) { - var details = log[i] - tests.push({ - name: details.name, - result: details.result, - expected: details.expected, - actual: details.actual, - source: details.source - }) - } - testResults.tests = tests - - window.global_test_results = testResults - }) - - QUnit.testStart(function (testDetails) { - $(window).scrollTop(0) - QUnit.log = function (details) { - if (!details.result) { - details.name = testDetails.name - log.push(details) - } - } - }) - - // Cleanup - QUnit.testDone(function () { - $('#qunit-fixture').empty() - $('#modal-test, .modal-backdrop').remove() - }) - </script> - - <!-- Plugin sources --> - <script src="../../dist/js/bootstrap.min.js"></script> - - <!-- Unit tests --> - <script src="unit/alert.js"></script> - <script src="unit/button.js"></script> - <script src="unit/carousel.js"></script> - <script src="unit/collapse.js"></script> - <script src="unit/dropdown.js"></script> - <script src="unit/modal.js"></script> - <script src="unit/scrollspy.js"></script> - <script src="unit/tab.js"></script> - <script src="unit/tooltip.js"></script> - <script src="unit/popover.js"></script> - - </head> - <body> - <div id="qunit-container"> - <div id="qunit"></div> - <div id="qunit-fixture"></div> - </div> - </body> -</html> diff --git a/js/tests/index.html b/js/tests/index.html index d1ec0a7f40..0e2bdd012f 100644 --- a/js/tests/index.html +++ b/js/tests/index.html @@ -7,6 +7,7 @@ <!-- jQuery --> <script src="vendor/jquery.min.js"></script> + <script src="vendor/tether.min.js"></script> <script> // Disable jQuery event aliases to ensure we don't accidentally use any of them (function () { @@ -129,18 +130,18 @@ })(); </script> - <!-- Plugin sources --> - <script src="../../js/util.js"></script> - <script src="../../js/alert.js"></script> - <script src="../../js/button.js"></script> - <script src="../../js/carousel.js"></script> - <script src="../../js/collapse.js"></script> - <script src="../../js/dropdown.js"></script> - <script src="../../js/modal.js"></script> - <script src="../../js/scrollspy.js"></script> - <script src="../../js/tab.js"></script> - <script src="../../js/tooltip.js"></script> - <script src="../../js/popover.js"></script> + <!-- es6 Plugin sources --> + <script src="../../js/dist/util.js"></script> + <script src="../../js/dist/alert.js"></script> + <script src="../../js/dist/button.js"></script> + <script src="../../js/dist/carousel.js"></script> + <script src="../../js/dist/collapse.js"></script> + <script src="../../js/dist/dropdown.js"></script> + <script src="../../js/dist/modal.js"></script> + <script src="../../js/dist/scrollspy.js"></script> + <script src="../../js/dist/tab.js"></script> + <script src="../../js/dist/tooltip.js"></script> + <script src="../../js/dist/popover.js"></script> <!-- Unit tests --> <script src="unit/alert.js"></script> diff --git a/js/tests/unit/alert.js b/js/tests/unit/alert.js index 6be990a518..97818960ac 100644 --- a/js/tests/unit/alert.js +++ b/js/tests/unit/alert.js @@ -38,7 +38,8 @@ $(function () { + '<a class="close" href="#" data-dismiss="alert">×</a>' + '<p><strong>Holy guacamole!</strong> Best check yo self, you\'re not looking too good.</p>' + '</div>' - var $alert = $(alertHTML).bootstrapAlert() + + var $alert = $(alertHTML).bootstrapAlert().appendTo($('#qunit-fixture')) $alert.find('.close').trigger('click') diff --git a/js/tests/unit/button.js b/js/tests/unit/button.js index 08b071d655..5648506cf5 100644 --- a/js/tests/unit/button.js +++ b/js/tests/unit/button.js @@ -1,83 +1,79 @@ $(function () { 'use strict'; - module('button plugin') + QUnit.module('button plugin') - test('should be defined on jquery object', function () { - ok($(document.body).button, 'button method is defined') + QUnit.test('should be defined on jquery object', function (assert) { + assert.expect(1) + assert.ok($(document.body).button, 'button method is defined') }) - module('button', { - setup: function () { + QUnit.module('button', { + beforeEach: function () { // Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode $.fn.bootstrapButton = $.fn.button.noConflict() }, - teardown: function () { + afterEach: function () { $.fn.button = $.fn.bootstrapButton delete $.fn.bootstrapButton } }) - test('should provide no conflict', function () { - strictEqual($.fn.button, undefined, 'button was set back to undefined (org value)') + QUnit.test('should provide no conflict', function (assert) { + assert.expect(1) + assert.strictEqual($.fn.button, undefined, 'button was set back to undefined (org value)') }) - test('should return jquery collection containing the element', function () { + QUnit.test('should return jquery collection containing the element', function (assert) { + assert.expect(2) var $el = $('<div/>') var $button = $el.bootstrapButton() - ok($button instanceof $, 'returns jquery collection') - strictEqual($button[0], $el[0], 'collection contains element') + assert.ok($button instanceof $, 'returns jquery collection') + assert.strictEqual($button[0], $el[0], 'collection contains element') }) - test('should toggle active', function () { + QUnit.test('should toggle active', function (assert) { + assert.expect(2) var $btn = $('<button class="btn" data-toggle="button">mdo</button>') - ok(!$btn.hasClass('active'), 'btn does not have active class') + assert.ok(!$btn.hasClass('active'), 'btn does not have active class') $btn.bootstrapButton('toggle') - ok($btn.hasClass('active'), 'btn has class active') + assert.ok($btn.hasClass('active'), 'btn has class active') }) - test('should toggle active when btn children are clicked', function () { + QUnit.test('should toggle active when btn children are clicked', function (assert) { + assert.expect(2) var $btn = $('<button class="btn" data-toggle="button">mdo</button>') var $inner = $('<i/>') $btn .append($inner) .appendTo('#qunit-fixture') - ok(!$btn.hasClass('active'), 'btn does not have active class') - $inner.click() - ok($btn.hasClass('active'), 'btn has class active') + assert.ok(!$btn.hasClass('active'), 'btn does not have active class') + $inner.trigger('click') + assert.ok($btn.hasClass('active'), 'btn has class active') }) - test('should toggle aria-pressed', function () { + QUnit.test('should toggle aria-pressed', function (assert) { + assert.expect(2) var $btn = $('<button class="btn" data-toggle="button" aria-pressed="false">redux</button>') - equal($btn.attr('aria-pressed'), 'false', 'btn aria-pressed state is false') + assert.strictEqual($btn.attr('aria-pressed'), 'false', 'btn aria-pressed state is false') $btn.bootstrapButton('toggle') - equal($btn.attr('aria-pressed'), 'true', 'btn aria-pressed state is true') + assert.strictEqual($btn.attr('aria-pressed'), 'true', 'btn aria-pressed state is true') }) - test('should toggle aria-pressed when btn children are clicked', function () { + QUnit.test('should toggle aria-pressed when btn children are clicked', function (assert) { + assert.expect(2) var $btn = $('<button class="btn" data-toggle="button" aria-pressed="false">redux</button>') var $inner = $('<i/>') $btn .append($inner) .appendTo('#qunit-fixture') - equal($btn.attr('aria-pressed'), 'false', 'btn aria-pressed state is false') - $inner.click() - equal($btn.attr('aria-pressed'), 'true', 'btn aria-pressed state is true') + assert.strictEqual($btn.attr('aria-pressed'), 'false', 'btn aria-pressed state is false') + $inner.trigger('click') + assert.strictEqual($btn.attr('aria-pressed'), 'true', 'btn aria-pressed state is true') }) - test('should toggle active when btn children are clicked within btn-group', function () { - var $btngroup = $('<div class="btn-group" data-toggle="buttons"/>') - var $btn = $('<button class="btn">fat</button>') - var $inner = $('<i/>') - $btngroup - .append($btn.append($inner)) - .appendTo('#qunit-fixture') - ok(!$btn.hasClass('active'), 'btn does not have active class') - $inner.click() - ok($btn.hasClass('active'), 'btn has class active') - }) - - test('should check for closest matching toggle', function () { + QUnit.test('should check for closest matching toggle', function (assert) { + assert.expect(12) var groupHTML = '<div class="btn-group" data-toggle="buttons">' + '<label class="btn btn-primary active">' + '<input type="radio" name="options" id="option1" checked="true"> Option 1' @@ -94,21 +90,21 @@ $(function () { var $btn1 = $group.children().eq(0) var $btn2 = $group.children().eq(1) - ok($btn1.hasClass('active'), 'btn1 has active class') - ok($btn1.find('input').prop('checked'), 'btn1 is checked') - ok(!$btn2.hasClass('active'), 'btn2 does not have active class') - ok(!$btn2.find('input').prop('checked'), 'btn2 is not checked') - $btn2.find('input').click() - ok(!$btn1.hasClass('active'), 'btn1 does not have active class') - ok(!$btn1.find('input').prop('checked'), 'btn1 is checked') - ok($btn2.hasClass('active'), 'btn2 has active class') - ok($btn2.find('input').prop('checked'), 'btn2 is checked') + assert.ok($btn1.hasClass('active'), 'btn1 has active class') + assert.ok($btn1.find('input').prop('checked'), 'btn1 is checked') + assert.ok(!$btn2.hasClass('active'), 'btn2 does not have active class') + assert.ok(!$btn2.find('input').prop('checked'), 'btn2 is not checked') + $btn2.find('input').trigger('click') + assert.ok(!$btn1.hasClass('active'), 'btn1 does not have active class') + assert.ok(!$btn1.find('input').prop('checked'), 'btn1 is not checked') + assert.ok($btn2.hasClass('active'), 'btn2 has active class') + assert.ok($btn2.find('input').prop('checked'), 'btn2 is checked') - $btn2.find('input').click() // clicking an already checked radio should not un-check it - ok(!$btn1.hasClass('active'), 'btn1 does not have active class') - ok(!$btn1.find('input').prop('checked'), 'btn1 is checked') - ok($btn2.hasClass('active'), 'btn2 has active class') - ok($btn2.find('input').prop('checked'), 'btn2 is checked') + $btn2.find('input').trigger('click') // clicking an already checked radio should not un-check it + assert.ok(!$btn1.hasClass('active'), 'btn1 does not have active class') + assert.ok(!$btn1.find('input').prop('checked'), 'btn1 is not checked') + assert.ok($btn2.hasClass('active'), 'btn2 has active class') + assert.ok($btn2.find('input').prop('checked'), 'btn2 is checked') }) }) diff --git a/js/tests/unit/carousel.js b/js/tests/unit/carousel.js index 2ad2c67347..017bd9beee 100644 --- a/js/tests/unit/carousel.js +++ b/js/tests/unit/carousel.js @@ -1,49 +1,86 @@ $(function () { 'use strict'; - module('carousel plugin') + QUnit.module('carousel plugin') - test('should be defined on jQuery object', function () { - ok($(document.body).carousel, 'carousel method is defined') + QUnit.test('should be defined on jQuery object', function (assert) { + assert.expect(1) + assert.ok($(document.body).carousel, 'carousel method is defined') }) - module('carousel', { - setup: function () { + QUnit.module('carousel', { + beforeEach: function () { // Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode $.fn.bootstrapCarousel = $.fn.carousel.noConflict() }, - teardown: function () { + afterEach: function () { $.fn.carousel = $.fn.bootstrapCarousel delete $.fn.bootstrapCarousel } }) - test('should provide no conflict', function () { - strictEqual($.fn.carousel, undefined, 'carousel was set back to undefined (orig value)') + QUnit.test('should provide no conflict', function (assert) { + assert.expect(1) + assert.strictEqual($.fn.carousel, undefined, 'carousel was set back to undefined (orig value)') }) - test('should return jquery collection containing the element', function () { + QUnit.test('should return jquery collection containing the element', function (assert) { + assert.expect(2) var $el = $('<div/>') var $carousel = $el.bootstrapCarousel() - ok($carousel instanceof $, 'returns jquery collection') - strictEqual($carousel[0], $el[0], 'collection contains element') + assert.ok($carousel instanceof $, 'returns jquery collection') + assert.strictEqual($carousel[0], $el[0], 'collection contains element') }) - test('should not fire slid when slide is prevented', function (assert) { + QUnit.test('should type check config options', function (assert) { + assert.expect(2) + + var message + var expectedMessage = 'CAROUSEL: Option "interval" provided type "string" but expected type "(number|boolean)".' + var config = { + interval: 'fat sux' + } + + try { + $('<div/>').bootstrapCarousel(config) + } catch (e) { + message = e.message + } + + assert.ok(message === expectedMessage, 'correct error message') + + config = { + keyboard: document.createElement('div') + } + expectedMessage = 'CAROUSEL: Option "keyboard" provided type "element" but expected type "boolean".' + + try { + $('<div/>').bootstrapCarousel(config) + } catch (e) { + message = e.message + } + + assert.ok(message === expectedMessage, 'correct error message') + }) + + + QUnit.test('should not fire slid when slide is prevented', function (assert) { + assert.expect(1) var done = assert.async() $('<div class="carousel"/>') .on('slide.bs.carousel', function (e) { e.preventDefault() - ok(true, 'slide event fired') + assert.ok(true, 'slide event fired') done() }) .on('slid.bs.carousel', function () { - ok(false, 'slid event fired') + assert.ok(false, 'slid event fired') }) .bootstrapCarousel('next') }) - test('should reset when slide is prevented', function (assert) { + QUnit.test('should reset when slide is prevented', function (assert) { + assert.expect(6) var carouselHTML = '<div id="carousel-example-generic" class="carousel slide">' + '<ol class="carousel-indicators">' + '<li data-target="#carousel-example-generic" data-slide-to="0" class="active"/>' @@ -71,24 +108,25 @@ $(function () { .one('slide.bs.carousel', function (e) { e.preventDefault() setTimeout(function () { - ok($carousel.find('.carousel-item:eq(0)').is('.active'), 'first item still active') - ok($carousel.find('.carousel-indicators li:eq(0)').is('.active'), 'first indicator still active') + assert.ok($carousel.find('.carousel-item:eq(0)').is('.active'), 'first item still active') + assert.ok($carousel.find('.carousel-indicators li:eq(0)').is('.active'), 'first indicator still active') $carousel.bootstrapCarousel('next') }, 0) }) .one('slid.bs.carousel', function () { setTimeout(function () { - ok(!$carousel.find('.carousel-item:eq(0)').is('.active'), 'first item still active') - ok(!$carousel.find('.carousel-indicators li:eq(0)').is('.active'), 'first indicator still active') - ok($carousel.find('.carousel-item:eq(1)').is('.active'), 'second item active') - ok($carousel.find('.carousel-indicators li:eq(1)').is('.active'), 'second indicator active') + assert.ok(!$carousel.find('.carousel-item:eq(0)').is('.active'), 'first item still active') + assert.ok(!$carousel.find('.carousel-indicators li:eq(0)').is('.active'), 'first indicator still active') + assert.ok($carousel.find('.carousel-item:eq(1)').is('.active'), 'second item active') + assert.ok($carousel.find('.carousel-indicators li:eq(1)').is('.active'), 'second indicator active') done() }, 0) }) .bootstrapCarousel('next') }) - test('should fire slide event with direction', function (assert) { + QUnit.test('should fire slide event with direction', function (assert) { + assert.expect(4) var carouselHTML = '<div id="myCarousel" class="carousel slide">' + '<div class="carousel-inner">' + '<div class="carousel-item active">' @@ -128,13 +166,13 @@ $(function () { $carousel .one('slide.bs.carousel', function (e) { - ok(e.direction, 'direction present on next') - strictEqual(e.direction, 'left', 'direction is left on next') + assert.ok(e.direction, 'direction present on next') + assert.strictEqual(e.direction, 'left', 'direction is left on next') $carousel .one('slide.bs.carousel', function (e) { - ok(e.direction, 'direction present on prev') - strictEqual(e.direction, 'right', 'direction is right on prev') + assert.ok(e.direction, 'direction present on prev') + assert.strictEqual(e.direction, 'right', 'direction is right on prev') done() }) .bootstrapCarousel('prev') @@ -142,7 +180,8 @@ $(function () { .bootstrapCarousel('next') }) - test('should fire slid event with direction', function (assert) { + QUnit.test('should fire slid event with direction', function (assert) { + assert.expect(4) var carouselHTML = '<div id="myCarousel" class="carousel slide">' + '<div class="carousel-inner">' + '<div class="carousel-item active">' @@ -182,13 +221,13 @@ $(function () { $carousel .one('slid.bs.carousel', function (e) { - ok(e.direction, 'direction present on next') - strictEqual(e.direction, 'left', 'direction is left on next') + assert.ok(e.direction, 'direction present on next') + assert.strictEqual(e.direction, 'left', 'direction is left on next') $carousel .one('slid.bs.carousel', function (e) { - ok(e.direction, 'direction present on prev') - strictEqual(e.direction, 'right', 'direction is right on prev') + assert.ok(e.direction, 'direction present on prev') + assert.strictEqual(e.direction, 'right', 'direction is right on prev') done() }) .bootstrapCarousel('prev') @@ -196,7 +235,8 @@ $(function () { .bootstrapCarousel('next') }) - test('should fire slide event with relatedTarget', function (assert) { + QUnit.test('should fire slide event with relatedTarget', function (assert) { + assert.expect(2) var template = '<div id="myCarousel" class="carousel slide">' + '<div class="carousel-inner">' + '<div class="carousel-item active">' @@ -235,14 +275,15 @@ $(function () { $(template) .on('slide.bs.carousel', function (e) { - ok(e.relatedTarget, 'relatedTarget present') - ok($(e.relatedTarget).hasClass('carousel-item'), 'relatedTarget has class "carousel-item"') + assert.ok(e.relatedTarget, 'relatedTarget present') + assert.ok($(e.relatedTarget).hasClass('carousel-item'), 'relatedTarget has class "item"') done() }) .bootstrapCarousel('next') }) - test('should fire slid event with relatedTarget', function (assert) { + QUnit.test('should fire slid event with relatedTarget', function (assert) { + assert.expect(2) var template = '<div id="myCarousel" class="carousel slide">' + '<div class="carousel-inner">' + '<div class="carousel-item active">' @@ -281,14 +322,15 @@ $(function () { $(template) .on('slid.bs.carousel', function (e) { - ok(e.relatedTarget, 'relatedTarget present') - ok($(e.relatedTarget).hasClass('carousel-item'), 'relatedTarget has class "carousel-item"') + assert.ok(e.relatedTarget, 'relatedTarget present') + assert.ok($(e.relatedTarget).hasClass('carousel-item'), 'relatedTarget has class "item"') done() }) .bootstrapCarousel('next') }) - test('should set interval from data attribute', function () { + QUnit.test('should set interval from data attribute', function (assert) { + assert.expect(4) var templateHTML = '<div id="myCarousel" class="carousel slide">' + '<div class="carousel-inner">' + '<div class="carousel-item active">' @@ -322,35 +364,35 @@ $(function () { + '<a class="left carousel-control" href="#myCarousel" data-slide="prev">‹</a>' + '<a class="right carousel-control" href="#myCarousel" data-slide="next">›</a>' + '</div>' - var $carousel = $(templateHTML) $carousel.attr('data-interval', 1814) $carousel.appendTo('body') - $('[data-slide]').first().click() - equal($carousel.data('bs.carousel').getConfig().interval, 1814) + $('[data-slide]').first().trigger('click') + assert.strictEqual($carousel.data('bs.carousel')._config.interval, 1814) $carousel.remove() $carousel.appendTo('body').attr('data-modal', 'foobar') - $('[data-slide]').first().click() - equal($carousel.data('bs.carousel').getConfig().interval, 1814, 'even if there is an data-modal attribute set') + $('[data-slide]').first().trigger('click') + assert.strictEqual($carousel.data('bs.carousel')._config.interval, 1814, 'even if there is an data-modal attribute set') $carousel.remove() $carousel.appendTo('body') - $('[data-slide]').first().click() + $('[data-slide]').first().trigger('click') $carousel.attr('data-interval', 1860) - $('[data-slide]').first().click() - equal($carousel.data('bs.carousel').getConfig().interval, 1814, 'attributes should be read only on initialization') + $('[data-slide]').first().trigger('click') + assert.strictEqual($carousel.data('bs.carousel')._config.interval, 1814, 'attributes should be read only on initialization') $carousel.remove() $carousel.attr('data-interval', false) $carousel.appendTo('body') $carousel.bootstrapCarousel(1) - strictEqual($carousel.data('bs.carousel').getConfig().interval, false, 'data attribute has higher priority than default options') + assert.strictEqual($carousel.data('bs.carousel')._config.interval, false, 'data attribute has higher priority than default options') $carousel.remove() }) - test('should skip over non-items when using item indices', function () { + QUnit.test('should skip over non-items when using item indices', function (assert) { + assert.expect(2) var templateHTML = '<div id="myCarousel" class="carousel" data-interval="1814">' + '<div class="carousel-inner">' + '<div class="carousel-item active">' @@ -368,14 +410,15 @@ $(function () { $template.bootstrapCarousel() - strictEqual($template.find('.carousel-item')[0], $template.find('.active')[0], 'first item active') + assert.strictEqual($template.find('.carousel-item')[0], $template.find('.active')[0], 'first item active') $template.bootstrapCarousel(1) - strictEqual($template.find('.carousel-item')[1], $template.find('.active')[0], 'second item active') + assert.strictEqual($template.find('.carousel-item')[1], $template.find('.active')[0], 'second item active') }) - test('should skip over non-items when using next/prev methods', function () { + QUnit.test('should skip over non-items when using next/prev methods', function (assert) { + assert.expect(2) var templateHTML = '<div id="myCarousel" class="carousel" data-interval="1814">' + '<div class="carousel-inner">' + '<div class="carousel-item active">' @@ -393,14 +436,15 @@ $(function () { $template.bootstrapCarousel() - strictEqual($template.find('.carousel-item')[0], $template.find('.active')[0], 'first item active') + assert.strictEqual($template.find('.carousel-item')[0], $template.find('.active')[0], 'first item active') $template.bootstrapCarousel('next') - strictEqual($template.find('.carousel-item')[1], $template.find('.active')[0], 'second item active') + assert.strictEqual($template.find('.carousel-item')[1], $template.find('.active')[0], 'second item active') }) - test('should go to previous item if left arrow key is pressed', function () { + QUnit.test('should go to previous item if left arrow key is pressed', function (assert) { + assert.expect(2) var templateHTML = '<div id="myCarousel" class="carousel" data-interval="false">' + '<div class="carousel-inner">' + '<div id="first" class="carousel-item">' @@ -418,14 +462,15 @@ $(function () { $template.bootstrapCarousel() - strictEqual($template.find('.carousel-item')[1], $template.find('.active')[0], 'second item active') + assert.strictEqual($template.find('.carousel-item')[1], $template.find('.active')[0], 'second item active') $template.trigger($.Event('keydown', { which: 37 })) - strictEqual($template.find('.carousel-item')[0], $template.find('.active')[0], 'first item active') + assert.strictEqual($template.find('.carousel-item')[0], $template.find('.active')[0], 'first item active') }) - test('should go to next item if right arrow key is pressed', function () { + QUnit.test('should go to next item if right arrow key is pressed', function (assert) { + assert.expect(2) var templateHTML = '<div id="myCarousel" class="carousel" data-interval="false">' + '<div class="carousel-inner">' + '<div id="first" class="carousel-item active">' @@ -443,14 +488,15 @@ $(function () { $template.bootstrapCarousel() - strictEqual($template.find('.carousel-item')[0], $template.find('.active')[0], 'first item active') + assert.strictEqual($template.find('.carousel-item')[0], $template.find('.active')[0], 'first item active') $template.trigger($.Event('keydown', { which: 39 })) - strictEqual($template.find('.carousel-item')[1], $template.find('.active')[0], 'second item active') + assert.strictEqual($template.find('.carousel-item')[1], $template.find('.active')[0], 'second item active') }) - test('should support disabling the keyboard navigation', function () { + QUnit.test('should support disabling the keyboard navigation', function (assert) { + assert.expect(3) var templateHTML = '<div id="myCarousel" class="carousel" data-interval="false" data-keyboard="false">' + '<div class="carousel-inner">' + '<div id="first" class="carousel-item active">' @@ -468,18 +514,19 @@ $(function () { $template.bootstrapCarousel() - strictEqual($template.find('.carousel-item')[0], $template.find('.active')[0], 'first item active') + assert.strictEqual($template.find('.carousel-item')[0], $template.find('.active')[0], 'first item active') $template.trigger($.Event('keydown', { which: 39 })) - strictEqual($template.find('.carousel-item')[0], $template.find('.active')[0], 'first item still active after right arrow press') + assert.strictEqual($template.find('.carousel-item')[0], $template.find('.active')[0], 'first item still active after right arrow press') $template.trigger($.Event('keydown', { which: 37 })) - strictEqual($template.find('.carousel-item')[0], $template.find('.active')[0], 'first item still active after left arrow press') + assert.strictEqual($template.find('.carousel-item')[0], $template.find('.active')[0], 'first item still active after left arrow press') }) - test('should ignore keyboard events within <input>s and <textarea>s', function () { + QUnit.test('should ignore keyboard events within <input>s and <textarea>s', function (assert) { + assert.expect(7) var templateHTML = '<div id="myCarousel" class="carousel" data-interval="false">' + '<div class="carousel-inner">' + '<div id="first" class="carousel-item active">' @@ -499,29 +546,30 @@ $(function () { var $input = $template.find('#in-put') var $textarea = $template.find('#text-area') - strictEqual($input.length, 1, 'found <input>') - strictEqual($textarea.length, 1, 'found <textarea>') + assert.strictEqual($input.length, 1, 'found <input>') + assert.strictEqual($textarea.length, 1, 'found <textarea>') $template.bootstrapCarousel() - strictEqual($template.find('.carousel-item')[0], $template.find('.active')[0], 'first item active') + assert.strictEqual($template.find('.carousel-item')[0], $template.find('.active')[0], 'first item active') $input.trigger($.Event('keydown', { which: 39 })) - strictEqual($template.find('.carousel-item')[0], $template.find('.active')[0], 'first item still active after right arrow press in <input>') + assert.strictEqual($template.find('.carousel-item')[0], $template.find('.active')[0], 'first item still active after right arrow press in <input>') $input.trigger($.Event('keydown', { which: 37 })) - strictEqual($template.find('.carousel-item')[0], $template.find('.active')[0], 'first item still active after left arrow press in <input>') + assert.strictEqual($template.find('.carousel-item')[0], $template.find('.active')[0], 'first item still active after left arrow press in <input>') $textarea.trigger($.Event('keydown', { which: 39 })) - strictEqual($template.find('.carousel-item')[0], $template.find('.active')[0], 'first item still active after right arrow press in <textarea>') + assert.strictEqual($template.find('.carousel-item')[0], $template.find('.active')[0], 'first item still active after right arrow press in <textarea>') $textarea.trigger($.Event('keydown', { which: 37 })) - strictEqual($template.find('.carousel-item')[0], $template.find('.active')[0], 'first item still active after left arrow press in <textarea>') + assert.strictEqual($template.find('.carousel-item')[0], $template.find('.active')[0], 'first item still active after left arrow press in <textarea>') }) - test('should only add mouseenter and mouseleave listeners when not on mobile', function () { + QUnit.test('should only add mouseenter and mouseleave listeners when not on mobile', function (assert) { + assert.expect(2) var isMobile = 'ontouchstart' in document.documentElement var templateHTML = '<div id="myCarousel" class="carousel" data-interval="false" data-pause="hover">' + '<div class="carousel-inner">' @@ -539,11 +587,12 @@ $(function () { var $template = $(templateHTML).bootstrapCarousel() $.each(['mouseover', 'mouseout'], function (i, type) { - strictEqual(type in $._data($template[0], 'events'), !isMobile, 'does' + (isMobile ? ' not' : '') + ' listen for ' + type + ' events') + assert.strictEqual(type in $._data($template[0], 'events'), !isMobile, 'does' + (isMobile ? ' not' : '') + ' listen for ' + type + ' events') }) }) - test('should wrap around from end to start when wrap option is true', function (assert) { + QUnit.test('should wrap around from end to start when wrap option is true', function (assert) { + assert.expect(3) var carouselHTML = '<div id="carousel-example-generic" class="carousel slide" data-wrap="true">' + '<ol class="carousel-indicators">' + '<li data-target="#carousel-example-generic" data-slide-to="0" class="active"/>' @@ -571,13 +620,13 @@ $(function () { $carousel .one('slid.bs.carousel', function () { - strictEqual(getActiveId(), 'two', 'carousel slid from 1st to 2nd slide') + assert.strictEqual(getActiveId(), 'two', 'carousel slid from 1st to 2nd slide') $carousel .one('slid.bs.carousel', function () { - strictEqual(getActiveId(), 'three', 'carousel slid from 2nd to 3rd slide') + assert.strictEqual(getActiveId(), 'three', 'carousel slid from 2nd to 3rd slide') $carousel .one('slid.bs.carousel', function () { - strictEqual(getActiveId(), 'one', 'carousel wrapped around and slid from 3rd to 1st slide') + assert.strictEqual(getActiveId(), 'one', 'carousel wrapped around and slid from 3rd to 1st slide') done() }) .bootstrapCarousel('next') @@ -587,7 +636,8 @@ $(function () { .bootstrapCarousel('next') }) - test('should wrap around from start to end when wrap option is true', function (assert) { + QUnit.test('should wrap around from start to end when wrap option is true', function (assert) { + assert.expect(1) var carouselHTML = '<div id="carousel-example-generic" class="carousel slide" data-wrap="true">' + '<ol class="carousel-indicators">' + '<li data-target="#carousel-example-generic" data-slide-to="0" class="active"/>' @@ -614,13 +664,14 @@ $(function () { $carousel .on('slid.bs.carousel', function () { - strictEqual($carousel.find('.carousel-item.active').attr('id'), 'three', 'carousel wrapped around and slid from 1st to 3rd slide') + assert.strictEqual($carousel.find('.carousel-item.active').attr('id'), 'three', 'carousel wrapped around and slid from 1st to 3rd slide') done() }) .bootstrapCarousel('prev') }) - test('should stay at the end when the next method is called and wrap is false', function (assert) { + QUnit.test('should stay at the end when the next method is called and wrap is false', function (assert) { + assert.expect(3) var carouselHTML = '<div id="carousel-example-generic" class="carousel slide" data-wrap="false">' + '<ol class="carousel-indicators">' + '<li data-target="#carousel-example-generic" data-slide-to="0" class="active"/>' @@ -648,16 +699,16 @@ $(function () { $carousel .one('slid.bs.carousel', function () { - strictEqual(getActiveId(), 'two', 'carousel slid from 1st to 2nd slide') + assert.strictEqual(getActiveId(), 'two', 'carousel slid from 1st to 2nd slide') $carousel .one('slid.bs.carousel', function () { - strictEqual(getActiveId(), 'three', 'carousel slid from 2nd to 3rd slide') + assert.strictEqual(getActiveId(), 'three', 'carousel slid from 2nd to 3rd slide') $carousel .one('slid.bs.carousel', function () { - ok(false, 'carousel slid when it should not have slid') + assert.ok(false, 'carousel slid when it should not have slid') }) .bootstrapCarousel('next') - strictEqual(getActiveId(), 'three', 'carousel did not wrap around and stayed on 3rd slide') + assert.strictEqual(getActiveId(), 'three', 'carousel did not wrap around and stayed on 3rd slide') done() }) .bootstrapCarousel('next') @@ -665,7 +716,8 @@ $(function () { .bootstrapCarousel('next') }) - test('should stay at the start when the prev method is called and wrap is false', function () { + QUnit.test('should stay at the start when the prev method is called and wrap is false', function (assert) { + assert.expect(1) var carouselHTML = '<div id="carousel-example-generic" class="carousel slide" data-wrap="false">' + '<ol class="carousel-indicators">' + '<li data-target="#carousel-example-generic" data-slide-to="0" class="active"/>' @@ -690,9 +742,9 @@ $(function () { $carousel .on('slid.bs.carousel', function () { - ok(false, 'carousel slid when it should not have slid') + assert.ok(false, 'carousel slid when it should not have slid') }) .bootstrapCarousel('prev') - strictEqual($carousel.find('.carousel-item.active').attr('id'), 'one', 'carousel did not wrap around and stayed on 1st slide') + assert.strictEqual($carousel.find('.carousel-item.active').attr('id'), 'one', 'carousel did not wrap around and stayed on 1st slide') }) }) diff --git a/js/tests/unit/collapse.js b/js/tests/unit/collapse.js index 0f1b7b119f..78fafc6c2d 100644 --- a/js/tests/unit/collapse.js +++ b/js/tests/unit/collapse.js @@ -355,7 +355,7 @@ $(function () { $('<div id="body1" aria-expanded="true" class="in"/>').appendTo($groups.eq(0)) - var $target2 = $('<a class="collapsed" data-toggle="collapse" role="button" href="#body2" data-parent="#accordion"/>').appendTo($groups.eq(1)) + var $target2 = $('<a role="button" data-toggle="collapse" href="#body2" data-parent="#accordion" class="collapsed" />').appendTo($groups.eq(1)) $('<div id="body2" aria-expanded="false"/>').appendTo($groups.eq(1)) @@ -400,7 +400,7 @@ $(function () { $body2 .toggleClass('in collapsing') - .data('bs.collapse').setTransitioning(true) + .data('bs.collapse')._isTransitioning = 1 $target1.trigger('click') diff --git a/js/tests/unit/modal.js b/js/tests/unit/modal.js index 7018b865f3..6da09e3c6e 100644 --- a/js/tests/unit/modal.js +++ b/js/tests/unit/modal.js @@ -1,194 +1,209 @@ $(function () { 'use strict'; - module('modal plugin') + QUnit.module('modal plugin') - test('should be defined on jquery object', function () { - ok($(document.body).modal, 'modal method is defined') + QUnit.test('should be defined on jquery object', function (assert) { + assert.expect(1) + assert.ok($(document.body).modal, 'modal method is defined') }) - module('modal', { - setup: function () { + QUnit.module('modal', { + beforeEach: function () { // Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode $.fn.bootstrapModal = $.fn.modal.noConflict() }, - teardown: function () { + afterEach: function () { $.fn.modal = $.fn.bootstrapModal delete $.fn.bootstrapModal } }) - test('should provide no conflict', function () { - strictEqual($.fn.modal, undefined, 'modal was set back to undefined (orig value)') + QUnit.test('should provide no conflict', function (assert) { + assert.expect(1) + assert.strictEqual($.fn.modal, undefined, 'modal was set back to undefined (orig value)') }) - test('should return jquery collection containing the element', function () { + QUnit.test('should return jquery collection containing the element', function (assert) { + assert.expect(2) var $el = $('<div id="modal-test"/>') var $modal = $el.bootstrapModal() - ok($modal instanceof $, 'returns jquery collection') - strictEqual($modal[0], $el[0], 'collection contains element') + assert.ok($modal instanceof $, 'returns jquery collection') + assert.strictEqual($modal[0], $el[0], 'collection contains element') }) - test('should expose defaults var for settings', function () { - ok($.fn.bootstrapModal.Constructor.Defaults, 'default object exposed') + QUnit.test('should expose defaults var for settings', function (assert) { + assert.expect(1) + assert.ok($.fn.bootstrapModal.Constructor.Default, 'default object exposed') }) - test('should insert into dom when show method is called', function (assert) { + QUnit.test('should insert into dom when show method is called', function (assert) { + assert.expect(1) var done = assert.async() $('<div id="modal-test"/>') .on('shown.bs.modal', function () { - notEqual($('#modal-test').length, 0, 'modal inserted into dom') + assert.notEqual($('#modal-test').length, 0, 'modal inserted into dom') done() }) .bootstrapModal('show') }) - test('should fire show event', function (assert) { + QUnit.test('should fire show event', function (assert) { + assert.expect(1) var done = assert.async() $('<div id="modal-test"/>') .on('show.bs.modal', function () { - ok(true, 'show event fired') + assert.ok(true, 'show event fired') done() }) .bootstrapModal('show') }) - test('should not fire shown when show was prevented', function (assert) { + QUnit.test('should not fire shown when show was prevented', function (assert) { + assert.expect(1) var done = assert.async() $('<div id="modal-test"/>') .on('show.bs.modal', function (e) { e.preventDefault() - ok(true, 'show event fired') + assert.ok(true, 'show event fired') done() }) .on('shown.bs.modal', function () { - ok(false, 'shown event fired') + assert.ok(false, 'shown event fired') }) .bootstrapModal('show') }) - test('should hide modal when hide is called', function (assert) { + QUnit.test('should hide modal when hide is called', function (assert) { + assert.expect(3) var done = assert.async() $('<div id="modal-test"/>') .on('shown.bs.modal', function () { - ok($('#modal-test').is(':visible'), 'modal visible') - notEqual($('#modal-test').length, 0, 'modal inserted into dom') + assert.ok($('#modal-test').is(':visible'), 'modal visible') + assert.notEqual($('#modal-test').length, 0, 'modal inserted into dom') $(this).bootstrapModal('hide') }) .on('hidden.bs.modal', function () { - ok(!$('#modal-test').is(':visible'), 'modal hidden') + assert.ok(!$('#modal-test').is(':visible'), 'modal hidden') done() }) .bootstrapModal('show') }) - test('should toggle when toggle is called', function (assert) { + QUnit.test('should toggle when toggle is called', function (assert) { + assert.expect(3) var done = assert.async() $('<div id="modal-test"/>') .on('shown.bs.modal', function () { - ok($('#modal-test').is(':visible'), 'modal visible') - notEqual($('#modal-test').length, 0, 'modal inserted into dom') + assert.ok($('#modal-test').is(':visible'), 'modal visible') + assert.notEqual($('#modal-test').length, 0, 'modal inserted into dom') $(this).bootstrapModal('toggle') }) .on('hidden.bs.modal', function () { - ok(!$('#modal-test').is(':visible'), 'modal hidden') + assert.ok(!$('#modal-test').is(':visible'), 'modal hidden') done() }) .bootstrapModal('toggle') }) - test('should remove from dom when click [data-dismiss="modal"]', function (assert) { + QUnit.test('should remove from dom when click [data-dismiss="modal"]', function (assert) { + assert.expect(3) var done = assert.async() $('<div id="modal-test"><span class="close" data-dismiss="modal"/></div>') .on('shown.bs.modal', function () { - ok($('#modal-test').is(':visible'), 'modal visible') - notEqual($('#modal-test').length, 0, 'modal inserted into dom') - $(this).find('.close').click() + assert.ok($('#modal-test').is(':visible'), 'modal visible') + assert.notEqual($('#modal-test').length, 0, 'modal inserted into dom') + $(this).find('.close').trigger('click') }) .on('hidden.bs.modal', function () { - ok(!$('#modal-test').is(':visible'), 'modal hidden') + assert.ok(!$('#modal-test').is(':visible'), 'modal hidden') done() }) .bootstrapModal('toggle') }) - test('should allow modal close with "backdrop:false"', function (assert) { + QUnit.test('should allow modal close with "backdrop:false"', function (assert) { + assert.expect(2) var done = assert.async() $('<div id="modal-test" data-backdrop="false"/>') .on('shown.bs.modal', function () { - ok($('#modal-test').is(':visible'), 'modal visible') + assert.ok($('#modal-test').is(':visible'), 'modal visible') $(this).bootstrapModal('hide') }) .on('hidden.bs.modal', function () { - ok(!$('#modal-test').is(':visible'), 'modal hidden') + assert.ok(!$('#modal-test').is(':visible'), 'modal hidden') done() }) .bootstrapModal('show') }) - test('should close modal when clicking outside of modal-content', function (assert) { + QUnit.test('should close modal when clicking outside of modal-content', function (assert) { + assert.expect(3) var done = assert.async() $('<div id="modal-test"><div class="contents"/></div>') .on('shown.bs.modal', function () { - notEqual($('#modal-test').length, 0, 'modal insterted into dom') - $('.contents').click() - ok($('#modal-test').is(':visible'), 'modal visible') - $('#modal-test .modal-backdrop').click() + assert.notEqual($('#modal-test').length, 0, 'modal inserted into dom') + $('.contents').trigger('click') + assert.ok($('#modal-test').is(':visible'), 'modal visible') + $('#modal-test').trigger('click') }) .on('hidden.bs.modal', function () { - ok(!$('#modal-test').is(':visible'), 'modal hidden') + assert.ok(!$('#modal-test').is(':visible'), 'modal hidden') done() }) .bootstrapModal('show') }) - test('should close modal when escape key is pressed via keydown', function (assert) { + QUnit.test('should close modal when escape key is pressed via keydown', function (assert) { + assert.expect(3) var done = assert.async() - var div = $('<div id="modal-test"/>') - div + var $div = $('<div id="modal-test"/>') + $div .on('shown.bs.modal', function () { - ok($('#modal-test').length, 'modal insterted into dom') - ok($('#modal-test').is(':visible'), 'modal visible') - div.trigger($.Event('keydown', { which: 27 })) + assert.ok($('#modal-test').length, 'modal insterted into dom') + assert.ok($('#modal-test').is(':visible'), 'modal visible') + $div.trigger($.Event('keydown', { which: 27 })) setTimeout(function () { - ok(!$('#modal-test').is(':visible'), 'modal hidden') - div.remove() + assert.ok(!$('#modal-test').is(':visible'), 'modal hidden') + $div.remove() done() }, 0) }) .bootstrapModal('show') }) - test('should not close modal when escape key is pressed via keyup', function (assert) { + QUnit.test('should not close modal when escape key is pressed via keyup', function (assert) { + assert.expect(3) var done = assert.async() - var div = $('<div id="modal-test"/>') - div + var $div = $('<div id="modal-test"/>') + $div .on('shown.bs.modal', function () { - ok($('#modal-test').length, 'modal insterted into dom') - ok($('#modal-test').is(':visible'), 'modal visible') - div.trigger($.Event('keyup', { which: 27 })) + assert.ok($('#modal-test').length, 'modal inserted into dom') + assert.ok($('#modal-test').is(':visible'), 'modal visible') + $div.trigger($.Event('keyup', { which: 27 })) setTimeout(function () { - ok($('#modal-test').is(':visible'), 'modal still visible') - div.remove() + assert.ok($div.is(':visible'), 'modal still visible') + $div.remove() done() }, 0) }) .bootstrapModal('show') }) - test('should trigger hide event once when clicking outside of modal-content', function (assert) { + QUnit.test('should trigger hide event once when clicking outside of modal-content', function (assert) { + assert.expect(1) var done = assert.async() var triggered @@ -196,32 +211,33 @@ $(function () { $('<div id="modal-test"><div class="contents"/></div>') .on('shown.bs.modal', function () { triggered = 0 - $('#modal-test .modal-backdrop').click() + $('#modal-test').trigger('click') }) .on('hide.bs.modal', function () { triggered += 1 - strictEqual(triggered, 1, 'modal hide triggered once') + assert.strictEqual(triggered, 1, 'modal hide triggered once') done() }) .bootstrapModal('show') }) - test('should close reopened modal with [data-dismiss="modal"] click', function (assert) { + QUnit.test('should close reopened modal with [data-dismiss="modal"] click', function (assert) { + assert.expect(2) var done = assert.async() $('<div id="modal-test"><div class="contents"><div id="close" data-dismiss="modal"/></div></div>') .one('shown.bs.modal', function () { - $('#close').click() + $('#close').trigger('click') }) .one('hidden.bs.modal', function () { // after one open-close cycle - ok(!$('#modal-test').is(':visible'), 'modal hidden') + assert.ok(!$('#modal-test').is(':visible'), 'modal hidden') $(this) .one('shown.bs.modal', function () { - $('#close').click() + $('#close').trigger('click') }) .one('hidden.bs.modal', function () { - ok(!$('#modal-test').is(':visible'), 'modal hidden') + assert.ok(!$('#modal-test').is(':visible'), 'modal hidden') done() }) .bootstrapModal('show') @@ -229,7 +245,8 @@ $(function () { .bootstrapModal('show') }) - test('should restore focus to toggling element when modal is hidden after having been opened via data-api', function (assert) { + QUnit.test('should restore focus to toggling element when modal is hidden after having been opened via data-api', function (assert) { + assert.expect(1) var done = assert.async() var $toggleBtn = $('<button data-toggle="modal" data-target="#modal-test"/>').appendTo('#qunit-fixture') @@ -237,19 +254,20 @@ $(function () { $('<div id="modal-test"><div class="contents"><div id="close" data-dismiss="modal"/></div></div>') .on('hidden.bs.modal', function () { setTimeout(function () { - ok($(document.activeElement).is($toggleBtn), 'toggling element is once again focused') + assert.ok($(document.activeElement).is($toggleBtn), 'toggling element is once again focused') done() }, 0) }) .on('shown.bs.modal', function () { - $('#close').click() + $('#close').trigger('click') }) .appendTo('#qunit-fixture') - $toggleBtn.click() + $toggleBtn.trigger('click') }) - test('should not restore focus to toggling element if the associated show event gets prevented', function (assert) { + QUnit.test('should not restore focus to toggling element if the associated show event gets prevented', function (assert) { + assert.expect(1) var done = assert.async() var $toggleBtn = $('<button data-toggle="modal" data-target="#modal-test"/>').appendTo('#qunit-fixture') var $otherBtn = $('<button id="other-btn"/>').appendTo('#qunit-fixture') @@ -257,22 +275,103 @@ $(function () { $('<div id="modal-test"><div class="contents"><div id="close" data-dismiss="modal"/></div>') .one('show.bs.modal', function (e) { e.preventDefault() - $otherBtn.focus() + $otherBtn.trigger('focus') setTimeout($.proxy(function () { $(this).bootstrapModal('show') }, this), 0) }) .on('hidden.bs.modal', function () { setTimeout(function () { - ok($(document.activeElement).is($otherBtn), 'focus returned to toggling element') + assert.ok($(document.activeElement).is($otherBtn), 'focus returned to toggling element') done() }, 0) }) .on('shown.bs.modal', function () { - $('#close').click() + $('#close').trigger('click') }) .appendTo('#qunit-fixture') - $toggleBtn.click() + $toggleBtn.trigger('click') + }) + + QUnit.test('should restore inline body padding after closing', function (assert) { + assert.expect(2) + var done = assert.async() + var originalBodyPad = 0 + var $body = $(document.body) + + $body.css('padding-right', originalBodyPad) + + $('<div id="modal-test"/>') + .on('hidden.bs.modal', function () { + var currentBodyPad = parseInt($body.css('padding-right'), 10) + assert.notStrictEqual($body.attr('style'), '', 'body has non-empty style attribute') + assert.strictEqual(currentBodyPad, originalBodyPad, 'original body padding was not changed') + $body.removeAttr('style') + done() + }) + .on('shown.bs.modal', function () { + $(this).bootstrapModal('hide') + }) + .bootstrapModal('show') + }) + + QUnit.test('should ignore values set via CSS when trying to restore body padding after closing', function (assert) { + assert.expect(1) + var done = assert.async() + var $body = $(document.body) + var $style = $('<style>body { padding-right: 42px; }</style>').appendTo('head') + + $('<div id="modal-test"/>') + .on('hidden.bs.modal', function () { + assert.ok(!$body.attr('style'), 'body does not have inline padding set') + $style.remove() + done() + }) + .on('shown.bs.modal', function () { + $(this).bootstrapModal('hide') + }) + .bootstrapModal('show') + }) + + QUnit.test('should ignore other inline styles when trying to restore body padding after closing', function (assert) { + assert.expect(2) + var done = assert.async() + var $body = $(document.body) + var $style = $('<style>body { padding-right: 42px; }</style>').appendTo('head') + + $body.css('color', 'red') + + $('<div id="modal-test"/>') + .on('hidden.bs.modal', function () { + assert.strictEqual($body[0].style.paddingRight, '', 'body does not have inline padding set') + assert.strictEqual($body[0].style.color, 'red', 'body still has other inline styles set') + $body.removeAttr('style') + $style.remove() + done() + }) + .on('shown.bs.modal', function () { + $(this).bootstrapModal('hide') + }) + .bootstrapModal('show') + }) + + QUnit.test('should properly restore non-pixel inline body padding after closing', function (assert) { + assert.expect(1) + var done = assert.async() + var $body = $(document.body) + + $body.css('padding-right', '5%') + + $('<div id="modal-test"/>') + .on('hidden.bs.modal', function () { + assert.strictEqual($body[0].style.paddingRight, '5%', 'body does not have inline padding set') + $body.removeAttr('style') + done() + }) + .on('shown.bs.modal', function () { + $(this).bootstrapModal('hide') + }) + .bootstrapModal('show') }) }) diff --git a/js/tests/unit/phantom.js b/js/tests/unit/phantom.js index f6f0ac00fd..3ed3b3ea37 100644 --- a/js/tests/unit/phantom.js +++ b/js/tests/unit/phantom.js @@ -52,9 +52,9 @@ QUnit.moduleDone(function (obj) { if (obj.failed === 0) { - console.log('\r\u2714 All tests passed in "' + obj.name + '" module') + console.log('\r\u221A All tests passed in "' + obj.name + '" module') } else { - console.log('\u2716 ' + obj.failed + ' tests failed in "' + obj.name + '" module') + console.log('\u00D7 ' + obj.failed + ' tests failed in "' + obj.name + '" module') } sendMessage('qunit.moduleDone', obj.name, obj.failed, obj.passed, obj.total) }) diff --git a/js/tests/unit/popover.js b/js/tests/unit/popover.js index 68525540a5..8347e9f034 100644 --- a/js/tests/unit/popover.js +++ b/js/tests/unit/popover.js @@ -16,6 +16,7 @@ $(function () { afterEach: function () { $.fn.popover = $.fn.bootstrapPopover delete $.fn.bootstrapPopover + $('.popover').remove() } }) @@ -81,6 +82,7 @@ $(function () { assert.strictEqual($('.popover .popover-content').text(), 'loves writing tests (╯°□°)╯︵ ┻━┻', 'content correctly inserted') $popover.bootstrapPopover('hide') + assert.strictEqual($('.popover').length, 0, 'popover was removed') }) @@ -91,6 +93,7 @@ $(function () { var $popover = $('<a href="#">@fat</a>') .appendTo('#qunit-fixture') .bootstrapPopover({ + html: true, content: function () { return $div } @@ -98,14 +101,14 @@ $(function () { $popover.bootstrapPopover('show') assert.notEqual($('.popover').length, 0, 'popover was inserted') - assert.equal($('.popover .popover-content').html(), $div, 'content correctly inserted') + assert.equal($('.popover .popover-content').html(), $div[0].outerHTML, 'content correctly inserted') $popover.bootstrapPopover('hide') assert.strictEqual($('.popover').length, 0, 'popover was removed') $popover.bootstrapPopover('show') assert.notEqual($('.popover').length, 0, 'popover was inserted') - assert.equal($('.popover .popover-content').html(), $div, 'content correctly inserted') + assert.equal($('.popover .popover-content').html(), $div[0].outerHTML, 'content correctly inserted') $popover.bootstrapPopover('hide') assert.strictEqual($('.popover').length, 0, 'popover was removed') @@ -126,7 +129,6 @@ $(function () { assert.strictEqual($('.popover').length, 0, 'popover was removed') }) - QUnit.test('should get title and content from attributes ignoring options passed via js', function (assert) { assert.expect(4) var $popover = $('<a href="#" title="@mdo" data-content="loves data attributes (づ。◕‿‿◕。)づ ︵ ┻━┻" >@mdo</a>') @@ -152,7 +154,7 @@ $(function () { .bootstrapPopover({ title: 'Test', content: 'Test', - template: '<div class="popover foobar"><div class="popover-arrow"></div><div class="inner"><h3 class="title"/><div class="content"><p/></div></div></div>' + template: '<div class="popover foobar"><div class="arrow"></div><div class="inner"><h3 class="title"/><div class="content"><p/></div></div></div>' }) $popover.bootstrapPopover('show') @@ -166,8 +168,7 @@ $(function () { QUnit.test('should destroy popover', function (assert) { assert.expect(7) - var $popover = $('<div>Popover trigger</div>') - .appendTo('#qunit-fixture') + var $popover = $('<div/>') .bootstrapPopover({ trigger: 'hover' }) @@ -178,7 +179,7 @@ $(function () { assert.strictEqual($._data($popover[0], 'events').click[0].namespace, 'foo', 'popover has extra click.foo event') $popover.bootstrapPopover('show') - $popover.bootstrapPopover('destroy') + $popover.bootstrapPopover('dispose') assert.ok(!$popover.hasClass('in'), 'popover is hidden') assert.ok(!$popover.data('popover'), 'popover does not have data') @@ -230,7 +231,7 @@ $(function () { $div .one('shown.bs.popover', function () { $('.content-with-handler .btn').trigger('click') - $div.bootstrapPopover('destroy') + $div.bootstrapPopover('dispose') assert.ok(handlerCalled, 'content\'s event handler still present') done() }) @@ -241,24 +242,6 @@ $(function () { .bootstrapPopover('show') }) - QUnit.test('should throw an error when trying to show a popover on a hidden element', function (assert) { - assert.expect(1) - var $target = $('<a href="#" title="Another popover" data-content="Body" style="display: none;">I am hidden</a>').appendTo('#qunit-fixture') - - assert.throws(function () { - $target.bootstrapPopover('show') - }, new Error('Can\'t show a tooltip/popover on a hidden element')) - - $target.remove() - }) - - QUnit.test('should throw an error when initializing popover on the document object without specifying a delegation selector', function (assert) { - assert.expect(1) - assert.throws(function () { - $(document).bootstrapPopover({ title: 'What am I on?', content: 'My selector is missing' }) - }, new Error('`selector` option must be specified when initializing popover on the window.document object!')) - }) - QUnit.test('should do nothing when an attempt is made to hide an uninitialized popover', function (assert) { assert.expect(1) @@ -271,4 +254,22 @@ $(function () { assert.strictEqual($popover.data('bs.popover'), undefined, 'should not initialize the popover') }) + QUnit.test('should fire inserted event', function (assert) { + assert.expect(2) + var done = assert.async() + + $('<a href="#">@Johann-S</a>') + .appendTo('#qunit-fixture') + .on('inserted.bs.popover', function () { + assert.notEqual($('.popover').length, 0, 'popover was inserted') + assert.ok(true, 'inserted event fired') + done() + }) + .bootstrapPopover({ + title: 'Test', + content: 'Test' + }) + .bootstrapPopover('show') + }) + }) diff --git a/js/tests/unit/scrollspy.js b/js/tests/unit/scrollspy.js index bf5fa0bff5..063dfabcfb 100644 --- a/js/tests/unit/scrollspy.js +++ b/js/tests/unit/scrollspy.js @@ -77,6 +77,51 @@ $(function () { $scrollspy.scrollTop(350) }) + QUnit.test('should only switch "active" class on current target specified w element', function (assert) { + assert.expect(1) + var done = assert.async() + + var sectionHTML = '<div id="root" class="active">' + + '<div class="topbar">' + + '<div class="topbar-inner">' + + '<div class="container" id="ss-target">' + + '<ul class="nav">' + + '<li><a href="#masthead">Overview</a></li>' + + '<li><a href="#detail">Detail</a></li>' + + '</ul>' + + '</div>' + + '</div>' + + '</div>' + + '<div id="scrollspy-example" style="height: 100px; overflow: auto;">' + + '<div style="height: 200px;">' + + '<h4 id="masthead">Overview</h4>' + + '<p style="height: 200px">' + + 'Ad leggings keytar, brunch id art party dolor labore.' + + '</p>' + + '</div>' + + '<div style="height: 200px;">' + + '<h4 id="detail">Detail</h4>' + + '<p style="height: 200px">' + + 'Veniam marfa mustache skateboard, adipisicing fugiat velit pitchfork beard.' + + '</p>' + + '</div>' + + '</div>' + + '</div>' + var $section = $(sectionHTML).appendTo('#qunit-fixture') + + var $scrollspy = $section + .show() + .find('#scrollspy-example') + .bootstrapScrollspy({ target: document.getElementById('#ss-target') }) + + $scrollspy.on('scroll.bs.scrollspy', function () { + assert.ok($section.hasClass('active'), '"active" class still on root node') + done() + }) + + $scrollspy.scrollTop(350) + }) + QUnit.test('should correctly select middle navigation option when large offset is used', function (assert) { assert.expect(3) var done = assert.async() @@ -275,4 +320,90 @@ $(function () { .then(function () { return testElementIsActiveAfterScroll('#li-100-1', '#div-100-1') }) }) + QUnit.test('should allow passed in option offset method: offset', function (assert) { + assert.expect(4) + + var testOffsetMethod = function (type) { + var deferred = $.Deferred() + var navbarHtml = + '<nav class="navbar"' + (type === 'data' ? ' id="navbar-offset-method-menu"' : '') + '>' + + '<ul class="nav">' + + '<li id="li-' + type + 'm-1"><a href="#div-' + type + 'm-1">div 1</a></li>' + + '<li id="li-' + type + 'm-2"><a href="#div-' + type + 'm-2">div 2</a></li>' + + '<li id="li-' + type + 'm-3"><a href="#div-' + type + 'm-3">div 3</a></li>' + + '</ul>' + + '</nav>' + var contentHtml = + '<div class="content"' + (type === 'data' ? ' data-spy="scroll" data-target="#navbar-offset-method-menu" data-offset="0" data-method="offset"' : '') + ' style="position: relative; overflow: auto; height: 100px">' + + '<div id="div-' + type + 'm-1" style="position: relative; height: 200px; padding: 0; margin: 0">div 1</div>' + + '<div id="div-' + type + 'm-2" style="position: relative; height: 150px; padding: 0; margin: 0">div 2</div>' + + '<div id="div-' + type + 'm-3" style="position: relative; height: 250px; padding: 0; margin: 0">div 3</div>' + + '</div>' + + + $(navbarHtml).appendTo('#qunit-fixture') + var $content = $(contentHtml) + .appendTo('#qunit-fixture') + + if (type === 'js') $content.bootstrapScrollspy({ target: '.navbar', offset: 0, method: 'offset' }) + else if (type === 'data') $(window).trigger('load.bs.scrollspy.data-api') + + var $target = $('#div-' + type + 'm-2') + var scrollspy = $content.data('bs.scrollspy') + + assert.ok(scrollspy._offsets[1] === $target.offset().top, 'offsed method with ' + type + ' option') + assert.ok(scrollspy._offsets[1] !== $target.position().top, 'position method with ' + type + ' option') + + deferred.resolve() + + return deferred.promise() + } + + $.when(testOffsetMethod('js')) + .then(function () { testOffsetMethod('data') }) + }) + + QUnit.test('should allow passed in option offset method: position', function (assert) { + assert.expect(4) + + var testOffsetMethod = function (type) { + var deferred = $.Deferred() + var navbarHtml = + '<nav class="navbar"' + (type === 'data' ? ' id="navbar-offset-method-menu"' : '') + '>' + + '<ul class="nav">' + + '<li id="li-' + type + 'm-1"><a href="#div-' + type + 'm-1">div 1</a></li>' + + '<li id="li-' + type + 'm-2"><a href="#div-' + type + 'm-2">div 2</a></li>' + + '<li id="li-' + type + 'm-3"><a href="#div-' + type + 'm-3">div 3</a></li>' + + '</ul>' + + '</nav>' + var contentHtml = + '<div class="content"' + (type === 'data' ? ' data-spy="scroll" data-target="#navbar-offset-method-menu" data-offset="0" data-method="position"' : '') + ' style="position: relative; overflow: auto; height: 100px">' + + '<div id="div-' + type + 'm-1" style="position: relative; height: 200px; padding: 0; margin: 0">div 1</div>' + + '<div id="div-' + type + 'm-2" style="position: relative; height: 150px; padding: 0; margin: 0">div 2</div>' + + '<div id="div-' + type + 'm-3" style="position: relative; height: 250px; padding: 0; margin: 0">div 3</div>' + + '</div>' + + + $(navbarHtml).appendTo('#qunit-fixture') + var $content = $(contentHtml) + .appendTo('#qunit-fixture') + + if (type === 'js') $content.bootstrapScrollspy({ target: '.navbar', offset: 0, method: 'position' }) + else if (type === 'data') $(window).trigger('load.bs.scrollspy.data-api') + + var $target = $('#div-' + type + 'm-2') + var scrollspy = $content.data('bs.scrollspy') + + assert.ok(scrollspy._offsets[1] !== $target.offset().top, 'offsed method with ' + type + ' option') + assert.ok(scrollspy._offsets[1] === $target.position().top, 'position method with ' + type + ' option') + + deferred.resolve() + + return deferred.promise() + } + + $.when(testOffsetMethod('js')) + .then(function () { testOffsetMethod('data') }) + }) + }) diff --git a/js/tests/unit/tooltip.js b/js/tests/unit/tooltip.js index e1205b4c0f..f4deb29f8e 100644 --- a/js/tests/unit/tooltip.js +++ b/js/tests/unit/tooltip.js @@ -1,696 +1,395 @@ $(function () { 'use strict'; - module('tooltip plugin') + QUnit.module('tooltip plugin') - test('should be defined on jquery object', function () { - ok($(document.body).tooltip, 'tooltip method is defined') + QUnit.test('should be defined on jquery object', function (assert) { + assert.expect(1) + assert.ok($(document.body).tooltip, 'tooltip method is defined') }) - module('tooltip', { - setup: function () { + QUnit.module('tooltip', { + beforeEach: function () { // Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode $.fn.bootstrapTooltip = $.fn.tooltip.noConflict() }, - teardown: function () { + afterEach: function () { $.fn.tooltip = $.fn.bootstrapTooltip delete $.fn.bootstrapTooltip + $('.tooltip').remove() } }) - test('should provide no conflict', function () { - strictEqual($.fn.tooltip, undefined, 'tooltip was set back to undefined (org value)') + QUnit.test('should provide no conflict', function (assert) { + assert.expect(1) + assert.strictEqual($.fn.tooltip, undefined, 'tooltip was set back to undefined (org value)') }) - test('should return jquery collection containing the element', function () { + QUnit.test('should return jquery collection containing the element', function (assert) { + assert.expect(2) var $el = $('<div/>') var $tooltip = $el.bootstrapTooltip() - ok($tooltip instanceof $, 'returns jquery collection') - strictEqual($tooltip[0], $el[0], 'collection contains element') + assert.ok($tooltip instanceof $, 'returns jquery collection') + assert.strictEqual($tooltip[0], $el[0], 'collection contains element') }) - test('should expose default settings', function () { - ok($.fn.bootstrapTooltip.Constructor.Defaults, 'defaults is defined') + QUnit.test('should expose default settings', function (assert) { + assert.expect(1) + assert.ok($.fn.bootstrapTooltip.Constructor.Default, 'defaults is defined') }) - test('should empty title attribute', function () { + QUnit.test('should empty title attribute', function (assert) { + assert.expect(1) var $trigger = $('<a href="#" rel="tooltip" title="Another tooltip"/>').bootstrapTooltip() - strictEqual($trigger.attr('title'), '', 'title attribute was emptied') + assert.strictEqual($trigger.attr('title'), '', 'title attribute was emptied') }) - test('should add data attribute for referencing original title', function () { + QUnit.test('should add data attribute for referencing original title', function (assert) { + assert.expect(1) var $trigger = $('<a href="#" rel="tooltip" title="Another tooltip"/>').bootstrapTooltip() - strictEqual($trigger.attr('data-original-title'), 'Another tooltip', 'original title preserved in data attribute') + assert.strictEqual($trigger.attr('data-original-title'), 'Another tooltip', 'original title preserved in data attribute') }) - test('should add aria-describedby to the trigger on show', function () { - var $trigger = $('<a href="#" rel="tooltip" title="Another tooltip">Tooltip trigger</a>') + QUnit.test('should add aria-describedby to the trigger on show', function (assert) { + assert.expect(3) + var $trigger = $('<a href="#" rel="tooltip" title="Another tooltip"/>') .bootstrapTooltip() .appendTo('#qunit-fixture') .bootstrapTooltip('show') var id = $('.tooltip').attr('id') - strictEqual($('#' + id).length, 1, 'has a unique id') - strictEqual($('.tooltip').attr('aria-describedby'), $trigger.attr('id'), 'tooltip id and aria-describedby on trigger match') - ok($trigger[0].hasAttribute('aria-describedby'), 'trigger has aria-describedby') + assert.strictEqual($('#' + id).length, 1, 'has a unique id') + assert.strictEqual($('.tooltip').attr('aria-describedby'), $trigger.attr('id'), 'tooltip id and aria-describedby on trigger match') + assert.ok($trigger[0].hasAttribute('aria-describedby'), 'trigger has aria-describedby') }) - test('should remove aria-describedby from trigger on hide', function () { - var $trigger = $('<a href="#" rel="tooltip" title="Another tooltip">Tooltip trigger</a>') + QUnit.test('should remove aria-describedby from trigger on hide', function (assert) { + assert.expect(2) + var $trigger = $('<a href="#" rel="tooltip" title="Another tooltip"/>') .bootstrapTooltip() .appendTo('#qunit-fixture') $trigger.bootstrapTooltip('show') - ok($trigger[0].hasAttribute('aria-describedby'), 'trigger has aria-describedby') + assert.ok($trigger[0].hasAttribute('aria-describedby'), 'trigger has aria-describedby') $trigger.bootstrapTooltip('hide') - ok(!$trigger[0].hasAttribute('aria-describedby'), 'trigger does not have aria-describedby') + assert.ok(!$trigger[0].hasAttribute('aria-describedby'), 'trigger does not have aria-describedby') }) - test('should assign a unique id tooltip element', function () { - $('<a href="#" rel="tooltip" title="Another tooltip">Tooltip trigger</a>') + QUnit.test('should assign a unique id tooltip element', function (assert) { + assert.expect(2) + $('<a href="#" rel="tooltip" title="Another tooltip"/>') .appendTo('#qunit-fixture') .bootstrapTooltip('show') var id = $('.tooltip').attr('id') - strictEqual($('#' + id).length, 1, 'tooltip has unique id') - strictEqual(id.indexOf('tooltip'), 0, 'tooltip id has prefix') + assert.strictEqual($('#' + id).length, 1, 'tooltip has unique id') + assert.strictEqual(id.indexOf('tooltip'), 0, 'tooltip id has prefix') }) - test('should place tooltips relative to placement option', function () { - var $tooltip = $('<a href="#" rel="tooltip" title="Another tooltip">Tooltip trigger</a>') + QUnit.test('should place tooltips relative to placement option', function (assert) { + assert.expect(2) + var $tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"/>') .appendTo('#qunit-fixture') .bootstrapTooltip({ placement: 'bottom' }) $tooltip.bootstrapTooltip('show') - ok($('.tooltip').is('.fade.tooltip-bottom.in'), 'has correct classes applied') + + assert + .ok($('.tooltip') + .is('.fade.bs-tether-element-attached-top.bs-tether-element-attached-center.in'), 'has correct classes applied') $tooltip.bootstrapTooltip('hide') - equal($('.tooltip').length, 0, 'tooltip removed') + + assert.strictEqual($tooltip.data('bs.tooltip').tip.parentNode, null, 'tooltip removed') }) - test('should allow html entities', function () { - var $tooltip = $('<a href="#" rel="tooltip" title="<b>@fat</b>">Tooltip trigger</a>') + QUnit.test('should allow html entities', function (assert) { + assert.expect(2) + var $tooltip = $('<a href="#" rel="tooltip" title="<b>@fat</b>"/>') .appendTo('#qunit-fixture') .bootstrapTooltip({ html: true }) $tooltip.bootstrapTooltip('show') - notEqual($('.tooltip b').length, 0, 'b tag was inserted') + assert.notEqual($('.tooltip b').length, 0, 'b tag was inserted') $tooltip.bootstrapTooltip('hide') - equal($('.tooltip').length, 0, 'tooltip removed') + assert.strictEqual($tooltip.data('bs.tooltip').tip.parentNode, null, 'tooltip removed') }) - test('should respect custom classes', function () { - var $tooltip = $('<a href="#" rel="tooltip" title="Another tooltip">Tooltip trigger</a>') + QUnit.test('should respect custom classes', function (assert) { + assert.expect(2) + var $tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"/>') .appendTo('#qunit-fixture') .bootstrapTooltip({ template: '<div class="tooltip some-class"><div class="tooltip-arrow"/><div class="tooltip-inner"/></div>' }) $tooltip.bootstrapTooltip('show') - ok($('.tooltip').hasClass('some-class'), 'custom class is present') + assert.ok($('.tooltip').hasClass('some-class'), 'custom class is present') $tooltip.bootstrapTooltip('hide') - equal($('.tooltip').length, 0, 'tooltip removed') + assert.strictEqual($tooltip.data('bs.tooltip').tip.parentNode, null, 'tooltip removed') }) - test('should fire show event', function (assert) { + QUnit.test('should fire show event', function (assert) { + assert.expect(1) var done = assert.async() - $('<div title="tooltip title">Tooltip trigger</div>') - .appendTo('#qunit-fixture') + $('<div title="tooltip title"/>') .on('show.bs.tooltip', function () { - ok(true, 'show event fired') + assert.ok(true, 'show event fired') done() }) .bootstrapTooltip('show') }) - test('should fire shown event', function (assert) { + QUnit.test('should fire inserted event', function (assert) { + assert.expect(2) var done = assert.async() - $('<div title="tooltip title">Tooltip trigger</div>') + $('<div title="tooltip title"/>') .appendTo('#qunit-fixture') - .on('shown.bs.tooltip', function () { - ok(true, 'shown was called') + .on('inserted.bs.tooltip', function () { + assert.notEqual($('.tooltip').length, 0, 'tooltip was inserted') + assert.ok(true, 'inserted event fired') done() }) .bootstrapTooltip('show') }) - test('should not fire shown event when show was prevented', function (assert) { + QUnit.test('should fire shown event', function (assert) { + assert.expect(1) var done = assert.async() - $('<div title="tooltip title">Tooltip trigger</div>') + $('<div title="tooltip title"></div>') .appendTo('#qunit-fixture') + .on('shown.bs.tooltip', function () { + assert.ok(true, 'shown was called') + done() + }) + .bootstrapTooltip('show') + }) + + QUnit.test('should not fire shown event when show was prevented', function (assert) { + assert.expect(1) + var done = assert.async() + + $('<div title="tooltip title"/>') .on('show.bs.tooltip', function (e) { e.preventDefault() - ok(true, 'show event fired') + assert.ok(true, 'show event fired') done() }) .on('shown.bs.tooltip', function () { - ok(false, 'shown event fired') + assert.ok(false, 'shown event fired') }) .bootstrapTooltip('show') }) - test('should fire hide event', function (assert) { + QUnit.test('should fire hide event', function (assert) { + assert.expect(1) var done = assert.async() - $('<div title="tooltip title">Tooltip trigger</div>') + $('<div title="tooltip title"/>') .appendTo('#qunit-fixture') .on('shown.bs.tooltip', function () { $(this).bootstrapTooltip('hide') }) .on('hide.bs.tooltip', function () { - ok(true, 'hide event fired') + assert.ok(true, 'hide event fired') done() }) .bootstrapTooltip('show') }) - test('should fire hidden event', function (assert) { + QUnit.test('should fire hidden event', function (assert) { + assert.expect(1) var done = assert.async() - $('<div title="tooltip title">Tooltip trigger</div>') + $('<div title="tooltip title"/>') .appendTo('#qunit-fixture') .on('shown.bs.tooltip', function () { $(this).bootstrapTooltip('hide') }) .on('hidden.bs.tooltip', function () { - ok(true, 'hidden event fired') + assert.ok(true, 'hidden event fired') done() }) .bootstrapTooltip('show') }) - test('should not fire hidden event when hide was prevented', function (assert) { + QUnit.test('should not fire hidden event when hide was prevented', function (assert) { + assert.expect(1) var done = assert.async() - $('<div title="tooltip title">Tooltip trigger</div>') + $('<div title="tooltip title"/>') .appendTo('#qunit-fixture') .on('shown.bs.tooltip', function () { $(this).bootstrapTooltip('hide') }) .on('hide.bs.tooltip', function (e) { e.preventDefault() - ok(true, 'hide event fired') + assert.ok(true, 'hide event fired') done() }) .on('hidden.bs.tooltip', function () { - ok(false, 'hidden event fired') + assert.ok(false, 'hidden event fired') }) .bootstrapTooltip('show') }) - test('should destroy tooltip', function () { - var $tooltip = $('<div>Tooltip trigger</div>') - .appendTo('#qunit-fixture') + QUnit.test('should destroy tooltip', function (assert) { + assert.expect(7) + var $tooltip = $('<div/>') .bootstrapTooltip() .on('click.foo', function () {}) - ok($tooltip.data('bs.tooltip'), 'tooltip has data') - ok($._data($tooltip[0], 'events').mouseover && $._data($tooltip[0], 'events').mouseout, 'tooltip has hover events') - equal($._data($tooltip[0], 'events').click[0].namespace, 'foo', 'tooltip has extra click.foo event') + assert.ok($tooltip.data('bs.tooltip'), 'tooltip has data') + assert.ok($._data($tooltip[0], 'events').mouseover && $._data($tooltip[0], 'events').mouseout, 'tooltip has hover events') + assert.strictEqual($._data($tooltip[0], 'events').click[0].namespace, 'foo', 'tooltip has extra click.foo event') $tooltip.bootstrapTooltip('show') - $tooltip.bootstrapTooltip('destroy') + $tooltip.bootstrapTooltip('dispose') - ok(!$tooltip.hasClass('in'), 'tooltip is hidden') - ok(!$._data($tooltip[0], 'bs.tooltip'), 'tooltip does not have data') - equal($._data($tooltip[0], 'events').click[0].namespace, 'foo', 'tooltip still has click.foo') - ok(!$._data($tooltip[0], 'events').mouseover && !$._data($tooltip[0], 'events').mouseout, 'tooltip does not have hover events') + assert.ok(!$tooltip.hasClass('in'), 'tooltip is hidden') + assert.ok(!$._data($tooltip[0], 'bs.tooltip'), 'tooltip does not have data') + assert.strictEqual($._data($tooltip[0], 'events').click[0].namespace, 'foo', 'tooltip still has click.foo') + assert.ok(!$._data($tooltip[0], 'events').mouseover && !$._data($tooltip[0], 'events').mouseout, 'tooltip does not have hover events') }) - test('should show tooltip with delegate selector on click', function () { - var $div = $('<div><a href="#" rel="tooltip" title="Another tooltip">Tooltip trigger</a></div>') - .appendTo('#qunit-fixture') - .bootstrapTooltip({ - selector: 'a[rel="tooltip"]', - trigger: 'click' - }) + // QUnit.test('should show tooltip with delegate selector on click', function (assert) { + // assert.expect(2) + // var $div = $('<div><a href="#" rel="tooltip" title="Another tooltip"/></div>') + // .appendTo('#qunit-fixture') + // .bootstrapTooltip({ + // selector: 'a[rel="tooltip"]', + // trigger: 'click' + // }) - $div.find('a').click() - ok($('.tooltip').is('.fade.in'), 'tooltip is faded in') + // $div.find('a').trigger('click') + // assert.ok($('.tooltip').is('.fade.in'), 'tooltip is faded in') - $div.find('a').click() - equal($('.tooltip').length, 0, 'tooltip was removed from dom') - }) + // $div.find('a').trigger('click') + // assert.strictEqual($div.data('bs.tooltip').tip.parentNode, null, 'tooltip removed') + // }) - test('should show tooltip when toggle is called', function () { - $('<a href="#" rel="tooltip" title="tooltip on toggle">Tooltip trigger</a>') + QUnit.test('should show tooltip when toggle is called', function (assert) { + assert.expect(1) + $('<a href="#" rel="tooltip" title="tooltip on toggle"/>') .appendTo('#qunit-fixture') .bootstrapTooltip({ trigger: 'manual' }) .bootstrapTooltip('toggle') - ok($('.tooltip').is('.fade.in'), 'tooltip is faded in') + assert.ok($('.tooltip').is('.fade.in'), 'tooltip is faded in') }) - test('should hide previously shown tooltip when toggle is called on tooltip', function () { + QUnit.test('should hide previously shown tooltip when toggle is called on tooltip', function (assert) { + assert.expect(1) $('<a href="#" rel="tooltip" title="tooltip on toggle">@ResentedHook</a>') .appendTo('#qunit-fixture') .bootstrapTooltip({ trigger: 'manual' }) .bootstrapTooltip('show') $('.tooltip').bootstrapTooltip('toggle') - ok($('.tooltip').not('.fade.in'), 'tooltip was faded out') + assert.ok($('.tooltip').not('.fade.in'), 'tooltip was faded out') }) - test('should place tooltips inside body when container is body', function () { - var $tooltip = $('<a href="#" rel="tooltip" title="Another tooltip">Tooltip trigger</a>') + QUnit.test('should place tooltips inside body when container is body', function (assert) { + assert.expect(3) + var $tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"/>') .appendTo('#qunit-fixture') .bootstrapTooltip({ container: 'body' }) .bootstrapTooltip('show') - notEqual($('body > .tooltip').length, 0, 'tooltip is direct descendant of body') - equal($('#qunit-fixture > .tooltip').length, 0, 'tooltip is not in parent') + assert.notEqual($('body > .tooltip').length, 0, 'tooltip is direct descendant of body') + assert.strictEqual($('#qunit-fixture > .tooltip').length, 0, 'tooltip is not in parent') $tooltip.bootstrapTooltip('hide') - equal($('body > .tooltip').length, 0, 'tooltip was removed from dom') + assert.strictEqual($('body > .tooltip').length, 0, 'tooltip was removed from dom') }) - test('should add position class before positioning so that position-specific styles are taken into account', function () { + QUnit.test('should add position class before positioning so that position-specific styles are taken into account', function (assert) { + assert.expect(1) var styles = '<style>' - + '.tooltip.tooltip-right { white-space: nowrap; }' - + '.tooltip.tooltip-right .tooltip-inner { max-width: none; }' - + '</style>' + + '.tooltip.right { white-space: nowrap; }' + + '.tooltip.right .tooltip-inner { max-width: none; }' + + '</style>' var $styles = $(styles).appendTo('head') var $container = $('<div/>').appendTo('#qunit-fixture') - var $target = $('<a href="#" rel="tooltip" title="very very very very very very very very long tooltip in one line">m</a>') + var $target = $('<a href="#" rel="tooltip" title="very very very very very very very very long tooltip in one line"/>') .appendTo($container) .bootstrapTooltip({ - placement: 'right', - viewport: null + placement: 'right' }) .bootstrapTooltip('show') - var $tooltip = $container.find('.tooltip') + + var $tooltip = $($target.data('bs.tooltip').tip) // this is some dumb hack shit because sub pixels in firefox var top = Math.round($target.offset().top + ($target[0].offsetHeight / 2) - ($tooltip[0].offsetHeight / 2)) var top2 = Math.round($tooltip.offset().top) var topDiff = top - top2 - ok(topDiff <= 1 && topDiff >= -1) + assert.ok(topDiff <= 1 && topDiff >= -1) $target.bootstrapTooltip('hide') $container.remove() $styles.remove() }) - test('should use title attribute for tooltip text', function () { - var $tooltip = $('<a href="#" rel="tooltip" title="Simple tooltip">Tooltip trigger</a>') + QUnit.test('should use title attribute for tooltip text', function (assert) { + assert.expect(2) + var $tooltip = $('<a href="#" rel="tooltip" title="Simple tooltip"/>') .appendTo('#qunit-fixture') .bootstrapTooltip() $tooltip.bootstrapTooltip('show') - equal($('.tooltip').children('.tooltip-inner').text(), 'Simple tooltip', 'title from title attribute is set') + assert.strictEqual($('.tooltip').children('.tooltip-inner').text(), 'Simple tooltip', 'title from title attribute is set') $tooltip.bootstrapTooltip('hide') - equal($('.tooltip').length, 0, 'tooltip removed from dom') + assert.strictEqual($('.tooltip').length, 0, 'tooltip removed from dom') }) - test('should prefer title attribute over title option', function () { - var $tooltip = $('<a href="#" rel="tooltip" title="Simple tooltip">Tooltip trigger</a>') + QUnit.test('should prefer title attribute over title option', function (assert) { + assert.expect(2) + var $tooltip = $('<a href="#" rel="tooltip" title="Simple tooltip"/>') .appendTo('#qunit-fixture') .bootstrapTooltip({ title: 'This is a tooltip with some content' }) $tooltip.bootstrapTooltip('show') - equal($('.tooltip').children('.tooltip-inner').text(), 'Simple tooltip', 'title is set from title attribute while preferred over title option') + assert.strictEqual($('.tooltip').children('.tooltip-inner').text(), 'Simple tooltip', 'title is set from title attribute while preferred over title option') $tooltip.bootstrapTooltip('hide') - equal($('.tooltip').length, 0, 'tooltip removed from dom') + assert.strictEqual($('.tooltip').length, 0, 'tooltip removed from dom') }) - test('should use title option', function () { - var $tooltip = $('<a href="#" rel="tooltip">Tooltip trigger</a>') + QUnit.test('should use title option', function (assert) { + assert.expect(2) + var $tooltip = $('<a href="#" rel="tooltip"/>') .appendTo('#qunit-fixture') .bootstrapTooltip({ title: 'This is a tooltip with some content' }) $tooltip.bootstrapTooltip('show') - equal($('.tooltip').children('.tooltip-inner').text(), 'This is a tooltip with some content', 'title from title option is set') + assert.strictEqual($('.tooltip').children('.tooltip-inner').text(), 'This is a tooltip with some content', 'title from title option is set') $tooltip.bootstrapTooltip('hide') - equal($('.tooltip').length, 0, 'tooltip removed from dom') - }) - - test('should be placed dynamically with the dynamic placement option', function () { - var $style = $('<style> a[rel="tooltip"] { display: inline-block; position: absolute; } </style>') - var $container = $('<div/>') - .css({ - position: 'absolute', - overflow: 'hidden', - width: 600, - height: 400, - top: 0, - left: 0 - }) - .appendTo(document.body) - - var $topTooltip = $('<div style="left: 0; top: 0;" rel="tooltip" title="Top tooltip">Top Dynamic Tooltip</div>') - .appendTo($container) - .bootstrapTooltip({ placement: 'auto' }) - - $topTooltip.bootstrapTooltip('show') - ok($('.tooltip').is('.tooltip-bottom'), 'top positioned tooltip is dynamically positioned to bottom') - - $topTooltip.bootstrapTooltip('hide') - equal($('.tooltip').length, 0, 'top positioned tooltip removed from dom') - - var $rightTooltip = $('<div style="right: 0;" rel="tooltip" title="Right tooltip">Right Dynamic Tooltip</div>') - .appendTo($container) - .bootstrapTooltip({ placement: 'right auto' }) - - $rightTooltip.bootstrapTooltip('show') - ok($('.tooltip').is('.tooltip-left'), 'right positioned tooltip is dynamically positioned left') - - $rightTooltip.bootstrapTooltip('hide') - equal($('.tooltip').length, 0, 'right positioned tooltip removed from dom') - - var $leftTooltip = $('<div style="left: 0;" rel="tooltip" title="Left tooltip">Left Dynamic Tooltip</div>') - .appendTo($container) - .bootstrapTooltip({ placement: 'auto left' }) - - $leftTooltip.bootstrapTooltip('show') - ok($('.tooltip').is('.tooltip-right'), 'left positioned tooltip is dynamically positioned right') - - $leftTooltip.bootstrapTooltip('hide') - equal($('.tooltip').length, 0, 'left positioned tooltip removed from dom') - - $container.remove() - $style.remove() - }) - - test('should position tip on top if viewport has enough space and placement is "auto top"', function () { - var styles = '<style>' - + 'body { padding-top: 100px; }' - + '#section { height: 300px; border: 1px solid red; padding-top: 50px }' - + 'div[rel="tooltip"] { width: 150px; border: 1px solid blue; }' - + '</style>' - var $styles = $(styles).appendTo('head') - - var $container = $('<div id="section"/>').appendTo('#qunit-fixture') - var $target = $('<div rel="tooltip" title="tip"/>') - .appendTo($container) - .bootstrapTooltip({ - placement: 'auto top', - viewport: '#section' - }) - - $target.bootstrapTooltip('show') - ok($('.tooltip').is('.tooltip-top'), 'top positioned tooltip is dynamically positioned to top') - - $target.bootstrapTooltip('hide') - equal($('.tooltip').length, 0, 'tooltip removed from dom') - - $styles.remove() - }) - - test('should position tip on bottom if the tip\'s dimension exceeds the viewport area and placement is "auto top"', function () { - var styles = '<style>' - + 'body { padding-top: 100px; }' - + '#section { height: 300px; border: 1px solid red; }' - + 'div[rel="tooltip"] { width: 150px; border: 1px solid blue; }' - + '</style>' - var $styles = $(styles).appendTo('head') - - var $container = $('<div id="section"/>').appendTo('#qunit-fixture') - var $target = $('<div rel="tooltip" title="tip"/>') - .appendTo($container) - .bootstrapTooltip({ - placement: 'auto top', - viewport: '#section' - }) - - $target.bootstrapTooltip('show') - ok($('.tooltip').is('.tooltip-bottom'), 'top positioned tooltip is dynamically positioned to bottom') - - $target.bootstrapTooltip('hide') - equal($('.tooltip').length, 0, 'tooltip removed from dom') - - $styles.remove() - }) - - test('should display the tip on top whenever scrollable viewport has enough room if the given placement is "auto top"', function () { - var styles = '<style>' - + '#scrollable-div { height: 200px; overflow: auto; }' - + '.tooltip-item { margin: 200px 0 400px; width: 150px; }' - + '</style>' - var $styles = $(styles).appendTo('head') - - var $container = $('<div id="scrollable-div"/>').appendTo('#qunit-fixture') - var $target = $('<div rel="tooltip" title="tip" class="tooltip-item">Tooltip Item</div>') - .appendTo($container) - .bootstrapTooltip({ - placement: 'top auto', - viewport: '#scrollable-div' - }) - - $('#scrollable-div').scrollTop(100) - - $target.bootstrapTooltip('show') - ok($('.tooltip').is('.fade.tooltip-top.in'), 'has correct classes applied') - - $target.bootstrapTooltip('hide') - equal($('.tooltip').length, 0, 'tooltip removed from dom') - - $styles.remove() + assert.strictEqual($('.tooltip').length, 0, 'tooltip removed from dom') }) - test('should display the tip on bottom whenever scrollable viewport doesn\'t have enough room if the given placement is "auto top"', function () { - var styles = '<style>' - + '#scrollable-div { height: 200px; overflow: auto; }' - + '.tooltip-item { padding: 200px 0 400px; width: 150px; }' - + '</style>' - var $styles = $(styles).appendTo('head') - - var $container = $('<div id="scrollable-div"/>').appendTo('#qunit-fixture') - var $target = $('<div rel="tooltip" title="tip" class="tooltip-item">Tooltip Item</div>') - .appendTo($container) - .bootstrapTooltip({ - placement: 'top auto', - viewport: '#scrollable-div' - }) - - $('#scrollable-div').scrollTop(200) - - $target.bootstrapTooltip('show') - ok($('.tooltip').is('.fade.tooltip-bottom.in'), 'has correct classes applied') - - $target.bootstrapTooltip('hide') - equal($('.tooltip').length, 0, 'tooltip removed from dom') - - $styles.remove() - }) - - test('should display the tip on bottom whenever scrollable viewport has enough room if the given placement is "auto bottom"', function () { - var styles = '<style>' - + '#scrollable-div { height: 200px; overflow: auto; }' - + '.spacer { height: 400px; }' - + '.spacer:first-child { height: 200px; }' - + '.tooltip-item { width: 150px; }' - + '</style>' - var $styles = $(styles).appendTo('head') - - var $container = $('<div id="scrollable-div"/>').appendTo('#qunit-fixture') - var $target = $('<div rel="tooltip" title="tip" class="tooltip-item">Tooltip Item</div>') - .appendTo($container) - .before('<div class="spacer"/>') - .after('<div class="spacer"/>') - .bootstrapTooltip({ - placement: 'bottom auto', - viewport: '#scrollable-div' - }) - - $('#scrollable-div').scrollTop(200) - - $target.bootstrapTooltip('show') - ok($('.tooltip').is('.fade.tooltip-bottom.in'), 'has correct classes applied') - - $target.bootstrapTooltip('hide') - equal($('.tooltip').length, 0, 'tooltip removed from dom') - - $styles.remove() - }) - - test('should display the tip on top whenever scrollable viewport doesn\'t have enough room if the given placement is "auto bottom"', function () { - var styles = '<style>' - + '#scrollable-div { height: 200px; overflow: auto; }' - + '.tooltip-item { margin-top: 400px; width: 150px; }' - + '</style>' - var $styles = $(styles).appendTo('head') - - var $container = $('<div id="scrollable-div"/>').appendTo('#qunit-fixture') - var $target = $('<div rel="tooltip" title="tip" class="tooltip-item">Tooltip Item</div>') - .appendTo($container) - .bootstrapTooltip({ - placement: 'bottom auto', - viewport: '#scrollable-div' - }) - - $('#scrollable-div').scrollTop(400) - - $target.bootstrapTooltip('show') - ok($('.tooltip').is('.fade.tooltip-top.in'), 'has correct classes applied') - - $target.bootstrapTooltip('hide') - equal($('.tooltip').length, 0, 'tooltip removed from dom') - - $styles.remove() - }) - - test('should adjust the tip\'s top position when up against the top of the viewport', function () { - var styles = '<style>' - + '.tooltip .tooltip-inner { width: 200px; height: 200px; max-width: none; }' - + 'a[rel="tooltip"] { position: fixed; }' - + '</style>' - var $styles = $(styles).appendTo('head') - - var $container = $('<div/>').appendTo('#qunit-fixture') - var $target = $('<a href="#" rel="tooltip" title="tip" style="top: 0px; left: 0px;">m</a>') - .appendTo($container) - .bootstrapTooltip({ - placement: 'right', - viewport: { - selector: 'body', - padding: 12 - } - }) - - $target.bootstrapTooltip('show') - equal(Math.round($container.find('.tooltip').offset().top), 12) - - $target.bootstrapTooltip('hide') - equal($('.tooltip').length, 0, 'tooltip removed from dom') - - $styles.remove() - }) - - test('should adjust the tip\'s top position when up against the bottom of the viewport', function () { - var styles = '<style>' - + '.tooltip .tooltip-inner { width: 200px; height: 200px; max-width: none; }' - + 'a[rel="tooltip"] { position: fixed; }' - + '</style>' - var $styles = $(styles).appendTo('head') - - var $container = $('<div/>').appendTo('#qunit-fixture') - var $target = $('<a href="#" rel="tooltip" title="tip" style="bottom: 0px; left: 0px;">m</a>') - .appendTo($container) - .bootstrapTooltip({ - placement: 'right', - viewport: { - selector: 'body', - padding: 12 - } - }) - - $target.bootstrapTooltip('show') - var $tooltip = $container.find('.tooltip') - strictEqual(Math.round($tooltip.offset().top), Math.round($(window).height() - 12 - $tooltip[0].offsetHeight)) - - $target.bootstrapTooltip('hide') - equal($('.tooltip').length, 0, 'tooltip removed from dom') - - $container.remove() - $styles.remove() - }) - - test('should adjust the tip\'s left position when up against the left of the viewport', function () { - var styles = '<style>' - + '.tooltip .tooltip-inner { width: 200px; height: 200px; max-width: none; }' - + 'a[rel="tooltip"] { position: fixed; }' - + '</style>' - var $styles = $(styles).appendTo('head') - - var $container = $('<div/>').appendTo('#qunit-fixture') - var $target = $('<a href="#" rel="tooltip" title="tip" style="top: 0px; left: 0px;">m</a>') - .appendTo($container) - .bootstrapTooltip({ - placement: 'bottom', - viewport: { - selector: 'body', - padding: 12 - } - }) - - $target.bootstrapTooltip('show') - strictEqual(Math.round($container.find('.tooltip').offset().left), 12) - - $target.bootstrapTooltip('hide') - equal($('.tooltip').length, 0, 'tooltip removed from dom') - - $container.remove() - $styles.remove() - }) - - test('should adjust the tip\'s left position when up against the right of the viewport', function () { - var styles = '<style>' - + '.tooltip .tooltip-inner { width: 200px; height: 200px; max-width: none; }' - + 'a[rel="tooltip"] { position: fixed; }' - + '</style>' - var $styles = $(styles).appendTo('head') - - var $container = $('<div/>').appendTo('body') - var $target = $('<a href="#" rel="tooltip" title="tip" style="top: 0px; right: 0px;">m</a>') - .appendTo($container) - .bootstrapTooltip({ - placement: 'bottom', - viewport: { - selector: 'body', - padding: 12 - } - }) - - $target.bootstrapTooltip('show') - var $tooltip = $container.find('.tooltip') - strictEqual(Math.round($tooltip.offset().left), Math.round($(window).width() - 12 - $tooltip[0].offsetWidth)) - - $target.bootstrapTooltip('hide') - equal($('.tooltip').length, 0, 'tooltip removed from dom') - - $container.remove() - $styles.remove() - }) - - test('should adjust the tip when up against the right of an arbitrary viewport', function () { - var styles = '<style>' - + '.tooltip, .tooltip .tooltip-inner { width: 200px; height: 200px; max-width: none; }' - + '.container-viewport { position: absolute; top: 50px; left: 60px; width: 300px; height: 300px; }' - + 'a[rel="tooltip"] { position: fixed; }' - + '</style>' - var $styles = $(styles).appendTo('head') - - var $container = $('<div class="container-viewport"/>').appendTo(document.body) - var $target = $('<a href="#" rel="tooltip" title="tip" style="top: 50px; left: 350px;">m</a>') - .appendTo($container) - .bootstrapTooltip({ - placement: 'bottom', - viewport: '.container-viewport' - }) - - $target.bootstrapTooltip('show') - var $tooltip = $container.find('.tooltip') - strictEqual(Math.round($tooltip.offset().left), Math.round(60 + $container.width() - $tooltip[0].offsetWidth)) - - $target.bootstrapTooltip('hide') - equal($('.tooltip').length, 0, 'tooltip removed from dom') - - $container.remove() - $styles.remove() - }) - - test('should not error when trying to show an auto-placed tooltip that has been removed from the dom', function () { + QUnit.test('should not error when trying to show an top-placed tooltip that has been removed from the dom', function (assert) { + assert.expect(1) var passed = true - var $tooltip = $('<a href="#" rel="tooltip" title="Another tooltip">Tooltip trigger</a>') + var $tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"/>') .appendTo('#qunit-fixture') .one('show.bs.tooltip', function () { $(this).remove() }) - .bootstrapTooltip({ placement: 'auto' }) + .bootstrapTooltip({ placement: 'top' }) try { $tooltip.bootstrapTooltip('show') @@ -699,10 +398,11 @@ $(function () { console.log(err) } - ok(passed, '.tooltip(\'show\') should not throw an error if element no longer is in dom') + assert.ok(passed, '.tooltip(\'show\') should not throw an error if element no longer is in dom') }) - test('should place tooltip on top of element', function (assert) { + QUnit.test('should place tooltip on top of element', function (assert) { + assert.expect(1) var done = assert.async() var containerHTML = '<div>' @@ -731,102 +431,74 @@ $(function () { }) .bootstrapTooltip('show') - var $tooltip = $container.find('.tooltip') + var $tooltip = $($trigger.data('bs.tooltip').tip) setTimeout(function () { - ok(Math.round($tooltip.offset().top + $tooltip.outerHeight()) <= Math.round($trigger.offset().top)) + assert.ok(Math.round($tooltip.offset().top + $tooltip.outerHeight()) <= Math.round($trigger.offset().top)) done() }, 0) }) - test('should place tooltip inside viewport', function (assert) { + QUnit.test('should show tooltip if leave event hasn\'t occurred before delay expires', function (assert) { + assert.expect(2) var done = assert.async() - var $container = $('<div/>') - .css({ - position: 'absolute', - width: 200, - height: 200, - bottom: 0, - left: 0 - }) - .appendTo('#qunit-fixture') - - $('<a href="#" title="Very very very very very very very very long tooltip">Hover me</a>') - .css({ - position: 'absolute', - top: 0, - left: 0 - }) - .appendTo($container) - .bootstrapTooltip({ - placement: 'top' - }) - .bootstrapTooltip('show') - - setTimeout(function () { - ok($('.tooltip').offset().left >= 0) - done() - }, 0) - }) - - test('should show tooltip if leave event hasn\'t occurred before delay expires', function (assert) { - var done = assert.async() - - var $tooltip = $('<a href="#" rel="tooltip" title="Another tooltip">Tooltip trigger</a>') + var $tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"/>') .appendTo('#qunit-fixture') .bootstrapTooltip({ delay: 150 }) setTimeout(function () { - ok(!$('.tooltip').is('.fade.in'), '100ms: tooltip is not faded in') + assert.ok(!$('.tooltip').is('.fade.in'), '100ms: tooltip is not faded in') }, 100) setTimeout(function () { - ok($('.tooltip').is('.fade.in'), '200ms: tooltip is faded in') + assert.ok($('.tooltip').is('.fade.in'), '200ms: tooltip is faded in') done() }, 200) $tooltip.trigger('mouseenter') }) - test('should not show tooltip if leave event occurs before delay expires', function (assert) { + QUnit.test('should not show tooltip if leave event occurs before delay expires', function (assert) { + assert.expect(2) var done = assert.async() - var $tooltip = $('<a href="#" rel="tooltip" title="Another tooltip">Tooltip trigger</a>') + var $tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"/>') .appendTo('#qunit-fixture') .bootstrapTooltip({ delay: 150 }) setTimeout(function () { - ok(!$('.tooltip').is('.fade.in'), '100ms: tooltip not faded in') + assert.ok(!$('.tooltip').is('.fade.in'), '100ms: tooltip not faded in') $tooltip.trigger('mouseout') }, 100) setTimeout(function () { - ok(!$('.tooltip').is('.fade.in'), '200ms: tooltip not faded in') + assert.ok(!$('.tooltip').is('.fade.in'), '200ms: tooltip not faded in') done() }, 200) $tooltip.trigger('mouseenter') }) - test('should not hide tooltip if leave event occurs and enter event occurs within the hide delay', function (assert) { + QUnit.test('should not hide tooltip if leave event occurs and enter event occurs within the hide delay', function (assert) { + assert.expect(3) var done = assert.async() - var $tooltip = $('<a href="#" rel="tooltip" title="Another tooltip">Tooltip trigger</a>') + var $tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"/>') .appendTo('#qunit-fixture') .bootstrapTooltip({ delay: { show: 0, hide: 150 }}) setTimeout(function () { - ok($('.tooltip').is('.fade.in'), '1ms: tooltip faded in') + assert.ok($('.tooltip').is('.fade.in'), '1ms: tooltip faded in') $tooltip.trigger('mouseout') setTimeout(function () { - ok($('.tooltip').is('.fade.in'), '100ms: tooltip still faded in') + assert.ok($('.tooltip').is('.fade.in'), '100ms: tooltip still faded in') $tooltip.trigger('mouseenter') }, 100) setTimeout(function () { - ok($('.tooltip').is('.fade.in'), '200ms: tooltip still faded in') + assert.ok($('.tooltip').is('.fade.in'), '200ms: tooltip still faded in') done() }, 200) }, 0) @@ -834,65 +506,68 @@ $(function () { $tooltip.trigger('mouseenter') }) - test('should not show tooltip if leave event occurs before delay expires', function (assert) { + QUnit.test('should not show tooltip if leave event occurs before delay expires', function (assert) { + assert.expect(2) var done = assert.async() - var $tooltip = $('<a href="#" rel="tooltip" title="Another tooltip">Tooltip trigger</a>') + var $tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"/>') .appendTo('#qunit-fixture') .bootstrapTooltip({ delay: 150 }) setTimeout(function () { - ok(!$('.tooltip').is('.fade.in'), '100ms: tooltip not faded in') + assert.ok(!$('.tooltip').is('.fade.in'), '100ms: tooltip not faded in') $tooltip.trigger('mouseout') }, 100) setTimeout(function () { - ok(!$('.tooltip').is('.fade.in'), '200ms: tooltip not faded in') + assert.ok(!$('.tooltip').is('.fade.in'), '200ms: tooltip not faded in') done() }, 200) $tooltip.trigger('mouseenter') }) - test('should not show tooltip if leave event occurs before delay expires, even if hide delay is 0', function (assert) { + QUnit.test('should not show tooltip if leave event occurs before delay expires, even if hide delay is 0', function (assert) { + assert.expect(2) var done = assert.async() - var $tooltip = $('<a href="#" rel="tooltip" title="Another tooltip">Tooltip trigger</a>') + var $tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"/>') .appendTo('#qunit-fixture') .bootstrapTooltip({ delay: { show: 150, hide: 0 }}) setTimeout(function () { - ok(!$('.tooltip').is('.fade.in'), '100ms: tooltip not faded in') + assert.ok(!$('.tooltip').is('.fade.in'), '100ms: tooltip not faded in') $tooltip.trigger('mouseout') }, 100) setTimeout(function () { - ok(!$('.tooltip').is('.fade.in'), '250ms: tooltip not faded in') + assert.ok(!$('.tooltip').is('.fade.in'), '250ms: tooltip not faded in') done() }, 250) $tooltip.trigger('mouseenter') }) - test('should wait 200ms before hiding the tooltip', function (assert) { + QUnit.test('should wait 200ms before hiding the tooltip', function (assert) { + assert.expect(3) var done = assert.async() - var $tooltip = $('<a href="#" rel="tooltip" title="Another tooltip">Tooltip trigger</a>') + var $tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"/>') .appendTo('#qunit-fixture') .bootstrapTooltip({ delay: { show: 0, hide: 150 }}) setTimeout(function () { - ok($('.tooltip').is('.fade.in'), '1ms: tooltip faded in') + assert.ok($($tooltip.data('bs.tooltip').tip).is('.fade.in'), '1ms: tooltip faded in') $tooltip.trigger('mouseout') setTimeout(function () { - ok($('.tooltip').is('.fade.in'), '100ms: tooltip still faded in') + assert.ok($($tooltip.data('bs.tooltip').tip).is('.fade.in'), '100ms: tooltip still faded in') }, 100) setTimeout(function () { - ok(!$('.tooltip').is('.in'), '200ms: tooltip removed') - start() + assert.ok(!$($tooltip.data('bs.tooltip').tip).is('.in'), '200ms: tooltip removed') + done() }, 200) }, 0) @@ -900,12 +575,13 @@ $(function () { $tooltip.trigger('mouseenter') }) - test('should correctly position tooltips on SVG elements', function (assert) { + QUnit.test('should correctly position tooltips on SVG elements', function (assert) { if (!window.SVGElement) { // Skip IE8 since it doesn't support SVG - expect(0) + assert.expect(0) return } + assert.expect(2) var done = assert.async() @@ -928,60 +604,20 @@ $(function () { .on('shown.bs.tooltip', function () { var offset = $('.tooltip').offset() $styles.remove() - ok(Math.abs(offset.left - 88) <= 1, 'tooltip has correct horizontal location') + assert.ok(Math.abs(offset.left - 88) <= 1, 'tooltip has correct horizontal location') $circle.bootstrapTooltip('hide') - equal($('.tooltip').length, 0, 'tooltip removed from dom') + assert.strictEqual($('.tooltip').length, 0, 'tooltip removed from dom') done() }) - .bootstrapTooltip({ container: 'body', placement: 'top', trigger: 'manual' }) + .bootstrapTooltip({ placement: 'top', trigger: 'manual' }) $circle.bootstrapTooltip('show') }) - test('should correctly determine auto placement based on container rather than parent', function (assert) { - var done = assert.async() - - var styles = '<style>' - + '.tooltip, .tooltip *, .tooltip *:before, .tooltip *:after { box-sizing: border-box; }' - + '.tooltip { position: absolute; display: block; font-size: 12px; line-height: 1.4; }' - + '.tooltip .tooltip-inner { max-width: 200px; padding: 3px 8px; font-family: Helvetica; text-align: center; }' - + '#trigger-parent {' - + ' position: fixed;' - + ' top: 100px;' - + ' right: 17px;' - + '}' - + '</style>' - var $styles = $(styles).appendTo('head') - - $('#qunit-fixture').append('<span id="trigger-parent"><a id="tt-trigger" title="If a_larger_text is written here, it won\'t fit using older broken version of BS">HOVER OVER ME</a></span>') - var $trigger = $('#tt-trigger') - - $trigger - .on('shown.bs.tooltip', function () { - var $tip = $('.tooltip-inner') - var tipXrightEdge = $tip.offset().left + $tip.width() - var triggerXleftEdge = $trigger.offset().left - ok(tipXrightEdge < triggerXleftEdge, 'tooltip with auto left placement, when near the right edge of the viewport, gets left placement') - $trigger.bootstrapTooltip('hide') - }) - .on('hidden.bs.tooltip', function () { - $styles.remove() - $(this).remove() - equal($('.tooltip').length, 0, 'tooltip removed from dom') - done() - }) - .bootstrapTooltip({ - container: 'body', - placement: 'auto left', - trigger: 'manual' - }) - - $trigger.bootstrapTooltip('show') - }) - - test('should not reload the tooltip on subsequent mouseenter events', function () { + QUnit.test('should not reload the tooltip on subsequent mouseenter events', function (assert) { + assert.expect(1) var titleHtml = function () { - var uid = 'fatTooltip' + var uid = Util.getUID('tooltip') return '<p id="tt-content">' + uid + '</p><p>' + uid + '</p><p>' + uid + '</p>' } @@ -1002,12 +638,14 @@ $(function () { var currentUid = $('#tt-content').text() $('#tt-content').trigger('mouseenter') - equal(currentUid, $('#tt-content').text()) + assert.strictEqual(currentUid, $('#tt-content').text()) }) - test('should not reload the tooltip if the mouse leaves and re-enters before hiding', function () { + QUnit.test('should not reload the tooltip if the mouse leaves and re-enters before hiding', function (assert) { + assert.expect(4) + var titleHtml = function () { - var uid = 'fatTooltip' + var uid = Util.getUID('tooltip') return '<p id="tt-content">' + uid + '</p><p>' + uid + '</p><p>' + uid + '</p>' } @@ -1019,7 +657,6 @@ $(function () { animation: false, trigger: 'hover', delay: { show: 0, hide: 500 }, - container: $tooltip, title: titleHtml }) @@ -1030,56 +667,23 @@ $(function () { var currentUid = $('#tt-content').text() $('#tt-outer').trigger('mouseleave') - equal(currentUid, $('#tt-content').text()) - - debugger - - ok(obj.getHoverState() == 'out', 'the tooltip hoverState should be set to "out"') - - $('#tt-content').trigger('mouseenter') - ok(obj.getHoverState() == 'in', 'the tooltip hoverState should be set to "in"') + assert.strictEqual(currentUid, $('#tt-content').text()) - equal(currentUid, $('#tt-content').text()) - }) + assert.ok(obj._hoverState == 'out', 'the tooltip hoverState should be set to "out"') - test('should position arrow correctly when tooltip is moved to not appear offscreen', function (assert) { - var done = assert.async() - - var styles = '<style>' - + '.tooltip, .tooltip *, .tooltip *:before, .tooltip *:after { box-sizing: border-box; }' - + '.tooltip { position: absolute; }' - + '.tooltip-arrow { position: absolute; width: 0; height: 0; }' - + '.tooltip .tooltip-inner { max-width: 200px; padding: 3px 8px; }' - + '</style>' - var $styles = $(styles).appendTo('head') + $('#tt-outer').trigger('mouseenter') + assert.ok(obj._hoverState == 'in', 'the tooltip hoverState should be set to "in"') - $('<a href="#" title="tooltip title" style="position: absolute; bottom: 0; right: 0;">Foobar</a>') - .appendTo('body') - .on('shown.bs.tooltip', function () { - var arrowStyles = $('.tooltip').find('.tooltip-arrow').attr('style') - ok(/left/i.test(arrowStyles) && !/top/i.test(arrowStyles), 'arrow positioned correctly') - $(this).bootstrapTooltip('hide') - }) - .on('hidden.bs.tooltip', function () { - $styles.remove() - $(this).remove() - equal($('.tooltip').length, 0, 'tooltip removed from dom') - done() - }) - .bootstrapTooltip({ - container: 'body', - placement: 'top', - trigger: 'manual' - }) - .bootstrapTooltip('show') + assert.strictEqual(currentUid, $('#tt-content').text()) }) - test('should correctly position tooltips on transformed elements', function (assert) { + QUnit.test('should correctly position tooltips on transformed elements', function (assert) { var styleProps = document.documentElement.style if (!('transform' in styleProps) && !('webkitTransform' in styleProps) && !('msTransform' in styleProps)) { - expect(0) + assert.expect(0) return } + assert.expect(2) var done = assert.async() @@ -1092,35 +696,72 @@ $(function () { + '</style>' var $styles = $(styles).appendTo('head') - var $element = $('<div id="target" title="1"></div>').appendTo('#qunit-fixture') + var $element = $('<div id="target" title="1"/>').appendTo('#qunit-fixture') $element .on('shown.bs.tooltip', function () { var offset = $('.tooltip').offset() $styles.remove() - ok(Math.abs(offset.left - 88) <= 1, 'tooltip has correct horizontal location') - ok(Math.abs(offset.top - 126) <= 1, 'tooltip has correct vertical location') + assert.ok(Math.abs(offset.left - 88) <= 1, 'tooltip has correct horizontal location') + assert.ok(Math.abs(offset.top - 126) <= 1, 'tooltip has correct vertical location') $element.bootstrapTooltip('hide') done() }) .bootstrapTooltip({ - container: 'body', - placement: 'top', trigger: 'manual' }) $element.bootstrapTooltip('show') }) - QUnit.test('should throw an error when trying to show a tooltip on a hidden element', function (assert) { + QUnit.test('should do nothing when an attempt is made to hide an uninitialized tooltip', function (assert) { assert.expect(1) - var $target = $('<a href="#" rel="tooltip" title="Another tooltip" style="display: none;">I am hidden</a>').appendTo('#qunit-fixture') - assert.throws(function () { - $target.bootstrapTooltip('show') - }, new Error('Can\'t show a tooltip/popover on a hidden element')) + var $tooltip = $('<span data-toggle="tooltip" title="some tip">some text</span>') + .appendTo('#qunit-fixture') + .on('hidden.bs.tooltip shown.bs.tooltip', function () { + assert.ok(false, 'should not fire any tooltip events') + }) + .bootstrapTooltip('hide') + assert.strictEqual($tooltip.data('bs.tooltip'), undefined, 'should not initialize the tooltip') + }) + + QUnit.test('should not remove tooltip if multiple triggers are set and one is still active', function (assert) { + assert.expect(41) + var $el = $('<button>Trigger</button>') + .appendTo('#qunit-fixture') + .bootstrapTooltip({ trigger: 'click hover focus', animation: false }) + var tooltip = $el.data('bs.tooltip') + var $tooltip = $(tooltip.getTipElement()) - $target.remove() + function showingTooltip() { return $tooltip.hasClass('in') || tooltip._hoverState == 'in' } + + var tests = [ + ['mouseenter', 'mouseleave'], + + ['focusin', 'focusout'], + + ['click', 'click'], + + ['mouseenter', 'focusin', 'focusout', 'mouseleave'], + ['mouseenter', 'focusin', 'mouseleave', 'focusout'], + + ['focusin', 'mouseenter', 'mouseleave', 'focusout'], + ['focusin', 'mouseenter', 'focusout', 'mouseleave'], + + ['click', 'focusin', 'mouseenter', 'focusout', 'mouseleave', 'click'], + ['mouseenter', 'click', 'focusin', 'focusout', 'mouseleave', 'click'], + ['mouseenter', 'focusin', 'click', 'click', 'mouseleave', 'focusout'] + ] + + assert.ok(!showingTooltip()) + + $.each(tests, function (idx, triggers) { + for (var i = 0, len = triggers.length; i < len; i++) { + $el.trigger(triggers[i]); + assert.equal(i < (len - 1), showingTooltip()) + } + }) }) }) diff --git a/js/tests/vendor/tether.min.js b/js/tests/vendor/tether.min.js new file mode 100644 index 0000000000..882e9e8c88 --- /dev/null +++ b/js/tests/vendor/tether.min.js @@ -0,0 +1,2 @@ +/*! tether 0.7.1 */ +!function(t,e){"function"==typeof define&&define.amd?define(e):"object"==typeof exports?module.exports=e(require,exports,module):t.Tether=e()}(this,function(t,e,o){return function(){var t,e,o,i,n,s,l,r,h,a,f,p,u,d,g,c,m,b,v,y={}.hasOwnProperty,w=[].indexOf||function(t){for(var e=0,o=this.length;o>e;e++)if(e in this&&this[e]===t)return e;return-1},C=[].slice;null==this.Tether&&(this.Tether={modules:[]}),p=function(t){var e,o,i,n,s;if(o=getComputedStyle(t).position,"fixed"===o)return t;for(i=void 0,e=t;e=e.parentNode;){try{n=getComputedStyle(e)}catch(l){}if(null==n)return e;if(/(auto|scroll)/.test(n.overflow+n.overflowY+n.overflowX)&&("absolute"!==o||"relative"===(s=n.position)||"absolute"===s||"fixed"===s))return e}return document.body},m=function(){var t;return t=0,function(){return t++}}(),v={},a=function(t){var e,i,s,l,r;if(s=t._tetherZeroElement,null==s&&(s=t.createElement("div"),s.setAttribute("data-tether-id",m()),n(s.style,{top:0,left:0,position:"absolute"}),t.body.appendChild(s),t._tetherZeroElement=s),e=s.getAttribute("data-tether-id"),null==v[e]){v[e]={},r=s.getBoundingClientRect();for(i in r)l=r[i],v[e][i]=l;o(function(){return v[e]=void 0})}return v[e]},d=null,l=function(t){var e,o,i,n,s,l,r;t===document?(o=document,t=document.documentElement):o=t.ownerDocument,i=o.documentElement,e={},r=t.getBoundingClientRect();for(n in r)l=r[n],e[n]=l;return s=a(o),e.top-=s.top,e.left-=s.left,null==e.width&&(e.width=document.body.scrollWidth-e.left-e.right),null==e.height&&(e.height=document.body.scrollHeight-e.top-e.bottom),e.top=e.top-i.clientTop,e.left=e.left-i.clientLeft,e.right=o.body.clientWidth-e.width-e.left,e.bottom=o.body.clientHeight-e.height-e.top,e},h=function(t){return t.offsetParent||document.documentElement},f=function(){var t,e,o,i,s;return t=document.createElement("div"),t.style.width="100%",t.style.height="200px",e=document.createElement("div"),n(e.style,{position:"absolute",top:0,left:0,pointerEvents:"none",visibility:"hidden",width:"200px",height:"150px",overflow:"hidden"}),e.appendChild(t),document.body.appendChild(e),i=t.offsetWidth,e.style.overflow="scroll",s=t.offsetWidth,i===s&&(s=e.clientWidth),document.body.removeChild(e),o=i-s,{width:o,height:o}},n=function(t){var e,o,i,n,s,l,r;for(null==t&&(t={}),e=[],Array.prototype.push.apply(e,arguments),r=e.slice(1),s=0,l=r.length;l>s;s++)if(i=r[s])for(o in i)y.call(i,o)&&(n=i[o],t[o]=n);return t},g=function(t,e){var o,i,n,s,l,h;if(null!=t.classList){for(l=e.split(" "),h=[],n=0,s=l.length;s>n;n++)i=l[n],i.trim()&&h.push(t.classList.remove(i));return h}return o=r(t).replace(new RegExp("(^| )"+e.split(" ").join("|")+"( |$)","gi")," "),c(t,o)},e=function(t,e){var o,i,n,s,l;if(null!=t.classList){for(s=e.split(" "),l=[],i=0,n=s.length;n>i;i++)o=s[i],o.trim()&&l.push(t.classList.add(o));return l}return g(t,e),o=r(t)+(" "+e),c(t,o)},u=function(t,e){return null!=t.classList?t.classList.contains(e):new RegExp("(^| )"+e+"( |$)","gi").test(r(t))},r=function(t){return t.className instanceof SVGAnimatedString?t.className.baseVal:t.className},c=function(t,e){return t.setAttribute("class",e)},b=function(t,o,i){var n,s,l,r,h,a;for(s=0,r=i.length;r>s;s++)n=i[s],w.call(o,n)<0&&u(t,n)&&g(t,n);for(a=[],l=0,h=o.length;h>l;l++)n=o[l],a.push(u(t,n)?void 0:e(t,n));return a},i=[],o=function(t){return i.push(t)},s=function(){var t,e;for(e=[];t=i.pop();)e.push(t());return e},t=function(){function t(){}return t.prototype.on=function(t,e,o,i){var n;return null==i&&(i=!1),null==this.bindings&&(this.bindings={}),null==(n=this.bindings)[t]&&(n[t]=[]),this.bindings[t].push({handler:e,ctx:o,once:i})},t.prototype.once=function(t,e,o){return this.on(t,e,o,!0)},t.prototype.off=function(t,e){var o,i,n;if(null!=(null!=(i=this.bindings)?i[t]:void 0)){if(null==e)return delete this.bindings[t];for(o=0,n=[];o<this.bindings[t].length;)n.push(this.bindings[t][o].handler===e?this.bindings[t].splice(o,1):o++);return n}},t.prototype.trigger=function(){var t,e,o,i,n,s,l,r,h;if(o=arguments[0],t=2<=arguments.length?C.call(arguments,1):[],null!=(l=this.bindings)?l[o]:void 0){for(n=0,h=[];n<this.bindings[o].length;)r=this.bindings[o][n],i=r.handler,e=r.ctx,s=r.once,i.apply(null!=e?e:this,t),h.push(s?this.bindings[o].splice(n,1):n++);return h}},t}(),this.Tether.Utils={getScrollParent:p,getBounds:l,getOffsetParent:h,extend:n,addClass:e,removeClass:g,hasClass:u,updateClasses:b,defer:o,flush:s,uniqueId:m,Evented:t,getScrollBarSize:f}}.call(this),function(){var t,e,o,i,n,s,l,r,h,a,f,p,u,d,g,c,m,b,v,y,w,C,O,T,x,A,E,S,W,M=[].slice,P=function(t,e){return function(){return t.apply(e,arguments)}};if(null==this.Tether)throw new Error("You must include the utils.js file before tether.js");i=this.Tether,W=i.Utils,c=W.getScrollParent,m=W.getSize,d=W.getOuterSize,p=W.getBounds,u=W.getOffsetParent,a=W.extend,n=W.addClass,O=W.removeClass,A=W.updateClasses,h=W.defer,f=W.flush,g=W.getScrollBarSize,E=function(t,e,o){return null==o&&(o=1),t+o>=e&&e>=t-o},x=function(){var t,e,o,i,n;for(t=document.createElement("div"),n=["transform","webkitTransform","OTransform","MozTransform","msTransform"],o=0,i=n.length;i>o;o++)if(e=n[o],void 0!==t.style[e])return e}(),T=[],C=function(){var t,e,o;for(e=0,o=T.length;o>e;e++)t=T[e],t.position(!1);return f()},b=function(){var t;return null!=(t="undefined"!=typeof performance&&null!==performance&&"function"==typeof performance.now?performance.now():void 0)?t:+new Date},function(){var t,e,o,i,n,s,l,r,h;for(e=null,o=null,i=null,n=function(){if(null!=o&&o>16)return o=Math.min(o-16,250),void(i=setTimeout(n,250));if(!(null!=e&&b()-e<10))return null!=i&&(clearTimeout(i),i=null),e=b(),C(),o=b()-e},r=["resize","scroll","touchmove"],h=[],s=0,l=r.length;l>s;s++)t=r[s],h.push(window.addEventListener(t,n));return h}(),t={center:"center",left:"right",right:"left"},e={middle:"middle",top:"bottom",bottom:"top"},o={top:0,left:0,middle:"50%",center:"50%",bottom:"100%",right:"100%"},r=function(o,i){var n,s;return n=o.left,s=o.top,"auto"===n&&(n=t[i.left]),"auto"===s&&(s=e[i.top]),{left:n,top:s}},l=function(t){var e,i;return{left:null!=(e=o[t.left])?e:t.left,top:null!=(i=o[t.top])?i:t.top}},s=function(){var t,e,o,i,n,s,l;for(e=1<=arguments.length?M.call(arguments,0):[],o={top:0,left:0},n=0,s=e.length;s>n;n++)l=e[n],i=l.top,t=l.left,"string"==typeof i&&(i=parseFloat(i,10)),"string"==typeof t&&(t=parseFloat(t,10)),o.top+=i,o.left+=t;return o},v=function(t,e){return"string"==typeof t.left&&-1!==t.left.indexOf("%")&&(t.left=parseFloat(t.left,10)/100*e.width),"string"==typeof t.top&&-1!==t.top.indexOf("%")&&(t.top=parseFloat(t.top,10)/100*e.height),t},y=w=function(t){var e,o,i;return i=t.split(" "),o=i[0],e=i[1],{top:o,left:e}},S=function(){function t(t){this.position=P(this.position,this);var e,o,n,s,l;for(T.push(this),this.history=[],this.setOptions(t,!1),s=i.modules,o=0,n=s.length;n>o;o++)e=s[o],null!=(l=e.initialize)&&l.call(this);this.position()}return t.modules=[],t.prototype.getClass=function(t){var e,o;return(null!=(e=this.options.classes)?e[t]:void 0)?this.options.classes[t]:(null!=(o=this.options.classes)?o[t]:void 0)!==!1?this.options.classPrefix?""+this.options.classPrefix+"-"+t:t:""},t.prototype.setOptions=function(t,e){var o,i,s,l,r,h;for(this.options=t,null==e&&(e=!0),o={offset:"0 0",targetOffset:"0 0",targetAttachment:"auto auto",classPrefix:"tether"},this.options=a(o,this.options),r=this.options,this.element=r.element,this.target=r.target,this.targetModifier=r.targetModifier,"viewport"===this.target?(this.target=document.body,this.targetModifier="visible"):"scroll-handle"===this.target&&(this.target=document.body,this.targetModifier="scroll-handle"),h=["element","target"],s=0,l=h.length;l>s;s++){if(i=h[s],null==this[i])throw new Error("Tether Error: Both element and target must be defined");null!=this[i].jquery?this[i]=this[i][0]:"string"==typeof this[i]&&(this[i]=document.querySelector(this[i]))}if(n(this.element,this.getClass("element")),this.options.addTargetClasses!==!1&&n(this.target,this.getClass("target")),!this.options.attachment)throw new Error("Tether Error: You must provide an attachment");return this.targetAttachment=y(this.options.targetAttachment),this.attachment=y(this.options.attachment),this.offset=w(this.options.offset),this.targetOffset=w(this.options.targetOffset),null!=this.scrollParent&&this.disable(),"scroll-handle"===this.targetModifier?this.scrollParent=this.target:this.scrollParent=c(this.target),this.options.enabled!==!1?this.enable(e):void 0},t.prototype.getTargetBounds=function(){var t,e,o,i,n,s,l,r,h;if(null==this.targetModifier)return p(this.target);switch(this.targetModifier){case"visible":return this.target===document.body?{top:pageYOffset,left:pageXOffset,height:innerHeight,width:innerWidth}:(t=p(this.target),n={height:t.height,width:t.width,top:t.top,left:t.left},n.height=Math.min(n.height,t.height-(pageYOffset-t.top)),n.height=Math.min(n.height,t.height-(t.top+t.height-(pageYOffset+innerHeight))),n.height=Math.min(innerHeight,n.height),n.height-=2,n.width=Math.min(n.width,t.width-(pageXOffset-t.left)),n.width=Math.min(n.width,t.width-(t.left+t.width-(pageXOffset+innerWidth))),n.width=Math.min(innerWidth,n.width),n.width-=2,n.top<pageYOffset&&(n.top=pageYOffset),n.left<pageXOffset&&(n.left=pageXOffset),n);case"scroll-handle":return h=this.target,h===document.body?(h=document.documentElement,t={left:pageXOffset,top:pageYOffset,height:innerHeight,width:innerWidth}):t=p(h),r=getComputedStyle(h),o=h.scrollWidth>h.clientWidth||"scroll"===[r.overflow,r.overflowX]||this.target!==document.body,s=0,o&&(s=15),i=t.height-parseFloat(r.borderTopWidth)-parseFloat(r.borderBottomWidth)-s,n={width:15,height:.975*i*(i/h.scrollHeight),left:t.left+t.width-parseFloat(r.borderLeftWidth)-15},e=0,408>i&&this.target===document.body&&(e=-11e-5*Math.pow(i,2)-.00727*i+22.58),this.target!==document.body&&(n.height=Math.max(n.height,24)),l=this.target.scrollTop/(h.scrollHeight-i),n.top=l*(i-n.height-e)+t.top+parseFloat(r.borderTopWidth),this.target===document.body&&(n.height=Math.max(n.height,24)),n}},t.prototype.clearCache=function(){return this._cache={}},t.prototype.cache=function(t,e){return null==this._cache&&(this._cache={}),null==this._cache[t]&&(this._cache[t]=e.call(this)),this._cache[t]},t.prototype.enable=function(t){return null==t&&(t=!0),this.options.addTargetClasses!==!1&&n(this.target,this.getClass("enabled")),n(this.element,this.getClass("enabled")),this.enabled=!0,this.scrollParent!==document&&this.scrollParent.addEventListener("scroll",this.position),t?this.position():void 0},t.prototype.disable=function(){return O(this.target,this.getClass("enabled")),O(this.element,this.getClass("enabled")),this.enabled=!1,null!=this.scrollParent?this.scrollParent.removeEventListener("scroll",this.position):void 0},t.prototype.destroy=function(){var t,e,o,i,n;for(this.disable(),n=[],t=o=0,i=T.length;i>o;t=++o){if(e=T[t],e===this){T.splice(t,1);break}n.push(void 0)}return n},t.prototype.updateAttachClasses=function(t,e){var o,i,n,s,l,r,a,f,p,u=this;for(null==t&&(t=this.attachment),null==e&&(e=this.targetAttachment),s=["left","top","bottom","right","middle","center"],(null!=(p=this._addAttachClasses)?p.length:void 0)&&this._addAttachClasses.splice(0,this._addAttachClasses.length),o=null!=this._addAttachClasses?this._addAttachClasses:this._addAttachClasses=[],t.top&&o.push(""+this.getClass("element-attached")+"-"+t.top),t.left&&o.push(""+this.getClass("element-attached")+"-"+t.left),e.top&&o.push(""+this.getClass("target-attached")+"-"+e.top),e.left&&o.push(""+this.getClass("target-attached")+"-"+e.left),i=[],l=0,a=s.length;a>l;l++)n=s[l],i.push(""+this.getClass("element-attached")+"-"+n);for(r=0,f=s.length;f>r;r++)n=s[r],i.push(""+this.getClass("target-attached")+"-"+n);return h(function(){return null!=u._addAttachClasses?(A(u.element,u._addAttachClasses,i),u.options.addTargetClasses!==!1&&A(u.target,u._addAttachClasses,i),u._addAttachClasses=void 0):void 0})},t.prototype.position=function(t){var e,o,n,h,a,d,c,m,b,y,w,C,O,T,x,A,E,S,W,M,P,z,B,_,F,L,Y,H,X,N,j,R,U,q,k,D=this;if(null==t&&(t=!0),this.enabled){for(this.clearCache(),M=r(this.targetAttachment,this.attachment),this.updateAttachClasses(this.attachment,M),e=this.cache("element-bounds",function(){return p(D.element)}),F=e.width,n=e.height,0===F&&0===n&&null!=this.lastSize?(N=this.lastSize,F=N.width,n=N.height):this.lastSize={width:F,height:n},B=z=this.cache("target-bounds",function(){return D.getTargetBounds()}),b=v(l(this.attachment),{width:F,height:n}),P=v(l(M),B),a=v(this.offset,{width:F,height:n}),d=v(this.targetOffset,B),b=s(b,a),P=s(P,d),h=z.left+P.left-b.left,_=z.top+P.top-b.top,j=i.modules,L=0,H=j.length;H>L;L++){if(c=j[L],x=c.position.call(this,{left:h,top:_,targetAttachment:M,targetPos:z,attachment:this.attachment,elementPos:e,offset:b,targetOffset:P,manualOffset:a,manualTargetOffset:d,scrollbarSize:S}),x===!1)return!1;null!=x&&"object"==typeof x&&(_=x.top,h=x.left)}if(m={page:{top:_,left:h},viewport:{top:_-pageYOffset,bottom:pageYOffset-_-n+innerHeight,left:h-pageXOffset,right:pageXOffset-h-F+innerWidth}},document.body.scrollWidth>window.innerWidth&&(S=this.cache("scrollbar-size",g),m.viewport.bottom-=S.height),document.body.scrollHeight>window.innerHeight&&(S=this.cache("scrollbar-size",g),m.viewport.right-=S.width),(""!==(R=document.body.style.position)&&"static"!==R||""!==(U=document.body.parentElement.style.position)&&"static"!==U)&&(m.page.bottom=document.body.scrollHeight-_-n,m.page.right=document.body.scrollWidth-h-F),(null!=(q=this.options.optimizations)?q.moveElement:void 0)!==!1&&null==this.targetModifier){for(w=this.cache("target-offsetparent",function(){return u(D.target)}),T=this.cache("target-offsetparent-bounds",function(){return p(w)}),O=getComputedStyle(w),o=getComputedStyle(this.element),C=T,y={},k=["Top","Left","Bottom","Right"],Y=0,X=k.length;X>Y;Y++)W=k[Y],y[W.toLowerCase()]=parseFloat(O["border"+W+"Width"]);T.right=document.body.scrollWidth-T.left-C.width+y.right,T.bottom=document.body.scrollHeight-T.top-C.height+y.bottom,m.page.top>=T.top+y.top&&m.page.bottom>=T.bottom&&m.page.left>=T.left+y.left&&m.page.right>=T.right&&(E=w.scrollTop,A=w.scrollLeft,m.offset={top:m.page.top-T.top+E-y.top,left:m.page.left-T.left+A-y.left})}return this.move(m),this.history.unshift(m),this.history.length>3&&this.history.pop(),t&&f(),!0}},t.prototype.move=function(t){var e,o,i,n,s,l,r,f,p,d,g,c,m,b,v,y,w,C=this;if(null!=this.element.parentNode){f={};for(d in t){f[d]={};for(n in t[d]){for(i=!1,y=this.history,b=0,v=y.length;v>b;b++)if(r=y[b],!E(null!=(w=r[d])?w[n]:void 0,t[d][n])){i=!0;break}i||(f[d][n]=!0)}}e={top:"",left:"",right:"",bottom:""},p=function(t,o){var i,n,s;return(null!=(s=C.options.optimizations)?s.gpu:void 0)===!1?(t.top?e.top=""+o.top+"px":e.bottom=""+o.bottom+"px",t.left?e.left=""+o.left+"px":e.right=""+o.right+"px"):(t.top?(e.top=0,n=o.top):(e.bottom=0,n=-o.bottom),t.left?(e.left=0,i=o.left):(e.right=0,i=-o.right),e[x]="translateX("+Math.round(i)+"px) translateY("+Math.round(n)+"px)","msTransform"!==x?e[x]+=" translateZ(0)":void 0)},s=!1,(f.page.top||f.page.bottom)&&(f.page.left||f.page.right)?(e.position="absolute",p(f.page,t.page)):(f.viewport.top||f.viewport.bottom)&&(f.viewport.left||f.viewport.right)?(e.position="fixed",p(f.viewport,t.viewport)):null!=f.offset&&f.offset.top&&f.offset.left?(e.position="absolute",l=this.cache("target-offsetparent",function(){return u(C.target)}),u(this.element)!==l&&h(function(){return C.element.parentNode.removeChild(C.element),l.appendChild(C.element)}),p(f.offset,t.offset),s=!0):(e.position="absolute",p({top:!0,left:!0},t.page)),s||"BODY"===this.element.parentNode.tagName||(this.element.parentNode.removeChild(this.element),document.body.appendChild(this.element)),m={},c=!1;for(n in e)g=e[n],o=this.element.style[n],""===o||""===g||"top"!==n&&"left"!==n&&"bottom"!==n&&"right"!==n||(o=parseFloat(o),g=parseFloat(g)),o!==g&&(c=!0,m[n]=e[n]);return c?h(function(){return a(C.element.style,m)}):void 0}},t}(),i.position=C,this.Tether=a(S,i)}.call(this),function(){var t,e,o,i,n,s,l,r,h,a,f=[].indexOf||function(t){for(var e=0,o=this.length;o>e;e++)if(e in this&&this[e]===t)return e;return-1};a=this.Tether.Utils,l=a.getOuterSize,s=a.getBounds,r=a.getSize,i=a.extend,h=a.updateClasses,o=a.defer,e={left:"right",right:"left",top:"bottom",bottom:"top",middle:"middle"},t=["left","top","right","bottom"],n=function(e,o){var i,n,l,r,h,a,f;if("scrollParent"===o?o=e.scrollParent:"window"===o&&(o=[pageXOffset,pageYOffset,innerWidth+pageXOffset,innerHeight+pageYOffset]),o===document&&(o=o.documentElement),null!=o.nodeType)for(n=r=s(o),h=getComputedStyle(o),o=[n.left,n.top,r.width+n.left,r.height+n.top],i=a=0,f=t.length;f>a;i=++a)l=t[i],l=l[0].toUpperCase()+l.substr(1),"Top"===l||"Left"===l?o[i]+=parseFloat(h["border"+l+"Width"]):o[i]-=parseFloat(h["border"+l+"Width"]);return o},this.Tether.modules.push({position:function(e){var l,r,a,p,u,d,g,c,m,b,v,y,w,C,O,T,x,A,E,S,W,M,P,z,B,_,F,L,Y,H,X,N,j,R,U,q,k,D,Z,V,$,G,I,J,K,Q,tt,et=this;if(_=e.top,v=e.left,W=e.targetAttachment,!this.options.constraints)return!0;for(A=function(e){var o,i,n,s;for(et.removeClass(e),s=[],i=0,n=t.length;n>i;i++)o=t[i],s.push(et.removeClass(""+e+"-"+o));return s},V=this.cache("element-bounds",function(){return s(et.element)}),b=V.height,F=V.width,0===F&&0===b&&null!=this.lastSize&&($=this.lastSize,F=$.width,b=$.height),P=this.cache("target-bounds",function(){return et.getTargetBounds()}),M=P.height,z=P.width,S={},m={},r=[this.getClass("pinned"),this.getClass("out-of-bounds")],G=this.options.constraints,L=0,N=G.length;N>L;L++)c=G[L],c.outOfBoundsClass&&r.push(c.outOfBoundsClass),c.pinnedClass&&r.push(c.pinnedClass);for(Y=0,j=r.length;j>Y;Y++)for(g=r[Y],I=["left","top","right","bottom"],H=0,R=I.length;R>H;H++)E=I[H],r.push(""+g+"-"+E);for(l=[],S=i({},W),m=i({},this.attachment),J=this.options.constraints,X=0,U=J.length;U>X;X++){if(c=J[X],B=c.to,a=c.attachment,O=c.pin,null==a&&(a=""),f.call(a," ")>=0?(K=a.split(" "),d=K[0],u=K[1]):u=d=a,p=n(this,B),("target"===d||"both"===d)&&(_<p[1]&&"top"===S.top&&(_+=M,S.top="bottom"),_+b>p[3]&&"bottom"===S.top&&(_-=M,S.top="top")),"together"===d&&(_<p[1]&&"top"===S.top&&("bottom"===m.top?(_+=M,S.top="bottom",_+=b,m.top="top"):"top"===m.top&&(_+=M,S.top="bottom",_-=b,m.top="bottom")),_+b>p[3]&&"bottom"===S.top&&("top"===m.top?(_-=M,S.top="top",_-=b,m.top="bottom"):"bottom"===m.top&&(_-=M,S.top="top",_+=b,m.top="top")),"middle"===S.top&&(_+b>p[3]&&"top"===m.top?(_-=b,m.top="bottom"):_<p[1]&&"bottom"===m.top&&(_+=b,m.top="top"))),("target"===u||"both"===u)&&(v<p[0]&&"left"===S.left&&(v+=z,S.left="right"),v+F>p[2]&&"right"===S.left&&(v-=z,S.left="left")),"together"===u&&(v<p[0]&&"left"===S.left?"right"===m.left?(v+=z,S.left="right",v+=F,m.left="left"):"left"===m.left&&(v+=z,S.left="right",v-=F,m.left="right"):v+F>p[2]&&"right"===S.left?"left"===m.left?(v-=z,S.left="left",v-=F,m.left="right"):"right"===m.left&&(v-=z,S.left="left",v+=F,m.left="left"):"center"===S.left&&(v+F>p[2]&&"left"===m.left?(v-=F,m.left="right"):v<p[0]&&"right"===m.left&&(v+=F,m.left="left"))),("element"===d||"both"===d)&&(_<p[1]&&"bottom"===m.top&&(_+=b,m.top="top"),_+b>p[3]&&"top"===m.top&&(_-=b,m.top="bottom")),("element"===u||"both"===u)&&(v<p[0]&&"right"===m.left&&(v+=F,m.left="left"),v+F>p[2]&&"left"===m.left&&(v-=F,m.left="right")),"string"==typeof O?O=function(){var t,e,o,i;for(o=O.split(","),i=[],e=0,t=o.length;t>e;e++)C=o[e],i.push(C.trim());return i}():O===!0&&(O=["top","left","right","bottom"]),O||(O=[]),T=[],y=[],_<p[1]&&(f.call(O,"top")>=0?(_=p[1],T.push("top")):y.push("top")),_+b>p[3]&&(f.call(O,"bottom")>=0?(_=p[3]-b,T.push("bottom")):y.push("bottom")),v<p[0]&&(f.call(O,"left")>=0?(v=p[0],T.push("left")):y.push("left")),v+F>p[2]&&(f.call(O,"right")>=0?(v=p[2]-F,T.push("right")):y.push("right")),T.length)for(x=null!=(Q=this.options.pinnedClass)?Q:this.getClass("pinned"),l.push(x),D=0,q=T.length;q>D;D++)E=T[D],l.push(""+x+"-"+E);if(y.length)for(w=null!=(tt=this.options.outOfBoundsClass)?tt:this.getClass("out-of-bounds"),l.push(w),Z=0,k=y.length;k>Z;Z++)E=y[Z],l.push(""+w+"-"+E);(f.call(T,"left")>=0||f.call(T,"right")>=0)&&(m.left=S.left=!1),(f.call(T,"top")>=0||f.call(T,"bottom")>=0)&&(m.top=S.top=!1),(S.top!==W.top||S.left!==W.left||m.top!==this.attachment.top||m.left!==this.attachment.left)&&this.updateAttachClasses(m,S)}return o(function(){return et.options.addTargetClasses!==!1&&h(et.target,l,r),h(et.element,l,r)}),{top:_,left:v}}})}.call(this),function(){var t,e,o,i;i=this.Tether.Utils,e=i.getBounds,o=i.updateClasses,t=i.defer,this.Tether.modules.push({position:function(i){var n,s,l,r,h,a,f,p,u,d,g,c,m,b,v,y,w,C,O,T,x,A,E,S,W,M=this;if(g=i.top,a=i.left,x=this.cache("element-bounds",function(){return e(M.element)}),h=x.height,c=x.width,d=this.getTargetBounds(),r=g+h,f=a+c,n=[],g<=d.bottom&&r>=d.top)for(A=["left","right"],m=0,w=A.length;w>m;m++)p=A[m],((E=d[p])===a||E===f)&&n.push(p);if(a<=d.right&&f>=d.left)for(S=["top","bottom"],b=0,C=S.length;C>b;b++)p=S[b],((W=d[p])===g||W===r)&&n.push(p);for(l=[],s=[],u=["left","top","right","bottom"],l.push(this.getClass("abutted")),v=0,O=u.length;O>v;v++)p=u[v],l.push(""+this.getClass("abutted")+"-"+p);for(n.length&&s.push(this.getClass("abutted")),y=0,T=n.length;T>y;y++)p=n[y],s.push(""+this.getClass("abutted")+"-"+p);return t(function(){return M.options.addTargetClasses!==!1&&o(M.target,s,l),o(M.element,s,l)}),!0}})}.call(this),function(){this.Tether.modules.push({position:function(t){var e,o,i,n,s,l,r;return l=t.top,e=t.left,this.options.shift?(o=function(t){return"function"==typeof t?t.call(this,{top:l,left:e}):t},i=o(this.options.shift),"string"==typeof i?(i=i.split(" "),i[1]||(i[1]=i[0]),s=i[0],n=i[1],s=parseFloat(s,10),n=parseFloat(n,10)):(r=[i.top,i.left],s=r[0],n=r[1]),l+=s,e+=n,{top:l,left:e}):void 0}})}.call(this),this.Tether});
\ No newline at end of file diff --git a/js/tests/visual/alert.html b/js/tests/visual/alert.html index 978f9ac209..9e6a939e96 100644 --- a/js/tests/visual/alert.html +++ b/js/tests/visual/alert.html @@ -6,6 +6,13 @@ <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Alert</title> <link rel="stylesheet" href="../../../dist/css/bootstrap.min.css"> + + <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> + <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> + <!--[if lt IE 9]> + <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> + <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> + <![endif]--> </head> <body> @@ -34,8 +41,8 @@ <!-- JavaScript Includes --> <script src="../vendor/jquery.min.js"></script> -<script src="../../util.js"></script> -<script src="../../alert.js"></script> +<script src="../../dist/util.js"></script> +<script src="../../dist/alert.js"></script> </body> </html> diff --git a/js/tests/visual/button.html b/js/tests/visual/button.html index c3be921415..a6eed7e05a 100644 --- a/js/tests/visual/button.html +++ b/js/tests/visual/button.html @@ -6,6 +6,13 @@ <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Button</title> <link rel="stylesheet" href="../../../dist/css/bootstrap.min.css"> + + <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> + <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> + <!--[if lt IE 9]> + <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> + <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> + <![endif]--> </head> <body> @@ -45,8 +52,8 @@ <!-- JavaScript Includes --> <script src="../vendor/jquery.min.js"></script> -<script src="../../util.js"></script> -<script src="../../button.js"></script> +<script src="../../dist/util.js"></script> +<script src="../../dist/button.js"></script> <!-- JavaScript Test --> <script> diff --git a/js/tests/visual/carousel.html b/js/tests/visual/carousel.html index 45424a5d15..47dacaa6a0 100644 --- a/js/tests/visual/carousel.html +++ b/js/tests/visual/carousel.html @@ -6,6 +6,13 @@ <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Carousel</title> <link rel="stylesheet" href="../../../dist/css/bootstrap.min.css"> + + <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> + <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> + <!--[if lt IE 9]> + <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> + <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> + <![endif]--> </head> <body> @@ -44,8 +51,8 @@ <!-- JavaScript Includes --> <script src="../vendor/jquery.min.js"></script> -<script src="../../util.js"></script> -<script src="../../carousel.js"></script> +<script src="../../dist/util.js"></script> +<script src="../../dist/carousel.js"></script> </body> </html> diff --git a/js/tests/visual/collapse.html b/js/tests/visual/collapse.html index 42ac0aaa2b..2ccc787ecd 100644 --- a/js/tests/visual/collapse.html +++ b/js/tests/visual/collapse.html @@ -6,6 +6,13 @@ <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Collapse</title> <link rel="stylesheet" href="../../../dist/css/bootstrap.min.css"> + + <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> + <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> + <!--[if lt IE 9]> + <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> + <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> + <![endif]--> </head> <body> @@ -64,8 +71,8 @@ <!-- JavaScript Includes --> <script src="../vendor/jquery.min.js"></script> -<script src="../../util.js"></script> -<script src="../../collapse.js"></script> +<script src="../../dist/util.js"></script> +<script src="../../dist/collapse.js"></script> </body> </html> diff --git a/js/tests/visual/dropdown.html b/js/tests/visual/dropdown.html index 6cf18df8ee..a51267de84 100644 --- a/js/tests/visual/dropdown.html +++ b/js/tests/visual/dropdown.html @@ -6,6 +6,13 @@ <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Dropdown</title> <link rel="stylesheet" href="../../../dist/css/bootstrap.min.css"> + + <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> + <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> + <!--[if lt IE 9]> + <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> + <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> + <![endif]--> </head> <body> @@ -15,21 +22,15 @@ <h1>Dropdown <small>Bootstrap Visual Test</small></h1> </div> - <nav id="navbar-example" class="navbar navbar-default navbar-static" role="navigation"> + <nav id="navbar-example" class="navbar navbar-default navbar-static-top" role="navigation"> <div class="container-fluid"> - <div class="navbar-header"> - <button class="navbar-toggle collapsed" type="button" data-toggle="collapse" data-target=".bs-example-js-navbar-collapse"> - <span class="sr-only">Toggle navigation</span> - <span class="icon-bar"></span> - <span class="icon-bar"></span> - <span class="icon-bar"></span> - </button> - <a class="navbar-brand" href="#">Project Name</a> - </div> - <div class="collapse navbar-collapse bs-example-js-navbar-collapse"> - <ul class="nav navbar-nav"> - <li class="dropdown"> - <a id="drop1" href="#" role="button" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a> + <button class="navbar-toggler hidden-sm-up" type="button" data-toggle="collapse" data-target="#exCollapsingNavbar2"> + ☰ + </button> + <div class="collapse navbar-toggleable-xs" id="exCollapsingNavbar2"> + <ul class="nav navbar-nav pull-left"> + <li class="dropdown nav-item"> + <a id="drop1" href="#" role="button" class="dropdown-toggle nav-link" data-toggle="dropdown">Dropdown <b class="caret"></b></a> <ul class="dropdown-menu" role="menu" aria-labelledby="drop1"> <li role="presentation"><a role="menuitem" tabindex="-1" href="https://twitter.com/fat">Action</a></li> <li role="presentation"><a role="menuitem" tabindex="-1" href="https://twitter.com/fat">Another action</a></li> @@ -38,8 +39,8 @@ <li role="presentation"><a role="menuitem" tabindex="-1" href="https://twitter.com/fat">Separated link</a></li> </ul> </li> - <li class="dropdown"> - <a href="#" id="drop2" role="button" class="dropdown-toggle" data-toggle="dropdown">Dropdown 2 <b class="caret"></b></a> + <li class="dropdown nav-item"> + <a href="#" id="drop2" role="button" class="dropdown-toggle nav-link" data-toggle="dropdown">Dropdown 2 <b class="caret"></b></a> <ul class="dropdown-menu" role="menu" aria-labelledby="drop2"> <li role="presentation"><a role="menuitem" tabindex="-1" href="https://twitter.com/fat">Action</a></li> <li role="presentation"><a role="menuitem" tabindex="-1" href="https://twitter.com/fat">Another action</a></li> @@ -49,9 +50,9 @@ </ul> </li> </ul> - <ul class="nav navbar-nav navbar-right"> - <li id="fat-menu" class="dropdown"> - <a href="#" id="drop3" role="button" class="dropdown-toggle" data-toggle="dropdown">Dropdown 3 <b class="caret"></b></a> + <ul class="nav navbar-nav pull-right"> + <li id="fat-menu" class="dropdown nav-item"> + <a href="#" id="drop3" role="button" class="dropdown-toggle nav-link" data-toggle="dropdown">Dropdown 3 <b class="caret"></b></a> <ul class="dropdown-menu" role="menu" aria-labelledby="drop3"> <li role="presentation"><a role="menuitem" tabindex="-1" href="https://twitter.com/fat">Action</a></li> <li role="presentation"><a role="menuitem" tabindex="-1" href="https://twitter.com/fat">Another action</a></li> @@ -66,9 +67,9 @@ </nav> <ul class="nav nav-pills"> - <li class="active"><a href="#">Regular link</a></li> - <li class="dropdown"> - <a id="drop4" role="button" data-toggle="dropdown" href="#">Dropdown <b class="caret"></b></a> + <li class="active nav-item"><a href="#" class="nav-link">Regular link</a></li> + <li class="dropdown nav-item"> + <a id="drop4" class="nav-link" role="button" data-toggle="dropdown" href="#">Dropdown <b class="caret"></b></a> <ul id="menu1" class="dropdown-menu" role="menu" aria-labelledby="drop4"> <li role="presentation"><a role="menuitem" tabindex="-1" href="https://twitter.com/fat">Action</a></li> <li role="presentation"><a role="menuitem" tabindex="-1" href="https://twitter.com/fat">Another action</a></li> @@ -77,8 +78,8 @@ <li role="presentation"><a role="menuitem" tabindex="-1" href="https://twitter.com/fat">Separated link</a></li> </ul> </li> - <li class="dropdown"> - <a id="drop5" role="button" data-toggle="dropdown" href="#">Dropdown 2 <b class="caret"></b></a> + <li class="dropdown nav-item"> + <a id="drop5" class="nav-link" role="button" data-toggle="dropdown" href="#">Dropdown 2 <b class="caret"></b></a> <ul id="menu2" class="dropdown-menu" role="menu" aria-labelledby="drop5"> <li role="presentation"><a role="menuitem" tabindex="-1" href="https://twitter.com/fat">Action</a></li> <li role="presentation"><a role="menuitem" tabindex="-1" href="https://twitter.com/fat">Another action</a></li> @@ -93,9 +94,9 @@ <!-- JavaScript Includes --> <script src="../vendor/jquery.min.js"></script> -<script src="../../util.js"></script> -<script src="../../dropdown.js"></script> -<script src="../../collapse.js"></script> +<script src="../../dist/util.js"></script> +<script src="../../dist/dropdown.js"></script> +<script src="../../dist/collapse.js"></script> </body> </html> diff --git a/js/tests/visual/modal.html b/js/tests/visual/modal.html index 0d6e50ea2c..ab61a3b16c 100644 --- a/js/tests/visual/modal.html +++ b/js/tests/visual/modal.html @@ -6,16 +6,55 @@ <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Modal</title> <link rel="stylesheet" href="../../../dist/css/bootstrap.min.css"> + + <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> + <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> + <!--[if lt IE 9]> + <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> + <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> + <![endif]--> + + <style> + #tall { + height: 1500px; + width: 100px; + background-color: black; + color: white; + } + </style> </head> <body> +<nav class="navbar navbar-default navbar-static-top"> + <div class="container-fluid"> + <div class="navbar-header"> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> + <span class="sr-only">Toggle navigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <a class="navbar-brand" href="#">navbar-static-top</a> + </div> + <div id="navbar" class="navbar-collapse collapse"> + <ul class="nav navbar-nav"> + <li><a href="#about">About</a></li> + <li><a href="#contact">Contact</a></li> + </ul> + <ul class="nav navbar-nav navbar-right"> + <li><a href="#">This should not jump to the left when the modal is shown.</a></li> + </ul> + </div><!--/.nav-collapse --> + </div> +</nav> + <div class="container"> <div class="page-header"> <h1>Modal <small>Bootstrap Visual Test</small></h1> </div> - <div id="myModal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> + <div id="myModal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"> <div class="modal-dialog"> <div class="modal-content"> @@ -28,10 +67,43 @@ <p>Duis mollis, est non commodo luctus, nisi erat porttitor ligula.</p> <h4>Popover in a modal</h4> - <p>This <a href="#" role="button" class="btn btn-default js-popover" title="" data-content="And here's some amazing content. It's very engaging. right?" data-original-title="A Title">button</a> should trigger a popover on click.</p> + <p>This <a href="#" role="button" class="btn btn-default js-popover" title="A Title" data-content="And here's some amazing content. It's very engaging. right?" data-placement="left">button</a> should trigger a popover on click.</p> <h4>Tooltips in a modal</h4> - <p><a href="#" class="js-tooltip" title="" data-original-title="Tooltip">This link</a> and <a href="#" class="js-tooltip" title="" data-original-title="Tooltip">that link</a> should have tooltips on hover.</p> + <p><a href="#" class="js-tooltip" title="Tooltip">This link</a> and <a href="#" class="js-tooltip" title="Tooltip">that link</a> should have tooltips on hover.</p> + + <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true"> + <div class="panel panel-default"> + <div class="panel-heading" role="tab" id="headingOne"> + <h4 class="panel-title"> + <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseOne" aria-expanded="true" aria-controls="collapseOne"> + Collapsible Group Item #1 + </a> + </h4> + </div> + <div id="collapseOne" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="headingOne"> + <div class="panel-body"> + Lorem ipsum + </div> + </div> + </div> + <div class="panel panel-default"> + <div class="panel-heading" role="tab" id="headingTwo"> + <h4 class="panel-title"> + <a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo"> + Collapsible Group Item #2 + </a> + </h4> + </div> + <div id="collapseTwo" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingTwo"> + <div class="panel-body"> + Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. + Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. + Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. + </div> + </div> + </div> + </div> <hr> @@ -59,20 +131,33 @@ Launch demo modal </button> + <button id="tall-toggle" class="btn btn-default">Toggle tall <body> content</button> + <br><br> + <div id="tall" style="display: none;"> + Tall body content to force the page to have a scrollbar. + </div> + </div> <!-- JavaScript Includes --> <script src="../vendor/jquery.min.js"></script> -<script src="../../util.js"></script> -<script src="../../modal.js"></script> + +<script src="../../dist/util.js"></script> +<script src="../../dist/modal.js"></script> +<script src="../../dist/collapse.js"></script> + +<!-- <script src="../../transition.js"></script> <script src="../../tooltip.js"></script> -<script src="../../popover.js"></script> +<script src="../../popover.js"></script> --> <!-- JavaScript Test --> <script> $(function () { - $('.js-popover').popover() - $('.js-tooltip').tooltip() + // $('.js-popover').popover() + // $('.js-tooltip').tooltip() + // $('#tall-toggle').click(function () { + // $('#tall').toggle() + // }) }) </script> diff --git a/js/tests/visual/popover.html b/js/tests/visual/popover.html index 7446a67412..ac65572563 100644 --- a/js/tests/visual/popover.html +++ b/js/tests/visual/popover.html @@ -5,7 +5,14 @@ <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Popover</title> - <link rel="stylesheet" href="../../../dist/css/bootstrap.min.css"> + <link rel="stylesheet" href="../../../dist/css/bootstrap.css"> + + <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> + <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> + <!--[if lt IE 9]> + <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> + <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> + <![endif]--> </head> <body> @@ -32,9 +39,11 @@ <!-- JavaScript Includes --> <script src="../vendor/jquery.min.js"></script> -<script src="../../util.js"></script> -<script src="../../tooltip.js"></script> -<script src="../../popover.js"></script> +<script src="../vendor/tether.min.js"></script> +<script src="../../dist/util.js"></script> +<script src="../../dist/tooltip.js"></script> +<script src="../../dist/popover.js"></script> + <!-- JavaScript Test --> <script> diff --git a/js/tests/visual/scrollspy.html b/js/tests/visual/scrollspy.html index 13bc4383cc..9958f90c08 100644 --- a/js/tests/visual/scrollspy.html +++ b/js/tests/visual/scrollspy.html @@ -10,6 +10,13 @@ <style> body { padding-top: 70px; } </style> + + <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> + <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> + <!--[if lt IE 9]> + <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> + <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> + <![endif]--> </head> <body data-spy="scroll" data-target=".navbar" data-offset="70"> @@ -17,21 +24,12 @@ <nav class="navbar navbar-default navbar-fixed-top" role="navigation"> <div class="container-fluid"> - <div class="navbar-header"> - <button class="navbar-toggle collapsed" type="button" data-toggle="collapse" data-target=".js-navbar-scrollspy"> - <span class="sr-only">Toggle navigation</span> - <span class="icon-bar"></span> - <span class="icon-bar"></span> - <span class="icon-bar"></span> - </button> - <a class="navbar-brand" href="#">Project Name</a> - </div> - <div class="collapse navbar-collapse js-navbar-scrollspy"> + <div class="js-navbar-scrollspy"> <ul class="nav navbar-nav"> - <li class=""><a href="#fat">@fat</a></li> - <li class=""><a href="#mdo">@mdo</a></li> - <li class="dropdown"> - <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a> + <li class="nav-item active"><a class="nav-link" href="#fat">@fat</a></li> + <li class="nav-item"><a class="nav-link" href="#mdo">@mdo</a></li> + <li class="dropdown nav-item"> + <a href="#" class="dropdown-toggle nav-link" data-toggle="dropdown">Dropdown <b class="caret"></b></a> <ul class="dropdown-menu" role="menu"> <li class=""><a href="#one" tabindex="-1">one</a></li> <li><a href="#two" tabindex="-1">two</a></li> @@ -93,10 +91,10 @@ <!-- JavaScript Includes --> <script src="../vendor/jquery.min.js"></script> -<script src="../../util.js"></script> -<script src="../../scrollspy.js"></script> -<script src="../../dropdown.js"></script> -<script src="../../collapse.js"></script> +<script src="../../dist/util.js"></script> +<script src="../../dist/scrollspy.js"></script> +<script src="../../dist/dropdown.js"></script> +<script src="../../dist/collapse.js"></script> </body> </html> diff --git a/js/tests/visual/tab.html b/js/tests/visual/tab.html index 2480ce08ca..ff6685fede 100644 --- a/js/tests/visual/tab.html +++ b/js/tests/visual/tab.html @@ -16,6 +16,13 @@ margin-bottom: 15px; } </style> + + <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> + <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> + <!--[if lt IE 9]> + <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> + <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> + <![endif]--> </head> <body> @@ -28,10 +35,10 @@ <h4>Tabs without fade</h4> <ul id="myTab" class="nav nav-tabs"> - <li class="active"><a href="#home" data-toggle="tab">Home</a></li> - <li><a href="#profile" data-toggle="tab">Profile</a></li> - <li class="dropdown"> - <a href="#" id="myTabDrop1" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a> + <li class="active nav-item"><a href="#home" class="nav-link" data-toggle="tab">Home</a></li> + <li class="nav-item"><a href="#profile" data-toggle="tab" class="nav-link">Profile</a></li> + <li class="dropdown nav-item"> + <a href="#" id="myTabDrop1" class="dropdown-toggle nav-link" data-toggle="dropdown">Dropdown <b class="caret"></b></a> <ul class="dropdown-menu" role="menu" aria-labelledby="myTabDrop1"> <li><a href="#dropdown1" tabindex="-1" data-toggle="tab">@fat</a></li> <li><a href="#dropdown2" tabindex="-1" data-toggle="tab">@mdo</a></li> @@ -60,10 +67,10 @@ <h4>Tabs with fade</h4> <ul id="myTab1" class="nav nav-tabs"> - <li class="active"><a href="#home1" data-toggle="tab">Home</a></li> - <li><a href="#profile1" data-toggle="tab">Profile</a></li> - <li class="dropdown"> - <a href="#" id="myTabDrop2" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a> + <li class="active nav-item"><a class="nav-link" href="#home1" data-toggle="tab">Home</a></li> + <li class="nav-item"><a class="nav-link" href="#profile1" data-toggle="tab">Profile</a></li> + <li class="dropdown nav-item"> + <a href="#" id="myTabDrop2" class="dropdown-toggle nav-link" data-toggle="dropdown">Dropdown <b class="caret"></b></a> <ul class="dropdown-menu" role="menu" aria-labelledby="myTabDrop2"> <li><a href="#dropdown1-1" tabindex="-1" data-toggle="tab">@fat</a></li> <li><a href="#dropdown1-2" tabindex="-1" data-toggle="tab">@mdo</a></li> @@ -92,10 +99,10 @@ <h4>Tabs without fade (no initially active pane)</h4> <ul id="myTab2" class="nav nav-tabs"> - <li><a href="#home2" data-toggle="tab">Home</a></li> - <li><a href="#profile2" data-toggle="tab">Profile</a></li> - <li class="dropdown"> - <a href="#" id="myTabDrop3" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a> + <li class="nav-item"><a class="nav-link" href="#home2" data-toggle="tab">Home</a></li> + <li class="nav-item"><a class="nav-link" href="#profile2" data-toggle="tab">Profile</a></li> + <li class="dropdown nav-item"> + <a href="#" id="myTabDrop3" class="dropdown-toggle nav-link" data-toggle="dropdown">Dropdown <b class="caret"></b></a> <ul class="dropdown-menu" role="menu" aria-labelledby="myTabDrop3"> <li><a href="#dropdown2-1" tabindex="-1" data-toggle="tab">@fat</a></li> <li><a href="#dropdown2-2" tabindex="-1" data-toggle="tab">@mdo</a></li> @@ -124,10 +131,10 @@ <h4>Tabs with fade (no initially active pane)</h4> <ul id="myTab3" class="nav nav-tabs"> - <li><a href="#home3" data-toggle="tab">Home</a></li> - <li><a href="#profile3" data-toggle="tab">Profile</a></li> - <li class="dropdown"> - <a href="#" id="myTabDrop4" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a> + <li class="nav-item"><a class="nav-link" href="#home3" data-toggle="tab">Home</a></li> + <li class="nav-item"><a class="nav-link" href="#profile3" data-toggle="tab">Profile</a></li> + <li class="dropdown nav-item"> + <a href="#" id="myTabDrop4" class="dropdown-toggle nav-link" data-toggle="dropdown">Dropdown <b class="caret"></b></a> <ul class="dropdown-menu" role="menu" aria-labelledby="myTabDrop4"> <li><a href="#dropdown3-1" tabindex="-1" data-toggle="tab">@fat</a></li> <li><a href="#dropdown3-2" tabindex="-1" data-toggle="tab">@mdo</a></li> @@ -157,9 +164,9 @@ <!-- JavaScript Includes --> <script src="../vendor/jquery.min.js"></script> -<script src="../../util.js"></script> -<script src="../../tab.js"></script> -<script src="../../dropdown.js"></script> +<script src="../../dist/util.js"></script> +<script src="../../dist/tab.js"></script> +<script src="../../dist/dropdown.js"></script> </body> </html> diff --git a/js/tests/visual/tooltip.html b/js/tests/visual/tooltip.html index c61b088d0e..1946dff97f 100644 --- a/js/tests/visual/tooltip.html +++ b/js/tests/visual/tooltip.html @@ -5,7 +5,14 @@ <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Tooltip</title> - <link rel="stylesheet" href="../../../dist/css/bootstrap.min.css"> + <link rel="stylesheet" href="../../../dist/css/bootstrap.css"> + + <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> + <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> + <!--[if lt IE 9]> + <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> + <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> + <![endif]--> </head> <body> @@ -15,7 +22,7 @@ <h1>Tooltip <small>Bootstrap Visual Test</small></h1> </div> - <p class="muted" style="margin-bottom: 0;">Tight pants next level keffiyeh <a href="#" data-toggle="tooltip" title="" data-original-title="Default tooltip">you probably</a> haven't heard of them. Photo booth beard raw denim letterpress vegan messenger bag stumptown. Farm-to-table seitan, mcsweeney's fixie sustainable quinoa 8-bit american apparel <a href="#" data-toggle="tooltip" title="" data-original-title="Another tooltip">have a</a> terry richardson vinyl chambray. Beard stumptown, cardigans banh mi lomo thundercats. Tofu biodiesel williamsburg marfa, four loko mcsweeney's cleanse vegan chambray. A really ironic artisan <a href="#" data-toggle="tooltip" title="" data-original-title="Another one here too">whatever keytar</a>, scenester farm-to-table banksy Austin <a href="#" data-toggle="tooltip" title="" data-original-title="The last tip!">twitter handle</a> freegan cred raw denim single-origin coffee viral. + <p class="muted" style="margin-bottom: 0;">Tight pants next level keffiyeh <a href="#" data-toggle="tooltip" title="Default tooltip">you probably</a> haven't heard of them. Photo booth beard raw denim letterpress vegan messenger bag stumptown. Farm-to-table seitan, mcsweeney's fixie sustainable quinoa 8-bit american apparel <a href="#" data-toggle="tooltip" title="Another tooltip">have a</a> terry richardson vinyl chambray. Beard stumptown, cardigans banh mi lomo thundercats. Tofu biodiesel williamsburg marfa, four loko mcsweeney's cleanse vegan chambray. A really ironic artisan <a href="#" data-toggle="tooltip" title="Another one here too">whatever keytar</a>, scenester farm-to-table banksy Austin <a href="#" data-toggle="tooltip" title="The last tip!">twitter handle</a> freegan cred raw denim single-origin coffee viral. </p> <hr> <p> @@ -29,8 +36,9 @@ <!-- JavaScript Includes --> <script src="../vendor/jquery.min.js"></script> -<script src="../../util.js"></script> -<script src="../../tooltip.js"></script> +<script src="../vendor/tether.min.js"></script> +<script src="../../dist/util.js"></script> +<script src="../../dist/tooltip.js"></script> <!-- JavaScript Test --> <script> diff --git a/js/tooltip.js b/js/tooltip.js deleted file mode 100644 index c787c6820f..0000000000 --- a/js/tooltip.js +++ /dev/null @@ -1,876 +0,0 @@ -/** ======================================================================= - * Bootstrap: tooltip.js v4.0.0 - * http://getbootstrap.com/javascript/#tooltip - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== - * @fileoverview - Bootstrap's tooltip plugin. - * (Inspired by jQuery.tipsy by Jason Frame) - * - * Public Methods & Properties: - * - * + $.tooltip - * + $.tooltip.noConflict - * + $.tooltip.Constructor - * + $.tooltip.Constructor.VERSION - * + $.tooltip.Constructor.Defaults - * + $.tooltip.Constructor.Defaults.container - * + $.tooltip.Constructor.Defaults.animation - * + $.tooltip.Constructor.Defaults.placement - * + $.tooltip.Constructor.Defaults.selector - * + $.tooltip.Constructor.Defaults.template - * + $.tooltip.Constructor.Defaults.trigger - * + $.tooltip.Constructor.Defaults.title - * + $.tooltip.Constructor.Defaults.delay - * + $.tooltip.Constructor.Defaults.html - * + $.tooltip.Constructor.Defaults.viewport - * + $.tooltip.Constructor.Defaults.viewport.selector - * + $.tooltip.Constructor.Defaults.viewport.padding - * + $.tooltip.Constructor.prototype.enable - * + $.tooltip.Constructor.prototype.disable - * + $.tooltip.Constructor.prototype.destroy - * + $.tooltip.Constructor.prototype.toggleEnabled - * + $.tooltip.Constructor.prototype.toggle - * + $.tooltip.Constructor.prototype.show - * + $.tooltip.Constructor.prototype.hide - * - * ======================================================================== - */ - -'use strict'; - - -/** - * Our tooltip class. - * @param {Element!} element - * @param {Object=} opt_config - * @constructor - */ -var Tooltip = function (element, opt_config) { - - /** @private {boolean} */ - this._isEnabled = true - - /** @private {number} */ - this._timeout = 0 - - /** @private {string} */ - this._hoverState = '' - - /** @protected {Element} */ - this.element = element - - /** @protected {Object} */ - this.config = this._getConfig(opt_config) - - /** @protected {Element} */ - this.tip = null - - /** @protected {Element} */ - this.arrow = null - - if (this.config['viewport']) { - - /** @private {Element} */ - this._viewport = $(this.config['viewport']['selector'] || this.config['viewport'])[0] - - } - - this._setListeners() -} - - -/** - * @const - * @type {string} - */ -Tooltip['VERSION'] = '4.0.0' - - -/** - * @const - * @type {Object} - */ -Tooltip['Defaults'] = { - 'container' : false, - 'animation' : true, - 'placement' : 'top', - 'selector' : false, - 'template' : '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>', - 'trigger' : 'hover focus', - 'title' : '', - 'delay' : 0, - 'html' : false, - 'viewport': { - 'selector': 'body', - 'padding' : 0 - } -} - - -/** - * @const - * @enum {string} - * @protected - */ -Tooltip.Direction = { - TOP: 'top', - LEFT: 'left', - RIGHT: 'right', - BOTTOM: 'bottom' -} - - -/** - * @const - * @type {string} - * @private - */ -Tooltip._NAME = 'tooltip' - - -/** - * @const - * @type {string} - * @private - */ -Tooltip._DATA_KEY = 'bs.tooltip' - - -/** - * @const - * @type {number} - * @private - */ -Tooltip._TRANSITION_DURATION = 150 - - -/** - * @const - * @enum {string} - * @private - */ -Tooltip._HoverState = { - IN: 'in', - OUT: 'out' -} - - -/** - * @const - * @enum {string} - * @private - */ -Tooltip._Event = { - HIDE : 'hide.bs.tooltip', - HIDDEN : 'hidden.bs.tooltip', - SHOW : 'show.bs.tooltip', - SHOWN : 'shown.bs.tooltip' -} - - -/** - * @const - * @enum {string} - * @private - */ -Tooltip._ClassName = { - FADE : 'fade', - IN : 'in' -} - - -/** - * @const - * @enum {string} - * @private - */ -Tooltip._Selector = { - TOOLTIP : '.tooltip', - TOOLTIP_INNER : '.tooltip-inner', - TOOLTIP_ARROW : '.tooltip-arrow' -} - - -/** - * @const - * @type {Function} - * @private - */ -Tooltip._JQUERY_NO_CONFLICT = $.fn[Tooltip._NAME] - - -/** - * @param {Object=} opt_config - * @this {jQuery} - * @return {jQuery} - * @private - */ -Tooltip._jQueryInterface = function (opt_config) { - return this.each(function () { - var data = $(this).data(Tooltip._DATA_KEY) - var config = typeof opt_config == 'object' ? opt_config : null - - if (!data && opt_config == 'destroy') { - return - } - - if (!data) { - data = new Tooltip(this, config) - $(this).data(Tooltip._DATA_KEY, data) - } - - if (typeof opt_config === 'string') { - data[opt_config]() - } - }) -} - - -/** - * Enable tooltip - */ -Tooltip.prototype['enable'] = function () { - this._isEnabled = true -} - - -/** - * Disable tooltip - */ -Tooltip.prototype['disable'] = function () { - this._isEnabled = false -} - - -/** - * Toggle the tooltip enable state - */ -Tooltip.prototype['toggleEnabled'] = function () { - this._isEnabled = !this._isEnabled -} - -/** - * Toggle the tooltips display - * @param {Event} opt_event - */ -Tooltip.prototype['toggle'] = function (opt_event) { - var context = this - var dataKey = this.getDataKey() - - if (opt_event) { - context = $(opt_event.currentTarget).data(dataKey) - - if (!context) { - context = new this.constructor(opt_event.currentTarget, this._getDelegateConfig()) - $(opt_event.currentTarget).data(dataKey, context) - } - } - - $(context.getTipElement()).hasClass(Tooltip._ClassName.IN) ? - context._leave(null, context) : - context._enter(null, context) -} - - -/** - * Remove tooltip functionality - */ -Tooltip.prototype['destroy'] = function () { - clearTimeout(this._timeout) - this['hide'](function () { - $(this.element) - .off(Tooltip._Selector.TOOLTIP) - .removeData(this.getDataKey()) - }.bind(this)) -} - - -/** - * Show the tooltip - * todo (fat): ~fuck~ this is a big function - refactor out all of positioning logic - * and replace with external lib - */ -Tooltip.prototype['show'] = function () { - // jQuery's :hidden gives false positives for SVG elements - // See https://github.com/jquery/jquery/pull/939 - // Since this hiddenness check is just a nicety anyway, simply assume SVGs are always visible. - var isHidden = $(this.element).is(':hidden') && !(window.SVGElement && this.element instanceof window.SVGElement) - if (isHidden) { - throw new Error('Can\'t show a tooltip/popover on a hidden element') - } - - var showEvent = $.Event(this.getEventObject().SHOW) - - if (this.isWithContent() && this._isEnabled) { - $(this.element).trigger(showEvent) - - var isInTheDom = $.contains(this.element.ownerDocument.documentElement, this.element) - - if (showEvent.isDefaultPrevented() || !isInTheDom) { - return - } - - var tip = this.getTipElement() - var tipId = Bootstrap.getUID(this.getName()) - - tip.setAttribute('id', tipId) - this.element.setAttribute('aria-describedby', tipId) - - this.setContent() - - if (this.config['animation']) { - $(tip).addClass(Tooltip._ClassName.FADE) - } - - var placement = typeof this.config['placement'] == 'function' ? - this.config['placement'].call(this, tip, this.element) : - this.config['placement'] - - var autoToken = /\s?auto?\s?/i - var isWithAutoPlacement = autoToken.test(placement) - - if (isWithAutoPlacement) { - placement = placement.replace(autoToken, '') || Tooltip.Direction.TOP - } - - if (tip.parentNode && tip.parentNode.nodeType == Node.ELEMENT_NODE) { - tip.parentNode.removeChild(tip) - } - - tip.style.top = 0 - tip.style.left = 0 - tip.style.display = 'block' - - $(tip).addClass(Tooltip._NAME + '-' + placement) - - $(tip).data(this.getDataKey(), this) - - if (this.config['container']) { - $(this.config['container'])[0].appendChild(tip) - } else { - this.element.parentNode.insertBefore(tip, this.element.nextSibling) - } - - var position = this._getPosition() - var actualWidth = tip.offsetWidth - var actualHeight = tip.offsetHeight - - var calculatedPlacement = this._getCalculatedAutoPlacement(isWithAutoPlacement, placement, position, actualWidth, actualHeight) - var calculatedOffset = this._getCalculatedOffset(calculatedPlacement, position, actualWidth, actualHeight) - - this._applyCalculatedPlacement(calculatedOffset, calculatedPlacement) - - var complete = function () { - var prevHoverState = this.hoverState - $(this.element).trigger(this.getEventObject().SHOWN) - this.hoverState = null - - if (prevHoverState == 'out') this._leave(null, this) - }.bind(this) - - Bootstrap.transition && $(this._tip).hasClass(Tooltip._ClassName.FADE) ? - $(this._tip) - .one(Bootstrap.TRANSITION_END, complete) - .emulateTransitionEnd(Tooltip._TRANSITION_DURATION) : - complete() - } -} - - -/** - * Hide the tooltip breh - */ -Tooltip.prototype['hide'] = function (callback) { - var tip = this.getTipElement() - var hideEvent = $.Event(this.getEventObject().HIDE) - - var complete = function () { - if (this._hoverState != Tooltip._HoverState.IN) { - tip.parentNode.removeChild(tip) - } - - this.element.removeAttribute('aria-describedby') - $(this.element).trigger(this.getEventObject().HIDDEN) - - if (callback) { - callback() - } - }.bind(this) - - $(this.element).trigger(hideEvent) - - if (hideEvent.isDefaultPrevented()) return - - $(tip).removeClass(Tooltip._ClassName.IN) - - if (Bootstrap.transition && $(this._tip).hasClass(Tooltip._ClassName.FADE)) { - $(tip) - .one(Bootstrap.TRANSITION_END, complete) - .emulateTransitionEnd(Tooltip._TRANSITION_DURATION) - } else { - complete() - } - - this._hoverState = '' -} - - -/** - * @return {string} - */ -Tooltip.prototype['getHoverState'] = function (callback) { - return this._hoverState -} - - -/** - * @return {string} - * @protected - */ -Tooltip.prototype.getName = function () { - return Tooltip._NAME -} - - -/** - * @return {string} - * @protected - */ -Tooltip.prototype.getDataKey = function () { - return Tooltip._DATA_KEY -} - - -/** - * @return {Object} - * @protected - */ -Tooltip.prototype.getEventObject = function () { - return Tooltip._Event -} - - -/** - * @return {string} - * @protected - */ -Tooltip.prototype.getTitle = function () { - var title = this.element.getAttribute('data-original-title') - - if (!title) { - title = typeof this.config['title'] === 'function' ? - this.config['title'].call(this.element) : - this.config['title'] - } - - return /** @type {string} */ (title) -} - - -/** - * @return {Element} - * @protected - */ -Tooltip.prototype.getTipElement = function () { - return (this._tip = this._tip || $(this.config['template'])[0]) -} - - -/** - * @return {Element} - * @protected - */ -Tooltip.prototype.getArrowElement = function () { - return (this.arrow = this.arrow || $(this.getTipElement()).find(Tooltip._Selector.TOOLTIP_ARROW)[0]) -} - - -/** - * @return {boolean} - * @protected - */ -Tooltip.prototype.isWithContent = function () { - return !!this.getTitle() -} - - -/** - * @protected - */ -Tooltip.prototype.setContent = function () { - var tip = this.getTipElement() - var title = this.getTitle() - - $(tip).find(Tooltip._Selector.TOOLTIP_INNER)[0][this.config['html'] ? 'innerHTML' : 'innerText'] = title - - $(tip) - .removeClass(Tooltip._ClassName.FADE) - .removeClass(Tooltip._ClassName.IN) - - for (var direction in Tooltip.Direction) { - $(tip).removeClass(Tooltip._NAME + '-' + direction) - } -} - - -/** - * @private - */ -Tooltip.prototype._setListeners = function () { - var triggers = this.config['trigger'].split(' ') - - triggers.forEach(function (trigger) { - if (trigger == 'click') { - $(this.element).on('click.bs.tooltip', this.config['selector'], this['toggle'].bind(this)) - - } else if (trigger != 'manual') { - var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin' - var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout' - - $(this.element) - .on(eventIn + '.bs.tooltip', this.config['selector'], this._enter.bind(this)) - .on(eventOut + '.bs.tooltip', this.config['selector'], this._leave.bind(this)) - } - }.bind(this)) - - if (this.config['selector']) { - this.config = $.extend({}, this.config, { 'trigger': 'manual', 'selector': '' }) - } else { - this._fixTitle() - } -} - - -/** - * @param {Object=} opt_config - * @return {Object} - * @private - */ -Tooltip.prototype._getConfig = function (opt_config) { - var config = $.extend({}, this.constructor['Defaults'], $(this.element).data(), opt_config) - - if (config['delay'] && typeof config['delay'] == 'number') { - config['delay'] = { - 'show': config['delay'], - 'hide': config['delay'] - } - } - - return config -} - - -/** - * @return {Object} - * @private - */ -Tooltip.prototype._getDelegateConfig = function () { - var config = {} - var defaults = this.constructor['Defaults'] - - if (this.config) { - for (var key in this.config) { - var value = this.config[key] - if (defaults[key] != value) config[key] = value - } - } - - return config -} - - - -/** - * @param {boolean} isWithAutoPlacement - * @param {string} placement - * @param {Object} position - * @param {number} actualWidth - * @param {number} actualHeight - * @return {string} - * @private - */ -Tooltip.prototype._getCalculatedAutoPlacement = function (isWithAutoPlacement, placement, position, actualWidth, actualHeight) { - if (isWithAutoPlacement) { - var originalPlacement = placement - var container = this.config['container'] ? $(this.config['container'])[0] : this.element.parentNode - var containerDim = this._getPosition(/** @type {Element} */ (container)) - - placement = placement == Tooltip.Direction.BOTTOM && position.bottom + actualHeight > containerDim.bottom ? Tooltip.Direction.TOP : - placement == Tooltip.Direction.TOP && position.top - actualHeight < containerDim.top ? Tooltip.Direction.BOTTOM : - placement == Tooltip.Direction.RIGHT && position.right + actualWidth > containerDim.width ? Tooltip.Direction.LEFT : - placement == Tooltip.Direction.LEFT && position.left - actualWidth < containerDim.left ? Tooltip.Direction.RIGHT : - placement - - $(this._tip) - .removeClass(Tooltip._NAME + '-' + originalPlacement) - .addClass(Tooltip._NAME + '-' + placement) - } - - return placement -} - - -/** - * @param {string} placement - * @param {Object} position - * @param {number} actualWidth - * @param {number} actualHeight - * @return {{left: number, top: number}} - * @private - */ -Tooltip.prototype._getCalculatedOffset = function (placement, position, actualWidth, actualHeight) { - return placement == Tooltip.Direction.BOTTOM ? { top: position.top + position.height, left: position.left + position.width / 2 - actualWidth / 2 } : - placement == Tooltip.Direction.TOP ? { top: position.top - actualHeight, left: position.left + position.width / 2 - actualWidth / 2 } : - placement == Tooltip.Direction.LEFT ? { top: position.top + position.height / 2 - actualHeight / 2, left: position.left - actualWidth } : - /* placement == Tooltip.Direction.RIGHT */ { top: position.top + position.height / 2 - actualHeight / 2, left: position.left + position.width } -} - - -/** - * @param {string} placement - * @param {Object} position - * @param {number} actualWidth - * @param {number} actualHeight - * @return {Object} - * @private - */ -Tooltip.prototype._getViewportAdjustedDelta = function (placement, position, actualWidth, actualHeight) { - var delta = { top: 0, left: 0 } - - if (!this._viewport) { - return delta - } - - var viewportPadding = this.config['viewport'] && this.config['viewport']['padding'] || 0 - var viewportDimensions = this._getPosition(this._viewport) - - if (placement === Tooltip.Direction.RIGHT || placement === Tooltip.Direction.LEFT) { - var topEdgeOffset = position.top - viewportPadding - viewportDimensions.scroll - var bottomEdgeOffset = position.top + viewportPadding - viewportDimensions.scroll + actualHeight - - if (topEdgeOffset < viewportDimensions.top) { // top overflow - delta.top = viewportDimensions.top - topEdgeOffset - - } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow - delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset - } - - } else { - var leftEdgeOffset = position.left - viewportPadding - var rightEdgeOffset = position.left + viewportPadding + actualWidth - - if (leftEdgeOffset < viewportDimensions.left) { // left overflow - delta.left = viewportDimensions.left - leftEdgeOffset - - } else if (rightEdgeOffset > viewportDimensions.width) { // right overflow - delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset - } - } - - return delta -} - - -/** - * @param {Element=} opt_element - * @return {Object} - * @private - */ -Tooltip.prototype._getPosition = function (opt_element) { - var element = opt_element || this.element - var isBody = element.tagName == 'BODY' - var rect = element.getBoundingClientRect() - var offset = isBody ? { top: 0, left: 0 } : $(element).offset() - var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : this.element.scrollTop } - var outerDims = isBody ? { width: window.innerWidth, height: window.innerHeight } : null - - return $.extend({}, rect, scroll, outerDims, offset) -} - - -/** - * @param {{left: number, top: number}} offset - * @param {string} placement - * @private - */ -Tooltip.prototype._applyCalculatedPlacement = function (offset, placement) { - var tip = this.getTipElement() - var width = tip.offsetWidth - var height = tip.offsetHeight - - // manually read margins because getBoundingClientRect includes difference - var marginTop = parseInt(tip.style.marginTop, 10) - var marginLeft = parseInt(tip.style.marginLeft, 10) - - // we must check for NaN for ie 8/9 - if (isNaN(marginTop)) { - marginTop = 0 - } - if (isNaN(marginLeft)) { - marginLeft = 0 - } - - offset.top = offset.top + marginTop - offset.left = offset.left + marginLeft - - // $.fn.offset doesn't round pixel values - // so we use setOffset directly with our own function B-0 - $.offset.setOffset(tip, $.extend({ - using: function (props) { - tip.style.top = Math.round(props.top) + 'px' - tip.style.left = Math.round(props.left) + 'px' - } - }, offset), 0) - - $(tip).addClass(Tooltip._ClassName.IN) - - // check to see if placing tip in new offset caused the tip to resize itself - var actualWidth = tip.offsetWidth - var actualHeight = tip.offsetHeight - - if (placement == Tooltip.Direction.TOP && actualHeight != height) { - offset.top = offset.top + height - actualHeight - } - - var delta = this._getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight) - - if (delta.left) { - offset.left += delta.left - } else { - offset.top += delta.top - } - - var isVertical = placement === Tooltip.Direction.TOP || placement === Tooltip.Direction.BOTTOM - var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight - var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight' - - $(tip).offset(offset) - - this._replaceArrow(arrowDelta, tip[arrowOffsetPosition], isVertical) -} - - -/** - * @param {number} delta - * @param {number} dimension - * @param {boolean} isHorizontal - * @private - */ -Tooltip.prototype._replaceArrow = function (delta, dimension, isHorizontal) { - var arrow = this.getArrowElement() - - arrow.style[isHorizontal ? 'left' : 'top'] = 50 * (1 - delta / dimension) + '%' - arrow.style[isHorizontal ? 'top' : 'left'] = '' -} - - - -/** - * @private - */ -Tooltip.prototype._fixTitle = function () { - if (this.element.getAttribute('title') || typeof this.element.getAttribute('data-original-title') != 'string') { - this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '') - this.element.setAttribute('title', '') - } -} - - -/** - * @param {Event=} opt_event - * @param {Object=} opt_context - * @private - */ -Tooltip.prototype._enter = function (opt_event, opt_context) { - var dataKey = this.getDataKey() - var context = opt_context || $(opt_event.currentTarget).data(dataKey) - - if (context && context._tip && context._tip.offsetWidth) { - context._hoverState = Tooltip._HoverState.IN - return - } - - if (!context) { - context = new this.constructor(opt_event.currentTarget, this._getDelegateConfig()) - $(opt_event.currentTarget).data(dataKey, context) - } - - clearTimeout(context._timeout) - - context._hoverState = Tooltip._HoverState.IN - - if (!context.config['delay'] || !context.config['delay']['show']) { - context['show']() - return - } - - context._timeout = setTimeout(function () { - if (context._hoverState == Tooltip._HoverState.IN) { - context['show']() - } - }, context.config['delay']['show']) -} - - -/** - * @param {Event=} opt_event - * @param {Object=} opt_context - * @private - */ -Tooltip.prototype._leave = function (opt_event, opt_context) { - var dataKey = this.getDataKey() - var context = opt_context || $(opt_event.currentTarget).data(dataKey) - - if (!context) { - context = new this.constructor(opt_event.currentTarget, this._getDelegateConfig()) - $(opt_event.currentTarget).data(dataKey, context) - } - - clearTimeout(context._timeout) - - context._hoverState = Tooltip._HoverState.OUT - - if (!context.config['delay'] || !context.config['delay']['hide']) { - context['hide']() - return - } - - context._timeout = setTimeout(function () { - if (context._hoverState == Tooltip._HoverState.OUT) { - context['hide']() - } - }, context.config['delay']['hide']) -} - - - -/** - * ------------------------------------------------------------------------ - * jQuery Interface + noConflict implementaiton - * ------------------------------------------------------------------------ - */ - -/** - * @const - * @type {Function} - */ -$.fn[Tooltip._NAME] = Tooltip._jQueryInterface - - -/** - * @const - * @type {Function} - */ -$.fn[Tooltip._NAME]['Constructor'] = Tooltip - - -/** - * @const - * @type {Function} - */ -$.fn[Tooltip._NAME]['noConflict'] = function () { - $.fn[Tooltip._NAME] = Tooltip._JQUERY_NO_CONFLICT - return this -} diff --git a/js/transition.js b/js/transition.js deleted file mode 100644 index f23e6bdfe4..0000000000 --- a/js/transition.js +++ /dev/null @@ -1,59 +0,0 @@ -/* ======================================================================== - * Bootstrap: transition.js v3.3.4 - * http://getbootstrap.com/javascript/#transitions - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) - // ============================================================ - - function transitionEnd() { - var el = document.createElement('bootstrap') - - var transEndEventNames = { - WebkitTransition : 'webkitTransitionEnd', - MozTransition : 'transitionend', - OTransition : 'oTransitionEnd otransitionend', - transition : 'transitionend' - } - - for (var name in transEndEventNames) { - if (el.style[name] !== undefined) { - return { end: transEndEventNames[name] } - } - } - - return false // explicit for ie8 ( ._.) - } - - // http://blog.alexmaccaw.com/css-transitions - $.fn.emulateTransitionEnd = function (duration) { - var called = false - var $el = this - $(this).one('bsTransitionEnd', function () { called = true }) - var callback = function () { if (!called) $($el).trigger($.support.transition.end) } - setTimeout(callback, duration) - return this - } - - $(function () { - $.support.transition = transitionEnd() - - if (!$.support.transition) return - - $.event.special.bsTransitionEnd = { - bindType: $.support.transition.end, - delegateType: $.support.transition.end, - handle: function (e) { - if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) - } - } - }) - -}(jQuery); diff --git a/js/util.js b/js/util.js deleted file mode 100644 index 294a5a9601..0000000000 --- a/js/util.js +++ /dev/null @@ -1,165 +0,0 @@ -/** ======================================================================= - * Bootstrap: util.js v4.0.0 - * http://getbootstrap.com/javascript/#alerts - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== - * @fileoverview - Bootstrap's private util helper. Adds private util - * helpers for things like accesibility and transitions. These methods are - * shared across all bootstrap plugins. - * ======================================================================== - */ - -'use strict'; - - -/** - * @type {Object} - */ -var Bootstrap = {} - - -/** - * @const - * @type {string} - */ -Bootstrap.TRANSITION_END = 'bsTransitionEnd' - - -/** - * @const - * @type {Object} - */ -Bootstrap.TransitionEndEvent = { - 'WebkitTransition' : 'webkitTransitionEnd', - 'MozTransition' : 'transitionend', - 'OTransition' : 'oTransitionEnd otransitionend', - 'transition' : 'transitionend' -} - - -/** - * @param {Function} childConstructor - * @param {Function} parentConstructor - */ -Bootstrap.inherits = function(childConstructor, parentConstructor) { - /** @constructor */ - function tempConstructor() {} - tempConstructor.prototype = parentConstructor.prototype - childConstructor.prototype = new tempConstructor() - /** @override */ - childConstructor.prototype.constructor = childConstructor -} - - -/** - * @param {Element} element - * @return {string|null} - */ -Bootstrap.getSelectorFromElement = function (element) { - var selector = element.getAttribute('data-target') - - if (!selector) { - selector = element.getAttribute('href') || '' - selector = /^#[a-z]/i.test(selector) ? selector : null - } - - return selector -} - - -/** - * @param {string} prefix - * @return {string} - */ -Bootstrap.getUID = function (prefix) { - do prefix += ~~(Math.random() * 1000000) - while (document.getElementById(prefix)) - return prefix -} - - -/** - * @return {Object} - */ -Bootstrap.getSpecialTransitionEndEvent = function () { - return { - bindType: Bootstrap.transition.end, - delegateType: Bootstrap.transition.end, - handle: /** @param {jQuery.Event} event */ (function (event) { - if ($(event.target).is(this)) { - return event.handleObj.handler.apply(this, arguments) - } - }) - } -} - - -/** - * @param {Element} element - */ -Bootstrap.reflow = function (element) { - new Function('bs',"return bs")(element.offsetHeight) -} - - -/** - * @return {Object|boolean} - */ -Bootstrap.transitionEndTest = function () { - if (window['QUnit']) { - return false - } - - var el = document.createElement('bootstrap') - for (var name in Bootstrap.TransitionEndEvent) { - if (el.style[name] !== undefined) { - return { end: Bootstrap.TransitionEndEvent[name] } - } - } - return false -} - - -/** - * @param {number} duration - * @this {Element} - * @return {Object} - */ -Bootstrap.transitionEndEmulator = function (duration) { - var called = false - - $(this).one(Bootstrap.TRANSITION_END, function () { - called = true - }) - - var callback = function () { - if (!called) { - $(this).trigger(Bootstrap.transition.end) - } - }.bind(this) - - setTimeout(callback, duration) - - return this -} - - -/** - * ------------------------------------------------------------------------ - * jQuery Interface - * ------------------------------------------------------------------------ - */ - -$.fn.emulateTransitionEnd = Bootstrap.transitionEndEmulator - -$(function () { - Bootstrap.transition = Bootstrap.transitionEndTest() - - if (!Bootstrap.transition) { - return - } - - $.event.special[Bootstrap.TRANSITION_END] = Bootstrap.getSpecialTransitionEndEvent() -}) diff --git a/package.json b/package.json index 23b59c81ac..c19bd8d89e 100644 --- a/package.json +++ b/package.json @@ -35,8 +35,8 @@ "glob": "~5.0.3", "grunt": "~0.4.5", "grunt-autoprefixer": "~2.2.0", + "grunt-babel": "^5.0.0", "grunt-banner": "~0.3.1", - "grunt-closure-tools": "^0.9.7", "grunt-contrib-clean": "~0.6.0", "grunt-contrib-compress": "~0.13.0", "grunt-contrib-concat": "~0.5.1", @@ -54,17 +54,18 @@ "grunt-exec": "~0.4.6", "grunt-html": "~4.0.1", "grunt-jekyll": "~0.4.2", - "grunt-jscs": "~1.5.0", + "grunt-jscs": "~1.8.0", + "grunt-line-remover": "0.0.2", "grunt-postcss": "^0.3.0", - "grunt-sass": "~0.18.0", + "grunt-sass": "^1.0.0", "grunt-saucelabs": "~8.6.0", "grunt-scss-lint": "^0.3.4", "grunt-sed": "~0.1.1", + "grunt-stamp": "^0.1.0", "load-grunt-tasks": "~3.1.0", "markdown-it": "^4.0.1", - "mq4-hover-shim": "^0.1.0", + "mq4-hover-shim": "^0.2.0", "npm-shrinkwrap": "^200.1.0", - "superstartup-closure-compiler": "^0.1.6", "time-grunt": "^1.1.0" }, "engines": { @@ -87,6 +88,10 @@ "exports": "$" } }, - "files": ["css", "fonts", "js"] + "files": [ + "css", + "fonts", + "js" + ] } } diff --git a/scss/.scss-lint.yml b/scss/.scss-lint.yml index 6b33588b52..3fa9cbe388 100644 --- a/scss/.scss-lint.yml +++ b/scss/.scss-lint.yml @@ -399,7 +399,7 @@ linters: SpaceAfterPropertyColon: enabled: true - style: one_space # or 'no_space', or 'at_least_one_space', or 'aligned' + style: at_least_one_space # or 'no_space', or 'at_least_one_space', or 'aligned' SpaceAfterPropertyName: enabled: true diff --git a/scss/_grid.scss b/scss/_grid.scss index 583c00eac6..9e12e163a8 100644 --- a/scss/_grid.scss +++ b/scss/_grid.scss @@ -127,4 +127,4 @@ .col-xl-bottom { align-self: flex-end; } } -}
\ No newline at end of file +} diff --git a/scss/_navbar.scss b/scss/_navbar.scss index 513ed00004..342c8cc8c1 100644 --- a/scss/_navbar.scss +++ b/scss/_navbar.scss @@ -61,8 +61,8 @@ .navbar-sticky-top { position: sticky; top: 0; - width: 100%; z-index: $zindex-navbar-sticky; + width: 100%; // Undo the rounded corners @include media-breakpoint-up(sm) { diff --git a/scss/_pagination.scss b/scss/_pagination.scss index 0c00bd89e3..381ffe6d68 100644 --- a/scss/_pagination.scss +++ b/scss/_pagination.scss @@ -8,7 +8,6 @@ padding-left: 0; margin-top: $spacer-y; margin-bottom: $spacer-y; - margin: $line-height-computed 0; @include border-radius(); > li { diff --git a/scss/_popover.scss b/scss/_popover.scss index 7757fc1792..f0152ccf65 100644 --- a/scss/_popover.scss +++ b/scss/_popover.scss @@ -8,7 +8,7 @@ top: 0; left: 0; z-index: $zindex-popover; - display: none; + display: block; max-width: $popover-max-width; padding: 1px; // Reset font and text properties given new insertion method @@ -24,14 +24,93 @@ border: 1px solid $popover-border-color; @include border-radius($border-radius-lg); @include box-shadow(0 5px 10px rgba(0,0,0,.2)); + + + // Popover directions + + &.popover-top, + &.bs-tether-element-attached-bottom { + margin-top: -$popover-arrow-width; + + .popover-arrow { + bottom: -$popover-arrow-outer-width; + left: 50%; + margin-left: -$popover-arrow-outer-width; + border-top-color: $popover-arrow-outer-color; + border-bottom-width: 0; + &:after { + bottom: 1px; + margin-left: -$popover-arrow-width; + content: ""; + border-top-color: $popover-arrow-color; + border-bottom-width: 0; + } + } + } + + &.popover-right, + &.bs-tether-element-attached-left { + margin-left: $popover-arrow-width; + + .popover-arrow { + top: 50%; + left: -$popover-arrow-outer-width; + margin-top: -$popover-arrow-outer-width; + border-right-color: $popover-arrow-outer-color; + border-left-width: 0; + &:after { + bottom: -$popover-arrow-width; + left: 1px; + content: ""; + border-right-color: $popover-arrow-color; + border-left-width: 0; + } + } + } + + &.popover-bottom, + &.bs-tether-element-attached-top { + margin-top: $popover-arrow-width; + + .popover-arrow { + top: -$popover-arrow-outer-width; + left: 50%; + margin-left: -$popover-arrow-outer-width; + border-top-width: 0; + border-bottom-color: $popover-arrow-outer-color; + &:after { + top: 1px; + margin-left: -$popover-arrow-width; + content: ""; + border-top-width: 0; + border-bottom-color: $popover-arrow-color; + } + } + } + + &.popover-left, + &.bs-tether-element-attached-right { + margin-left: -$popover-arrow-width; + + .popover-arrow { + top: 50%; + right: -$popover-arrow-outer-width; + margin-top: -$popover-arrow-outer-width; + border-right-width: 0; + border-left-color: $popover-arrow-outer-color; + &:after { + right: 1px; + bottom: -$popover-arrow-width; + content: ""; + border-right-width: 0; + border-left-color: $popover-arrow-color; + } + } + } } -// Offset the popover to account for the popover arrow -.popover-top { margin-top: -$popover-arrow-width; } -.popover-right { margin-left: $popover-arrow-width; } -.popover-bottom { margin-top: $popover-arrow-width; } -.popover-left { margin-left: -$popover-arrow-width; } +// Offset the popover to account for the popover arrow .popover-title { padding: 8px 14px; margin: 0; // reset heading margin @@ -68,61 +147,3 @@ content: ""; border-width: $popover-arrow-width; } - -.popover-top > .popover-arrow { - bottom: -$popover-arrow-outer-width; - left: 50%; - margin-left: -$popover-arrow-outer-width; - border-top-color: $popover-arrow-outer-color; - border-bottom-width: 0; - &:after { - bottom: 1px; - margin-left: -$popover-arrow-width; - content: ""; - border-top-color: $popover-arrow-color; - border-bottom-width: 0; - } -} -.popover-right > .popover-arrow { - top: 50%; - left: -$popover-arrow-outer-width; - margin-top: -$popover-arrow-outer-width; - border-right-color: $popover-arrow-outer-color; - border-left-width: 0; - &:after { - bottom: -$popover-arrow-width; - left: 1px; - content: ""; - border-right-color: $popover-arrow-color; - border-left-width: 0; - } -} -.popover-bottom > .popover-arrow { - top: -$popover-arrow-outer-width; - left: 50%; - margin-left: -$popover-arrow-outer-width; - border-top-width: 0; - border-bottom-color: $popover-arrow-outer-color; - &:after { - top: 1px; - margin-left: -$popover-arrow-width; - content: ""; - border-top-width: 0; - border-bottom-color: $popover-arrow-color; - } -} - -.popover-left > .popover-arrow { - top: 50%; - right: -$popover-arrow-outer-width; - margin-top: -$popover-arrow-outer-width; - border-right-width: 0; - border-left-color: $popover-arrow-outer-color; - &:after { - right: 1px; - bottom: -$popover-arrow-width; - content: ""; - border-right-width: 0; - border-left-color: $popover-arrow-color; - } -} diff --git a/scss/_progress.scss b/scss/_progress.scss index c99b5af923..3c22e23eff 100644 --- a/scss/_progress.scss +++ b/scss/_progress.scss @@ -77,7 +77,7 @@ // } // IE9 hacks to accompany custom markup. We don't need to scope this via media queries, but I feel better doing it anyway. -@media screen and ("min-width:0\0") { +@media screen and (min-width:0\0) { .progress { background-color: #eee; @include border-radius($border-radius-base); @@ -116,7 +116,7 @@ @include gradient-striped(); background-size: $spacer-y $spacer-y; } -@media screen and ("min-width:0\0") { +@media screen and (min-width:0\0) { .progress-bar-striped { @include gradient-striped(); background-size: $spacer-y $spacer-y; @@ -134,7 +134,7 @@ .progress-animated[value]::-moz-progress-bar { animation: progress-bar-stripes 2s linear infinite; } -@media screen and ("min-width:0\0") { +@media screen and (min-width:0\0) { .progress-animated .progress-bar-striped { animation: progress-bar-stripes 2s linear infinite; } diff --git a/scss/_reboot.scss b/scss/_reboot.scss index 97c2d88eb6..495470cfa2 100644 --- a/scss/_reboot.scss +++ b/scss/_reboot.scss @@ -131,8 +131,8 @@ dt { } dd { - margin-left: 0; // Undo browser default margin-bottom: .5rem; + margin-left: 0; // Undo browser default } blockquote { @@ -216,11 +216,11 @@ table { } caption { - caption-side: bottom; padding-top: $table-cell-padding; padding-bottom: $table-cell-padding; color: $text-muted; text-align: left; + caption-side: bottom; } th { @@ -257,14 +257,14 @@ textarea { } fieldset { - // Reset the default outline behavior of fieldsets so they don't affect page layout. - padding: 0; - margin: 0; - border: 0; // Chrome and Firefox set a `min-width: min-content;` on fieldsets, // so we reset that to ensure it behaves more like a standard block element. // See https://github.com/twbs/bootstrap/issues/12359. min-width: 0; + // Reset the default outline behavior of fieldsets so they don't affect page layout. + padding: 0; + margin: 0; + border: 0; } legend { diff --git a/scss/_tooltip.scss b/scss/_tooltip.scss index 379d6d5e60..7b15fe5a39 100644 --- a/scss/_tooltip.scss +++ b/scss/_tooltip.scss @@ -16,23 +16,59 @@ opacity: 0; &.in { opacity: $tooltip-opacity; } -} -.tooltip-top { - padding: $tooltip-arrow-width 0; - margin-top: -3px; -} -.tooltip-right { - padding: 0 $tooltip-arrow-width; - margin-left: 3px; -} -.tooltip-bottom { - padding: $tooltip-arrow-width 0; - margin-top: 3px; -} -.tooltip-left { - padding: 0 $tooltip-arrow-width; - margin-left: -3px; + &.tooltip-top, + &.bs-tether-element-attached-bottom { + padding: $tooltip-arrow-width 0; + margin-top: -3px; + + .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -$tooltip-arrow-width; + border-width: $tooltip-arrow-width $tooltip-arrow-width 0; + border-top-color: $tooltip-arrow-color; + } + } + &.tooltip-right, + &.bs-tether-element-attached-left { + padding: 0 $tooltip-arrow-width; + margin-left: 3px; + + .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -$tooltip-arrow-width; + border-width: $tooltip-arrow-width $tooltip-arrow-width $tooltip-arrow-width 0; + border-right-color: $tooltip-arrow-color; + } + } + &.tooltip-bottom, + &.bs-tether-element-attached-top { + padding: $tooltip-arrow-width 0; + margin-top: 3px; + + .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -$tooltip-arrow-width; + border-width: 0 $tooltip-arrow-width $tooltip-arrow-width; + border-bottom-color: $tooltip-arrow-color; + } + } + &.tooltip-left, + &.bs-tether-element-attached-right { + padding: 0 $tooltip-arrow-width; + margin-left: -3px; + + .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -$tooltip-arrow-width; + border-width: $tooltip-arrow-width 0 $tooltip-arrow-width $tooltip-arrow-width; + border-left-color: $tooltip-arrow-color; + } + } } // Wrapper for the tooltip content @@ -54,31 +90,3 @@ border-color: transparent; border-style: solid; } -.tooltip-top .tooltip-arrow { - bottom: 0; - left: 50%; - margin-left: -$tooltip-arrow-width; - border-width: $tooltip-arrow-width $tooltip-arrow-width 0; - border-top-color: $tooltip-arrow-color; -} -.tooltip-right .tooltip-arrow { - top: 50%; - left: 0; - margin-top: -$tooltip-arrow-width; - border-width: $tooltip-arrow-width $tooltip-arrow-width $tooltip-arrow-width 0; - border-right-color: $tooltip-arrow-color; -} -.tooltip-left .tooltip-arrow { - top: 50%; - right: 0; - margin-top: -$tooltip-arrow-width; - border-width: $tooltip-arrow-width 0 $tooltip-arrow-width $tooltip-arrow-width; - border-left-color: $tooltip-arrow-color; -} -.tooltip-bottom .tooltip-arrow { - top: 0; - left: 50%; - margin-left: -$tooltip-arrow-width; - border-width: 0 $tooltip-arrow-width $tooltip-arrow-width; - border-bottom-color: $tooltip-arrow-color; -} diff --git a/scss/_utilities.scss b/scss/_utilities.scss index 64869e9cf9..30b2f9b42e 100644 --- a/scss/_utilities.scss +++ b/scss/_utilities.scss @@ -49,7 +49,7 @@ .m-a { margin: $spacer; } .m-t { margin-top: $spacer-y; } -.m-r { margin-right: $spacer-x } +.m-r { margin-right: $spacer-x; } .m-b { margin-bottom: $spacer-y; } .m-l { margin-left: $spacer-x; } .m-x { @@ -97,7 +97,7 @@ .p-a { padding: $spacer; } .p-t { padding-top: $spacer-y; } -.p-r { padding-right: $spacer-x } +.p-r { padding-right: $spacer-x; } .p-b { padding-bottom: $spacer-y; } .p-l { padding-left: $spacer-x; } .p-x { diff --git a/scss/mixins/_breakpoints.scss b/scss/mixins/_breakpoints.scss index 232b9416f9..790bb73433 100644 --- a/scss/mixins/_breakpoints.scss +++ b/scss/mixins/_breakpoints.scss @@ -68,21 +68,9 @@ // No minimum for the smallest breakpoint, and no maximum for the largest one. // Makes the @content apply only to the given breakpoint, not viewports any wider or narrower. @mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) { - // Nested media query combination does not work in libsass yet - // https://github.com/sass/libsass/issues/185 - // Work around until the issue is resolved: - $min: breakpoint-min($name, $breakpoints); - $max: breakpoint-max($name, $breakpoints); - @if $min and $max { - @media (min-width: $min) and (max-width: $max) { + @include media-breakpoint-up($name, $breakpoints) { + @include media-breakpoint-down($name, $breakpoints) { @content; } - } @else { - // One of min or max is a no-op, so this branch is not affected by libsass#185 - @include media-breakpoint-up($name, $breakpoints) { - @include media-breakpoint-down($name, $breakpoints) { - @content; - } - } } } diff --git a/scss/mixins/_progress.scss b/scss/mixins/_progress.scss index 9c3212ae80..802e179a41 100644 --- a/scss/mixins/_progress.scss +++ b/scss/mixins/_progress.scss @@ -9,7 +9,7 @@ background-color: $color; } - @media screen and ("min-width:0\0") { + @media screen and (min-width:0\0) { .progress-bar { background-color: $color; } |