Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/twbs/bootstrap.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Gruntfile.js201
-rw-r--r--dist/css/bootstrap.css1467
-rw-r--r--dist/css/bootstrap.css.map2
-rw-r--r--dist/css/bootstrap.min.css2
-rw-r--r--dist/js/bootstrap.js6756
-rw-r--r--dist/js/bootstrap.min.js73
-rw-r--r--dist/js/npm.js22
-rw-r--r--dist/js/umd/alert.js211
-rw-r--r--dist/js/umd/button.js189
-rw-r--r--dist/js/umd/carousel.js485
-rw-r--r--dist/js/umd/collapse.js380
-rw-r--r--dist/js/umd/dropdown.js300
-rw-r--r--dist/js/umd/modal.js548
-rw-r--r--dist/js/umd/popover.js223
-rw-r--r--dist/js/umd/scrollspy.js334
-rw-r--r--dist/js/umd/tab.js292
-rw-r--r--dist/js/umd/tooltip.js613
-rw-r--r--dist/js/umd/util.js166
-rw-r--r--docs/assets/css/docs.min.css2
-rw-r--r--docs/assets/css/docs.min.css.map104
-rw-r--r--docs/assets/js/ie10-viewport-bug-workaround.js1
-rw-r--r--docs/assets/js/src/application.js10
-rw-r--r--docs/components/forms.md24
-rw-r--r--docs/components/reboot.md8
-rw-r--r--docs/components/tables.md3
-rw-r--r--docs/components/utilities.md20
-rw-r--r--docs/dist/css/bootstrap.css1467
-rw-r--r--docs/dist/css/bootstrap.css.map2
-rw-r--r--docs/dist/css/bootstrap.min.css2
-rw-r--r--docs/dist/js/bootstrap.js6756
-rw-r--r--docs/dist/js/bootstrap.min.js73
-rw-r--r--docs/dist/js/npm.js22
-rw-r--r--docs/dist/js/umd/alert.js211
-rw-r--r--docs/dist/js/umd/button.js189
-rw-r--r--docs/dist/js/umd/carousel.js485
-rw-r--r--docs/dist/js/umd/collapse.js380
-rw-r--r--docs/dist/js/umd/dropdown.js300
-rw-r--r--docs/dist/js/umd/modal.js548
-rw-r--r--docs/dist/js/umd/popover.js223
-rw-r--r--docs/dist/js/umd/scrollspy.js334
-rw-r--r--docs/dist/js/umd/tab.js292
-rw-r--r--docs/dist/js/umd/tooltip.js613
-rw-r--r--docs/dist/js/umd/util.js166
-rw-r--r--docs/examples/carousel/index.html15
-rw-r--r--grunt/bs-commonjs-generator.js4
-rw-r--r--js/.jscsrc6
-rw-r--r--js/.jshintrc15
-rw-r--r--js/alert.js260
-rw-r--r--js/button.js207
-rw-r--r--js/carousel.js576
-rw-r--r--js/collapse.js455
-rw-r--r--js/dist/alert.js192
-rw-r--r--js/dist/alert.js.map1
-rw-r--r--js/dist/button.js174
-rw-r--r--js/dist/button.js.map1
-rw-r--r--js/dist/carousel.js466
-rw-r--r--js/dist/carousel.js.map1
-rw-r--r--js/dist/collapse.js361
-rw-r--r--js/dist/collapse.js.map1
-rw-r--r--js/dist/dropdown.js281
-rw-r--r--js/dist/dropdown.js.map1
-rw-r--r--js/dist/modal.js529
-rw-r--r--js/dist/modal.js.map1
-rw-r--r--js/dist/popover.js204
-rw-r--r--js/dist/popover.js.map1
-rw-r--r--js/dist/scrollspy.js315
-rw-r--r--js/dist/scrollspy.js.map1
-rw-r--r--js/dist/tab.js273
-rw-r--r--js/dist/tab.js.map1
-rw-r--r--js/dist/tooltip.js594
-rw-r--r--js/dist/tooltip.js.map1
-rw-r--r--js/dist/util.js151
-rw-r--r--js/dist/util.js.map1
-rw-r--r--js/dropdown.js322
-rw-r--r--js/externs/bootstrap.js6
-rw-r--r--js/externs/jQuery.js2159
-rw-r--r--js/modal.js598
-rw-r--r--js/popover.js283
-rw-r--r--js/scrollspy.js346
-rw-r--r--js/src/alert.js192
-rw-r--r--js/src/button.js174
-rw-r--r--js/src/carousel.js468
-rw-r--r--js/src/collapse.js379
-rw-r--r--js/src/dropdown.js286
-rw-r--r--js/src/modal.js527
-rw-r--r--js/src/popover.js191
-rw-r--r--js/src/scrollspy.js323
-rw-r--r--js/src/tab.js287
-rw-r--r--js/src/tooltip.js632
-rw-r--r--js/src/util.js156
-rw-r--r--js/tab.js324
-rw-r--r--js/tests/closure.html83
-rw-r--r--js/tests/index.html25
-rw-r--r--js/tests/unit/alert.js3
-rw-r--r--js/tests/unit/button.js100
-rw-r--r--js/tests/unit/carousel.js226
-rw-r--r--js/tests/unit/collapse.js4
-rw-r--r--js/tests/unit/modal.js249
-rw-r--r--js/tests/unit/phantom.js4
-rw-r--r--js/tests/unit/popover.js53
-rw-r--r--js/tests/unit/scrollspy.js131
-rw-r--r--js/tests/unit/tooltip.js905
-rw-r--r--js/tests/vendor/tether.min.js2
-rw-r--r--js/tests/visual/alert.html11
-rw-r--r--js/tests/visual/button.html11
-rw-r--r--js/tests/visual/carousel.html11
-rw-r--r--js/tests/visual/collapse.html11
-rw-r--r--js/tests/visual/dropdown.html55
-rw-r--r--js/tests/visual/modal.html101
-rw-r--r--js/tests/visual/popover.html17
-rw-r--r--js/tests/visual/scrollspy.html34
-rw-r--r--js/tests/visual/tab.html45
-rw-r--r--js/tests/visual/tooltip.html16
-rw-r--r--js/tooltip.js876
-rw-r--r--js/transition.js59
-rw-r--r--js/util.js165
-rw-r--r--package.json17
-rw-r--r--scss/.scss-lint.yml2
-rw-r--r--scss/_grid.scss2
-rw-r--r--scss/_navbar.scss2
-rw-r--r--scss/_pagination.scss1
-rw-r--r--scss/_popover.scss149
-rw-r--r--scss/_progress.scss6
-rw-r--r--scss/_reboot.scss12
-rw-r--r--scss/_tooltip.scss96
-rw-r--r--scss/_utilities.scss4
-rw-r--r--scss/mixins/_breakpoints.scss16
-rw-r--r--scss/mixins/_progress.scss2
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": ";;;;;;AGIA;EACE,AAAU;EACV,AAAW;EACX,AAAS;EACT,AAAc;EACd,AAAa;EAEb;IAPF;MAQI,AAAS;EAGX;IAXF;MAYI,AAAS;EAGb,AAAgB;IACZ,AAAS;IACT,AAAO;IACP,AAAW;IACX,AAAY;IACZ,AF4ByB;IEpB7B,AAAgB,AAAQ,AAAQ,AAAK,AAAI,AAAgB,AAAQ,AAAQ,AAAK,AAAI,AAAgB,AAAQ,AAAQ,AAAK,AAAI,AAAgB,AAAQ,AAAQ,AAAK,AAAI,AAAgB,AAAQ,AAAQ,AAAK,AAAI,AAAgB,AAAQ,AAAQ,AAAK;MAExO,AF8FsB;ME7FtB,AFgDmB;ME/CnB,AAAgB;MAEhB,AAAQ;IAMlB,AAAgB,AAAM,AAAE,AAAe;MACjC,AAAa;;AAWnB,AAAc;EACV,AAAY;AAGhB,AAAc;EACV,AAAY;AAGhB,AAAc,AAAG,AAAI,AAAc,AAAG;EAElC,AAAe;;AmBrBf;EnByBJ;IAEI,AAAW;IAEf,AAAY;MACN,AAAW;MACX,AAAa;;ACxEnB;EACE,AAAS;EACT,AAAe;EACf,AAAkB;EAEpB,AAAY;IACR,AAAU;IACV,AAAK;IACL,AAAO;IACP,AAAS;;AAIb,AAAY;EACV,AAAO;EACP,AAAc;;AAGhB,AAAY;EACV,AAAS;EACT,AAAQ;;AAGV;EACA;IACI,AAAa;EAEjB;IACI,AAAU;IACV,AAAK;IACL,AAAQ;IACR,AAAM;IACN,AAAO;IACP,AAAY;IACZ,AAAc;;AAIlB,AAAY;EACV,AAAS;EACT,AAAO;EACP,AAAQ;EACR,AAAS;EACT,AAAW;EACX,AAAa;EACb,AAAa;;AAGf,AAAiB,AAAQ,AAAiB;EAGxC,AAAiB;;AAGnB;EACE,AAAU;EACV,AAAc;EACd,AAAe;EACf,AAAa;EAEf,AAAW;IACP,AAAQ;IACR,AAAa;IACb,AAAgB;;AAIpB;EACE,AAAO;EACP,AAAS;EACT,AAAS;EACT,AAAU;EACV,AAAW;EAEb,AAAkB;IACd,AAAS;EAGb,AAAqB,AAAK;IACtB,AAAc;IACd,AAAe;EAGnB,AAAqB,AAAE;IAAF,AAAY;EACjC,AAAqB,AAAE;IAAH,AAAe;EAEnC,AAAqB;IACjB,AAAS;IACT,AAAO;IACP,AAAY;;AAKhB;EACE,AAAS;;AAGX;EACE,AAAS;EACT,AAAS;EACT,AH9F2B;;AGkG7B,AAAY,AAAQ,AAAY;EAG9B,AHhG2B;EGiG3B,AAAiB;;AAEnB,AAAU;EACR,AAAa;EACb,AH5G2B;;AG+G7B,AAAU;EACR,AAAS;;AAGX,AAAY;EACV,AAAY;EACZ,AAAe;;AAEjB,AAAY;EACV,AAAY;;AAEd,AAAY;EACV,AAAe;;AAIjB,AAAY,AAAO,AAAK;EACtB,AAAS;EACT,AAAS;EACT,AAAW;EACX,AAAO;;AAET,AAAY,AAAO,AAAK,AAAC,AAAQ,AAAY,AAAO,AAAK,AAAC;EAExD,AHhI2B;EGkI3B,AAAiB;EACjB,AAAkB;;AAEpB,AAAY,AAAO,AAAU,AAAG,AAAY,AAAO,AAAO,AAAS,AAAG,AAAY,AAAO,AAAO,AAAS;EAGvG,AAAa;EACb,AHhJ2B;EGkJ3B,AAAkB;;AAIpB,AAAY,AAAK;EACf,AAAS;EACT,AAAgB;;AAElB,AAAY,AAAK,AAAO,AAAK;EAC3B,AAAa;EACb,AAAgB;EAChB,AAAc;EACd,AAAW;EACX,AAAa;;AAEf,AAAY,AAAK,AAAO,AAAU,AAAG,AAAY,AAAK,AAAO,AAAO,AAAS,AAAG,AAAY,AAAK,AAAO,AAAO,AAAS;EAGtH,AAAa;;AAGf,AAAY,AAAO,AAAU;EAC3B,AAAS;;AAEX,AAAY,AAAK,AAAO,AAAK;EAC3B,AAAa;EACb,AAAgB;EAChB,AAAc;EACd,AAAW;;ACnLb;EACE,AAAS;EACT,AAAO;EACP,AAAQ;EACR,AAAW;EACX,AAAa;EACb,AAAO;EACP,AAAY;EACZ,AAAQ;EACR,ALegB;EKdhB,AAAe;EAEjB,AAAY;IACR,ALWc;IKVd,AAAkB;EAEtB,AAAY;IACR,AAAkB;IAClB,AAAQ;;AClBZ;EACE,AAAe;EACf,AAAkB;EAClB,AAAe;EAEjB,AAAa,AAAgB;IACzB,AAAa;IACb,AAAO;EAGX,AAAa;IACT,AAAa;IACb,AAAO;IAEX,AAAa,AAAS,AAAQ,AAAa,AAAS;MAE9C,AAAO;MACP,AAAkB;;AAuBxB;EAEE,AAAgB;EAChB,AAAe;EACf,AAAe;EwCnCjB,AAAU,AAAS,AAAU;IAEzB,AAAS;IACT,AAAS;EAEb,AAAU;IACN,AAAO;ExC+BX,AAAW;IACP,AAAO;IACP,AAAa;IACb,AAAgB;IAChB,AAAW;IACX,AAAa;;AAIjB;EACE,AAAO;EAET,AAAe;IACX,AAAO;IAEX,AAAe,AAAS;MAClB,AAAkB;;AAUxB;EACE,AAAU;EACV,AAAS;EAET,AAAY;;AAOd,AAAa;EACX,AAAQ;EACR,AL9E2B;EK+E3B,AL/E2B;;AKiF7B,AAAa;EACX,AAAa;EACb,AAAa;;AAGf,AAAa;EACX,AAAa;EACb,AAAc;EACd,AAAe;EACf,AAAW;;AAGb,AAAa;EACX,AAAY;EACZ,AAAe;;AAGjB,AAAa;EACX,AAAO;EACP,AAAS;EACT,AAAW;EACX,AAAa;EACb,ALvG2B;EKwG3B,ALxG2B;EK0G7B,AAAa,AAAI;IACb,AAAO;IACP,AL5GyB;;AKgH7B;EACA,AAAa;IACT,AAAO;;AAIX;EACA;IACI,AAAS;EAGb;IACI,AAAe;EAEnB,AAAa;IACT,AAAW;EAEf,AAAa;IACT,AAAW;;AAIf;EACA,AAAa;IACT,AAAO;IACP,AAAW;;AASf;EACE,AAAa;EACb,AAAgB;EAChB,AAAW;EACX,AAAa;EACb,AAAO;EACP,AAAY;EACZ,AAAkB;EAClB,AAAY;EAEd,AAAe;IACX,AAAY;;AAIhB;EACE,AAAe;EACf,AAAW;EACX,AAAa;EACb,AAAO;;AAET;EACE,AAAO;EACP,AAAQ;;AAEV,AAAe;EACb,AAAY;EACZ,AAAe;EACf,AAAa;EACb,AAAO;;AAET;EACE,AAAS;EACT,AAAe;EACf,AAAO;;AAET,AAAkB;EAChB,ALlL2B;EKmL3B,AAAiB;;AAEnB,AAAmB;EACjB,AAAS;EACT,AAAe;;AAGjB;EACA,AAAe;IACX,AAAY;;AAGhB;EACA;IACI,AAAa;IACb,AAAgB;EAEpB;IACI,AAAW;EAEf,AAAe;IACX,AAAW;IACX,AAAc;IACd,AAAa;EAEjB,AAAe;IACX,AAAY;;AAShB;EACE,AAAc;EACd,AAAa;;AAEf,AAAmB;EACjB,AAAS;;AAEX,AAAmB;EACjB,AAAY;;AAGd;EACA,AAAmB,AAAS,AAAa;IACrC,AAAwB;IACxB,AAA2B;EAE/B,AAAmB,AAAS,AAAY;IACpC,AAAyB;IACzB,AAA4B;;ACpPhC;EACE,AAAO;EACP,AAAQ;EACR,AAAS;EACT,AAAQ;EACR,AAAU;;EACV,AAAW;EACX,AAAa;EACb,AAAO;EACP,AAAY;EACZ,AAAY;EACZ,AAAQ;;AAIV;EACE,AAAQ;;AAEV,AAAgB;EAEd,AAAS;EACT,AAAO;EACP,AAAO;EACP,AAAQ;EACR,AAAa;EACb,AAAa;;AAEf;EACE,AAAa;;AAEf;EACE,AAAO;EACP,AAAY;;AAEd,AAAe,AAAG,AAAc;EAE9B,AAAO;EAET,AAAe,AAAC,AAAQ,AAAc,AAAC;IACnC,AAAO;;AAGX,AAAU,AAAY;EACpB,AAAS;;AeFP;EfiBJ;IACI,AAAO;IACP,AAAQ;IACR,AAAc;IACd,AAAe;EAEnB,AAAa;IACT,AAAQ;;AexBR;Ef6BJ;IACI,AAAc;IACd,AAAa;;Ae/Bb;EfoCJ;IACI,AAAO;IACP,AAAO;IACP,AAAS;IACT,AAAQ;EAGZ,AAAa;IACP,AAAO;IACP,AAAQ;;ACtFd;EACE,AAAa;EACb,AAAY;EACZ,AAAW;EACX,AAAO;EACP,AAAY;;AAEd;EACE,AAAc;EACd,AAAY;EACZ,AAAO;;AAET,AAAiB;EACf,AAAS;EACT,AAAS;;AAEX,AAAiB,AAAE;EACjB,AAAc;;AAGhB;EACA,AAAW;IACP,AAAe;;ACtBnB;EACE,AAAe;EACf,AAAa;;AAEf;EACE,AAAS;EACT,AAAc;EACd,AAAe;EACf,AAAY;;AAEd,AAAmB;EACjB,AAAS;EACT,AAAS;EACT,AAAa;;AAEf,AAAmB;EACjB,AAAO;;AAET,AAAmB;EACjB,AAAO;;AAIT;EACE,AAAU;EACV,AAAQ;;AExBV,AAAgB;EACZ,AAAe;EAEnB,AAAgB,AAAO;IACjB,AAAa;IACb,AAAgB;IAChB,AAAkB;IAClB,AAAQ;;AAUd;EACE,AAAU;EACV,AAAS;EACT,AAAQ;EACR,AAAQ;EACR,AAAc;EmCdhB,AAAW,AAAS,AAAW;IAE3B,AAAS;IACT,AAAS;EAEb,AAAW;IACP,AAAO;ExB0BP;IXvBJ;MASI,AAAa;MACb,AAAc;MACd,AAAe;MACf,AAAS;MACT,AAAc;EAGlB,AAAc;IACV,AAAY;EAGhB,AAAc,AAAkB;IAC5B,AAAY;EAGhB,AAAc;IACV,AAAY;EAIhB,AAAY;IACR,AAAO;EAUX,AAAc,AAAO,AAAM,AAAc,AAAS,AAAQ,AAAc,AAAU,AAAS,AAAc,AAAY,AAAW,AAAc,AAAY;IAKtJ,AAAY;EAGhB,AAAc,AAAc;IACxB,AAAU;IACV,AAAS;;AAMb,AAAc,AAAC,AAAa,AAAc,AAAiB,AAAc;EAEvE,AAAe;;AAEjB,AAAc;EACZ,AAAO;;AAIT,AAAiB,AAAO;EACtB,AAAO;EACP,AAAgB;;AAElB,AAAiB,AAAO;EACtB,AAAS;EACT,AAAc;;AAEhB,AAAiB,AAAO,AAAE,AAAa;EACrC,AAAY;;AAEd,AAAiB,AAAI,AAAiB,AAAI,AAAiB,AAAI,AAAiB,AAAI,AAAiB,AAAI,AAAiB;EAMxH,AAAQ;;AAIV,AAAuB;EACrB,AAAS;;AAKX,AAAc,AAAM;EAChB,AAAa;;AAejB,AAAc;EACZ,AAAY;EACZ,AAAe;;AAEjB,AAAc,AAAe;EAC3B,AAAY;;AAId,AAA2B,AAAQ,AAA2B,AAAK,AAAgB,AAAK;EAEtF,AAAY;;AAEd,AAAiB;EACf,AAAe;;AAEjB,AAAc,AAAQ;EACpB,AAAQ;;AAIV,AAAc;EACZ,AAAW;;AAIb,AAAY,AAAO;EACjB,AAAe;;AAEjB,AAAwB;EAEtB,AAAS;EACT,AAAS;EACT,AAAU;;AAEZ,AAAuB,AAAgB,AAA0B;EAE/D,AAAa;;AAEf,AAAuB,AAAmB,AAA0B;EAElE,AAAU;EACV,AAAc;EACd,AAAa;;AAEf;EACE,AAAgB;;AAElB,AAAuB;EACrB,AAAK;;AAEP;EACE,AAAa;;AAEf,AAA0B;EACxB,AAAQ;;AAEV,AAA0B;EACxB,AAAe;;AAEjB;EACA,AAAuB,AAAmB,AAA0B;IAEhE,AAAU;;AAKd,AAAY;EACV,AAAY;EACZ,AAAe;;AAIjB,AAAc;EACZ,AAAY;;AAId;EACE,AAAkB;;AAEpB,AAAkB;EAChB,AAAU;EACV,AAAK;EACL,AAAO;EACP,AAAQ;EACR,AAAM;EACN,AAAS;EACT,AAAS;;AAEX,AAAkB;EAChB,AAAM;EACN,AAAc;EACd,AAAa;;AAIf,AAAc,AAAY;EACxB,AAAO;;AAET,AAAc,AAAY;EACxB,AAAU;EACV,AAAS;EACT,AAAe;EACf,AAAO;;AAIT,AAAiB;EACf,AAAe;;AAIjB;EACE,AAAY;;AAEd,AAAuB;EACrB,AAAY;EACZ,AAAe;;AAIjB;EACE,AAAgB;EAChB,AAAkB;;AAEpB,AAAoB;EAClB,AAAU;EACV,AAAS;EACT,AAAO;EACP,AAAO;EACP,AAAQ;;AAIV,AAAoB;EAClB,AAAU;EACV,AAAS;EACT,AAAQ;EACR,AAAS;;AAIX;EACE,AAAU;EACV,AAAQ;EACR,AAAY;EACZ,AAAU;;AAKZ,AAAa,AAAa,AAAK;EAC3B,AAAW;EACX,AAAS;EACT,AAAkB;AAGtB,AAAa,AAAa,AAAa,AAAa,AAAa,AAAU,AAAa,AAAa,AAAa;EAK9G,AAAS;EACT,AAAY;EACZ,AAAe;;AASnB;EACE,AAAS;EACT,AAAQ;EACR,AAAkB;EWvQhB;IXoQJ;MAMI,AAAS;MACT,AAAc;MACd,AAAa;;AAGjB,AAAW;EACT,AAAS;EACT,AAAY;EACZ,AAAe;EACf,AAAkB;EAClB,AAAQ;;AAEV,AAAW,AAAI;EACb,AAAW;EACX,AV5T2B;;AUoU7B;EACE,AVrJ+B;EUsJ/B,AAAS;EACT,AAAS;EACT,AAAY;;AC5Ud,AAAkB,AAAW;EAC3B,AAAa;;AAIf,AAAU,AAAG,AAAO,AAAsB,AAAG;EAE3C,AAAS;EACT,AAAa;EACb,AAAO;;AAET,AAAsB,AAAM;EAC1B,AAAa;;AAEf,AAAsB;EACpB,AAAY;;AAEd,AAAsB,AAAE;EACtB,AAAO;EACP,AAAkB;;AAEpB,AAAsB,AAAE;EACtB,AAAO;EACP,AAAkB;;AAIpB;EACE,AAAY;;AAEd,AAA2B;EACzB,AAAe;;AAEjB,AAA2B;EACzB,AAAS;EACT,AAAS;EACT,AAAW;EACX,AAAa;EACb,AAAa;EACb,AAAY;EACZ,AAAe;;AAKjB,AAAY,AAAY,AAAc,AAAW,AAAY;EACvD,AAAO;EACP,AAAQ;;AAOd,AAAY,AAAU,AAAU,AAAW,AAAU;EAC/C,AAAO;EACP,AAAkB;EAClB,AAAQ;;AUJV;EVUJ;IACI,AAAS;;AUOT;EVHJ;IACI,AAAS;;AUET;EVEJ;IACI,AAAS;;AUHT;EVOJ;IACI,AAAS;;AUvCT;EV2CJ;IACI,AAAS;;ACrFb;EACE,AbuBgB;EatBhB,AAAkB;EAClB,AbqBgB;EanBlB,AAAY,AAAQ,AAAY,AAAQ,AAAY;IAGhD,AAAO;IACP,Abec;Iadd,Abcc;;AaVlB;EACE,AAAO;EACP,AAAkB;EAClB,AbQgB;EaNlB,AAAoB,AAAQ,AAAoB,AAAQ,AAAoB;IAGxE,AbEc;IaDd,AAAa;IACb,AAAkB;IAClB,AAAc;;ACzBlB;EACE,AAAS;EACT,AAAY;EACZ,AAAe;EACf,AAAQ;EACR,AAAmB;EACnB,AAAe;;AAEjB,AAAY;EACV,AAAY;EACZ,AAAe;;AAEjB,AAAY,AAAC;EACX,AAAe;;AAEjB,AAAY;EACV,AAAe;;AAGjB,AAAc;EACZ,AAAY;;AASd;EAJE,AdIgB;EcFlB,AAAiB;IAAV,AdEW;;AcClB;EALE,AdGgB;EcDlB,AAAoB;IAAb,AdCW;;AcGlB;EANE,AdEgB;EcAlB,AAAmB;IAAZ,AdAW;;Ae3BlB,AAAa;EACX,AAAe;;AAEjB,AAAa;EACX,AAAe;;AAEjB,AAAa;EACX,AAAe;;AAGjB;EACA;IACI,AAAc;IACd,AAAa;EAEjB,AAAe;IACX,AAAe;IACf,AAAc;;AChBlB,AAAS;EACL,AAAa;EACb,AAAO;AAEX,AAAS,AAAY;EACjB,AAAO;EACP,AAAiB;AAErB,AAAS;EACL,AAAO;EACP,AAAO;EACP,AAAQ;EACR,AAAY;AAEhB,AAAS;EACL,AAAO;EACP,AAAO;EACP,AAAc;EACd,AAAe;;AClBnB,AAAiB,AAAG;EAChB,AAAe;AAEnB,AAAiB,AAAE;EACf,AAAO;;ACJX;EACE,AAAS;EACT,AAAO;EACP,AAAe;EACf,AAAU;EACV,AAAO;EACP,AAAkB;EAClB,AAAe;;AAIjB;EACE,AAAS;EACT,AAAY;;AAEd,AAAiB;EACf,AAAY;;AAEd,AAAgB;EACd,AAAO;EACP,AAAkB;;AAIpB,AAAe,AAAI,AAAe;EAEhC,AAAY;EACZ,AAAe;;AAEjB,AAAe;EACb,AAAc;EACd,AAAa;;AAmBf;EACA;IACI,AAAS;IACT,AAAO;EAEX,AAAiB;IACb,AAAY;IACZ,AAAa;EAEjB,AAAe;IACX,AAAW;;AASf;EACE,AAAQ;EACR,AAAU;;AAGZ;EACE,AAAO;EACP,AAAO;EACP,AAAQ;EACR,AAAc;EACd,AAAa;EACb,AAAe;EAEf;IARF;MASI,AAAO;MACP,AAAQ;;AAMZ,AAAgB;EACZ,AlBpEc;AkBsElB,AAAgB;EACZ,AlBtEc;AkBwElB,AAAgB;EACZ,AAAkB;AAEtB,AAAgB;EACZ,AAAkB;;ACrGtB;EACE,AAAU;EACV,AAAS;EACT,AAAO;;AAET;EACE,AAAU;EACV,AAAK;EACL,AAAO;EACP,AAAS;EACT,AAAS;EACT,AAAS;EACT,AAAW;EACX,AAAO;EACP,AAAQ;EACR,AAAkB;EAClB,AAAe;;AAEjB;EACE,AAAO;EACP,AAAkB;;AAGpB;EACA;IACI,AAAS;;AC7Bb;EAAO,AAAkB;;AACzB;EAAK,AAAO;;AACZ;EAAO,AAAO;EAAU,AAAkB;;AAC1C;EAAK,AAAO;;AACZ;EAAK,AAAO;;AACZ;EAAM,AAAO;;AACb;EAAM,AAAO;;AACb;EAAM,AAAO;;AACb;EAAM,AAAO;;AACb;EAAM,AAAkB;EAAU,AAAQ;;AAC1C;EAAM,AAAY;;AAClB;EAAM,AAAO;;AACb;EAAM,AAAO;;AACb;EAAM,AAAkB;EAAU,AAAQ;;AAC1C;EAAM,AAAO;;AACb;EAAM,AAAO;;AACb;EAAM,AAAO;;AACb;EAAM,AAAO;;AACb;EAAM,AAAO;;AACb;EAAM,AAAO;;AACb;EAAM,AAAO;;AACb;EAAM,AAAO;;AACb;EAAM,AAAO;;AACb;EAAM,AAAO;;AACb;EAAK,AAAO;;AACZ;EAAK,AAAO;;AACZ;EAAM,AAAO;;AACb;EAAM,AAAO;;AACb;EAAM,AAAO;;AACb;EAAM,AAAO;;AACb;EAAM,AAAO;;AACb;EAAM,AAAO;;AACb;EAAM,AAAO;;AACb;EAAM,AAAO;;AACb;EAAM,AAAO;;AACb;EAAM,AAAO;;AACb;EAAM,AAAO;;AACb;EAAM,AAAO;;AACb;EAAM,AAAO;;AACb;EAAK,AAAO;;AACZ;EAAM,AAAO;;AACb;EAAM,AAAO;;AACb;EAAM,AAAO;;AACb;EAAM,AAAO;;AACb;EAAM,AAAO;;AACb;EAAM,AAAO;;AACb;EAAM,AAAO;EAAU,AAAY;;AACnC;EAAM,AAAO;;AACb;EAAM,AAAO;;AACb;EAAM,AAAO;;AACb;EAAM,AAAO;;AACb;EAAM,AAAO;;AACb;EAAM,AAAO;;AACb;EAAM,AAAO;;AACb;EAAM,AAAO;;AACb;EAAM,AAAO;;AACb;EAAM,AAAO;;AACb;EAAM,AAAO;;AACb;EAAM,AAAO;;AACb;EAAM,AAAO;;AAEb,AAAK,AAAI,AAAK,AAAK,AAAK,AAAK,AAAM;EAElB,AAAO;;;EC3DtB,AAAa;EACb,AAAioD;EAEjoD,AAAY;EACZ,AAAa;;AAGf;EACE,AAAa;EACb,AAAY;EACZ,AAAc;EACd,AAAa;EACb,AAAa;EACb,AAAO;EACP,AAAgB;EAGhB,AAAwB;EACxB,AAAyB;;AAM3B;EACE,AAAS;EACT,AAAiB;;AAEnB,AAAC,AAAS,AAAgB,AAAc;EAGtC,AAAS;EACT,AAAY;;AAMd;EACE,AAAQ;EACR,AAAM;EACN,AAAQ;EACR,AAAQ;EACR,AAAU;EACV,AAAS;EACT,AAAU;EACV,AAAO;;AAYT;EACE,AAAO;EACP,AAAO;EACP,AAAQ;EACR,AAAe;EACf,AAAY;EACZ,AAAa;EACb,AAAW;EACX,AAAO;EACP,AAAY;;AAEd,AAAC,AAAS,AAAc;EACtB,ApB1D2B;EoB2D3B,AAAiB;;AAQnB,AAAc;EACZ,AAAS;;AC1BP;EDoCJ;IACI,AAAS",
+ "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&mdash;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&mdash;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,EADT;;AAMX;EACE,cAAc;EAEd,eAAe,EAHD;;AAOhB;EACE,kBrCucgC,EqCxcrB;;AASb;EACE,oBAA8B,EADZ;EAIlB;IACE,mBAAmB;IACnB,UAAU;IACV,aAAa;IACb,eAAe,EAJT;;AAaV;ECxDE,0BtCkZsC;EsCjZtC,sBtCkZqC;EsCjZrC,etC+YsC,EqCzVxB;ECpDd;IACE,0BAAwB,EADtB;EAGJ;IACE,eAAa,EADF;;ADoDf;EC3DE,0BtCsZsC;EsCrZtC,sBtCsZqC;EsCrZrC,etCmZsC,EqC1V3B;ECvDX;IACE,0BAAwB,EADtB;EAGJ;IACE,eAAa,EADF;;ADuDf;EC9DE,0BtC0ZsC;EsCzZtC,sBtC0ZqC;EsCzZrC,etCuZsC,EqC3VxB;EC1Dd;IACE,0BAAwB,EADtB;EAGJ;IACE,eAAa,EADF;;AD0Df;ECjEE,0BtC8ZsC;EsC7ZtC,sBtC8ZqC;EsC7ZrC,etC2ZsC,EqC5VzB;EC7Db;IACE,0BAAwB,EADtB;EAGJ;IACE,eAAa,EADF;;ACDf;EACE;IAAQ,4BAAgC,EAAA;EACxC;IAAQ,yBAAyB,EAAA,EAAA;;AAFnC;EACE;IAAQ,4BAAgC,EAAA;EACxC;IAAQ,yBAAyB,EAAA,EAAA;;AAFnC;EACE;IAAQ,4BAAgC,EAAA;EACxC;IAAQ,yBAAyB,EAAA,EAAA;;AAQnC;EACE,eAAe;EACf,YAAY;EACZ,avC8B+B;EuC7B/B,oBvC6B+B,EuCjCtB;;AAMI;EAEb,eAAe;EAEf,UAAU;EAEV,yBAAiB;KAAjB,sBAAiB;UAAjB,iBAAiB,EAND;;AAQF;EACd,uBAAuB;EjCzBrB,uBNwG8B,EuChFM;;AAKA;EACtC,qBAAa,EADmC;;AAGlC;EACd,0BAA0B;EAC1B,gCvCsEgC;EuCrEhC,mCvCqEgC,EuCxEQ;;AAKpB;EACpB,iCvCkEgC;EuCjEhC,oCvCiEgC,EuCnEc;;AAiChD;EACE;IACE,uBAAuB;IjCxEvB,uBNwG8B,EuCjCrB;EAKX;IACE,sBAAsB;IACtB,avCnC6B;IuCoC7B,qBAAqB;IACrB,0BAA0B;IAC1B,gCvCuB8B;IuCtB9B,mCvCsB8B,EuC5BjB;EAQK;IAClB,gBAAgB;IAChB,evCnFgC;IuCoFhC,8BAA8B;IAC9B,uBAAuB,EAJF;EAMD;IACpB,iCvCa8B;IuCZ9B,oCvCY8B,EuCdP,EAAA;;AAWH;ECrEtB,8MAAiC;EAAjC,sMAAiC;EDuEjC,mCvC5D+B;UuC4D/B,2BvC5D+B,EuC0DiB;;AAI1B;ECzEtB,sMAAiC;ED2EjC,2BvChE+B,EuC8DY;;AAI7C;EACE;IC9EA,8MAAiC;IAAjC,yMAAiC;IAAjC,sMAAiC;IDgF/B,mCvCrE6B;YuCqE7B,2BvCrE6B,EuCmER,EAAA;;AAWA;EACvB,2DAAkD;UAAlD,mDAAkD,EADD;;AAG1B;EACvB,mDAAkD,EADN;;AAG9C;EACqB;IACjB,2DAAkD;SAAlD,sDAAkD;YAAlD,mDAAkD,EADV,EAAA;;AEtIlC;EACN,0BzCagC,EyCdA;;AAI1B;EACN,0BzCSgC,EyCVL;;AAI7B;EACE;IACE,0BzCI8B,EyCLjB,EAAA;;AATT;EACN,0BzCcgC,EyCfA;;AAI1B;EACN,0BzCUgC,EyCXL;;AAI7B;EACE;IACE,0BzCK8B,EyCNjB,EAAA;;AATT;EACN,0BzCegC,EyChBA;;AAI1B;EACN,0BzCWgC,EyCZL;;AAI7B;EACE;IACE,0BzCM8B,EyCPjB,EAAA;;AATT;EACN,0BzCgBgC,EyCjBA;;AAI1B;EACN,0BzCYgC,EyCbL;;AAI7B;EACE;IACE,0BzCO8B,EyCRjB,EAAA;;ACCjB;EACE,iBAAiB,EADX;EAGL;IACC,cAAc,EADD;;AAKjB;;EACE,iBAAiB;EACjB,QAAQ,EAFG;;AAIb;EACE,eAAe,EADJ;;AAKb;;;EACE,oBAAoB;EACpB,oBAAoB,EAFT;;AAIb;EACE,uBAAuB,EADV;;AAGf;EACE,uBAAuB,EADV;;AAUjB;EACE,eAAe,EADF;;AAUN;;EACP,mBAAmB,EADC;;AAKb;;EACP,oBAAoB,EADD;;AASrB;EACE,cAAc;EACd,mBAAmB,EAFL;;AAUhB;EACE,gBAAgB;EAChB,iBAAiB,EAFN;;ACxEb;EAEE,gBAAgB;EAChB,oBAAoB,EAHT;;AAWb;EACE,mBAAmB;EACnB,eAAe;EACf,mBAAkB;EAElB,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/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":";;;;;;;;;;;;;AAUA,IAAM,GAAG,GAAG,CAAC,UAAC,CAAC,EAAK;;;;;;;;AASlB,MAAM,IAAI,GAAkB,KAAK,CAAA;AACjC,MAAM,OAAO,GAAe,OAAO,CAAA;AACnC,MAAM,QAAQ,GAAc,QAAQ,CAAA;AACpC,MAAM,SAAS,SAAiB,QAAQ,AAAE,CAAA;AAC1C,MAAM,YAAY,GAAU,WAAW,CAAA;AACvC,MAAM,kBAAkB,GAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;AACtC,MAAM,mBAAmB,GAAG,GAAG,CAAA;;AAE/B,MAAM,KAAK,GAAG;AACZ,QAAI,WAAoB,SAAS,AAAE;AACnC,UAAM,aAAoB,SAAS,AAAE;AACrC,QAAI,WAAoB,SAAS,AAAE;AACnC,SAAK,YAAoB,SAAS,AAAE;AACpC,kBAAc,YAAW,SAAS,QAAG,YAAY,AAAE;GACpD,CAAA;;AAED,MAAM,SAAS,GAAG;AAChB,iBAAa,EAAG,eAAe;AAC/B,UAAM,EAAU,QAAQ;AACxB,QAAI,EAAY,MAAM;AACtB,MAAE,EAAc,IAAI;GACrB,CAAA;;AAED,MAAM,QAAQ,GAAG;AACf,KAAC,EAAuB,GAAG;AAC3B,MAAE,EAAsB,IAAI;AAC5B,eAAW,EAAa,aAAa;AACrC,MAAE,EAAsB,wBAAwB;AAChD,cAAU,EAAc,SAAS;AACjC,UAAM,EAAkB,SAAS;AACjC,gBAAY,EAAY,WAAW;AACnC,eAAW,EAAa,2CAA2C;AACnE,yBAAqB,EAAG,4BAA4B;GACrD,CAAA;;;;;;;;MASK,GAAG;AAEI,aAFP,GAAG,CAEK,OAAO,EAAE;4BAFjB,GAAG;;AAGL,UAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;KACxB;;iBAJG,GAAG;;;;;aAgBH,gBAAG;;;AACL,YAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,IACxB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,AAAC,IACvD,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,AAAC,EAAE;AACzD,iBAAM;SACP;;AAED,YAAI,MAAM,YAAA,CAAA;AACV,YAAI,QAAQ,YAAA,CAAA;AACZ,YAAI,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;AACxD,YAAI,QAAQ,GAAI,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;;AAE1D,YAAI,SAAS,EAAE;AACb,kBAAQ,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;AAC1D,kBAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;;AAExC,cAAI,QAAQ,EAAE;AACZ,oBAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;WAC3C;SACF;;AAED,YAAI,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;AAClC,uBAAa,EAAE,IAAI,CAAC,QAAQ;SAC7B,CAAC,CAAA;;AAEF,YAAI,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;AAClC,uBAAa,EAAE,QAAQ;SACxB,CAAC,CAAA;;AAEF,YAAI,QAAQ,EAAE;AACZ,WAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;SAC/B;;AAED,SAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;;AAEnC,YAAI,SAAS,CAAC,kBAAkB,EAAE,IAC9B,SAAS,CAAC,kBAAkB,EAAE,AAAC,EAAE;AACnC,iBAAM;SACP;;AAED,YAAI,QAAQ,EAAE;AACZ,gBAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;SACxB;;AAED,YAAI,CAAC,SAAS,CACZ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EACxC,SAAS,CACV,CAAA;;AAED,YAAI,QAAQ,GAAG,SAAX,QAAQ,GAAS;AACnB,cAAI,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE;AACtC,yBAAa,EAAE,MAAK,QAAQ;WAC7B,CAAC,CAAA;;AAEF,cAAI,UAAU,GAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;AACrC,yBAAa,EAAE,QAAQ;WACxB,CAAC,CAAA;;AAEF,WAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;AAChC,WAAC,CAAC,MAAK,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;SACrC,CAAA;;AAED,YAAI,MAAM,EAAE;AACV,cAAI,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;SACpD,MAAM;AACL,kBAAQ,EAAE,CAAA;SACX;OACF;;;aAEM,mBAAG;AACR,SAAC,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;AACtC,YAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;OACrB;;;;;;aAKQ,mBAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE;AACtC,YAAI,MAAM,GAAY,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;AACjE,YAAI,eAAe,GAAG,QAAQ,IACzB,IAAI,CAAC,qBAAqB,EAAE,KAC3B,AAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAC3C,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA,AAAC,CAAA;;AAEpD,YAAI,QAAQ,GAAG,CAAC,CAAC,KAAK,CACpB,IAAI,CAAC,mBAAmB,EACxB,IAAI,EACJ,OAAO,EACP,MAAM,EACN,eAAe,EACf,QAAQ,CACT,CAAA;;AAED,YAAI,MAAM,IAAI,eAAe,EAAE;AAC7B,WAAC,CAAC,MAAM,CAAC,CACN,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,CAClC,oBAAoB,CAAC,mBAAmB,CAAC,CAAA;SAE7C,MAAM;AACL,kBAAQ,EAAE,CAAA;SACX;;AAED,YAAI,MAAM,EAAE;AACV,WAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;SACpC;OACF;;;aAEkB,6BAAC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE;AAC9D,YAAI,MAAM,EAAE;AACV,WAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;;AAEvC,cAAI,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAChC,QAAQ,CAAC,qBAAqB,CAC/B,CAAC,CAAC,CAAC,CAAA;AACJ,cAAI,aAAa,EAAE;AACjB,aAAC,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;WAC/C;;AAED,cAAI,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;AAC1D,cAAI,YAAY,EAAE;AAChB,wBAAY,CAAC,YAAY,CAAC,eAAe,EAAE,KAAK,CAAC,CAAA;WAClD;SACF;;AAED,SAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;;AAErC,YAAI,aAAa,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;AAC5D,YAAI,aAAa,EAAE;AACjB,uBAAa,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,CAAA;SAClD;;AAED,YAAI,eAAe,EAAE;AACnB,cAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;AACpB,WAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;SAClC,MAAM;AACL,WAAC,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;SACvC;;AAED,YAAI,OAAO,CAAC,UAAU,IAClB,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC,AAAC,EAAE;;AAE5D,cAAI,eAAe,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;AACjE,cAAI,eAAe,EAAE;AACnB,aAAC,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;WAC9C;;AAED,uBAAa,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;AACxD,cAAI,aAAa,EAAE;AACjB,yBAAa,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,CAAA;WAClD;SACF;;AAED,YAAI,QAAQ,EAAE;AACZ,kBAAQ,EAAE,CAAA;SACX;OACF;;;;;;WAlKiB,YAAG;AACnB,eAAO,OAAO,CAAA;OACf;;;;;;aAqKsB,0BAAC,MAAM,EAAE;AAC9B,eAAO,IAAI,CAAC,IAAI,CAAC,YAAY;AAC3B,cAAI,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,CAAA;AACnB,cAAI,IAAI,GAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;;AAEhC,cAAI,CAAC,IAAI,EAAE;AACT,gBAAI,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAA;AAC3B,iBAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;WAC3B;;AAED,cAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAC9B,gBAAI,CAAC,MAAM,CAAC,EAAE,CAAA;WACf;SACF,CAAC,CAAA;OACH;;;WA9LG,GAAG;;;;;;;;;AAyMT,GAAC,CAAC,QAAQ,CAAC,CACR,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,QAAQ,CAAC,WAAW,EAAE,UAAU,KAAK,EAAE;AACjE,SAAK,CAAC,cAAc,EAAE,CAAA;AACtB,OAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAA;GAC3C,CAAC,CAAA;;;;;;;;AASF,GAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAe,GAAG,CAAC,gBAAgB,CAAA;AAC7C,GAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW,GAAG,GAAG,CAAA;AAC5B,GAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,UAAU,GAAI,YAAY;AACnC,KAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAA;AAC/B,WAAO,GAAG,CAAC,gBAAgB,CAAA;GAC5B,CAAA;;AAED,SAAO,GAAG,CAAA;CAEX,CAAA,CAAE,MAAM,CAAC,CAAA","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">&lsaquo;</a>'
+ '<a class="right carousel-control" href="#myCarousel" data-slide="next">&rsaquo;</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="&lt;b&gt;@fat&lt;/b&gt;">Tooltip trigger</a>')
+ QUnit.test('should allow html entities', function (assert) {
+ assert.expect(2)
+ var $tooltip = $('<a href="#" rel="tooltip" title="&lt;b&gt;@fat&lt;/b&gt;"/>')
.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">
+ &#9776;
+ </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 &lt;body&gt; 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;
}