Upgrade to Bootstrap 3.3.5

pull/4/head
Mark McDowall 9 years ago
parent 2b6bac8104
commit 6f8cbc22be

@ -0,0 +1,304 @@
{
"always-semicolon": true,
"block-indent": 2,
"color-case": "lower",
"color-shorthand": true,
"element-case": "lower",
"eof-newline": true,
"leading-zero": false,
"remove-empty-rulesets": true,
"space-after-colon": 1,
"space-after-combinator": 1,
"space-before-selector-delimiter": 0,
"space-between-declarations": "\n",
"space-after-opening-brace": "\n",
"space-before-closing-brace": "\n",
"space-before-colon": 0,
"space-before-combinator": 1,
"space-before-opening-brace": 1,
"strip-spaces": true,
"unitless-zero": true,
"vendor-prefix-align": true,
"sort-order": [
[
"position",
"top",
"right",
"bottom",
"left",
"z-index",
"display",
"float",
"width",
"min-width",
"max-width",
"height",
"min-height",
"max-height",
"-webkit-box-sizing",
"-moz-box-sizing",
"box-sizing",
"-webkit-appearance",
"padding",
"padding-top",
"padding-right",
"padding-bottom",
"padding-left",
"margin",
"margin-top",
"margin-right",
"margin-bottom",
"margin-left",
"overflow",
"overflow-x",
"overflow-y",
"-webkit-overflow-scrolling",
"-ms-overflow-x",
"-ms-overflow-y",
"-ms-overflow-style",
"clip",
"clear",
"font",
"font-family",
"font-size",
"font-style",
"font-weight",
"font-variant",
"font-size-adjust",
"font-stretch",
"font-effect",
"font-emphasize",
"font-emphasize-position",
"font-emphasize-style",
"font-smooth",
"-webkit-hyphens",
"-moz-hyphens",
"hyphens",
"line-height",
"color",
"text-align",
"-webkit-text-align-last",
"-moz-text-align-last",
"-ms-text-align-last",
"text-align-last",
"text-emphasis",
"text-emphasis-color",
"text-emphasis-style",
"text-emphasis-position",
"text-decoration",
"text-indent",
"text-justify",
"text-outline",
"-ms-text-overflow",
"text-overflow",
"text-overflow-ellipsis",
"text-overflow-mode",
"text-shadow",
"text-transform",
"text-wrap",
"-webkit-text-size-adjust",
"-ms-text-size-adjust",
"letter-spacing",
"-ms-word-break",
"word-break",
"word-spacing",
"-ms-word-wrap",
"word-wrap",
"-moz-tab-size",
"-o-tab-size",
"tab-size",
"white-space",
"vertical-align",
"list-style",
"list-style-position",
"list-style-type",
"list-style-image",
"pointer-events",
"-ms-touch-action",
"touch-action",
"cursor",
"visibility",
"zoom",
"flex-direction",
"flex-order",
"flex-pack",
"flex-align",
"table-layout",
"empty-cells",
"caption-side",
"border-spacing",
"border-collapse",
"content",
"quotes",
"counter-reset",
"counter-increment",
"resize",
"-webkit-user-select",
"-moz-user-select",
"-ms-user-select",
"-o-user-select",
"user-select",
"nav-index",
"nav-up",
"nav-right",
"nav-down",
"nav-left",
"background",
"background-color",
"background-image",
"-ms-filter:\\'progid:DXImageTransform.Microsoft.gradient",
"filter:progid:DXImageTransform.Microsoft.gradient",
"filter:progid:DXImageTransform.Microsoft.AlphaImageLoader",
"filter",
"background-repeat",
"background-attachment",
"background-position",
"background-position-x",
"background-position-y",
"-webkit-background-clip",
"-moz-background-clip",
"background-clip",
"background-origin",
"-webkit-background-size",
"-moz-background-size",
"-o-background-size",
"background-size",
"border",
"border-color",
"border-style",
"border-width",
"border-top",
"border-top-color",
"border-top-style",
"border-top-width",
"border-right",
"border-right-color",
"border-right-style",
"border-right-width",
"border-bottom",
"border-bottom-color",
"border-bottom-style",
"border-bottom-width",
"border-left",
"border-left-color",
"border-left-style",
"border-left-width",
"border-radius",
"border-top-left-radius",
"border-top-right-radius",
"border-bottom-right-radius",
"border-bottom-left-radius",
"-webkit-border-image",
"-moz-border-image",
"-o-border-image",
"border-image",
"-webkit-border-image-source",
"-moz-border-image-source",
"-o-border-image-source",
"border-image-source",
"-webkit-border-image-slice",
"-moz-border-image-slice",
"-o-border-image-slice",
"border-image-slice",
"-webkit-border-image-width",
"-moz-border-image-width",
"-o-border-image-width",
"border-image-width",
"-webkit-border-image-outset",
"-moz-border-image-outset",
"-o-border-image-outset",
"border-image-outset",
"-webkit-border-image-repeat",
"-moz-border-image-repeat",
"-o-border-image-repeat",
"border-image-repeat",
"outline",
"outline-width",
"outline-style",
"outline-color",
"outline-offset",
"-webkit-box-shadow",
"-moz-box-shadow",
"box-shadow",
"filter:progid:DXImageTransform.Microsoft.Alpha(Opacity",
"-ms-filter:\\'progid:DXImageTransform.Microsoft.Alpha",
"opacity",
"-ms-interpolation-mode",
"-webkit-transition",
"-moz-transition",
"-ms-transition",
"-o-transition",
"transition",
"-webkit-transition-delay",
"-moz-transition-delay",
"-ms-transition-delay",
"-o-transition-delay",
"transition-delay",
"-webkit-transition-timing-function",
"-moz-transition-timing-function",
"-ms-transition-timing-function",
"-o-transition-timing-function",
"transition-timing-function",
"-webkit-transition-duration",
"-moz-transition-duration",
"-ms-transition-duration",
"-o-transition-duration",
"transition-duration",
"-webkit-transition-property",
"-moz-transition-property",
"-ms-transition-property",
"-o-transition-property",
"transition-property",
"-webkit-transform",
"-moz-transform",
"-ms-transform",
"-o-transform",
"transform",
"-webkit-transform-origin",
"-moz-transform-origin",
"-ms-transform-origin",
"-o-transform-origin",
"transform-origin",
"-webkit-animation",
"-moz-animation",
"-ms-animation",
"-o-animation",
"animation",
"-webkit-animation-name",
"-moz-animation-name",
"-ms-animation-name",
"-o-animation-name",
"animation-name",
"-webkit-animation-duration",
"-moz-animation-duration",
"-ms-animation-duration",
"-o-animation-duration",
"animation-duration",
"-webkit-animation-play-state",
"-moz-animation-play-state",
"-ms-animation-play-state",
"-o-animation-play-state",
"animation-play-state",
"-webkit-animation-timing-function",
"-moz-animation-timing-function",
"-ms-animation-timing-function",
"-o-animation-timing-function",
"animation-timing-function",
"-webkit-animation-delay",
"-moz-animation-delay",
"-ms-animation-delay",
"-o-animation-delay",
"animation-delay",
"-webkit-animation-iteration-count",
"-moz-animation-iteration-count",
"-ms-animation-iteration-count",
"-o-animation-iteration-count",
"animation-iteration-count",
"-webkit-animation-direction",
"-moz-animation-direction",
"-ms-animation-direction",
"-o-animation-direction",
"animation-direction"
]
]
}

@ -0,0 +1,19 @@
{
"adjoining-classes": false,
"box-sizing": false,
"box-model": false,
"compatible-vendor-prefixes": false,
"floats": false,
"font-sizes": false,
"gradients": false,
"important": false,
"known-properties": false,
"outline-none": false,
"qualified-headings": false,
"regex-selectors": false,
"shorthand": false,
"text-indent": false,
"unique-headings": false,
"universal-selector": false,
"unqualified-attributes": false
}

@ -12,7 +12,7 @@
font-weight: @badge-font-weight; font-weight: @badge-font-weight;
color: @badge-color; color: @badge-color;
line-height: @badge-line-height; line-height: @badge-line-height;
vertical-align: baseline; vertical-align: middle;
white-space: nowrap; white-space: nowrap;
text-align: center; text-align: center;
background-color: @badge-bg; background-color: @badge-bg;

@ -1,3 +1,9 @@
/*!
* Bootstrap v3.3.5 (http://getbootstrap.com)
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
// Core variables and mixins // Core variables and mixins
@import "variables.less"; @import "variables.less";
@import "mixins.less"; @import "mixins.less";

@ -36,6 +36,7 @@
margin-left: -5px; // Offset the first child's margin margin-left: -5px; // Offset the first child's margin
&:extend(.clearfix all); &:extend(.clearfix all);
.btn,
.btn-group, .btn-group,
.input-group { .input-group {
float: left; float: left;
@ -172,11 +173,11 @@
border-radius: 0; border-radius: 0;
} }
&:first-child:not(:last-child) { &:first-child:not(:last-child) {
border-top-right-radius: @border-radius-base; border-top-right-radius: @btn-border-radius-base;
.border-bottom-radius(0); .border-bottom-radius(0);
} }
&:last-child:not(:first-child) { &:last-child:not(:first-child) {
border-bottom-left-radius: @border-radius-base; border-bottom-left-radius: @btn-border-radius-base;
.border-top-radius(0); .border-top-radius(0);
} }
} }

@ -17,7 +17,7 @@
background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
border: 1px solid transparent; border: 1px solid transparent;
white-space: nowrap; white-space: nowrap;
.button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @border-radius-base); .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @btn-border-radius-base);
.user-select(none); .user-select(none);
&, &,
@ -47,10 +47,16 @@
&[disabled], &[disabled],
fieldset[disabled] & { fieldset[disabled] & {
cursor: @cursor-disabled; cursor: @cursor-disabled;
pointer-events: none; // Future-proof disabling of clicks
.opacity(.65); .opacity(.65);
.box-shadow(none); .box-shadow(none);
} }
a& {
&.disabled,
fieldset[disabled] & {
pointer-events: none; // Future-proof disabling of clicks on `<a>` elements
}
}
} }
@ -126,14 +132,14 @@
.btn-lg { .btn-lg {
// line-height: ensure even-numbered height of button next to large input // line-height: ensure even-numbered height of button next to large input
.button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large); .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @btn-border-radius-large);
} }
.btn-sm { .btn-sm {
// line-height: ensure proper height of button next to small input // line-height: ensure proper height of button next to small input
.button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small); .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);
} }
.btn-xs { .btn-xs {
.button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @border-radius-small); .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);
} }

@ -29,7 +29,7 @@
@media all and (transform-3d), (-webkit-transform-3d) { @media all and (transform-3d), (-webkit-transform-3d) {
.transition-transform(~'0.6s ease-in-out'); .transition-transform(~'0.6s ease-in-out');
.backface-visibility(~'hidden'); .backface-visibility(~'hidden');
.perspective(1000); .perspective(1000px);
&.next, &.next,
&.active.right { &.active.right {
@ -130,6 +130,7 @@
.glyphicon-chevron-right { .glyphicon-chevron-right {
position: absolute; position: absolute;
top: 50%; top: 50%;
margin-top: -10px;
z-index: 5; z-index: 5;
display: inline-block; display: inline-block;
} }
@ -147,7 +148,6 @@
.icon-next { .icon-next {
width: 20px; width: 20px;
height: 20px; height: 20px;
margin-top: -10px;
line-height: 1; line-height: 1;
font-family: serif; font-family: serif;
} }

@ -11,6 +11,7 @@
margin-left: 2px; margin-left: 2px;
vertical-align: middle; vertical-align: middle;
border-top: @caret-width-base dashed; border-top: @caret-width-base dashed;
border-top: @caret-width-base solid ~"\9"; // IE8
border-right: @caret-width-base solid transparent; border-right: @caret-width-base solid transparent;
border-left: @caret-width-base solid transparent; border-left: @caret-width-base solid transparent;
} }
@ -184,7 +185,8 @@
// Reverse the caret // Reverse the caret
.caret { .caret {
border-top: 0; border-top: 0;
border-bottom: @caret-width-base solid; border-bottom: @caret-width-base dashed;
border-bottom: @caret-width-base solid ~"\9"; // IE8
content: ""; content: "";
} }
// Different positioning for bottom up menu // Different positioning for bottom up menu

@ -56,7 +56,6 @@ input[type="checkbox"] {
line-height: normal; line-height: normal;
} }
// Set the height of file controls to match text inputs
input[type="file"] { input[type="file"] {
display: block; display: block;
} }
@ -175,13 +174,17 @@ input[type="search"] {
// text within the input to become vertically misaligned. As a workaround, we // text within the input to become vertically misaligned. As a workaround, we
// set a pixel line-height that matches the given height of the input, but only // set a pixel line-height that matches the given height of the input, but only
// for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848 // for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848
//
// Note that as of 8.3, iOS doesn't support `datetime` or `week`.
@media screen and (-webkit-min-device-pixel-ratio: 0) { @media screen and (-webkit-min-device-pixel-ratio: 0) {
input[type="date"], input[type="date"],
input[type="time"], input[type="time"],
input[type="datetime-local"], input[type="datetime-local"],
input[type="month"] { input[type="month"] {
line-height: @input-height-base; &.form-control {
line-height: @input-height-base;
}
&.input-sm, &.input-sm,
.input-group-sm & { .input-group-sm & {
@ -322,14 +325,26 @@ input[type="checkbox"] {
} }
.form-group-sm { .form-group-sm {
.form-control { .form-control {
.input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @input-border-radius-small);
}
.form-control-static {
height: @input-height-small; height: @input-height-small;
padding: @padding-small-vertical @padding-small-horizontal; padding: @padding-small-vertical @padding-small-horizontal;
font-size: @font-size-small; font-size: @font-size-small;
line-height: @line-height-small; line-height: @line-height-small;
border-radius: @input-border-radius-small;
}
select.form-control {
height: @input-height-small;
line-height: @input-height-small;
}
textarea.form-control,
select[multiple].form-control {
height: auto;
}
.form-control-static {
height: @input-height-small;
min-height: (@line-height-computed + @font-size-small); min-height: (@line-height-computed + @font-size-small);
padding: (@padding-small-vertical + 1) @padding-small-horizontal;
font-size: @font-size-small;
line-height: @line-height-small;
} }
} }
@ -338,14 +353,26 @@ input[type="checkbox"] {
} }
.form-group-lg { .form-group-lg {
.form-control { .form-control {
.input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @input-border-radius-large);
}
.form-control-static {
height: @input-height-large; height: @input-height-large;
padding: @padding-large-vertical @padding-large-horizontal; padding: @padding-large-vertical @padding-large-horizontal;
font-size: @font-size-large; font-size: @font-size-large;
line-height: @line-height-large; line-height: @line-height-large;
border-radius: @input-border-radius-large;
}
select.form-control {
height: @input-height-large;
line-height: @input-height-large;
}
textarea.form-control,
select[multiple].form-control {
height: auto;
}
.form-control-static {
height: @input-height-large;
min-height: (@line-height-computed + @font-size-large); min-height: (@line-height-computed + @font-size-large);
padding: (@padding-large-vertical + 1) @padding-large-horizontal;
font-size: @font-size-large;
line-height: @line-height-large;
} }
} }
@ -376,12 +403,16 @@ input[type="checkbox"] {
text-align: center; text-align: center;
pointer-events: none; pointer-events: none;
} }
.input-lg + .form-control-feedback { .input-lg + .form-control-feedback,
.input-group-lg + .form-control-feedback,
.form-group-lg .form-control + .form-control-feedback {
width: @input-height-large; width: @input-height-large;
height: @input-height-large; height: @input-height-large;
line-height: @input-height-large; line-height: @input-height-large;
} }
.input-sm + .form-control-feedback { .input-sm + .form-control-feedback,
.input-group-sm + .form-control-feedback,
.form-group-sm .form-control + .form-control-feedback {
width: @input-height-small; width: @input-height-small;
height: @input-height-small; height: @input-height-small;
line-height: @input-height-small; line-height: @input-height-small;
@ -550,7 +581,7 @@ input[type="checkbox"] {
// Reposition the icon because it's now within a grid column and columns have // Reposition the icon because it's now within a grid column and columns have
// `position: relative;` on them. Also accounts for the grid gutter padding. // `position: relative;` on them. Also accounts for the grid gutter padding.
.has-feedback .form-control-feedback { .has-feedback .form-control-feedback {
right: (@grid-gutter-width / 2); right: floor((@grid-gutter-width / 2));
} }
// Form group sizes // Form group sizes
@ -561,6 +592,7 @@ input[type="checkbox"] {
@media (min-width: @screen-sm-min) { @media (min-width: @screen-sm-min) {
.control-label { .control-label {
padding-top: ((@padding-large-vertical * @line-height-large) + 1); padding-top: ((@padding-large-vertical * @line-height-large) + 1);
font-size: @font-size-large;
} }
} }
} }
@ -568,6 +600,7 @@ input[type="checkbox"] {
@media (min-width: @screen-sm-min) { @media (min-width: @screen-sm-min) {
.control-label { .control-label {
padding-top: (@padding-small-vertical + 1); padding-top: (@padding-small-vertical + 1);
font-size: @font-size-small;
} }
} }
} }

@ -160,6 +160,7 @@
&:last-child { &:last-child {
> .btn, > .btn,
> .btn-group { > .btn-group {
z-index: 2;
margin-left: -1px; margin-left: -1px;
} }
} }

@ -4,7 +4,8 @@
.jumbotron { .jumbotron {
padding: @jumbotron-padding (@jumbotron-padding / 2); padding-top: @jumbotron-padding;
padding-bottom: @jumbotron-padding;
margin-bottom: @jumbotron-padding; margin-bottom: @jumbotron-padding;
color: @jumbotron-color; color: @jumbotron-color;
background-color: @jumbotron-bg; background-color: @jumbotron-bg;
@ -34,7 +35,8 @@
} }
@media screen and (min-width: @screen-sm-min) { @media screen and (min-width: @screen-sm-min) {
padding: (@jumbotron-padding * 1.6) 0; padding-top: (@jumbotron-padding * 1.6);
padding-bottom: (@jumbotron-padding * 1.6);
.container &, .container &,
.container-fluid & { .container-fluid & {
@ -44,7 +46,7 @@
h1, h1,
.h1 { .h1 {
font-size: (@font-size-base * 4.5); font-size: @jumbotron-heading-font-size;
} }
} }
} }

@ -38,12 +38,13 @@
} }
// Linked list items // Interactive list items
// //
// Use anchor elements instead of `li`s or `div`s to create linked list items. // Use anchor or button elements instead of `li`s or `div`s to create interactive items.
// Includes an extra `.active` modifier class for showing selected items. // Includes an extra `.active` modifier class for showing selected items.
a.list-group-item { a.list-group-item,
button.list-group-item {
color: @list-group-link-color; color: @list-group-link-color;
.list-group-item-heading { .list-group-item-heading {
@ -59,6 +60,11 @@ a.list-group-item {
} }
} }
button.list-group-item {
width: 100%;
text-align: left;
}
.list-group-item { .list-group-item {
// Disabled state // Disabled state
&.disabled, &.disabled,

@ -19,6 +19,11 @@
.media-object { .media-object {
display: block; display: block;
// Fix collapse in webkit from max-width: 100% and display: table-cell.
&.img-thumbnail {
max-width: none;
}
} }
.media-right, .media-right,

@ -11,6 +11,7 @@
@import "mixins/responsive-visibility.less"; @import "mixins/responsive-visibility.less";
@import "mixins/size.less"; @import "mixins/size.less";
@import "mixins/tab-focus.less"; @import "mixins/tab-focus.less";
@import "mixins/reset-text.less";
@import "mixins/text-emphasis.less"; @import "mixins/text-emphasis.less";
@import "mixins/text-overflow.less"; @import "mixins/text-overflow.less";
@import "mixins/vendor-prefixes.less"; @import "mixins/vendor-prefixes.less";

@ -2,7 +2,8 @@
.bg-variant(@color) { .bg-variant(@color) {
background-color: @color; background-color: @color;
a&:hover { a&:hover,
a&:focus {
background-color: darken(@color, 10%); background-color: darken(@color, 10%);
} }
} }

@ -8,15 +8,31 @@
background-color: @background; background-color: @background;
border-color: @border; border-color: @border;
&:hover,
&:focus, &:focus,
&.focus, &.focus {
color: @color;
background-color: darken(@background, 10%);
border-color: darken(@border, 25%);
}
&:hover {
color: @color;
background-color: darken(@background, 10%);
border-color: darken(@border, 12%);
}
&:active, &:active,
&.active, &.active,
.open > .dropdown-toggle& { .open > .dropdown-toggle& {
color: @color; color: @color;
background-color: darken(@background, 10%); background-color: darken(@background, 10%);
border-color: darken(@border, 12%); border-color: darken(@border, 12%);
&:hover,
&:focus,
&.focus {
color: @color;
background-color: darken(@background, 17%);
border-color: darken(@border, 25%);
}
} }
&:active, &:active,
&.active, &.active,

@ -19,8 +19,8 @@
// Prevent columns from collapsing when empty // Prevent columns from collapsing when empty
min-height: 1px; min-height: 1px;
// Inner gutter via padding // Inner gutter via padding
padding-left: (@grid-gutter-width / 2); padding-left: ceil((@grid-gutter-width / 2));
padding-right: (@grid-gutter-width / 2); padding-right: floor((@grid-gutter-width / 2));
} }
} }
.col(1); // kickstart it .col(1); // kickstart it

@ -13,8 +13,8 @@
// Creates a wrapper for a series of columns // Creates a wrapper for a series of columns
.make-row(@gutter: @grid-gutter-width) { .make-row(@gutter: @grid-gutter-width) {
margin-left: (@gutter / -2); margin-left: ceil((@gutter / -2));
margin-right: (@gutter / -2); margin-right: floor((@gutter / -2));
&:extend(.clearfix all); &:extend(.clearfix all);
} }

@ -1,6 +1,6 @@
// CSS image replacement // CSS image replacement
// //
// Heads up! v3 launched with with only `.hide-text()`, but per our pattern for // Heads up! v3 launched with only `.hide-text()`, but per our pattern for
// mixins being reused as classes with the same name, this doesn't hold up. As // mixins being reused as classes with the same name, this doesn't hold up. As
// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`. // of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`.
// //

@ -5,7 +5,8 @@
color: @color; color: @color;
background-color: @background; background-color: @background;
a& { a&,
button& {
color: @color; color: @color;
.list-group-item-heading { .list-group-item-heading {

@ -1,11 +1,12 @@
// Pagination // Pagination
.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @border-radius) { .pagination-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {
> li { > li {
> a, > a,
> span { > span {
padding: @padding-vertical @padding-horizontal; padding: @padding-vertical @padding-horizontal;
font-size: @font-size; font-size: @font-size;
line-height: @line-height;
} }
&:first-child { &:first-child {
> a, > a,

@ -0,0 +1,18 @@
.reset-text() {
font-family: @font-family-base;
// We deliberately do NOT reset font-size.
font-style: normal;
font-weight: normal;
letter-spacing: normal;
line-break: auto;
line-height: @line-height-base;
text-align: left; // Fallback for where `start` is not supported
text-align: start;
text-decoration: none;
text-shadow: none;
text-transform: none;
white-space: normal;
word-break: normal;
word-spacing: normal;
word-wrap: normal;
}

@ -4,7 +4,7 @@
// More easily include all the states for responsive-utilities.less. // More easily include all the states for responsive-utilities.less.
.responsive-visibility() { .responsive-visibility() {
display: block !important; display: block !important;
table& { display: table; } table& { display: table !important; }
tr& { display: table-row !important; } tr& { display: table-row !important; }
th&, th&,
td& { display: table-cell !important; } td& { display: table-cell !important; }

@ -2,7 +2,8 @@
.text-emphasis-variant(@color) { .text-emphasis-variant(@color) {
color: @color; color: @color;
a&:hover { a&:hover,
a&:focus {
color: darken(@color, 10%); color: darken(@color, 10%);
} }
} }

@ -1,9 +1,9 @@
/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ /*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
// //
// 1. Set default font family to sans-serif. // 1. Set default font family to sans-serif.
// 2. Prevent iOS text size adjust after orientation change, without disabling // 2. Prevent iOS and IE text size adjust after device orientation change,
// user zoom. // without disabling user zoom.
// //
html { html {
@ -71,7 +71,7 @@ audio:not([controls]) {
// //
// Address `[hidden]` styling not present in IE 8/9/10. // Address `[hidden]` styling not present in IE 8/9/10.
// Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. // Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.
// //
[hidden], [hidden],
@ -91,7 +91,8 @@ a {
} }
// //
// Improve readability when focused and also mouse hovered in all browsers. // Improve readability of focused elements when they are also in an
// active/hover state.
// //
a:active, a:active,
@ -209,7 +210,6 @@ figure {
// //
hr { hr {
-moz-box-sizing: content-box;
box-sizing: content-box; box-sizing: content-box;
height: 0; height: 0;
} }
@ -350,15 +350,12 @@ input[type="number"]::-webkit-outer-spin-button {
// //
// 1. Address `appearance` set to `searchfield` in Safari and Chrome. // 1. Address `appearance` set to `searchfield` in Safari and Chrome.
// 2. Address `box-sizing` set to `border-box` in Safari and Chrome // 2. Address `box-sizing` set to `border-box` in Safari and Chrome.
// (include `-moz` to future-proof).
// //
input[type="search"] { input[type="search"] {
-webkit-appearance: textfield; // 1 -webkit-appearance: textfield; // 1
-moz-box-sizing: content-box; box-sizing: content-box; //2
-webkit-box-sizing: content-box; // 2
box-sizing: content-box;
} }
// //

@ -40,6 +40,7 @@
> li > span { > li > span {
&:hover, &:hover,
&:focus { &:focus {
z-index: 3;
color: @pagination-hover-color; color: @pagination-hover-color;
background-color: @pagination-hover-bg; background-color: @pagination-hover-bg;
border-color: @pagination-hover-border; border-color: @pagination-hover-border;
@ -79,10 +80,10 @@
// Large // Large
.pagination-lg { .pagination-lg {
.pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @border-radius-large); .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);
} }
// Small // Small
.pagination-sm { .pagination-sm {
.pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @border-radius-small); .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);
} }

@ -76,6 +76,7 @@
.border-top-radius((@panel-border-radius - 1)); .border-top-radius((@panel-border-radius - 1));
} }
} }
// Add border bottom radius for last one // Add border bottom radius for last one
&:last-child { &:last-child {
.list-group-item:last-child { .list-group-item:last-child {
@ -84,6 +85,11 @@
} }
} }
} }
> .panel-heading + .panel-collapse > .list-group {
.list-group-item:first-child {
.border-top-radius(0);
}
}
} }
// Collapse space between when there's no additional content. // Collapse space between when there's no additional content.
.panel-heading + .list-group { .panel-heading + .list-group {

@ -11,12 +11,11 @@
display: none; display: none;
max-width: @popover-max-width; max-width: @popover-max-width;
padding: 1px; padding: 1px;
// Reset font and text properties given new insertion method // Our parent element can be arbitrary since popovers are by default inserted as a sibling of their target element.
font-family: @font-family-base; // So reset our font and text properties to avoid inheriting weird values.
.reset-text();
font-size: @font-size-base; font-size: @font-size-base;
font-weight: normal;
line-height: @line-height-base;
text-align: left;
background-color: @popover-bg; background-color: @popover-bg;
background-clip: padding-box; background-clip: padding-box;
border: 1px solid @popover-fallback-border-color; border: 1px solid @popover-fallback-border-color;
@ -24,9 +23,6 @@
border-radius: @border-radius-large; border-radius: @border-radius-large;
.box-shadow(0 5px 10px rgba(0,0,0,.2)); .box-shadow(0 5px 10px rgba(0,0,0,.2));
// Overrides for proper insertion
white-space: normal;
// Offset the popover to account for the popover arrow // Offset the popover to account for the popover arrow
&.top { margin-top: -@popover-arrow-width; } &.top { margin-top: -@popover-arrow-width; }
&.right { margin-left: @popover-arrow-width; } &.right { margin-left: @popover-arrow-width; }

@ -67,12 +67,6 @@
} }
// Bootstrap specific changes start // Bootstrap specific changes start
//
// Chrome (OSX) fix for https://github.com/twbs/bootstrap/issues/11245
// Once fixed, we can just straight up remove this.
select {
background: #fff !important;
}
// Bootstrap components // Bootstrap components
.navbar { .navbar {

@ -155,8 +155,7 @@ hr {
// Fixes "clickability" issue (and more generally, the firing of events such as focus as well) // Fixes "clickability" issue (and more generally, the firing of events such as focus as well)
// for traditionally non-focusable elements with role="button" // for traditionally non-focusable elements with role="button"
// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile // see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
// Upstream patch for normalize.css submitted: https://github.com/necolas/normalize.css/pull/379 - remove this fix once that is merged
[role="button"] { [role="button"] {
cursor: pointer; cursor: pointer;
} }

@ -1,3 +1,8 @@
/*!
* Bootstrap v3.3.5 (http://getbootstrap.com)
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
// //
// Load core variables and mixins // Load core variables and mixins
@ -28,6 +33,12 @@
.box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
} }
&.disabled,
&[disabled],
fieldset[disabled] & {
.box-shadow(none);
}
.badge { .badge {
text-shadow: none; text-shadow: none;
} }
@ -53,10 +64,17 @@
} }
&.disabled, &.disabled,
&:disabled, &[disabled],
&[disabled] { fieldset[disabled] & {
background-color: darken(@btn-color, 12%); &,
background-image: none; &:hover,
&:focus,
&.focus,
&:active,
&.active {
background-color: darken(@btn-color, 12%);
background-image: none;
}
} }
} }
@ -132,7 +150,7 @@
.navbar-inverse { .navbar-inverse {
#gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg); #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);
.reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257 .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257
border-radius: @navbar-border-radius;
.navbar-nav > .open > a, .navbar-nav > .open > a,
.navbar-nav > .active > a { .navbar-nav > .active > a {
#gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%)); #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%));

@ -8,11 +8,11 @@
position: absolute; position: absolute;
z-index: @zindex-tooltip; z-index: @zindex-tooltip;
display: block; display: block;
// Reset font and text properties given new insertion method // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.
font-family: @font-family-base; // So reset our font and text properties to avoid inheriting weird values.
.reset-text();
font-size: @font-size-small; font-size: @font-size-small;
font-weight: normal;
line-height: 1.4;
.opacity(0); .opacity(0);
&.in { .opacity(@tooltip-opacity); } &.in { .opacity(@tooltip-opacity); }
@ -28,7 +28,6 @@
padding: 3px 8px; padding: 3px 8px;
color: @tooltip-color; color: @tooltip-color;
text-align: center; text-align: center;
text-decoration: none;
background-color: @tooltip-bg; background-color: @tooltip-bg;
border-radius: @border-radius-base; border-radius: @border-radius-base;
} }

@ -170,6 +170,11 @@
@btn-link-disabled-color: @gray-light; @btn-link-disabled-color: @gray-light;
// Allows for customizing button radius independently from global border radius
@btn-border-radius-base: @border-radius-base;
@btn-border-radius-large: @border-radius-large;
@btn-border-radius-small: @border-radius-small;
//== Forms //== Forms
// //
@ -383,7 +388,7 @@
@navbar-default-toggle-border-color: #ddd; @navbar-default-toggle-border-color: #ddd;
// Inverted navbar //=== Inverted navbar
// Reset inverted navbar basics // Reset inverted navbar basics
@navbar-inverse-color: lighten(@gray-light, 15%); @navbar-inverse-color: lighten(@gray-light, 15%);
@navbar-inverse-bg: #222; @navbar-inverse-bg: #222;
@ -484,6 +489,7 @@
@jumbotron-bg: @gray-lighter; @jumbotron-bg: @gray-lighter;
@jumbotron-heading-color: inherit; @jumbotron-heading-color: inherit;
@jumbotron-font-size: ceil((@font-size-base * 1.5)); @jumbotron-font-size: ceil((@font-size-base * 1.5));
@jumbotron-heading-font-size: ceil((@font-size-base * 4.5));
//== Form states and alerts //== Form states and alerts

@ -1,7 +1,7 @@
/*! /*!
* Bootstrap v3.3.4 (http://getbootstrap.com) * Bootstrap v3.3.5 (http://getbootstrap.com)
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under the MIT license
*/ */
if (typeof jQuery === 'undefined') { if (typeof jQuery === 'undefined') {
@ -17,7 +17,7 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: transition.js v3.3.4 * Bootstrap: transition.js v3.3.5
* http://getbootstrap.com/javascript/#transitions * http://getbootstrap.com/javascript/#transitions
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
@ -77,7 +77,7 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: alert.js v3.3.4 * Bootstrap: alert.js v3.3.5
* http://getbootstrap.com/javascript/#alerts * http://getbootstrap.com/javascript/#alerts
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
@ -96,7 +96,7 @@ if (typeof jQuery === 'undefined') {
$(el).on('click', dismiss, this.close) $(el).on('click', dismiss, this.close)
} }
Alert.VERSION = '3.3.4' Alert.VERSION = '3.3.5'
Alert.TRANSITION_DURATION = 150 Alert.TRANSITION_DURATION = 150
@ -172,7 +172,7 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: button.js v3.3.4 * Bootstrap: button.js v3.3.5
* http://getbootstrap.com/javascript/#buttons * http://getbootstrap.com/javascript/#buttons
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
@ -192,7 +192,7 @@ if (typeof jQuery === 'undefined') {
this.isLoading = false this.isLoading = false
} }
Button.VERSION = '3.3.4' Button.VERSION = '3.3.5'
Button.DEFAULTS = { Button.DEFAULTS = {
loadingText: 'loading...' loadingText: 'loading...'
@ -204,7 +204,7 @@ if (typeof jQuery === 'undefined') {
var val = $el.is('input') ? 'val' : 'html' var val = $el.is('input') ? 'val' : 'html'
var data = $el.data() var data = $el.data()
state = state + 'Text' state += 'Text'
if (data.resetText == null) $el.data('resetText', $el[val]()) if (data.resetText == null) $el.data('resetText', $el[val]())
@ -229,15 +229,19 @@ if (typeof jQuery === 'undefined') {
if ($parent.length) { if ($parent.length) {
var $input = this.$element.find('input') var $input = this.$element.find('input')
if ($input.prop('type') == 'radio') { if ($input.prop('type') == 'radio') {
if ($input.prop('checked') && this.$element.hasClass('active')) changed = false if ($input.prop('checked')) changed = false
else $parent.find('.active').removeClass('active') $parent.find('.active').removeClass('active')
this.$element.addClass('active')
} else if ($input.prop('type') == 'checkbox') {
if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false
this.$element.toggleClass('active')
} }
if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change') $input.prop('checked', this.$element.hasClass('active'))
if (changed) $input.trigger('change')
} else { } else {
this.$element.attr('aria-pressed', !this.$element.hasClass('active')) this.$element.attr('aria-pressed', !this.$element.hasClass('active'))
this.$element.toggleClass('active')
} }
if (changed) this.$element.toggleClass('active')
} }
@ -280,7 +284,7 @@ if (typeof jQuery === 'undefined') {
var $btn = $(e.target) var $btn = $(e.target)
if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
Plugin.call($btn, 'toggle') Plugin.call($btn, 'toggle')
e.preventDefault() if (!($(e.target).is('input[type="radio"]') || $(e.target).is('input[type="checkbox"]'))) e.preventDefault()
}) })
.on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
$(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type)) $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))
@ -289,7 +293,7 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: carousel.js v3.3.4 * Bootstrap: carousel.js v3.3.5
* http://getbootstrap.com/javascript/#carousel * http://getbootstrap.com/javascript/#carousel
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
@ -320,7 +324,7 @@ if (typeof jQuery === 'undefined') {
.on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
} }
Carousel.VERSION = '3.3.4' Carousel.VERSION = '3.3.5'
Carousel.TRANSITION_DURATION = 600 Carousel.TRANSITION_DURATION = 600
@ -527,7 +531,7 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: collapse.js v3.3.4 * Bootstrap: collapse.js v3.3.5
* http://getbootstrap.com/javascript/#collapse * http://getbootstrap.com/javascript/#collapse
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
@ -557,7 +561,7 @@ if (typeof jQuery === 'undefined') {
if (this.options.toggle) this.toggle() if (this.options.toggle) this.toggle()
} }
Collapse.VERSION = '3.3.4' Collapse.VERSION = '3.3.5'
Collapse.TRANSITION_DURATION = 350 Collapse.TRANSITION_DURATION = 350
@ -739,7 +743,7 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: dropdown.js v3.3.4 * Bootstrap: dropdown.js v3.3.5
* http://getbootstrap.com/javascript/#dropdowns * http://getbootstrap.com/javascript/#dropdowns
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
@ -759,7 +763,41 @@ if (typeof jQuery === 'undefined') {
$(element).on('click.bs.dropdown', this.toggle) $(element).on('click.bs.dropdown', this.toggle)
} }
Dropdown.VERSION = '3.3.4' Dropdown.VERSION = '3.3.5'
function getParent($this) {
var selector = $this.attr('data-target')
if (!selector) {
selector = $this.attr('href')
selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
}
var $parent = selector && $(selector)
return $parent && $parent.length ? $parent : $this.parent()
}
function clearMenus(e) {
if (e && e.which === 3) return
$(backdrop).remove()
$(toggle).each(function () {
var $this = $(this)
var $parent = getParent($this)
var relatedTarget = { relatedTarget: this }
if (!$parent.hasClass('open')) return
if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return
$parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
if (e.isDefaultPrevented()) return
$this.attr('aria-expanded', 'false')
$parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)
})
}
Dropdown.prototype.toggle = function (e) { Dropdown.prototype.toggle = function (e) {
var $this = $(this) var $this = $(this)
@ -774,7 +812,10 @@ if (typeof jQuery === 'undefined') {
if (!isActive) { if (!isActive) {
if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
// if mobile we use a backdrop because click events don't delegate // if mobile we use a backdrop because click events don't delegate
$('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus) $(document.createElement('div'))
.addClass('dropdown-backdrop')
.insertAfter($(this))
.on('click', clearMenus)
} }
var relatedTarget = { relatedTarget: this } var relatedTarget = { relatedTarget: this }
@ -807,57 +848,25 @@ if (typeof jQuery === 'undefined') {
var $parent = getParent($this) var $parent = getParent($this)
var isActive = $parent.hasClass('open') var isActive = $parent.hasClass('open')
if ((!isActive && e.which != 27) || (isActive && e.which == 27)) { if (!isActive && e.which != 27 || isActive && e.which == 27) {
if (e.which == 27) $parent.find(toggle).trigger('focus') if (e.which == 27) $parent.find(toggle).trigger('focus')
return $this.trigger('click') return $this.trigger('click')
} }
var desc = ' li:not(.disabled):visible a' var desc = ' li:not(.disabled):visible a'
var $items = $parent.find('[role="menu"]' + desc + ', [role="listbox"]' + desc) var $items = $parent.find('.dropdown-menu' + desc)
if (!$items.length) return if (!$items.length) return
var index = $items.index(e.target) var index = $items.index(e.target)
if (e.which == 38 && index > 0) index-- // up if (e.which == 38 && index > 0) index-- // up
if (e.which == 40 && index < $items.length - 1) index++ // down if (e.which == 40 && index < $items.length - 1) index++ // down
if (!~index) index = 0 if (!~index) index = 0
$items.eq(index).trigger('focus') $items.eq(index).trigger('focus')
} }
function clearMenus(e) {
if (e && e.which === 3) return
$(backdrop).remove()
$(toggle).each(function () {
var $this = $(this)
var $parent = getParent($this)
var relatedTarget = { relatedTarget: this }
if (!$parent.hasClass('open')) return
$parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
if (e.isDefaultPrevented()) return
$this.attr('aria-expanded', 'false')
$parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)
})
}
function getParent($this) {
var selector = $this.attr('data-target')
if (!selector) {
selector = $this.attr('href')
selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
}
var $parent = selector && $(selector)
return $parent && $parent.length ? $parent : $this.parent()
}
// DROPDOWN PLUGIN DEFINITION // DROPDOWN PLUGIN DEFINITION
// ========================== // ==========================
@ -895,13 +904,12 @@ if (typeof jQuery === 'undefined') {
.on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
.on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle) .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
.on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown) .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
.on('keydown.bs.dropdown.data-api', '[role="menu"]', Dropdown.prototype.keydown) .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)
.on('keydown.bs.dropdown.data-api', '[role="listbox"]', Dropdown.prototype.keydown)
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: modal.js v3.3.4 * Bootstrap: modal.js v3.3.5
* http://getbootstrap.com/javascript/#modals * http://getbootstrap.com/javascript/#modals
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
@ -935,7 +943,7 @@ if (typeof jQuery === 'undefined') {
} }
} }
Modal.VERSION = '3.3.4' Modal.VERSION = '3.3.5'
Modal.TRANSITION_DURATION = 300 Modal.TRANSITION_DURATION = 300
Modal.BACKDROP_TRANSITION_DURATION = 150 Modal.BACKDROP_TRANSITION_DURATION = 150
@ -992,9 +1000,7 @@ if (typeof jQuery === 'undefined') {
that.$element[0].offsetWidth // force reflow that.$element[0].offsetWidth // force reflow
} }
that.$element that.$element.addClass('in')
.addClass('in')
.attr('aria-hidden', false)
that.enforceFocus() that.enforceFocus()
@ -1028,7 +1034,6 @@ if (typeof jQuery === 'undefined') {
this.$element this.$element
.removeClass('in') .removeClass('in')
.attr('aria-hidden', true)
.off('click.dismiss.bs.modal') .off('click.dismiss.bs.modal')
.off('mouseup.dismiss.bs.modal') .off('mouseup.dismiss.bs.modal')
@ -1092,7 +1097,8 @@ if (typeof jQuery === 'undefined') {
if (this.isShown && this.options.backdrop) { if (this.isShown && this.options.backdrop) {
var doAnimate = $.support.transition && animate var doAnimate = $.support.transition && animate
this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />') this.$backdrop = $(document.createElement('div'))
.addClass('modal-backdrop ' + animate)
.appendTo(this.$body) .appendTo(this.$body)
this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) { this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
@ -1241,7 +1247,7 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: tooltip.js v3.3.4 * Bootstrap: tooltip.js v3.3.5
* http://getbootstrap.com/javascript/#tooltip * http://getbootstrap.com/javascript/#tooltip
* Inspired by the original jQuery.tipsy by Jason Frame * Inspired by the original jQuery.tipsy by Jason Frame
* ======================================================================== * ========================================================================
@ -1263,11 +1269,12 @@ if (typeof jQuery === 'undefined') {
this.timeout = null this.timeout = null
this.hoverState = null this.hoverState = null
this.$element = null this.$element = null
this.inState = null
this.init('tooltip', element, options) this.init('tooltip', element, options)
} }
Tooltip.VERSION = '3.3.4' Tooltip.VERSION = '3.3.5'
Tooltip.TRANSITION_DURATION = 150 Tooltip.TRANSITION_DURATION = 150
@ -1292,7 +1299,8 @@ if (typeof jQuery === 'undefined') {
this.type = type this.type = type
this.$element = $(element) this.$element = $(element)
this.options = this.getOptions(options) this.options = this.getOptions(options)
this.$viewport = this.options.viewport && $(this.options.viewport.selector || this.options.viewport) this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))
this.inState = { click: false, hover: false, focus: false }
if (this.$element[0] instanceof document.constructor && !this.options.selector) { if (this.$element[0] instanceof document.constructor && !this.options.selector) {
throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!') throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')
@ -1351,16 +1359,20 @@ if (typeof jQuery === 'undefined') {
var self = obj instanceof this.constructor ? var self = obj instanceof this.constructor ?
obj : $(obj.currentTarget).data('bs.' + this.type) obj : $(obj.currentTarget).data('bs.' + this.type)
if (self && self.$tip && self.$tip.is(':visible')) {
self.hoverState = 'in'
return
}
if (!self) { if (!self) {
self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
$(obj.currentTarget).data('bs.' + this.type, self) $(obj.currentTarget).data('bs.' + this.type, self)
} }
if (obj instanceof $.Event) {
self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true
}
if (self.tip().hasClass('in') || self.hoverState == 'in') {
self.hoverState = 'in'
return
}
clearTimeout(self.timeout) clearTimeout(self.timeout)
self.hoverState = 'in' self.hoverState = 'in'
@ -1372,6 +1384,14 @@ if (typeof jQuery === 'undefined') {
}, self.options.delay.show) }, self.options.delay.show)
} }
Tooltip.prototype.isInStateTrue = function () {
for (var key in this.inState) {
if (this.inState[key]) return true
}
return false
}
Tooltip.prototype.leave = function (obj) { Tooltip.prototype.leave = function (obj) {
var self = obj instanceof this.constructor ? var self = obj instanceof this.constructor ?
obj : $(obj.currentTarget).data('bs.' + this.type) obj : $(obj.currentTarget).data('bs.' + this.type)
@ -1381,6 +1401,12 @@ if (typeof jQuery === 'undefined') {
$(obj.currentTarget).data('bs.' + this.type, self) $(obj.currentTarget).data('bs.' + this.type, self)
} }
if (obj instanceof $.Event) {
self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false
}
if (self.isInStateTrue()) return
clearTimeout(self.timeout) clearTimeout(self.timeout)
self.hoverState = 'out' self.hoverState = 'out'
@ -1427,6 +1453,7 @@ if (typeof jQuery === 'undefined') {
.data('bs.' + this.type, this) .data('bs.' + this.type, this)
this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
this.$element.trigger('inserted.bs.' + this.type)
var pos = this.getPosition() var pos = this.getPosition()
var actualWidth = $tip[0].offsetWidth var actualWidth = $tip[0].offsetWidth
@ -1434,13 +1461,12 @@ if (typeof jQuery === 'undefined') {
if (autoPlace) { if (autoPlace) {
var orgPlacement = placement var orgPlacement = placement
var $container = this.options.container ? $(this.options.container) : this.$element.parent() var viewportDim = this.getPosition(this.$viewport)
var containerDim = this.getPosition($container)
placement = placement == 'bottom' && pos.bottom + actualHeight > containerDim.bottom ? 'top' : placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' :
placement == 'top' && pos.top - actualHeight < containerDim.top ? 'bottom' : placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' :
placement == 'right' && pos.right + actualWidth > containerDim.width ? 'left' : placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' :
placement == 'left' && pos.left - actualWidth < containerDim.left ? 'right' : placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' :
placement placement
$tip $tip
@ -1481,8 +1507,8 @@ if (typeof jQuery === 'undefined') {
if (isNaN(marginTop)) marginTop = 0 if (isNaN(marginTop)) marginTop = 0
if (isNaN(marginLeft)) marginLeft = 0 if (isNaN(marginLeft)) marginLeft = 0
offset.top = offset.top + marginTop offset.top += marginTop
offset.left = offset.left + marginLeft offset.left += marginLeft
// $.fn.offset doesn't round pixel values // $.fn.offset doesn't round pixel values
// so we use setOffset directly with our own function B-0 // so we use setOffset directly with our own function B-0
@ -1564,7 +1590,7 @@ if (typeof jQuery === 'undefined') {
Tooltip.prototype.fixTitle = function () { Tooltip.prototype.fixTitle = function () {
var $e = this.$element var $e = this.$element
if ($e.attr('title') || typeof ($e.attr('data-original-title')) != 'string') { if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {
$e.attr('data-original-title', $e.attr('title') || '').attr('title', '') $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
} }
} }
@ -1619,7 +1645,7 @@ if (typeof jQuery === 'undefined') {
var rightEdgeOffset = pos.left + viewportPadding + actualWidth var rightEdgeOffset = pos.left + viewportPadding + actualWidth
if (leftEdgeOffset < viewportDimensions.left) { // left overflow if (leftEdgeOffset < viewportDimensions.left) { // left overflow
delta.left = viewportDimensions.left - leftEdgeOffset delta.left = viewportDimensions.left - leftEdgeOffset
} else if (rightEdgeOffset > viewportDimensions.width) { // right overflow } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow
delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset
} }
} }
@ -1645,7 +1671,13 @@ if (typeof jQuery === 'undefined') {
} }
Tooltip.prototype.tip = function () { Tooltip.prototype.tip = function () {
return (this.$tip = this.$tip || $(this.options.template)) if (!this.$tip) {
this.$tip = $(this.options.template)
if (this.$tip.length != 1) {
throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')
}
}
return this.$tip
} }
Tooltip.prototype.arrow = function () { Tooltip.prototype.arrow = function () {
@ -1674,7 +1706,13 @@ if (typeof jQuery === 'undefined') {
} }
} }
self.tip().hasClass('in') ? self.leave(self) : self.enter(self) if (e) {
self.inState.click = !self.inState.click
if (self.isInStateTrue()) self.enter(self)
else self.leave(self)
} else {
self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
}
} }
Tooltip.prototype.destroy = function () { Tooltip.prototype.destroy = function () {
@ -1682,6 +1720,12 @@ if (typeof jQuery === 'undefined') {
clearTimeout(this.timeout) clearTimeout(this.timeout)
this.hide(function () { this.hide(function () {
that.$element.off('.' + that.type).removeData('bs.' + that.type) that.$element.off('.' + that.type).removeData('bs.' + that.type)
if (that.$tip) {
that.$tip.detach()
}
that.$tip = null
that.$arrow = null
that.$viewport = null
}) })
} }
@ -1718,7 +1762,7 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: popover.js v3.3.4 * Bootstrap: popover.js v3.3.5
* http://getbootstrap.com/javascript/#popovers * http://getbootstrap.com/javascript/#popovers
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
@ -1738,7 +1782,7 @@ if (typeof jQuery === 'undefined') {
if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
Popover.VERSION = '3.3.4' Popover.VERSION = '3.3.5'
Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
placement: 'right', placement: 'right',
@ -1827,7 +1871,7 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: scrollspy.js v3.3.4 * Bootstrap: scrollspy.js v3.3.5
* http://getbootstrap.com/javascript/#scrollspy * http://getbootstrap.com/javascript/#scrollspy
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
@ -1856,7 +1900,7 @@ if (typeof jQuery === 'undefined') {
this.process() this.process()
} }
ScrollSpy.VERSION = '3.3.4' ScrollSpy.VERSION = '3.3.5'
ScrollSpy.DEFAULTS = { ScrollSpy.DEFAULTS = {
offset: 10 offset: 10
@ -2000,7 +2044,7 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: tab.js v3.3.4 * Bootstrap: tab.js v3.3.5
* http://getbootstrap.com/javascript/#tabs * http://getbootstrap.com/javascript/#tabs
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
@ -2015,10 +2059,12 @@ if (typeof jQuery === 'undefined') {
// ==================== // ====================
var Tab = function (element) { var Tab = function (element) {
// jscs:disable requireDollarBeforejQueryAssignment
this.element = $(element) this.element = $(element)
// jscs:enable requireDollarBeforejQueryAssignment
} }
Tab.VERSION = '3.3.4' Tab.VERSION = '3.3.5'
Tab.TRANSITION_DURATION = 150 Tab.TRANSITION_DURATION = 150
@ -2066,7 +2112,7 @@ if (typeof jQuery === 'undefined') {
var $active = container.find('> .active') var $active = container.find('> .active')
var transition = callback var transition = callback
&& $.support.transition && $.support.transition
&& (($active.length && $active.hasClass('fade')) || !!container.find('> .fade').length) && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)
function next() { function next() {
$active $active
@ -2154,7 +2200,7 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: affix.js v3.3.4 * Bootstrap: affix.js v3.3.5
* http://getbootstrap.com/javascript/#affix * http://getbootstrap.com/javascript/#affix
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
@ -2183,7 +2229,7 @@ if (typeof jQuery === 'undefined') {
this.checkPosition() this.checkPosition()
} }
Affix.VERSION = '3.3.4' Affix.VERSION = '3.3.5'
Affix.RESET = 'affix affix-top affix-bottom' Affix.RESET = 'affix affix-top affix-bottom'
@ -2233,7 +2279,7 @@ if (typeof jQuery === 'undefined') {
var offset = this.options.offset var offset = this.options.offset
var offsetTop = offset.top var offsetTop = offset.top
var offsetBottom = offset.bottom var offsetBottom = offset.bottom
var scrollHeight = $(document.body).height() var scrollHeight = Math.max($(document).height(), $(document.body).height())
if (typeof offset != 'object') offsetBottom = offsetTop = offset if (typeof offset != 'object') offsetBottom = offsetTop = offset
if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element) if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)

Loading…
Cancel
Save