adding /src to gitignore
This commit is contained in:
parent
bbe512b19b
commit
995bf67d56
|
@ -1,173 +0,0 @@
|
||||||
/**
|
|
||||||
* Owl Carousel v2.1.1
|
|
||||||
* Copyright 2013-2016 David Deutsch
|
|
||||||
* Licensed under MIT (https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE)
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
* Owl Carousel - Core
|
|
||||||
*/
|
|
||||||
.owl-carousel {
|
|
||||||
display: none;
|
|
||||||
width: 100%;
|
|
||||||
-webkit-tap-highlight-color: transparent;
|
|
||||||
/* position relative and z-index fix webkit rendering fonts issue */
|
|
||||||
position: relative;
|
|
||||||
z-index: 1; }
|
|
||||||
.owl-carousel .owl-stage {
|
|
||||||
position: relative;
|
|
||||||
-ms-touch-action: pan-Y; }
|
|
||||||
.owl-carousel .owl-stage:after {
|
|
||||||
content: ".";
|
|
||||||
display: block;
|
|
||||||
clear: both;
|
|
||||||
visibility: hidden;
|
|
||||||
line-height: 0;
|
|
||||||
height: 0; }
|
|
||||||
.owl-carousel .owl-stage-outer {
|
|
||||||
position: relative;
|
|
||||||
overflow: hidden;
|
|
||||||
/* fix for flashing background */
|
|
||||||
-webkit-transform: translate3d(0px, 0px, 0px); }
|
|
||||||
.owl-carousel .owl-item {
|
|
||||||
position: relative;
|
|
||||||
min-height: 1px;
|
|
||||||
float: left;
|
|
||||||
-webkit-backface-visibility: hidden;
|
|
||||||
-webkit-tap-highlight-color: transparent;
|
|
||||||
-webkit-touch-callout: none; }
|
|
||||||
.owl-carousel .owl-item img {
|
|
||||||
display: block;
|
|
||||||
width: 100%;
|
|
||||||
-webkit-transform-style: preserve-3d; }
|
|
||||||
.owl-carousel .owl-nav.disabled,
|
|
||||||
.owl-carousel .owl-dots.disabled {
|
|
||||||
display: none; }
|
|
||||||
.owl-carousel .owl-nav .owl-prev,
|
|
||||||
.owl-carousel .owl-nav .owl-next,
|
|
||||||
.owl-carousel .owl-dot {
|
|
||||||
cursor: pointer;
|
|
||||||
cursor: hand;
|
|
||||||
-webkit-user-select: none;
|
|
||||||
-khtml-user-select: none;
|
|
||||||
-moz-user-select: none;
|
|
||||||
-ms-user-select: none;
|
|
||||||
user-select: none; }
|
|
||||||
.owl-carousel.owl-loaded {
|
|
||||||
display: block; }
|
|
||||||
.owl-carousel.owl-loading {
|
|
||||||
opacity: 0;
|
|
||||||
display: block; }
|
|
||||||
.owl-carousel.owl-hidden {
|
|
||||||
opacity: 0; }
|
|
||||||
.owl-carousel.owl-refresh .owl-item {
|
|
||||||
display: none; }
|
|
||||||
.owl-carousel.owl-drag .owl-item {
|
|
||||||
-webkit-user-select: none;
|
|
||||||
-moz-user-select: none;
|
|
||||||
-ms-user-select: none;
|
|
||||||
user-select: none; }
|
|
||||||
.owl-carousel.owl-grab {
|
|
||||||
cursor: move;
|
|
||||||
cursor: grab; }
|
|
||||||
.owl-carousel.owl-rtl {
|
|
||||||
direction: rtl; }
|
|
||||||
.owl-carousel.owl-rtl .owl-item {
|
|
||||||
float: right; }
|
|
||||||
|
|
||||||
/* No Js */
|
|
||||||
.no-js .owl-carousel {
|
|
||||||
display: block; }
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Owl Carousel - Animate Plugin
|
|
||||||
*/
|
|
||||||
.owl-carousel .animated {
|
|
||||||
-webkit-animation-duration: 1000ms;
|
|
||||||
animation-duration: 1000ms;
|
|
||||||
-webkit-animation-fill-mode: both;
|
|
||||||
animation-fill-mode: both; }
|
|
||||||
|
|
||||||
.owl-carousel .owl-animated-in {
|
|
||||||
z-index: 0; }
|
|
||||||
|
|
||||||
.owl-carousel .owl-animated-out {
|
|
||||||
z-index: 1; }
|
|
||||||
|
|
||||||
.owl-carousel .fadeOut {
|
|
||||||
-webkit-animation-name: fadeOut;
|
|
||||||
animation-name: fadeOut; }
|
|
||||||
|
|
||||||
@-webkit-keyframes fadeOut {
|
|
||||||
0% {
|
|
||||||
opacity: 1; }
|
|
||||||
100% {
|
|
||||||
opacity: 0; } }
|
|
||||||
|
|
||||||
@keyframes fadeOut {
|
|
||||||
0% {
|
|
||||||
opacity: 1; }
|
|
||||||
100% {
|
|
||||||
opacity: 0; } }
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Owl Carousel - Auto Height Plugin
|
|
||||||
*/
|
|
||||||
.owl-height {
|
|
||||||
transition: height 500ms ease-in-out; }
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Owl Carousel - Lazy Load Plugin
|
|
||||||
*/
|
|
||||||
.owl-carousel .owl-item .owl-lazy {
|
|
||||||
opacity: 0;
|
|
||||||
transition: opacity 400ms ease; }
|
|
||||||
|
|
||||||
.owl-carousel .owl-item img.owl-lazy {
|
|
||||||
-webkit-transform-style: preserve-3d;
|
|
||||||
transform-style: preserve-3d; }
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Owl Carousel - Video Plugin
|
|
||||||
*/
|
|
||||||
.owl-carousel .owl-video-wrapper {
|
|
||||||
position: relative;
|
|
||||||
height: 100%;
|
|
||||||
background: #000; }
|
|
||||||
|
|
||||||
.owl-carousel .owl-video-play-icon {
|
|
||||||
position: absolute;
|
|
||||||
height: 80px;
|
|
||||||
width: 80px;
|
|
||||||
left: 50%;
|
|
||||||
top: 50%;
|
|
||||||
margin-left: -40px;
|
|
||||||
margin-top: -40px;
|
|
||||||
background: url("owl.video.play.png") no-repeat;
|
|
||||||
cursor: pointer;
|
|
||||||
z-index: 1;
|
|
||||||
-webkit-backface-visibility: hidden;
|
|
||||||
transition: -webkit-transform 100ms ease;
|
|
||||||
transition: transform 100ms ease; }
|
|
||||||
|
|
||||||
.owl-carousel .owl-video-play-icon:hover {
|
|
||||||
-webkit-transform: scale(1.3, 1.3);
|
|
||||||
-ms-transform: scale(1.3, 1.3);
|
|
||||||
transform: scale(1.3, 1.3); }
|
|
||||||
|
|
||||||
.owl-carousel .owl-video-playing .owl-video-tn,
|
|
||||||
.owl-carousel .owl-video-playing .owl-video-play-icon {
|
|
||||||
display: none; }
|
|
||||||
|
|
||||||
.owl-carousel .owl-video-tn {
|
|
||||||
opacity: 0;
|
|
||||||
height: 100%;
|
|
||||||
background-position: center center;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-size: contain;
|
|
||||||
transition: opacity 400ms ease; }
|
|
||||||
|
|
||||||
.owl-carousel .owl-video-frame {
|
|
||||||
position: relative;
|
|
||||||
z-index: 1;
|
|
||||||
height: 100%;
|
|
||||||
width: 100%; }
|
|
|
@ -1,161 +0,0 @@
|
||||||
/**
|
|
||||||
* Owl Carousel v2.1.6
|
|
||||||
* Copyright 2013-2016 David Deutsch
|
|
||||||
* Licensed under MIT (https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE)
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
* Owl Carousel - Core
|
|
||||||
*/
|
|
||||||
.owl-carousel {
|
|
||||||
display: none;
|
|
||||||
width: 100%;
|
|
||||||
-webkit-tap-highlight-color: transparent;
|
|
||||||
/* position relative and z-index fix webkit rendering fonts issue */
|
|
||||||
position: relative;
|
|
||||||
z-index: 1; }
|
|
||||||
.owl-carousel .owl-stage {
|
|
||||||
position: relative;
|
|
||||||
-ms-touch-action: pan-Y; }
|
|
||||||
.owl-carousel .owl-stage:after {
|
|
||||||
content: ".";
|
|
||||||
display: block;
|
|
||||||
clear: both;
|
|
||||||
visibility: hidden;
|
|
||||||
line-height: 0;
|
|
||||||
height: 0; }
|
|
||||||
.owl-carousel .owl-stage-outer {
|
|
||||||
position: relative;
|
|
||||||
overflow: hidden;
|
|
||||||
/* fix for flashing background */
|
|
||||||
-webkit-transform: translate3d(0px, 0px, 0px); }
|
|
||||||
.owl-carousel .owl-item {
|
|
||||||
position: relative;
|
|
||||||
min-height: 1px;
|
|
||||||
float: left;
|
|
||||||
-webkit-backface-visibility: hidden;
|
|
||||||
-webkit-tap-highlight-color: transparent;
|
|
||||||
-webkit-touch-callout: none; }
|
|
||||||
.owl-carousel .owl-item img {
|
|
||||||
display: block;
|
|
||||||
width: 100%;
|
|
||||||
-webkit-transform-style: preserve-3d; }
|
|
||||||
.owl-carousel .owl-nav.disabled,
|
|
||||||
.owl-carousel .owl-dots.disabled {
|
|
||||||
display: none; }
|
|
||||||
.owl-carousel .owl-nav .owl-prev,
|
|
||||||
.owl-carousel .owl-nav .owl-next,
|
|
||||||
.owl-carousel .owl-dot {
|
|
||||||
cursor: pointer;
|
|
||||||
cursor: hand;
|
|
||||||
-webkit-user-select: none;
|
|
||||||
-khtml-user-select: none;
|
|
||||||
-moz-user-select: none;
|
|
||||||
-ms-user-select: none;
|
|
||||||
user-select: none; }
|
|
||||||
.owl-carousel.owl-loaded {
|
|
||||||
display: block; }
|
|
||||||
.owl-carousel.owl-loading {
|
|
||||||
opacity: 0;
|
|
||||||
display: block; }
|
|
||||||
.owl-carousel.owl-hidden {
|
|
||||||
opacity: 0; }
|
|
||||||
.owl-carousel.owl-refresh .owl-item {
|
|
||||||
display: none; }
|
|
||||||
.owl-carousel.owl-drag .owl-item {
|
|
||||||
-webkit-user-select: none;
|
|
||||||
-moz-user-select: none;
|
|
||||||
-ms-user-select: none;
|
|
||||||
user-select: none; }
|
|
||||||
.owl-carousel.owl-grab {
|
|
||||||
cursor: move;
|
|
||||||
cursor: grab; }
|
|
||||||
.owl-carousel.owl-rtl {
|
|
||||||
direction: rtl; }
|
|
||||||
.owl-carousel.owl-rtl .owl-item {
|
|
||||||
float: right; }
|
|
||||||
|
|
||||||
/* No Js */
|
|
||||||
.no-js .owl-carousel {
|
|
||||||
display: block; }
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Owl Carousel - Animate Plugin
|
|
||||||
*/
|
|
||||||
.owl-carousel .animated {
|
|
||||||
animation-duration: 1000ms;
|
|
||||||
animation-fill-mode: both; }
|
|
||||||
|
|
||||||
.owl-carousel .owl-animated-in {
|
|
||||||
z-index: 0; }
|
|
||||||
|
|
||||||
.owl-carousel .owl-animated-out {
|
|
||||||
z-index: 1; }
|
|
||||||
|
|
||||||
.owl-carousel .fadeOut {
|
|
||||||
animation-name: fadeOut; }
|
|
||||||
|
|
||||||
@keyframes fadeOut {
|
|
||||||
0% {
|
|
||||||
opacity: 1; }
|
|
||||||
100% {
|
|
||||||
opacity: 0; } }
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Owl Carousel - Auto Height Plugin
|
|
||||||
*/
|
|
||||||
.owl-height {
|
|
||||||
transition: height 500ms ease-in-out; }
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Owl Carousel - Lazy Load Plugin
|
|
||||||
*/
|
|
||||||
.owl-carousel .owl-item .owl-lazy {
|
|
||||||
opacity: 0;
|
|
||||||
transition: opacity 400ms ease; }
|
|
||||||
|
|
||||||
.owl-carousel .owl-item img.owl-lazy {
|
|
||||||
transform-style: preserve-3d; }
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Owl Carousel - Video Plugin
|
|
||||||
*/
|
|
||||||
.owl-carousel .owl-video-wrapper {
|
|
||||||
position: relative;
|
|
||||||
height: 100%;
|
|
||||||
background: #000; }
|
|
||||||
|
|
||||||
.owl-carousel .owl-video-play-icon {
|
|
||||||
position: absolute;
|
|
||||||
height: 80px;
|
|
||||||
width: 80px;
|
|
||||||
left: 50%;
|
|
||||||
top: 50%;
|
|
||||||
margin-left: -40px;
|
|
||||||
margin-top: -40px;
|
|
||||||
background: url("owl.video.play.png") no-repeat;
|
|
||||||
cursor: pointer;
|
|
||||||
z-index: 1;
|
|
||||||
-webkit-backface-visibility: hidden;
|
|
||||||
transition: transform 100ms ease; }
|
|
||||||
|
|
||||||
.owl-carousel .owl-video-play-icon:hover {
|
|
||||||
-ms-transform: scale(1.3, 1.3);
|
|
||||||
transform: scale(1.3, 1.3); }
|
|
||||||
|
|
||||||
.owl-carousel .owl-video-playing .owl-video-tn,
|
|
||||||
.owl-carousel .owl-video-playing .owl-video-play-icon {
|
|
||||||
display: none; }
|
|
||||||
|
|
||||||
.owl-carousel .owl-video-tn {
|
|
||||||
opacity: 0;
|
|
||||||
height: 100%;
|
|
||||||
background-position: center center;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-size: contain;
|
|
||||||
transition: opacity 400ms ease; }
|
|
||||||
|
|
||||||
.owl-carousel .owl-video-frame {
|
|
||||||
position: relative;
|
|
||||||
z-index: 1;
|
|
||||||
height: 100%;
|
|
||||||
width: 100%; }
|
|
|
@ -1,6 +0,0 @@
|
||||||
/**
|
|
||||||
* Owl Carousel v2.1.1
|
|
||||||
* Copyright 2013-2016 David Deutsch
|
|
||||||
* Licensed under MIT (https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE)
|
|
||||||
*/
|
|
||||||
.owl-carousel,.owl-carousel .owl-item{-webkit-tap-highlight-color:transparent;position:relative}.owl-carousel{display:none;width:100%;z-index:1}.owl-carousel .owl-stage{position:relative;-ms-touch-action:pan-Y}.owl-carousel .owl-stage:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.owl-carousel .owl-stage-outer{position:relative;overflow:hidden;-webkit-transform:translate3d(0,0,0)}.owl-carousel .owl-item{min-height:1px;float:left;-webkit-backface-visibility:hidden;-webkit-touch-callout:none}.owl-carousel .owl-item img{display:block;width:100%;-webkit-transform-style:preserve-3d}.owl-carousel .owl-dots.disabled,.owl-carousel .owl-nav.disabled{display:none}.owl-carousel .owl-dot,.owl-carousel .owl-nav .owl-next,.owl-carousel .owl-nav .owl-prev{cursor:pointer;cursor:hand;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel.owl-loaded{display:block}.owl-carousel.owl-loading{opacity:0;display:block}.owl-carousel.owl-hidden{opacity:0}.owl-carousel.owl-refresh .owl-item{display:none}.owl-carousel.owl-drag .owl-item{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel.owl-grab{cursor:move;cursor:grab}.owl-carousel.owl-rtl{direction:rtl}.owl-carousel.owl-rtl .owl-item{float:right}.no-js .owl-carousel{display:block}.owl-carousel .animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.owl-carousel .owl-animated-in{z-index:0}.owl-carousel .owl-animated-out{z-index:1}.owl-carousel .fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.owl-height{transition:height .5s ease-in-out}.owl-carousel .owl-item .owl-lazy{opacity:0;transition:opacity .4s ease}.owl-carousel .owl-item img.owl-lazy{-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.owl-carousel .owl-video-wrapper{position:relative;height:100%;background:#000}.owl-carousel .owl-video-play-icon{position:absolute;height:80px;width:80px;left:50%;top:50%;margin-left:-40px;margin-top:-40px;background:url(owl.video.play.png) no-repeat;cursor:pointer;z-index:1;-webkit-backface-visibility:hidden;transition:-webkit-transform .1s ease;transition:transform .1s ease}.owl-carousel .owl-video-play-icon:hover{-webkit-transform:scale(1.3,1.3);-ms-transform:scale(1.3,1.3);transform:scale(1.3,1.3)}.owl-carousel .owl-video-playing .owl-video-play-icon,.owl-carousel .owl-video-playing .owl-video-tn{display:none}.owl-carousel .owl-video-tn{opacity:0;height:100%;background-position:center center;background-repeat:no-repeat;background-size:contain;transition:opacity .4s ease}.owl-carousel .owl-video-frame{position:relative;z-index:1;height:100%;width:100%}
|
|
|
@ -1,6 +0,0 @@
|
||||||
/**
|
|
||||||
* Owl Carousel v2.1.6
|
|
||||||
* Copyright 2013-2016 David Deutsch
|
|
||||||
* Licensed under MIT (https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE)
|
|
||||||
*/
|
|
||||||
.owl-carousel,.owl-carousel .owl-item{-webkit-tap-highlight-color:transparent;position:relative}.owl-carousel{display:none;width:100%;z-index:1}.owl-carousel .owl-stage{position:relative;-ms-touch-action:pan-Y}.owl-carousel .owl-stage:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.owl-carousel .owl-stage-outer{position:relative;overflow:hidden;-webkit-transform:translate3d(0,0,0)}.owl-carousel .owl-item{min-height:1px;float:left;-webkit-backface-visibility:hidden;-webkit-touch-callout:none}.owl-carousel .owl-item img{display:block;width:100%;-webkit-transform-style:preserve-3d}.owl-carousel .owl-dots.disabled,.owl-carousel .owl-nav.disabled{display:none}.owl-carousel .owl-dot,.owl-carousel .owl-nav .owl-next,.owl-carousel .owl-nav .owl-prev{cursor:pointer;cursor:hand;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel.owl-loaded{display:block}.owl-carousel.owl-loading{opacity:0;display:block}.owl-carousel.owl-hidden{opacity:0}.owl-carousel.owl-refresh .owl-item{display:none}.owl-carousel.owl-drag .owl-item{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel.owl-grab{cursor:move;cursor:grab}.owl-carousel.owl-rtl{direction:rtl}.owl-carousel.owl-rtl .owl-item{float:right}.no-js .owl-carousel{display:block}.owl-carousel .animated{animation-duration:1s;animation-fill-mode:both}.owl-carousel .owl-animated-in{z-index:0}.owl-carousel .owl-animated-out{z-index:1}.owl-carousel .fadeOut{animation-name:fadeOut}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.owl-height{transition:height .5s ease-in-out}.owl-carousel .owl-item .owl-lazy{opacity:0;transition:opacity .4s ease}.owl-carousel .owl-item img.owl-lazy{transform-style:preserve-3d}.owl-carousel .owl-video-wrapper{position:relative;height:100%;background:#000}.owl-carousel .owl-video-play-icon{position:absolute;height:80px;width:80px;left:50%;top:50%;margin-left:-40px;margin-top:-40px;background:url(owl.video.play.png) no-repeat;cursor:pointer;z-index:1;-webkit-backface-visibility:hidden;transition:transform .1s ease}.owl-carousel .owl-video-play-icon:hover{-ms-transform:scale(1.3,1.3);transform:scale(1.3,1.3)}.owl-carousel .owl-video-playing .owl-video-play-icon,.owl-carousel .owl-video-playing .owl-video-tn{display:none}.owl-carousel .owl-video-tn{opacity:0;height:100%;background-position:center center;background-repeat:no-repeat;background-size:contain;transition:opacity .4s ease}.owl-carousel .owl-video-frame{position:relative;z-index:1;height:100%;width:100%}
|
|
|
@ -1,50 +0,0 @@
|
||||||
/**
|
|
||||||
* Owl Carousel v2.1.6
|
|
||||||
* Copyright 2013-2016 David Deutsch
|
|
||||||
* Licensed under MIT (https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE)
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
* Default theme - Owl Carousel CSS File
|
|
||||||
*/
|
|
||||||
.owl-theme .owl-nav {
|
|
||||||
margin-top: 10px;
|
|
||||||
text-align: center;
|
|
||||||
-webkit-tap-highlight-color: transparent; }
|
|
||||||
.owl-theme .owl-nav [class*='owl-'] {
|
|
||||||
color: #FFF;
|
|
||||||
font-size: 14px;
|
|
||||||
margin: 5px;
|
|
||||||
padding: 4px 7px;
|
|
||||||
background: #D6D6D6;
|
|
||||||
display: inline-block;
|
|
||||||
cursor: pointer;
|
|
||||||
border-radius: 3px; }
|
|
||||||
.owl-theme .owl-nav [class*='owl-']:hover {
|
|
||||||
background: #869791;
|
|
||||||
color: #FFF;
|
|
||||||
text-decoration: none; }
|
|
||||||
.owl-theme .owl-nav .disabled {
|
|
||||||
opacity: 0.5;
|
|
||||||
cursor: default; }
|
|
||||||
|
|
||||||
.owl-theme .owl-nav.disabled + .owl-dots {
|
|
||||||
margin-top: 10px; }
|
|
||||||
|
|
||||||
.owl-theme .owl-dots {
|
|
||||||
text-align: center;
|
|
||||||
-webkit-tap-highlight-color: transparent; }
|
|
||||||
.owl-theme .owl-dots .owl-dot {
|
|
||||||
display: inline-block;
|
|
||||||
zoom: 1;
|
|
||||||
*display: inline; }
|
|
||||||
.owl-theme .owl-dots .owl-dot span {
|
|
||||||
width: 10px;
|
|
||||||
height: 10px;
|
|
||||||
margin: 5px 7px;
|
|
||||||
background: #D6D6D6;
|
|
||||||
display: block;
|
|
||||||
-webkit-backface-visibility: visible;
|
|
||||||
transition: opacity 200ms ease;
|
|
||||||
border-radius: 30px; }
|
|
||||||
.owl-theme .owl-dots .owl-dot.active span, .owl-theme .owl-dots .owl-dot:hover span {
|
|
||||||
background: #869791; }
|
|
|
@ -1,5 +0,0 @@
|
||||||
/**
|
|
||||||
* Owl Carousel v2.1.1
|
|
||||||
* Copyright 2013-2016 David Deutsch
|
|
||||||
* Licensed under MIT (https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE)
|
|
||||||
*/
|
|
|
@ -1,6 +0,0 @@
|
||||||
/**
|
|
||||||
* Owl Carousel v2.1.6
|
|
||||||
* Copyright 2013-2016 David Deutsch
|
|
||||||
* Licensed under MIT (https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE)
|
|
||||||
*/
|
|
||||||
.owl-theme .owl-dots,.owl-theme .owl-nav{text-align:center;-webkit-tap-highlight-color:transparent}.owl-theme .owl-nav{margin-top:10px}.owl-theme .owl-nav [class*=owl-]{color:#FFF;font-size:14px;margin:5px;padding:4px 7px;background:#D6D6D6;display:inline-block;cursor:pointer;border-radius:3px}.owl-theme .owl-nav [class*=owl-]:hover{background:#869791;color:#FFF;text-decoration:none}.owl-theme .owl-nav .disabled{opacity:.5;cursor:default}.owl-theme .owl-nav.disabled+.owl-dots{margin-top:10px}.owl-theme .owl-dots .owl-dot{display:inline-block;zoom:1}.owl-theme .owl-dots .owl-dot span{width:10px;height:10px;margin:5px 7px;background:#D6D6D6;display:block;-webkit-backface-visibility:visible;transition:opacity .2s ease;border-radius:30px}.owl-theme .owl-dots .owl-dot.active span,.owl-theme .owl-dots .owl-dot:hover span{background:#869791}
|
|
|
@ -1,50 +0,0 @@
|
||||||
/**
|
|
||||||
* Owl Carousel v2.1.6
|
|
||||||
* Copyright 2013-2016 David Deutsch
|
|
||||||
* Licensed under MIT (https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE)
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
* Green theme - Owl Carousel CSS File
|
|
||||||
*/
|
|
||||||
.owl-theme .owl-nav {
|
|
||||||
margin-top: 10px;
|
|
||||||
text-align: center;
|
|
||||||
-webkit-tap-highlight-color: transparent; }
|
|
||||||
.owl-theme .owl-nav [class*='owl-'] {
|
|
||||||
color: #FFF;
|
|
||||||
font-size: 14px;
|
|
||||||
margin: 5px;
|
|
||||||
padding: 4px 7px;
|
|
||||||
background: #D6D6D6;
|
|
||||||
display: inline-block;
|
|
||||||
cursor: pointer;
|
|
||||||
border-radius: 3px; }
|
|
||||||
.owl-theme .owl-nav [class*='owl-']:hover {
|
|
||||||
background: #4DC7A0;
|
|
||||||
color: #FFF;
|
|
||||||
text-decoration: none; }
|
|
||||||
.owl-theme .owl-nav .disabled {
|
|
||||||
opacity: 0.5;
|
|
||||||
cursor: default; }
|
|
||||||
|
|
||||||
.owl-theme .owl-nav.disabled + .owl-dots {
|
|
||||||
margin-top: 10px; }
|
|
||||||
|
|
||||||
.owl-theme .owl-dots {
|
|
||||||
text-align: center;
|
|
||||||
-webkit-tap-highlight-color: transparent; }
|
|
||||||
.owl-theme .owl-dots .owl-dot {
|
|
||||||
display: inline-block;
|
|
||||||
zoom: 1;
|
|
||||||
*display: inline; }
|
|
||||||
.owl-theme .owl-dots .owl-dot span {
|
|
||||||
width: 10px;
|
|
||||||
height: 10px;
|
|
||||||
margin: 5px 7px;
|
|
||||||
background: #D6D6D6;
|
|
||||||
display: block;
|
|
||||||
-webkit-backface-visibility: visible;
|
|
||||||
transition: opacity 200ms ease;
|
|
||||||
border-radius: 30px; }
|
|
||||||
.owl-theme .owl-dots .owl-dot.active span, .owl-theme .owl-dots .owl-dot:hover span {
|
|
||||||
background: #4DC7A0; }
|
|
|
@ -1,5 +0,0 @@
|
||||||
/**
|
|
||||||
* Owl Carousel v2.1.1
|
|
||||||
* Copyright 2013-2016 David Deutsch
|
|
||||||
* Licensed under MIT (https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE)
|
|
||||||
*/
|
|
|
@ -1,6 +0,0 @@
|
||||||
/**
|
|
||||||
* Owl Carousel v2.1.6
|
|
||||||
* Copyright 2013-2016 David Deutsch
|
|
||||||
* Licensed under MIT (https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE)
|
|
||||||
*/
|
|
||||||
.owl-theme .owl-dots,.owl-theme .owl-nav{text-align:center;-webkit-tap-highlight-color:transparent}.owl-theme .owl-nav{margin-top:10px}.owl-theme .owl-nav [class*=owl-]{color:#FFF;font-size:14px;margin:5px;padding:4px 7px;background:#D6D6D6;display:inline-block;cursor:pointer;border-radius:3px}.owl-theme .owl-nav [class*=owl-]:hover{background:#4DC7A0;color:#FFF;text-decoration:none}.owl-theme .owl-nav .disabled{opacity:.5;cursor:default}.owl-theme .owl-nav.disabled+.owl-dots{margin-top:10px}.owl-theme .owl-dots .owl-dot{display:inline-block;zoom:1}.owl-theme .owl-dots .owl-dot span{width:10px;height:10px;margin:5px 7px;background:#D6D6D6;display:block;-webkit-backface-visibility:visible;transition:opacity .2s ease;border-radius:30px}.owl-theme .owl-dots .owl-dot.active span,.owl-theme .owl-dots .owl-dot:hover span{background:#4DC7A0}
|
|
|
@ -1,134 +0,0 @@
|
||||||
.tether-element, .tether-element:after, .tether-element:before, .tether-element *, .tether-element *:after, .tether-element *:before {
|
|
||||||
box-sizing: border-box; }
|
|
||||||
|
|
||||||
.tether-element {
|
|
||||||
position: absolute;
|
|
||||||
display: none; }
|
|
||||||
.tether-element.tether-open {
|
|
||||||
display: block; }
|
|
||||||
|
|
||||||
.tether-element.tether-theme-arrows-dark {
|
|
||||||
max-width: 100%;
|
|
||||||
max-height: 100%; }
|
|
||||||
.tether-element.tether-theme-arrows-dark .tether-content {
|
|
||||||
border-radius: 5px;
|
|
||||||
position: relative;
|
|
||||||
font-family: inherit;
|
|
||||||
background: #000;
|
|
||||||
color: #fff;
|
|
||||||
padding: 1em;
|
|
||||||
font-size: 1.1em;
|
|
||||||
line-height: 1.5em; }
|
|
||||||
.tether-element.tether-theme-arrows-dark .tether-content:before {
|
|
||||||
content: "";
|
|
||||||
display: block;
|
|
||||||
position: absolute;
|
|
||||||
width: 0;
|
|
||||||
height: 0;
|
|
||||||
border-color: transparent;
|
|
||||||
border-width: 16px;
|
|
||||||
border-style: solid; }
|
|
||||||
.tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-center .tether-content {
|
|
||||||
margin-bottom: 16px; }
|
|
||||||
.tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-center .tether-content:before {
|
|
||||||
top: 100%;
|
|
||||||
left: 50%;
|
|
||||||
margin-left: -16px;
|
|
||||||
border-top-color: #000; }
|
|
||||||
.tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-center .tether-content {
|
|
||||||
margin-top: 16px; }
|
|
||||||
.tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-center .tether-content:before {
|
|
||||||
bottom: 100%;
|
|
||||||
left: 50%;
|
|
||||||
margin-left: -16px;
|
|
||||||
border-bottom-color: #000; }
|
|
||||||
.tether-element.tether-theme-arrows-dark.tether-element-attached-right.tether-element-attached-middle .tether-content {
|
|
||||||
margin-right: 16px; }
|
|
||||||
.tether-element.tether-theme-arrows-dark.tether-element-attached-right.tether-element-attached-middle .tether-content:before {
|
|
||||||
left: 100%;
|
|
||||||
top: 50%;
|
|
||||||
margin-top: -16px;
|
|
||||||
border-left-color: #000; }
|
|
||||||
.tether-element.tether-theme-arrows-dark.tether-element-attached-left.tether-element-attached-middle .tether-content {
|
|
||||||
margin-left: 16px; }
|
|
||||||
.tether-element.tether-theme-arrows-dark.tether-element-attached-left.tether-element-attached-middle .tether-content:before {
|
|
||||||
right: 100%;
|
|
||||||
top: 50%;
|
|
||||||
margin-top: -16px;
|
|
||||||
border-right-color: #000; }
|
|
||||||
.tether-element.tether-theme-arrows-dark.tether-element-attached-left.tether-target-attached-center .tether-content {
|
|
||||||
left: -32px; }
|
|
||||||
.tether-element.tether-theme-arrows-dark.tether-element-attached-right.tether-target-attached-center .tether-content {
|
|
||||||
left: 32px; }
|
|
||||||
.tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-left.tether-target-attached-middle .tether-content {
|
|
||||||
margin-top: 16px; }
|
|
||||||
.tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-left.tether-target-attached-middle .tether-content:before {
|
|
||||||
bottom: 100%;
|
|
||||||
left: 16px;
|
|
||||||
border-bottom-color: #000; }
|
|
||||||
.tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-right.tether-target-attached-middle .tether-content {
|
|
||||||
margin-top: 16px; }
|
|
||||||
.tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-right.tether-target-attached-middle .tether-content:before {
|
|
||||||
bottom: 100%;
|
|
||||||
right: 16px;
|
|
||||||
border-bottom-color: #000; }
|
|
||||||
.tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-left.tether-target-attached-middle .tether-content {
|
|
||||||
margin-bottom: 16px; }
|
|
||||||
.tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-left.tether-target-attached-middle .tether-content:before {
|
|
||||||
top: 100%;
|
|
||||||
left: 16px;
|
|
||||||
border-top-color: #000; }
|
|
||||||
.tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-right.tether-target-attached-middle .tether-content {
|
|
||||||
margin-bottom: 16px; }
|
|
||||||
.tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-right.tether-target-attached-middle .tether-content:before {
|
|
||||||
top: 100%;
|
|
||||||
right: 16px;
|
|
||||||
border-top-color: #000; }
|
|
||||||
.tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-left.tether-target-attached-bottom .tether-content {
|
|
||||||
margin-top: 16px; }
|
|
||||||
.tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-left.tether-target-attached-bottom .tether-content:before {
|
|
||||||
bottom: 100%;
|
|
||||||
left: 16px;
|
|
||||||
border-bottom-color: #000; }
|
|
||||||
.tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-right.tether-target-attached-bottom .tether-content {
|
|
||||||
margin-top: 16px; }
|
|
||||||
.tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-right.tether-target-attached-bottom .tether-content:before {
|
|
||||||
bottom: 100%;
|
|
||||||
right: 16px;
|
|
||||||
border-bottom-color: #000; }
|
|
||||||
.tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-left.tether-target-attached-top .tether-content {
|
|
||||||
margin-bottom: 16px; }
|
|
||||||
.tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-left.tether-target-attached-top .tether-content:before {
|
|
||||||
top: 100%;
|
|
||||||
left: 16px;
|
|
||||||
border-top-color: #000; }
|
|
||||||
.tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-right.tether-target-attached-top .tether-content {
|
|
||||||
margin-bottom: 16px; }
|
|
||||||
.tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-right.tether-target-attached-top .tether-content:before {
|
|
||||||
top: 100%;
|
|
||||||
right: 16px;
|
|
||||||
border-top-color: #000; }
|
|
||||||
.tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-right.tether-target-attached-left .tether-content {
|
|
||||||
margin-right: 16px; }
|
|
||||||
.tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-right.tether-target-attached-left .tether-content:before {
|
|
||||||
top: 16px;
|
|
||||||
left: 100%;
|
|
||||||
border-left-color: #000; }
|
|
||||||
.tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-left.tether-target-attached-right .tether-content {
|
|
||||||
margin-left: 16px; }
|
|
||||||
.tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-left.tether-target-attached-right .tether-content:before {
|
|
||||||
top: 16px;
|
|
||||||
right: 100%;
|
|
||||||
border-right-color: #000; }
|
|
||||||
.tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-right.tether-target-attached-left .tether-content {
|
|
||||||
margin-right: 16px; }
|
|
||||||
.tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-right.tether-target-attached-left .tether-content:before {
|
|
||||||
bottom: 16px;
|
|
||||||
left: 100%;
|
|
||||||
border-left-color: #000; }
|
|
||||||
.tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-left.tether-target-attached-right .tether-content {
|
|
||||||
margin-left: 16px; }
|
|
||||||
.tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-left.tether-target-attached-right .tether-content:before {
|
|
||||||
bottom: 16px;
|
|
||||||
right: 100%;
|
|
||||||
border-right-color: #000; }
|
|
File diff suppressed because one or more lines are too long
|
@ -1,138 +0,0 @@
|
||||||
.tether-element, .tether-element:after, .tether-element:before, .tether-element *, .tether-element *:after, .tether-element *:before {
|
|
||||||
box-sizing: border-box; }
|
|
||||||
|
|
||||||
.tether-element {
|
|
||||||
position: absolute;
|
|
||||||
display: none; }
|
|
||||||
.tether-element.tether-open {
|
|
||||||
display: block; }
|
|
||||||
|
|
||||||
.tether-element.tether-theme-arrows {
|
|
||||||
max-width: 100%;
|
|
||||||
max-height: 100%; }
|
|
||||||
.tether-element.tether-theme-arrows .tether-content {
|
|
||||||
border-radius: 5px;
|
|
||||||
position: relative;
|
|
||||||
font-family: inherit;
|
|
||||||
background: #fff;
|
|
||||||
color: inherit;
|
|
||||||
padding: 1em;
|
|
||||||
font-size: 1.1em;
|
|
||||||
line-height: 1.5em;
|
|
||||||
-webkit-transform: translateZ(0);
|
|
||||||
transform: translateZ(0);
|
|
||||||
-webkit-filter: drop-shadow(0 1px 4px rgba(0, 0, 0, 0.2));
|
|
||||||
filter: drop-shadow(0 1px 4px rgba(0, 0, 0, 0.2)); }
|
|
||||||
.tether-element.tether-theme-arrows .tether-content:before {
|
|
||||||
content: "";
|
|
||||||
display: block;
|
|
||||||
position: absolute;
|
|
||||||
width: 0;
|
|
||||||
height: 0;
|
|
||||||
border-color: transparent;
|
|
||||||
border-width: 16px;
|
|
||||||
border-style: solid; }
|
|
||||||
.tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-center .tether-content {
|
|
||||||
margin-bottom: 16px; }
|
|
||||||
.tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-center .tether-content:before {
|
|
||||||
top: 100%;
|
|
||||||
left: 50%;
|
|
||||||
margin-left: -16px;
|
|
||||||
border-top-color: #fff; }
|
|
||||||
.tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-center .tether-content {
|
|
||||||
margin-top: 16px; }
|
|
||||||
.tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-center .tether-content:before {
|
|
||||||
bottom: 100%;
|
|
||||||
left: 50%;
|
|
||||||
margin-left: -16px;
|
|
||||||
border-bottom-color: #fff; }
|
|
||||||
.tether-element.tether-theme-arrows.tether-element-attached-right.tether-element-attached-middle .tether-content {
|
|
||||||
margin-right: 16px; }
|
|
||||||
.tether-element.tether-theme-arrows.tether-element-attached-right.tether-element-attached-middle .tether-content:before {
|
|
||||||
left: 100%;
|
|
||||||
top: 50%;
|
|
||||||
margin-top: -16px;
|
|
||||||
border-left-color: #fff; }
|
|
||||||
.tether-element.tether-theme-arrows.tether-element-attached-left.tether-element-attached-middle .tether-content {
|
|
||||||
margin-left: 16px; }
|
|
||||||
.tether-element.tether-theme-arrows.tether-element-attached-left.tether-element-attached-middle .tether-content:before {
|
|
||||||
right: 100%;
|
|
||||||
top: 50%;
|
|
||||||
margin-top: -16px;
|
|
||||||
border-right-color: #fff; }
|
|
||||||
.tether-element.tether-theme-arrows.tether-element-attached-left.tether-target-attached-center .tether-content {
|
|
||||||
left: -32px; }
|
|
||||||
.tether-element.tether-theme-arrows.tether-element-attached-right.tether-target-attached-center .tether-content {
|
|
||||||
left: 32px; }
|
|
||||||
.tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-left.tether-target-attached-middle .tether-content {
|
|
||||||
margin-top: 16px; }
|
|
||||||
.tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-left.tether-target-attached-middle .tether-content:before {
|
|
||||||
bottom: 100%;
|
|
||||||
left: 16px;
|
|
||||||
border-bottom-color: #fff; }
|
|
||||||
.tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-right.tether-target-attached-middle .tether-content {
|
|
||||||
margin-top: 16px; }
|
|
||||||
.tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-right.tether-target-attached-middle .tether-content:before {
|
|
||||||
bottom: 100%;
|
|
||||||
right: 16px;
|
|
||||||
border-bottom-color: #fff; }
|
|
||||||
.tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-left.tether-target-attached-middle .tether-content {
|
|
||||||
margin-bottom: 16px; }
|
|
||||||
.tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-left.tether-target-attached-middle .tether-content:before {
|
|
||||||
top: 100%;
|
|
||||||
left: 16px;
|
|
||||||
border-top-color: #fff; }
|
|
||||||
.tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-right.tether-target-attached-middle .tether-content {
|
|
||||||
margin-bottom: 16px; }
|
|
||||||
.tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-right.tether-target-attached-middle .tether-content:before {
|
|
||||||
top: 100%;
|
|
||||||
right: 16px;
|
|
||||||
border-top-color: #fff; }
|
|
||||||
.tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-left.tether-target-attached-bottom .tether-content {
|
|
||||||
margin-top: 16px; }
|
|
||||||
.tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-left.tether-target-attached-bottom .tether-content:before {
|
|
||||||
bottom: 100%;
|
|
||||||
left: 16px;
|
|
||||||
border-bottom-color: #fff; }
|
|
||||||
.tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-right.tether-target-attached-bottom .tether-content {
|
|
||||||
margin-top: 16px; }
|
|
||||||
.tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-right.tether-target-attached-bottom .tether-content:before {
|
|
||||||
bottom: 100%;
|
|
||||||
right: 16px;
|
|
||||||
border-bottom-color: #fff; }
|
|
||||||
.tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-left.tether-target-attached-top .tether-content {
|
|
||||||
margin-bottom: 16px; }
|
|
||||||
.tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-left.tether-target-attached-top .tether-content:before {
|
|
||||||
top: 100%;
|
|
||||||
left: 16px;
|
|
||||||
border-top-color: #fff; }
|
|
||||||
.tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-right.tether-target-attached-top .tether-content {
|
|
||||||
margin-bottom: 16px; }
|
|
||||||
.tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-right.tether-target-attached-top .tether-content:before {
|
|
||||||
top: 100%;
|
|
||||||
right: 16px;
|
|
||||||
border-top-color: #fff; }
|
|
||||||
.tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-right.tether-target-attached-left .tether-content {
|
|
||||||
margin-right: 16px; }
|
|
||||||
.tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-right.tether-target-attached-left .tether-content:before {
|
|
||||||
top: 16px;
|
|
||||||
left: 100%;
|
|
||||||
border-left-color: #fff; }
|
|
||||||
.tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-left.tether-target-attached-right .tether-content {
|
|
||||||
margin-left: 16px; }
|
|
||||||
.tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-left.tether-target-attached-right .tether-content:before {
|
|
||||||
top: 16px;
|
|
||||||
right: 100%;
|
|
||||||
border-right-color: #fff; }
|
|
||||||
.tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-right.tether-target-attached-left .tether-content {
|
|
||||||
margin-right: 16px; }
|
|
||||||
.tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-right.tether-target-attached-left .tether-content:before {
|
|
||||||
bottom: 16px;
|
|
||||||
left: 100%;
|
|
||||||
border-left-color: #fff; }
|
|
||||||
.tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-left.tether-target-attached-right .tether-content {
|
|
||||||
margin-left: 16px; }
|
|
||||||
.tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-left.tether-target-attached-right .tether-content:before {
|
|
||||||
bottom: 16px;
|
|
||||||
right: 100%;
|
|
||||||
border-right-color: #fff; }
|
|
File diff suppressed because one or more lines are too long
|
@ -1,21 +0,0 @@
|
||||||
.tether-element, .tether-element:after, .tether-element:before, .tether-element *, .tether-element *:after, .tether-element *:before {
|
|
||||||
box-sizing: border-box; }
|
|
||||||
|
|
||||||
.tether-element {
|
|
||||||
position: absolute;
|
|
||||||
display: none; }
|
|
||||||
.tether-element.tether-open {
|
|
||||||
display: block; }
|
|
||||||
|
|
||||||
.tether-element.tether-theme-basic {
|
|
||||||
max-width: 100%;
|
|
||||||
max-height: 100%; }
|
|
||||||
.tether-element.tether-theme-basic .tether-content {
|
|
||||||
border-radius: 5px;
|
|
||||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
|
|
||||||
font-family: inherit;
|
|
||||||
background: #fff;
|
|
||||||
color: inherit;
|
|
||||||
padding: 1em;
|
|
||||||
font-size: 1.1em;
|
|
||||||
line-height: 1.5em; }
|
|
|
@ -1 +0,0 @@
|
||||||
.tether-element,.tether-element *,.tether-element :after,.tether-element :before,.tether-element:after,.tether-element:before{box-sizing:border-box}.tether-element{position:absolute;display:none}.tether-element.tether-open{display:block}.tether-element.tether-theme-basic{max-width:100%;max-height:100%}.tether-element.tether-theme-basic .tether-content{border-radius:5px;box-shadow:0 2px 8px rgba(0,0,0,.2);font-family:inherit;background:#fff;color:inherit;padding:1em;font-size:1.1em;line-height:1.5em}
|
|
|
@ -1,8 +0,0 @@
|
||||||
.tether-element, .tether-element:after, .tether-element:before, .tether-element *, .tether-element *:after, .tether-element *:before {
|
|
||||||
box-sizing: border-box; }
|
|
||||||
|
|
||||||
.tether-element {
|
|
||||||
position: absolute;
|
|
||||||
display: none; }
|
|
||||||
.tether-element.tether-open {
|
|
||||||
display: block; }
|
|
|
@ -1 +0,0 @@
|
||||||
.tether-element,.tether-element *,.tether-element :after,.tether-element :before,.tether-element:after,.tether-element:before{box-sizing:border-box}.tether-element{position:absolute;display:none}.tether-element.tether-open{display:block}
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
|
@ -1,12 +0,0 @@
|
||||||
// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.
|
|
||||||
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')
|
|
|
@ -1,211 +0,0 @@
|
||||||
(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-alpha.2): 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-alpha';
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ------------------------------------------------------------------------
|
|
||||||
* Data Api implementation
|
|
||||||
* ------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
// getters
|
|
||||||
|
|
||||||
_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;
|
|
||||||
}
|
|
||||||
|
|
||||||
// private
|
|
||||||
|
|
||||||
}, {
|
|
||||||
key: '_getRootElement',
|
|
||||||
value: function _getRootElement(element) {
|
|
||||||
var selector = _Util['default'].getSelectorFromElement(element);
|
|
||||||
var parent = false;
|
|
||||||
|
|
||||||
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, $.proxy(this._destroyElement, this, element)).emulateTransitionEnd(TRANSITION_DURATION);
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: '_destroyElement',
|
|
||||||
value: function _destroyElement(element) {
|
|
||||||
$(element).detach().trigger(Event.CLOSED).remove();
|
|
||||||
}
|
|
||||||
|
|
||||||
// static
|
|
||||||
|
|
||||||
}], [{
|
|
||||||
key: '_jQueryInterface',
|
|
||||||
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);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'VERSION',
|
|
||||||
get: function get() {
|
|
||||||
return VERSION;
|
|
||||||
}
|
|
||||||
}]);
|
|
||||||
|
|
||||||
return Alert;
|
|
||||||
})();
|
|
||||||
|
|
||||||
$(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;
|
|
||||||
});
|
|
|
@ -1,187 +0,0 @@
|
||||||
(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-alpha.2): 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-alpha';
|
|
||||||
var DATA_KEY = 'bs.button';
|
|
||||||
var EVENT_KEY = '.' + DATA_KEY;
|
|
||||||
var DATA_API_KEY = '.data-api';
|
|
||||||
var JQUERY_NO_CONFLICT = $.fn[NAME];
|
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ------------------------------------------------------------------------
|
|
||||||
* Data Api implementation
|
|
||||||
* ------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
// getters
|
|
||||||
|
|
||||||
_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;
|
|
||||||
}
|
|
||||||
|
|
||||||
// static
|
|
||||||
|
|
||||||
}], [{
|
|
||||||
key: '_jQueryInterface',
|
|
||||||
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]();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'VERSION',
|
|
||||||
get: function get() {
|
|
||||||
return VERSION;
|
|
||||||
}
|
|
||||||
}]);
|
|
||||||
|
|
||||||
return Button;
|
|
||||||
})();
|
|
||||||
|
|
||||||
$(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;
|
|
||||||
});
|
|
|
@ -1,497 +0,0 @@
|
||||||
(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-alpha.2): 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-alpha';
|
|
||||||
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();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ------------------------------------------------------------------------
|
|
||||||
* Data Api implementation
|
|
||||||
* ------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
// getters
|
|
||||||
|
|
||||||
_createClass(Carousel, [{
|
|
||||||
key: 'next',
|
|
||||||
|
|
||||||
// public
|
|
||||||
|
|
||||||
value: function next() {
|
|
||||||
if (!this._isSliding) {
|
|
||||||
this._slide(Direction.NEXT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'nextWhenVisible',
|
|
||||||
value: function nextWhenVisible() {
|
|
||||||
// Don't call next when the page isn't visible
|
|
||||||
if (!document.hidden) {
|
|
||||||
this.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(document.visibilityState ? this.nextWhenVisible : 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;
|
|
||||||
}
|
|
||||||
|
|
||||||
// private
|
|
||||||
|
|
||||||
}, {
|
|
||||||
key: '_getConfig',
|
|
||||||
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 = Boolean(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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// static
|
|
||||||
|
|
||||||
}], [{
|
|
||||||
key: '_jQueryInterface',
|
|
||||||
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 (typeof action === 'string') {
|
|
||||||
if (data[action] === undefined) {
|
|
||||||
throw new Error('No method named "' + 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();
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'VERSION',
|
|
||||||
get: function get() {
|
|
||||||
return VERSION;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'Default',
|
|
||||||
get: function get() {
|
|
||||||
return Default;
|
|
||||||
}
|
|
||||||
}]);
|
|
||||||
|
|
||||||
return Carousel;
|
|
||||||
})();
|
|
||||||
|
|
||||||
$(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;
|
|
||||||
});
|
|
|
@ -1,383 +0,0 @@
|
||||||
(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-alpha.2): 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-alpha';
|
|
||||||
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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ------------------------------------------------------------------------
|
|
||||||
* Data Api implementation
|
|
||||||
* ------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
// getters
|
|
||||||
|
|
||||||
_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 capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
|
|
||||||
var scrollSize = 'scroll' + capitalizedDimension;
|
|
||||||
|
|
||||||
$(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()) {
|
|
||||||
complete();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$(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;
|
|
||||||
}
|
|
||||||
|
|
||||||
// private
|
|
||||||
|
|
||||||
}, {
|
|
||||||
key: '_getConfig',
|
|
||||||
value: function _getConfig(config) {
|
|
||||||
config = $.extend({}, Default, config);
|
|
||||||
config.toggle = Boolean(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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// static
|
|
||||||
|
|
||||||
}], [{
|
|
||||||
key: '_getTargetFromElement',
|
|
||||||
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') {
|
|
||||||
if (data[config] === undefined) {
|
|
||||||
throw new Error('No method named "' + config + '"');
|
|
||||||
}
|
|
||||||
data[config]();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'VERSION',
|
|
||||||
get: function get() {
|
|
||||||
return VERSION;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'Default',
|
|
||||||
get: function get() {
|
|
||||||
return Default;
|
|
||||||
}
|
|
||||||
}]);
|
|
||||||
|
|
||||||
return Collapse;
|
|
||||||
})();
|
|
||||||
|
|
||||||
$(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;
|
|
||||||
});
|
|
|
@ -1,312 +0,0 @@
|
||||||
(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-alpha.2): 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-alpha';
|
|
||||||
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();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ------------------------------------------------------------------------
|
|
||||||
* Data Api implementation
|
|
||||||
* ------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
// getters
|
|
||||||
|
|
||||||
_createClass(Dropdown, [{
|
|
||||||
key: 'toggle',
|
|
||||||
|
|
||||||
// public
|
|
||||||
|
|
||||||
value: function toggle() {
|
|
||||||
if (this.disabled || $(this).hasClass(ClassName.DISABLED)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
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 false;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.focus();
|
|
||||||
this.setAttribute('aria-expanded', 'true');
|
|
||||||
|
|
||||||
$(parent).toggleClass(ClassName.OPEN);
|
|
||||||
$(parent).trigger($.Event(Event.SHOWN, relatedTarget));
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'dispose',
|
|
||||||
value: function dispose() {
|
|
||||||
$.removeData(this._element, DATA_KEY);
|
|
||||||
$(this._element).off(EVENT_KEY);
|
|
||||||
this._element = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// private
|
|
||||||
|
|
||||||
}, {
|
|
||||||
key: '_addEventListeners',
|
|
||||||
value: function _addEventListeners() {
|
|
||||||
$(this._element).on(Event.CLICK, this.toggle);
|
|
||||||
}
|
|
||||||
|
|
||||||
// static
|
|
||||||
|
|
||||||
}], [{
|
|
||||||
key: '_jQueryInterface',
|
|
||||||
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') {
|
|
||||||
if (data[config] === undefined) {
|
|
||||||
throw new Error('No method named "' + config + '"');
|
|
||||||
}
|
|
||||||
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(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) {
|
|
||||||
// up
|
|
||||||
index--;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (event.which === 40 && index < items.length - 1) {
|
|
||||||
// down
|
|
||||||
index++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (! ~index) {
|
|
||||||
index = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
items[index].focus();
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'VERSION',
|
|
||||||
get: function get() {
|
|
||||||
return VERSION;
|
|
||||||
}
|
|
||||||
}]);
|
|
||||||
|
|
||||||
return Dropdown;
|
|
||||||
})();
|
|
||||||
|
|
||||||
$(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;
|
|
||||||
});
|
|
|
@ -1,555 +0,0 @@
|
||||||
(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-alpha.2): 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-alpha';
|
|
||||||
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 = {
|
|
||||||
SCROLLBAR_MEASURER: 'modal-scrollbar-measure',
|
|
||||||
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"]',
|
|
||||||
FIXED_CONTENT: '.navbar-fixed-top, .navbar-fixed-bottom, .is-fixed'
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ------------------------------------------------------------------------
|
|
||||||
* 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;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ------------------------------------------------------------------------
|
|
||||||
* Data Api implementation
|
|
||||||
* ------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
// getters
|
|
||||||
|
|
||||||
_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)) {
|
|
||||||
_this._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;
|
|
||||||
}
|
|
||||||
|
|
||||||
// private
|
|
||||||
|
|
||||||
}, {
|
|
||||||
key: '_getConfig',
|
|
||||||
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(document.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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------
|
|
||||||
// the following methods are used to handle overflowing modals
|
|
||||||
// todo (fat): these should probably be refactored out of modal.js
|
|
||||||
// ----------------------------------------------------------------------
|
|
||||||
|
|
||||||
}, {
|
|
||||||
key: '_handleUpdate',
|
|
||||||
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($(Selector.FIXED_CONTENT).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 = ClassName.SCROLLBAR_MEASURER;
|
|
||||||
document.body.appendChild(scrollDiv);
|
|
||||||
var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;
|
|
||||||
document.body.removeChild(scrollDiv);
|
|
||||||
return scrollbarWidth;
|
|
||||||
}
|
|
||||||
|
|
||||||
// static
|
|
||||||
|
|
||||||
}], [{
|
|
||||||
key: '_jQueryInterface',
|
|
||||||
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') {
|
|
||||||
if (data[config] === undefined) {
|
|
||||||
throw new Error('No method named "' + config + '"');
|
|
||||||
}
|
|
||||||
data[config](relatedTarget);
|
|
||||||
} else if (_config.show) {
|
|
||||||
data.show(relatedTarget);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'VERSION',
|
|
||||||
get: function get() {
|
|
||||||
return VERSION;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'Default',
|
|
||||||
get: function get() {
|
|
||||||
return Default;
|
|
||||||
}
|
|
||||||
}]);
|
|
||||||
|
|
||||||
return Modal;
|
|
||||||
})();
|
|
||||||
|
|
||||||
$(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;
|
|
||||||
});
|
|
|
@ -1,220 +0,0 @@
|
||||||
(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; }; })();
|
|
||||||
|
|
||||||
var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };
|
|
||||||
|
|
||||||
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) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
||||||
|
|
||||||
var _Tooltip2 = _interopRequireDefault(_tooltip);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* --------------------------------------------------------------------------
|
|
||||||
* Bootstrap (v4.0.0-alpha.2): 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-alpha';
|
|
||||||
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|element|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) {
|
|
||||||
_inherits(Popover, _Tooltip);
|
|
||||||
|
|
||||||
function Popover() {
|
|
||||||
_classCallCheck(this, Popover);
|
|
||||||
|
|
||||||
_get(Object.getPrototypeOf(Popover.prototype), 'constructor', this).apply(this, arguments);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ------------------------------------------------------------------------
|
|
||||||
* jQuery
|
|
||||||
* ------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
_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());
|
|
||||||
|
|
||||||
// we use append for html objects to maintain js events
|
|
||||||
this.setElementContent($tip.find(Selector.TITLE), this.getTitle());
|
|
||||||
this.setElementContent($tip.find(Selector.CONTENT), this._getContent());
|
|
||||||
|
|
||||||
$tip.removeClass(ClassName.FADE).removeClass(ClassName.IN);
|
|
||||||
|
|
||||||
this.cleanupTether();
|
|
||||||
}
|
|
||||||
|
|
||||||
// private
|
|
||||||
|
|
||||||
}, {
|
|
||||||
key: '_getContent',
|
|
||||||
value: function _getContent() {
|
|
||||||
return this.element.getAttribute('data-content') || (typeof this.config.content === 'function' ? this.config.content.call(this.element) : this.config.content);
|
|
||||||
}
|
|
||||||
|
|
||||||
// static
|
|
||||||
|
|
||||||
}], [{
|
|
||||||
key: '_jQueryInterface',
|
|
||||||
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') {
|
|
||||||
if (data[config] === undefined) {
|
|
||||||
throw new Error('No method named "' + config + '"');
|
|
||||||
}
|
|
||||||
data[config]();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'VERSION',
|
|
||||||
|
|
||||||
// getters
|
|
||||||
|
|
||||||
get: function get() {
|
|
||||||
return VERSION;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'Default',
|
|
||||||
get: function get() {
|
|
||||||
return Default;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'NAME',
|
|
||||||
get: function get() {
|
|
||||||
return NAME;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'DATA_KEY',
|
|
||||||
get: function get() {
|
|
||||||
return DATA_KEY;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'Event',
|
|
||||||
get: function get() {
|
|
||||||
return Event;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'EVENT_KEY',
|
|
||||||
get: function get() {
|
|
||||||
return EVENT_KEY;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'DefaultType',
|
|
||||||
get: function get() {
|
|
||||||
return DefaultType;
|
|
||||||
}
|
|
||||||
}]);
|
|
||||||
|
|
||||||
return Popover;
|
|
||||||
})(_Tooltip2['default']);
|
|
||||||
|
|
||||||
$.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;
|
|
||||||
});
|
|
|
@ -1,339 +0,0 @@
|
||||||
(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-alpha.2): 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-alpha';
|
|
||||||
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_ITEM: 'dropdown-item',
|
|
||||||
DROPDOWN_MENU: 'dropdown-menu',
|
|
||||||
NAV_LINK: 'nav-link',
|
|
||||||
NAV: 'nav',
|
|
||||||
ACTIVE: 'active'
|
|
||||||
};
|
|
||||||
|
|
||||||
var Selector = {
|
|
||||||
DATA_SPY: '[data-spy="scroll"]',
|
|
||||||
ACTIVE: '.active',
|
|
||||||
LIST_ITEM: '.list-item',
|
|
||||||
LI: 'li',
|
|
||||||
LI_DROPDOWN: 'li.dropdown',
|
|
||||||
NAV_LINKS: '.nav-link',
|
|
||||||
DROPDOWN: '.dropdown',
|
|
||||||
DROPDOWN_ITEMS: '.dropdown-item',
|
|
||||||
DROPDOWN_TOGGLE: '.dropdown-toggle'
|
|
||||||
};
|
|
||||||
|
|
||||||
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_LINKS + ',' + (this._config.target + ' ' + Selector.DROPDOWN_ITEMS);
|
|
||||||
this._offsets = [];
|
|
||||||
this._targets = [];
|
|
||||||
this._activeTarget = null;
|
|
||||||
this._scrollHeight = 0;
|
|
||||||
|
|
||||||
$(this._scrollElement).on(Event.SCROLL, $.proxy(this._process, this));
|
|
||||||
|
|
||||||
this.refresh();
|
|
||||||
this._process();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ------------------------------------------------------------------------
|
|
||||||
* Data Api implementation
|
|
||||||
* ------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
// getters
|
|
||||||
|
|
||||||
_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;
|
|
||||||
}
|
|
||||||
|
|
||||||
// private
|
|
||||||
|
|
||||||
}, {
|
|
||||||
key: '_getConfig',
|
|
||||||
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 queries = this._selector.split(',');
|
|
||||||
queries = queries.map(function (selector) {
|
|
||||||
return selector + '[data-target="' + target + '"],' + (selector + '[href="' + target + '"]');
|
|
||||||
});
|
|
||||||
|
|
||||||
var $link = $(queries.join(','));
|
|
||||||
|
|
||||||
if ($link.hasClass(ClassName.DROPDOWN_ITEM)) {
|
|
||||||
$link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE);
|
|
||||||
$link.addClass(ClassName.ACTIVE);
|
|
||||||
} else {
|
|
||||||
// todo (fat) this is kinda sus…
|
|
||||||
// recursively add actives to tested nav-links
|
|
||||||
$link.parents(Selector.LI).find(Selector.NAV_LINKS).addClass(ClassName.ACTIVE);
|
|
||||||
}
|
|
||||||
|
|
||||||
$(this._scrollElement).trigger(Event.ACTIVATE, {
|
|
||||||
relatedTarget: target
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: '_clear',
|
|
||||||
value: function _clear() {
|
|
||||||
$(this._selector).filter(Selector.ACTIVE).removeClass(ClassName.ACTIVE);
|
|
||||||
}
|
|
||||||
|
|
||||||
// static
|
|
||||||
|
|
||||||
}], [{
|
|
||||||
key: '_jQueryInterface',
|
|
||||||
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') {
|
|
||||||
if (data[config] === undefined) {
|
|
||||||
throw new Error('No method named "' + config + '"');
|
|
||||||
}
|
|
||||||
data[config]();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'VERSION',
|
|
||||||
get: function get() {
|
|
||||||
return VERSION;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'Default',
|
|
||||||
get: function get() {
|
|
||||||
return Default;
|
|
||||||
}
|
|
||||||
}]);
|
|
||||||
|
|
||||||
return ScrollSpy;
|
|
||||||
})();
|
|
||||||
|
|
||||||
$(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;
|
|
||||||
});
|
|
|
@ -1,282 +0,0 @@
|
||||||
(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-alpha.2): 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-alpha';
|
|
||||||
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',
|
|
||||||
DROPDOWN: '.dropdown',
|
|
||||||
UL: 'ul:not(.dropdown-menu)',
|
|
||||||
FADE_CHILD: '> .nav-item .fade, > .fade',
|
|
||||||
ACTIVE: '.active',
|
|
||||||
ACTIVE_CHILD: '> .nav-item > .active, > .active',
|
|
||||||
DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"]',
|
|
||||||
DROPDOWN_TOGGLE: '.dropdown-toggle',
|
|
||||||
DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active'
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ------------------------------------------------------------------------
|
|
||||||
* Class Definition
|
|
||||||
* ------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
var Tab = (function () {
|
|
||||||
function Tab(element) {
|
|
||||||
_classCallCheck(this, Tab);
|
|
||||||
|
|
||||||
this._element = element;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ------------------------------------------------------------------------
|
|
||||||
* Data Api implementation
|
|
||||||
* ------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
// getters
|
|
||||||
|
|
||||||
_createClass(Tab, [{
|
|
||||||
key: 'show',
|
|
||||||
|
|
||||||
// public
|
|
||||||
|
|
||||||
value: function show() {
|
|
||||||
var _this = this;
|
|
||||||
|
|
||||||
if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $(this._element).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];
|
|
||||||
}
|
|
||||||
|
|
||||||
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, 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;
|
|
||||||
}
|
|
||||||
|
|
||||||
// private
|
|
||||||
|
|
||||||
}, {
|
|
||||||
key: '_activate',
|
|
||||||
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) || Boolean($(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);
|
|
||||||
}
|
|
||||||
|
|
||||||
active.setAttribute('aria-expanded', false);
|
|
||||||
}
|
|
||||||
|
|
||||||
$(element).addClass(ClassName.ACTIVE);
|
|
||||||
element.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.DROPDOWN)[0];
|
|
||||||
if (dropdownElement) {
|
|
||||||
$(dropdownElement).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE);
|
|
||||||
}
|
|
||||||
|
|
||||||
element.setAttribute('aria-expanded', true);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (callback) {
|
|
||||||
callback();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// static
|
|
||||||
|
|
||||||
}], [{
|
|
||||||
key: '_jQueryInterface',
|
|
||||||
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') {
|
|
||||||
if (data[config] === undefined) {
|
|
||||||
throw new Error('No method named "' + config + '"');
|
|
||||||
}
|
|
||||||
data[config]();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'VERSION',
|
|
||||||
get: function get() {
|
|
||||||
return VERSION;
|
|
||||||
}
|
|
||||||
}]);
|
|
||||||
|
|
||||||
return Tab;
|
|
||||||
})();
|
|
||||||
|
|
||||||
$(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;
|
|
||||||
});
|
|
|
@ -1,638 +0,0 @@
|
||||||
(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) {
|
|
||||||
/* global Tether */
|
|
||||||
|
|
||||||
'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-alpha.2): tooltip.js
|
|
||||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
|
||||||
* --------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
var Tooltip = (function ($) {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check for Tether dependency
|
|
||||||
* Tether - http://github.hubspot.com/tether/
|
|
||||||
*/
|
|
||||||
if (window.Tether === undefined) {
|
|
||||||
throw new Error('Bootstrap tooltips require Tether (http://github.hubspot.com/tether/)');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ------------------------------------------------------------------------
|
|
||||||
* Constants
|
|
||||||
* ------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
var NAME = 'tooltip';
|
|
||||||
var VERSION = '4.0.0-alpha';
|
|
||||||
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|element|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();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ------------------------------------------------------------------------
|
|
||||||
* jQuery
|
|
||||||
* ------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
// getters
|
|
||||||
|
|
||||||
_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) {
|
|
||||||
if (event) {
|
|
||||||
var dataKey = this.constructor.DATA_KEY;
|
|
||||||
var 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 {
|
|
||||||
|
|
||||||
if ($(this.getTipElement()).hasClass(ClassName.IN)) {
|
|
||||||
this._leave(null, this);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
this._enter(null, this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
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({
|
|
||||||
attachment: attachment,
|
|
||||||
element: tip,
|
|
||||||
target: this.element,
|
|
||||||
classes: TetherClass,
|
|
||||||
classPrefix: CLASS_PREFIX,
|
|
||||||
offset: this.config.offset,
|
|
||||||
constraints: this.config.constraints,
|
|
||||||
addTargetClasses: false
|
|
||||||
});
|
|
||||||
|
|
||||||
_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);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
if (_Util['default'].supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE)) {
|
|
||||||
$(this.tip).one(_Util['default'].TRANSITION_END, complete).emulateTransitionEnd(Tooltip._TRANSITION_DURATION);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
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 = '';
|
|
||||||
}
|
|
||||||
|
|
||||||
// protected
|
|
||||||
|
|
||||||
}, {
|
|
||||||
key: 'isWithContent',
|
|
||||||
value: function isWithContent() {
|
|
||||||
return Boolean(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());
|
|
||||||
|
|
||||||
this.setElementContent($tip.find(Selector.TOOLTIP_INNER), this.getTitle());
|
|
||||||
|
|
||||||
$tip.removeClass(ClassName.FADE).removeClass(ClassName.IN);
|
|
||||||
|
|
||||||
this.cleanupTether();
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'setElementContent',
|
|
||||||
value: function setElementContent($element, content) {
|
|
||||||
var html = this.config.html;
|
|
||||||
if (typeof content === 'object' && (content.nodeType || content.jquery)) {
|
|
||||||
// content is a DOM node or a jQuery
|
|
||||||
if (html) {
|
|
||||||
if (!$(content).parent().is($element)) {
|
|
||||||
$element.empty().append(content);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$element.text($(content).text());
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$element[html ? 'html' : 'text'](content);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// private
|
|
||||||
|
|
||||||
}, {
|
|
||||||
key: '_getAttachment',
|
|
||||||
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: '_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) {
|
|
||||||
if (this.constructor.Default[key] !== this.config[key]) {
|
|
||||||
config[key] = this.config[key];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return config;
|
|
||||||
}
|
|
||||||
|
|
||||||
// static
|
|
||||||
|
|
||||||
}], [{
|
|
||||||
key: '_jQueryInterface',
|
|
||||||
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') {
|
|
||||||
if (data[config] === undefined) {
|
|
||||||
throw new Error('No method named "' + config + '"');
|
|
||||||
}
|
|
||||||
data[config]();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'VERSION',
|
|
||||||
get: function get() {
|
|
||||||
return VERSION;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'Default',
|
|
||||||
get: function get() {
|
|
||||||
return Default;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'NAME',
|
|
||||||
get: function get() {
|
|
||||||
return NAME;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'DATA_KEY',
|
|
||||||
get: function get() {
|
|
||||||
return DATA_KEY;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'Event',
|
|
||||||
get: function get() {
|
|
||||||
return Event;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'EVENT_KEY',
|
|
||||||
get: function get() {
|
|
||||||
return EVENT_KEY;
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'DefaultType',
|
|
||||||
get: function get() {
|
|
||||||
return DefaultType;
|
|
||||||
}
|
|
||||||
}]);
|
|
||||||
|
|
||||||
return Tooltip;
|
|
||||||
})();
|
|
||||||
|
|
||||||
$.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;
|
|
||||||
});
|
|
|
@ -1,172 +0,0 @@
|
||||||
(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-alpha.2): 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); // "~~" acts like a faster Math.floor() here
|
|
||||||
} 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 Boolean(transition);
|
|
||||||
},
|
|
||||||
|
|
||||||
typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {
|
|
||||||
for (var property in configTypes) {
|
|
||||||
if (configTypes.hasOwnProperty(property)) {
|
|
||||||
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;
|
|
||||||
});
|
|
481
src/js/core.js
481
src/js/core.js
|
@ -1,481 +0,0 @@
|
||||||
/* global Symbol */
|
|
||||||
// Defining this global in .eslintrc would create a danger of using the global
|
|
||||||
// unguarded in another place, it seems safer to define global only for this module
|
|
||||||
|
|
||||||
define( [
|
|
||||||
"./var/arr",
|
|
||||||
"./var/document",
|
|
||||||
"./var/getProto",
|
|
||||||
"./var/slice",
|
|
||||||
"./var/concat",
|
|
||||||
"./var/push",
|
|
||||||
"./var/indexOf",
|
|
||||||
"./var/class2type",
|
|
||||||
"./var/toString",
|
|
||||||
"./var/hasOwn",
|
|
||||||
"./var/fnToString",
|
|
||||||
"./var/ObjectFunctionString",
|
|
||||||
"./var/support",
|
|
||||||
"./core/DOMEval"
|
|
||||||
], function( arr, document, getProto, slice, concat, push, indexOf,
|
|
||||||
class2type, toString, hasOwn, fnToString, ObjectFunctionString,
|
|
||||||
support, DOMEval ) {
|
|
||||||
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var
|
|
||||||
version = "3.1.0",
|
|
||||||
|
|
||||||
// Define a local copy of jQuery
|
|
||||||
jQuery = function( selector, context ) {
|
|
||||||
|
|
||||||
// The jQuery object is actually just the init constructor 'enhanced'
|
|
||||||
// Need init if jQuery is called (just allow error to be thrown if not included)
|
|
||||||
return new jQuery.fn.init( selector, context );
|
|
||||||
},
|
|
||||||
|
|
||||||
// Support: Android <=4.0 only
|
|
||||||
// Make sure we trim BOM and NBSP
|
|
||||||
rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
|
|
||||||
|
|
||||||
// Matches dashed string for camelizing
|
|
||||||
rmsPrefix = /^-ms-/,
|
|
||||||
rdashAlpha = /-([a-z])/g,
|
|
||||||
|
|
||||||
// Used by jQuery.camelCase as callback to replace()
|
|
||||||
fcamelCase = function( all, letter ) {
|
|
||||||
return letter.toUpperCase();
|
|
||||||
};
|
|
||||||
|
|
||||||
jQuery.fn = jQuery.prototype = {
|
|
||||||
|
|
||||||
// The current version of jQuery being used
|
|
||||||
jquery: version,
|
|
||||||
|
|
||||||
constructor: jQuery,
|
|
||||||
|
|
||||||
// The default length of a jQuery object is 0
|
|
||||||
length: 0,
|
|
||||||
|
|
||||||
toArray: function() {
|
|
||||||
return slice.call( this );
|
|
||||||
},
|
|
||||||
|
|
||||||
// Get the Nth element in the matched element set OR
|
|
||||||
// Get the whole matched element set as a clean array
|
|
||||||
get: function( num ) {
|
|
||||||
return num != null ?
|
|
||||||
|
|
||||||
// Return just the one element from the set
|
|
||||||
( num < 0 ? this[ num + this.length ] : this[ num ] ) :
|
|
||||||
|
|
||||||
// Return all the elements in a clean array
|
|
||||||
slice.call( this );
|
|
||||||
},
|
|
||||||
|
|
||||||
// Take an array of elements and push it onto the stack
|
|
||||||
// (returning the new matched element set)
|
|
||||||
pushStack: function( elems ) {
|
|
||||||
|
|
||||||
// Build a new jQuery matched element set
|
|
||||||
var ret = jQuery.merge( this.constructor(), elems );
|
|
||||||
|
|
||||||
// Add the old object onto the stack (as a reference)
|
|
||||||
ret.prevObject = this;
|
|
||||||
|
|
||||||
// Return the newly-formed element set
|
|
||||||
return ret;
|
|
||||||
},
|
|
||||||
|
|
||||||
// Execute a callback for every element in the matched set.
|
|
||||||
each: function( callback ) {
|
|
||||||
return jQuery.each( this, callback );
|
|
||||||
},
|
|
||||||
|
|
||||||
map: function( callback ) {
|
|
||||||
return this.pushStack( jQuery.map( this, function( elem, i ) {
|
|
||||||
return callback.call( elem, i, elem );
|
|
||||||
} ) );
|
|
||||||
},
|
|
||||||
|
|
||||||
slice: function() {
|
|
||||||
return this.pushStack( slice.apply( this, arguments ) );
|
|
||||||
},
|
|
||||||
|
|
||||||
first: function() {
|
|
||||||
return this.eq( 0 );
|
|
||||||
},
|
|
||||||
|
|
||||||
last: function() {
|
|
||||||
return this.eq( -1 );
|
|
||||||
},
|
|
||||||
|
|
||||||
eq: function( i ) {
|
|
||||||
var len = this.length,
|
|
||||||
j = +i + ( i < 0 ? len : 0 );
|
|
||||||
return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
|
|
||||||
},
|
|
||||||
|
|
||||||
end: function() {
|
|
||||||
return this.prevObject || this.constructor();
|
|
||||||
},
|
|
||||||
|
|
||||||
// For internal use only.
|
|
||||||
// Behaves like an Array's method, not like a jQuery method.
|
|
||||||
push: push,
|
|
||||||
sort: arr.sort,
|
|
||||||
splice: arr.splice
|
|
||||||
};
|
|
||||||
|
|
||||||
jQuery.extend = jQuery.fn.extend = function() {
|
|
||||||
var options, name, src, copy, copyIsArray, clone,
|
|
||||||
target = arguments[ 0 ] || {},
|
|
||||||
i = 1,
|
|
||||||
length = arguments.length,
|
|
||||||
deep = false;
|
|
||||||
|
|
||||||
// Handle a deep copy situation
|
|
||||||
if ( typeof target === "boolean" ) {
|
|
||||||
deep = target;
|
|
||||||
|
|
||||||
// Skip the boolean and the target
|
|
||||||
target = arguments[ i ] || {};
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Handle case when target is a string or something (possible in deep copy)
|
|
||||||
if ( typeof target !== "object" && !jQuery.isFunction( target ) ) {
|
|
||||||
target = {};
|
|
||||||
}
|
|
||||||
|
|
||||||
// Extend jQuery itself if only one argument is passed
|
|
||||||
if ( i === length ) {
|
|
||||||
target = this;
|
|
||||||
i--;
|
|
||||||
}
|
|
||||||
|
|
||||||
for ( ; i < length; i++ ) {
|
|
||||||
|
|
||||||
// Only deal with non-null/undefined values
|
|
||||||
if ( ( options = arguments[ i ] ) != null ) {
|
|
||||||
|
|
||||||
// Extend the base object
|
|
||||||
for ( name in options ) {
|
|
||||||
src = target[ name ];
|
|
||||||
copy = options[ name ];
|
|
||||||
|
|
||||||
// Prevent never-ending loop
|
|
||||||
if ( target === copy ) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Recurse if we're merging plain objects or arrays
|
|
||||||
if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
|
|
||||||
( copyIsArray = jQuery.isArray( copy ) ) ) ) {
|
|
||||||
|
|
||||||
if ( copyIsArray ) {
|
|
||||||
copyIsArray = false;
|
|
||||||
clone = src && jQuery.isArray( src ) ? src : [];
|
|
||||||
|
|
||||||
} else {
|
|
||||||
clone = src && jQuery.isPlainObject( src ) ? src : {};
|
|
||||||
}
|
|
||||||
|
|
||||||
// Never move original objects, clone them
|
|
||||||
target[ name ] = jQuery.extend( deep, clone, copy );
|
|
||||||
|
|
||||||
// Don't bring in undefined values
|
|
||||||
} else if ( copy !== undefined ) {
|
|
||||||
target[ name ] = copy;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Return the modified object
|
|
||||||
return target;
|
|
||||||
};
|
|
||||||
|
|
||||||
jQuery.extend( {
|
|
||||||
|
|
||||||
// Unique for each copy of jQuery on the page
|
|
||||||
expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
|
|
||||||
|
|
||||||
// Assume jQuery is ready without the ready module
|
|
||||||
isReady: true,
|
|
||||||
|
|
||||||
error: function( msg ) {
|
|
||||||
throw new Error( msg );
|
|
||||||
},
|
|
||||||
|
|
||||||
noop: function() {},
|
|
||||||
|
|
||||||
isFunction: function( obj ) {
|
|
||||||
return jQuery.type( obj ) === "function";
|
|
||||||
},
|
|
||||||
|
|
||||||
isArray: Array.isArray,
|
|
||||||
|
|
||||||
isWindow: function( obj ) {
|
|
||||||
return obj != null && obj === obj.window;
|
|
||||||
},
|
|
||||||
|
|
||||||
isNumeric: function( obj ) {
|
|
||||||
|
|
||||||
// As of jQuery 3.0, isNumeric is limited to
|
|
||||||
// strings and numbers (primitives or objects)
|
|
||||||
// that can be coerced to finite numbers (gh-2662)
|
|
||||||
var type = jQuery.type( obj );
|
|
||||||
return ( type === "number" || type === "string" ) &&
|
|
||||||
|
|
||||||
// parseFloat NaNs numeric-cast false positives ("")
|
|
||||||
// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
|
|
||||||
// subtraction forces infinities to NaN
|
|
||||||
!isNaN( obj - parseFloat( obj ) );
|
|
||||||
},
|
|
||||||
|
|
||||||
isPlainObject: function( obj ) {
|
|
||||||
var proto, Ctor;
|
|
||||||
|
|
||||||
// Detect obvious negatives
|
|
||||||
// Use toString instead of jQuery.type to catch host objects
|
|
||||||
if ( !obj || toString.call( obj ) !== "[object Object]" ) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
proto = getProto( obj );
|
|
||||||
|
|
||||||
// Objects with no prototype (e.g., `Object.create( null )`) are plain
|
|
||||||
if ( !proto ) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Objects with prototype are plain iff they were constructed by a global Object function
|
|
||||||
Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
|
|
||||||
return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
|
|
||||||
},
|
|
||||||
|
|
||||||
isEmptyObject: function( obj ) {
|
|
||||||
|
|
||||||
/* eslint-disable no-unused-vars */
|
|
||||||
// See https://github.com/eslint/eslint/issues/6125
|
|
||||||
var name;
|
|
||||||
|
|
||||||
for ( name in obj ) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
},
|
|
||||||
|
|
||||||
type: function( obj ) {
|
|
||||||
if ( obj == null ) {
|
|
||||||
return obj + "";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Support: Android <=2.3 only (functionish RegExp)
|
|
||||||
return typeof obj === "object" || typeof obj === "function" ?
|
|
||||||
class2type[ toString.call( obj ) ] || "object" :
|
|
||||||
typeof obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
// Evaluates a script in a global context
|
|
||||||
globalEval: function( code ) {
|
|
||||||
DOMEval( code );
|
|
||||||
},
|
|
||||||
|
|
||||||
// Convert dashed to camelCase; used by the css and data modules
|
|
||||||
// Support: IE <=9 - 11, Edge 12 - 13
|
|
||||||
// Microsoft forgot to hump their vendor prefix (#9572)
|
|
||||||
camelCase: function( string ) {
|
|
||||||
return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
|
|
||||||
},
|
|
||||||
|
|
||||||
nodeName: function( elem, name ) {
|
|
||||||
return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
|
|
||||||
},
|
|
||||||
|
|
||||||
each: function( obj, callback ) {
|
|
||||||
var length, i = 0;
|
|
||||||
|
|
||||||
if ( isArrayLike( obj ) ) {
|
|
||||||
length = obj.length;
|
|
||||||
for ( ; i < length; i++ ) {
|
|
||||||
if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
for ( i in obj ) {
|
|
||||||
if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
// Support: Android <=4.0 only
|
|
||||||
trim: function( text ) {
|
|
||||||
return text == null ?
|
|
||||||
"" :
|
|
||||||
( text + "" ).replace( rtrim, "" );
|
|
||||||
},
|
|
||||||
|
|
||||||
// results is for internal usage only
|
|
||||||
makeArray: function( arr, results ) {
|
|
||||||
var ret = results || [];
|
|
||||||
|
|
||||||
if ( arr != null ) {
|
|
||||||
if ( isArrayLike( Object( arr ) ) ) {
|
|
||||||
jQuery.merge( ret,
|
|
||||||
typeof arr === "string" ?
|
|
||||||
[ arr ] : arr
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
push.call( ret, arr );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
},
|
|
||||||
|
|
||||||
inArray: function( elem, arr, i ) {
|
|
||||||
return arr == null ? -1 : indexOf.call( arr, elem, i );
|
|
||||||
},
|
|
||||||
|
|
||||||
// Support: Android <=4.0 only, PhantomJS 1 only
|
|
||||||
// push.apply(_, arraylike) throws on ancient WebKit
|
|
||||||
merge: function( first, second ) {
|
|
||||||
var len = +second.length,
|
|
||||||
j = 0,
|
|
||||||
i = first.length;
|
|
||||||
|
|
||||||
for ( ; j < len; j++ ) {
|
|
||||||
first[ i++ ] = second[ j ];
|
|
||||||
}
|
|
||||||
|
|
||||||
first.length = i;
|
|
||||||
|
|
||||||
return first;
|
|
||||||
},
|
|
||||||
|
|
||||||
grep: function( elems, callback, invert ) {
|
|
||||||
var callbackInverse,
|
|
||||||
matches = [],
|
|
||||||
i = 0,
|
|
||||||
length = elems.length,
|
|
||||||
callbackExpect = !invert;
|
|
||||||
|
|
||||||
// Go through the array, only saving the items
|
|
||||||
// that pass the validator function
|
|
||||||
for ( ; i < length; i++ ) {
|
|
||||||
callbackInverse = !callback( elems[ i ], i );
|
|
||||||
if ( callbackInverse !== callbackExpect ) {
|
|
||||||
matches.push( elems[ i ] );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return matches;
|
|
||||||
},
|
|
||||||
|
|
||||||
// arg is for internal usage only
|
|
||||||
map: function( elems, callback, arg ) {
|
|
||||||
var length, value,
|
|
||||||
i = 0,
|
|
||||||
ret = [];
|
|
||||||
|
|
||||||
// Go through the array, translating each of the items to their new values
|
|
||||||
if ( isArrayLike( elems ) ) {
|
|
||||||
length = elems.length;
|
|
||||||
for ( ; i < length; i++ ) {
|
|
||||||
value = callback( elems[ i ], i, arg );
|
|
||||||
|
|
||||||
if ( value != null ) {
|
|
||||||
ret.push( value );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Go through every key on the object,
|
|
||||||
} else {
|
|
||||||
for ( i in elems ) {
|
|
||||||
value = callback( elems[ i ], i, arg );
|
|
||||||
|
|
||||||
if ( value != null ) {
|
|
||||||
ret.push( value );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Flatten any nested arrays
|
|
||||||
return concat.apply( [], ret );
|
|
||||||
},
|
|
||||||
|
|
||||||
// A global GUID counter for objects
|
|
||||||
guid: 1,
|
|
||||||
|
|
||||||
// Bind a function to a context, optionally partially applying any
|
|
||||||
// arguments.
|
|
||||||
proxy: function( fn, context ) {
|
|
||||||
var tmp, args, proxy;
|
|
||||||
|
|
||||||
if ( typeof context === "string" ) {
|
|
||||||
tmp = fn[ context ];
|
|
||||||
context = fn;
|
|
||||||
fn = tmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Quick check to determine if target is callable, in the spec
|
|
||||||
// this throws a TypeError, but we will just return undefined.
|
|
||||||
if ( !jQuery.isFunction( fn ) ) {
|
|
||||||
return undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Simulated bind
|
|
||||||
args = slice.call( arguments, 2 );
|
|
||||||
proxy = function() {
|
|
||||||
return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
|
|
||||||
};
|
|
||||||
|
|
||||||
// Set the guid of unique handler to the same of original handler, so it can be removed
|
|
||||||
proxy.guid = fn.guid = fn.guid || jQuery.guid++;
|
|
||||||
|
|
||||||
return proxy;
|
|
||||||
},
|
|
||||||
|
|
||||||
now: Date.now,
|
|
||||||
|
|
||||||
// jQuery.support is not used in Core but other projects attach their
|
|
||||||
// properties to it so it needs to exist.
|
|
||||||
support: support
|
|
||||||
} );
|
|
||||||
|
|
||||||
if ( typeof Symbol === "function" ) {
|
|
||||||
jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Populate the class2type map
|
|
||||||
jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
|
|
||||||
function( i, name ) {
|
|
||||||
class2type[ "[object " + name + "]" ] = name.toLowerCase();
|
|
||||||
} );
|
|
||||||
|
|
||||||
function isArrayLike( obj ) {
|
|
||||||
|
|
||||||
// Support: real iOS 8.2 only (not reproducible in simulator)
|
|
||||||
// `in` check used to prevent JIT error (gh-2145)
|
|
||||||
// hasOwn isn't used here due to false negatives
|
|
||||||
// regarding Nodelist length in IE
|
|
||||||
var length = !!obj && "length" in obj && obj.length,
|
|
||||||
type = jQuery.type( obj );
|
|
||||||
|
|
||||||
if ( type === "function" || jQuery.isWindow( obj ) ) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return type === "array" || length === 0 ||
|
|
||||||
typeof length === "number" && length > 0 && ( length - 1 ) in obj;
|
|
||||||
}
|
|
||||||
|
|
||||||
return jQuery;
|
|
||||||
} );
|
|
|
@ -1,42 +0,0 @@
|
||||||
/**
|
|
||||||
* File customizer.js.
|
|
||||||
*
|
|
||||||
* Theme Customizer enhancements for a better user experience.
|
|
||||||
*
|
|
||||||
* Contains handlers to make Theme Customizer preview reload changes asynchronously.
|
|
||||||
*/
|
|
||||||
|
|
||||||
( function( $ ) {
|
|
||||||
|
|
||||||
// Site title and description.
|
|
||||||
wp.customize( 'blogname', function( value ) {
|
|
||||||
value.bind( function( to ) {
|
|
||||||
$( '.site-title a' ).text( to );
|
|
||||||
} );
|
|
||||||
} );
|
|
||||||
wp.customize( 'blogdescription', function( value ) {
|
|
||||||
value.bind( function( to ) {
|
|
||||||
$( '.site-description' ).text( to );
|
|
||||||
} );
|
|
||||||
} );
|
|
||||||
|
|
||||||
// Header text color.
|
|
||||||
wp.customize( 'header_textcolor', function( value ) {
|
|
||||||
value.bind( function( to ) {
|
|
||||||
if ( 'blank' === to ) {
|
|
||||||
$( '.site-title a, .site-description' ).css( {
|
|
||||||
'clip': 'rect(1px, 1px, 1px, 1px)',
|
|
||||||
'position': 'absolute'
|
|
||||||
} );
|
|
||||||
} else {
|
|
||||||
$( '.site-title a, .site-description' ).css( {
|
|
||||||
'clip': 'auto',
|
|
||||||
'position': 'relative'
|
|
||||||
} );
|
|
||||||
$( '.site-title a, .site-description' ).css( {
|
|
||||||
'color': to
|
|
||||||
} );
|
|
||||||
}
|
|
||||||
} );
|
|
||||||
} );
|
|
||||||
} )( jQuery );
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
|
@ -1,112 +0,0 @@
|
||||||
/**
|
|
||||||
* File navigation.js.
|
|
||||||
*
|
|
||||||
* Handles toggling the navigation menu for small screens and enables TAB key
|
|
||||||
* navigation support for dropdown menus.
|
|
||||||
*/
|
|
||||||
( function() {
|
|
||||||
var container, button, menu, links, subMenus, i, len;
|
|
||||||
|
|
||||||
container = document.getElementById( 'site-navigation' );
|
|
||||||
if ( ! container ) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
button = container.getElementsByTagName( 'button' )[0];
|
|
||||||
if ( 'undefined' === typeof button ) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
menu = container.getElementsByTagName( 'ul' )[0];
|
|
||||||
|
|
||||||
// Hide menu toggle button if menu is empty and return early.
|
|
||||||
if ( 'undefined' === typeof menu ) {
|
|
||||||
button.style.display = 'none';
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
menu.setAttribute( 'aria-expanded', 'false' );
|
|
||||||
if ( -1 === menu.className.indexOf( 'nav-menu' ) ) {
|
|
||||||
menu.className += ' nav-menu';
|
|
||||||
}
|
|
||||||
|
|
||||||
button.onclick = function() {
|
|
||||||
if ( -1 !== container.className.indexOf( 'toggled' ) ) {
|
|
||||||
container.className = container.className.replace( ' toggled', '' );
|
|
||||||
button.setAttribute( 'aria-expanded', 'false' );
|
|
||||||
menu.setAttribute( 'aria-expanded', 'false' );
|
|
||||||
} else {
|
|
||||||
container.className += ' toggled';
|
|
||||||
button.setAttribute( 'aria-expanded', 'true' );
|
|
||||||
menu.setAttribute( 'aria-expanded', 'true' );
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// Get all the link elements within the menu.
|
|
||||||
links = menu.getElementsByTagName( 'a' );
|
|
||||||
subMenus = menu.getElementsByTagName( 'ul' );
|
|
||||||
|
|
||||||
// Set menu items with submenus to aria-haspopup="true".
|
|
||||||
for ( i = 0, len = subMenus.length; i < len; i++ ) {
|
|
||||||
subMenus[i].parentNode.setAttribute( 'aria-haspopup', 'true' );
|
|
||||||
}
|
|
||||||
|
|
||||||
// Each time a menu link is focused or blurred, toggle focus.
|
|
||||||
for ( i = 0, len = links.length; i < len; i++ ) {
|
|
||||||
links[i].addEventListener( 'focus', toggleFocus, true );
|
|
||||||
links[i].addEventListener( 'blur', toggleFocus, true );
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets or removes .focus class on an element.
|
|
||||||
*/
|
|
||||||
function toggleFocus() {
|
|
||||||
var self = this;
|
|
||||||
|
|
||||||
// Move up through the ancestors of the current link until we hit .nav-menu.
|
|
||||||
while ( -1 === self.className.indexOf( 'nav-menu' ) ) {
|
|
||||||
|
|
||||||
// On li elements toggle the class .focus.
|
|
||||||
if ( 'li' === self.tagName.toLowerCase() ) {
|
|
||||||
if ( -1 !== self.className.indexOf( 'focus' ) ) {
|
|
||||||
self.className = self.className.replace( ' focus', '' );
|
|
||||||
} else {
|
|
||||||
self.className += ' focus';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
self = self.parentElement;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Toggles `focus` class to allow submenu access on tablets.
|
|
||||||
*/
|
|
||||||
( function( container ) {
|
|
||||||
var touchStartFn, i,
|
|
||||||
parentLink = container.querySelectorAll( '.menu-item-has-children > a, .page_item_has_children > a' );
|
|
||||||
|
|
||||||
if ( 'ontouchstart' in window ) {
|
|
||||||
touchStartFn = function( e ) {
|
|
||||||
var menuItem = this.parentNode, i;
|
|
||||||
|
|
||||||
if ( ! menuItem.classList.contains( 'focus' ) ) {
|
|
||||||
e.preventDefault();
|
|
||||||
for ( i = 0; i < menuItem.parentNode.children.length; ++i ) {
|
|
||||||
if ( menuItem === menuItem.parentNode.children[i] ) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
menuItem.parentNode.children[i].classList.remove( 'focus' );
|
|
||||||
}
|
|
||||||
menuItem.classList.add( 'focus' );
|
|
||||||
} else {
|
|
||||||
menuItem.classList.remove( 'focus' );
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
for ( i = 0; i < parentLink.length; ++i ) {
|
|
||||||
parentLink[i].addEventListener( 'touchstart', touchStartFn, false );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}( container ) );
|
|
||||||
} )();
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
|
@ -1,33 +0,0 @@
|
||||||
/**
|
|
||||||
* File skip-link-focus-fix.js.
|
|
||||||
*
|
|
||||||
* Helps with accessibility for keyboard only users.
|
|
||||||
*
|
|
||||||
* Learn more: https://git.io/vWdr2
|
|
||||||
*/
|
|
||||||
( function() {
|
|
||||||
var isWebkit = navigator.userAgent.toLowerCase().indexOf( 'webkit' ) > -1,
|
|
||||||
isOpera = navigator.userAgent.toLowerCase().indexOf( 'opera' ) > -1,
|
|
||||||
isIe = navigator.userAgent.toLowerCase().indexOf( 'msie' ) > -1;
|
|
||||||
|
|
||||||
if ( ( isWebkit || isOpera || isIe ) && document.getElementById && window.addEventListener ) {
|
|
||||||
window.addEventListener( 'hashchange', function() {
|
|
||||||
var id = location.hash.substring( 1 ),
|
|
||||||
element;
|
|
||||||
|
|
||||||
if ( ! ( /^[A-z0-9_-]+$/.test( id ) ) ) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
element = document.getElementById( id );
|
|
||||||
|
|
||||||
if ( element ) {
|
|
||||||
if ( ! ( /^(?:a|select|input|button|textarea)$/i.test( element.tagName ) ) ) {
|
|
||||||
element.tabIndex = -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
element.focus();
|
|
||||||
}
|
|
||||||
}, false );
|
|
||||||
}
|
|
||||||
})();
|
|
1792
src/js/tether.js
1792
src/js/tether.js
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
|
@ -1,56 +0,0 @@
|
||||||
//
|
|
||||||
// Base styles
|
|
||||||
//
|
|
||||||
|
|
||||||
.alert {
|
|
||||||
padding: $alert-padding;
|
|
||||||
margin-bottom: $spacer-y;
|
|
||||||
border: $alert-border-width solid transparent;
|
|
||||||
@include border-radius($alert-border-radius);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Headings for larger alerts
|
|
||||||
.alert-heading {
|
|
||||||
// Specified to prevent conflicts of changing $headings-color
|
|
||||||
color: inherit;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Provide class for links that match alerts
|
|
||||||
.alert-link {
|
|
||||||
font-weight: $alert-link-font-weight;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Dismissible alerts
|
|
||||||
//
|
|
||||||
// Expand the right padding and account for the close button's positioning.
|
|
||||||
|
|
||||||
.alert-dismissible {
|
|
||||||
padding-right: ($alert-padding + 20px);
|
|
||||||
|
|
||||||
// Adjust close link position
|
|
||||||
.close {
|
|
||||||
position: relative;
|
|
||||||
top: -2px;
|
|
||||||
right: -21px;
|
|
||||||
color: inherit;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Alternate styles
|
|
||||||
//
|
|
||||||
// Generate contextual modifier classes for colorizing the alert.
|
|
||||||
|
|
||||||
.alert-success {
|
|
||||||
@include alert-variant($alert-success-bg, $alert-success-border, $alert-success-text);
|
|
||||||
}
|
|
||||||
.alert-info {
|
|
||||||
@include alert-variant($alert-info-bg, $alert-info-border, $alert-info-text);
|
|
||||||
}
|
|
||||||
.alert-warning {
|
|
||||||
@include alert-variant($alert-warning-bg, $alert-warning-border, $alert-warning-text);
|
|
||||||
}
|
|
||||||
.alert-danger {
|
|
||||||
@include alert-variant($alert-danger-bg, $alert-danger-border, $alert-danger-text);
|
|
||||||
}
|
|
|
@ -1,27 +0,0 @@
|
||||||
.fade {
|
|
||||||
opacity: 0;
|
|
||||||
transition: opacity .15s linear;
|
|
||||||
|
|
||||||
&.in {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.collapse {
|
|
||||||
display: none;
|
|
||||||
|
|
||||||
&.in {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
// tr&.in { display: table-row; }
|
|
||||||
// tbody&.in { display: table-row-group; }
|
|
||||||
}
|
|
||||||
|
|
||||||
.collapsing {
|
|
||||||
position: relative;
|
|
||||||
height: 0;
|
|
||||||
overflow: hidden;
|
|
||||||
transition-timing-function: ease;
|
|
||||||
transition-duration: .35s;
|
|
||||||
transition-property: height;
|
|
||||||
}
|
|
|
@ -1,38 +0,0 @@
|
||||||
.breadcrumb {
|
|
||||||
padding: $breadcrumb-padding-y $breadcrumb-padding-x;
|
|
||||||
margin-bottom: $spacer-y;
|
|
||||||
list-style: none;
|
|
||||||
background-color: $breadcrumb-bg;
|
|
||||||
@include border-radius($border-radius);
|
|
||||||
@include clearfix;
|
|
||||||
}
|
|
||||||
|
|
||||||
.breadcrumb-item {
|
|
||||||
float: left;
|
|
||||||
|
|
||||||
// The separator between breadcrumbs (by default, a forward-slash: "/")
|
|
||||||
+ .breadcrumb-item::before {
|
|
||||||
display: inline-block; // Suppress underlining of the separator in modern browsers
|
|
||||||
padding-right: $breadcrumb-item-padding;
|
|
||||||
padding-left: $breadcrumb-item-padding;
|
|
||||||
color: $breadcrumb-divider-color;
|
|
||||||
content: "#{$breadcrumb-divider}";
|
|
||||||
}
|
|
||||||
|
|
||||||
// IE9-11 hack to properly handle hyperlink underlines for breadcrumbs built
|
|
||||||
// without `<ul>`s. The `::before` pseudo-element generates an element
|
|
||||||
// *within* the .breadcrumb-item and thereby inherits the `text-decoration`.
|
|
||||||
//
|
|
||||||
// To trick IE into suppressing the underline, we give the pseudo-element an
|
|
||||||
// underline and then immediately remove it.
|
|
||||||
+ .breadcrumb-item:hover::before {
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
+ .breadcrumb-item:hover::before {
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.active {
|
|
||||||
color: $breadcrumb-active-color;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,234 +0,0 @@
|
||||||
// scss-lint:disable QualifyingElement
|
|
||||||
|
|
||||||
// Make the div behave like a button
|
|
||||||
.btn-group,
|
|
||||||
.btn-group-vertical {
|
|
||||||
position: relative;
|
|
||||||
display: inline-block;
|
|
||||||
vertical-align: middle; // match .btn alignment given font-size hack above
|
|
||||||
|
|
||||||
> .btn {
|
|
||||||
position: relative;
|
|
||||||
float: left;
|
|
||||||
|
|
||||||
// Bring the "active" button to the front
|
|
||||||
&:focus,
|
|
||||||
&:active,
|
|
||||||
&.active {
|
|
||||||
z-index: 2;
|
|
||||||
}
|
|
||||||
@include hover {
|
|
||||||
z-index: 2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Prevent double borders when buttons are next to each other
|
|
||||||
.btn-group {
|
|
||||||
.btn + .btn,
|
|
||||||
.btn + .btn-group,
|
|
||||||
.btn-group + .btn,
|
|
||||||
.btn-group + .btn-group {
|
|
||||||
margin-left: -$input-btn-border-width;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Optional: Group multiple button groups together for a toolbar
|
|
||||||
.btn-toolbar {
|
|
||||||
margin-left: -$btn-toolbar-margin; // Offset the first child's margin
|
|
||||||
@include clearfix();
|
|
||||||
|
|
||||||
.btn-group,
|
|
||||||
.input-group {
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
> .btn,
|
|
||||||
> .btn-group,
|
|
||||||
> .input-group {
|
|
||||||
margin-left: $btn-toolbar-margin;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
|
|
||||||
border-radius: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match
|
|
||||||
.btn-group > .btn:first-child {
|
|
||||||
margin-left: 0;
|
|
||||||
|
|
||||||
&:not(:last-child):not(.dropdown-toggle) {
|
|
||||||
@include border-right-radius(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it
|
|
||||||
.btn-group > .btn:last-child:not(:first-child),
|
|
||||||
.btn-group > .dropdown-toggle:not(:first-child) {
|
|
||||||
@include border-left-radius(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)
|
|
||||||
.btn-group > .btn-group {
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
.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,
|
|
||||||
> .dropdown-toggle {
|
|
||||||
@include border-right-radius(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
|
|
||||||
@include border-left-radius(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
// On active and open, don't show outline
|
|
||||||
.btn-group .dropdown-toggle:active,
|
|
||||||
.btn-group.open .dropdown-toggle {
|
|
||||||
outline: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Sizing
|
|
||||||
//
|
|
||||||
// Remix the default button sizing classes into new ones for easier manipulation.
|
|
||||||
|
|
||||||
.btn-group-sm > .btn { @extend .btn-sm; }
|
|
||||||
.btn-group-lg > .btn { @extend .btn-lg; }
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Split button dropdowns
|
|
||||||
//
|
|
||||||
|
|
||||||
.btn + .dropdown-toggle-split {
|
|
||||||
padding-right: $btn-padding-x * .75;
|
|
||||||
padding-left: $btn-padding-x * .75;
|
|
||||||
|
|
||||||
&::after {
|
|
||||||
margin-left: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-sm + .dropdown-toggle-split {
|
|
||||||
padding-right: $btn-padding-x-sm * .75;
|
|
||||||
padding-left: $btn-padding-x-sm * .75;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-lg + .dropdown-toggle-split {
|
|
||||||
padding-right: $btn-padding-x-lg * .75;
|
|
||||||
padding-left: $btn-padding-x-lg * .75;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// The clickable button for toggling the menu
|
|
||||||
// Remove the gradient and set the same inset shadow as the :active state
|
|
||||||
.btn-group.open .dropdown-toggle {
|
|
||||||
@include box-shadow($btn-active-box-shadow);
|
|
||||||
|
|
||||||
// Show no shadow for `.btn-link` since it has no other button styles.
|
|
||||||
&.btn-link {
|
|
||||||
@include box-shadow(none);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Reposition the caret
|
|
||||||
.btn .caret {
|
|
||||||
margin-left: 0;
|
|
||||||
}
|
|
||||||
// Carets in other button sizes
|
|
||||||
.btn-lg .caret {
|
|
||||||
border-width: $caret-width-lg $caret-width-lg 0;
|
|
||||||
border-bottom-width: 0;
|
|
||||||
}
|
|
||||||
// Upside down carets for .dropup
|
|
||||||
.dropup .btn-lg .caret {
|
|
||||||
border-width: 0 $caret-width-lg $caret-width-lg;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Vertical button groups
|
|
||||||
//
|
|
||||||
|
|
||||||
.btn-group-vertical {
|
|
||||||
> .btn,
|
|
||||||
> .btn-group,
|
|
||||||
> .btn-group > .btn {
|
|
||||||
display: block;
|
|
||||||
float: none;
|
|
||||||
width: 100%;
|
|
||||||
max-width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Clear floats so dropdown menus can be properly placed
|
|
||||||
> .btn-group {
|
|
||||||
@include clearfix();
|
|
||||||
|
|
||||||
> .btn {
|
|
||||||
float: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
> .btn + .btn,
|
|
||||||
> .btn + .btn-group,
|
|
||||||
> .btn-group + .btn,
|
|
||||||
> .btn-group + .btn-group {
|
|
||||||
margin-top: -$input-btn-border-width;
|
|
||||||
margin-left: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-group-vertical > .btn {
|
|
||||||
&:not(:first-child):not(:last-child) {
|
|
||||||
border-radius: 0;
|
|
||||||
}
|
|
||||||
&:first-child:not(:last-child) {
|
|
||||||
@include border-bottom-radius(0);
|
|
||||||
}
|
|
||||||
&:last-child:not(:first-child) {
|
|
||||||
@include border-top-radius(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.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,
|
|
||||||
> .dropdown-toggle {
|
|
||||||
@include border-bottom-radius(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
|
|
||||||
@include border-top-radius(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Checkbox and radio options
|
|
||||||
//
|
|
||||||
// In order to support the browser's form validation feedback, powered by the
|
|
||||||
// `required` attribute, we have to "hide" the inputs via `clip`. We cannot use
|
|
||||||
// `display: none;` or `visibility: hidden;` as that also hides the popover.
|
|
||||||
// Simply visually hiding the inputs via `opacity` would leave them clickable in
|
|
||||||
// certain cases which is prevented by using `clip` and `pointer-events`.
|
|
||||||
// This way, we ensure a DOM element is visible to position the popover from.
|
|
||||||
//
|
|
||||||
// See https://github.com/twbs/bootstrap/pull/12794 and
|
|
||||||
// https://github.com/twbs/bootstrap/pull/14559 for more information.
|
|
||||||
|
|
||||||
[data-toggle="buttons"] {
|
|
||||||
> .btn,
|
|
||||||
> .btn-group > .btn {
|
|
||||||
input[type="radio"],
|
|
||||||
input[type="checkbox"] {
|
|
||||||
position: absolute;
|
|
||||||
clip: rect(0,0,0,0);
|
|
||||||
pointer-events: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,176 +0,0 @@
|
||||||
// scss-lint:disable QualifyingElement
|
|
||||||
|
|
||||||
//
|
|
||||||
// Base styles
|
|
||||||
//
|
|
||||||
|
|
||||||
.btn {
|
|
||||||
display: inline-block;
|
|
||||||
font-weight: $btn-font-weight;
|
|
||||||
line-height: $btn-line-height;
|
|
||||||
text-align: center;
|
|
||||||
white-space: nowrap;
|
|
||||||
vertical-align: middle;
|
|
||||||
cursor: pointer;
|
|
||||||
user-select: none;
|
|
||||||
border: $input-btn-border-width solid transparent;
|
|
||||||
@include button-size($btn-padding-y, $btn-padding-x, $font-size-base, $btn-border-radius);
|
|
||||||
@include transition(all .2s ease-in-out);
|
|
||||||
|
|
||||||
&,
|
|
||||||
&:active,
|
|
||||||
&.active {
|
|
||||||
&:focus,
|
|
||||||
&.focus {
|
|
||||||
@include tab-focus();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@include hover-focus {
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
&.focus {
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:active,
|
|
||||||
&.active {
|
|
||||||
background-image: none;
|
|
||||||
outline: 0;
|
|
||||||
@include box-shadow($btn-active-box-shadow);
|
|
||||||
}
|
|
||||||
|
|
||||||
&.disabled,
|
|
||||||
&:disabled {
|
|
||||||
cursor: $cursor-disabled;
|
|
||||||
opacity: .65;
|
|
||||||
@include box-shadow(none);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Future-proof disabling of clicks on `<a>` elements
|
|
||||||
a.btn.disabled,
|
|
||||||
fieldset[disabled] a.btn {
|
|
||||||
pointer-events: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Alternate buttons
|
|
||||||
//
|
|
||||||
|
|
||||||
.btn-primary {
|
|
||||||
@include button-variant($btn-primary-color, $btn-primary-bg, $btn-primary-border);
|
|
||||||
}
|
|
||||||
.btn-secondary {
|
|
||||||
@include button-variant($btn-secondary-color, $btn-secondary-bg, $btn-secondary-border);
|
|
||||||
}
|
|
||||||
.btn-info {
|
|
||||||
@include button-variant($btn-info-color, $btn-info-bg, $btn-info-border);
|
|
||||||
}
|
|
||||||
.btn-success {
|
|
||||||
@include button-variant($btn-success-color, $btn-success-bg, $btn-success-border);
|
|
||||||
}
|
|
||||||
.btn-warning {
|
|
||||||
@include button-variant($btn-warning-color, $btn-warning-bg, $btn-warning-border);
|
|
||||||
}
|
|
||||||
.btn-danger {
|
|
||||||
@include button-variant($btn-danger-color, $btn-danger-bg, $btn-danger-border);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Remove all backgrounds
|
|
||||||
.btn-outline-primary {
|
|
||||||
@include button-outline-variant($btn-primary-bg);
|
|
||||||
}
|
|
||||||
.btn-outline-secondary {
|
|
||||||
@include button-outline-variant($btn-secondary-border);
|
|
||||||
}
|
|
||||||
.btn-outline-info {
|
|
||||||
@include button-outline-variant($btn-info-bg);
|
|
||||||
}
|
|
||||||
.btn-outline-success {
|
|
||||||
@include button-outline-variant($btn-success-bg);
|
|
||||||
}
|
|
||||||
.btn-outline-warning {
|
|
||||||
@include button-outline-variant($btn-warning-bg);
|
|
||||||
}
|
|
||||||
.btn-outline-danger {
|
|
||||||
@include button-outline-variant($btn-danger-bg);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Link buttons
|
|
||||||
//
|
|
||||||
|
|
||||||
// Make a button look and behave like a link
|
|
||||||
.btn-link {
|
|
||||||
font-weight: normal;
|
|
||||||
color: $link-color;
|
|
||||||
border-radius: 0;
|
|
||||||
|
|
||||||
&,
|
|
||||||
&:active,
|
|
||||||
&.active,
|
|
||||||
&:disabled {
|
|
||||||
background-color: transparent;
|
|
||||||
@include box-shadow(none);
|
|
||||||
}
|
|
||||||
&,
|
|
||||||
&:focus,
|
|
||||||
&:active {
|
|
||||||
border-color: transparent;
|
|
||||||
}
|
|
||||||
@include hover {
|
|
||||||
border-color: transparent;
|
|
||||||
}
|
|
||||||
@include hover-focus {
|
|
||||||
color: $link-hover-color;
|
|
||||||
text-decoration: $link-hover-decoration;
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
&:disabled {
|
|
||||||
@include hover-focus {
|
|
||||||
color: $btn-link-disabled-color;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Button Sizes
|
|
||||||
//
|
|
||||||
|
|
||||||
.btn-lg {
|
|
||||||
// line-height: ensure even-numbered height of button next to large input
|
|
||||||
@include button-size($btn-padding-y-lg, $btn-padding-x-lg, $font-size-lg, $btn-border-radius-lg);
|
|
||||||
}
|
|
||||||
.btn-sm {
|
|
||||||
// line-height: ensure proper height of button next to small input
|
|
||||||
@include button-size($btn-padding-y-sm, $btn-padding-x-sm, $font-size-sm, $btn-border-radius-sm);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Block button
|
|
||||||
//
|
|
||||||
|
|
||||||
.btn-block {
|
|
||||||
display: block;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Vertically space out multiple block buttons
|
|
||||||
.btn-block + .btn-block {
|
|
||||||
margin-top: $btn-block-spacing-y;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Specificity overrides
|
|
||||||
input[type="submit"],
|
|
||||||
input[type="reset"],
|
|
||||||
input[type="button"] {
|
|
||||||
&.btn-block {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,321 +0,0 @@
|
||||||
//
|
|
||||||
// Base styles
|
|
||||||
//
|
|
||||||
|
|
||||||
.card {
|
|
||||||
position: relative;
|
|
||||||
display: block;
|
|
||||||
margin-bottom: $card-spacer-y;
|
|
||||||
background-color: $card-bg;
|
|
||||||
// border: $card-border-width solid $card-border-color;
|
|
||||||
@include border-radius($card-border-radius);
|
|
||||||
border: $card-border-width solid $card-border-color;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-block {
|
|
||||||
@include clearfix;
|
|
||||||
padding: $card-spacer-x;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-title {
|
|
||||||
margin-bottom: $card-spacer-y;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-subtitle {
|
|
||||||
margin-top: -($card-spacer-y / 2);
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-text:last-child {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// .card-actions {
|
|
||||||
// padding: $card-spacer-y $card-spacer-x;
|
|
||||||
|
|
||||||
// .card-link + .card-link {
|
|
||||||
// margin-left: $card-spacer-x;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
.card-link {
|
|
||||||
@include hover {
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ .card-link {
|
|
||||||
margin-left: $card-spacer-x;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.card {
|
|
||||||
> .list-group:first-child {
|
|
||||||
.list-group-item:first-child {
|
|
||||||
@include border-top-radius($card-border-radius);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
> .list-group:last-child {
|
|
||||||
.list-group-item:last-child {
|
|
||||||
@include border-bottom-radius($card-border-radius);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Optional textual caps
|
|
||||||
//
|
|
||||||
|
|
||||||
.card-header {
|
|
||||||
@include clearfix;
|
|
||||||
padding: $card-spacer-y $card-spacer-x;
|
|
||||||
background-color: $card-cap-bg;
|
|
||||||
border-bottom: $card-border-width solid $card-border-color;
|
|
||||||
|
|
||||||
&:first-child {
|
|
||||||
@include border-radius($card-border-radius-inner $card-border-radius-inner 0 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-footer {
|
|
||||||
@include clearfix;
|
|
||||||
padding: $card-spacer-y $card-spacer-x;
|
|
||||||
background-color: $card-cap-bg;
|
|
||||||
border-top: $card-border-width solid $card-border-color;
|
|
||||||
|
|
||||||
&:last-child {
|
|
||||||
@include border-radius(0 0 $card-border-radius-inner $card-border-radius-inner);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Header navs
|
|
||||||
//
|
|
||||||
|
|
||||||
.card-header-tabs {
|
|
||||||
margin-right: -($card-spacer-x / 2);
|
|
||||||
margin-bottom: -$card-spacer-y;
|
|
||||||
margin-left: -($card-spacer-x / 2);
|
|
||||||
border-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-header-pills {
|
|
||||||
margin-right: -($card-spacer-x / 2);
|
|
||||||
margin-left: -($card-spacer-x / 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Background variations
|
|
||||||
//
|
|
||||||
|
|
||||||
.card-primary {
|
|
||||||
@include card-variant($brand-primary, $brand-primary);
|
|
||||||
}
|
|
||||||
.card-success {
|
|
||||||
@include card-variant($brand-success, $brand-success);
|
|
||||||
}
|
|
||||||
.card-info {
|
|
||||||
@include card-variant($brand-info, $brand-info);
|
|
||||||
}
|
|
||||||
.card-warning {
|
|
||||||
@include card-variant($brand-warning, $brand-warning);
|
|
||||||
}
|
|
||||||
.card-danger {
|
|
||||||
@include card-variant($brand-danger, $brand-danger);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Remove all backgrounds
|
|
||||||
.card-outline-primary {
|
|
||||||
@include card-outline-variant($btn-primary-bg);
|
|
||||||
}
|
|
||||||
.card-outline-secondary {
|
|
||||||
@include card-outline-variant($btn-secondary-border);
|
|
||||||
}
|
|
||||||
.card-outline-info {
|
|
||||||
@include card-outline-variant($btn-info-bg);
|
|
||||||
}
|
|
||||||
.card-outline-success {
|
|
||||||
@include card-outline-variant($btn-success-bg);
|
|
||||||
}
|
|
||||||
.card-outline-warning {
|
|
||||||
@include card-outline-variant($btn-warning-bg);
|
|
||||||
}
|
|
||||||
.card-outline-danger {
|
|
||||||
@include card-outline-variant($btn-danger-bg);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Inverse text within a card for use with dark backgrounds
|
|
||||||
//
|
|
||||||
|
|
||||||
.card-inverse {
|
|
||||||
@include card-inverse;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Blockquote
|
|
||||||
//
|
|
||||||
|
|
||||||
.card-blockquote {
|
|
||||||
padding: 0;
|
|
||||||
margin-bottom: 0;
|
|
||||||
border-left: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Card image
|
|
||||||
.card-img {
|
|
||||||
// margin: -1.325rem;
|
|
||||||
@include border-radius(.25rem);
|
|
||||||
}
|
|
||||||
.card-img-overlay {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
padding: $card-img-overlay-padding;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Card image caps
|
|
||||||
.card-img-top {
|
|
||||||
@include border-top-radius($card-border-radius-inner);
|
|
||||||
}
|
|
||||||
.card-img-bottom {
|
|
||||||
@include border-bottom-radius($card-border-radius-inner);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Card set
|
|
||||||
//
|
|
||||||
// Heads up! We do some funky style resetting here for margins across our two
|
|
||||||
// variations (one flex, one table). Individual cards have margin-bottom by
|
|
||||||
// default, but they're ignored due to table styles. For a consistent design,
|
|
||||||
// we've done the same to the flex variation.
|
|
||||||
//
|
|
||||||
// Those changes are noted by `// Margin balancing`.
|
|
||||||
|
|
||||||
@if $enable-flex {
|
|
||||||
@include media-breakpoint-up(sm) {
|
|
||||||
.card-deck {
|
|
||||||
display: flex;
|
|
||||||
flex-flow: row wrap;
|
|
||||||
margin-right: -$card-deck-margin;
|
|
||||||
margin-bottom: $card-spacer-y; // Margin balancing
|
|
||||||
margin-left: -$card-deck-margin;
|
|
||||||
|
|
||||||
.card {
|
|
||||||
flex: 1 0 0;
|
|
||||||
margin-right: $card-deck-margin;
|
|
||||||
margin-bottom: 0; // Margin balancing
|
|
||||||
margin-left: $card-deck-margin;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} @else {
|
|
||||||
@include media-breakpoint-up(sm) {
|
|
||||||
$space-between-cards: (2 * $card-deck-margin);
|
|
||||||
.card-deck {
|
|
||||||
display: table;
|
|
||||||
width: 100%;
|
|
||||||
margin-bottom: $card-spacer-y; // Margin balancing
|
|
||||||
table-layout: fixed;
|
|
||||||
border-spacing: $space-between-cards 0;
|
|
||||||
|
|
||||||
.card {
|
|
||||||
display: table-cell;
|
|
||||||
margin-bottom: 0; // Margin balancing
|
|
||||||
vertical-align: top;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.card-deck-wrapper {
|
|
||||||
margin-right: (-$space-between-cards);
|
|
||||||
margin-left: (-$space-between-cards);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Card groups
|
|
||||||
//
|
|
||||||
|
|
||||||
@include media-breakpoint-up(sm) {
|
|
||||||
.card-group {
|
|
||||||
@if $enable-flex {
|
|
||||||
display: flex;
|
|
||||||
flex-flow: row wrap;
|
|
||||||
} @else {
|
|
||||||
display: table;
|
|
||||||
width: 100%;
|
|
||||||
table-layout: fixed;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card {
|
|
||||||
@if $enable-flex {
|
|
||||||
flex: 1 0 0;
|
|
||||||
} @else {
|
|
||||||
display: table-cell;
|
|
||||||
vertical-align: top;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ .card {
|
|
||||||
margin-left: 0;
|
|
||||||
border-left: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Handle rounded corners
|
|
||||||
@if $enable-rounded {
|
|
||||||
&:first-child {
|
|
||||||
@include border-right-radius(0);
|
|
||||||
|
|
||||||
.card-img-top {
|
|
||||||
border-top-right-radius: 0;
|
|
||||||
}
|
|
||||||
.card-img-bottom {
|
|
||||||
border-bottom-right-radius: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
&:last-child {
|
|
||||||
@include border-left-radius(0);
|
|
||||||
|
|
||||||
.card-img-top {
|
|
||||||
border-top-left-radius: 0;
|
|
||||||
}
|
|
||||||
.card-img-bottom {
|
|
||||||
border-bottom-left-radius: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&:not(:first-child):not(:last-child) {
|
|
||||||
border-radius: 0;
|
|
||||||
|
|
||||||
.card-img-top,
|
|
||||||
.card-img-bottom {
|
|
||||||
border-radius: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Card
|
|
||||||
//
|
|
||||||
|
|
||||||
@include media-breakpoint-up(sm) {
|
|
||||||
.card-columns {
|
|
||||||
column-count: 3;
|
|
||||||
column-gap: $card-columns-sm-up-column-gap;
|
|
||||||
|
|
||||||
.card {
|
|
||||||
display: inline-block;
|
|
||||||
width: 100%; // Don't let them exceed the column width
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,253 +0,0 @@
|
||||||
// Wrapper for the slide container and indicators
|
|
||||||
.carousel {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.carousel-inner {
|
|
||||||
position: relative;
|
|
||||||
width: 100%;
|
|
||||||
overflow: hidden;
|
|
||||||
|
|
||||||
> .carousel-item {
|
|
||||||
position: relative;
|
|
||||||
display: none;
|
|
||||||
transition: .6s ease-in-out left;
|
|
||||||
|
|
||||||
// Account for jankitude on images
|
|
||||||
> img,
|
|
||||||
> a > img {
|
|
||||||
@extend .img-fluid;
|
|
||||||
line-height: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// WebKit CSS3 transforms for supported devices
|
|
||||||
@media all and (transform-3d), (-webkit-transform-3d) {
|
|
||||||
transition: transform .6s ease-in-out;
|
|
||||||
backface-visibility: hidden;
|
|
||||||
perspective: 1000px;
|
|
||||||
|
|
||||||
&.next,
|
|
||||||
&.active.right {
|
|
||||||
left: 0;
|
|
||||||
transform: translate3d(100%, 0, 0);
|
|
||||||
}
|
|
||||||
&.prev,
|
|
||||||
&.active.left {
|
|
||||||
left: 0;
|
|
||||||
transform: translate3d(-100%, 0, 0);
|
|
||||||
}
|
|
||||||
&.next.left,
|
|
||||||
&.prev.right,
|
|
||||||
&.active {
|
|
||||||
left: 0;
|
|
||||||
transform: translate3d(0, 0, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
> .active,
|
|
||||||
> .next,
|
|
||||||
> .prev {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
> .active {
|
|
||||||
left: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
> .next,
|
|
||||||
> .prev {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
> .next {
|
|
||||||
left: 100%;
|
|
||||||
}
|
|
||||||
> .prev {
|
|
||||||
left: -100%;
|
|
||||||
}
|
|
||||||
> .next.left,
|
|
||||||
> .prev.right {
|
|
||||||
left: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
> .active.left {
|
|
||||||
left: -100%;
|
|
||||||
}
|
|
||||||
> .active.right {
|
|
||||||
left: 100%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Left/right controls for nav
|
|
||||||
//
|
|
||||||
|
|
||||||
.carousel-control {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
width: $carousel-control-width;
|
|
||||||
font-size: $carousel-control-font-size;
|
|
||||||
color: $carousel-control-color;
|
|
||||||
text-align: center;
|
|
||||||
text-shadow: $carousel-text-shadow;
|
|
||||||
opacity: $carousel-control-opacity;
|
|
||||||
// We can't have this transition here because WebKit cancels the carousel
|
|
||||||
// animation if you trip this while in the middle of another animation.
|
|
||||||
|
|
||||||
// Set gradients for backgrounds
|
|
||||||
&.left {
|
|
||||||
@include gradient-x($start-color: rgba(0,0,0,.5), $end-color: rgba(0,0,0,.0001));
|
|
||||||
}
|
|
||||||
&.right {
|
|
||||||
right: 0;
|
|
||||||
left: auto;
|
|
||||||
@include gradient-x($start-color: rgba(0,0,0,.0001), $end-color: rgba(0,0,0,.5));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Hover/focus state
|
|
||||||
@include hover-focus {
|
|
||||||
color: $carousel-control-color;
|
|
||||||
text-decoration: none;
|
|
||||||
outline: 0;
|
|
||||||
opacity: .9;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Toggles
|
|
||||||
.icon-prev,
|
|
||||||
.icon-next {
|
|
||||||
position: absolute;
|
|
||||||
top: 50%;
|
|
||||||
z-index: 5;
|
|
||||||
display: inline-block;
|
|
||||||
width: $carousel-icon-width;
|
|
||||||
height: $carousel-icon-width;
|
|
||||||
margin-top: -($carousel-icon-width / 2);
|
|
||||||
font-family: serif;
|
|
||||||
line-height: 1;
|
|
||||||
}
|
|
||||||
.icon-prev {
|
|
||||||
left: 50%;
|
|
||||||
margin-left: -($carousel-icon-width / 2);
|
|
||||||
}
|
|
||||||
.icon-next {
|
|
||||||
right: 50%;
|
|
||||||
margin-right: -($carousel-icon-width / 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-prev {
|
|
||||||
&::before {
|
|
||||||
content: "\2039";// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.icon-next {
|
|
||||||
&::before {
|
|
||||||
content: "\203a";// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Optional indicator pips
|
|
||||||
//
|
|
||||||
// Add an unordered list with the following class and add a list item for each
|
|
||||||
// slide your carousel holds.
|
|
||||||
|
|
||||||
.carousel-indicators {
|
|
||||||
position: absolute;
|
|
||||||
bottom: 10px;
|
|
||||||
left: 50%;
|
|
||||||
z-index: 15;
|
|
||||||
width: $carousel-indicators-width;
|
|
||||||
padding-left: 0;
|
|
||||||
margin-left: -($carousel-indicators-width / 2);
|
|
||||||
text-align: center;
|
|
||||||
list-style: none;
|
|
||||||
|
|
||||||
li {
|
|
||||||
display: inline-block;
|
|
||||||
width: $carousel-indicator-size;
|
|
||||||
height: $carousel-indicator-size;
|
|
||||||
margin: 1px;
|
|
||||||
text-indent: -999px;
|
|
||||||
cursor: pointer;
|
|
||||||
// IE9 hack for event handling
|
|
||||||
//
|
|
||||||
// Internet Explorer 9 does not properly handle clicks on elements with a `background-color` of `transparent`,
|
|
||||||
// so we use `rgba(0,0,0,0)` instead since it's a non-buggy equivalent.
|
|
||||||
// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer
|
|
||||||
background-color: rgba(0,0,0,0); // IE9
|
|
||||||
border: 1px solid $carousel-indicator-border-color;
|
|
||||||
border-radius: $carousel-indicator-size;
|
|
||||||
}
|
|
||||||
|
|
||||||
.active {
|
|
||||||
width: $carousel-indicator-active-size;
|
|
||||||
height: $carousel-indicator-active-size;
|
|
||||||
margin: 0;
|
|
||||||
background-color: $carousel-indicator-active-bg;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Optional captions
|
|
||||||
//
|
|
||||||
// Hidden by default for smaller viewports.
|
|
||||||
|
|
||||||
.carousel-caption {
|
|
||||||
position: absolute;
|
|
||||||
right: ((100% - $carousel-caption-width) / 2);
|
|
||||||
bottom: 20px;
|
|
||||||
left: ((100% - $carousel-caption-width) / 2);
|
|
||||||
z-index: 10;
|
|
||||||
padding-top: 20px;
|
|
||||||
padding-bottom: 20px;
|
|
||||||
color: $carousel-caption-color;
|
|
||||||
text-align: center;
|
|
||||||
text-shadow: $carousel-text-shadow;
|
|
||||||
|
|
||||||
.btn {
|
|
||||||
text-shadow: none; // No shadow for button elements in carousel-caption
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Responsive variations
|
|
||||||
//
|
|
||||||
|
|
||||||
@include media-breakpoint-up(sm) {
|
|
||||||
// Scale up the controls a smidge
|
|
||||||
.carousel-control {
|
|
||||||
.icon-prev,
|
|
||||||
.icon-next {
|
|
||||||
width: $carousel-control-sm-up-size;
|
|
||||||
height: $carousel-control-sm-up-size;
|
|
||||||
margin-top: -($carousel-control-sm-up-size / 2);
|
|
||||||
font-size: $carousel-control-sm-up-size;
|
|
||||||
}
|
|
||||||
.icon-prev {
|
|
||||||
margin-left: -($carousel-control-sm-up-size / 2);
|
|
||||||
}
|
|
||||||
.icon-next {
|
|
||||||
margin-right: -($carousel-control-sm-up-size / 2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Show and left align the captions
|
|
||||||
.carousel-caption {
|
|
||||||
right: ((100% - $carousel-caption-sm-up-width) / 2);
|
|
||||||
left: ((100% - $carousel-caption-sm-up-width) / 2);
|
|
||||||
padding-bottom: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Move up the indicators
|
|
||||||
.carousel-indicators {
|
|
||||||
bottom: 20px;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,31 +0,0 @@
|
||||||
.close {
|
|
||||||
float: right;
|
|
||||||
font-size: ($font-size-base * 1.5);
|
|
||||||
font-weight: $close-font-weight;
|
|
||||||
line-height: 1;
|
|
||||||
color: $close-color;
|
|
||||||
text-shadow: $close-text-shadow;
|
|
||||||
opacity: .2;
|
|
||||||
|
|
||||||
@include hover-focus {
|
|
||||||
color: $close-color;
|
|
||||||
text-decoration: none;
|
|
||||||
cursor: pointer;
|
|
||||||
opacity: .5;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Additional properties for button version
|
|
||||||
// iOS requires the button element instead of an anchor tag.
|
|
||||||
// If you want the anchor version, it requires `href="#"`.
|
|
||||||
// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
|
|
||||||
|
|
||||||
// scss-lint:disable QualifyingElement
|
|
||||||
button.close {
|
|
||||||
padding: 0;
|
|
||||||
cursor: pointer;
|
|
||||||
background: transparent;
|
|
||||||
border: 0;
|
|
||||||
-webkit-appearance: none;
|
|
||||||
}
|
|
||||||
// scss-lint:enable QualifyingElement
|
|
|
@ -1,57 +0,0 @@
|
||||||
// Inline and block code styles
|
|
||||||
code,
|
|
||||||
kbd,
|
|
||||||
pre,
|
|
||||||
samp {
|
|
||||||
font-family: $font-family-monospace;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Inline code
|
|
||||||
code {
|
|
||||||
padding: $code-padding-y $code-padding-x;
|
|
||||||
font-size: $code-font-size;
|
|
||||||
color: $code-color;
|
|
||||||
background-color: $code-bg;
|
|
||||||
@include border-radius($border-radius);
|
|
||||||
}
|
|
||||||
|
|
||||||
// User input typically entered via keyboard
|
|
||||||
kbd {
|
|
||||||
padding: $code-padding-y $code-padding-x;
|
|
||||||
font-size: $code-font-size;
|
|
||||||
color: $kbd-color;
|
|
||||||
background-color: $kbd-bg;
|
|
||||||
@include border-radius($border-radius-sm);
|
|
||||||
@include box-shadow($kbd-box-shadow);
|
|
||||||
|
|
||||||
kbd {
|
|
||||||
padding: 0;
|
|
||||||
font-size: 100%;
|
|
||||||
font-weight: $nested-kbd-font-weight;
|
|
||||||
@include box-shadow(none);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Blocks of code
|
|
||||||
pre {
|
|
||||||
display: block;
|
|
||||||
margin-top: 0;
|
|
||||||
margin-bottom: 1rem;
|
|
||||||
font-size: $code-font-size;
|
|
||||||
color: $pre-color;
|
|
||||||
|
|
||||||
// Account for some code outputs that place code tags in pre tags
|
|
||||||
code {
|
|
||||||
padding: 0;
|
|
||||||
font-size: inherit;
|
|
||||||
color: inherit;
|
|
||||||
background-color: transparent;
|
|
||||||
border-radius: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Enable scrollable blocks of code
|
|
||||||
.pre-scrollable {
|
|
||||||
max-height: $pre-scrollable-max-height;
|
|
||||||
overflow-y: scroll;
|
|
||||||
}
|
|
|
@ -1,265 +0,0 @@
|
||||||
// scss-lint:disable PropertyCount
|
|
||||||
|
|
||||||
// Embedded icons from Open Iconic.
|
|
||||||
// Released under MIT and copyright 2014 Waybury.
|
|
||||||
// http://useiconic.com/open
|
|
||||||
|
|
||||||
|
|
||||||
// Checkboxes and radios
|
|
||||||
//
|
|
||||||
// Base class takes care of all the key behavioral aspects.
|
|
||||||
|
|
||||||
.custom-control {
|
|
||||||
position: relative;
|
|
||||||
display: inline;
|
|
||||||
padding-left: $custom-control-gutter;
|
|
||||||
cursor: pointer;
|
|
||||||
|
|
||||||
+ .custom-control {
|
|
||||||
margin-left: $custom-control-spacer-x;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.custom-control-input {
|
|
||||||
position: absolute;
|
|
||||||
z-index: -1; // Put the input behind the label so it doesn't overlay text
|
|
||||||
opacity: 0;
|
|
||||||
|
|
||||||
&:checked ~ .custom-control-indicator {
|
|
||||||
color: $custom-control-checked-indicator-color;
|
|
||||||
background-color: $custom-control-checked-indicator-bg;
|
|
||||||
@include box-shadow($custom-control-checked-indicator-box-shadow);
|
|
||||||
}
|
|
||||||
|
|
||||||
&:focus ~ .custom-control-indicator {
|
|
||||||
// the mixin is not used here to make sure there is feedback
|
|
||||||
box-shadow: $custom-control-focus-indicator-box-shadow;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:active ~ .custom-control-indicator {
|
|
||||||
color: $custom-control-active-indicator-color;
|
|
||||||
background-color: $custom-control-active-indicator-bg;
|
|
||||||
@include box-shadow($custom-control-active-indicator-box-shadow);
|
|
||||||
}
|
|
||||||
|
|
||||||
&:disabled {
|
|
||||||
~ .custom-control-indicator {
|
|
||||||
cursor: $custom-control-disabled-cursor;
|
|
||||||
background-color: $custom-control-disabled-indicator-bg;
|
|
||||||
}
|
|
||||||
|
|
||||||
~ .custom-control-description {
|
|
||||||
color: $custom-control-disabled-description-color;
|
|
||||||
cursor: $custom-control-disabled-cursor;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Custom indicator
|
|
||||||
//
|
|
||||||
// Generates a shadow element to create our makeshift checkbox/radio background.
|
|
||||||
|
|
||||||
.custom-control-indicator {
|
|
||||||
position: absolute;
|
|
||||||
top: .0625rem;
|
|
||||||
left: 0;
|
|
||||||
display: block;
|
|
||||||
width: $custom-control-indicator-size;
|
|
||||||
height: $custom-control-indicator-size;
|
|
||||||
pointer-events: none;
|
|
||||||
user-select: none;
|
|
||||||
background-color: $custom-control-indicator-bg;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-position: center center;
|
|
||||||
background-size: $custom-control-indicator-bg-size;
|
|
||||||
@include box-shadow($custom-control-indicator-box-shadow);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Checkboxes
|
|
||||||
//
|
|
||||||
// Tweak just a few things for checkboxes.
|
|
||||||
|
|
||||||
.custom-checkbox {
|
|
||||||
.custom-control-indicator {
|
|
||||||
@include border-radius($custom-checkbox-radius);
|
|
||||||
}
|
|
||||||
|
|
||||||
.custom-control-input:checked ~ .custom-control-indicator {
|
|
||||||
background-image: $custom-checkbox-checked-icon;
|
|
||||||
}
|
|
||||||
|
|
||||||
.custom-control-input:indeterminate ~ .custom-control-indicator {
|
|
||||||
background-color: $custom-checkbox-indeterminate-bg;
|
|
||||||
background-image: $custom-checkbox-indeterminate-icon;
|
|
||||||
@include box-shadow($custom-checkbox-indeterminate-box-shadow);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Radios
|
|
||||||
//
|
|
||||||
// Tweak just a few things for radios.
|
|
||||||
|
|
||||||
.custom-radio {
|
|
||||||
.custom-control-indicator {
|
|
||||||
border-radius: $custom-radio-radius;
|
|
||||||
}
|
|
||||||
|
|
||||||
.custom-control-input:checked ~ .custom-control-indicator {
|
|
||||||
background-image: $custom-radio-checked-icon;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Layout options
|
|
||||||
//
|
|
||||||
// By default radios and checkboxes are `inline-block` with no additional spacing
|
|
||||||
// set. Use these optional classes to tweak the layout.
|
|
||||||
|
|
||||||
.custom-controls-stacked {
|
|
||||||
.custom-control {
|
|
||||||
display: inline;
|
|
||||||
|
|
||||||
&::after {
|
|
||||||
display: block;
|
|
||||||
margin-bottom: $custom-control-spacer-y;
|
|
||||||
content: "";
|
|
||||||
}
|
|
||||||
|
|
||||||
+ .custom-control {
|
|
||||||
margin-left: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Select
|
|
||||||
//
|
|
||||||
// Replaces the browser default select with a custom one, mostly pulled from
|
|
||||||
// http://primercss.io.
|
|
||||||
//
|
|
||||||
// Includes IE9-specific hacks (noted by ` \9`).
|
|
||||||
|
|
||||||
.custom-select {
|
|
||||||
display: inline-block;
|
|
||||||
max-width: 100%;
|
|
||||||
padding: $custom-select-padding-y ($custom-select-padding-x + $custom-select-indicator-padding) $custom-select-padding-y $custom-select-padding-x;
|
|
||||||
padding-right: $custom-select-padding-x \9;
|
|
||||||
color: $custom-select-color;
|
|
||||||
vertical-align: middle;
|
|
||||||
background: $custom-select-bg $custom-select-indicator no-repeat right $custom-select-padding-x center;
|
|
||||||
background-image: none \9;
|
|
||||||
background-size: $custom-select-bg-size;
|
|
||||||
border: $custom-select-border-width solid $custom-select-border-color;
|
|
||||||
@include border-radius($custom-select-border-radius);
|
|
||||||
// Use vendor prefixes as `appearance` isn't part of the CSS spec.
|
|
||||||
-moz-appearance: none;
|
|
||||||
-webkit-appearance: none;
|
|
||||||
|
|
||||||
&:focus {
|
|
||||||
border-color: $custom-select-focus-border-color;
|
|
||||||
outline: none;
|
|
||||||
@include box-shadow($custom-select-focus-box-shadow);
|
|
||||||
|
|
||||||
&::-ms-value {
|
|
||||||
// For visual consistency with other platforms/browsers,
|
|
||||||
// supress the default white text on blue background highlight given to
|
|
||||||
// the selected option text when the (still closed) <select> receives focus
|
|
||||||
// in IE and (under certain conditions) Edge.
|
|
||||||
// See https://github.com/twbs/bootstrap/issues/19398.
|
|
||||||
color: $input-color;
|
|
||||||
background-color: $input-bg;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&:disabled {
|
|
||||||
color: $custom-select-disabled-color;
|
|
||||||
cursor: $cursor-disabled;
|
|
||||||
background-color: $custom-select-disabled-bg;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Hides the default caret in IE11
|
|
||||||
&::-ms-expand {
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.custom-select-sm {
|
|
||||||
padding-top: $custom-select-padding-y;
|
|
||||||
padding-bottom: $custom-select-padding-y;
|
|
||||||
font-size: $custom-select-sm-font-size;
|
|
||||||
|
|
||||||
// &:not([multiple]) {
|
|
||||||
// height: 26px;
|
|
||||||
// min-height: 26px;
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// File
|
|
||||||
//
|
|
||||||
// Custom file input.
|
|
||||||
|
|
||||||
.custom-file {
|
|
||||||
position: relative;
|
|
||||||
display: inline-block;
|
|
||||||
max-width: 100%;
|
|
||||||
height: $custom-file-height;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.custom-file-input {
|
|
||||||
min-width: $custom-file-width;
|
|
||||||
max-width: 100%;
|
|
||||||
margin: 0;
|
|
||||||
filter: alpha(opacity = 0);
|
|
||||||
opacity: 0;
|
|
||||||
|
|
||||||
&:focus ~ .custom-file-control {
|
|
||||||
@include box-shadow($custom-file-focus-box-shadow);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.custom-file-control {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
right: 0;
|
|
||||||
left: 0;
|
|
||||||
z-index: 5;
|
|
||||||
height: $custom-file-height;
|
|
||||||
padding: $custom-file-padding-x $custom-file-padding-y;
|
|
||||||
line-height: $custom-file-line-height;
|
|
||||||
color: $custom-file-color;
|
|
||||||
user-select: none;
|
|
||||||
background-color: $custom-file-bg;
|
|
||||||
border: $custom-file-border-width solid $custom-file-border-color;
|
|
||||||
@include border-radius($custom-file-border-radius);
|
|
||||||
@include box-shadow($custom-file-box-shadow);
|
|
||||||
|
|
||||||
@each $lang, $text in map-get($custom-file-text, placeholder) {
|
|
||||||
&:lang(#{$lang})::after {
|
|
||||||
content: $text;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&::before {
|
|
||||||
position: absolute;
|
|
||||||
top: -$custom-file-border-width;
|
|
||||||
right: -$custom-file-border-width;
|
|
||||||
bottom: -$custom-file-border-width;
|
|
||||||
z-index: 6;
|
|
||||||
display: block;
|
|
||||||
height: $custom-file-height;
|
|
||||||
padding: $custom-file-padding-x $custom-file-padding-y;
|
|
||||||
line-height: $custom-file-line-height;
|
|
||||||
color: $custom-file-button-color;
|
|
||||||
background-color: $custom-file-button-bg;
|
|
||||||
border: $custom-file-border-width solid $custom-file-border-color;
|
|
||||||
@include border-radius(0 $custom-file-border-radius $custom-file-border-radius 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
@each $lang, $text in map-get($custom-file-text, button-label) {
|
|
||||||
&:lang(#{$lang})::before {
|
|
||||||
content: $text;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,4 +0,0 @@
|
||||||
// Bootstrap overrides
|
|
||||||
//
|
|
||||||
// Copy variables from `_variables.scss` to this file to override default values
|
|
||||||
// without modifying source files.
|
|
|
@ -1,179 +0,0 @@
|
||||||
// The dropdown wrapper (`<div>`)
|
|
||||||
.dropup,
|
|
||||||
.dropdown {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dropdown-toggle {
|
|
||||||
// Generate the caret automatically
|
|
||||||
&::after {
|
|
||||||
display: inline-block;
|
|
||||||
width: 0;
|
|
||||||
height: 0;
|
|
||||||
margin-left: $caret-width;
|
|
||||||
vertical-align: middle;
|
|
||||||
content: "";
|
|
||||||
border-top: $caret-width solid;
|
|
||||||
border-right: $caret-width solid transparent;
|
|
||||||
border-left: $caret-width solid transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Prevent the focus on the dropdown toggle when closing dropdowns
|
|
||||||
&:focus {
|
|
||||||
outline: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.dropup {
|
|
||||||
.dropdown-toggle {
|
|
||||||
&::after {
|
|
||||||
border-top: 0;
|
|
||||||
border-bottom: $caret-width solid;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// The dropdown menu
|
|
||||||
.dropdown-menu {
|
|
||||||
position: absolute;
|
|
||||||
top: 100%;
|
|
||||||
left: 0;
|
|
||||||
z-index: $zindex-dropdown;
|
|
||||||
display: none; // none by default, but block on "open" of the menu
|
|
||||||
float: left;
|
|
||||||
min-width: $dropdown-min-width;
|
|
||||||
padding: $dropdown-padding-y 0;
|
|
||||||
margin: $dropdown-margin-top 0 0; // override default ul
|
|
||||||
font-size: $font-size-base;
|
|
||||||
color: $body-color;
|
|
||||||
text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)
|
|
||||||
list-style: none;
|
|
||||||
background-color: $dropdown-bg;
|
|
||||||
background-clip: padding-box;
|
|
||||||
border: $dropdown-border-width solid $dropdown-border-color;
|
|
||||||
@include border-radius($border-radius);
|
|
||||||
@include box-shadow($dropdown-box-shadow);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Dividers (basically an `<hr>`) within the dropdown
|
|
||||||
.dropdown-divider {
|
|
||||||
@include nav-divider($dropdown-divider-bg);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Links, buttons, and more within the dropdown menu
|
|
||||||
//
|
|
||||||
// `<button>`-specific styles are denoted with `// For <button>s`
|
|
||||||
.dropdown-item {
|
|
||||||
display: block;
|
|
||||||
width: 100%; // For `<button>`s
|
|
||||||
padding: 3px $dropdown-item-padding-x;
|
|
||||||
clear: both;
|
|
||||||
font-weight: normal;
|
|
||||||
color: $dropdown-link-color;
|
|
||||||
text-align: inherit; // For `<button>`s
|
|
||||||
white-space: nowrap; // prevent links from randomly breaking onto new lines
|
|
||||||
background: none; // For `<button>`s
|
|
||||||
border: 0; // For `<button>`s
|
|
||||||
|
|
||||||
@include hover-focus {
|
|
||||||
color: $dropdown-link-hover-color;
|
|
||||||
text-decoration: none;
|
|
||||||
background-color: $dropdown-link-hover-bg;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Active state
|
|
||||||
&.active {
|
|
||||||
@include plain-hover-focus {
|
|
||||||
color: $dropdown-link-active-color;
|
|
||||||
text-decoration: none;
|
|
||||||
background-color: $dropdown-link-active-bg;
|
|
||||||
outline: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Disabled state
|
|
||||||
//
|
|
||||||
// Gray out text and ensure the hover/focus state remains gray
|
|
||||||
&.disabled {
|
|
||||||
@include plain-hover-focus {
|
|
||||||
color: $dropdown-link-disabled-color;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Nuke hover/focus effects
|
|
||||||
@include hover-focus {
|
|
||||||
text-decoration: none;
|
|
||||||
cursor: $cursor-disabled;
|
|
||||||
background-color: transparent;
|
|
||||||
background-image: none; // Remove CSS gradient
|
|
||||||
@include reset-filter();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Open state for the dropdown
|
|
||||||
.open {
|
|
||||||
// Show the menu
|
|
||||||
> .dropdown-menu {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Remove the outline when :focus is triggered
|
|
||||||
> a {
|
|
||||||
outline: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Menu positioning
|
|
||||||
//
|
|
||||||
// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown
|
|
||||||
// menu with the parent.
|
|
||||||
.dropdown-menu-right {
|
|
||||||
right: 0;
|
|
||||||
left: auto; // Reset the default from `.dropdown-menu`
|
|
||||||
}
|
|
||||||
|
|
||||||
.dropdown-menu-left {
|
|
||||||
right: auto;
|
|
||||||
left: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Dropdown section headers
|
|
||||||
.dropdown-header {
|
|
||||||
display: block;
|
|
||||||
padding: $dropdown-padding-y $dropdown-item-padding-x;
|
|
||||||
font-size: $font-size-sm;
|
|
||||||
color: $dropdown-header-color;
|
|
||||||
white-space: nowrap; // as with > li > a
|
|
||||||
}
|
|
||||||
|
|
||||||
// Backdrop to catch body clicks on mobile, etc.
|
|
||||||
.dropdown-backdrop {
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
z-index: $zindex-dropdown-backdrop;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Allow for dropdowns to go bottom up (aka, dropup-menu)
|
|
||||||
//
|
|
||||||
// Just add .dropup after the standard .dropdown class and you're set.
|
|
||||||
// TODO: abstract this so that the navbar fixed styles are not placed here?
|
|
||||||
|
|
||||||
.dropup,
|
|
||||||
.navbar-fixed-bottom .dropdown {
|
|
||||||
// Reverse the caret
|
|
||||||
.caret {
|
|
||||||
content: "";
|
|
||||||
border-top: 0;
|
|
||||||
border-bottom: $caret-width solid;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Different positioning for bottom up menu
|
|
||||||
.dropdown-menu {
|
|
||||||
top: auto;
|
|
||||||
bottom: 100%;
|
|
||||||
margin-bottom: $dropdown-margin-top;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,364 +0,0 @@
|
||||||
// scss-lint:disable QualifyingElement
|
|
||||||
|
|
||||||
//
|
|
||||||
// Textual form controls
|
|
||||||
//
|
|
||||||
|
|
||||||
.form-control {
|
|
||||||
display: block;
|
|
||||||
width: 100%;
|
|
||||||
// // Make inputs at least the height of their button counterpart (base line-height + padding + border)
|
|
||||||
// height: $input-height;
|
|
||||||
padding: $input-padding-y $input-padding-x;
|
|
||||||
font-size: $font-size-base;
|
|
||||||
line-height: $input-line-height;
|
|
||||||
color: $input-color;
|
|
||||||
background-color: $input-bg;
|
|
||||||
// Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214.
|
|
||||||
background-image: none;
|
|
||||||
background-clip: padding-box;
|
|
||||||
border: $input-btn-border-width solid $input-border-color;
|
|
||||||
// Note: This has no effect on <select>s in some browsers, due to the limited stylability of `<select>`s in CSS.
|
|
||||||
@include border-radius($input-border-radius);
|
|
||||||
@include box-shadow($input-box-shadow);
|
|
||||||
@include transition(border-color ease-in-out .15s, box-shadow ease-in-out .15s);
|
|
||||||
|
|
||||||
// Unstyle the caret on `<select>`s in IE10+.
|
|
||||||
&::-ms-expand {
|
|
||||||
background-color: transparent;
|
|
||||||
border: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Customize the `:focus` state to imitate native WebKit styles.
|
|
||||||
@include form-control-focus();
|
|
||||||
|
|
||||||
// Placeholder
|
|
||||||
&::placeholder {
|
|
||||||
color: $input-color-placeholder;
|
|
||||||
// Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526.
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Disabled and read-only inputs
|
|
||||||
//
|
|
||||||
// HTML5 says that controls under a fieldset > legend:first-child won't be
|
|
||||||
// disabled if the fieldset is disabled. Due to implementation difficulty, we
|
|
||||||
// don't honor that edge case; we style them as disabled anyway.
|
|
||||||
&:disabled,
|
|
||||||
&[readonly] {
|
|
||||||
background-color: $input-bg-disabled;
|
|
||||||
// iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655.
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:disabled {
|
|
||||||
cursor: $cursor-disabled;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
select.form-control {
|
|
||||||
&:not([size]):not([multiple]) {
|
|
||||||
height: $input-height;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:focus::-ms-value {
|
|
||||||
// Suppress the nested default white text on blue background highlight given to
|
|
||||||
// the selected option text when the (still closed) <select> receives focus
|
|
||||||
// in IE and (under certain conditions) Edge, as it looks bad and cannot be made to
|
|
||||||
// match the appearance of the native widget.
|
|
||||||
// See https://github.com/twbs/bootstrap/issues/19398.
|
|
||||||
color: $input-color;
|
|
||||||
background-color: $input-bg;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Make file inputs better match text inputs by forcing them to new lines.
|
|
||||||
.form-control-file,
|
|
||||||
.form-control-range {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Labels
|
|
||||||
//
|
|
||||||
|
|
||||||
// For use with horizontal and inline forms, when you need the label text to
|
|
||||||
// align with the form controls.
|
|
||||||
.col-form-label {
|
|
||||||
padding-top: $input-padding-y;
|
|
||||||
padding-bottom: $input-padding-y;
|
|
||||||
margin-bottom: 0; // Override the `<label>` default
|
|
||||||
}
|
|
||||||
|
|
||||||
.col-form-label-lg {
|
|
||||||
padding-top: $input-padding-y-lg;
|
|
||||||
padding-bottom: $input-padding-y-lg;
|
|
||||||
font-size: $font-size-lg;
|
|
||||||
}
|
|
||||||
|
|
||||||
.col-form-label-sm {
|
|
||||||
padding-top: $input-padding-y-sm;
|
|
||||||
padding-bottom: $input-padding-y-sm;
|
|
||||||
font-size: $font-size-sm;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Legends
|
|
||||||
//
|
|
||||||
|
|
||||||
// For use with horizontal and inline forms, when you need the legend text to
|
|
||||||
// be the same size as regular labels, and to align with the form controls.
|
|
||||||
.col-form-legend {
|
|
||||||
padding-top: $input-padding-y;
|
|
||||||
padding-bottom: $input-padding-y;
|
|
||||||
margin-bottom: 0;
|
|
||||||
font-size: $font-size-base;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Static form control text
|
|
||||||
//
|
|
||||||
// Apply class to an element to make any string of text align with labels in a
|
|
||||||
// horizontal form layout.
|
|
||||||
|
|
||||||
.form-control-static {
|
|
||||||
min-height: $input-height;
|
|
||||||
// Size it appropriately next to real form controls
|
|
||||||
padding-top: $input-padding-y;
|
|
||||||
padding-bottom: $input-padding-y;
|
|
||||||
// Remove default margin from `p`
|
|
||||||
margin-bottom: 0;
|
|
||||||
|
|
||||||
&.form-control-sm,
|
|
||||||
&.form-control-lg {
|
|
||||||
padding-right: 0;
|
|
||||||
padding-left: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Form control sizing
|
|
||||||
//
|
|
||||||
// Build on `.form-control` with modifier classes to decrease or increase the
|
|
||||||
// height and font-size of form controls.
|
|
||||||
//
|
|
||||||
// The `.form-group-* form-control` variations are sadly duplicated to avoid the
|
|
||||||
// issue documented in https://github.com/twbs/bootstrap/issues/15074.
|
|
||||||
|
|
||||||
.form-control-sm {
|
|
||||||
padding: $input-padding-y-sm $input-padding-x-sm;
|
|
||||||
font-size: $font-size-sm;
|
|
||||||
@include border-radius($input-border-radius-sm);
|
|
||||||
}
|
|
||||||
|
|
||||||
select.form-control-sm {
|
|
||||||
&:not([size]):not([multiple]) {
|
|
||||||
height: $input-height-sm;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-control-lg {
|
|
||||||
padding: $input-padding-y-lg $input-padding-x-lg;
|
|
||||||
font-size: $font-size-lg;
|
|
||||||
@include border-radius($input-border-radius-lg);
|
|
||||||
}
|
|
||||||
|
|
||||||
select.form-control-lg {
|
|
||||||
&:not([size]):not([multiple]) {
|
|
||||||
height: $input-height-lg;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Form groups
|
|
||||||
//
|
|
||||||
// Designed to help with the organization and spacing of vertical forms. For
|
|
||||||
// horizontal forms, use the predefined grid classes.
|
|
||||||
|
|
||||||
.form-group {
|
|
||||||
margin-bottom: $form-group-margin-bottom;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-text {
|
|
||||||
display: block;
|
|
||||||
margin-top: ($spacer * .25);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Checkboxes and radios
|
|
||||||
//
|
|
||||||
// Indent the labels to position radios/checkboxes as hanging controls.
|
|
||||||
|
|
||||||
.form-check {
|
|
||||||
position: relative;
|
|
||||||
display: block;
|
|
||||||
margin-bottom: ($spacer * .75);
|
|
||||||
|
|
||||||
// Move up sibling radios or checkboxes for tighter spacing
|
|
||||||
+ .form-check {
|
|
||||||
margin-top: -.25rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.disabled {
|
|
||||||
.form-check-label {
|
|
||||||
color: $text-muted;
|
|
||||||
cursor: $cursor-disabled;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-check-label {
|
|
||||||
padding-left: 1.25rem;
|
|
||||||
margin-bottom: 0; // Override default `<label>` bottom margin
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-check-input {
|
|
||||||
position: absolute;
|
|
||||||
margin-top: .25rem;
|
|
||||||
margin-left: -1.25rem;
|
|
||||||
|
|
||||||
&:only-child {
|
|
||||||
position: static;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Radios and checkboxes on same line
|
|
||||||
.form-check-inline {
|
|
||||||
position: relative;
|
|
||||||
display: inline-block;
|
|
||||||
padding-left: 1.25rem;
|
|
||||||
margin-bottom: 0; // Override default `<label>` bottom margin
|
|
||||||
vertical-align: middle;
|
|
||||||
cursor: pointer;
|
|
||||||
|
|
||||||
+ .form-check-inline {
|
|
||||||
margin-left: .75rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.disabled {
|
|
||||||
cursor: $cursor-disabled;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Form control feedback states
|
|
||||||
//
|
|
||||||
// Apply contextual and semantic states to individual form controls.
|
|
||||||
|
|
||||||
.form-control-feedback {
|
|
||||||
margin-top: ($spacer * .25);
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-control-success,
|
|
||||||
.form-control-warning,
|
|
||||||
.form-control-danger {
|
|
||||||
padding-right: ($input-padding-x * 3);
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-position: center right ($input-height / 4);
|
|
||||||
background-size: ($input-height / 2) ($input-height / 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Form validation states
|
|
||||||
.has-success {
|
|
||||||
@include form-control-validation($brand-success);
|
|
||||||
|
|
||||||
.form-control-success {
|
|
||||||
background-image: $form-icon-success;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.has-warning {
|
|
||||||
@include form-control-validation($brand-warning);
|
|
||||||
|
|
||||||
.form-control-warning {
|
|
||||||
background-image: $form-icon-warning;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.has-danger {
|
|
||||||
@include form-control-validation($brand-danger);
|
|
||||||
|
|
||||||
.form-control-danger {
|
|
||||||
background-image: $form-icon-danger;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Inline forms
|
|
||||||
//
|
|
||||||
// Make forms appear inline(-block) by adding the `.form-inline` class. Inline
|
|
||||||
// forms begin stacked on extra small (mobile) devices and then go inline when
|
|
||||||
// viewports reach <768px.
|
|
||||||
//
|
|
||||||
// Requires wrapping inputs and labels with `.form-group` for proper display of
|
|
||||||
// default HTML form controls and our custom form controls (e.g., input groups).
|
|
||||||
|
|
||||||
.form-inline {
|
|
||||||
|
|
||||||
// Kick in the inline
|
|
||||||
@include media-breakpoint-up(sm) {
|
|
||||||
// Inline-block all the things for "inline"
|
|
||||||
.form-group {
|
|
||||||
display: inline-block;
|
|
||||||
margin-bottom: 0;
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Allow folks to *not* use `.form-group`
|
|
||||||
.form-control {
|
|
||||||
display: inline-block;
|
|
||||||
width: auto; // Prevent labels from stacking above inputs in `.form-group`
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Make static controls behave like regular ones
|
|
||||||
.form-control-static {
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.input-group {
|
|
||||||
display: inline-table;
|
|
||||||
vertical-align: middle;
|
|
||||||
|
|
||||||
.input-group-addon,
|
|
||||||
.input-group-btn,
|
|
||||||
.form-control {
|
|
||||||
width: auto;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Input groups need that 100% width though
|
|
||||||
.input-group > .form-control {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-control-label {
|
|
||||||
margin-bottom: 0;
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Remove default margin on radios/checkboxes that were used for stacking, and
|
|
||||||
// then undo the floating of radios and checkboxes to match.
|
|
||||||
.form-check {
|
|
||||||
display: inline-block;
|
|
||||||
margin-top: 0;
|
|
||||||
margin-bottom: 0;
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
.form-check-label {
|
|
||||||
padding-left: 0;
|
|
||||||
}
|
|
||||||
.form-check-input {
|
|
||||||
position: relative;
|
|
||||||
margin-left: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Re-override the feedback icon.
|
|
||||||
.has-feedback .form-control-feedback {
|
|
||||||
top: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,39 +0,0 @@
|
||||||
// Container widths
|
|
||||||
//
|
|
||||||
// Set the container width, and override it for fixed navbars in media queries.
|
|
||||||
|
|
||||||
@if $enable-grid-classes {
|
|
||||||
.container {
|
|
||||||
@include make-container();
|
|
||||||
@include make-container-max-widths();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fluid container
|
|
||||||
//
|
|
||||||
// Utilizes the mixin meant for fixed width containers, but without any defined
|
|
||||||
// width for fluid, full width layouts.
|
|
||||||
|
|
||||||
@if $enable-grid-classes {
|
|
||||||
.container-fluid {
|
|
||||||
@include make-container();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Row
|
|
||||||
//
|
|
||||||
// Rows contain and clear the floats of your columns.
|
|
||||||
|
|
||||||
@if $enable-grid-classes {
|
|
||||||
.row {
|
|
||||||
@include make-row();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Columns
|
|
||||||
//
|
|
||||||
// Common styles for small and large grid columns
|
|
||||||
|
|
||||||
@if $enable-grid-classes {
|
|
||||||
@include make-grid-columns();
|
|
||||||
}
|
|
|
@ -1,52 +0,0 @@
|
||||||
// Responsive images (ensure images don't scale beyond their parents)
|
|
||||||
//
|
|
||||||
// This is purposefully opt-in via an explicit class rather than being the default for all `<img>`s.
|
|
||||||
// We previously tried the "images are responsive by default" approach in Bootstrap v2,
|
|
||||||
// and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)
|
|
||||||
// which weren't expecting the images within themselves to be involuntarily resized.
|
|
||||||
// See also https://github.com/twbs/bootstrap/issues/18178
|
|
||||||
.img-fluid {
|
|
||||||
@include img-fluid();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Rounded corners
|
|
||||||
.img-rounded {
|
|
||||||
@include border-radius($border-radius-lg);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Image thumbnails
|
|
||||||
.img-thumbnail {
|
|
||||||
padding: $thumbnail-padding;
|
|
||||||
background-color: $thumbnail-bg;
|
|
||||||
border: $thumbnail-border-width solid $thumbnail-border-color;
|
|
||||||
@include border-radius($thumbnail-border-radius);
|
|
||||||
transition: all .2s ease-in-out;
|
|
||||||
@include box-shadow($thumbnail-box-shadow);
|
|
||||||
|
|
||||||
// Keep them at most 100% wide
|
|
||||||
@include img-fluid(inline-block);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Perfect circle
|
|
||||||
.img-circle {
|
|
||||||
border-radius: 50%;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Figures
|
|
||||||
//
|
|
||||||
|
|
||||||
.figure {
|
|
||||||
// Ensures the caption's text aligns with the image.
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.figure-img {
|
|
||||||
margin-bottom: ($spacer-y / 2);
|
|
||||||
line-height: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.figure-caption {
|
|
||||||
font-size: $figure-caption-font-size;
|
|
||||||
color: $gray-light;
|
|
||||||
}
|
|
|
@ -1,188 +0,0 @@
|
||||||
//
|
|
||||||
// Base styles
|
|
||||||
//
|
|
||||||
|
|
||||||
.input-group {
|
|
||||||
position: relative;
|
|
||||||
width: 100%;
|
|
||||||
|
|
||||||
@if $enable-flex {
|
|
||||||
display: flex;
|
|
||||||
} @else {
|
|
||||||
display: table;
|
|
||||||
// Prevent input groups from inheriting border styles from table cells when
|
|
||||||
// placed within a table.
|
|
||||||
border-collapse: separate;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-control {
|
|
||||||
// Ensure that the input is always above the *appended* addon button for
|
|
||||||
// proper border colors.
|
|
||||||
position: relative;
|
|
||||||
z-index: 2;
|
|
||||||
// Bring the "active" form control to the front
|
|
||||||
@include hover-focus-active {
|
|
||||||
z-index: 3;
|
|
||||||
}
|
|
||||||
@if $enable-flex {
|
|
||||||
flex: 1;
|
|
||||||
} @else {
|
|
||||||
// IE9 fubars the placeholder attribute in text inputs and the arrows on
|
|
||||||
// select elements in input groups. To fix it, we float the input. Details:
|
|
||||||
// https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855
|
|
||||||
float: left;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.input-group-addon,
|
|
||||||
.input-group-btn,
|
|
||||||
.input-group .form-control {
|
|
||||||
@if not $enable-flex {
|
|
||||||
display: table-cell;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:not(:first-child):not(:last-child) {
|
|
||||||
@include border-radius(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.input-group-addon,
|
|
||||||
.input-group-btn {
|
|
||||||
@if not $enable-flex {
|
|
||||||
width: 1%;
|
|
||||||
}
|
|
||||||
white-space: nowrap;
|
|
||||||
vertical-align: middle; // Match the inputs
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Sizing options
|
|
||||||
//
|
|
||||||
// Remix the default form control sizing classes into new ones for easier
|
|
||||||
// manipulation.
|
|
||||||
|
|
||||||
.input-group-lg > .form-control,
|
|
||||||
.input-group-lg > .input-group-addon,
|
|
||||||
.input-group-lg > .input-group-btn > .btn {
|
|
||||||
@extend .form-control-lg;
|
|
||||||
}
|
|
||||||
.input-group-sm > .form-control,
|
|
||||||
.input-group-sm > .input-group-addon,
|
|
||||||
.input-group-sm > .input-group-btn > .btn {
|
|
||||||
@extend .form-control-sm;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Text input groups
|
|
||||||
//
|
|
||||||
|
|
||||||
.input-group-addon {
|
|
||||||
padding: $input-padding-y $input-padding-x;
|
|
||||||
margin-bottom: 0; // Allow use of <label> elements by overriding our default margin-bottom
|
|
||||||
font-size: $font-size-base;
|
|
||||||
font-weight: normal;
|
|
||||||
line-height: $input-line-height;
|
|
||||||
color: $input-color;
|
|
||||||
text-align: center;
|
|
||||||
background-color: $input-group-addon-bg;
|
|
||||||
border: $input-btn-border-width solid $input-group-addon-border-color;
|
|
||||||
@include border-radius($border-radius);
|
|
||||||
|
|
||||||
// Sizing
|
|
||||||
&.form-control-sm {
|
|
||||||
padding: $input-padding-y-sm $input-padding-x-sm;
|
|
||||||
font-size: $font-size-sm;
|
|
||||||
@include border-radius($border-radius-sm);
|
|
||||||
}
|
|
||||||
&.form-control-lg {
|
|
||||||
padding: $input-padding-y-lg $input-padding-x-lg;
|
|
||||||
font-size: $font-size-lg;
|
|
||||||
@include border-radius($border-radius-lg);
|
|
||||||
}
|
|
||||||
|
|
||||||
// scss-lint:disable QualifyingElement
|
|
||||||
// Nuke default margins from checkboxes and radios to vertically center within.
|
|
||||||
input[type="radio"],
|
|
||||||
input[type="checkbox"] {
|
|
||||||
margin-top: 0;
|
|
||||||
}
|
|
||||||
// scss-lint:enable QualifyingElement
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Reset rounded corners
|
|
||||||
//
|
|
||||||
|
|
||||||
.input-group .form-control:not(:last-child),
|
|
||||||
.input-group-addon:not(:last-child),
|
|
||||||
.input-group-btn:not(:last-child) > .btn,
|
|
||||||
.input-group-btn:not(:last-child) > .btn-group > .btn,
|
|
||||||
.input-group-btn:not(:last-child) > .dropdown-toggle,
|
|
||||||
.input-group-btn:not(:first-child) > .btn:not(:last-child):not(.dropdown-toggle),
|
|
||||||
.input-group-btn:not(:first-child) > .btn-group:not(:last-child) > .btn {
|
|
||||||
@include border-right-radius(0);
|
|
||||||
}
|
|
||||||
.input-group-addon:not(:last-child) {
|
|
||||||
border-right: 0;
|
|
||||||
}
|
|
||||||
.input-group .form-control:not(:first-child),
|
|
||||||
.input-group-addon:not(:first-child),
|
|
||||||
.input-group-btn:not(:first-child) > .btn,
|
|
||||||
.input-group-btn:not(:first-child) > .btn-group > .btn,
|
|
||||||
.input-group-btn:not(:first-child) > .dropdown-toggle,
|
|
||||||
.input-group-btn:not(:last-child) > .btn:not(:first-child),
|
|
||||||
.input-group-btn:not(:last-child) > .btn-group:not(:first-child) > .btn {
|
|
||||||
@include border-left-radius(0);
|
|
||||||
}
|
|
||||||
.form-control + .input-group-addon:not(:first-child) {
|
|
||||||
border-left: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Button input groups
|
|
||||||
//
|
|
||||||
|
|
||||||
.input-group-btn {
|
|
||||||
position: relative;
|
|
||||||
// Jankily prevent input button groups from wrapping with `white-space` and
|
|
||||||
// `font-size` in combination with `inline-block` on buttons.
|
|
||||||
font-size: 0;
|
|
||||||
white-space: nowrap;
|
|
||||||
|
|
||||||
// Negative margin for spacing, position for bringing hovered/focused/actived
|
|
||||||
// element above the siblings.
|
|
||||||
> .btn {
|
|
||||||
position: relative;
|
|
||||||
+ .btn {
|
|
||||||
margin-left: (-$input-btn-border-width);
|
|
||||||
}
|
|
||||||
// Bring the "active" button to the front
|
|
||||||
@include hover-focus-active {
|
|
||||||
z-index: 3;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Negative margin to only have a single, shared border between the two
|
|
||||||
&:not(:last-child) {
|
|
||||||
> .btn,
|
|
||||||
> .btn-group {
|
|
||||||
margin-right: (-$input-btn-border-width);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
&:not(:first-child) {
|
|
||||||
> .btn,
|
|
||||||
> .btn-group {
|
|
||||||
z-index: 2;
|
|
||||||
margin-left: (-$input-btn-border-width);
|
|
||||||
// Because specificity
|
|
||||||
@include hover-focus-active {
|
|
||||||
z-index: 3;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,20 +0,0 @@
|
||||||
.jumbotron {
|
|
||||||
padding: $jumbotron-padding ($jumbotron-padding / 2);
|
|
||||||
margin-bottom: $jumbotron-padding;
|
|
||||||
background-color: $jumbotron-bg;
|
|
||||||
@include border-radius($border-radius-lg);
|
|
||||||
|
|
||||||
@include media-breakpoint-up(sm) {
|
|
||||||
padding: ($jumbotron-padding * 2) $jumbotron-padding;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.jumbotron-hr {
|
|
||||||
border-top-color: darken($jumbotron-bg, 10%);
|
|
||||||
}
|
|
||||||
|
|
||||||
.jumbotron-fluid {
|
|
||||||
padding-right: 0;
|
|
||||||
padding-left: 0;
|
|
||||||
@include border-radius(0);
|
|
||||||
}
|
|
|
@ -1,77 +0,0 @@
|
||||||
// Base class
|
|
||||||
//
|
|
||||||
// Requires one of the contextual, color modifier classes for `color` and
|
|
||||||
// `background-color`.
|
|
||||||
|
|
||||||
.label {
|
|
||||||
display: inline-block;
|
|
||||||
padding: .25em .4em;
|
|
||||||
font-size: 75%;
|
|
||||||
font-weight: $label-font-weight;
|
|
||||||
line-height: 1;
|
|
||||||
color: $label-color;
|
|
||||||
text-align: center;
|
|
||||||
white-space: nowrap;
|
|
||||||
vertical-align: baseline;
|
|
||||||
@include border-radius();
|
|
||||||
|
|
||||||
// Empty labels collapse automatically
|
|
||||||
&:empty {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Quick fix for labels in buttons
|
|
||||||
.btn .label {
|
|
||||||
position: relative;
|
|
||||||
top: -1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add hover effects, but only for links
|
|
||||||
a.label {
|
|
||||||
@include hover-focus {
|
|
||||||
color: $label-link-hover-color;
|
|
||||||
text-decoration: none;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Pill labels
|
|
||||||
//
|
|
||||||
// Make them extra rounded with a modifier to replace v3's badges.
|
|
||||||
|
|
||||||
.label-pill {
|
|
||||||
padding-right: .6em;
|
|
||||||
padding-left: .6em;
|
|
||||||
// Use a higher than normal value to ensure completely rounded edges when
|
|
||||||
// customizing padding or font-size on labels.
|
|
||||||
@include border-radius(10rem);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Colors
|
|
||||||
//
|
|
||||||
// Contextual variations (linked labels get darker on :hover).
|
|
||||||
|
|
||||||
.label-default {
|
|
||||||
@include label-variant($label-default-bg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.label-primary {
|
|
||||||
@include label-variant($label-primary-bg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.label-success {
|
|
||||||
@include label-variant($label-success-bg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.label-info {
|
|
||||||
@include label-variant($label-info-bg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.label-warning {
|
|
||||||
@include label-variant($label-warning-bg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.label-danger {
|
|
||||||
@include label-variant($label-danger-bg);
|
|
||||||
}
|
|
|
@ -1,123 +0,0 @@
|
||||||
// Base class
|
|
||||||
//
|
|
||||||
// Easily usable on <ul>, <ol>, or <div>.
|
|
||||||
|
|
||||||
.list-group {
|
|
||||||
// No need to set list-style: none; since .list-group-item is block level
|
|
||||||
padding-left: 0; // reset padding because ul and ol
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Individual list items
|
|
||||||
//
|
|
||||||
// Use on `li`s or `div`s within the `.list-group` parent.
|
|
||||||
|
|
||||||
.list-group-item {
|
|
||||||
position: relative;
|
|
||||||
display: block;
|
|
||||||
padding: $list-group-item-padding-y $list-group-item-padding-x;
|
|
||||||
// Place the border on the list items and negative margin up for better styling
|
|
||||||
margin-bottom: -$list-group-border-width;
|
|
||||||
background-color: $list-group-bg;
|
|
||||||
border: $list-group-border-width solid $list-group-border-color;
|
|
||||||
|
|
||||||
&:first-child {
|
|
||||||
@include border-top-radius($list-group-border-radius);
|
|
||||||
}
|
|
||||||
|
|
||||||
&:last-child {
|
|
||||||
margin-bottom: 0;
|
|
||||||
@include border-bottom-radius($list-group-border-radius);
|
|
||||||
}
|
|
||||||
|
|
||||||
&.disabled {
|
|
||||||
@include plain-hover-focus {
|
|
||||||
color: $list-group-disabled-color;
|
|
||||||
cursor: $cursor-disabled;
|
|
||||||
background-color: $list-group-disabled-bg;
|
|
||||||
|
|
||||||
// Force color to inherit for custom content
|
|
||||||
.list-group-item-heading {
|
|
||||||
color: inherit;
|
|
||||||
}
|
|
||||||
.list-group-item-text {
|
|
||||||
color: $list-group-disabled-text-color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&.active {
|
|
||||||
@include plain-hover-focus {
|
|
||||||
z-index: 2; // Place active items above their siblings for proper border styling
|
|
||||||
color: $list-group-active-color;
|
|
||||||
text-decoration: none; // Repeat here because it inherits global a:hover otherwise
|
|
||||||
background-color: $list-group-active-bg;
|
|
||||||
border-color: $list-group-active-border;
|
|
||||||
|
|
||||||
// Force color to inherit for custom content
|
|
||||||
.list-group-item-heading,
|
|
||||||
.list-group-item-heading > small,
|
|
||||||
.list-group-item-heading > .small {
|
|
||||||
color: inherit;
|
|
||||||
}
|
|
||||||
.list-group-item-text {
|
|
||||||
color: $list-group-active-text-color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.list-group-flush {
|
|
||||||
.list-group-item {
|
|
||||||
border-radius: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Interactive list items
|
|
||||||
//
|
|
||||||
// Use anchor or button elements instead of `li`s or `div`s to create interactive
|
|
||||||
// list items. Includes an extra `.active` modifier class for selected items.
|
|
||||||
|
|
||||||
.list-group-item-action {
|
|
||||||
width: 100%; // For `<button>`s (anchors become 100% by default though)
|
|
||||||
color: $list-group-link-color;
|
|
||||||
text-align: inherit; // For `<button>`s (anchors inherit)
|
|
||||||
|
|
||||||
.list-group-item-heading {
|
|
||||||
color: $list-group-link-heading-color;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Hover state
|
|
||||||
@include hover-focus {
|
|
||||||
color: $list-group-link-hover-color;
|
|
||||||
text-decoration: none;
|
|
||||||
background-color: $list-group-hover-bg;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Contextual variants
|
|
||||||
//
|
|
||||||
// Add modifier classes to change text and background color on individual items.
|
|
||||||
// Organizationally, this must come after the `:hover` states.
|
|
||||||
|
|
||||||
@include list-group-item-variant(success, $state-success-bg, $state-success-text);
|
|
||||||
@include list-group-item-variant(info, $state-info-bg, $state-info-text);
|
|
||||||
@include list-group-item-variant(warning, $state-warning-bg, $state-warning-text);
|
|
||||||
@include list-group-item-variant(danger, $state-danger-bg, $state-danger-text);
|
|
||||||
|
|
||||||
|
|
||||||
// Custom content options
|
|
||||||
//
|
|
||||||
// Extra classes for creating well-formatted content within `.list-group-item`s.
|
|
||||||
|
|
||||||
.list-group-item-heading {
|
|
||||||
margin-top: 0;
|
|
||||||
margin-bottom: $list-group-item-heading-margin-bottom;
|
|
||||||
}
|
|
||||||
.list-group-item-text {
|
|
||||||
margin-bottom: 0;
|
|
||||||
line-height: 1.3;
|
|
||||||
}
|
|
|
@ -1,89 +0,0 @@
|
||||||
@if $enable-flex {
|
|
||||||
.media {
|
|
||||||
display: flex;
|
|
||||||
margin-bottom: $spacer;
|
|
||||||
}
|
|
||||||
.media-body {
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
.media-middle {
|
|
||||||
align-self: center;
|
|
||||||
}
|
|
||||||
.media-bottom {
|
|
||||||
align-self: flex-end;
|
|
||||||
}
|
|
||||||
} @else {
|
|
||||||
.media {
|
|
||||||
margin-top: $media-margin-top;
|
|
||||||
|
|
||||||
&:first-child {
|
|
||||||
margin-top: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.media,
|
|
||||||
.media-body {
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
.media-body {
|
|
||||||
width: 10000px;
|
|
||||||
}
|
|
||||||
.media-left,
|
|
||||||
.media-right,
|
|
||||||
.media-body {
|
|
||||||
display: table-cell;
|
|
||||||
vertical-align: top;
|
|
||||||
}
|
|
||||||
.media-middle {
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
.media-bottom {
|
|
||||||
vertical-align: bottom;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Images/elements as the media anchor
|
|
||||||
//
|
|
||||||
|
|
||||||
.media-object {
|
|
||||||
display: block;
|
|
||||||
|
|
||||||
// Fix collapse in webkit from max-width: 100% and display: table-cell.
|
|
||||||
&.img-thumbnail {
|
|
||||||
max-width: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Alignment
|
|
||||||
//
|
|
||||||
|
|
||||||
.media-right {
|
|
||||||
padding-left: $media-alignment-padding-x;
|
|
||||||
}
|
|
||||||
|
|
||||||
.media-left {
|
|
||||||
padding-right: $media-alignment-padding-x;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Headings
|
|
||||||
//
|
|
||||||
|
|
||||||
.media-heading {
|
|
||||||
margin-top: 0;
|
|
||||||
margin-bottom: $media-heading-margin-bottom;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Media list variation
|
|
||||||
//
|
|
||||||
|
|
||||||
.media-list {
|
|
||||||
padding-left: 0;
|
|
||||||
list-style: none;
|
|
||||||
}
|
|
|
@ -1,54 +0,0 @@
|
||||||
// Toggles
|
|
||||||
//
|
|
||||||
// Used in conjunction with global variables to enable certain theme features.
|
|
||||||
|
|
||||||
@mixin box-shadow($shadow...) {
|
|
||||||
@if $enable-shadows {
|
|
||||||
box-shadow: $shadow;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@mixin transition($transition...) {
|
|
||||||
@if $enable-transitions {
|
|
||||||
transition: $transition;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Utilities
|
|
||||||
@import "mixins/breakpoints";
|
|
||||||
@import "mixins/hover";
|
|
||||||
@import "mixins/image";
|
|
||||||
@import "mixins/tag";
|
|
||||||
@import "mixins/reset-filter";
|
|
||||||
@import "mixins/resize";
|
|
||||||
@import "mixins/screen-reader";
|
|
||||||
@import "mixins/size";
|
|
||||||
@import "mixins/tab-focus";
|
|
||||||
@import "mixins/reset-text";
|
|
||||||
@import "mixins/text-emphasis";
|
|
||||||
@import "mixins/text-hide";
|
|
||||||
@import "mixins/text-truncate";
|
|
||||||
|
|
||||||
// // Components
|
|
||||||
@import "mixins/alert";
|
|
||||||
@import "mixins/buttons";
|
|
||||||
@import "mixins/cards";
|
|
||||||
@import "mixins/pagination";
|
|
||||||
@import "mixins/lists";
|
|
||||||
@import "mixins/list-group";
|
|
||||||
@import "mixins/nav-divider";
|
|
||||||
@import "mixins/forms";
|
|
||||||
@import "mixins/progress";
|
|
||||||
@import "mixins/table-row";
|
|
||||||
|
|
||||||
// // Skins
|
|
||||||
@import "mixins/background-variant";
|
|
||||||
@import "mixins/border-radius";
|
|
||||||
@import "mixins/gradients";
|
|
||||||
|
|
||||||
// // Layout
|
|
||||||
@import "mixins/clearfix";
|
|
||||||
// @import "mixins/navbar-align";
|
|
||||||
@import "mixins/grid-framework";
|
|
||||||
@import "mixins/grid";
|
|
||||||
@import "mixins/pulls";
|
|
|
@ -1,132 +0,0 @@
|
||||||
// .modal-open - body class for killing the scroll
|
|
||||||
// .modal - container to scroll within
|
|
||||||
// .modal-dialog - positioning shell for the actual modal
|
|
||||||
// .modal-content - actual modal w/ bg and corners and shit
|
|
||||||
|
|
||||||
|
|
||||||
// Kill the scroll on the body
|
|
||||||
.modal-open {
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Container that the modal scrolls within
|
|
||||||
.modal {
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
z-index: $zindex-modal;
|
|
||||||
display: none;
|
|
||||||
overflow: hidden;
|
|
||||||
// Prevent Chrome on Windows from adding a focus outline. For details, see
|
|
||||||
// https://github.com/twbs/bootstrap/pull/10951.
|
|
||||||
outline: 0;
|
|
||||||
-webkit-overflow-scrolling: touch;
|
|
||||||
|
|
||||||
// When fading in the modal, animate it to slide down
|
|
||||||
&.fade .modal-dialog {
|
|
||||||
transition: transform .3s ease-out;
|
|
||||||
transform: translate(0, -25%);
|
|
||||||
}
|
|
||||||
&.in .modal-dialog { transform: translate(0, 0); }
|
|
||||||
}
|
|
||||||
.modal-open .modal {
|
|
||||||
overflow-x: hidden;
|
|
||||||
overflow-y: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Shell div to position the modal with bottom padding
|
|
||||||
.modal-dialog {
|
|
||||||
position: relative;
|
|
||||||
width: auto;
|
|
||||||
margin: $modal-dialog-margin;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Actual modal
|
|
||||||
.modal-content {
|
|
||||||
position: relative;
|
|
||||||
background-color: $modal-content-bg;
|
|
||||||
background-clip: padding-box;
|
|
||||||
border: $modal-content-border-width solid $modal-content-border-color;
|
|
||||||
@include border-radius($border-radius-lg);
|
|
||||||
@include box-shadow($modal-content-xs-box-shadow);
|
|
||||||
// Remove focus outline from opened modal
|
|
||||||
outline: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Modal background
|
|
||||||
.modal-backdrop {
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
z-index: $zindex-modal-bg;
|
|
||||||
background-color: $modal-backdrop-bg;
|
|
||||||
|
|
||||||
// Fade for backdrop
|
|
||||||
&.fade { opacity: 0; }
|
|
||||||
&.in { opacity: $modal-backdrop-opacity; }
|
|
||||||
}
|
|
||||||
|
|
||||||
// Modal header
|
|
||||||
// Top section of the modal w/ title and dismiss
|
|
||||||
.modal-header {
|
|
||||||
padding: $modal-title-padding;
|
|
||||||
border-bottom: $modal-header-border-width solid $modal-header-border-color;
|
|
||||||
@include clearfix;
|
|
||||||
}
|
|
||||||
// Close icon
|
|
||||||
.modal-header .close {
|
|
||||||
margin-top: -2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Title text within header
|
|
||||||
.modal-title {
|
|
||||||
margin: 0;
|
|
||||||
line-height: $modal-title-line-height;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Modal body
|
|
||||||
// Where all modal content resides (sibling of .modal-header and .modal-footer)
|
|
||||||
.modal-body {
|
|
||||||
position: relative;
|
|
||||||
padding: $modal-inner-padding;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Footer (for actions)
|
|
||||||
.modal-footer {
|
|
||||||
padding: $modal-inner-padding;
|
|
||||||
text-align: right; // right align buttons
|
|
||||||
border-top: $modal-footer-border-width solid $modal-footer-border-color;
|
|
||||||
@include clearfix(); // clear it in case folks use .pull-* classes on buttons
|
|
||||||
}
|
|
||||||
|
|
||||||
// Measure scrollbar width for padding body during modal show/hide
|
|
||||||
.modal-scrollbar-measure {
|
|
||||||
position: absolute;
|
|
||||||
top: -9999px;
|
|
||||||
width: 50px;
|
|
||||||
height: 50px;
|
|
||||||
overflow: scroll;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Scale up the modal
|
|
||||||
@include media-breakpoint-up(sm) {
|
|
||||||
// Automatically set modal's width for larger viewports
|
|
||||||
.modal-dialog {
|
|
||||||
max-width: $modal-md;
|
|
||||||
margin: $modal-dialog-sm-up-margin-y auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.modal-content {
|
|
||||||
@include box-shadow($modal-content-sm-up-box-shadow);
|
|
||||||
}
|
|
||||||
|
|
||||||
.modal-sm { max-width: $modal-sm; }
|
|
||||||
}
|
|
||||||
|
|
||||||
@include media-breakpoint-up(lg) {
|
|
||||||
.modal-lg { max-width: $modal-lg; }
|
|
||||||
}
|
|
|
@ -1,157 +0,0 @@
|
||||||
// Base class
|
|
||||||
//
|
|
||||||
// Kickstart any navigation component with a set of style resets. Works with
|
|
||||||
// `<nav>`s or `<ul>`s.
|
|
||||||
|
|
||||||
.nav {
|
|
||||||
padding-left: 0;
|
|
||||||
margin-bottom: 0;
|
|
||||||
list-style: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-link {
|
|
||||||
display: inline-block;
|
|
||||||
|
|
||||||
@include hover-focus {
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Disabled state lightens text and removes hover/tab effects
|
|
||||||
&.disabled {
|
|
||||||
color: $nav-disabled-link-color;
|
|
||||||
|
|
||||||
@include plain-hover-focus {
|
|
||||||
color: $nav-disabled-link-hover-color;
|
|
||||||
cursor: $cursor-disabled;
|
|
||||||
background-color: $nav-disabled-link-hover-bg;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Nav inline
|
|
||||||
|
|
||||||
.nav-inline {
|
|
||||||
.nav-item {
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-item + .nav-item,
|
|
||||||
.nav-link + .nav-link {
|
|
||||||
margin-left: $nav-item-inline-spacer;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Tabs
|
|
||||||
//
|
|
||||||
|
|
||||||
.nav-tabs {
|
|
||||||
border-bottom: $nav-tabs-border-width solid $nav-tabs-border-color;
|
|
||||||
@include clearfix();
|
|
||||||
|
|
||||||
.nav-item {
|
|
||||||
float: left;
|
|
||||||
// Make the list-items overlay the bottom border
|
|
||||||
margin-bottom: -$nav-tabs-border-width;
|
|
||||||
|
|
||||||
+ .nav-item {
|
|
||||||
margin-left: $nav-item-margin;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-link {
|
|
||||||
display: block;
|
|
||||||
padding: $nav-link-padding;
|
|
||||||
border: $nav-tabs-border-width solid transparent;
|
|
||||||
@include border-top-radius($nav-tabs-border-radius);
|
|
||||||
|
|
||||||
@include hover-focus {
|
|
||||||
border-color: $nav-tabs-link-hover-border-color $nav-tabs-link-hover-border-color $nav-tabs-border-color;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.disabled {
|
|
||||||
@include plain-hover-focus {
|
|
||||||
color: $nav-disabled-link-color;
|
|
||||||
background-color: transparent;
|
|
||||||
border-color: transparent;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-link.active,
|
|
||||||
.nav-item.open .nav-link {
|
|
||||||
@include plain-hover-focus {
|
|
||||||
color: $nav-tabs-active-link-hover-color;
|
|
||||||
background-color: $nav-tabs-active-link-hover-bg;
|
|
||||||
border-color: $nav-tabs-active-link-hover-border-color $nav-tabs-active-link-hover-border-color transparent;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.dropdown-menu {
|
|
||||||
// Make dropdown border overlap tab border
|
|
||||||
margin-top: -$nav-tabs-border-width;
|
|
||||||
// Remove the top rounded corners here since there is a hard edge above the menu
|
|
||||||
@include border-top-radius(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Pills
|
|
||||||
//
|
|
||||||
|
|
||||||
.nav-pills {
|
|
||||||
@include clearfix();
|
|
||||||
|
|
||||||
.nav-item {
|
|
||||||
float: left;
|
|
||||||
|
|
||||||
+ .nav-item {
|
|
||||||
margin-left: $nav-item-margin;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-link {
|
|
||||||
display: block;
|
|
||||||
padding: $nav-link-padding;
|
|
||||||
@include border-radius($nav-pills-border-radius);
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-link.active,
|
|
||||||
.nav-item.open .nav-link {
|
|
||||||
@include plain-hover-focus {
|
|
||||||
color: $nav-pills-active-link-color;
|
|
||||||
cursor: default;
|
|
||||||
background-color: $nav-pills-active-link-bg;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-stacked {
|
|
||||||
.nav-item {
|
|
||||||
display: block;
|
|
||||||
float: none;
|
|
||||||
|
|
||||||
+ .nav-item {
|
|
||||||
margin-top: $nav-item-margin;
|
|
||||||
margin-left: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Tabbable tabs
|
|
||||||
//
|
|
||||||
|
|
||||||
// Hide tabbable panes to start, show them when `.active`
|
|
||||||
.tab-content {
|
|
||||||
> .tab-pane {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
> .active {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,258 +0,0 @@
|
||||||
// Wrapper and base class
|
|
||||||
//
|
|
||||||
// Provide a static navbar from which we expand to create full-width, fixed, and
|
|
||||||
// other navbar variations.
|
|
||||||
|
|
||||||
.navbar {
|
|
||||||
position: relative;
|
|
||||||
padding: $navbar-padding-y $navbar-padding-x;
|
|
||||||
@include clearfix;
|
|
||||||
|
|
||||||
@include media-breakpoint-up(sm) {
|
|
||||||
@include border-radius($navbar-border-radius);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Navbar alignment options
|
|
||||||
//
|
|
||||||
// Display the navbar across the entirety of the page or fixed it to the top or
|
|
||||||
// bottom of the page.
|
|
||||||
|
|
||||||
// A static, full width modifier with no rounded corners.
|
|
||||||
.navbar-full {
|
|
||||||
z-index: $zindex-navbar;
|
|
||||||
|
|
||||||
@include media-breakpoint-up(sm) {
|
|
||||||
@include border-radius(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fix the top/bottom navbars when screen real estate supports it
|
|
||||||
.navbar-fixed-top,
|
|
||||||
.navbar-fixed-bottom {
|
|
||||||
position: fixed;
|
|
||||||
right: 0;
|
|
||||||
left: 0;
|
|
||||||
z-index: $zindex-navbar-fixed;
|
|
||||||
|
|
||||||
// Undo the rounded corners
|
|
||||||
@include media-breakpoint-up(sm) {
|
|
||||||
@include border-radius(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-fixed-top {
|
|
||||||
top: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-fixed-bottom {
|
|
||||||
bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-sticky-top {
|
|
||||||
position: sticky;
|
|
||||||
top: 0;
|
|
||||||
z-index: $zindex-navbar-sticky;
|
|
||||||
width: 100%;
|
|
||||||
|
|
||||||
// Undo the rounded corners
|
|
||||||
@include media-breakpoint-up(sm) {
|
|
||||||
@include border-radius(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Brand/project name
|
|
||||||
//
|
|
||||||
|
|
||||||
.navbar-brand {
|
|
||||||
float: left;
|
|
||||||
padding-top: $navbar-brand-padding-y;
|
|
||||||
padding-bottom: $navbar-brand-padding-y;
|
|
||||||
margin-right: 1rem;
|
|
||||||
font-size: $font-size-lg;
|
|
||||||
|
|
||||||
@include hover-focus {
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
> img {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.navbar-divider {
|
|
||||||
float: left;
|
|
||||||
width: $border-width;
|
|
||||||
padding-top: .425rem;
|
|
||||||
padding-bottom: .425rem;
|
|
||||||
margin-right: $navbar-padding-x;
|
|
||||||
margin-left: $navbar-padding-x;
|
|
||||||
overflow: hidden;
|
|
||||||
|
|
||||||
&::before {
|
|
||||||
content: "\00a0";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Navbar toggle
|
|
||||||
//
|
|
||||||
// Custom button for toggling the `.navbar-collapse`, powered by the collapse
|
|
||||||
// Bootstrap JavaScript plugin.
|
|
||||||
|
|
||||||
.navbar-toggler {
|
|
||||||
padding: .5rem .75rem;
|
|
||||||
font-size: $font-size-lg;
|
|
||||||
line-height: 1;
|
|
||||||
background: none;
|
|
||||||
border: $border-width solid transparent;
|
|
||||||
@include border-radius($btn-border-radius);
|
|
||||||
|
|
||||||
@include hover-focus {
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Navigation
|
|
||||||
//
|
|
||||||
// Custom navbar navigation built on the base `.nav` styles.
|
|
||||||
|
|
||||||
.navbar-nav {
|
|
||||||
.nav-item {
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-link {
|
|
||||||
display: block;
|
|
||||||
padding-top: .425rem;
|
|
||||||
padding-bottom: .425rem;
|
|
||||||
|
|
||||||
+ .nav-link {
|
|
||||||
margin-left: 1rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-item + .nav-item {
|
|
||||||
margin-left: 1rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Dark links against a light background
|
|
||||||
.navbar-light {
|
|
||||||
.navbar-brand {
|
|
||||||
color: $navbar-light-active-color;
|
|
||||||
|
|
||||||
@include hover-focus {
|
|
||||||
color: $navbar-light-active-color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-nav {
|
|
||||||
.nav-link {
|
|
||||||
color: $navbar-light-color;
|
|
||||||
|
|
||||||
@include hover-focus {
|
|
||||||
color: $navbar-light-hover-color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.open > .nav-link,
|
|
||||||
.active > .nav-link,
|
|
||||||
.nav-link.open,
|
|
||||||
.nav-link.active {
|
|
||||||
@include plain-hover-focus {
|
|
||||||
color: $navbar-light-active-color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-divider {
|
|
||||||
background-color: rgba(0,0,0,.075);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// White links against a dark background
|
|
||||||
.navbar-dark {
|
|
||||||
.navbar-brand {
|
|
||||||
color: $navbar-dark-active-color;
|
|
||||||
|
|
||||||
@include hover-focus {
|
|
||||||
color: $navbar-dark-active-color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-nav {
|
|
||||||
.nav-link {
|
|
||||||
color: $navbar-dark-color;
|
|
||||||
|
|
||||||
@include hover-focus {
|
|
||||||
color: $navbar-dark-hover-color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.open > .nav-link,
|
|
||||||
.active > .nav-link,
|
|
||||||
.nav-link.open,
|
|
||||||
.nav-link.active {
|
|
||||||
@include plain-hover-focus {
|
|
||||||
color: $navbar-dark-active-color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-divider {
|
|
||||||
background-color: rgba(255,255,255,.075);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Navbar toggleable
|
|
||||||
//
|
|
||||||
// Custom override for collapse plugin in navbar.
|
|
||||||
|
|
||||||
// scss-lint:disable ImportantRule
|
|
||||||
.navbar-toggleable {
|
|
||||||
&-xs {
|
|
||||||
@include clearfix;
|
|
||||||
@include media-breakpoint-down(xs) {
|
|
||||||
.navbar-nav .nav-item {
|
|
||||||
float: none;
|
|
||||||
margin-left: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@include media-breakpoint-up(sm) {
|
|
||||||
display: block !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&-sm {
|
|
||||||
@include clearfix;
|
|
||||||
@include media-breakpoint-down(sm) {
|
|
||||||
.navbar-nav .nav-item {
|
|
||||||
float: none;
|
|
||||||
margin-left: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@include media-breakpoint-up(md) {
|
|
||||||
display: block !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&-md {
|
|
||||||
@include clearfix;
|
|
||||||
@include media-breakpoint-down(md) {
|
|
||||||
.navbar-nav .nav-item {
|
|
||||||
float: none;
|
|
||||||
margin-left: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@include media-breakpoint-up(lg) {
|
|
||||||
display: block !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// scss-lint:enable ImportantRule
|
|
|
@ -1,424 +0,0 @@
|
||||||
/*! normalize.css v4.0.0 | MIT License | github.com/necolas/normalize.css */
|
|
||||||
|
|
||||||
//
|
|
||||||
// 1. Change the default font family in all browsers (opinionated).
|
|
||||||
// 2. Prevent adjustments of font size after orientation changes in IE and iOS.
|
|
||||||
//
|
|
||||||
|
|
||||||
html {
|
|
||||||
font-family: sans-serif; // 1
|
|
||||||
-ms-text-size-adjust: 100%; // 2
|
|
||||||
-webkit-text-size-adjust: 100%; // 2
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Remove the margin in all browsers (opinionated).
|
|
||||||
//
|
|
||||||
|
|
||||||
body {
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// HTML5 display definitions
|
|
||||||
// ==========================================================================
|
|
||||||
|
|
||||||
//
|
|
||||||
// Add the correct display in IE 9-.
|
|
||||||
// 1. Add the correct display in Edge, IE, and Firefox.
|
|
||||||
// 2. Add the correct display in IE.
|
|
||||||
//
|
|
||||||
|
|
||||||
article,
|
|
||||||
aside,
|
|
||||||
details, // 1
|
|
||||||
figcaption,
|
|
||||||
figure,
|
|
||||||
footer,
|
|
||||||
header,
|
|
||||||
main, // 2
|
|
||||||
menu,
|
|
||||||
nav,
|
|
||||||
section,
|
|
||||||
summary { // 1
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Add the correct display in IE 9-.
|
|
||||||
//
|
|
||||||
|
|
||||||
audio,
|
|
||||||
canvas,
|
|
||||||
progress,
|
|
||||||
video {
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Add the correct display in iOS 4-7.
|
|
||||||
//
|
|
||||||
|
|
||||||
audio:not([controls]) {
|
|
||||||
display: none;
|
|
||||||
height: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Add the correct vertical alignment in Chrome, Firefox, and Opera.
|
|
||||||
//
|
|
||||||
|
|
||||||
progress {
|
|
||||||
vertical-align: baseline;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Add the correct display in IE 10-.
|
|
||||||
// 1. Add the correct display in IE.
|
|
||||||
//
|
|
||||||
|
|
||||||
template, // 2
|
|
||||||
[hidden] {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Links
|
|
||||||
// ==========================================================================
|
|
||||||
|
|
||||||
//
|
|
||||||
// Remove the gray background on active links in IE 10.
|
|
||||||
//
|
|
||||||
|
|
||||||
a {
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Remove the outline on focused links when they are also active or hovered
|
|
||||||
// in all browsers (opinionated).
|
|
||||||
//
|
|
||||||
|
|
||||||
a:active,
|
|
||||||
a:hover {
|
|
||||||
outline-width: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Text-level semantics
|
|
||||||
// ==========================================================================
|
|
||||||
|
|
||||||
//
|
|
||||||
// 1. Remove the bottom border in Firefox 39-.
|
|
||||||
// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
|
|
||||||
//
|
|
||||||
|
|
||||||
abbr[title] {
|
|
||||||
border-bottom: none; // 1
|
|
||||||
text-decoration: underline; // 2
|
|
||||||
text-decoration: underline dotted; // 2
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Prevent the duplicate application of `bolder` by the next rule in Safari 6.
|
|
||||||
//
|
|
||||||
|
|
||||||
b,
|
|
||||||
strong {
|
|
||||||
font-weight: inherit;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Add the correct font weight in Chrome, Edge, and Safari.
|
|
||||||
//
|
|
||||||
|
|
||||||
b,
|
|
||||||
strong {
|
|
||||||
font-weight: bolder;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Add the correct font style in Android 4.3-.
|
|
||||||
//
|
|
||||||
|
|
||||||
dfn {
|
|
||||||
font-style: italic;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Correct the font size and margin on `h1` elements within `section` and
|
|
||||||
// `article` contexts in Chrome, Firefox, and Safari.
|
|
||||||
//
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
font-size: 2em;
|
|
||||||
margin: 0.67em 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Add the correct background and color in IE 9-.
|
|
||||||
//
|
|
||||||
|
|
||||||
mark {
|
|
||||||
background-color: #ff0;
|
|
||||||
color: #000;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Add the correct font size in all browsers.
|
|
||||||
//
|
|
||||||
|
|
||||||
small {
|
|
||||||
font-size: 80%;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Prevent `sub` and `sup` elements from affecting the line height in
|
|
||||||
// all browsers.
|
|
||||||
//
|
|
||||||
|
|
||||||
sub,
|
|
||||||
sup {
|
|
||||||
font-size: 75%;
|
|
||||||
line-height: 0;
|
|
||||||
position: relative;
|
|
||||||
vertical-align: baseline;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub {
|
|
||||||
bottom: -0.25em;
|
|
||||||
}
|
|
||||||
|
|
||||||
sup {
|
|
||||||
top: -0.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Embedded content
|
|
||||||
// ==========================================================================
|
|
||||||
|
|
||||||
//
|
|
||||||
// Remove the border on images inside links in IE 10-.
|
|
||||||
//
|
|
||||||
|
|
||||||
img {
|
|
||||||
border-style: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Hide the overflow in IE.
|
|
||||||
//
|
|
||||||
|
|
||||||
svg:not(:root) {
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Grouping content
|
|
||||||
// ==========================================================================
|
|
||||||
|
|
||||||
//
|
|
||||||
// 1. Correct the inheritance and scaling of font size in all browsers.
|
|
||||||
// 2. Correct the odd `em` font sizing in all browsers.
|
|
||||||
//
|
|
||||||
|
|
||||||
code,
|
|
||||||
kbd,
|
|
||||||
pre,
|
|
||||||
samp {
|
|
||||||
font-family: monospace, monospace; // 1
|
|
||||||
font-size: 1em; // 2
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Add the correct margin in IE 8.
|
|
||||||
//
|
|
||||||
|
|
||||||
figure {
|
|
||||||
margin: 1em 40px;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// 1. Add the correct box sizing in Firefox.
|
|
||||||
// 2. Show the overflow in Edge and IE.
|
|
||||||
//
|
|
||||||
|
|
||||||
hr {
|
|
||||||
box-sizing: content-box; // 1
|
|
||||||
height: 0; // 1
|
|
||||||
overflow: visible; // 2
|
|
||||||
}
|
|
||||||
|
|
||||||
// Forms
|
|
||||||
// ==========================================================================
|
|
||||||
|
|
||||||
//
|
|
||||||
// Change font properties to `inherit` in all browsers (opinionated).
|
|
||||||
//
|
|
||||||
|
|
||||||
button,
|
|
||||||
input,
|
|
||||||
select,
|
|
||||||
textarea {
|
|
||||||
font: inherit;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Restore the font weight unset by the previous rule.
|
|
||||||
//
|
|
||||||
|
|
||||||
optgroup {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Show the overflow in IE.
|
|
||||||
// 1. Show the overflow in Edge.
|
|
||||||
// 2. Show the overflow in Edge, Firefox, and IE.
|
|
||||||
//
|
|
||||||
|
|
||||||
button,
|
|
||||||
input, // 1
|
|
||||||
select { // 2
|
|
||||||
overflow: visible;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Remove the margin in Safari.
|
|
||||||
// 1. Remove the margin in Firefox and Safari.
|
|
||||||
//
|
|
||||||
|
|
||||||
button,
|
|
||||||
input,
|
|
||||||
select,
|
|
||||||
textarea { // 1
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Remove the inheritence of text transform in Edge, Firefox, and IE.
|
|
||||||
// 1. Remove the inheritence of text transform in Firefox.
|
|
||||||
//
|
|
||||||
|
|
||||||
button,
|
|
||||||
select { // 1
|
|
||||||
text-transform: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Change the cursor in all browsers (opinionated).
|
|
||||||
//
|
|
||||||
|
|
||||||
button,
|
|
||||||
[type="button"],
|
|
||||||
[type="reset"],
|
|
||||||
[type="submit"] {
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Restore the default cursor to disabled elements unset by the previous rule.
|
|
||||||
//
|
|
||||||
|
|
||||||
[disabled] {
|
|
||||||
cursor: default;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
|
|
||||||
// controls in Android 4.
|
|
||||||
// 2. Correct the inability to style clickable types in iOS.
|
|
||||||
//
|
|
||||||
|
|
||||||
button,
|
|
||||||
html [type="button"], // 1
|
|
||||||
[type="reset"],
|
|
||||||
[type="submit"] {
|
|
||||||
-webkit-appearance: button; // 2
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Remove the inner border and padding in Firefox.
|
|
||||||
//
|
|
||||||
|
|
||||||
button::-moz-focus-inner,
|
|
||||||
input::-moz-focus-inner {
|
|
||||||
border: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Restore the focus styles unset by the previous rule.
|
|
||||||
//
|
|
||||||
|
|
||||||
button:-moz-focusring,
|
|
||||||
input:-moz-focusring {
|
|
||||||
outline: 1px dotted ButtonText;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Change the border, margin, and padding in all browsers (opinionated).
|
|
||||||
//
|
|
||||||
|
|
||||||
fieldset {
|
|
||||||
border: 1px solid #c0c0c0;
|
|
||||||
margin: 0 2px;
|
|
||||||
padding: 0.35em 0.625em 0.75em;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// 1. Correct the text wrapping in Edge and IE.
|
|
||||||
// 2. Correct the color inheritance from `fieldset` elements in IE.
|
|
||||||
// 3. Remove the padding so developers are not caught out when they zero out
|
|
||||||
// `fieldset` elements in all browsers.
|
|
||||||
//
|
|
||||||
|
|
||||||
legend {
|
|
||||||
box-sizing: border-box; // 1
|
|
||||||
color: inherit; // 2
|
|
||||||
display: table; // 1
|
|
||||||
max-width: 100%; // 1
|
|
||||||
padding: 0; // 3
|
|
||||||
white-space: normal; // 1
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Remove the default vertical scrollbar in IE.
|
|
||||||
//
|
|
||||||
|
|
||||||
textarea {
|
|
||||||
overflow: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// 1. Add the correct box sizing in IE 10-.
|
|
||||||
// 2. Remove the padding in IE 10-.
|
|
||||||
//
|
|
||||||
|
|
||||||
[type="checkbox"],
|
|
||||||
[type="radio"] {
|
|
||||||
box-sizing: border-box; // 1
|
|
||||||
padding: 0; // 2
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Correct the cursor style of increment and decrement buttons in Chrome.
|
|
||||||
//
|
|
||||||
|
|
||||||
[type="number"]::-webkit-inner-spin-button,
|
|
||||||
[type="number"]::-webkit-outer-spin-button {
|
|
||||||
height: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Correct the odd appearance of search inputs in Chrome and Safari.
|
|
||||||
//
|
|
||||||
|
|
||||||
[type="search"] {
|
|
||||||
-webkit-appearance: textfield;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Remove the inner padding and cancel buttons in Chrome on OS X and
|
|
||||||
// Safari on OS X.
|
|
||||||
//
|
|
||||||
|
|
||||||
[type="search"]::-webkit-search-cancel-button,
|
|
||||||
[type="search"]::-webkit-search-decoration {
|
|
||||||
-webkit-appearance: none;
|
|
||||||
}
|
|
|
@ -1,57 +0,0 @@
|
||||||
.pager {
|
|
||||||
padding-left: 0;
|
|
||||||
margin-top: $spacer-y;
|
|
||||||
margin-bottom: $spacer-y;
|
|
||||||
text-align: center;
|
|
||||||
list-style: none;
|
|
||||||
@include clearfix();
|
|
||||||
|
|
||||||
li {
|
|
||||||
display: inline;
|
|
||||||
|
|
||||||
> a,
|
|
||||||
> span {
|
|
||||||
display: inline-block;
|
|
||||||
padding: 5px 14px;
|
|
||||||
background-color: $pager-bg;
|
|
||||||
border: $pager-border-width solid $pager-border-color;
|
|
||||||
border-radius: $pager-border-radius;
|
|
||||||
}
|
|
||||||
|
|
||||||
> a {
|
|
||||||
@include hover-focus {
|
|
||||||
text-decoration: none;
|
|
||||||
background-color: $pager-hover-bg;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.disabled {
|
|
||||||
> a {
|
|
||||||
@include plain-hover-focus {
|
|
||||||
color: $pager-disabled-color;
|
|
||||||
cursor: $cursor-disabled;
|
|
||||||
background-color: $pager-bg;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
> span {
|
|
||||||
color: $pager-disabled-color;
|
|
||||||
cursor: $cursor-disabled;
|
|
||||||
background-color: $pager-bg;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.pager-next {
|
|
||||||
> a,
|
|
||||||
> span {
|
|
||||||
float: right;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.pager-prev {
|
|
||||||
> a,
|
|
||||||
> span {
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,73 +0,0 @@
|
||||||
.pagination {
|
|
||||||
display: inline-block;
|
|
||||||
padding-left: 0;
|
|
||||||
margin-top: $spacer-y;
|
|
||||||
margin-bottom: $spacer-y;
|
|
||||||
@include border-radius();
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-item {
|
|
||||||
display: inline; // Remove list-style and block-level defaults
|
|
||||||
|
|
||||||
&:first-child {
|
|
||||||
.page-link {
|
|
||||||
margin-left: 0;
|
|
||||||
@include border-left-radius($border-radius);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
&:last-child {
|
|
||||||
.page-link {
|
|
||||||
@include border-right-radius($border-radius);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&.active .page-link {
|
|
||||||
@include plain-hover-focus {
|
|
||||||
z-index: 2;
|
|
||||||
color: $pagination-active-color;
|
|
||||||
cursor: default;
|
|
||||||
background-color: $pagination-active-bg;
|
|
||||||
border-color: $pagination-active-border;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&.disabled .page-link {
|
|
||||||
@include plain-hover-focus {
|
|
||||||
color: $pagination-disabled-color;
|
|
||||||
pointer-events: none;
|
|
||||||
cursor: $cursor-disabled;
|
|
||||||
background-color: $pagination-disabled-bg;
|
|
||||||
border-color: $pagination-disabled-border;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-link {
|
|
||||||
position: relative;
|
|
||||||
float: left; // Collapse white-space
|
|
||||||
padding: $pagination-padding-y $pagination-padding-x;
|
|
||||||
margin-left: -1px;
|
|
||||||
color: $pagination-color;
|
|
||||||
text-decoration: none;
|
|
||||||
background-color: $pagination-bg;
|
|
||||||
border: $pagination-border-width solid $pagination-border-color;
|
|
||||||
|
|
||||||
@include hover-focus {
|
|
||||||
color: $pagination-hover-color;
|
|
||||||
background-color: $pagination-hover-bg;
|
|
||||||
border-color: $pagination-hover-border;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Sizing
|
|
||||||
//
|
|
||||||
|
|
||||||
.pagination-lg {
|
|
||||||
@include pagination-size($pagination-padding-y-lg, $pagination-padding-x-lg, $font-size-lg, $line-height-lg, $border-radius-lg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.pagination-sm {
|
|
||||||
@include pagination-size($pagination-padding-y-sm, $pagination-padding-x-sm, $font-size-sm, $line-height-sm, $border-radius-sm);
|
|
||||||
}
|
|
|
@ -1,147 +0,0 @@
|
||||||
.popover {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
z-index: $zindex-popover;
|
|
||||||
display: block;
|
|
||||||
max-width: $popover-max-width;
|
|
||||||
padding: $popover-inner-padding;
|
|
||||||
// Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.
|
|
||||||
// So reset our font and text properties to avoid inheriting weird values.
|
|
||||||
@include reset-text();
|
|
||||||
font-size: $font-size-sm;
|
|
||||||
// Allow breaking very long words so they don't overflow the popover's bounds
|
|
||||||
word-wrap: break-word;
|
|
||||||
background-color: $popover-bg;
|
|
||||||
background-clip: padding-box;
|
|
||||||
border: $popover-border-width solid $popover-border-color;
|
|
||||||
@include border-radius($border-radius-lg);
|
|
||||||
@include box-shadow($popover-box-shadow);
|
|
||||||
|
|
||||||
|
|
||||||
// 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-title {
|
|
||||||
padding: $popover-title-padding-y $popover-title-padding-x;
|
|
||||||
margin: 0; // reset heading margin
|
|
||||||
font-size: $font-size-base;
|
|
||||||
background-color: $popover-title-bg;
|
|
||||||
border-bottom: $popover-border-width solid darken($popover-title-bg, 5%);
|
|
||||||
$offset-border-width: ($border-width / $font-size-root);
|
|
||||||
@include border-radius(($border-radius-lg - $offset-border-width) ($border-radius-lg - $offset-border-width) 0 0);
|
|
||||||
|
|
||||||
&:empty {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.popover-content {
|
|
||||||
padding: $popover-content-padding-y $popover-content-padding-x;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Arrows
|
|
||||||
//
|
|
||||||
// .popover-arrow is outer, .popover-arrow::after is inner
|
|
||||||
|
|
||||||
.popover-arrow {
|
|
||||||
&,
|
|
||||||
&::after {
|
|
||||||
position: absolute;
|
|
||||||
display: block;
|
|
||||||
width: 0;
|
|
||||||
height: 0;
|
|
||||||
border-color: transparent;
|
|
||||||
border-style: solid;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.popover-arrow {
|
|
||||||
border-width: $popover-arrow-outer-width;
|
|
||||||
}
|
|
||||||
.popover-arrow::after {
|
|
||||||
content: "";
|
|
||||||
border-width: $popover-arrow-width;
|
|
||||||
}
|
|
|
@ -1,116 +0,0 @@
|
||||||
// scss-lint:disable ImportantRule, QualifyingElement
|
|
||||||
|
|
||||||
// Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css
|
|
||||||
|
|
||||||
// ==========================================================================
|
|
||||||
// Print styles.
|
|
||||||
// Inlined to avoid the additional HTTP request:
|
|
||||||
// http://www.phpied.com/delay-loading-your-print-css/
|
|
||||||
// ==========================================================================
|
|
||||||
|
|
||||||
@if $enable-print-styles {
|
|
||||||
@media print {
|
|
||||||
*,
|
|
||||||
*::before,
|
|
||||||
*::after,
|
|
||||||
*::first-letter,
|
|
||||||
*::first-line {
|
|
||||||
// Bootstrap specific; comment out `color` and `background`
|
|
||||||
//color: #000 !important; // Black prints faster:
|
|
||||||
// http://www.sanbeiji.com/archives/953
|
|
||||||
text-shadow: none !important;
|
|
||||||
//background: transparent !important;
|
|
||||||
box-shadow: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
a,
|
|
||||||
a:visited {
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Bootstrap specific; comment the following selector out
|
|
||||||
//a[href]::after {
|
|
||||||
// content: " (" attr(href) ")";
|
|
||||||
//}
|
|
||||||
|
|
||||||
abbr[title]::after {
|
|
||||||
content: " (" attr(title) ")";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Bootstrap specific; comment the following selector out
|
|
||||||
//
|
|
||||||
// Don't show links that are fragment identifiers,
|
|
||||||
// or use the `javascript:` pseudo protocol
|
|
||||||
//
|
|
||||||
|
|
||||||
//a[href^="#"]::after,
|
|
||||||
//a[href^="javascript:"]::after {
|
|
||||||
// content: "";
|
|
||||||
//}
|
|
||||||
|
|
||||||
pre,
|
|
||||||
blockquote {
|
|
||||||
border: $border-width solid #999; // Bootstrap custom code; using `$border-width` instead of 1px
|
|
||||||
page-break-inside: avoid;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Printing Tables:
|
|
||||||
// http://css-discuss.incutio.com/wiki/Printing_Tables
|
|
||||||
//
|
|
||||||
|
|
||||||
thead {
|
|
||||||
display: table-header-group;
|
|
||||||
}
|
|
||||||
|
|
||||||
tr,
|
|
||||||
img {
|
|
||||||
page-break-inside: avoid;
|
|
||||||
}
|
|
||||||
|
|
||||||
p,
|
|
||||||
h2,
|
|
||||||
h3 {
|
|
||||||
orphans: 3;
|
|
||||||
widows: 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2,
|
|
||||||
h3 {
|
|
||||||
page-break-after: avoid;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Bootstrap specific changes start
|
|
||||||
|
|
||||||
// Bootstrap components
|
|
||||||
.navbar {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
.btn,
|
|
||||||
.dropup > .btn {
|
|
||||||
> .caret {
|
|
||||||
border-top-color: #000 !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.tag {
|
|
||||||
border: $border-width solid #000;
|
|
||||||
}
|
|
||||||
|
|
||||||
.table {
|
|
||||||
border-collapse: collapse !important;
|
|
||||||
|
|
||||||
td,
|
|
||||||
th {
|
|
||||||
background-color: #fff !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.table-bordered {
|
|
||||||
th,
|
|
||||||
td {
|
|
||||||
border: 1px solid #ddd !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Bootstrap specific changes end
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,145 +0,0 @@
|
||||||
//
|
|
||||||
// Progress animations
|
|
||||||
//
|
|
||||||
|
|
||||||
@keyframes progress-bar-stripes {
|
|
||||||
from { background-position: $spacer-y 0; }
|
|
||||||
to { background-position: 0 0; }
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Basic progress bar
|
|
||||||
//
|
|
||||||
|
|
||||||
.progress {
|
|
||||||
display: block;
|
|
||||||
width: 100%;
|
|
||||||
height: $spacer-y; // todo: make a new var for this
|
|
||||||
margin-bottom: $spacer-y;
|
|
||||||
}
|
|
||||||
.progress[value] {
|
|
||||||
// Set overall background
|
|
||||||
background-color: $progress-bg;
|
|
||||||
// Remove Firefox and Opera border
|
|
||||||
border: 0;
|
|
||||||
// Reset the default appearance
|
|
||||||
appearance: none;
|
|
||||||
// Set overall border radius
|
|
||||||
@include border-radius($border-radius);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Filled-in portion of the bar
|
|
||||||
.progress[value]::-ms-fill {
|
|
||||||
background-color: $progress-bar-color;
|
|
||||||
// Remove right-hand border of value bar from IE10+/Edge
|
|
||||||
border: 0;
|
|
||||||
}
|
|
||||||
.progress[value]::-moz-progress-bar {
|
|
||||||
background-color: $progress-bar-color;
|
|
||||||
@include border-left-radius($border-radius);
|
|
||||||
}
|
|
||||||
.progress[value]::-webkit-progress-value {
|
|
||||||
background-color: $progress-bar-color;
|
|
||||||
@include border-left-radius($border-radius);
|
|
||||||
}
|
|
||||||
// Tweaks for full progress bar
|
|
||||||
.progress[value="100"]::-moz-progress-bar {
|
|
||||||
@include border-right-radius($border-radius);
|
|
||||||
}
|
|
||||||
.progress[value="100"]::-webkit-progress-value {
|
|
||||||
@include border-right-radius($border-radius);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Unfilled portion of the bar
|
|
||||||
.progress[value]::-webkit-progress-bar {
|
|
||||||
background-color: $progress-bg;
|
|
||||||
@include border-radius($border-radius);
|
|
||||||
@include box-shadow($progress-box-shadow);
|
|
||||||
}
|
|
||||||
base::-moz-progress-bar, // Absurd-but-syntactically-valid selector to make these styles Firefox-only
|
|
||||||
.progress[value] {
|
|
||||||
background-color: $progress-bg;
|
|
||||||
@include border-radius($border-radius);
|
|
||||||
@include box-shadow($progress-box-shadow);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 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) {
|
|
||||||
.progress {
|
|
||||||
background-color: $progress-bg;
|
|
||||||
@include border-radius($border-radius);
|
|
||||||
@include box-shadow($progress-box-shadow);
|
|
||||||
}
|
|
||||||
.progress-bar {
|
|
||||||
display: inline-block;
|
|
||||||
height: $spacer-y;
|
|
||||||
text-indent: -999rem; // Simulate hiding of value as in native `<progress>`
|
|
||||||
background-color: $progress-bar-color;
|
|
||||||
@include border-left-radius($border-radius);
|
|
||||||
}
|
|
||||||
.progress[width="100%"] {
|
|
||||||
@include border-right-radius($border-radius);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Striped
|
|
||||||
//
|
|
||||||
|
|
||||||
.progress-striped[value]::-webkit-progress-value {
|
|
||||||
@include gradient-striped();
|
|
||||||
background-size: $spacer-y $spacer-y;
|
|
||||||
}
|
|
||||||
.progress-striped[value]::-moz-progress-bar {
|
|
||||||
@include gradient-striped();
|
|
||||||
background-size: $spacer-y $spacer-y;
|
|
||||||
}
|
|
||||||
.progress-striped[value]::-ms-fill {
|
|
||||||
@include gradient-striped();
|
|
||||||
background-size: $spacer-y $spacer-y;
|
|
||||||
}
|
|
||||||
// IE9
|
|
||||||
@media screen and (min-width:0\0) {
|
|
||||||
.progress-bar-striped {
|
|
||||||
@include gradient-striped();
|
|
||||||
background-size: $spacer-y $spacer-y;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Animated
|
|
||||||
//
|
|
||||||
|
|
||||||
.progress-animated[value]::-webkit-progress-value {
|
|
||||||
animation: progress-bar-stripes 2s linear infinite;
|
|
||||||
}
|
|
||||||
.progress-animated[value]::-moz-progress-bar {
|
|
||||||
animation: progress-bar-stripes 2s linear infinite;
|
|
||||||
}
|
|
||||||
// IE9
|
|
||||||
@media screen and (min-width:0\0) {
|
|
||||||
.progress-animated .progress-bar-striped {
|
|
||||||
animation: progress-bar-stripes 2s linear infinite;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Variations
|
|
||||||
//
|
|
||||||
|
|
||||||
.progress-success {
|
|
||||||
@include progress-variant($progress-bar-success-bg);
|
|
||||||
}
|
|
||||||
.progress-info {
|
|
||||||
@include progress-variant($progress-bar-info-bg);
|
|
||||||
}
|
|
||||||
.progress-warning {
|
|
||||||
@include progress-variant($progress-bar-warning-bg);
|
|
||||||
}
|
|
||||||
.progress-danger {
|
|
||||||
@include progress-variant($progress-bar-danger-bg);
|
|
||||||
}
|
|
|
@ -1,393 +0,0 @@
|
||||||
// scss-lint:disable ImportantRule, QualifyingElement, DuplicateProperty
|
|
||||||
|
|
||||||
// Reboot
|
|
||||||
//
|
|
||||||
// Global resets to common HTML elements and more for easier usage by Bootstrap.
|
|
||||||
// Adds additional rules on top of Normalize.css, including several overrides.
|
|
||||||
|
|
||||||
|
|
||||||
// Reset the box-sizing
|
|
||||||
//
|
|
||||||
// Change from `box-sizing: content-box` to `border-box` so that when you add
|
|
||||||
// `padding` or `border`s to an element, the overall declared `width` does not
|
|
||||||
// change. For example, `width: 100px;` will always be `100px` despite the
|
|
||||||
// `border: 10px solid red;` and `padding: 20px;`.
|
|
||||||
//
|
|
||||||
// Heads up! This reset may cause conflicts with some third-party widgets. For
|
|
||||||
// recommendations on resolving such conflicts, see
|
|
||||||
// http://getbootstrap.com/getting-started/#third-box-sizing.
|
|
||||||
//
|
|
||||||
// Credit: https://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/
|
|
||||||
|
|
||||||
html {
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
*,
|
|
||||||
*::before,
|
|
||||||
*::after {
|
|
||||||
box-sizing: inherit;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Make viewport responsive
|
|
||||||
//
|
|
||||||
// @viewport is needed because IE 10+ doesn't honor <meta name="viewport"> in
|
|
||||||
// some cases. See http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/.
|
|
||||||
// Eventually @viewport will replace <meta name="viewport">.
|
|
||||||
//
|
|
||||||
// However, `device-width` is broken on IE 10 on Windows (Phone) 8,
|
|
||||||
// (see http://timkadlec.com/2013/01/windows-phone-8-and-device-width/ and https://github.com/twbs/bootstrap/issues/10497)
|
|
||||||
// and the fix for that involves a snippet of JavaScript to sniff the user agent
|
|
||||||
// and apply some conditional CSS.
|
|
||||||
//
|
|
||||||
// See http://getbootstrap.com/getting-started/#support-ie10-width for the relevant hack.
|
|
||||||
//
|
|
||||||
// Wrap `@viewport` with `@at-root` for when folks do a nested import (e.g.,
|
|
||||||
// `.class-name { @import "bootstrap"; }`).
|
|
||||||
@at-root {
|
|
||||||
@-ms-viewport { width: device-width; }
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Reset HTML, body, and more
|
|
||||||
//
|
|
||||||
|
|
||||||
html {
|
|
||||||
// Sets a specific default `font-size` for user with `rem` type scales.
|
|
||||||
font-size: $font-size-root;
|
|
||||||
// As a side-effect of setting the @viewport above,
|
|
||||||
// IE11 & Edge make the scrollbar overlap the content and automatically hide itself when not in use.
|
|
||||||
// Unfortunately, the auto-showing of the scrollbar is sometimes too sensitive,
|
|
||||||
// thus making it hard to click on stuff near the right edge of the page.
|
|
||||||
// So we add this style to force IE11 & Edge to use a "normal", non-overlapping, non-auto-hiding scrollbar.
|
|
||||||
// See https://github.com/twbs/bootstrap/issues/18543
|
|
||||||
-ms-overflow-style: scrollbar;
|
|
||||||
// Changes the default tap highlight to be completely transparent in iOS.
|
|
||||||
-webkit-tap-highlight-color: rgba(0,0,0,0);
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
// Make the `body` use the `font-size-root`
|
|
||||||
font-family: $font-family-base;
|
|
||||||
font-size: $font-size-base;
|
|
||||||
line-height: $line-height-base;
|
|
||||||
// Go easy on the eyes and use something other than `#000` for text
|
|
||||||
color: $body-color;
|
|
||||||
// By default, `<body>` has no `background-color` so we set one as a best practice.
|
|
||||||
background-color: $body-bg;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Suppress the focus outline on elements that cannot be accessed via keyboard.
|
|
||||||
// This prevents an unwanted focus outline from appearing around elements that
|
|
||||||
// might still respond to pointer events.
|
|
||||||
//
|
|
||||||
// Credit: https://github.com/suitcss/base
|
|
||||||
[tabindex="-1"]:focus {
|
|
||||||
outline: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Typography
|
|
||||||
//
|
|
||||||
|
|
||||||
// Remove top margins from headings
|
|
||||||
//
|
|
||||||
// By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top
|
|
||||||
// margin for easier control within type scales as it avoids margin collapsing.
|
|
||||||
h1, h2, h3, h4, h5, h6 {
|
|
||||||
margin-top: 0;
|
|
||||||
margin-bottom: .5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Reset margins on paragraphs
|
|
||||||
//
|
|
||||||
// Similarly, the top margin on `<p>`s get reset. However, we also reset the
|
|
||||||
// bottom margin to use `rem` units instead of `em`.
|
|
||||||
p {
|
|
||||||
margin-top: 0;
|
|
||||||
margin-bottom: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Abbreviations and acronyms
|
|
||||||
abbr[title],
|
|
||||||
// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257
|
|
||||||
abbr[data-original-title] {
|
|
||||||
cursor: help;
|
|
||||||
border-bottom: 1px dotted $abbr-border-color;
|
|
||||||
}
|
|
||||||
|
|
||||||
address {
|
|
||||||
margin-bottom: 1rem;
|
|
||||||
font-style: normal;
|
|
||||||
line-height: inherit;
|
|
||||||
}
|
|
||||||
|
|
||||||
ol,
|
|
||||||
ul,
|
|
||||||
dl {
|
|
||||||
margin-top: 0;
|
|
||||||
margin-bottom: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
ol ol,
|
|
||||||
ul ul,
|
|
||||||
ol ul,
|
|
||||||
ul ol {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
dt {
|
|
||||||
font-weight: $dt-font-weight;
|
|
||||||
}
|
|
||||||
|
|
||||||
dd {
|
|
||||||
margin-bottom: .5rem;
|
|
||||||
margin-left: 0; // Undo browser default
|
|
||||||
}
|
|
||||||
|
|
||||||
blockquote {
|
|
||||||
margin: 0 0 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Links
|
|
||||||
//
|
|
||||||
|
|
||||||
a {
|
|
||||||
color: $link-color;
|
|
||||||
text-decoration: $link-decoration;
|
|
||||||
|
|
||||||
@include hover-focus {
|
|
||||||
color: $link-hover-color;
|
|
||||||
text-decoration: $link-hover-decoration;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:focus {
|
|
||||||
@include tab-focus();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// And undo these styles for placeholder links/named anchors (without href)
|
|
||||||
// which have not been made explicitly keyboard-focusable (without tabindex).
|
|
||||||
// It would be more straightforward to just use a[href] in previous block, but that
|
|
||||||
// causes specificity issues in many other styles that are too complex to fix.
|
|
||||||
// See https://github.com/twbs/bootstrap/issues/19402
|
|
||||||
|
|
||||||
a:not([href]):not([tabindex]) {
|
|
||||||
color: inherit;
|
|
||||||
text-decoration: none;
|
|
||||||
|
|
||||||
@include hover-focus {
|
|
||||||
color: inherit;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:focus {
|
|
||||||
outline: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Code
|
|
||||||
//
|
|
||||||
|
|
||||||
pre {
|
|
||||||
// Remove browser default top margin
|
|
||||||
margin-top: 0;
|
|
||||||
// Reset browser default of `1em` to use `rem`s
|
|
||||||
margin-bottom: 1rem;
|
|
||||||
// Normalize v4 removed this property, causing `<pre>` content to break out of wrapping code snippets
|
|
||||||
overflow: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Figures
|
|
||||||
//
|
|
||||||
|
|
||||||
figure {
|
|
||||||
// Normalize adds `margin` to `figure`s as browsers apply it inconsistently.
|
|
||||||
// We reset that to create a better flow in-page.
|
|
||||||
margin: 0 0 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Images
|
|
||||||
//
|
|
||||||
|
|
||||||
img {
|
|
||||||
// By default, `<img>`s are `inline-block`. This assumes that, and vertically
|
|
||||||
// centers them. This won't apply should you reset them to `block` level.
|
|
||||||
vertical-align: middle;
|
|
||||||
// Note: `<img>`s are deliberately not made responsive by default.
|
|
||||||
// For the rationale behind this, see the comments on the `.img-fluid` class.
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// iOS "clickable elements" fix for role="button"
|
|
||||||
//
|
|
||||||
// Fixes "clickability" issue (and more generally, the firing of events such as focus as well)
|
|
||||||
// for traditionally non-focusable elements with role="button"
|
|
||||||
// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
|
|
||||||
|
|
||||||
[role="button"] {
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Avoid 300ms click delay on touch devices that support the `touch-action` CSS property.
|
|
||||||
//
|
|
||||||
// In particular, unlike most other browsers, IE11+Edge on Windows 10 on touch devices and IE Mobile 10-11
|
|
||||||
// DON'T remove the click delay when `<meta name="viewport" content="width=device-width">` is present.
|
|
||||||
// However, they DO support removing the click delay via `touch-action: manipulation`.
|
|
||||||
// See:
|
|
||||||
// * http://v4-alpha.getbootstrap.com/content/reboot/#click-delay-optimization-for-touch
|
|
||||||
// * http://caniuse.com/#feat=css-touch-action
|
|
||||||
// * http://patrickhlauke.github.io/touch/tests/results/#suppressing-300ms-delay
|
|
||||||
|
|
||||||
a,
|
|
||||||
area,
|
|
||||||
button,
|
|
||||||
[role="button"],
|
|
||||||
input,
|
|
||||||
label,
|
|
||||||
select,
|
|
||||||
summary,
|
|
||||||
textarea {
|
|
||||||
touch-action: manipulation;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Tables
|
|
||||||
//
|
|
||||||
|
|
||||||
table {
|
|
||||||
// No longer part of Normalize since v4
|
|
||||||
border-collapse: collapse;
|
|
||||||
// Reset for nesting within parents with `background-color`.
|
|
||||||
background-color: $table-bg;
|
|
||||||
}
|
|
||||||
|
|
||||||
caption {
|
|
||||||
padding-top: $table-cell-padding;
|
|
||||||
padding-bottom: $table-cell-padding;
|
|
||||||
color: $text-muted;
|
|
||||||
text-align: left;
|
|
||||||
caption-side: bottom;
|
|
||||||
}
|
|
||||||
|
|
||||||
th {
|
|
||||||
// Centered by default, but left-align-ed to match the `td`s below.
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Forms
|
|
||||||
//
|
|
||||||
|
|
||||||
label {
|
|
||||||
// Allow labels to use `margin` for spacing.
|
|
||||||
display: inline-block;
|
|
||||||
margin-bottom: .5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Work around a Firefox/IE bug where the transparent `button` background
|
|
||||||
// results in a loss of the default `button` focus styles.
|
|
||||||
//
|
|
||||||
// Credit: https://github.com/suitcss/base/
|
|
||||||
button:focus {
|
|
||||||
outline: 1px dotted;
|
|
||||||
outline: 5px auto -webkit-focus-ring-color;
|
|
||||||
}
|
|
||||||
|
|
||||||
input,
|
|
||||||
button,
|
|
||||||
select,
|
|
||||||
textarea {
|
|
||||||
// Remove all `margin`s so our classes don't have to do it themselves.
|
|
||||||
margin: 0;
|
|
||||||
// Normalize includes `font: inherit;`, so `font-family`. `font-size`, etc are
|
|
||||||
// properly inherited. However, `line-height` isn't addressed there. Using this
|
|
||||||
// ensures we don't need to unnecessarily redeclare the global font stack.
|
|
||||||
line-height: inherit;
|
|
||||||
// iOS adds rounded borders by default
|
|
||||||
border-radius: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
input[type="radio"],
|
|
||||||
input[type="checkbox"] {
|
|
||||||
// Apply a disabled cursor for radios and checkboxes.
|
|
||||||
//
|
|
||||||
// Note: Neither radios nor checkboxes can be readonly.
|
|
||||||
&:disabled {
|
|
||||||
cursor: $cursor-disabled;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
input[type="date"],
|
|
||||||
input[type="time"],
|
|
||||||
input[type="datetime-local"],
|
|
||||||
input[type="month"] {
|
|
||||||
// Remove the default appearance of temporal inputs to avoid a Mobile Safari
|
|
||||||
// bug where setting a custom line-height prevents text from being vertically
|
|
||||||
// centered within the input.
|
|
||||||
//
|
|
||||||
// Bug report: https://github.com/twbs/bootstrap/issues/11266
|
|
||||||
-webkit-appearance: listbox;
|
|
||||||
}
|
|
||||||
|
|
||||||
textarea {
|
|
||||||
// Textareas should really only resize vertically so they don't break their (horizontal) containers.
|
|
||||||
resize: vertical;
|
|
||||||
}
|
|
||||||
|
|
||||||
fieldset {
|
|
||||||
// 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 {
|
|
||||||
// Reset the entire legend element to match the `fieldset`
|
|
||||||
display: block;
|
|
||||||
width: 100%;
|
|
||||||
padding: 0;
|
|
||||||
margin-bottom: .5rem;
|
|
||||||
font-size: 1.5rem;
|
|
||||||
line-height: inherit;
|
|
||||||
}
|
|
||||||
|
|
||||||
input[type="search"] {
|
|
||||||
// This overrides the extra rounded corners on search inputs in iOS so that our
|
|
||||||
// `.form-control` class can properly style them. Note that this cannot simply
|
|
||||||
// be added to `.form-control` as it's not specific enough. For details, see
|
|
||||||
// https://github.com/twbs/bootstrap/issues/11586.
|
|
||||||
-webkit-appearance: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
// todo: needed?
|
|
||||||
output {
|
|
||||||
display: inline-block;
|
|
||||||
// font-size: $font-size-base;
|
|
||||||
// line-height: $line-height;
|
|
||||||
// color: $input-color;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Always hide an element with the `hidden` HTML attribute (from PureCSS).
|
|
||||||
[hidden] {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
|
@ -1,39 +0,0 @@
|
||||||
// Credit: Nicolas Gallagher and SUIT CSS.
|
|
||||||
|
|
||||||
.embed-responsive {
|
|
||||||
position: relative;
|
|
||||||
display: block;
|
|
||||||
height: 0;
|
|
||||||
padding: 0;
|
|
||||||
overflow: hidden;
|
|
||||||
|
|
||||||
.embed-responsive-item,
|
|
||||||
iframe,
|
|
||||||
embed,
|
|
||||||
object,
|
|
||||||
video {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
border: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.embed-responsive-21by9 {
|
|
||||||
padding-bottom: percentage(9 / 21);
|
|
||||||
}
|
|
||||||
|
|
||||||
.embed-responsive-16by9 {
|
|
||||||
padding-bottom: percentage(9 / 16);
|
|
||||||
}
|
|
||||||
|
|
||||||
.embed-responsive-4by3 {
|
|
||||||
padding-bottom: percentage(3 / 4);
|
|
||||||
}
|
|
||||||
|
|
||||||
.embed-responsive-1by1 {
|
|
||||||
padding-bottom: percentage(1 / 1);
|
|
||||||
}
|
|
|
@ -1,198 +0,0 @@
|
||||||
//
|
|
||||||
// Basic Bootstrap table
|
|
||||||
//
|
|
||||||
|
|
||||||
.table {
|
|
||||||
width: 100%;
|
|
||||||
max-width: 100%;
|
|
||||||
margin-bottom: $spacer;
|
|
||||||
|
|
||||||
th,
|
|
||||||
td {
|
|
||||||
padding: $table-cell-padding;
|
|
||||||
vertical-align: top;
|
|
||||||
border-top: $table-border-width solid $table-border-color;
|
|
||||||
}
|
|
||||||
|
|
||||||
thead th {
|
|
||||||
vertical-align: bottom;
|
|
||||||
border-bottom: (2 * $table-border-width) solid $table-border-color;
|
|
||||||
}
|
|
||||||
|
|
||||||
tbody + tbody {
|
|
||||||
border-top: (2 * $table-border-width) solid $table-border-color;
|
|
||||||
}
|
|
||||||
|
|
||||||
.table {
|
|
||||||
background-color: $body-bg;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Condensed table w/ half padding
|
|
||||||
//
|
|
||||||
|
|
||||||
.table-sm {
|
|
||||||
th,
|
|
||||||
td {
|
|
||||||
padding: $table-sm-cell-padding;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Bordered version
|
|
||||||
//
|
|
||||||
// Add borders all around the table and between all the columns.
|
|
||||||
|
|
||||||
.table-bordered {
|
|
||||||
border: $table-border-width solid $table-border-color;
|
|
||||||
|
|
||||||
th,
|
|
||||||
td {
|
|
||||||
border: $table-border-width solid $table-border-color;
|
|
||||||
}
|
|
||||||
|
|
||||||
thead {
|
|
||||||
th,
|
|
||||||
td {
|
|
||||||
border-bottom-width: (2 * $table-border-width);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Zebra-striping
|
|
||||||
//
|
|
||||||
// Default zebra-stripe styles (alternating gray and transparent backgrounds)
|
|
||||||
|
|
||||||
.table-striped {
|
|
||||||
tbody tr:nth-of-type(odd) {
|
|
||||||
background-color: $table-bg-accent;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Hover effect
|
|
||||||
//
|
|
||||||
// Placed here since it has to come after the potential zebra striping
|
|
||||||
|
|
||||||
.table-hover {
|
|
||||||
tbody tr {
|
|
||||||
@include hover {
|
|
||||||
background-color: $table-bg-hover;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Table backgrounds
|
|
||||||
//
|
|
||||||
// Exact selectors below required to override `.table-striped` and prevent
|
|
||||||
// inheritance to nested tables.
|
|
||||||
|
|
||||||
// Generate the contextual variants
|
|
||||||
@include table-row-variant(active, $table-bg-active);
|
|
||||||
@include table-row-variant(success, $state-success-bg);
|
|
||||||
@include table-row-variant(info, $state-info-bg);
|
|
||||||
@include table-row-variant(warning, $state-warning-bg);
|
|
||||||
@include table-row-variant(danger, $state-danger-bg);
|
|
||||||
|
|
||||||
|
|
||||||
// Inverse styles
|
|
||||||
//
|
|
||||||
// Same table markup, but inverted color scheme—dark background and light text.
|
|
||||||
|
|
||||||
.thead-inverse {
|
|
||||||
th {
|
|
||||||
color: #fff;
|
|
||||||
background-color: $gray-dark;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.thead-default {
|
|
||||||
th {
|
|
||||||
color: $gray;
|
|
||||||
background-color: $gray-lighter;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.table-inverse {
|
|
||||||
color: $gray-lighter;
|
|
||||||
background-color: $gray-dark;
|
|
||||||
|
|
||||||
th,
|
|
||||||
td,
|
|
||||||
thead th {
|
|
||||||
border-color: $gray;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.table-bordered {
|
|
||||||
border: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Responsive tables
|
|
||||||
//
|
|
||||||
// Wrap your tables in `.table-responsive` and we'll make them mobile friendly
|
|
||||||
// by enabling horizontal scrolling. Only applies <768px. Everything above that
|
|
||||||
// will display normally.
|
|
||||||
|
|
||||||
.table-responsive {
|
|
||||||
display: block;
|
|
||||||
width: 100%;
|
|
||||||
min-height: .01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)
|
|
||||||
overflow-x: auto;
|
|
||||||
|
|
||||||
// TODO: find out if we need this still.
|
|
||||||
//
|
|
||||||
// border: $table-border-width solid $table-border-color;
|
|
||||||
// -ms-overflow-style: -ms-autohiding-scrollbar; // See https://github.com/twbs/bootstrap/pull/10057
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.table-reflow {
|
|
||||||
thead {
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
tbody {
|
|
||||||
display: block;
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
th,
|
|
||||||
td {
|
|
||||||
border-top: $table-border-width solid $table-border-color;
|
|
||||||
border-left: $table-border-width solid $table-border-color;
|
|
||||||
|
|
||||||
&:last-child {
|
|
||||||
border-right: $table-border-width solid $table-border-color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
thead,
|
|
||||||
tbody,
|
|
||||||
tfoot {
|
|
||||||
&:last-child {
|
|
||||||
tr:last-child th,
|
|
||||||
tr:last-child td {
|
|
||||||
border-bottom: $table-border-width solid $table-border-color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// scss-lint:disable ImportantRule
|
|
||||||
tr {
|
|
||||||
float: left;
|
|
||||||
|
|
||||||
th,
|
|
||||||
td {
|
|
||||||
display: block !important;
|
|
||||||
border: $table-border-width solid $table-border-color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// scss-lint:enable ImportantRule
|
|
||||||
}
|
|
|
@ -1,77 +0,0 @@
|
||||||
// Base class
|
|
||||||
//
|
|
||||||
// Requires one of the contextual, color modifier classes for `color` and
|
|
||||||
// `background-color`.
|
|
||||||
|
|
||||||
.tag {
|
|
||||||
display: inline-block;
|
|
||||||
padding: $tag-padding-y $tag-padding-x;
|
|
||||||
font-size: $tag-font-size;
|
|
||||||
font-weight: $tag-font-weight;
|
|
||||||
line-height: 1;
|
|
||||||
color: $tag-color;
|
|
||||||
text-align: center;
|
|
||||||
white-space: nowrap;
|
|
||||||
vertical-align: baseline;
|
|
||||||
@include border-radius();
|
|
||||||
|
|
||||||
// Empty tags collapse automatically
|
|
||||||
&:empty {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Quick fix for tags in buttons
|
|
||||||
.btn .tag {
|
|
||||||
position: relative;
|
|
||||||
top: -1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
// scss-lint:disable QualifyingElement
|
|
||||||
// Add hover effects, but only for links
|
|
||||||
a.tag {
|
|
||||||
@include hover-focus {
|
|
||||||
color: $tag-link-hover-color;
|
|
||||||
text-decoration: none;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// scss-lint:enable QualifyingElement
|
|
||||||
|
|
||||||
// Pill tags
|
|
||||||
//
|
|
||||||
// Make them extra rounded with a modifier to replace v3's badges.
|
|
||||||
|
|
||||||
.tag-pill {
|
|
||||||
padding-right: $tag-pill-padding-x;
|
|
||||||
padding-left: $tag-pill-padding-x;
|
|
||||||
@include border-radius($tag-pill-border-radius);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Colors
|
|
||||||
//
|
|
||||||
// Contextual variations (linked tags get darker on :hover).
|
|
||||||
|
|
||||||
.tag-default {
|
|
||||||
@include tag-variant($tag-default-bg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.tag-primary {
|
|
||||||
@include tag-variant($tag-primary-bg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.tag-success {
|
|
||||||
@include tag-variant($tag-success-bg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.tag-info {
|
|
||||||
@include tag-variant($tag-info-bg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.tag-warning {
|
|
||||||
@include tag-variant($tag-warning-bg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.tag-danger {
|
|
||||||
@include tag-variant($tag-danger-bg);
|
|
||||||
}
|
|
|
@ -1,87 +0,0 @@
|
||||||
// Base class
|
|
||||||
.tooltip {
|
|
||||||
position: absolute;
|
|
||||||
z-index: $zindex-tooltip;
|
|
||||||
display: block;
|
|
||||||
// Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.
|
|
||||||
// So reset our font and text properties to avoid inheriting weird values.
|
|
||||||
@include reset-text();
|
|
||||||
font-size: $font-size-sm;
|
|
||||||
// Allow breaking very long words so they don't overflow the tooltip's bounds
|
|
||||||
word-wrap: break-word;
|
|
||||||
opacity: 0;
|
|
||||||
|
|
||||||
&.in { opacity: $tooltip-opacity; }
|
|
||||||
|
|
||||||
&.tooltip-top,
|
|
||||||
&.bs-tether-element-attached-bottom {
|
|
||||||
padding: $tooltip-arrow-width 0;
|
|
||||||
margin-top: -$tooltip-margin;
|
|
||||||
|
|
||||||
.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: $tooltip-margin;
|
|
||||||
|
|
||||||
.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: $tooltip-margin;
|
|
||||||
|
|
||||||
.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: -$tooltip-margin;
|
|
||||||
|
|
||||||
.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
|
|
||||||
.tooltip-inner {
|
|
||||||
max-width: $tooltip-max-width;
|
|
||||||
padding: $tooltip-padding-y $tooltip-padding-x;
|
|
||||||
color: $tooltip-color;
|
|
||||||
text-align: center;
|
|
||||||
background-color: $tooltip-bg;
|
|
||||||
@include border-radius($border-radius);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Arrows
|
|
||||||
.tooltip-arrow {
|
|
||||||
position: absolute;
|
|
||||||
width: 0;
|
|
||||||
height: 0;
|
|
||||||
border-color: transparent;
|
|
||||||
border-style: solid;
|
|
||||||
}
|
|
|
@ -1,150 +0,0 @@
|
||||||
//
|
|
||||||
// Headings
|
|
||||||
//
|
|
||||||
|
|
||||||
h1, h2, h3, h4, h5, h6,
|
|
||||||
.h1, .h2, .h3, .h4, .h5, .h6 {
|
|
||||||
margin-bottom: $headings-margin-bottom;
|
|
||||||
font-family: $headings-font-family;
|
|
||||||
font-weight: $headings-font-weight;
|
|
||||||
line-height: $headings-line-height;
|
|
||||||
color: $headings-color;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1, .h1 { font-size: $font-size-h1; }
|
|
||||||
h2, .h2 { font-size: $font-size-h2; }
|
|
||||||
h3, .h3 { font-size: $font-size-h3; }
|
|
||||||
h4, .h4 { font-size: $font-size-h4; }
|
|
||||||
h5, .h5 { font-size: $font-size-h5; }
|
|
||||||
h6, .h6 { font-size: $font-size-h6; }
|
|
||||||
|
|
||||||
.lead {
|
|
||||||
font-size: $lead-font-size;
|
|
||||||
font-weight: $lead-font-weight;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Type display classes
|
|
||||||
.display-1 {
|
|
||||||
font-size: $display1-size;
|
|
||||||
font-weight: $display1-weight;
|
|
||||||
}
|
|
||||||
.display-2 {
|
|
||||||
font-size: $display2-size;
|
|
||||||
font-weight: $display2-weight;
|
|
||||||
}
|
|
||||||
.display-3 {
|
|
||||||
font-size: $display3-size;
|
|
||||||
font-weight: $display3-weight;
|
|
||||||
}
|
|
||||||
.display-4 {
|
|
||||||
font-size: $display4-size;
|
|
||||||
font-weight: $display4-weight;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Horizontal rules
|
|
||||||
//
|
|
||||||
|
|
||||||
hr {
|
|
||||||
margin-top: $spacer-y;
|
|
||||||
margin-bottom: $spacer-y;
|
|
||||||
border: 0;
|
|
||||||
border-top: $hr-border-width solid $hr-border-color;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Emphasis
|
|
||||||
//
|
|
||||||
|
|
||||||
small,
|
|
||||||
.small {
|
|
||||||
font-size: $small-font-size;
|
|
||||||
font-weight: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
mark,
|
|
||||||
.mark {
|
|
||||||
padding: $mark-padding;
|
|
||||||
background-color: $mark-bg;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Lists
|
|
||||||
//
|
|
||||||
|
|
||||||
.list-unstyled {
|
|
||||||
@include list-unstyled;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Inline turns list items into inline-block
|
|
||||||
.list-inline {
|
|
||||||
@include list-unstyled;
|
|
||||||
}
|
|
||||||
.list-inline-item {
|
|
||||||
display: inline-block;
|
|
||||||
|
|
||||||
&:not(:last-child) {
|
|
||||||
margin-right: $list-inline-padding;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Misc
|
|
||||||
//
|
|
||||||
|
|
||||||
// Builds on `abbr`
|
|
||||||
.initialism {
|
|
||||||
font-size: 90%;
|
|
||||||
text-transform: uppercase;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Blockquotes
|
|
||||||
.blockquote {
|
|
||||||
padding: ($spacer / 2) $spacer;
|
|
||||||
margin-bottom: $spacer;
|
|
||||||
font-size: $blockquote-font-size;
|
|
||||||
border-left: $blockquote-border-width solid $blockquote-border-color;
|
|
||||||
}
|
|
||||||
|
|
||||||
.blockquote-footer {
|
|
||||||
display: block;
|
|
||||||
font-size: 80%; // back to default font-size
|
|
||||||
color: $blockquote-small-color;
|
|
||||||
|
|
||||||
&::before {
|
|
||||||
content: "\2014 \00A0"; // em dash, nbsp
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Opposite alignment of blockquote
|
|
||||||
.blockquote-reverse {
|
|
||||||
padding-right: $spacer;
|
|
||||||
padding-left: 0;
|
|
||||||
text-align: right;
|
|
||||||
border-right: $blockquote-border-width solid $blockquote-border-color;
|
|
||||||
border-left: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.blockquote-reverse .blockquote-footer {
|
|
||||||
&::before {
|
|
||||||
content: "";
|
|
||||||
}
|
|
||||||
&::after {
|
|
||||||
content: "\00A0 \2014"; // nbsp, em dash
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@if not $enable-flex {
|
|
||||||
// Clean up some horizontal `<dl>`s built with grids
|
|
||||||
// scss-lint:disable QualifyingElement
|
|
||||||
dl.row {
|
|
||||||
> dd + dt {
|
|
||||||
clear: left;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// scss-lint:enable QualifyingElement
|
|
||||||
}
|
|
|
@ -1,24 +0,0 @@
|
||||||
//
|
|
||||||
// Contextual backgrounds
|
|
||||||
//
|
|
||||||
|
|
||||||
// Inverse
|
|
||||||
// TODO: redo this as a proper class
|
|
||||||
.bg-inverse {
|
|
||||||
color: $gray-lighter;
|
|
||||||
background-color: $gray-dark;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bg-faded {
|
|
||||||
background-color: $gray-lightest;
|
|
||||||
}
|
|
||||||
|
|
||||||
@include bg-variant('.bg-primary', $brand-primary);
|
|
||||||
|
|
||||||
@include bg-variant('.bg-success', $brand-success);
|
|
||||||
|
|
||||||
@include bg-variant('.bg-info', $brand-info);
|
|
||||||
|
|
||||||
@include bg-variant('.bg-warning', $brand-warning);
|
|
||||||
|
|
||||||
@include bg-variant('.bg-danger', $brand-danger);
|
|
|
@ -1,49 +0,0 @@
|
||||||
//
|
|
||||||
// Responsive utilities
|
|
||||||
//
|
|
||||||
|
|
||||||
@each $bp in map-keys($grid-breakpoints) {
|
|
||||||
.hidden-#{$bp}-up {
|
|
||||||
@include media-breakpoint-up($bp) {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.hidden-#{$bp}-down {
|
|
||||||
@include media-breakpoint-down($bp) {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Print utilities
|
|
||||||
//
|
|
||||||
// Media queries are placed on the inside to be mixin-friendly.
|
|
||||||
|
|
||||||
.visible-print-block {
|
|
||||||
display: none !important;
|
|
||||||
|
|
||||||
@media print {
|
|
||||||
display: block !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.visible-print-inline {
|
|
||||||
display: none !important;
|
|
||||||
|
|
||||||
@media print {
|
|
||||||
display: inline !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.visible-print-inline-block {
|
|
||||||
display: none !important;
|
|
||||||
|
|
||||||
@media print {
|
|
||||||
display: inline-block !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.hidden-print {
|
|
||||||
@media print {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,39 +0,0 @@
|
||||||
// Margin and Padding
|
|
||||||
|
|
||||||
.m-x-auto {
|
|
||||||
margin-right: auto !important;
|
|
||||||
margin-left: auto !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
@each $prop, $abbrev in (margin: m, padding: p) {
|
|
||||||
@each $size, $lengths in $spacers {
|
|
||||||
$length-x: map-get($lengths, x);
|
|
||||||
$length-y: map-get($lengths, y);
|
|
||||||
|
|
||||||
.#{$abbrev}-a-#{$size} { #{$prop}: $length-y $length-x !important; } // a = All sides
|
|
||||||
.#{$abbrev}-t-#{$size} { #{$prop}-top: $length-y !important; }
|
|
||||||
.#{$abbrev}-r-#{$size} { #{$prop}-right: $length-x !important; }
|
|
||||||
.#{$abbrev}-b-#{$size} { #{$prop}-bottom: $length-y !important; }
|
|
||||||
.#{$abbrev}-l-#{$size} { #{$prop}-left: $length-x !important; }
|
|
||||||
|
|
||||||
// Axes
|
|
||||||
.#{$abbrev}-x-#{$size} {
|
|
||||||
#{$prop}-right: $length-x !important;
|
|
||||||
#{$prop}-left: $length-x !important;
|
|
||||||
}
|
|
||||||
.#{$abbrev}-y-#{$size} {
|
|
||||||
#{$prop}-top: $length-y !important;
|
|
||||||
#{$prop}-bottom: $length-y !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Positioning
|
|
||||||
|
|
||||||
.pos-f-t {
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
right: 0;
|
|
||||||
left: 0;
|
|
||||||
z-index: $zindex-navbar-fixed;
|
|
||||||
}
|
|
|
@ -1,9 +0,0 @@
|
||||||
@import "utilities/background";
|
|
||||||
@import "utilities/clearfix";
|
|
||||||
@import "utilities/display";
|
|
||||||
@import "utilities/flex";
|
|
||||||
@import "utilities/pulls";
|
|
||||||
@import "utilities/screenreaders";
|
|
||||||
@import "utilities/spacing";
|
|
||||||
@import "utilities/text";
|
|
||||||
@import "utilities/visibility";
|
|
|
@ -1,829 +0,0 @@
|
||||||
// Variables
|
|
||||||
//
|
|
||||||
// Copy settings from this file into the provided `_custom.scss` to override
|
|
||||||
// the Bootstrap defaults without modifying key, versioned files.
|
|
||||||
|
|
||||||
|
|
||||||
// Table of Contents
|
|
||||||
//
|
|
||||||
// Colors
|
|
||||||
// Options
|
|
||||||
// Spacing
|
|
||||||
// Body
|
|
||||||
// Links
|
|
||||||
// Grid breakpoints
|
|
||||||
// Grid containers
|
|
||||||
// Grid columns
|
|
||||||
// Fonts
|
|
||||||
// Components
|
|
||||||
|
|
||||||
@mixin _assert-ascending($map, $map-name) {
|
|
||||||
$prev-key: null;
|
|
||||||
$prev-num: null;
|
|
||||||
@each $key, $num in $map {
|
|
||||||
@if $prev-num == null {
|
|
||||||
// Do nothing
|
|
||||||
} @else if not comparable($prev-num, $num) {
|
|
||||||
@warn "Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !";
|
|
||||||
} @else if $prev-num >= $num {
|
|
||||||
@warn "Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !";
|
|
||||||
}
|
|
||||||
$prev-key: $key;
|
|
||||||
$prev-num: $num;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// General variable structure
|
|
||||||
//
|
|
||||||
// Variable format should follow the `$component-modifier-state-property` order.
|
|
||||||
|
|
||||||
|
|
||||||
// Colors
|
|
||||||
//
|
|
||||||
// Grayscale and brand colors for use across Bootstrap.
|
|
||||||
|
|
||||||
$gray-dark: #373a3c !default;
|
|
||||||
$gray: #55595c !default;
|
|
||||||
$gray-light: #818a91 !default;
|
|
||||||
$gray-lighter: #eceeef !default;
|
|
||||||
$gray-lightest: #f7f7f9 !default;
|
|
||||||
|
|
||||||
$brand-primary: #0275d8 !default;
|
|
||||||
$brand-success: #5cb85c !default;
|
|
||||||
$brand-info: #5bc0de !default;
|
|
||||||
$brand-warning: #f0ad4e !default;
|
|
||||||
$brand-danger: #d9534f !default;
|
|
||||||
$brand-inverse: $gray-dark !default;
|
|
||||||
|
|
||||||
|
|
||||||
// Options
|
|
||||||
//
|
|
||||||
// Quickly modify global styling by enabling or disabling optional features.
|
|
||||||
|
|
||||||
$enable-flex: false !default;
|
|
||||||
$enable-rounded: true !default;
|
|
||||||
$enable-shadows: false !default;
|
|
||||||
$enable-gradients: false !default;
|
|
||||||
$enable-transitions: false !default;
|
|
||||||
$enable-hover-media-query: false !default;
|
|
||||||
$enable-grid-classes: true !default;
|
|
||||||
$enable-print-styles: true !default;
|
|
||||||
|
|
||||||
|
|
||||||
// Spacing
|
|
||||||
//
|
|
||||||
// Control the default styling of most Bootstrap elements by modifying these
|
|
||||||
// variables. Mostly focused on spacing.
|
|
||||||
// You can add more entries to the $spacers map, should you need more variation.
|
|
||||||
|
|
||||||
$spacer: 1rem !default;
|
|
||||||
$spacer-x: $spacer !default;
|
|
||||||
$spacer-y: $spacer !default;
|
|
||||||
$spacers: (
|
|
||||||
0: (
|
|
||||||
x: 0,
|
|
||||||
y: 0
|
|
||||||
),
|
|
||||||
1: (
|
|
||||||
x: $spacer-x,
|
|
||||||
y: $spacer-y
|
|
||||||
),
|
|
||||||
2: (
|
|
||||||
x: ($spacer-x * 1.5),
|
|
||||||
y: ($spacer-y * 1.5)
|
|
||||||
),
|
|
||||||
3: (
|
|
||||||
x: ($spacer-x * 3),
|
|
||||||
y: ($spacer-y * 3)
|
|
||||||
)
|
|
||||||
) !default;
|
|
||||||
$border-width: 1px !default;
|
|
||||||
|
|
||||||
|
|
||||||
// Body
|
|
||||||
//
|
|
||||||
// Settings for the `<body>` element.
|
|
||||||
|
|
||||||
$body-bg: #fff !default;
|
|
||||||
$body-color: $gray-dark !default;
|
|
||||||
|
|
||||||
|
|
||||||
// Links
|
|
||||||
//
|
|
||||||
// Style anchor elements.
|
|
||||||
|
|
||||||
$link-color: $brand-primary !default;
|
|
||||||
$link-decoration: none !default;
|
|
||||||
$link-hover-color: darken($link-color, 15%) !default;
|
|
||||||
$link-hover-decoration: underline !default;
|
|
||||||
|
|
||||||
|
|
||||||
// Grid breakpoints
|
|
||||||
//
|
|
||||||
// Define the minimum dimensions at which your layout will change,
|
|
||||||
// adapting to different screen sizes, for use in media queries.
|
|
||||||
|
|
||||||
$grid-breakpoints: (
|
|
||||||
xs: 0,
|
|
||||||
sm: 544px,
|
|
||||||
md: 768px,
|
|
||||||
lg: 992px,
|
|
||||||
xl: 1200px
|
|
||||||
) !default;
|
|
||||||
@include _assert-ascending($grid-breakpoints, "$grid-breakpoints");
|
|
||||||
|
|
||||||
|
|
||||||
// Grid containers
|
|
||||||
//
|
|
||||||
// Define the maximum width of `.container` for different screen sizes.
|
|
||||||
|
|
||||||
$container-max-widths: (
|
|
||||||
sm: 576px,
|
|
||||||
md: 720px,
|
|
||||||
lg: 940px,
|
|
||||||
xl: 1140px
|
|
||||||
) !default;
|
|
||||||
@include _assert-ascending($container-max-widths, "$container-max-widths");
|
|
||||||
|
|
||||||
|
|
||||||
// Grid columns
|
|
||||||
//
|
|
||||||
// Set the number of columns and specify the width of the gutters.
|
|
||||||
|
|
||||||
$grid-columns: 12 !default;
|
|
||||||
$grid-gutter-width: 30px !default;
|
|
||||||
|
|
||||||
|
|
||||||
// Typography
|
|
||||||
//
|
|
||||||
// Font, line-height, and color for body text, headings, and more.
|
|
||||||
|
|
||||||
$font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif !default;
|
|
||||||
$font-family-serif: Georgia, "Times New Roman", Times, serif !default;
|
|
||||||
$font-family-monospace: Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !default;
|
|
||||||
$font-family-base: $font-family-sans-serif !default;
|
|
||||||
|
|
||||||
// Pixel value used to responsively scale all typography. Applied to the `<html>` element.
|
|
||||||
$font-size-root: 16px !default;
|
|
||||||
|
|
||||||
$font-size-base: 1rem !default;
|
|
||||||
$font-size-lg: 1.25rem !default;
|
|
||||||
$font-size-sm: .875rem !default;
|
|
||||||
$font-size-xs: .75rem !default;
|
|
||||||
|
|
||||||
$line-height-base: 1.5 !default;
|
|
||||||
|
|
||||||
$font-size-h1: 2.5rem !default;
|
|
||||||
$font-size-h2: 2rem !default;
|
|
||||||
$font-size-h3: 1.75rem !default;
|
|
||||||
$font-size-h4: 1.5rem !default;
|
|
||||||
$font-size-h5: 1.25rem !default;
|
|
||||||
$font-size-h6: 1rem !default;
|
|
||||||
|
|
||||||
$display1-size: 6rem !default;
|
|
||||||
$display2-size: 5.5rem !default;
|
|
||||||
$display3-size: 4.5rem !default;
|
|
||||||
$display4-size: 3.5rem !default;
|
|
||||||
|
|
||||||
$display1-weight: 300 !default;
|
|
||||||
$display2-weight: 300 !default;
|
|
||||||
$display3-weight: 300 !default;
|
|
||||||
$display4-weight: 300 !default;
|
|
||||||
|
|
||||||
$headings-margin-bottom: ($spacer / 2) !default;
|
|
||||||
$headings-font-family: inherit !default;
|
|
||||||
$headings-font-weight: 500 !default;
|
|
||||||
$headings-line-height: 1.1 !default;
|
|
||||||
$headings-color: inherit !default;
|
|
||||||
|
|
||||||
$lead-font-size: 1.25rem !default;
|
|
||||||
$lead-font-weight: 300 !default;
|
|
||||||
|
|
||||||
$small-font-size: 80% !default;
|
|
||||||
|
|
||||||
$text-muted: $gray-light !default;
|
|
||||||
|
|
||||||
$abbr-border-color: $gray-light !default;
|
|
||||||
|
|
||||||
$blockquote-small-color: $gray-light !default;
|
|
||||||
$blockquote-font-size: ($font-size-base * 1.25) !default;
|
|
||||||
$blockquote-border-color: $gray-lighter !default;
|
|
||||||
$blockquote-border-width: .25rem !default;
|
|
||||||
|
|
||||||
$hr-border-color: rgba(0,0,0,.1) !default;
|
|
||||||
$hr-border-width: $border-width !default;
|
|
||||||
|
|
||||||
$mark-padding: .2em !default;
|
|
||||||
|
|
||||||
$dt-font-weight: bold !default;
|
|
||||||
|
|
||||||
$kbd-box-shadow: inset 0 -.1rem 0 rgba(0,0,0,.25) !default;
|
|
||||||
$nested-kbd-font-weight: bold !default;
|
|
||||||
|
|
||||||
$list-inline-padding: 5px !default;
|
|
||||||
|
|
||||||
|
|
||||||
// Components
|
|
||||||
//
|
|
||||||
// Define common padding and border radius sizes and more.
|
|
||||||
|
|
||||||
$line-height-lg: (4 / 3) !default;
|
|
||||||
$line-height-sm: 1.5 !default;
|
|
||||||
|
|
||||||
$border-radius: .25rem !default;
|
|
||||||
$border-radius-lg: .3rem !default;
|
|
||||||
$border-radius-sm: .2rem !default;
|
|
||||||
|
|
||||||
$component-active-color: #fff !default;
|
|
||||||
$component-active-bg: $brand-primary !default;
|
|
||||||
|
|
||||||
$caret-width: .3em !default;
|
|
||||||
$caret-width-lg: $caret-width !default;
|
|
||||||
|
|
||||||
|
|
||||||
// Tables
|
|
||||||
//
|
|
||||||
// Customizes the `.table` component with basic values, each used across all table variations.
|
|
||||||
|
|
||||||
$table-cell-padding: .75rem !default;
|
|
||||||
$table-sm-cell-padding: .3rem !default;
|
|
||||||
|
|
||||||
$table-bg: transparent !default;
|
|
||||||
$table-bg-accent: rgba(0,0,0,.05) !default;
|
|
||||||
$table-bg-hover: rgba(0,0,0,.075) !default;
|
|
||||||
$table-bg-active: $table-bg-hover !default;
|
|
||||||
|
|
||||||
$table-border-width: $border-width !default;
|
|
||||||
$table-border-color: $gray-lighter !default;
|
|
||||||
|
|
||||||
|
|
||||||
// Buttons
|
|
||||||
//
|
|
||||||
// For each of Bootstrap's buttons, define text, background and border color.
|
|
||||||
|
|
||||||
$btn-padding-x: 1rem !default;
|
|
||||||
$btn-padding-y: .5rem !default;
|
|
||||||
$btn-line-height: 1.25 !default;
|
|
||||||
$btn-font-weight: normal !default;
|
|
||||||
$btn-box-shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075) !default;
|
|
||||||
$btn-active-box-shadow: inset 0 3px 5px rgba(0,0,0,.125) !default;
|
|
||||||
|
|
||||||
$btn-primary-color: #fff !default;
|
|
||||||
$btn-primary-bg: $brand-primary !default;
|
|
||||||
$btn-primary-border: $btn-primary-bg !default;
|
|
||||||
|
|
||||||
$btn-secondary-color: $gray-dark !default;
|
|
||||||
$btn-secondary-bg: #fff !default;
|
|
||||||
$btn-secondary-border: #ccc !default;
|
|
||||||
|
|
||||||
$btn-info-color: #fff !default;
|
|
||||||
$btn-info-bg: $brand-info !default;
|
|
||||||
$btn-info-border: $btn-info-bg !default;
|
|
||||||
|
|
||||||
$btn-success-color: #fff !default;
|
|
||||||
$btn-success-bg: $brand-success !default;
|
|
||||||
$btn-success-border: $btn-success-bg !default;
|
|
||||||
|
|
||||||
$btn-warning-color: #fff !default;
|
|
||||||
$btn-warning-bg: $brand-warning !default;
|
|
||||||
$btn-warning-border: $btn-warning-bg !default;
|
|
||||||
|
|
||||||
$btn-danger-color: #fff !default;
|
|
||||||
$btn-danger-bg: $brand-danger !default;
|
|
||||||
$btn-danger-border: $btn-danger-bg !default;
|
|
||||||
|
|
||||||
$btn-link-disabled-color: $gray-light !default;
|
|
||||||
|
|
||||||
$btn-padding-x-sm: .5rem !default;
|
|
||||||
$btn-padding-y-sm: .25rem !default;
|
|
||||||
|
|
||||||
$btn-padding-x-lg: 1.5rem !default;
|
|
||||||
$btn-padding-y-lg: .75rem !default;
|
|
||||||
|
|
||||||
$btn-block-spacing-y: .5rem !default;
|
|
||||||
$btn-toolbar-margin: .5rem !default;
|
|
||||||
|
|
||||||
// Allows for customizing button radius independently from global border radius
|
|
||||||
$btn-border-radius: $border-radius !default;
|
|
||||||
$btn-border-radius-lg: $border-radius-lg !default;
|
|
||||||
$btn-border-radius-sm: $border-radius-sm !default;
|
|
||||||
|
|
||||||
|
|
||||||
// Forms
|
|
||||||
|
|
||||||
$input-padding-x: .75rem !default;
|
|
||||||
$input-padding-y: .5rem !default;
|
|
||||||
$input-line-height: 1.25 !default;
|
|
||||||
|
|
||||||
$input-bg: #fff !default;
|
|
||||||
$input-bg-disabled: $gray-lighter !default;
|
|
||||||
|
|
||||||
$input-color: $gray !default;
|
|
||||||
$input-border-color: rgba(0,0,0,.15) !default;
|
|
||||||
$input-btn-border-width: $border-width !default; // For form controls and buttons
|
|
||||||
$input-box-shadow: inset 0 1px 1px rgba(0,0,0,.075) !default;
|
|
||||||
|
|
||||||
$input-border-radius: $border-radius !default;
|
|
||||||
$input-border-radius-lg: $border-radius-lg !default;
|
|
||||||
$input-border-radius-sm: $border-radius-sm !default;
|
|
||||||
|
|
||||||
$input-bg-focus: $input-bg;
|
|
||||||
$input-border-focus: #66afe9 !default;
|
|
||||||
$input-box-shadow-focus: rgba(102,175,233,.6) !default;
|
|
||||||
$input-color-focus: $input-color;
|
|
||||||
|
|
||||||
$input-color-placeholder: #999 !default;
|
|
||||||
|
|
||||||
$input-padding-x-sm: .5rem !default;
|
|
||||||
$input-padding-y-sm: .25rem !default;
|
|
||||||
|
|
||||||
$input-padding-x-lg: 1.5rem !default;
|
|
||||||
$input-padding-y-lg: .75rem !default;
|
|
||||||
|
|
||||||
$input-height: (($font-size-base * $line-height-base) + ($input-padding-y * 2)) !default;
|
|
||||||
$input-height-lg: (($font-size-lg * $line-height-lg) + ($input-padding-y-lg * 2)) !default;
|
|
||||||
$input-height-sm: (($font-size-sm * $line-height-sm) + ($input-padding-y-sm * 2)) !default;
|
|
||||||
|
|
||||||
$form-group-margin-bottom: $spacer-y !default;
|
|
||||||
|
|
||||||
$input-group-addon-bg: $gray-lighter !default;
|
|
||||||
$input-group-addon-border-color: $input-border-color !default;
|
|
||||||
|
|
||||||
$cursor-disabled: not-allowed !default;
|
|
||||||
|
|
||||||
$custom-control-gutter: 1.5rem !default;
|
|
||||||
$custom-control-spacer-x: 1rem !default;
|
|
||||||
$custom-control-spacer-y: .25rem !default;
|
|
||||||
|
|
||||||
$custom-control-indicator-size: 1rem !default;
|
|
||||||
$custom-control-indicator-bg: #ddd !default;
|
|
||||||
$custom-control-indicator-bg-size: 50% 50% !default;
|
|
||||||
$custom-control-indicator-box-shadow: inset 0 .25rem .25rem rgba(0,0,0,.1) !default;
|
|
||||||
|
|
||||||
$custom-control-disabled-cursor: $cursor-disabled !default;
|
|
||||||
$custom-control-disabled-indicator-bg: #eee !default;
|
|
||||||
$custom-control-disabled-description-color: #767676 !default;
|
|
||||||
|
|
||||||
$custom-control-checked-indicator-color: #fff !default;
|
|
||||||
$custom-control-checked-indicator-bg: #0074d9 !default;
|
|
||||||
$custom-control-checked-indicator-box-shadow: none !default;
|
|
||||||
|
|
||||||
$custom-control-focus-indicator-box-shadow: 0 0 0 .075rem #fff, 0 0 0 .2rem #0074d9 !default;
|
|
||||||
|
|
||||||
$custom-control-active-indicator-color: #fff !default;
|
|
||||||
$custom-control-active-indicator-bg: #84c6ff !default;
|
|
||||||
$custom-control-active-indicator-box-shadow: none !default;
|
|
||||||
|
|
||||||
$custom-checkbox-radius: $border-radius !default;
|
|
||||||
$custom-checkbox-checked-icon: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E") !default;
|
|
||||||
$custom-checkbox-indeterminate-bg: #0074d9 !default;
|
|
||||||
$custom-checkbox-indeterminate-icon: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E") !default;
|
|
||||||
$custom-checkbox-indeterminate-box-shadow: none !default;
|
|
||||||
|
|
||||||
$custom-radio-radius: 50% !default;
|
|
||||||
$custom-radio-checked-icon: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E") !default;
|
|
||||||
|
|
||||||
$custom-select-padding-x: .75rem !default;
|
|
||||||
$custom-select-padding-y: .375rem !default;
|
|
||||||
$custom-select-indicator-padding: 1rem !default; // Extra padding to account for the presence of the background-image based indicator
|
|
||||||
$custom-select-color: $input-color !default;
|
|
||||||
$custom-select-disabled-color: $gray-light !default;
|
|
||||||
$custom-select-bg: #fff !default;
|
|
||||||
$custom-select-disabled-bg: $gray-lighter !default;
|
|
||||||
$custom-select-bg-size: 8px 10px !default; // In pixels because image dimensions
|
|
||||||
$custom-select-indicator: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23333' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") !default;
|
|
||||||
$custom-select-border-width: $input-btn-border-width !default;
|
|
||||||
$custom-select-border-color: $input-border-color !default;
|
|
||||||
$custom-select-border-radius: $border-radius !default;
|
|
||||||
|
|
||||||
$custom-select-focus-border-color: #51a7e8 !default;
|
|
||||||
$custom-select-focus-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .075), 0 0 5px rgba(81, 167, 232, .5) !default;
|
|
||||||
|
|
||||||
$custom-select-sm-padding-y: .2rem !default;
|
|
||||||
$custom-select-sm-font-size: 75% !default;
|
|
||||||
|
|
||||||
$custom-file-height: 2.5rem !default;
|
|
||||||
$custom-file-width: 14rem !default;
|
|
||||||
$custom-file-focus-box-shadow: 0 0 0 .075rem #fff, 0 0 0 .2rem #0074d9 !default;
|
|
||||||
|
|
||||||
$custom-file-padding-x: .5rem !default;
|
|
||||||
$custom-file-padding-y: 1rem !default;
|
|
||||||
$custom-file-line-height: 1.5 !default;
|
|
||||||
$custom-file-color: #555 !default;
|
|
||||||
$custom-file-bg: #fff !default;
|
|
||||||
$custom-file-border-width: $border-width !default;
|
|
||||||
$custom-file-border-color: #ddd !default;
|
|
||||||
$custom-file-border-radius: $border-radius !default;
|
|
||||||
$custom-file-box-shadow: inset 0 .2rem .4rem rgba(0,0,0,.05) !default;
|
|
||||||
$custom-file-button-color: $custom-file-color !default;
|
|
||||||
$custom-file-button-bg: #eee !default;
|
|
||||||
$custom-file-text: (
|
|
||||||
placeholder: (
|
|
||||||
en: "Choose file..."
|
|
||||||
),
|
|
||||||
button-label: (
|
|
||||||
en: "Browse"
|
|
||||||
)
|
|
||||||
) !default;
|
|
||||||
|
|
||||||
|
|
||||||
// Form validation icons
|
|
||||||
$form-icon-success: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%235cb85c' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E") !default;
|
|
||||||
$form-icon-warning: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23f0ad4e' d='M4.4 5.324h-.8v-2.46h.8zm0 1.42h-.8V5.89h.8zM3.76.63L.04 7.075c-.115.2.016.425.26.426h7.397c.242 0 .372-.226.258-.426C6.726 4.924 5.47 2.79 4.253.63c-.113-.174-.39-.174-.494 0z'/%3E%3C/svg%3E") !default;
|
|
||||||
$form-icon-danger: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23d9534f' viewBox='-2 -2 7 7'%3E%3Cpath stroke='%23d9534f' d='M0 0l3 3m0-3L0 3'/%3E%3Ccircle r='.5'/%3E%3Ccircle cx='3' r='.5'/%3E%3Ccircle cy='3' r='.5'/%3E%3Ccircle cx='3' cy='3' r='.5'/%3E%3C/svg%3E") !default;
|
|
||||||
|
|
||||||
|
|
||||||
// Dropdowns
|
|
||||||
//
|
|
||||||
// Dropdown menu container and contents.
|
|
||||||
|
|
||||||
$dropdown-min-width: 160px !default;
|
|
||||||
$dropdown-padding-y: 5px !default;
|
|
||||||
$dropdown-margin-top: 2px !default;
|
|
||||||
$dropdown-bg: #fff !default;
|
|
||||||
$dropdown-border-color: rgba(0,0,0,.15) !default;
|
|
||||||
$dropdown-border-width: $border-width !default;
|
|
||||||
$dropdown-divider-bg: #e5e5e5 !default;
|
|
||||||
$dropdown-box-shadow: 0 6px 12px rgba(0,0,0,.175) !default;
|
|
||||||
|
|
||||||
$dropdown-link-color: $gray-dark !default;
|
|
||||||
$dropdown-link-hover-color: darken($gray-dark, 5%) !default;
|
|
||||||
$dropdown-link-hover-bg: #f5f5f5 !default;
|
|
||||||
|
|
||||||
$dropdown-link-active-color: $component-active-color !default;
|
|
||||||
$dropdown-link-active-bg: $component-active-bg !default;
|
|
||||||
|
|
||||||
$dropdown-link-disabled-color: $gray-light !default;
|
|
||||||
|
|
||||||
$dropdown-item-padding-x: 20px !default;
|
|
||||||
|
|
||||||
$dropdown-header-color: $gray-light !default;
|
|
||||||
|
|
||||||
|
|
||||||
// Z-index master list
|
|
||||||
//
|
|
||||||
// Warning: Avoid customizing these values. They're used for a bird's eye view
|
|
||||||
// of components dependent on the z-axis and are designed to all work together.
|
|
||||||
|
|
||||||
$zindex-dropdown-backdrop: 990 !default;
|
|
||||||
$zindex-navbar: 1000 !default;
|
|
||||||
$zindex-dropdown: 1000 !default;
|
|
||||||
$zindex-popover: 1060 !default;
|
|
||||||
$zindex-tooltip: 1070 !default;
|
|
||||||
$zindex-navbar-fixed: 1030 !default;
|
|
||||||
$zindex-navbar-sticky: 1030 !default;
|
|
||||||
$zindex-modal-bg: 1040 !default;
|
|
||||||
$zindex-modal: 1050 !default;
|
|
||||||
|
|
||||||
|
|
||||||
// Navbar
|
|
||||||
|
|
||||||
$navbar-border-radius: $border-radius !default;
|
|
||||||
$navbar-padding-x: $spacer !default;
|
|
||||||
$navbar-padding-y: ($spacer / 2) !default;
|
|
||||||
$navbar-brand-padding-y: .25rem !default;
|
|
||||||
|
|
||||||
$navbar-dark-color: rgba(255,255,255,.5) !default;
|
|
||||||
$navbar-dark-hover-color: rgba(255,255,255,.75) !default;
|
|
||||||
$navbar-dark-active-color: rgba(255,255,255,1) !default;
|
|
||||||
$navbar-dark-disabled-color: rgba(255,255,255,.25) !default;
|
|
||||||
|
|
||||||
$navbar-light-color: rgba(0,0,0,.3) !default;
|
|
||||||
$navbar-light-hover-color: rgba(0,0,0,.6) !default;
|
|
||||||
$navbar-light-active-color: rgba(0,0,0,.8) !default;
|
|
||||||
$navbar-light-disabled-color: rgba(0,0,0,.15) !default;
|
|
||||||
|
|
||||||
|
|
||||||
// Navs
|
|
||||||
|
|
||||||
$nav-item-margin: .2rem !default;
|
|
||||||
$nav-item-inline-spacer: 1rem !default;
|
|
||||||
$nav-link-padding: .5em 1em !default;
|
|
||||||
$nav-link-hover-bg: $gray-lighter !default;
|
|
||||||
$nav-disabled-link-color: $gray-light !default;
|
|
||||||
$nav-disabled-link-hover-color: $gray-light !default;
|
|
||||||
$nav-disabled-link-hover-bg: transparent !default;
|
|
||||||
|
|
||||||
$nav-tabs-border-color: #ddd !default;
|
|
||||||
$nav-tabs-border-width: $border-width !default;
|
|
||||||
$nav-tabs-border-radius: $border-radius !default;
|
|
||||||
$nav-tabs-link-hover-border-color: $gray-lighter !default;
|
|
||||||
$nav-tabs-active-link-hover-color: $gray !default;
|
|
||||||
$nav-tabs-active-link-hover-bg: $body-bg !default;
|
|
||||||
$nav-tabs-active-link-hover-border-color: #ddd !default;
|
|
||||||
$nav-tabs-justified-link-border-color: #ddd !default;
|
|
||||||
$nav-tabs-justified-active-link-border-color: $body-bg !default;
|
|
||||||
|
|
||||||
$nav-pills-border-radius: $border-radius !default;
|
|
||||||
$nav-pills-active-link-color: $component-active-color !default;
|
|
||||||
$nav-pills-active-link-bg: $component-active-bg !default;
|
|
||||||
|
|
||||||
|
|
||||||
// Pagination
|
|
||||||
|
|
||||||
$pagination-padding-x: .75rem !default;
|
|
||||||
$pagination-padding-y: .5rem !default;
|
|
||||||
$pagination-padding-x-sm: .75rem !default;
|
|
||||||
$pagination-padding-y-sm: .275rem !default;
|
|
||||||
$pagination-padding-x-lg: 1.5rem !default;
|
|
||||||
$pagination-padding-y-lg: .75rem !default;
|
|
||||||
|
|
||||||
|
|
||||||
$pagination-color: $link-color !default;
|
|
||||||
$pagination-bg: #fff !default;
|
|
||||||
$pagination-border-width: $border-width !default;
|
|
||||||
$pagination-border-color: #ddd !default;
|
|
||||||
|
|
||||||
$pagination-hover-color: $link-hover-color !default;
|
|
||||||
$pagination-hover-bg: $gray-lighter !default;
|
|
||||||
$pagination-hover-border: #ddd !default;
|
|
||||||
|
|
||||||
$pagination-active-color: #fff !default;
|
|
||||||
$pagination-active-bg: $brand-primary !default;
|
|
||||||
$pagination-active-border: $brand-primary !default;
|
|
||||||
|
|
||||||
$pagination-disabled-color: $gray-light !default;
|
|
||||||
$pagination-disabled-bg: #fff !default;
|
|
||||||
$pagination-disabled-border: #ddd !default;
|
|
||||||
|
|
||||||
|
|
||||||
// Jumbotron
|
|
||||||
|
|
||||||
$jumbotron-padding: 2rem !default;
|
|
||||||
$jumbotron-bg: $gray-lighter !default;
|
|
||||||
|
|
||||||
|
|
||||||
// Form states and alerts
|
|
||||||
//
|
|
||||||
// Define colors for form feedback states and, by default, alerts.
|
|
||||||
|
|
||||||
$state-success-text: #3c763d !default;
|
|
||||||
$state-success-bg: #dff0d8 !default;
|
|
||||||
$state-success-border: darken($state-success-bg, 5%) !default;
|
|
||||||
|
|
||||||
$state-info-text: #31708f !default;
|
|
||||||
$state-info-bg: #d9edf7 !default;
|
|
||||||
$state-info-border: darken($state-info-bg, 7%) !default;
|
|
||||||
|
|
||||||
$state-warning-text: #8a6d3b !default;
|
|
||||||
$state-warning-bg: #fcf8e3 !default;
|
|
||||||
$mark-bg: $state-warning-bg !default;
|
|
||||||
$state-warning-border: darken($state-warning-bg, 5%) !default;
|
|
||||||
|
|
||||||
$state-danger-text: #a94442 !default;
|
|
||||||
$state-danger-bg: #f2dede !default;
|
|
||||||
$state-danger-border: darken($state-danger-bg, 5%) !default;
|
|
||||||
|
|
||||||
|
|
||||||
// Cards
|
|
||||||
$card-spacer-x: 1.25rem !default;
|
|
||||||
$card-spacer-y: .75rem !default;
|
|
||||||
$card-border-width: 1px !default;
|
|
||||||
$card-border-radius: $border-radius !default;
|
|
||||||
$card-border-color: rgba(0,0,0,.125) !default;
|
|
||||||
$card-border-radius-inner: $card-border-radius !default;
|
|
||||||
$card-cap-bg: #f5f5f5 !default;
|
|
||||||
$card-bg: #fff !default;
|
|
||||||
|
|
||||||
$card-link-hover-color: #fff !default;
|
|
||||||
|
|
||||||
$card-img-overlay-padding: 1.25rem !default;
|
|
||||||
|
|
||||||
$card-deck-margin: .625rem !default;
|
|
||||||
|
|
||||||
$card-columns-sm-up-column-gap: 1.25rem !default;
|
|
||||||
|
|
||||||
|
|
||||||
// Tooltips
|
|
||||||
|
|
||||||
$tooltip-max-width: 200px !default;
|
|
||||||
$tooltip-color: #fff !default;
|
|
||||||
$tooltip-bg: #000 !default;
|
|
||||||
$tooltip-opacity: .9 !default;
|
|
||||||
$tooltip-padding-y: 3px !default;
|
|
||||||
$tooltip-padding-x: 8px !default;
|
|
||||||
$tooltip-margin: 3px !default;
|
|
||||||
|
|
||||||
$tooltip-arrow-width: 5px !default;
|
|
||||||
$tooltip-arrow-color: $tooltip-bg !default;
|
|
||||||
|
|
||||||
|
|
||||||
// Popovers
|
|
||||||
|
|
||||||
$popover-inner-padding: 1px !default;
|
|
||||||
$popover-bg: #fff !default;
|
|
||||||
$popover-max-width: 276px !default;
|
|
||||||
$popover-border-width: $border-width !default;
|
|
||||||
$popover-border-color: rgba(0,0,0,.2) !default;
|
|
||||||
$popover-box-shadow: 0 5px 10px rgba(0,0,0,.2) !default;
|
|
||||||
|
|
||||||
$popover-title-bg: darken($popover-bg, 3%) !default;
|
|
||||||
$popover-title-padding-x: 14px !default;
|
|
||||||
$popover-title-padding-y: 8px !default;
|
|
||||||
|
|
||||||
$popover-content-padding-x: 14px !default;
|
|
||||||
$popover-content-padding-y: 9px !default;
|
|
||||||
|
|
||||||
$popover-arrow-width: 10px !default;
|
|
||||||
$popover-arrow-color: $popover-bg !default;
|
|
||||||
|
|
||||||
$popover-arrow-outer-width: ($popover-arrow-width + 1px) !default;
|
|
||||||
$popover-arrow-outer-color: fade-in($popover-border-color, .05) !default;
|
|
||||||
|
|
||||||
|
|
||||||
// Tags
|
|
||||||
|
|
||||||
$tag-default-bg: $gray-light !default;
|
|
||||||
$tag-primary-bg: $brand-primary !default;
|
|
||||||
$tag-success-bg: $brand-success !default;
|
|
||||||
$tag-info-bg: $brand-info !default;
|
|
||||||
$tag-warning-bg: $brand-warning !default;
|
|
||||||
$tag-danger-bg: $brand-danger !default;
|
|
||||||
|
|
||||||
$tag-color: #fff !default;
|
|
||||||
$tag-link-hover-color: #fff !default;
|
|
||||||
$tag-font-size: 75% !default;
|
|
||||||
$tag-font-weight: bold !default;
|
|
||||||
$tag-padding-x: .4em !default;
|
|
||||||
$tag-padding-y: .25em !default;
|
|
||||||
|
|
||||||
$tag-pill-padding-x: .6em !default;
|
|
||||||
// Use a higher than normal value to ensure completely rounded edges when
|
|
||||||
// customizing padding or font-size on labels.
|
|
||||||
$tag-pill-border-radius: 10rem !default;
|
|
||||||
|
|
||||||
// Modals
|
|
||||||
|
|
||||||
// Padding applied to the modal body
|
|
||||||
$modal-inner-padding: 15px !default;
|
|
||||||
|
|
||||||
$modal-dialog-margin: 10px !default;
|
|
||||||
$modal-dialog-sm-up-margin-y: 30px !default;
|
|
||||||
|
|
||||||
$modal-title-padding: 15px !default;
|
|
||||||
$modal-title-line-height: $line-height-base !default;
|
|
||||||
|
|
||||||
$modal-content-bg: #fff !default;
|
|
||||||
$modal-content-border-color: rgba(0,0,0,.2) !default;
|
|
||||||
$modal-content-border-width: $border-width !default;
|
|
||||||
$modal-content-xs-box-shadow: 0 3px 9px rgba(0,0,0,.5) !default;
|
|
||||||
$modal-content-sm-up-box-shadow: 0 5px 15px rgba(0,0,0,.5) !default;
|
|
||||||
|
|
||||||
$modal-backdrop-bg: #000 !default;
|
|
||||||
$modal-backdrop-opacity: .5 !default;
|
|
||||||
$modal-header-border-color: #e5e5e5 !default;
|
|
||||||
$modal-footer-border-color: $modal-header-border-color !default;
|
|
||||||
$modal-header-border-width: $modal-content-border-width !default;
|
|
||||||
$modal-footer-border-width: $modal-header-border-width !default;
|
|
||||||
|
|
||||||
$modal-lg: 900px !default;
|
|
||||||
$modal-md: 600px !default;
|
|
||||||
$modal-sm: 300px !default;
|
|
||||||
|
|
||||||
|
|
||||||
// Alerts
|
|
||||||
//
|
|
||||||
// Define alert colors, border radius, and padding.
|
|
||||||
|
|
||||||
$alert-padding: 15px !default;
|
|
||||||
$alert-border-radius: $border-radius !default;
|
|
||||||
$alert-link-font-weight: bold !default;
|
|
||||||
$alert-border-width: $border-width !default;
|
|
||||||
|
|
||||||
$alert-success-bg: $state-success-bg !default;
|
|
||||||
$alert-success-text: $state-success-text !default;
|
|
||||||
$alert-success-border: $state-success-border !default;
|
|
||||||
|
|
||||||
$alert-info-bg: $state-info-bg !default;
|
|
||||||
$alert-info-text: $state-info-text !default;
|
|
||||||
$alert-info-border: $state-info-border !default;
|
|
||||||
|
|
||||||
$alert-warning-bg: $state-warning-bg !default;
|
|
||||||
$alert-warning-text: $state-warning-text !default;
|
|
||||||
$alert-warning-border: $state-warning-border !default;
|
|
||||||
|
|
||||||
$alert-danger-bg: $state-danger-bg !default;
|
|
||||||
$alert-danger-text: $state-danger-text !default;
|
|
||||||
$alert-danger-border: $state-danger-border !default;
|
|
||||||
|
|
||||||
|
|
||||||
// Progress bars
|
|
||||||
|
|
||||||
$progress-bg: #eee !default;
|
|
||||||
$progress-bar-color: #0074d9 !default;
|
|
||||||
$progress-border-radius: $border-radius !default;
|
|
||||||
$progress-box-shadow: inset 0 .1rem .1rem rgba(0,0,0,.1) !default;
|
|
||||||
|
|
||||||
$progress-bar-bg: $brand-primary !default;
|
|
||||||
$progress-bar-success-bg: $brand-success !default;
|
|
||||||
$progress-bar-warning-bg: $brand-warning !default;
|
|
||||||
$progress-bar-danger-bg: $brand-danger !default;
|
|
||||||
$progress-bar-info-bg: $brand-info !default;
|
|
||||||
|
|
||||||
|
|
||||||
// List group
|
|
||||||
|
|
||||||
$list-group-bg: #fff !default;
|
|
||||||
$list-group-border-color: #ddd !default;
|
|
||||||
$list-group-border-width: $border-width !default;
|
|
||||||
$list-group-border-radius: $border-radius !default;
|
|
||||||
|
|
||||||
$list-group-hover-bg: #f5f5f5 !default;
|
|
||||||
$list-group-active-color: $component-active-color !default;
|
|
||||||
$list-group-active-bg: $component-active-bg !default;
|
|
||||||
$list-group-active-border: $list-group-active-bg !default;
|
|
||||||
$list-group-active-text-color: lighten($list-group-active-bg, 40%) !default;
|
|
||||||
|
|
||||||
$list-group-disabled-color: $gray-light !default;
|
|
||||||
$list-group-disabled-bg: $gray-lighter !default;
|
|
||||||
$list-group-disabled-text-color: $list-group-disabled-color !default;
|
|
||||||
|
|
||||||
$list-group-link-color: #555 !default;
|
|
||||||
$list-group-link-hover-color: $list-group-link-color !default;
|
|
||||||
$list-group-link-heading-color: #333 !default;
|
|
||||||
|
|
||||||
$list-group-item-padding-x: 1.25rem !default;
|
|
||||||
$list-group-item-padding-y: .75rem !default;
|
|
||||||
$list-group-item-heading-margin-bottom: 5px !default;
|
|
||||||
|
|
||||||
|
|
||||||
// Image thumbnails
|
|
||||||
|
|
||||||
$thumbnail-padding: .25rem !default;
|
|
||||||
$thumbnail-bg: $body-bg !default;
|
|
||||||
$thumbnail-border-width: $border-width !default;
|
|
||||||
$thumbnail-border-color: #ddd !default;
|
|
||||||
$thumbnail-border-radius: $border-radius !default;
|
|
||||||
$thumbnail-box-shadow: 0 1px 2px rgba(0,0,0,.075) !default;
|
|
||||||
|
|
||||||
|
|
||||||
// Figures
|
|
||||||
|
|
||||||
$figure-caption-font-size: 90% !default;
|
|
||||||
|
|
||||||
|
|
||||||
// Breadcrumbs
|
|
||||||
|
|
||||||
$breadcrumb-padding-y: .75rem !default;
|
|
||||||
$breadcrumb-padding-x: 1rem !default;
|
|
||||||
$breadcrumb-item-padding: .5rem !default;
|
|
||||||
|
|
||||||
$breadcrumb-bg: $gray-lighter !default;
|
|
||||||
$breadcrumb-divider-color: $gray-light !default;
|
|
||||||
$breadcrumb-active-color: $gray-light !default;
|
|
||||||
$breadcrumb-divider: "/" !default;
|
|
||||||
|
|
||||||
|
|
||||||
// Media objects
|
|
||||||
|
|
||||||
$media-margin-top: 15px !default;
|
|
||||||
$media-heading-margin-bottom: 5px !default;
|
|
||||||
$media-alignment-padding-x: 10px !default;
|
|
||||||
|
|
||||||
|
|
||||||
// Carousel
|
|
||||||
|
|
||||||
$carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6) !default;
|
|
||||||
|
|
||||||
$carousel-control-color: #fff !default;
|
|
||||||
$carousel-control-width: 15% !default;
|
|
||||||
$carousel-control-sm-up-size: 30px !default;
|
|
||||||
$carousel-control-opacity: .5 !default;
|
|
||||||
$carousel-control-font-size: 20px !default;
|
|
||||||
|
|
||||||
$carousel-indicators-width: 60% !default;
|
|
||||||
|
|
||||||
$carousel-indicator-size: 10px !default;
|
|
||||||
$carousel-indicator-active-size: 12px !default;
|
|
||||||
$carousel-indicator-active-bg: #fff !default;
|
|
||||||
$carousel-indicator-border-color: #fff !default;
|
|
||||||
|
|
||||||
$carousel-caption-width: 70% !default;
|
|
||||||
$carousel-caption-sm-up-width: 60% !default;
|
|
||||||
$carousel-caption-color: #fff !default;
|
|
||||||
|
|
||||||
$carousel-icon-width: 20px !default;
|
|
||||||
|
|
||||||
|
|
||||||
// Close
|
|
||||||
|
|
||||||
$close-font-weight: bold !default;
|
|
||||||
$close-color: #000 !default;
|
|
||||||
$close-text-shadow: 0 1px 0 #fff !default;
|
|
||||||
|
|
||||||
|
|
||||||
// Code
|
|
||||||
|
|
||||||
$code-font-size: 90% !default;
|
|
||||||
$code-padding-x: .4rem !default;
|
|
||||||
$code-padding-y: .2rem !default;
|
|
||||||
$code-color: #bd4147 !default;
|
|
||||||
$code-bg: #f7f7f9 !default;
|
|
||||||
|
|
||||||
$kbd-color: #fff !default;
|
|
||||||
$kbd-bg: #333 !default;
|
|
||||||
|
|
||||||
$pre-bg: #f7f7f9 !default;
|
|
||||||
$pre-color: $gray-dark !default;
|
|
||||||
$pre-border-color: #ccc !default;
|
|
||||||
$pre-scrollable-max-height: 340px !default;
|
|
|
@ -1,8 +0,0 @@
|
||||||
// Bootstrap with Flexbox enabled
|
|
||||||
//
|
|
||||||
// Includes all the imports from the standard Bootstrap project, but enables
|
|
||||||
// the flexbox variable.
|
|
||||||
|
|
||||||
$enable-flex: true;
|
|
||||||
|
|
||||||
@import "bootstrap";
|
|
|
@ -1,23 +0,0 @@
|
||||||
// Bootstrap Grid only
|
|
||||||
//
|
|
||||||
// Includes relevant variables and mixins for the regular (non-flexbox) grid
|
|
||||||
// system, as well as the generated predefined classes (e.g., `.col-4-sm`).
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Variables
|
|
||||||
//
|
|
||||||
|
|
||||||
@import "custom";
|
|
||||||
@import "variables";
|
|
||||||
|
|
||||||
//
|
|
||||||
// Grid mixins
|
|
||||||
//
|
|
||||||
|
|
||||||
@import "mixins/clearfix";
|
|
||||||
@import "mixins/breakpoints";
|
|
||||||
@import "mixins/grid-framework";
|
|
||||||
@import "mixins/grid";
|
|
||||||
|
|
||||||
@import "grid";
|
|
|
@ -1,11 +0,0 @@
|
||||||
// Bootstrap Reboot only
|
|
||||||
//
|
|
||||||
// Includes only Normalize and our custom Reboot reset.
|
|
||||||
|
|
||||||
@import "custom";
|
|
||||||
@import "variables";
|
|
||||||
@import "mixins/hover";
|
|
||||||
@import "mixins/tab-focus";
|
|
||||||
|
|
||||||
@import "normalize";
|
|
||||||
@import "reboot";
|
|
|
@ -1,54 +0,0 @@
|
||||||
/*!
|
|
||||||
* Bootstrap v4.0.0-alpha.3 (http://getbootstrap.com)
|
|
||||||
* Copyright 2011-2016 The Bootstrap Authors
|
|
||||||
* Copyright 2011-2016 Twitter, Inc.
|
|
||||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Core variables and mixins
|
|
||||||
@import "custom";
|
|
||||||
@import "variables";
|
|
||||||
@import "mixins";
|
|
||||||
|
|
||||||
// Reset and dependencies
|
|
||||||
@import "normalize";
|
|
||||||
@import "print";
|
|
||||||
|
|
||||||
// Core CSS
|
|
||||||
@import "reboot";
|
|
||||||
@import "type";
|
|
||||||
@import "images";
|
|
||||||
@import "code";
|
|
||||||
@import "grid";
|
|
||||||
@import "tables";
|
|
||||||
@import "forms";
|
|
||||||
@import "buttons";
|
|
||||||
|
|
||||||
// Components
|
|
||||||
@import "animation";
|
|
||||||
@import "dropdown";
|
|
||||||
@import "button-group";
|
|
||||||
@import "input-group";
|
|
||||||
@import "custom-forms";
|
|
||||||
@import "nav";
|
|
||||||
@import "navbar";
|
|
||||||
@import "card";
|
|
||||||
@import "breadcrumb";
|
|
||||||
@import "pagination";
|
|
||||||
@import "tags";
|
|
||||||
@import "jumbotron";
|
|
||||||
@import "alert";
|
|
||||||
@import "progress";
|
|
||||||
@import "media";
|
|
||||||
@import "list-group";
|
|
||||||
@import "responsive-embed";
|
|
||||||
@import "close";
|
|
||||||
|
|
||||||
// Components w/ JavaScript
|
|
||||||
@import "modal";
|
|
||||||
@import "tooltip";
|
|
||||||
@import "popover";
|
|
||||||
@import "carousel";
|
|
||||||
|
|
||||||
// Utility classes
|
|
||||||
@import "utilities";
|
|
|
@ -1,14 +0,0 @@
|
||||||
// Alerts
|
|
||||||
|
|
||||||
@mixin alert-variant($background, $border, $body-color) {
|
|
||||||
background-color: $background;
|
|
||||||
border-color: $border;
|
|
||||||
color: $body-color;
|
|
||||||
|
|
||||||
hr {
|
|
||||||
border-top-color: darken($border, 5%);
|
|
||||||
}
|
|
||||||
.alert-link {
|
|
||||||
color: darken($body-color, 10%);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,13 +0,0 @@
|
||||||
// Contextual backgrounds
|
|
||||||
|
|
||||||
@mixin bg-variant($parent, $color) {
|
|
||||||
#{$parent} {
|
|
||||||
color: #fff !important;
|
|
||||||
background-color: $color !important;
|
|
||||||
}
|
|
||||||
a#{$parent} {
|
|
||||||
@include hover-focus {
|
|
||||||
background-color: darken($color, 10%) !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,35 +0,0 @@
|
||||||
// Single side border-radius
|
|
||||||
|
|
||||||
@mixin border-radius($radius: $border-radius) {
|
|
||||||
@if $enable-rounded {
|
|
||||||
border-radius: $radius;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@mixin border-top-radius($radius) {
|
|
||||||
@if $enable-rounded {
|
|
||||||
border-top-right-radius: $radius;
|
|
||||||
border-top-left-radius: $radius;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@mixin border-right-radius($radius) {
|
|
||||||
@if $enable-rounded {
|
|
||||||
border-bottom-right-radius: $radius;
|
|
||||||
border-top-right-radius: $radius;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@mixin border-bottom-radius($radius) {
|
|
||||||
@if $enable-rounded {
|
|
||||||
border-bottom-right-radius: $radius;
|
|
||||||
border-bottom-left-radius: $radius;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@mixin border-left-radius($radius) {
|
|
||||||
@if $enable-rounded {
|
|
||||||
border-bottom-left-radius: $radius;
|
|
||||||
border-top-left-radius: $radius;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,86 +0,0 @@
|
||||||
// Breakpoint viewport sizes and media queries.
|
|
||||||
//
|
|
||||||
// Breakpoints are defined as a map of (name: minimum width), order from small to large:
|
|
||||||
//
|
|
||||||
// (xs: 0, sm: 544px, md: 768px)
|
|
||||||
//
|
|
||||||
// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.
|
|
||||||
|
|
||||||
// Name of the next breakpoint, or null for the last breakpoint.
|
|
||||||
//
|
|
||||||
// >> breakpoint-next(sm)
|
|
||||||
// md
|
|
||||||
// >> breakpoint-next(sm, (xs: 0, sm: 544px, md: 768px))
|
|
||||||
// md
|
|
||||||
// >> breakpoint-next(sm, $breakpoint-names: (xs sm md))
|
|
||||||
// md
|
|
||||||
@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {
|
|
||||||
$n: index($breakpoint-names, $name);
|
|
||||||
@return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Minimum breakpoint width. Null for the smallest (first) breakpoint.
|
|
||||||
//
|
|
||||||
// >> breakpoint-min(sm, (xs: 0, sm: 544px, md: 768px))
|
|
||||||
// 544px
|
|
||||||
@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {
|
|
||||||
$min: map-get($breakpoints, $name);
|
|
||||||
@return if($min != 0, $min, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Maximum breakpoint width. Null for the largest (last) breakpoint.
|
|
||||||
// The maximum value is calculated as the minimum of the next one less 0.1.
|
|
||||||
//
|
|
||||||
// >> breakpoint-max(sm, (xs: 0, sm: 544px, md: 768px))
|
|
||||||
// 767px
|
|
||||||
@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {
|
|
||||||
$next: breakpoint-next($name, $breakpoints);
|
|
||||||
@return if($next, breakpoint-min($next, $breakpoints) - 1px, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.
|
|
||||||
// Makes the @content apply to the given breakpoint and wider.
|
|
||||||
@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {
|
|
||||||
$min: breakpoint-min($name, $breakpoints);
|
|
||||||
@if $min {
|
|
||||||
@media (min-width: $min) {
|
|
||||||
@content;
|
|
||||||
}
|
|
||||||
} @else {
|
|
||||||
@content;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Media of at most the maximum breakpoint width. No query for the largest breakpoint.
|
|
||||||
// Makes the @content apply to the given breakpoint and narrower.
|
|
||||||
@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {
|
|
||||||
$max: breakpoint-max($name, $breakpoints);
|
|
||||||
@if $max {
|
|
||||||
@media (max-width: $max) {
|
|
||||||
@content;
|
|
||||||
}
|
|
||||||
} @else {
|
|
||||||
@content;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Media between the breakpoint's minimum and maximum widths.
|
|
||||||
// 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) {
|
|
||||||
@include media-breakpoint-up($name, $breakpoints) {
|
|
||||||
@include media-breakpoint-down($name, $breakpoints) {
|
|
||||||
@content;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Media that spans multiple breakpoint widths.
|
|
||||||
// Makes the @content apply between the min and max breakpoints
|
|
||||||
@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {
|
|
||||||
@include media-breakpoint-up($lower, $breakpoints) {
|
|
||||||
@include media-breakpoint-down($upper, $breakpoints) {
|
|
||||||
@content;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,113 +0,0 @@
|
||||||
// Button variants
|
|
||||||
//
|
|
||||||
// Easily pump out default styles, as well as :hover, :focus, :active,
|
|
||||||
// and disabled options for all buttons
|
|
||||||
|
|
||||||
@mixin button-variant($color, $background, $border) {
|
|
||||||
$active-background: darken($background, 10%);
|
|
||||||
$active-border: darken($border, 12%);
|
|
||||||
|
|
||||||
color: $color;
|
|
||||||
background-color: $background;
|
|
||||||
border-color: $border;
|
|
||||||
@include box-shadow($btn-box-shadow);
|
|
||||||
|
|
||||||
@include hover {
|
|
||||||
color: $color;
|
|
||||||
background-color: $active-background;
|
|
||||||
border-color: $active-border;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:focus,
|
|
||||||
&.focus {
|
|
||||||
color: $color;
|
|
||||||
background-color: $active-background;
|
|
||||||
border-color: $active-border;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:active,
|
|
||||||
&.active,
|
|
||||||
.open > &.dropdown-toggle {
|
|
||||||
color: $color;
|
|
||||||
background-color: $active-background;
|
|
||||||
border-color: $active-border;
|
|
||||||
// Remove the gradient for the pressed/active state
|
|
||||||
background-image: none;
|
|
||||||
@include box-shadow($btn-active-box-shadow);
|
|
||||||
|
|
||||||
&:hover,
|
|
||||||
&:focus,
|
|
||||||
&.focus {
|
|
||||||
color: $color;
|
|
||||||
background-color: darken($background, 17%);
|
|
||||||
border-color: darken($border, 25%);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&.disabled,
|
|
||||||
&:disabled {
|
|
||||||
&:focus,
|
|
||||||
&.focus {
|
|
||||||
background-color: $background;
|
|
||||||
border-color: $border;
|
|
||||||
}
|
|
||||||
@include hover {
|
|
||||||
background-color: $background;
|
|
||||||
border-color: $border;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@mixin button-outline-variant($color) {
|
|
||||||
color: $color;
|
|
||||||
background-image: none;
|
|
||||||
background-color: transparent;
|
|
||||||
border-color: $color;
|
|
||||||
|
|
||||||
@include hover {
|
|
||||||
color: #fff;
|
|
||||||
background-color: $color;
|
|
||||||
border-color: $color;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:focus,
|
|
||||||
&.focus {
|
|
||||||
color: #fff;
|
|
||||||
background-color: $color;
|
|
||||||
border-color: $color;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:active,
|
|
||||||
&.active,
|
|
||||||
.open > &.dropdown-toggle {
|
|
||||||
color: #fff;
|
|
||||||
background-color: $color;
|
|
||||||
border-color: $color;
|
|
||||||
|
|
||||||
&:hover,
|
|
||||||
&:focus,
|
|
||||||
&.focus {
|
|
||||||
color: #fff;
|
|
||||||
background-color: darken($color, 17%);
|
|
||||||
border-color: darken($color, 25%);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&.disabled,
|
|
||||||
&:disabled {
|
|
||||||
&:focus,
|
|
||||||
&.focus {
|
|
||||||
border-color: lighten($color, 20%);
|
|
||||||
}
|
|
||||||
@include hover {
|
|
||||||
border-color: lighten($color, 20%);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Button sizes
|
|
||||||
@mixin button-size($padding-y, $padding-x, $font-size, $border-radius) {
|
|
||||||
padding: $padding-y $padding-x;
|
|
||||||
font-size: $font-size;
|
|
||||||
@include border-radius($border-radius);
|
|
||||||
}
|
|
|
@ -1,44 +0,0 @@
|
||||||
// Card variants
|
|
||||||
|
|
||||||
@mixin card-variant($background, $border) {
|
|
||||||
background-color: $background;
|
|
||||||
border-color: $border;
|
|
||||||
|
|
||||||
.card-header,
|
|
||||||
.card-footer {
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@mixin card-outline-variant($color) {
|
|
||||||
background-color: transparent;
|
|
||||||
border-color: $color;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Inverse text within a card for use with dark backgrounds
|
|
||||||
//
|
|
||||||
|
|
||||||
@mixin card-inverse {
|
|
||||||
.card-header,
|
|
||||||
.card-footer {
|
|
||||||
border-color: rgba(255,255,255,.2);
|
|
||||||
}
|
|
||||||
.card-header,
|
|
||||||
.card-footer,
|
|
||||||
.card-title,
|
|
||||||
.card-blockquote {
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
.card-link,
|
|
||||||
.card-text,
|
|
||||||
.card-subtitle,
|
|
||||||
.card-blockquote .blockquote-footer {
|
|
||||||
color: rgba(255,255,255,.65);
|
|
||||||
}
|
|
||||||
.card-link {
|
|
||||||
@include hover-focus {
|
|
||||||
color: $card-link-hover-color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,7 +0,0 @@
|
||||||
// Center-align a block level element
|
|
||||||
|
|
||||||
@mixin center-block() {
|
|
||||||
display: block;
|
|
||||||
margin-left: auto;
|
|
||||||
margin-right: auto;
|
|
||||||
}
|
|
|
@ -1,7 +0,0 @@
|
||||||
@mixin clearfix() {
|
|
||||||
&::after {
|
|
||||||
content: "";
|
|
||||||
display: table;
|
|
||||||
clear: both;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,92 +0,0 @@
|
||||||
// Form validation states
|
|
||||||
//
|
|
||||||
// Used in _forms.scss to generate the form validation CSS for warnings, errors,
|
|
||||||
// and successes.
|
|
||||||
|
|
||||||
@mixin form-control-validation($color) {
|
|
||||||
// Color the label and help text
|
|
||||||
.form-control-feedback,
|
|
||||||
.form-control-label,
|
|
||||||
.radio,
|
|
||||||
.checkbox,
|
|
||||||
.radio-inline,
|
|
||||||
.checkbox-inline,
|
|
||||||
&.radio label,
|
|
||||||
&.checkbox label,
|
|
||||||
&.radio-inline label,
|
|
||||||
&.checkbox-inline label,
|
|
||||||
.custom-control {
|
|
||||||
color: $color;
|
|
||||||
}
|
|
||||||
// Set the border and box shadow on specific inputs to match
|
|
||||||
.form-control {
|
|
||||||
border-color: $color;
|
|
||||||
// @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work
|
|
||||||
|
|
||||||
&:focus {
|
|
||||||
// border-color: darken($border-color, 10%);
|
|
||||||
// $shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten($border-color, 20%);
|
|
||||||
// @include box-shadow($shadow);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set validation states also for addons
|
|
||||||
.input-group-addon {
|
|
||||||
color: $color;
|
|
||||||
border-color: $color;
|
|
||||||
background-color: lighten($color, 40%);
|
|
||||||
}
|
|
||||||
// Optional feedback icon
|
|
||||||
.form-control-feedback {
|
|
||||||
color: $color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Form control focus state
|
|
||||||
//
|
|
||||||
// Generate a customized focus state and for any input with the specified color,
|
|
||||||
// which defaults to the `@input-border-focus` variable.
|
|
||||||
//
|
|
||||||
// We highly encourage you to not customize the default value, but instead use
|
|
||||||
// this to tweak colors on an as-needed basis. This aesthetic change is based on
|
|
||||||
// WebKit's default styles, but applicable to a wider range of browsers. Its
|
|
||||||
// usability and accessibility should be taken into account with any change.
|
|
||||||
//
|
|
||||||
// Example usage: change the default blue border and shadow to white for better
|
|
||||||
// contrast against a dark gray background.
|
|
||||||
@mixin form-control-focus() {
|
|
||||||
&:focus {
|
|
||||||
color: $input-color-focus;
|
|
||||||
background-color: $input-bg-focus;
|
|
||||||
border-color: $input-border-focus;
|
|
||||||
outline: none;
|
|
||||||
$shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px $input-box-shadow-focus;
|
|
||||||
@include box-shadow($shadow);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Form control sizing
|
|
||||||
//
|
|
||||||
// Relative text size, padding, and border-radii changes for form controls. For
|
|
||||||
// horizontal sizing, wrap controls in the predefined grid classes. `<select>`
|
|
||||||
// element gets special love because it's special, and that's a fact!
|
|
||||||
|
|
||||||
@mixin input-size($parent, $input-height, $padding-y, $padding-x, $font-size, $line-height, $border-radius) {
|
|
||||||
#{$parent} {
|
|
||||||
height: $input-height;
|
|
||||||
padding: $padding-y $padding-x;
|
|
||||||
font-size: $font-size;
|
|
||||||
line-height: $line-height;
|
|
||||||
@include border-radius($border-radius);
|
|
||||||
}
|
|
||||||
|
|
||||||
select#{$parent} {
|
|
||||||
height: $input-height;
|
|
||||||
line-height: $input-height;
|
|
||||||
}
|
|
||||||
|
|
||||||
textarea#{$parent},
|
|
||||||
select[multiple]#{$parent} {
|
|
||||||
height: auto;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,43 +0,0 @@
|
||||||
// Gradients
|
|
||||||
|
|
||||||
// Horizontal gradient, from left to right
|
|
||||||
//
|
|
||||||
// Creates two color stops, start and end, by specifying a color and position for each color stop.
|
|
||||||
// Color stops are not available in IE9.
|
|
||||||
@mixin gradient-x($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) {
|
|
||||||
background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=1); // IE9
|
|
||||||
}
|
|
||||||
|
|
||||||
// Vertical gradient, from top to bottom
|
|
||||||
//
|
|
||||||
// Creates two color stops, start and end, by specifying a color and position for each color stop.
|
|
||||||
// Color stops are not available in IE9.
|
|
||||||
@mixin gradient-y($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) {
|
|
||||||
background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=0); // IE9
|
|
||||||
}
|
|
||||||
|
|
||||||
@mixin gradient-directional($start-color: #555, $end-color: #333, $deg: 45deg) {
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
background-image: linear-gradient($deg, $start-color, $end-color);
|
|
||||||
}
|
|
||||||
@mixin gradient-x-three-colors($start-color: #00b3ee, $mid-color: #7a43b6, $color-stop: 50%, $end-color: #c3325f) {
|
|
||||||
background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=1); // IE9 gets no color-stop at all for proper fallback
|
|
||||||
}
|
|
||||||
@mixin gradient-y-three-colors($start-color: #00b3ee, $mid-color: #7a43b6, $color-stop: 50%, $end-color: #c3325f) {
|
|
||||||
background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=0); // IE9 gets no color-stop at all for proper fallback
|
|
||||||
}
|
|
||||||
@mixin gradient-radial($inner-color: #555, $outer-color: #333) {
|
|
||||||
background-image: radial-gradient(circle, $inner-color, $outer-color);
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
}
|
|
||||||
@mixin gradient-striped($color: rgba(255,255,255,.15), $angle: 45deg) {
|
|
||||||
background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);
|
|
||||||
}
|
|
|
@ -1,70 +0,0 @@
|
||||||
// Framework grid generation
|
|
||||||
//
|
|
||||||
// Used only by Bootstrap to generate the correct number of grid classes given
|
|
||||||
// any value of `$grid-columns`.
|
|
||||||
|
|
||||||
@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {
|
|
||||||
|
|
||||||
// Common properties for all breakpoints
|
|
||||||
%grid-column {
|
|
||||||
position: relative;
|
|
||||||
// Prevent columns from collapsing when empty
|
|
||||||
min-height: 1px;
|
|
||||||
// Inner gutter via padding
|
|
||||||
padding-right: ($gutter / 2);
|
|
||||||
padding-left: ($gutter / 2);
|
|
||||||
|
|
||||||
@if $enable-flex {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$breakpoint-counter: 0;
|
|
||||||
@each $breakpoint in map-keys($breakpoints) {
|
|
||||||
$breakpoint-counter: ($breakpoint-counter + 1);
|
|
||||||
|
|
||||||
@for $i from 1 through $columns {
|
|
||||||
.col-#{$breakpoint}-#{$i} {
|
|
||||||
@extend %grid-column;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@include media-breakpoint-up($breakpoint, $breakpoints) {
|
|
||||||
// Provide basic `.col-{bp}` classes for equal-width flexbox columns
|
|
||||||
@if $enable-flex {
|
|
||||||
.col-#{$breakpoint} {
|
|
||||||
position: relative;
|
|
||||||
flex-basis: 0;
|
|
||||||
flex-grow: 1;
|
|
||||||
max-width: 100%;
|
|
||||||
min-height: 1px;
|
|
||||||
padding-right: ($grid-gutter-width / 2);
|
|
||||||
padding-left: ($grid-gutter-width / 2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@for $i from 1 through $columns {
|
|
||||||
.col-#{$breakpoint}-#{$i} {
|
|
||||||
@include make-col($i, $columns, $gutter);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@each $modifier in (pull, push) {
|
|
||||||
@for $i from 0 through $columns {
|
|
||||||
.#{$modifier}-#{$breakpoint}-#{$i} {
|
|
||||||
@include make-col-modifier($modifier, $i, $columns)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// `$columns - 1` because offsetting by the width of an entire row isn't possible
|
|
||||||
@for $i from 0 through ($columns - 1) {
|
|
||||||
@if $breakpoint-counter != 1 or $i != 0 { // Avoid emitting useless .offset-xs-0
|
|
||||||
.offset-#{$breakpoint}-#{$i} {
|
|
||||||
@include make-col-modifier(offset, $i, $columns)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue