Merge branch '3.0.0-wip' into bs3_homepage
Conflicts: dist/css/bootstrap.min.css
13
Gruntfile.js
@ -83,6 +83,17 @@ module.exports = function(grunt) {
|
||||
},
|
||||
src: ['less/bootstrap.less'],
|
||||
dest: 'dist/css/<%= pkg.name %>.min.css'
|
||||
},
|
||||
theme: {
|
||||
src: ['less/theme.less'],
|
||||
dest: 'dist/css/<%= pkg.name %>-theme.css'
|
||||
},
|
||||
theme_min: {
|
||||
options: {
|
||||
compress: true
|
||||
},
|
||||
src: ['less/theme.less'],
|
||||
dest: 'dist/css/<%= pkg.name %>-theme.min.css'
|
||||
}
|
||||
},
|
||||
|
||||
@ -169,7 +180,7 @@ module.exports = function(grunt) {
|
||||
grunt.registerTask('dist', ['clean', 'dist-css', 'dist-js']);
|
||||
|
||||
// Default task.
|
||||
grunt.registerTask('default', ['test', 'dist']);
|
||||
grunt.registerTask('default', ['test', 'dist', 'build-customizer']);
|
||||
|
||||
// task for building customizer
|
||||
grunt.registerTask('build-customizer', 'Add scripts/less files to customizer.', function () {
|
||||
|
@ -22,6 +22,8 @@ Read the [Getting Started page](http://getbootstrap.com/getting-started/) for in
|
||||
|
||||
Have a bug or a feature request? [Please open a new issue](https://github.com/twbs/bootstrap/issues). Before opening any issue, please search for existing issues and read the [Issue Guidelines](https://github.com/necolas/issue-guidelines), written by [Nicolas Gallagher](https://github.com/necolas/).
|
||||
|
||||
You may use [this JS Bin](http://jsbin.com/aFacAf/1/edit) as a template for your bug reports.
|
||||
|
||||
|
||||
|
||||
## Documentation
|
||||
|
@ -13,7 +13,6 @@
|
||||
<script src="{{ page.base_url }}assets/js/less.js"></script>
|
||||
<script src="{{ page.base_url }}assets/js/jszip.js"></script>
|
||||
<script src="{{ page.base_url }}assets/js/uglify.js"></script>
|
||||
<script src="{{ page.base_url }}assets/js/jquery.bbq.min.js"></script>
|
||||
<script src="{{ page.base_url }}assets/js/customizer.js"></script>
|
||||
{% endif %}
|
||||
|
||||
|
@ -1,52 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Meta, title, CSS, favicons, etc. -->
|
||||
{% include header.html %}
|
||||
<!-- Place anything custom after this. -->
|
||||
</head>
|
||||
<body data-spy="scroll" data-target=".bs-sidebar">
|
||||
<a class="sr-only" href="#content">Skip navigation</a>
|
||||
|
||||
<!-- Docs master nav -->
|
||||
{% include nav-main.html %}
|
||||
|
||||
<!-- Docs page layout -->
|
||||
<div class="bs-header" id="content" role="banner">
|
||||
<div class="container">
|
||||
<h1>{{ page.title }}</h1>
|
||||
<p>{{ page.lead }}</p>
|
||||
{% include ads.html %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Callout for the old docs link -->
|
||||
{% include old-bs-docs.html %}
|
||||
|
||||
<div class="container bs-docs-container">
|
||||
<div class="col-lg-12">
|
||||
{{ content }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Footer
|
||||
================================================== -->
|
||||
<footer class="bs-footer">
|
||||
{% include social-buttons.html %}
|
||||
|
||||
<p>Designed and built with all the love in the world by <a href="http://twitter.com/mdo" target="_blank">@mdo</a> and <a href="http://twitter.com/fat" target="_blank">@fat</a>.</p>
|
||||
<p>Code licensed under <a href="http://www.apache.org/licenses/LICENSE-2.0" target="_blank">Apache License v2.0</a>, documentation under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>.</p>
|
||||
<ul class="footer-links">
|
||||
<li><a href="{{ site.blog }}">Blog</a></li>
|
||||
<li class="muted">·</li>
|
||||
<li><a href="{{ site.repo }}/issues?state=open">Issues</a></li>
|
||||
<li class="muted">·</li>
|
||||
<li><a href="{{ site.repo }}/releases">Releases</a></li>
|
||||
</ul>
|
||||
</footer>
|
||||
|
||||
<!-- JS and analytics only. -->
|
||||
{% include footer.html %}
|
||||
|
||||
</body>
|
||||
</html>
|
@ -189,6 +189,27 @@ body {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
/* Alerts */
|
||||
.bs-customizer-alert {
|
||||
position: fixed;
|
||||
top: 51px;
|
||||
left: 0;
|
||||
right: 0;
|
||||
z-index: 1030;
|
||||
padding: 15px 0;
|
||||
color: #fff;
|
||||
background-color: #d9534f;
|
||||
box-shadow: inset 0 1px 0 rgba(255,255,255,.25);
|
||||
border-bottom: 1px solid #b94441;
|
||||
}
|
||||
.bs-customizer-alert .close {
|
||||
margin-top: -2px;
|
||||
color: #fff;
|
||||
text-shadow: none;
|
||||
}
|
||||
.bs-customizer-alert p {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
|
||||
/* Docs pages and sections
|
||||
|
@ -1,6 +1,47 @@
|
||||
window.onload = function () { // wait for load in a dumb way because B-0
|
||||
var cw = '/*!\n * Bootstrap v3.0.0-rc.2\n *\n * Copyright 2013 Twitter, Inc\n * Licensed under the Apache License v2.0\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Designed and built with all the love in the world @twitter by @mdo and @fat.\n */\n\n'
|
||||
|
||||
function showError (msg, err) {
|
||||
$('<div id="bsCustomizerAlert" class="bs-customizer-alert">\
|
||||
<div class="container">\
|
||||
<a href="#bsCustomizerAlert" data-dismiss="alert" class="close pull-right">×</a>\
|
||||
<p class="bs-customizer-alert-text">' + msg + '</p>' +
|
||||
(err.extract ? '<pre class="bs-customizer-alert-extract">' + err.extract.join('\n') + '</pre>' : '') + '\
|
||||
</div>\
|
||||
</div>').appendTo('body').alert()
|
||||
throw err
|
||||
}
|
||||
|
||||
function getQueryParam(key) {
|
||||
key = key.replace(/[*+?^$.\[\]{}()|\\\/]/g, "\\$&"); // escape RegEx meta chars
|
||||
var match = location.search.match(new RegExp("[?&]"+key+"=([^&]+)(&|$)"));
|
||||
return match && decodeURIComponent(match[1].replace(/\+/g, " "));
|
||||
}
|
||||
|
||||
function createGist (configData) {
|
||||
var data = {
|
||||
"description": "Bootstrap Customizer Config",
|
||||
"public": true,
|
||||
"files": {
|
||||
"config.json": {
|
||||
"content": JSON.stringify(configData)
|
||||
}
|
||||
}
|
||||
}
|
||||
$.ajax({
|
||||
url: 'https://api.github.com/gists',
|
||||
type: 'POST',
|
||||
dataType: 'json',
|
||||
data: JSON.stringify(data)
|
||||
})
|
||||
.success(function(result) {
|
||||
history.replaceState(false, document.title, window.location.origin + window.location.pathname + '?id=' + result.id)
|
||||
})
|
||||
.error(function(err) {
|
||||
showError('<strong>Error</strong> Could not save gist file, configuration not saved.', err)
|
||||
})
|
||||
}
|
||||
|
||||
function generateUrl() {
|
||||
var vars = {}
|
||||
|
||||
@ -11,39 +52,50 @@ window.onload = function () { // wait for load in a dumb way because B-0
|
||||
|
||||
var data = {
|
||||
vars: vars,
|
||||
css: $('#less-section input:not(:checked)').map(function () { return this.value }).toArray(),
|
||||
js: $('#plugin-section input:not(:checked)').map(function () { return this.value }).toArray()
|
||||
css: $('#less-section input:checked') .map(function () { return this.value }).toArray(),
|
||||
js: $('#plugin-section input:checked').map(function () { return this.value }).toArray()
|
||||
}
|
||||
|
||||
if ($.isEmptyObject(data.vars) && !data.css.length && !data.js.length) return
|
||||
|
||||
window.location = jQuery.param.querystring('/customize/', data)
|
||||
createGist(data)
|
||||
}
|
||||
|
||||
function parseUrl() {
|
||||
var data = jQuery.deparam.querystring()
|
||||
var id = getQueryParam('id')
|
||||
|
||||
if (data.js) {
|
||||
for (var i = 0; i < data.js.length; i++) {
|
||||
var input = $('input[value="'+data.js[i]+'"]')
|
||||
input && input.prop('checked', false)
|
||||
if (!id) return
|
||||
|
||||
$.ajax({
|
||||
url: 'https://api.github.com/gists/' + id,
|
||||
type: 'GET',
|
||||
dataType: 'json'
|
||||
})
|
||||
.success(function(result) {
|
||||
var data = JSON.parse(result.files['config.json'].content)
|
||||
if (data.js) {
|
||||
$('#plugin-section input').each(function () {
|
||||
$(this).prop('checked', ~$.inArray(this.value, data.js))
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
if (data.css) {
|
||||
for (var i = 0; i < data.css.length; i++) {
|
||||
var input = $('input[value="'+data.css[i]+'"]')
|
||||
input && input.prop('checked', false)
|
||||
if (data.css) {
|
||||
$('#less-section input').each(function () {
|
||||
$(this).prop('checked', ~$.inArray(this.value, data.css))
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
if (data.vars) {
|
||||
// todo (fat): vars
|
||||
}
|
||||
if (data.vars) {
|
||||
for (var i in data.vars) {
|
||||
$('input[data-var="' + i + '"]').val(data.vars[i])
|
||||
}
|
||||
}
|
||||
})
|
||||
.error(function(err) {
|
||||
showError('Error fetching bootstrap config file', err)
|
||||
})
|
||||
}
|
||||
|
||||
function generateZip(css, js, complete) {
|
||||
if (!css && !js) return alert('you want to build nothing… o_O')
|
||||
if (!css && !js) return showError('<strong>Error</strong> No Bootstrap files selected.', new Error('no Bootstrap'))
|
||||
|
||||
var zip = new JSZip()
|
||||
|
||||
@ -62,9 +114,7 @@ window.onload = function () { // wait for load in a dumb way because B-0
|
||||
}
|
||||
|
||||
var content = zip.generate()
|
||||
|
||||
location.href = 'data:application/zip;base64,' + content
|
||||
|
||||
complete()
|
||||
}
|
||||
|
||||
@ -108,15 +158,16 @@ window.onload = function () { // wait for load in a dumb way because B-0
|
||||
, optimization: 0
|
||||
, filename: 'bootstrap.css'
|
||||
}).parse(css, function (err, tree) {
|
||||
if (err) return alert(err)
|
||||
|
||||
if (err) {
|
||||
return showError('<strong>Error</strong> Could not parse less files.', err)
|
||||
}
|
||||
result = {
|
||||
'bootstrap.css' : cw + tree.toCSS(),
|
||||
'bootstrap.min.css' : cw + tree.toCSS({ compress: true })
|
||||
}
|
||||
})
|
||||
} catch (err) {
|
||||
return alert(err)
|
||||
return showError('<strong>Error</strong> Could not parse less files.', err)
|
||||
}
|
||||
|
||||
return result
|
||||
@ -142,9 +193,7 @@ window.onload = function () { // wait for load in a dumb way because B-0
|
||||
$downloadBtn.addClass('loading')
|
||||
generateZip(generateCSS(), generateJavascript(), function () {
|
||||
$downloadBtn.removeClass('loading')
|
||||
setTimeout(function () {
|
||||
generateUrl()
|
||||
}, 1)
|
||||
setTimeout(generateUrl, 500)
|
||||
})
|
||||
})
|
||||
|
||||
@ -167,9 +216,27 @@ window.onload = function () { // wait for load in a dumb way because B-0
|
||||
inputsVariables.val('')
|
||||
})
|
||||
|
||||
try {
|
||||
parseUrl()
|
||||
} catch (e) {
|
||||
// maybe alert user that we can't parse their url
|
||||
}
|
||||
$('[data-dependencies]').on('click', function () {
|
||||
if (!$(this).is(':checked')) return
|
||||
var dependencies = this.getAttribute('data-dependencies')
|
||||
if (!dependencies) return
|
||||
dependencies = dependencies.split(',')
|
||||
for (var i = 0; i < dependencies.length; i++) {
|
||||
var dependency = $('[value="' + dependencies[i] + '"]')
|
||||
dependency && dependency.prop('checked', true)
|
||||
}
|
||||
})
|
||||
|
||||
$('[data-dependents]').on('click', function () {
|
||||
if ($(this).is(':checked')) return
|
||||
var dependents = this.getAttribute('data-dependents')
|
||||
if (!dependents) return
|
||||
dependents = dependents.split(',')
|
||||
for (var i = 0; i < dependents.length; i++) {
|
||||
var dependent = $('[value="' + dependents[i] + '"]')
|
||||
dependent && dependent.prop('checked', false)
|
||||
}
|
||||
})
|
||||
|
||||
parseUrl()
|
||||
}
|
1287
assets/js/jquery.bbq.min.js
vendored
@ -1,1287 +0,0 @@
|
||||
/*!
|
||||
* jQuery BBQ: Back Button & Query Library - v1.3pre - 8/26/2010
|
||||
* http://benalman.com/projects/jquery-bbq-plugin/
|
||||
*
|
||||
* Copyright (c) 2010 "Cowboy" Ben Alman
|
||||
* Dual licensed under the MIT and GPL licenses.
|
||||
* http://benalman.com/about/license/
|
||||
*/
|
||||
|
||||
// Script: jQuery BBQ: Back Button & Query Library
|
||||
//
|
||||
// *Version: 1.3pre, Last updated: 8/26/2010*
|
||||
//
|
||||
// Project Home - http://benalman.com/projects/jquery-bbq-plugin/
|
||||
// GitHub - http://github.com/cowboy/jquery-bbq/
|
||||
// Source - http://github.com/cowboy/jquery-bbq/raw/master/jquery.ba-bbq.js
|
||||
// (Minified) - http://github.com/cowboy/jquery-bbq/raw/master/jquery.ba-bbq.min.js (2.2kb gzipped)
|
||||
//
|
||||
// About: License
|
||||
//
|
||||
// Copyright (c) 2010 "Cowboy" Ben Alman,
|
||||
// Dual licensed under the MIT and GPL licenses.
|
||||
// http://benalman.com/about/license/
|
||||
//
|
||||
// About: Examples
|
||||
//
|
||||
// These working examples, complete with fully commented code, illustrate a few
|
||||
// ways in which this plugin can be used.
|
||||
//
|
||||
// Basic AJAX - http://benalman.com/code/projects/jquery-bbq/examples/fragment-basic/
|
||||
// Advanced AJAX - http://benalman.com/code/projects/jquery-bbq/examples/fragment-advanced/
|
||||
// jQuery UI Tabs - http://benalman.com/code/projects/jquery-bbq/examples/fragment-jquery-ui-tabs/
|
||||
// Deparam - http://benalman.com/code/projects/jquery-bbq/examples/deparam/
|
||||
//
|
||||
// About: Support and Testing
|
||||
//
|
||||
// Information about what version or versions of jQuery this plugin has been
|
||||
// tested with, what browsers it has been tested in, and where the unit tests
|
||||
// reside (so you can test it yourself).
|
||||
//
|
||||
// jQuery Versions - 1.2.6, 1.3.2, 1.4.1, 1.4.2
|
||||
// Browsers Tested - Internet Explorer 6-8, Firefox 2-4, Chrome 5-6, Safari 3.2-5,
|
||||
// Opera 9.6-10.60, iPhone 3.1, Android 1.6-2.2, BlackBerry 4.6-5.
|
||||
// Unit Tests - http://benalman.com/code/projects/jquery-bbq/unit/
|
||||
//
|
||||
// About: Release History
|
||||
//
|
||||
// 1.3pre - (8/26/2010) Integrated <jQuery hashchange event> v1.3, which adds
|
||||
// document.title and document.domain support in IE6/7, BlackBerry
|
||||
// support, better Iframe hiding for accessibility reasons, and the new
|
||||
// <jQuery.fn.hashchange> "shortcut" method. Added the
|
||||
// <jQuery.param.sorted> method which reduces the possibility of
|
||||
// extraneous hashchange event triggering. Added the
|
||||
// <jQuery.param.fragment.ajaxCrawlable> method which can be used to
|
||||
// enable Google "AJAX Crawlable mode."
|
||||
// 1.2.1 - (2/17/2010) Actually fixed the stale window.location Safari bug from
|
||||
// <jQuery hashchange event> in BBQ, which was the main reason for the
|
||||
// previous release!
|
||||
// 1.2 - (2/16/2010) Integrated <jQuery hashchange event> v1.2, which fixes a
|
||||
// Safari bug, the event can now be bound before DOM ready, and IE6/7
|
||||
// page should no longer scroll when the event is first bound. Also
|
||||
// added the <jQuery.param.fragment.noEscape> method, and reworked the
|
||||
// <hashchange event (BBQ)> internal "add" method to be compatible with
|
||||
// changes made to the jQuery 1.4.2 special events API.
|
||||
// 1.1.1 - (1/22/2010) Integrated <jQuery hashchange event> v1.1, which fixes an
|
||||
// obscure IE8 EmulateIE7 meta tag compatibility mode bug.
|
||||
// 1.1 - (1/9/2010) Broke out the jQuery BBQ event.special <hashchange event>
|
||||
// functionality into a separate plugin for users who want just the
|
||||
// basic event & back button support, without all the extra awesomeness
|
||||
// that BBQ provides. This plugin will be included as part of jQuery BBQ,
|
||||
// but also be available separately. See <jQuery hashchange event>
|
||||
// plugin for more information. Also added the <jQuery.bbq.removeState>
|
||||
// method and added additional <jQuery.deparam> examples.
|
||||
// 1.0.3 - (12/2/2009) Fixed an issue in IE 6 where location.search and
|
||||
// location.hash would report incorrectly if the hash contained the ?
|
||||
// character. Also <jQuery.param.querystring> and <jQuery.param.fragment>
|
||||
// will no longer parse params out of a URL that doesn't contain ? or #,
|
||||
// respectively.
|
||||
// 1.0.2 - (10/10/2009) Fixed an issue in IE 6/7 where the hidden IFRAME caused
|
||||
// a "This page contains both secure and nonsecure items." warning when
|
||||
// used on an https:// page.
|
||||
// 1.0.1 - (10/7/2009) Fixed an issue in IE 8. Since both "IE7" and "IE8
|
||||
// Compatibility View" modes erroneously report that the browser
|
||||
// supports the native window.onhashchange event, a slightly more
|
||||
// robust test needed to be added.
|
||||
// 1.0 - (10/2/2009) Initial release
|
||||
|
||||
(function($,window){
|
||||
'$:nomunge'; // Used by YUI compressor.
|
||||
|
||||
// Some convenient shortcuts.
|
||||
var undefined,
|
||||
aps = Array.prototype.slice,
|
||||
decode = decodeURIComponent,
|
||||
|
||||
// Method / object references.
|
||||
jq_param = $.param,
|
||||
jq_param_sorted,
|
||||
jq_param_fragment,
|
||||
jq_deparam,
|
||||
jq_deparam_fragment,
|
||||
jq_bbq = $.bbq = $.bbq || {},
|
||||
jq_bbq_pushState,
|
||||
jq_bbq_getState,
|
||||
jq_elemUrlAttr,
|
||||
special = $.event.special,
|
||||
|
||||
// Reused strings.
|
||||
str_hashchange = 'hashchange',
|
||||
str_querystring = 'querystring',
|
||||
str_fragment = 'fragment',
|
||||
str_elemUrlAttr = 'elemUrlAttr',
|
||||
str_href = 'href',
|
||||
str_src = 'src',
|
||||
|
||||
// Reused RegExp.
|
||||
re_params_querystring = /^.*\?|#.*$/g,
|
||||
re_params_fragment,
|
||||
re_fragment,
|
||||
re_no_escape,
|
||||
|
||||
ajax_crawlable,
|
||||
fragment_prefix,
|
||||
|
||||
// Used by jQuery.elemUrlAttr.
|
||||
elemUrlAttr_cache = {};
|
||||
|
||||
// A few commonly used bits, broken out to help reduce minified file size.
|
||||
|
||||
function is_string( arg ) {
|
||||
return typeof arg === 'string';
|
||||
};
|
||||
|
||||
// Why write the same function twice? Let's curry! Mmmm, curry..
|
||||
|
||||
function curry( func ) {
|
||||
var args = aps.call( arguments, 1 );
|
||||
|
||||
return function() {
|
||||
return func.apply( this, args.concat( aps.call( arguments ) ) );
|
||||
};
|
||||
};
|
||||
|
||||
// Get location.hash (or what you'd expect location.hash to be) sans any
|
||||
// leading #. Thanks for making this necessary, Firefox!
|
||||
function get_fragment( url ) {
|
||||
return url.replace( re_fragment, '$2' );
|
||||
};
|
||||
|
||||
// Get location.search (or what you'd expect location.search to be) sans any
|
||||
// leading #. Thanks for making this necessary, IE6!
|
||||
function get_querystring( url ) {
|
||||
return url.replace( /(?:^[^?#]*\?([^#]*).*$)?.*/, '$1' );
|
||||
};
|
||||
|
||||
// Section: Param (to string)
|
||||
//
|
||||
// Method: jQuery.param.querystring
|
||||
//
|
||||
// Retrieve the query string from a URL or if no arguments are passed, the
|
||||
// current window.location.href.
|
||||
//
|
||||
// Usage:
|
||||
//
|
||||
// > jQuery.param.querystring( [ url ] );
|
||||
//
|
||||
// Arguments:
|
||||
//
|
||||
// url - (String) A URL containing query string params to be parsed. If url
|
||||
// is not passed, the current window.location.href is used.
|
||||
//
|
||||
// Returns:
|
||||
//
|
||||
// (String) The parsed query string, with any leading "?" removed.
|
||||
//
|
||||
|
||||
// Method: jQuery.param.querystring (build url)
|
||||
//
|
||||
// Merge a URL, with or without pre-existing query string params, plus any
|
||||
// object, params string or URL containing query string params into a new URL.
|
||||
//
|
||||
// Usage:
|
||||
//
|
||||
// > jQuery.param.querystring( url, params [, merge_mode ] );
|
||||
//
|
||||
// Arguments:
|
||||
//
|
||||
// url - (String) A valid URL for params to be merged into. This URL may
|
||||
// contain a query string and/or fragment (hash).
|
||||
// params - (String) A params string or URL containing query string params to
|
||||
// be merged into url.
|
||||
// params - (Object) A params object to be merged into url.
|
||||
// merge_mode - (Number) Merge behavior defaults to 0 if merge_mode is not
|
||||
// specified, and is as-follows:
|
||||
//
|
||||
// * 0: params in the params argument will override any query string
|
||||
// params in url.
|
||||
// * 1: any query string params in url will override params in the params
|
||||
// argument.
|
||||
// * 2: params argument will completely replace any query string in url.
|
||||
//
|
||||
// Returns:
|
||||
//
|
||||
// (String) A URL with a urlencoded query string in the format '?a=b&c=d&e=f'.
|
||||
|
||||
// Method: jQuery.param.fragment
|
||||
//
|
||||
// Retrieve the fragment (hash) from a URL or if no arguments are passed, the
|
||||
// current window.location.href.
|
||||
//
|
||||
// Usage:
|
||||
//
|
||||
// > jQuery.param.fragment( [ url ] );
|
||||
//
|
||||
// Arguments:
|
||||
//
|
||||
// url - (String) A URL containing fragment (hash) params to be parsed. If
|
||||
// url is not passed, the current window.location.href is used.
|
||||
//
|
||||
// Returns:
|
||||
//
|
||||
// (String) The parsed fragment (hash) string, with any leading "#" removed.
|
||||
|
||||
// Method: jQuery.param.fragment (build url)
|
||||
//
|
||||
// Merge a URL, with or without pre-existing fragment (hash) params, plus any
|
||||
// object, params string or URL containing fragment (hash) params into a new
|
||||
// URL.
|
||||
//
|
||||
// Usage:
|
||||
//
|
||||
// > jQuery.param.fragment( url, params [, merge_mode ] );
|
||||
//
|
||||
// Arguments:
|
||||
//
|
||||
// url - (String) A valid URL for params to be merged into. This URL may
|
||||
// contain a query string and/or fragment (hash).
|
||||
// params - (String) A params string or URL containing fragment (hash) params
|
||||
// to be merged into url.
|
||||
// params - (Object) A params object to be merged into url.
|
||||
// merge_mode - (Number) Merge behavior defaults to 0 if merge_mode is not
|
||||
// specified, and is as-follows:
|
||||
//
|
||||
// * 0: params in the params argument will override any fragment (hash)
|
||||
// params in url.
|
||||
// * 1: any fragment (hash) params in url will override params in the
|
||||
// params argument.
|
||||
// * 2: params argument will completely replace any query string in url.
|
||||
//
|
||||
// Returns:
|
||||
//
|
||||
// (String) A URL with a urlencoded fragment (hash) in the format '#a=b&c=d&e=f'.
|
||||
|
||||
function jq_param_sub( is_fragment, get_func, url, params, merge_mode ) {
|
||||
var result,
|
||||
qs,
|
||||
matches,
|
||||
url_params,
|
||||
hash;
|
||||
|
||||
if ( params !== undefined ) {
|
||||
// Build URL by merging params into url string.
|
||||
|
||||
// matches[1] = url part that precedes params, not including trailing ?/#
|
||||
// matches[2] = params, not including leading ?/#
|
||||
// matches[3] = if in 'querystring' mode, hash including leading #, otherwise ''
|
||||
matches = url.match( is_fragment ? re_fragment : /^([^#?]*)\??([^#]*)(#?.*)/ );
|
||||
|
||||
// Get the hash if in 'querystring' mode, and it exists.
|
||||
hash = matches[3] || '';
|
||||
|
||||
if ( merge_mode === 2 && is_string( params ) ) {
|
||||
// If merge_mode is 2 and params is a string, merge the fragment / query
|
||||
// string into the URL wholesale, without converting it into an object.
|
||||
qs = params.replace( is_fragment ? re_params_fragment : re_params_querystring, '' );
|
||||
|
||||
} else {
|
||||
// Convert relevant params in url to object.
|
||||
url_params = jq_deparam( matches[2] );
|
||||
|
||||
params = is_string( params )
|
||||
|
||||
// Convert passed params string into object.
|
||||
? jq_deparam[ is_fragment ? str_fragment : str_querystring ]( params )
|
||||
|
||||
// Passed params object.
|
||||
: params;
|
||||
|
||||
qs = merge_mode === 2 ? params // passed params replace url params
|
||||
: merge_mode === 1 ? $.extend( {}, params, url_params ) // url params override passed params
|
||||
: $.extend( {}, url_params, params ); // passed params override url params
|
||||
|
||||
// Convert params object into a sorted params string.
|
||||
qs = jq_param_sorted( qs );
|
||||
|
||||
// Unescape characters specified via $.param.noEscape. Since only hash-
|
||||
// history users have requested this feature, it's only enabled for
|
||||
// fragment-related params strings.
|
||||
if ( is_fragment ) {
|
||||
qs = qs.replace( re_no_escape, decode );
|
||||
}
|
||||
}
|
||||
|
||||
// Build URL from the base url, querystring and hash. In 'querystring'
|
||||
// mode, ? is only added if a query string exists. In 'fragment' mode, #
|
||||
// is always added.
|
||||
result = matches[1] + ( is_fragment ? fragment_prefix : qs || !matches[1] ? '?' : '' ) + qs + hash;
|
||||
|
||||
} else {
|
||||
// If URL was passed in, parse params from URL string, otherwise parse
|
||||
// params from window.location.href.
|
||||
result = get_func( url !== undefined ? url : location.href );
|
||||
}
|
||||
|
||||
return result;
|
||||
};
|
||||
|
||||
jq_param[ str_querystring ] = curry( jq_param_sub, 0, get_querystring );
|
||||
jq_param[ str_fragment ] = jq_param_fragment = curry( jq_param_sub, 1, get_fragment );
|
||||
|
||||
// Method: jQuery.param.sorted
|
||||
//
|
||||
// Returns a params string equivalent to that returned by the internal
|
||||
// jQuery.param method, but sorted, which makes it suitable for use as a
|
||||
// cache key.
|
||||
//
|
||||
// For example, in most browsers jQuery.param({z:1,a:2}) returns "z=1&a=2"
|
||||
// and jQuery.param({a:2,z:1}) returns "a=2&z=1". Even though both the
|
||||
// objects being serialized and the resulting params strings are equivalent,
|
||||
// if these params strings were set into the location.hash fragment
|
||||
// sequentially, the hashchange event would be triggered unnecessarily, since
|
||||
// the strings are different (even though the data described by them is the
|
||||
// same). By sorting the params string, unecessary hashchange event triggering
|
||||
// can be avoided.
|
||||
//
|
||||
// Usage:
|
||||
//
|
||||
// > jQuery.param.sorted( obj [, traditional ] );
|
||||
//
|
||||
// Arguments:
|
||||
//
|
||||
// obj - (Object) An object to be serialized.
|
||||
// traditional - (Boolean) Params deep/shallow serialization mode. See the
|
||||
// documentation at http://api.jquery.com/jQuery.param/ for more detail.
|
||||
//
|
||||
// Returns:
|
||||
//
|
||||
// (String) A sorted params string.
|
||||
|
||||
jq_param.sorted = jq_param_sorted = function( a, traditional ) {
|
||||
var arr = [],
|
||||
obj = {};
|
||||
|
||||
$.each( jq_param( a, traditional ).split( '&' ), function(i,v){
|
||||
var key = v.replace( /(?:%5B|=).*$/, '' ),
|
||||
key_obj = obj[ key ];
|
||||
|
||||
if ( !key_obj ) {
|
||||
key_obj = obj[ key ] = [];
|
||||
arr.push( key );
|
||||
}
|
||||
|
||||
key_obj.push( v );
|
||||
});
|
||||
|
||||
return $.map( arr.sort(), function(v){
|
||||
return obj[ v ];
|
||||
}).join( '&' );
|
||||
};
|
||||
|
||||
// Method: jQuery.param.fragment.noEscape
|
||||
//
|
||||
// Specify characters that will be left unescaped when fragments are created
|
||||
// or merged using <jQuery.param.fragment>, or when the fragment is modified
|
||||
// using <jQuery.bbq.pushState>. This option only applies to serialized data
|
||||
// object fragments, and not set-as-string fragments. Does not affect the
|
||||
// query string. Defaults to ",/" (comma, forward slash).
|
||||
//
|
||||
// Note that this is considered a purely aesthetic option, and will help to
|
||||
// create URLs that "look pretty" in the address bar or bookmarks, without
|
||||
// affecting functionality in any way. That being said, be careful to not
|
||||
// unescape characters that are used as delimiters or serve a special
|
||||
// purpose, such as the "#?&=+" (octothorpe, question mark, ampersand,
|
||||
// equals, plus) characters.
|
||||
//
|
||||
// Usage:
|
||||
//
|
||||
// > jQuery.param.fragment.noEscape( [ chars ] );
|
||||
//
|
||||
// Arguments:
|
||||
//
|
||||
// chars - (String) The characters to not escape in the fragment. If
|
||||
// unspecified, defaults to empty string (escape all characters).
|
||||
//
|
||||
// Returns:
|
||||
//
|
||||
// Nothing.
|
||||
|
||||
jq_param_fragment.noEscape = function( chars ) {
|
||||
chars = chars || '';
|
||||
var arr = $.map( chars.split(''), encodeURIComponent );
|
||||
re_no_escape = new RegExp( arr.join('|'), 'g' );
|
||||
};
|
||||
|
||||
// A sensible default. These are the characters people seem to complain about
|
||||
// "uglifying up the URL" the most.
|
||||
jq_param_fragment.noEscape( ',/' );
|
||||
|
||||
// Method: jQuery.param.fragment.ajaxCrawlable
|
||||
//
|
||||
// TODO: DESCRIBE
|
||||
//
|
||||
// Usage:
|
||||
//
|
||||
// > jQuery.param.fragment.ajaxCrawlable( [ state ] );
|
||||
//
|
||||
// Arguments:
|
||||
//
|
||||
// state - (Boolean) TODO: DESCRIBE
|
||||
//
|
||||
// Returns:
|
||||
//
|
||||
// (Boolean) The current ajaxCrawlable state.
|
||||
|
||||
jq_param_fragment.ajaxCrawlable = function( state ) {
|
||||
if ( state !== undefined ) {
|
||||
if ( state ) {
|
||||
re_params_fragment = /^.*(?:#!|#)/;
|
||||
re_fragment = /^([^#]*)(?:#!|#)?(.*)$/;
|
||||
fragment_prefix = '#!';
|
||||
} else {
|
||||
re_params_fragment = /^.*#/;
|
||||
re_fragment = /^([^#]*)#?(.*)$/;
|
||||
fragment_prefix = '#';
|
||||
}
|
||||
ajax_crawlable = !!state;
|
||||
}
|
||||
|
||||
return ajax_crawlable;
|
||||
};
|
||||
|
||||
jq_param_fragment.ajaxCrawlable( 0 );
|
||||
|
||||
// Section: Deparam (from string)
|
||||
//
|
||||
// Method: jQuery.deparam
|
||||
//
|
||||
// Deserialize a params string into an object, optionally coercing numbers,
|
||||
// booleans, null and undefined values; this method is the counterpart to the
|
||||
// internal jQuery.param method.
|
||||
//
|
||||
// Usage:
|
||||
//
|
||||
// > jQuery.deparam( params [, coerce ] );
|
||||
//
|
||||
// Arguments:
|
||||
//
|
||||
// params - (String) A params string to be parsed.
|
||||
// coerce - (Boolean) If true, coerces any numbers or true, false, null, and
|
||||
// undefined to their actual value. Defaults to false if omitted.
|
||||
//
|
||||
// Returns:
|
||||
//
|
||||
// (Object) An object representing the deserialized params string.
|
||||
|
||||
$.deparam = jq_deparam = function( params, coerce ) {
|
||||
var obj = {},
|
||||
coerce_types = { 'true': !0, 'false': !1, 'null': null };
|
||||
|
||||
// Iterate over all name=value pairs.
|
||||
$.each( params.replace( /\+/g, ' ' ).split( '&' ), function(j,v){
|
||||
var param = v.split( '=' ),
|
||||
key = decode( param[0] ),
|
||||
val,
|
||||
cur = obj,
|
||||
i = 0,
|
||||
|
||||
// If key is more complex than 'foo', like 'a[]' or 'a[b][c]', split it
|
||||
// into its component parts.
|
||||
keys = key.split( '][' ),
|
||||
keys_last = keys.length - 1;
|
||||
|
||||
// If the first keys part contains [ and the last ends with ], then []
|
||||
// are correctly balanced.
|
||||
if ( /\[/.test( keys[0] ) && /\]$/.test( keys[ keys_last ] ) ) {
|
||||
// Remove the trailing ] from the last keys part.
|
||||
keys[ keys_last ] = keys[ keys_last ].replace( /\]$/, '' );
|
||||
|
||||
// Split first keys part into two parts on the [ and add them back onto
|
||||
// the beginning of the keys array.
|
||||
keys = keys.shift().split('[').concat( keys );
|
||||
|
||||
keys_last = keys.length - 1;
|
||||
} else {
|
||||
// Basic 'foo' style key.
|
||||
keys_last = 0;
|
||||
}
|
||||
|
||||
// Are we dealing with a name=value pair, or just a name?
|
||||
if ( param.length === 2 ) {
|
||||
val = decode( param[1] );
|
||||
|
||||
// Coerce values.
|
||||
if ( coerce ) {
|
||||
val = val && !isNaN(val) ? +val // number
|
||||
: val === 'undefined' ? undefined // undefined
|
||||
: coerce_types[val] !== undefined ? coerce_types[val] // true, false, null
|
||||
: val; // string
|
||||
}
|
||||
|
||||
if ( keys_last ) {
|
||||
// Complex key, build deep object structure based on a few rules:
|
||||
// * The 'cur' pointer starts at the object top-level.
|
||||
// * [] = array push (n is set to array length), [n] = array if n is
|
||||
// numeric, otherwise object.
|
||||
// * If at the last keys part, set the value.
|
||||
// * For each keys part, if the current level is undefined create an
|
||||
// object or array based on the type of the next keys part.
|
||||
// * Move the 'cur' pointer to the next level.
|
||||
// * Rinse & repeat.
|
||||
for ( ; i <= keys_last; i++ ) {
|
||||
key = keys[i] === '' ? cur.length : keys[i];
|
||||
cur = cur[key] = i < keys_last
|
||||
? cur[key] || ( keys[i+1] && isNaN( keys[i+1] ) ? {} : [] )
|
||||
: val;
|
||||
}
|
||||
|
||||
} else {
|
||||
// Simple key, even simpler rules, since only scalars and shallow
|
||||
// arrays are allowed.
|
||||
|
||||
if ( $.isArray( obj[key] ) ) {
|
||||
// val is already an array, so push on the next value.
|
||||
obj[key].push( val );
|
||||
|
||||
} else if ( obj[key] !== undefined ) {
|
||||
// val isn't an array, but since a second value has been specified,
|
||||
// convert val into an array.
|
||||
obj[key] = [ obj[key], val ];
|
||||
|
||||
} else {
|
||||
// val is a scalar.
|
||||
obj[key] = val;
|
||||
}
|
||||
}
|
||||
|
||||
} else if ( key ) {
|
||||
// No value was defined, so set something meaningful.
|
||||
obj[key] = coerce
|
||||
? undefined
|
||||
: '';
|
||||
}
|
||||
});
|
||||
|
||||
return obj;
|
||||
};
|
||||
|
||||
// Method: jQuery.deparam.querystring
|
||||
//
|
||||
// Parse the query string from a URL or the current window.location.href,
|
||||
// deserializing it into an object, optionally coercing numbers, booleans,
|
||||
// null and undefined values.
|
||||
//
|
||||
// Usage:
|
||||
//
|
||||
// > jQuery.deparam.querystring( [ url ] [, coerce ] );
|
||||
//
|
||||
// Arguments:
|
||||
//
|
||||
// url - (String) An optional params string or URL containing query string
|
||||
// params to be parsed. If url is omitted, the current
|
||||
// window.location.href is used.
|
||||
// coerce - (Boolean) If true, coerces any numbers or true, false, null, and
|
||||
// undefined to their actual value. Defaults to false if omitted.
|
||||
//
|
||||
// Returns:
|
||||
//
|
||||
// (Object) An object representing the deserialized params string.
|
||||
|
||||
// Method: jQuery.deparam.fragment
|
||||
//
|
||||
// Parse the fragment (hash) from a URL or the current window.location.href,
|
||||
// deserializing it into an object, optionally coercing numbers, booleans,
|
||||
// null and undefined values.
|
||||
//
|
||||
// Usage:
|
||||
//
|
||||
// > jQuery.deparam.fragment( [ url ] [, coerce ] );
|
||||
//
|
||||
// Arguments:
|
||||
//
|
||||
// url - (String) An optional params string or URL containing fragment (hash)
|
||||
// params to be parsed. If url is omitted, the current window.location.href
|
||||
// is used.
|
||||
// coerce - (Boolean) If true, coerces any numbers or true, false, null, and
|
||||
// undefined to their actual value. Defaults to false if omitted.
|
||||
//
|
||||
// Returns:
|
||||
//
|
||||
// (Object) An object representing the deserialized params string.
|
||||
|
||||
function jq_deparam_sub( is_fragment, url_or_params, coerce ) {
|
||||
if ( url_or_params === undefined || typeof url_or_params === 'boolean' ) {
|
||||
// url_or_params not specified.
|
||||
coerce = url_or_params;
|
||||
url_or_params = jq_param[ is_fragment ? str_fragment : str_querystring ]();
|
||||
} else {
|
||||
url_or_params = is_string( url_or_params )
|
||||
? url_or_params.replace( is_fragment ? re_params_fragment : re_params_querystring, '' )
|
||||
: url_or_params;
|
||||
}
|
||||
|
||||
return jq_deparam( url_or_params, coerce );
|
||||
};
|
||||
|
||||
jq_deparam[ str_querystring ] = curry( jq_deparam_sub, 0 );
|
||||
jq_deparam[ str_fragment ] = jq_deparam_fragment = curry( jq_deparam_sub, 1 );
|
||||
|
||||
// Section: Element manipulation
|
||||
//
|
||||
// Method: jQuery.elemUrlAttr
|
||||
//
|
||||
// Get the internal "Default URL attribute per tag" list, or augment the list
|
||||
// with additional tag-attribute pairs, in case the defaults are insufficient.
|
||||
//
|
||||
// In the <jQuery.fn.querystring> and <jQuery.fn.fragment> methods, this list
|
||||
// is used to determine which attribute contains the URL to be modified, if
|
||||
// an "attr" param is not specified.
|
||||
//
|
||||
// Default Tag-Attribute List:
|
||||
//
|
||||
// a - href
|
||||
// base - href
|
||||
// iframe - src
|
||||
// img - src
|
||||
// input - src
|
||||
// form - action
|
||||
// link - href
|
||||
// script - src
|
||||
//
|
||||
// Usage:
|
||||
//
|
||||
// > jQuery.elemUrlAttr( [ tag_attr ] );
|
||||
//
|
||||
// Arguments:
|
||||
//
|
||||
// tag_attr - (Object) An object containing a list of tag names and their
|
||||
// associated default attribute names in the format { tag: 'attr', ... } to
|
||||
// be merged into the internal tag-attribute list.
|
||||
//
|
||||
// Returns:
|
||||
//
|
||||
// (Object) An object containing all stored tag-attribute values.
|
||||
|
||||
// Only define function and set defaults if function doesn't already exist, as
|
||||
// the urlInternal plugin will provide this method as well.
|
||||
$[ str_elemUrlAttr ] || ($[ str_elemUrlAttr ] = function( obj ) {
|
||||
return $.extend( elemUrlAttr_cache, obj );
|
||||
})({
|
||||
a: str_href,
|
||||
base: str_href,
|
||||
iframe: str_src,
|
||||
img: str_src,
|
||||
input: str_src,
|
||||
form: 'action',
|
||||
link: str_href,
|
||||
script: str_src
|
||||
});
|
||||
|
||||
jq_elemUrlAttr = $[ str_elemUrlAttr ];
|
||||
|
||||
// Method: jQuery.fn.querystring
|
||||
//
|
||||
// Update URL attribute in one or more elements, merging the current URL (with
|
||||
// or without pre-existing query string params) plus any params object or
|
||||
// string into a new URL, which is then set into that attribute. Like
|
||||
// <jQuery.param.querystring (build url)>, but for all elements in a jQuery
|
||||
// collection.
|
||||
//
|
||||
// Usage:
|
||||
//
|
||||
// > jQuery('selector').querystring( [ attr, ] params [, merge_mode ] );
|
||||
//
|
||||
// Arguments:
|
||||
//
|
||||
// attr - (String) Optional name of an attribute that will contain a URL to
|
||||
// merge params or url into. See <jQuery.elemUrlAttr> for a list of default
|
||||
// attributes.
|
||||
// params - (Object) A params object to be merged into the URL attribute.
|
||||
// params - (String) A URL containing query string params, or params string
|
||||
// to be merged into the URL attribute.
|
||||
// merge_mode - (Number) Merge behavior defaults to 0 if merge_mode is not
|
||||
// specified, and is as-follows:
|
||||
//
|
||||
// * 0: params in the params argument will override any params in attr URL.
|
||||
// * 1: any params in attr URL will override params in the params argument.
|
||||
// * 2: params argument will completely replace any query string in attr
|
||||
// URL.
|
||||
//
|
||||
// Returns:
|
||||
//
|
||||
// (jQuery) The initial jQuery collection of elements, but with modified URL
|
||||
// attribute values.
|
||||
|
||||
// Method: jQuery.fn.fragment
|
||||
//
|
||||
// Update URL attribute in one or more elements, merging the current URL (with
|
||||
// or without pre-existing fragment/hash params) plus any params object or
|
||||
// string into a new URL, which is then set into that attribute. Like
|
||||
// <jQuery.param.fragment (build url)>, but for all elements in a jQuery
|
||||
// collection.
|
||||
//
|
||||
// Usage:
|
||||
//
|
||||
// > jQuery('selector').fragment( [ attr, ] params [, merge_mode ] );
|
||||
//
|
||||
// Arguments:
|
||||
//
|
||||
// attr - (String) Optional name of an attribute that will contain a URL to
|
||||
// merge params into. See <jQuery.elemUrlAttr> for a list of default
|
||||
// attributes.
|
||||
// params - (Object) A params object to be merged into the URL attribute.
|
||||
// params - (String) A URL containing fragment (hash) params, or params
|
||||
// string to be merged into the URL attribute.
|
||||
// merge_mode - (Number) Merge behavior defaults to 0 if merge_mode is not
|
||||
// specified, and is as-follows:
|
||||
//
|
||||
// * 0: params in the params argument will override any params in attr URL.
|
||||
// * 1: any params in attr URL will override params in the params argument.
|
||||
// * 2: params argument will completely replace any fragment (hash) in attr
|
||||
// URL.
|
||||
//
|
||||
// Returns:
|
||||
//
|
||||
// (jQuery) The initial jQuery collection of elements, but with modified URL
|
||||
// attribute values.
|
||||
|
||||
function jq_fn_sub( mode, force_attr, params, merge_mode ) {
|
||||
if ( !is_string( params ) && typeof params !== 'object' ) {
|
||||
// force_attr not specified.
|
||||
merge_mode = params;
|
||||
params = force_attr;
|
||||
force_attr = undefined;
|
||||
}
|
||||
|
||||
return this.each(function(){
|
||||
var that = $(this),
|
||||
|
||||
// Get attribute specified, or default specified via $.elemUrlAttr.
|
||||
attr = force_attr || jq_elemUrlAttr()[ ( this.nodeName || '' ).toLowerCase() ] || '',
|
||||
|
||||
// Get URL value.
|
||||
url = attr && that.attr( attr ) || '';
|
||||
|
||||
// Update attribute with new URL.
|
||||
that.attr( attr, jq_param[ mode ]( url, params, merge_mode ) );
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
$.fn[ str_querystring ] = curry( jq_fn_sub, str_querystring );
|
||||
$.fn[ str_fragment ] = curry( jq_fn_sub, str_fragment );
|
||||
|
||||
// Section: History, hashchange event
|
||||
//
|
||||
// Method: jQuery.bbq.pushState
|
||||
//
|
||||
// Adds a 'state' into the browser history at the current position, setting
|
||||
// location.hash and triggering any bound <hashchange event> callbacks
|
||||
// (provided the new state is different than the previous state).
|
||||
//
|
||||
// If no arguments are passed, an empty state is created, which is just a
|
||||
// shortcut for jQuery.bbq.pushState( {}, 2 ).
|
||||
//
|
||||
// Usage:
|
||||
//
|
||||
// > jQuery.bbq.pushState( [ params [, merge_mode ] ] );
|
||||
//
|
||||
// Arguments:
|
||||
//
|
||||
// params - (String) A serialized params string or a hash string beginning
|
||||
// with # to merge into location.hash.
|
||||
// params - (Object) A params object to merge into location.hash.
|
||||
// merge_mode - (Number) Merge behavior defaults to 0 if merge_mode is not
|
||||
// specified (unless a hash string beginning with # is specified, in which
|
||||
// case merge behavior defaults to 2), and is as-follows:
|
||||
//
|
||||
// * 0: params in the params argument will override any params in the
|
||||
// current state.
|
||||
// * 1: any params in the current state will override params in the params
|
||||
// argument.
|
||||
// * 2: params argument will completely replace current state.
|
||||
//
|
||||
// Returns:
|
||||
//
|
||||
// Nothing.
|
||||
//
|
||||
// Additional Notes:
|
||||
//
|
||||
// * Setting an empty state may cause the browser to scroll.
|
||||
// * Unlike the fragment and querystring methods, if a hash string beginning
|
||||
// with # is specified as the params agrument, merge_mode defaults to 2.
|
||||
|
||||
jq_bbq.pushState = jq_bbq_pushState = function( params, merge_mode ) {
|
||||
if ( is_string( params ) && /^#/.test( params ) && merge_mode === undefined ) {
|
||||
// Params string begins with # and merge_mode not specified, so completely
|
||||
// overwrite window.location.hash.
|
||||
merge_mode = 2;
|
||||
}
|
||||
|
||||
var has_args = params !== undefined,
|
||||
// Merge params into window.location using $.param.fragment.
|
||||
url = jq_param_fragment( location.href,
|
||||
has_args ? params : {}, has_args ? merge_mode : 2 );
|
||||
|
||||
// Set new window.location.href. Note that Safari 3 & Chrome barf on
|
||||
// location.hash = '#' so the entire URL is set.
|
||||
location.href = url;
|
||||
};
|
||||
|
||||
// Method: jQuery.bbq.getState
|
||||
//
|
||||
// Retrieves the current 'state' from the browser history, parsing
|
||||
// location.hash for a specific key or returning an object containing the
|
||||
// entire state, optionally coercing numbers, booleans, null and undefined
|
||||
// values.
|
||||
//
|
||||
// Usage:
|
||||
//
|
||||
// > jQuery.bbq.getState( [ key ] [, coerce ] );
|
||||
//
|
||||
// Arguments:
|
||||
//
|
||||
// key - (String) An optional state key for which to return a value.
|
||||
// coerce - (Boolean) If true, coerces any numbers or true, false, null, and
|
||||
// undefined to their actual value. Defaults to false.
|
||||
//
|
||||
// Returns:
|
||||
//
|
||||
// (Anything) If key is passed, returns the value corresponding with that key
|
||||
// in the location.hash 'state', or undefined. If not, an object
|
||||
// representing the entire 'state' is returned.
|
||||
|
||||
jq_bbq.getState = jq_bbq_getState = function( key, coerce ) {
|
||||
return key === undefined || typeof key === 'boolean'
|
||||
? jq_deparam_fragment( key ) // 'key' really means 'coerce' here
|
||||
: jq_deparam_fragment( coerce )[ key ];
|
||||
};
|
||||
|
||||
// Method: jQuery.bbq.removeState
|
||||
//
|
||||
// Remove one or more keys from the current browser history 'state', creating
|
||||
// a new state, setting location.hash and triggering any bound
|
||||
// <hashchange event> callbacks (provided the new state is different than
|
||||
// the previous state).
|
||||
//
|
||||
// If no arguments are passed, an empty state is created, which is just a
|
||||
// shortcut for jQuery.bbq.pushState( {}, 2 ).
|
||||
//
|
||||
// Usage:
|
||||
//
|
||||
// > jQuery.bbq.removeState( [ key [, key ... ] ] );
|
||||
//
|
||||
// Arguments:
|
||||
//
|
||||
// key - (String) One or more key values to remove from the current state,
|
||||
// passed as individual arguments.
|
||||
// key - (Array) A single array argument that contains a list of key values
|
||||
// to remove from the current state.
|
||||
//
|
||||
// Returns:
|
||||
//
|
||||
// Nothing.
|
||||
//
|
||||
// Additional Notes:
|
||||
//
|
||||
// * Setting an empty state may cause the browser to scroll.
|
||||
|
||||
jq_bbq.removeState = function( arr ) {
|
||||
var state = {};
|
||||
|
||||
// If one or more arguments is passed..
|
||||
if ( arr !== undefined ) {
|
||||
|
||||
// Get the current state.
|
||||
state = jq_bbq_getState();
|
||||
|
||||
// For each passed key, delete the corresponding property from the current
|
||||
// state.
|
||||
$.each( $.isArray( arr ) ? arr : arguments, function(i,v){
|
||||
delete state[ v ];
|
||||
});
|
||||
}
|
||||
|
||||
// Set the state, completely overriding any existing state.
|
||||
jq_bbq_pushState( state, 2 );
|
||||
};
|
||||
|
||||
// Event: hashchange event (BBQ)
|
||||
//
|
||||
// Usage in jQuery 1.4 and newer:
|
||||
//
|
||||
// In jQuery 1.4 and newer, the event object passed into any hashchange event
|
||||
// callback is augmented with a copy of the location.hash fragment at the time
|
||||
// the event was triggered as its event.fragment property. In addition, the
|
||||
// event.getState method operates on this property (instead of location.hash)
|
||||
// which allows this fragment-as-a-state to be referenced later, even after
|
||||
// window.location may have changed.
|
||||
//
|
||||
// Note that event.fragment and event.getState are not defined according to
|
||||
// W3C (or any other) specification, but will still be available whether or
|
||||
// not the hashchange event exists natively in the browser, because of the
|
||||
// utility they provide.
|
||||
//
|
||||
// The event.fragment property contains the output of <jQuery.param.fragment>
|
||||
// and the event.getState method is equivalent to the <jQuery.bbq.getState>
|
||||
// method.
|
||||
//
|
||||
// > $(window).bind( 'hashchange', function( event ) {
|
||||
// > var hash_str = event.fragment,
|
||||
// > param_obj = event.getState(),
|
||||
// > param_val = event.getState( 'param_name' ),
|
||||
// > param_val_coerced = event.getState( 'param_name', true );
|
||||
// > ...
|
||||
// > });
|
||||
//
|
||||
// Usage in jQuery 1.3.2:
|
||||
//
|
||||
// In jQuery 1.3.2, the event object cannot to be augmented as in jQuery 1.4+,
|
||||
// so the fragment state isn't bound to the event object and must instead be
|
||||
// parsed using the <jQuery.param.fragment> and <jQuery.bbq.getState> methods.
|
||||
//
|
||||
// > $(window).bind( 'hashchange', function( event ) {
|
||||
// > var hash_str = $.param.fragment(),
|
||||
// > param_obj = $.bbq.getState(),
|
||||
// > param_val = $.bbq.getState( 'param_name' ),
|
||||
// > param_val_coerced = $.bbq.getState( 'param_name', true );
|
||||
// > ...
|
||||
// > });
|
||||
//
|
||||
// Additional Notes:
|
||||
//
|
||||
// * Due to changes in the special events API, jQuery BBQ v1.2 or newer is
|
||||
// required to enable the augmented event object in jQuery 1.4.2 and newer.
|
||||
// * See <jQuery hashchange event> for more detailed information.
|
||||
|
||||
special[ str_hashchange ] = $.extend( special[ str_hashchange ], {
|
||||
|
||||
// Augmenting the event object with the .fragment property and .getState
|
||||
// method requires jQuery 1.4 or newer. Note: with 1.3.2, everything will
|
||||
// work, but the event won't be augmented)
|
||||
add: function( handleObj ) {
|
||||
var old_handler;
|
||||
|
||||
function new_handler(e) {
|
||||
// e.fragment is set to the value of location.hash (with any leading #
|
||||
// removed) at the time the event is triggered.
|
||||
var hash = e[ str_fragment ] = jq_param_fragment();
|
||||
|
||||
// e.getState() works just like $.bbq.getState(), but uses the
|
||||
// e.fragment property stored on the event object.
|
||||
e.getState = function( key, coerce ) {
|
||||
return key === undefined || typeof key === 'boolean'
|
||||
? jq_deparam( hash, key ) // 'key' really means 'coerce' here
|
||||
: jq_deparam( hash, coerce )[ key ];
|
||||
};
|
||||
|
||||
old_handler.apply( this, arguments );
|
||||
};
|
||||
|
||||
// This may seem a little complicated, but it normalizes the special event
|
||||
// .add method between jQuery 1.4/1.4.1 and 1.4.2+
|
||||
if ( $.isFunction( handleObj ) ) {
|
||||
// 1.4, 1.4.1
|
||||
old_handler = handleObj;
|
||||
return new_handler;
|
||||
} else {
|
||||
// 1.4.2+
|
||||
old_handler = handleObj.handler;
|
||||
handleObj.handler = new_handler;
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
})(jQuery,this);
|
||||
|
||||
/*!
|
||||
* jQuery hashchange event - v1.3 - 7/21/2010
|
||||
* http://benalman.com/projects/jquery-hashchange-plugin/
|
||||
*
|
||||
* Copyright (c) 2010 "Cowboy" Ben Alman
|
||||
* Dual licensed under the MIT and GPL licenses.
|
||||
* http://benalman.com/about/license/
|
||||
*/
|
||||
|
||||
// Script: jQuery hashchange event
|
||||
//
|
||||
// *Version: 1.3, Last updated: 7/21/2010*
|
||||
//
|
||||
// Project Home - http://benalman.com/projects/jquery-hashchange-plugin/
|
||||
// GitHub - http://github.com/cowboy/jquery-hashchange/
|
||||
// Source - http://github.com/cowboy/jquery-hashchange/raw/master/jquery.ba-hashchange.js
|
||||
// (Minified) - http://github.com/cowboy/jquery-hashchange/raw/master/jquery.ba-hashchange.min.js (0.8kb gzipped)
|
||||
//
|
||||
// About: License
|
||||
//
|
||||
// Copyright (c) 2010 "Cowboy" Ben Alman,
|
||||
// Dual licensed under the MIT and GPL licenses.
|
||||
// http://benalman.com/about/license/
|
||||
//
|
||||
// About: Examples
|
||||
//
|
||||
// These working examples, complete with fully commented code, illustrate a few
|
||||
// ways in which this plugin can be used.
|
||||
//
|
||||
// hashchange event - http://benalman.com/code/projects/jquery-hashchange/examples/hashchange/
|
||||
// document.domain - http://benalman.com/code/projects/jquery-hashchange/examples/document_domain/
|
||||
//
|
||||
// About: Support and Testing
|
||||
//
|
||||
// Information about what version or versions of jQuery this plugin has been
|
||||
// tested with, what browsers it has been tested in, and where the unit tests
|
||||
// reside (so you can test it yourself).
|
||||
//
|
||||
// jQuery Versions - 1.2.6, 1.3.2, 1.4.1, 1.4.2
|
||||
// Browsers Tested - Internet Explorer 6-8, Firefox 2-4, Chrome 5-6, Safari 3.2-5,
|
||||
// Opera 9.6-10.60, iPhone 3.1, Android 1.6-2.2, BlackBerry 4.6-5.
|
||||
// Unit Tests - http://benalman.com/code/projects/jquery-hashchange/unit/
|
||||
//
|
||||
// About: Known issues
|
||||
//
|
||||
// While this jQuery hashchange event implementation is quite stable and
|
||||
// robust, there are a few unfortunate browser bugs surrounding expected
|
||||
// hashchange event-based behaviors, independent of any JavaScript
|
||||
// window.onhashchange abstraction. See the following examples for more
|
||||
// information:
|
||||
//
|
||||
// Chrome: Back Button - http://benalman.com/code/projects/jquery-hashchange/examples/bug-chrome-back-button/
|
||||
// Firefox: Remote XMLHttpRequest - http://benalman.com/code/projects/jquery-hashchange/examples/bug-firefox-remote-xhr/
|
||||
// WebKit: Back Button in an Iframe - http://benalman.com/code/projects/jquery-hashchange/examples/bug-webkit-hash-iframe/
|
||||
// Safari: Back Button from a different domain - http://benalman.com/code/projects/jquery-hashchange/examples/bug-safari-back-from-diff-domain/
|
||||
//
|
||||
// Also note that should a browser natively support the window.onhashchange
|
||||
// event, but not report that it does, the fallback polling loop will be used.
|
||||
//
|
||||
// About: Release History
|
||||
//
|
||||
// 1.3 - (7/21/2010) Reorganized IE6/7 Iframe code to make it more
|
||||
// "removable" for mobile-only development. Added IE6/7 document.title
|
||||
// support. Attempted to make Iframe as hidden as possible by using
|
||||
// techniques from http://www.paciellogroup.com/blog/?p=604. Added
|
||||
// support for the "shortcut" format $(window).hashchange( fn ) and
|
||||
// $(window).hashchange() like jQuery provides for built-in events.
|
||||
// Renamed jQuery.hashchangeDelay to <jQuery.fn.hashchange.delay> and
|
||||
// lowered its default value to 50. Added <jQuery.fn.hashchange.domain>
|
||||
// and <jQuery.fn.hashchange.src> properties plus document-domain.html
|
||||
// file to address access denied issues when setting document.domain in
|
||||
// IE6/7.
|
||||
// 1.2 - (2/11/2010) Fixed a bug where coming back to a page using this plugin
|
||||
// from a page on another domain would cause an error in Safari 4. Also,
|
||||
// IE6/7 Iframe is now inserted after the body (this actually works),
|
||||
// which prevents the page from scrolling when the event is first bound.
|
||||
// Event can also now be bound before DOM ready, but it won't be usable
|
||||
// before then in IE6/7.
|
||||
// 1.1 - (1/21/2010) Incorporated document.documentMode test to fix IE8 bug
|
||||
// where browser version is incorrectly reported as 8.0, despite
|
||||
// inclusion of the X-UA-Compatible IE=EmulateIE7 meta tag.
|
||||
// 1.0 - (1/9/2010) Initial Release. Broke out the jQuery BBQ event.special
|
||||
// window.onhashchange functionality into a separate plugin for users
|
||||
// who want just the basic event & back button support, without all the
|
||||
// extra awesomeness that BBQ provides. This plugin will be included as
|
||||
// part of jQuery BBQ, but also be available separately.
|
||||
|
||||
(function($,window,undefined){
|
||||
'$:nomunge'; // Used by YUI compressor.
|
||||
|
||||
// Reused string.
|
||||
var str_hashchange = 'hashchange',
|
||||
|
||||
// Method / object references.
|
||||
doc = document,
|
||||
fake_onhashchange,
|
||||
special = $.event.special,
|
||||
|
||||
// Does the browser support window.onhashchange? Note that IE8 running in
|
||||
// IE7 compatibility mode reports true for 'onhashchange' in window, even
|
||||
// though the event isn't supported, so also test document.documentMode.
|
||||
doc_mode = doc.documentMode,
|
||||
supports_onhashchange = 'on' + str_hashchange in window && ( doc_mode === undefined || doc_mode > 7 );
|
||||
|
||||
// Get location.hash (or what you'd expect location.hash to be) sans any
|
||||
// leading #. Thanks for making this necessary, Firefox!
|
||||
function get_fragment( url ) {
|
||||
url = url || location.href;
|
||||
return '#' + url.replace( /^[^#]*#?(.*)$/, '$1' );
|
||||
};
|
||||
|
||||
// Method: jQuery.fn.hashchange
|
||||
//
|
||||
// Bind a handler to the window.onhashchange event or trigger all bound
|
||||
// window.onhashchange event handlers. This behavior is consistent with
|
||||
// jQuery's built-in event handlers.
|
||||
//
|
||||
// Usage:
|
||||
//
|
||||
// > jQuery(window).hashchange( [ handler ] );
|
||||
//
|
||||
// Arguments:
|
||||
//
|
||||
// handler - (Function) Optional handler to be bound to the hashchange
|
||||
// event. This is a "shortcut" for the more verbose form:
|
||||
// jQuery(window).bind( 'hashchange', handler ). If handler is omitted,
|
||||
// all bound window.onhashchange event handlers will be triggered. This
|
||||
// is a shortcut for the more verbose
|
||||
// jQuery(window).trigger( 'hashchange' ). These forms are described in
|
||||
// the <hashchange event> section.
|
||||
//
|
||||
// Returns:
|
||||
//
|
||||
// (jQuery) The initial jQuery collection of elements.
|
||||
|
||||
// Allow the "shortcut" format $(elem).hashchange( fn ) for binding and
|
||||
// $(elem).hashchange() for triggering, like jQuery does for built-in events.
|
||||
$.fn[ str_hashchange ] = function( fn ) {
|
||||
return fn ? this.bind( str_hashchange, fn ) : this.trigger( str_hashchange );
|
||||
};
|
||||
|
||||
// Property: jQuery.fn.hashchange.delay
|
||||
//
|
||||
// The numeric interval (in milliseconds) at which the <hashchange event>
|
||||
// polling loop executes. Defaults to 50.
|
||||
|
||||
// Property: jQuery.fn.hashchange.domain
|
||||
//
|
||||
// If you're setting document.domain in your JavaScript, and you want hash
|
||||
// history to work in IE6/7, not only must this property be set, but you must
|
||||
// also set document.domain BEFORE jQuery is loaded into the page. This
|
||||
// property is only applicable if you are supporting IE6/7 (or IE8 operating
|
||||
// in "IE7 compatibility" mode).
|
||||
//
|
||||
// In addition, the <jQuery.fn.hashchange.src> property must be set to the
|
||||
// path of the included "document-domain.html" file, which can be renamed or
|
||||
// modified if necessary (note that the document.domain specified must be the
|
||||
// same in both your main JavaScript as well as in this file).
|
||||
//
|
||||
// Usage:
|
||||
//
|
||||
// jQuery.fn.hashchange.domain = document.domain;
|
||||
|
||||
// Property: jQuery.fn.hashchange.src
|
||||
//
|
||||
// If, for some reason, you need to specify an Iframe src file (for example,
|
||||
// when setting document.domain as in <jQuery.fn.hashchange.domain>), you can
|
||||
// do so using this property. Note that when using this property, history
|
||||
// won't be recorded in IE6/7 until the Iframe src file loads. This property
|
||||
// is only applicable if you are supporting IE6/7 (or IE8 operating in "IE7
|
||||
// compatibility" mode).
|
||||
//
|
||||
// Usage:
|
||||
//
|
||||
// jQuery.fn.hashchange.src = 'path/to/file.html';
|
||||
|
||||
$.fn[ str_hashchange ].delay = 50;
|
||||
/*
|
||||
$.fn[ str_hashchange ].domain = null;
|
||||
$.fn[ str_hashchange ].src = null;
|
||||
*/
|
||||
|
||||
// Event: hashchange event
|
||||
//
|
||||
// Fired when location.hash changes. In browsers that support it, the native
|
||||
// HTML5 window.onhashchange event is used, otherwise a polling loop is
|
||||
// initialized, running every <jQuery.fn.hashchange.delay> milliseconds to
|
||||
// see if the hash has changed. In IE6/7 (and IE8 operating in "IE7
|
||||
// compatibility" mode), a hidden Iframe is created to allow the back button
|
||||
// and hash-based history to work.
|
||||
//
|
||||
// Usage as described in <jQuery.fn.hashchange>:
|
||||
//
|
||||
// > // Bind an event handler.
|
||||
// > jQuery(window).hashchange( function(e) {
|
||||
// > var hash = location.hash;
|
||||
// > ...
|
||||
// > });
|
||||
// >
|
||||
// > // Manually trigger the event handler.
|
||||
// > jQuery(window).hashchange();
|
||||
//
|
||||
// A more verbose usage that allows for event namespacing:
|
||||
//
|
||||
// > // Bind an event handler.
|
||||
// > jQuery(window).bind( 'hashchange', function(e) {
|
||||
// > var hash = location.hash;
|
||||
// > ...
|
||||
// > });
|
||||
// >
|
||||
// > // Manually trigger the event handler.
|
||||
// > jQuery(window).trigger( 'hashchange' );
|
||||
//
|
||||
// Additional Notes:
|
||||
//
|
||||
// * The polling loop and Iframe are not created until at least one handler
|
||||
// is actually bound to the 'hashchange' event.
|
||||
// * If you need the bound handler(s) to execute immediately, in cases where
|
||||
// a location.hash exists on page load, via bookmark or page refresh for
|
||||
// example, use jQuery(window).hashchange() or the more verbose
|
||||
// jQuery(window).trigger( 'hashchange' ).
|
||||
// * The event can be bound before DOM ready, but since it won't be usable
|
||||
// before then in IE6/7 (due to the necessary Iframe), recommended usage is
|
||||
// to bind it inside a DOM ready handler.
|
||||
|
||||
// Override existing $.event.special.hashchange methods (allowing this plugin
|
||||
// to be defined after jQuery BBQ in BBQ's source code).
|
||||
special[ str_hashchange ] = $.extend( special[ str_hashchange ], {
|
||||
|
||||
// Called only when the first 'hashchange' event is bound to window.
|
||||
setup: function() {
|
||||
// If window.onhashchange is supported natively, there's nothing to do..
|
||||
if ( supports_onhashchange ) { return false; }
|
||||
|
||||
// Otherwise, we need to create our own. And we don't want to call this
|
||||
// until the user binds to the event, just in case they never do, since it
|
||||
// will create a polling loop and possibly even a hidden Iframe.
|
||||
$( fake_onhashchange.start );
|
||||
},
|
||||
|
||||
// Called only when the last 'hashchange' event is unbound from window.
|
||||
teardown: function() {
|
||||
// If window.onhashchange is supported natively, there's nothing to do..
|
||||
if ( supports_onhashchange ) { return false; }
|
||||
|
||||
// Otherwise, we need to stop ours (if possible).
|
||||
$( fake_onhashchange.stop );
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
// fake_onhashchange does all the work of triggering the window.onhashchange
|
||||
// event for browsers that don't natively support it, including creating a
|
||||
// polling loop to watch for hash changes and in IE 6/7 creating a hidden
|
||||
// Iframe to enable back and forward.
|
||||
fake_onhashchange = (function(){
|
||||
var self = {},
|
||||
timeout_id,
|
||||
|
||||
// Remember the initial hash so it doesn't get triggered immediately.
|
||||
last_hash = get_fragment(),
|
||||
|
||||
fn_retval = function(val){ return val; },
|
||||
history_set = fn_retval,
|
||||
history_get = fn_retval;
|
||||
|
||||
// Start the polling loop.
|
||||
self.start = function() {
|
||||
timeout_id || poll();
|
||||
};
|
||||
|
||||
// Stop the polling loop.
|
||||
self.stop = function() {
|
||||
timeout_id && clearTimeout( timeout_id );
|
||||
timeout_id = undefined;
|
||||
};
|
||||
|
||||
// This polling loop checks every $.fn.hashchange.delay milliseconds to see
|
||||
// if location.hash has changed, and triggers the 'hashchange' event on
|
||||
// window when necessary.
|
||||
function poll() {
|
||||
var hash = get_fragment(),
|
||||
history_hash = history_get( last_hash );
|
||||
|
||||
if ( hash !== last_hash ) {
|
||||
history_set( last_hash = hash, history_hash );
|
||||
|
||||
$(window).trigger( str_hashchange );
|
||||
|
||||
} else if ( history_hash !== last_hash ) {
|
||||
location.href = location.href.replace( /#.*/, '' ) + history_hash;
|
||||
}
|
||||
|
||||
timeout_id = setTimeout( poll, $.fn[ str_hashchange ].delay );
|
||||
};
|
||||
|
||||
return self;
|
||||
})();
|
||||
|
||||
})(jQuery,this);
|
11
assets/js/jquery.js
vendored
130
components.html
@ -204,11 +204,11 @@ base_url: "../"
|
||||
<button type="button" class="btn btn-default">2</button>
|
||||
|
||||
<div class="btn-group">
|
||||
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
|
||||
<button id="btnGroupDrop1" type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
|
||||
Dropdown
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
<ul class="dropdown-menu" role="menu" aria-labelledby="btnGroupDrop1">
|
||||
<li><a href="#">Dropdown link</a></li>
|
||||
<li><a href="#">Dropdown link</a></li>
|
||||
</ul>
|
||||
@ -240,11 +240,11 @@ base_url: "../"
|
||||
<button type="button" class="btn btn-default">Button</button>
|
||||
<button type="button" class="btn btn-default">Button</button>
|
||||
<div class="btn-group">
|
||||
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
|
||||
<button id="btnGroupVerticalDrop1" type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
|
||||
Dropdown
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
<ul class="dropdown-menu" role="menu" aria-labelledby="btnGroupVerticalDrop1">
|
||||
<li><a href="#">Dropdown link</a></li>
|
||||
<li><a href="#">Dropdown link</a></li>
|
||||
</ul>
|
||||
@ -252,31 +252,31 @@ base_url: "../"
|
||||
<button type="button" class="btn btn-default">Button</button>
|
||||
<button type="button" class="btn btn-default">Button</button>
|
||||
<div class="btn-group">
|
||||
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
|
||||
<button id="btnGroupVerticalDrop2" type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
|
||||
Dropdown
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
<ul class="dropdown-menu" role="menu" aria-labelledby="btnGroupVerticalDrop2">
|
||||
<li><a href="#">Dropdown link</a></li>
|
||||
<li><a href="#">Dropdown link</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
|
||||
<button id="btnGroupVerticalDrop3" type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
|
||||
Dropdown
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
<ul class="dropdown-menu" role="menu" aria-labelledby="btnGroupVerticalDrop3">
|
||||
<li><a href="#">Dropdown link</a></li>
|
||||
<li><a href="#">Dropdown link</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
|
||||
<button id="btnGroupVerticalDrop4" type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
|
||||
Dropdown
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
<ul class="dropdown-menu" role="menu" aria-labelledby="btnGroupVerticalDrop4">
|
||||
<li><a href="#">Dropdown link</a></li>
|
||||
<li><a href="#">Dropdown link</a></li>
|
||||
</ul>
|
||||
@ -332,7 +332,7 @@ base_url: "../"
|
||||
<div class="bs-example">
|
||||
<div class="btn-group">
|
||||
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">Default <span class="caret"></span></button>
|
||||
<ul class="dropdown-menu">
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><a href="#">Action</a></li>
|
||||
<li><a href="#">Another action</a></li>
|
||||
<li><a href="#">Something else here</a></li>
|
||||
@ -342,7 +342,7 @@ base_url: "../"
|
||||
</div><!-- /btn-group -->
|
||||
<div class="btn-group">
|
||||
<button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown">Primary <span class="caret"></span></button>
|
||||
<ul class="dropdown-menu">
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><a href="#">Action</a></li>
|
||||
<li><a href="#">Another action</a></li>
|
||||
<li><a href="#">Something else here</a></li>
|
||||
@ -352,7 +352,7 @@ base_url: "../"
|
||||
</div><!-- /btn-group -->
|
||||
<div class="btn-group">
|
||||
<button type="button" class="btn btn-success dropdown-toggle" data-toggle="dropdown">Success <span class="caret"></span></button>
|
||||
<ul class="dropdown-menu">
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><a href="#">Action</a></li>
|
||||
<li><a href="#">Another action</a></li>
|
||||
<li><a href="#">Something else here</a></li>
|
||||
@ -362,7 +362,7 @@ base_url: "../"
|
||||
</div><!-- /btn-group -->
|
||||
<div class="btn-group">
|
||||
<button type="button" class="btn btn-info dropdown-toggle" data-toggle="dropdown">Info <span class="caret"></span></button>
|
||||
<ul class="dropdown-menu">
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><a href="#">Action</a></li>
|
||||
<li><a href="#">Another action</a></li>
|
||||
<li><a href="#">Something else here</a></li>
|
||||
@ -372,7 +372,7 @@ base_url: "../"
|
||||
</div><!-- /btn-group -->
|
||||
<div class="btn-group">
|
||||
<button type="button" class="btn btn-warning dropdown-toggle" data-toggle="dropdown">Warning <span class="caret"></span></button>
|
||||
<ul class="dropdown-menu">
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><a href="#">Action</a></li>
|
||||
<li><a href="#">Another action</a></li>
|
||||
<li><a href="#">Something else here</a></li>
|
||||
@ -382,7 +382,7 @@ base_url: "../"
|
||||
</div><!-- /btn-group -->
|
||||
<div class="btn-group">
|
||||
<button type="button" class="btn btn-danger dropdown-toggle" data-toggle="dropdown">Danger <span class="caret"></span></button>
|
||||
<ul class="dropdown-menu">
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><a href="#">Action</a></li>
|
||||
<li><a href="#">Another action</a></li>
|
||||
<li><a href="#">Something else here</a></li>
|
||||
@ -397,7 +397,7 @@ base_url: "../"
|
||||
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
|
||||
Action <span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><a href="#">Action</a></li>
|
||||
<li><a href="#">Another action</a></li>
|
||||
<li><a href="#">Something else here</a></li>
|
||||
@ -413,7 +413,7 @@ base_url: "../"
|
||||
<div class="btn-group">
|
||||
<button type="button" class="btn btn-default">Default</button>
|
||||
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
|
||||
<ul class="dropdown-menu">
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><a href="#">Action</a></li>
|
||||
<li><a href="#">Another action</a></li>
|
||||
<li><a href="#">Something else here</a></li>
|
||||
@ -424,7 +424,7 @@ base_url: "../"
|
||||
<div class="btn-group">
|
||||
<button type="button" class="btn btn-primary">Primary</button>
|
||||
<button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
|
||||
<ul class="dropdown-menu">
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><a href="#">Action</a></li>
|
||||
<li><a href="#">Another action</a></li>
|
||||
<li><a href="#">Something else here</a></li>
|
||||
@ -435,7 +435,7 @@ base_url: "../"
|
||||
<div class="btn-group">
|
||||
<button type="button" class="btn btn-success">Success</button>
|
||||
<button type="button" class="btn btn-success dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
|
||||
<ul class="dropdown-menu">
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><a href="#">Action</a></li>
|
||||
<li><a href="#">Another action</a></li>
|
||||
<li><a href="#">Something else here</a></li>
|
||||
@ -446,7 +446,7 @@ base_url: "../"
|
||||
<div class="btn-group">
|
||||
<button type="button" class="btn btn-info">Info</button>
|
||||
<button type="button" class="btn btn-info dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
|
||||
<ul class="dropdown-menu">
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><a href="#">Action</a></li>
|
||||
<li><a href="#">Another action</a></li>
|
||||
<li><a href="#">Something else here</a></li>
|
||||
@ -457,7 +457,7 @@ base_url: "../"
|
||||
<div class="btn-group">
|
||||
<button type="button" class="btn btn-warning">Warning</button>
|
||||
<button type="button" class="btn btn-warning dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
|
||||
<ul class="dropdown-menu">
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><a href="#">Action</a></li>
|
||||
<li><a href="#">Another action</a></li>
|
||||
<li><a href="#">Something else here</a></li>
|
||||
@ -468,7 +468,7 @@ base_url: "../"
|
||||
<div class="btn-group">
|
||||
<button type="button" class="btn btn-danger">Danger</button>
|
||||
<button type="button" class="btn btn-danger dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
|
||||
<ul class="dropdown-menu">
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><a href="#">Action</a></li>
|
||||
<li><a href="#">Another action</a></li>
|
||||
<li><a href="#">Something else here</a></li>
|
||||
@ -484,7 +484,7 @@ base_url: "../"
|
||||
<button type="button" class="btn btn-danger dropdown-toggle" data-toggle="dropdown">
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><a href="#">Action</a></li>
|
||||
<li><a href="#">Another action</a></li>
|
||||
<li><a href="#">Something else here</a></li>
|
||||
@ -502,7 +502,7 @@ base_url: "../"
|
||||
<button class="btn btn-default btn-lg dropdown-toggle" type="button" data-toggle="dropdown">
|
||||
Large button <span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><a href="#">Action</a></li>
|
||||
<li><a href="#">Another action</a></li>
|
||||
<li><a href="#">Something else here</a></li>
|
||||
@ -516,7 +516,7 @@ base_url: "../"
|
||||
<button class="btn btn-default btn-sm dropdown-toggle" type="button" data-toggle="dropdown">
|
||||
Small button <span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><a href="#">Action</a></li>
|
||||
<li><a href="#">Another action</a></li>
|
||||
<li><a href="#">Something else here</a></li>
|
||||
@ -530,7 +530,7 @@ base_url: "../"
|
||||
<button class="btn btn-default btn-xs dropdown-toggle" type="button" data-toggle="dropdown">
|
||||
Extra small button <span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><a href="#">Action</a></li>
|
||||
<li><a href="#">Another action</a></li>
|
||||
<li><a href="#">Something else here</a></li>
|
||||
@ -579,7 +579,7 @@ base_url: "../"
|
||||
<div class="btn-group dropup">
|
||||
<button type="button" class="btn btn-default">Dropup</button>
|
||||
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
|
||||
<ul class="dropdown-menu">
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><a href="#">Action</a></li>
|
||||
<li><a href="#">Another action</a></li>
|
||||
<li><a href="#">Something else here</a></li>
|
||||
@ -590,7 +590,7 @@ base_url: "../"
|
||||
<div class="btn-group dropup">
|
||||
<button type="button" class="btn btn-primary">Right dropup</button>
|
||||
<button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
|
||||
<ul class="dropdown-menu pull-right">
|
||||
<ul class="dropdown-menu pull-right" role="menu">
|
||||
<li><a href="#">Action</a></li>
|
||||
<li><a href="#">Another action</a></li>
|
||||
<li><a href="#">Something else here</a></li>
|
||||
@ -802,7 +802,7 @@ base_url: "../"
|
||||
<div class="input-group">
|
||||
<div class="input-group-btn">
|
||||
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">Action <span class="caret"></span></button>
|
||||
<ul class="dropdown-menu">
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><a href="#">Action</a></li>
|
||||
<li><a href="#">Another action</a></li>
|
||||
<li><a href="#">Something else here</a></li>
|
||||
@ -818,7 +818,7 @@ base_url: "../"
|
||||
<input type="text" class="form-control">
|
||||
<div class="input-group-btn">
|
||||
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">Action <span class="caret"></span></button>
|
||||
<ul class="dropdown-menu pull-right">
|
||||
<ul class="dropdown-menu pull-right" role="menu">
|
||||
<li><a href="#">Action</a></li>
|
||||
<li><a href="#">Another action</a></li>
|
||||
<li><a href="#">Something else here</a></li>
|
||||
@ -875,7 +875,7 @@ base_url: "../"
|
||||
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" tabindex="-1">
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><a href="#">Action</a></li>
|
||||
<li><a href="#">Another action</a></li>
|
||||
<li><a href="#">Something else here</a></li>
|
||||
@ -894,7 +894,7 @@ base_url: "../"
|
||||
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" tabindex="-1">
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu pull-right">
|
||||
<ul class="dropdown-menu pull-right" role="menu">
|
||||
<li><a href="#">Action</a></li>
|
||||
<li><a href="#">Another action</a></li>
|
||||
<li><a href="#">Something else here</a></li>
|
||||
@ -1049,7 +1049,7 @@ base_url: "../"
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
Dropdown <span class="caret"></span>
|
||||
</a>
|
||||
<ul class="dropdown-menu">
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><a href="#">Action</a></li>
|
||||
<li><a href="#">Another action</a></li>
|
||||
<li><a href="#">Something else here</a></li>
|
||||
@ -1084,7 +1084,7 @@ base_url: "../"
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
Dropdown <span class="caret"></span>
|
||||
</a>
|
||||
<ul class="dropdown-menu">
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><a href="#">Action</a></li>
|
||||
<li><a href="#">Another action</a></li>
|
||||
<li><a href="#">Something else here</a></li>
|
||||
@ -1138,18 +1138,17 @@ base_url: "../"
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="#">Title</a>
|
||||
<a class="navbar-brand" href="#">Brand</a>
|
||||
</div>
|
||||
|
||||
<!-- Collect the nav links, forms, and other content for toggling -->
|
||||
<div class="collapse navbar-collapse navbar-ex1-collapse">
|
||||
<ul class="nav navbar-nav">
|
||||
<li class="active"><a href="#">Home</a></li>
|
||||
<li><a href="#">Link</a></li>
|
||||
<li class="active"><a href="#">Link</a></li>
|
||||
<li><a href="#">Link</a></li>
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><a href="#">Action</a></li>
|
||||
<li><a href="#">Another action</a></li>
|
||||
<li><a href="#">Something else here</a></li>
|
||||
@ -1168,7 +1167,7 @@ base_url: "../"
|
||||
<li><a href="#">Link</a></li>
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><a href="#">Action</a></li>
|
||||
<li><a href="#">Another action</a></li>
|
||||
<li><a href="#">Something else here</a></li>
|
||||
@ -1189,14 +1188,13 @@ base_url: "../"
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="#">Title</a>
|
||||
<a class="navbar-brand" href="#">Brand</a>
|
||||
</div>
|
||||
|
||||
<!-- Collect the nav links, forms, and other content for toggling -->
|
||||
<div class="collapse navbar-collapse navbar-ex1-collapse">
|
||||
<ul class="nav navbar-nav">
|
||||
<li class="active"><a href="#">Home</a></li>
|
||||
<li><a href="#">Link</a></li>
|
||||
<li class="active"><a href="#">Link</a></li>
|
||||
<li><a href="#">Link</a></li>
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
|
||||
@ -1253,7 +1251,7 @@ base_url: "../"
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="#">Title</a>
|
||||
<a class="navbar-brand" href="#">Brand</a>
|
||||
</div>
|
||||
<div class="collapse navbar-collapse navbar-ex2-collapse">
|
||||
<button type="button" class="btn btn-default navbar-btn">Sign in</button>
|
||||
@ -1276,7 +1274,7 @@ base_url: "../"
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="#">Title</a>
|
||||
<a class="navbar-brand" href="#">Brand</a>
|
||||
</div>
|
||||
<div class="collapse navbar-collapse navbar-ex3-collapse">
|
||||
<p class="navbar-text">Signed in as Mark Otto</p>
|
||||
@ -1299,7 +1297,7 @@ base_url: "../"
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="#">Title</a>
|
||||
<a class="navbar-brand" href="#">Brand</a>
|
||||
</div>
|
||||
<div class="collapse navbar-collapse navbar-ex4-collapse">
|
||||
<p class="navbar-text pull-right">Signed in as <a href="#" class="navbar-link">Mark Otto</a></p>
|
||||
@ -1328,7 +1326,7 @@ base_url: "../"
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="#">Title</a>
|
||||
<a class="navbar-brand" href="#">Brand</a>
|
||||
</div>
|
||||
|
||||
<!-- Collect the nav links, forms, and other content for toggling -->
|
||||
@ -1369,7 +1367,7 @@ body { padding-top: 70px; }
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="#">Title</a>
|
||||
<a class="navbar-brand" href="#">Brand</a>
|
||||
</div>
|
||||
|
||||
<!-- Collect the nav links, forms, and other content for toggling -->
|
||||
@ -1410,7 +1408,7 @@ body { padding-bottom: 70px; }
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="#">Title</a>
|
||||
<a class="navbar-brand" href="#">Brand</a>
|
||||
</div>
|
||||
|
||||
<!-- Collect the nav links, forms, and other content for toggling -->
|
||||
@ -1442,7 +1440,7 @@ body { padding-bottom: 70px; }
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="#">Title</a>
|
||||
<a class="navbar-brand" href="#">Brand</a>
|
||||
</div>
|
||||
|
||||
<!-- Collect the nav links, forms, and other content for toggling -->
|
||||
@ -1770,19 +1768,23 @@ body { padding-bottom: 70px; }
|
||||
<div class="page-header">
|
||||
<h1 id="jumbotron">Jumbotron</h1>
|
||||
</div>
|
||||
<p>A lightweight, flexible component to showcase key content on your site. It works well on marketing and content-heavy sites.</p>
|
||||
<p>A lightweight, flexible component that can optional extend the entire viewport to showcase key content on your site. To make the jumbotron full width, don't include it within a <code>.container</code>. Placing it within a container will keep it at the width of the rest of your content and provide rounded corners.</p>
|
||||
<div class="bs-example">
|
||||
<div class="jumbotron">
|
||||
<h1>Hello, world!</h1>
|
||||
<p>This is a simple hero unit, a simple jumbotron-style component for calling extra attention to featured content or information.</p>
|
||||
<p><a class="btn btn-primary btn-lg">Learn more</a></p>
|
||||
<div class="container">
|
||||
<h1>Hello, world!</h1>
|
||||
<p>This is a simple hero unit, a simple jumbotron-style component for calling extra attention to featured content or information.</p>
|
||||
<p><a class="btn btn-primary btn-lg">Learn more</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% highlight html %}
|
||||
<div class="jumbotron">
|
||||
<h1>Hello, world!</h1>
|
||||
<p>...</p>
|
||||
<p><a class="btn btn-primary btn-lg">Learn more</a></p>
|
||||
<div class="container">
|
||||
<h1>Hello, world!</h1>
|
||||
<p>...</p>
|
||||
<p><a class="btn btn-primary btn-lg">Learn more</a></p>
|
||||
</div>
|
||||
</div>
|
||||
{% endhighlight %}
|
||||
</div>
|
||||
@ -1865,7 +1867,7 @@ body { padding-bottom: 70px; }
|
||||
<div class="caption">
|
||||
<h3>Thumbnail label</h3>
|
||||
<p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
|
||||
<p><a href="#" class="btn btn-primary">Action</a> <a href="#" class="btn btn-default">Action</a></p>
|
||||
<p><a href="#" class="btn btn-primary">Button</a> <a href="#" class="btn btn-default">Button</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -1875,7 +1877,7 @@ body { padding-bottom: 70px; }
|
||||
<div class="caption">
|
||||
<h3>Thumbnail label</h3>
|
||||
<p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
|
||||
<p><a href="#" class="btn btn-primary">Action</a> <a href="#" class="btn btn-default">Action</a></p>
|
||||
<p><a href="#" class="btn btn-primary">Button</a> <a href="#" class="btn btn-default">Button</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -1885,7 +1887,7 @@ body { padding-bottom: 70px; }
|
||||
<div class="caption">
|
||||
<h3>Thumbnail label</h3>
|
||||
<p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
|
||||
<p><a href="#" class="btn btn-primary">Action</a> <a href="#" class="btn btn-default">Action</a></p>
|
||||
<p><a href="#" class="btn btn-primary">Button</a> <a href="#" class="btn btn-default">Button</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -1899,7 +1901,7 @@ body { padding-bottom: 70px; }
|
||||
<div class="caption">
|
||||
<h3>Thumbnail label</h3>
|
||||
<p>...</p>
|
||||
<p><a href="#" class="btn btn-primary">Action</a> <a href="#" class="btn btn-default">Action</a></p>
|
||||
<p><a href="#" class="btn btn-primary">Button</a> <a href="#" class="btn btn-default">Button</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -2403,7 +2405,7 @@ body { padding-bottom: 70px; }
|
||||
<p>Easily add a heading container to your panel with <code>.panel-heading</code>. You may also include any <code><h1></code>-<code><h6></code> with a <code>.panel-title</code> class to add a pre-styled heading.</p>
|
||||
<div class="bs-example">
|
||||
<div class="panel">
|
||||
<div class="panel-heading">Panel heading</div>
|
||||
<div class="panel-heading">Panel heading without title</div>
|
||||
<div class="panel-body">
|
||||
Panel content
|
||||
</div>
|
||||
@ -2419,7 +2421,7 @@ body { padding-bottom: 70px; }
|
||||
</div>
|
||||
{% highlight html %}
|
||||
<div class="panel">
|
||||
<div class="panel-heading">Panel heading</div>
|
||||
<div class="panel-heading">Panel heading without title</div>
|
||||
<div class="panel-body">
|
||||
Panel content
|
||||
</div>
|
||||
@ -2436,7 +2438,7 @@ body { padding-bottom: 70px; }
|
||||
{% endhighlight %}
|
||||
|
||||
<h3 id="panels-footer">Panel with footer</h3>
|
||||
<p>Wrap buttons or secondary text in <code>.panel-footer</code>.</p>
|
||||
<p>Wrap buttons or secondary text in <code>.panel-footer</code>. Note that panel footers <strong>do not</strong> inherit colors and borders when using contextual variations as they are not meant to be in the foreground.</p>
|
||||
<div class="bs-example">
|
||||
<div class="panel">
|
||||
<div class="panel-body">
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "twbs/bootstrap"
|
||||
, "description": "Sleek, intuitive, and powerful front-end framework for faster and easier web development."
|
||||
, "description": "Sleek, intuitive, and powerful mobile first front-end framework for faster and easier web development."
|
||||
, "keywords": ["bootstrap", "css"]
|
||||
, "homepage": "http://getbootstrap.com"
|
||||
, "authors": [
|
||||
|
587
customize.html
384
dist/css/bootstrap-theme.css
vendored
Normal file
@ -0,0 +1,384 @@
|
||||
.btn-default,
|
||||
.btn-primary,
|
||||
.btn-success,
|
||||
.btn-info,
|
||||
.btn-warning,
|
||||
.btn-danger {
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
|
||||
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);
|
||||
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);
|
||||
}
|
||||
|
||||
.btn-default:active,
|
||||
.btn-primary:active,
|
||||
.btn-success:active,
|
||||
.btn-info:active,
|
||||
.btn-warning:active,
|
||||
.btn-danger:active,
|
||||
.btn-default.active,
|
||||
.btn-primary.active,
|
||||
.btn-success.active,
|
||||
.btn-info.active,
|
||||
.btn-warning.active,
|
||||
.btn-danger.active {
|
||||
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
|
||||
box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
|
||||
}
|
||||
|
||||
.btn:active,
|
||||
.btn.active {
|
||||
background-image: none;
|
||||
}
|
||||
|
||||
.btn-default {
|
||||
text-shadow: 0 1px 0 #fff;
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#ffffff), to(#e6e6e6));
|
||||
background-image: -webkit-linear-gradient(top, #ffffff, 0%, #e6e6e6, 100%);
|
||||
background-image: -moz-linear-gradient(top, #ffffff 0%, #e6e6e6 100%);
|
||||
background-image: linear-gradient(to bottom, #ffffff 0%, #e6e6e6 100%);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #e0e0e0;
|
||||
border-color: #ccc;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
|
||||
}
|
||||
|
||||
.btn-default:active,
|
||||
.btn-default.active {
|
||||
background-color: #e6e6e6;
|
||||
border-color: #e0e0e0;
|
||||
}
|
||||
|
||||
.btn-primary {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#3071a9));
|
||||
background-image: -webkit-linear-gradient(top, #428bca, 0%, #3071a9, 100%);
|
||||
background-image: -moz-linear-gradient(top, #428bca 0%, #3071a9 100%);
|
||||
background-image: linear-gradient(to bottom, #428bca 0%, #3071a9 100%);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #2d6ca2;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0);
|
||||
}
|
||||
|
||||
.btn-primary:active,
|
||||
.btn-primary.active {
|
||||
background-color: #3071a9;
|
||||
border-color: #2d6ca2;
|
||||
}
|
||||
|
||||
.btn-success {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#5cb85c), to(#449d44));
|
||||
background-image: -webkit-linear-gradient(top, #5cb85c, 0%, #449d44, 100%);
|
||||
background-image: -moz-linear-gradient(top, #5cb85c 0%, #449d44 100%);
|
||||
background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #419641;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
|
||||
}
|
||||
|
||||
.btn-success:active,
|
||||
.btn-success.active {
|
||||
background-color: #449d44;
|
||||
border-color: #419641;
|
||||
}
|
||||
|
||||
.btn-warning {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f0ad4e), to(#ec971f));
|
||||
background-image: -webkit-linear-gradient(top, #f0ad4e, 0%, #ec971f, 100%);
|
||||
background-image: -moz-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
|
||||
background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #eb9316;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
|
||||
}
|
||||
|
||||
.btn-warning:active,
|
||||
.btn-warning.active {
|
||||
background-color: #ec971f;
|
||||
border-color: #eb9316;
|
||||
}
|
||||
|
||||
.btn-danger {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#d9534f), to(#c9302c));
|
||||
background-image: -webkit-linear-gradient(top, #d9534f, 0%, #c9302c, 100%);
|
||||
background-image: -moz-linear-gradient(top, #d9534f 0%, #c9302c 100%);
|
||||
background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #c12e2a;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
|
||||
}
|
||||
|
||||
.btn-danger:active,
|
||||
.btn-danger.active {
|
||||
background-color: #c9302c;
|
||||
border-color: #c12e2a;
|
||||
}
|
||||
|
||||
.btn-info {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#5bc0de), to(#31b0d5));
|
||||
background-image: -webkit-linear-gradient(top, #5bc0de, 0%, #31b0d5, 100%);
|
||||
background-image: -moz-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
|
||||
background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #2aabd2;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
|
||||
}
|
||||
|
||||
.btn-info:active,
|
||||
.btn-info.active {
|
||||
background-color: #31b0d5;
|
||||
border-color: #2aabd2;
|
||||
}
|
||||
|
||||
.thumbnail,
|
||||
.img-thumbnail {
|
||||
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
|
||||
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
|
||||
}
|
||||
|
||||
.dropdown-menu > li > a:hover,
|
||||
.dropdown-menu > li > a:focus,
|
||||
.dropdown-menu > .active > a,
|
||||
.dropdown-menu > .active > a:hover,
|
||||
.dropdown-menu > .active > a:focus {
|
||||
background-color: #357ebd;
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#357ebd));
|
||||
background-image: -webkit-linear-gradient(top, #428bca, 0%, #357ebd, 100%);
|
||||
background-image: -moz-linear-gradient(top, #428bca 0%, #357ebd 100%);
|
||||
background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);
|
||||
}
|
||||
|
||||
.navbar {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#ffffff), to(#f8f8f8));
|
||||
background-image: -webkit-linear-gradient(top, #ffffff, 0%, #f8f8f8, 100%);
|
||||
background-image: -moz-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);
|
||||
background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);
|
||||
background-repeat: repeat-x;
|
||||
border-radius: 4px;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);
|
||||
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);
|
||||
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);
|
||||
}
|
||||
|
||||
.navbar .navbar-nav > .active > a {
|
||||
background-color: #f8f8f8;
|
||||
}
|
||||
|
||||
.navbar-brand,
|
||||
.navbar-nav > li > a {
|
||||
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);
|
||||
}
|
||||
|
||||
.navbar-inverse {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#3c3c3c), to(#222222));
|
||||
background-image: -webkit-linear-gradient(top, #3c3c3c, 0%, #222222, 100%);
|
||||
background-image: -moz-linear-gradient(top, #3c3c3c 0%, #222222 100%);
|
||||
background-image: linear-gradient(to bottom, #3c3c3c 0%, #222222 100%);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
|
||||
}
|
||||
|
||||
.navbar-inverse .navbar-nav > .active > a {
|
||||
background-color: #222222;
|
||||
}
|
||||
|
||||
.navbar-inverse .navbar-brand,
|
||||
.navbar-inverse .navbar-nav > li > a {
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
|
||||
.navbar-static-top,
|
||||
.navbar-fixed-top,
|
||||
.navbar-fixed-bottom {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.alert {
|
||||
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);
|
||||
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);
|
||||
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
|
||||
.alert {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#fcf8e3), to(#f8efc0));
|
||||
background-image: -webkit-linear-gradient(top, #fcf8e3, 0%, #f8efc0, 100%);
|
||||
background-image: -moz-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
|
||||
background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #f5e79e;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);
|
||||
}
|
||||
|
||||
.alert-success {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#dff0d8), to(#c8e5bc));
|
||||
background-image: -webkit-linear-gradient(top, #dff0d8, 0%, #c8e5bc, 100%);
|
||||
background-image: -moz-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
|
||||
background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #b2dba1;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);
|
||||
}
|
||||
|
||||
.alert-info {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#d9edf7), to(#b9def0));
|
||||
background-image: -webkit-linear-gradient(top, #d9edf7, 0%, #b9def0, 100%);
|
||||
background-image: -moz-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
|
||||
background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #9acfea;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);
|
||||
}
|
||||
|
||||
.alert-danger {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f2dede), to(#e7c3c3));
|
||||
background-image: -webkit-linear-gradient(top, #f2dede, 0%, #e7c3c3, 100%);
|
||||
background-image: -moz-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
|
||||
background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #dca7a7;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);
|
||||
}
|
||||
|
||||
.progress {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#ebebeb), to(#f5f5f5));
|
||||
background-image: -webkit-linear-gradient(top, #ebebeb, 0%, #f5f5f5, 100%);
|
||||
background-image: -moz-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
|
||||
background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#3071a9));
|
||||
background-image: -webkit-linear-gradient(top, #428bca, 0%, #3071a9, 100%);
|
||||
background-image: -moz-linear-gradient(top, #428bca 0%, #3071a9 100%);
|
||||
background-image: linear-gradient(to bottom, #428bca 0%, #3071a9 100%);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0);
|
||||
}
|
||||
|
||||
.progress-bar-success {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#5cb85c), to(#449d44));
|
||||
background-image: -webkit-linear-gradient(top, #5cb85c, 0%, #449d44, 100%);
|
||||
background-image: -moz-linear-gradient(top, #5cb85c 0%, #449d44 100%);
|
||||
background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
|
||||
}
|
||||
|
||||
.progress-bar-info {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#5bc0de), to(#31b0d5));
|
||||
background-image: -webkit-linear-gradient(top, #5bc0de, 0%, #31b0d5, 100%);
|
||||
background-image: -moz-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
|
||||
background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
|
||||
}
|
||||
|
||||
.progress-bar-warning {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f0ad4e), to(#ec971f));
|
||||
background-image: -webkit-linear-gradient(top, #f0ad4e, 0%, #ec971f, 100%);
|
||||
background-image: -moz-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
|
||||
background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
|
||||
}
|
||||
|
||||
.progress-bar-danger {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#d9534f), to(#c9302c));
|
||||
background-image: -webkit-linear-gradient(top, #d9534f, 0%, #c9302c, 100%);
|
||||
background-image: -moz-linear-gradient(top, #d9534f 0%, #c9302c 100%);
|
||||
background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
|
||||
}
|
||||
|
||||
.list-group {
|
||||
border-radius: 4px;
|
||||
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
|
||||
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
|
||||
}
|
||||
|
||||
.list-group-item.active,
|
||||
.list-group-item.active:hover,
|
||||
.list-group-item.active:focus {
|
||||
text-shadow: 0 -1px 0 #3071a9;
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#3278b3));
|
||||
background-image: -webkit-linear-gradient(top, #428bca, 0%, #3278b3, 100%);
|
||||
background-image: -moz-linear-gradient(top, #428bca 0%, #3278b3 100%);
|
||||
background-image: linear-gradient(to bottom, #428bca 0%, #3278b3 100%);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #3278b3;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0);
|
||||
}
|
||||
|
||||
.panel {
|
||||
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
|
||||
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
|
||||
.panel-heading {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f5f5f5), to(#e8e8e8));
|
||||
background-image: -webkit-linear-gradient(top, #f5f5f5, 0%, #e8e8e8, 100%);
|
||||
background-image: -moz-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
|
||||
background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
|
||||
}
|
||||
|
||||
.panel-primary > .panel-heading {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#357ebd));
|
||||
background-image: -webkit-linear-gradient(top, #428bca, 0%, #357ebd, 100%);
|
||||
background-image: -moz-linear-gradient(top, #428bca 0%, #357ebd 100%);
|
||||
background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);
|
||||
}
|
||||
|
||||
.panel-success > .panel-heading {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#dff0d8), to(#d0e9c6));
|
||||
background-image: -webkit-linear-gradient(top, #dff0d8, 0%, #d0e9c6, 100%);
|
||||
background-image: -moz-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
|
||||
background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);
|
||||
}
|
||||
|
||||
.panel-info > .panel-heading {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#d9edf7), to(#c4e3f3));
|
||||
background-image: -webkit-linear-gradient(top, #d9edf7, 0%, #c4e3f3, 100%);
|
||||
background-image: -moz-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
|
||||
background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);
|
||||
}
|
||||
|
||||
.panel-warning > .panel-heading {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#fcf8e3), to(#faf2cc));
|
||||
background-image: -webkit-linear-gradient(top, #fcf8e3, 0%, #faf2cc, 100%);
|
||||
background-image: -moz-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
|
||||
background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);
|
||||
}
|
||||
|
||||
.panel-danger > .panel-heading {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f2dede), to(#ebcccc));
|
||||
background-image: -webkit-linear-gradient(top, #f2dede, 0%, #ebcccc, 100%);
|
||||
background-image: -moz-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
|
||||
background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);
|
||||
}
|
||||
|
||||
.well {
|
||||
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#e8e8e8), to(#f5f5f5));
|
||||
background-image: -webkit-linear-gradient(top, #e8e8e8, 0%, #f5f5f5, 100%);
|
||||
background-image: -moz-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
|
||||
background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #dcdcdc;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);
|
||||
-webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);
|
||||
box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);
|
||||
}
|
1
dist/css/bootstrap-theme.min.css
vendored
Normal file
2362
dist/css/bootstrap.css
vendored
@ -2317,6 +2317,417 @@ input[type="button"].btn-block {
|
||||
transition: height 0.35s ease;
|
||||
}
|
||||
|
||||
.caret {
|
||||
display: inline-block;
|
||||
width: 0;
|
||||
height: 0;
|
||||
margin-left: 2px;
|
||||
vertical-align: middle;
|
||||
border-top: 4px solid #000000;
|
||||
border-right: 4px solid transparent;
|
||||
border-bottom: 0 dotted;
|
||||
border-left: 4px solid transparent;
|
||||
content: "";
|
||||
}
|
||||
|
||||
.dropdown {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.dropdown-toggle:focus {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
.dropdown-menu {
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
left: 0;
|
||||
z-index: 1000;
|
||||
display: none;
|
||||
float: left;
|
||||
min-width: 160px;
|
||||
padding: 5px 0;
|
||||
margin: 2px 0 0;
|
||||
font-size: 14px;
|
||||
list-style: none;
|
||||
background-color: #ffffff;
|
||||
border: 1px solid #cccccc;
|
||||
border: 1px solid rgba(0, 0, 0, 0.15);
|
||||
border-radius: 4px;
|
||||
-webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
|
||||
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
|
||||
background-clip: padding-box;
|
||||
}
|
||||
|
||||
.dropdown-menu.pull-right {
|
||||
right: 0;
|
||||
left: auto;
|
||||
}
|
||||
|
||||
.dropdown-menu .divider {
|
||||
height: 1px;
|
||||
margin: 9px 0;
|
||||
overflow: hidden;
|
||||
background-color: #e5e5e5;
|
||||
}
|
||||
|
||||
.dropdown-menu > li > a {
|
||||
display: block;
|
||||
padding: 3px 20px;
|
||||
clear: both;
|
||||
font-weight: normal;
|
||||
line-height: 1.428571429;
|
||||
color: #333333;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.dropdown-menu > li > a:hover,
|
||||
.dropdown-menu > li > a:focus {
|
||||
color: #ffffff;
|
||||
text-decoration: none;
|
||||
background-color: #428bca;
|
||||
}
|
||||
|
||||
.dropdown-menu > .active > a,
|
||||
.dropdown-menu > .active > a:hover,
|
||||
.dropdown-menu > .active > a:focus {
|
||||
color: #ffffff;
|
||||
text-decoration: none;
|
||||
background-color: #428bca;
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
.dropdown-menu > .disabled > a,
|
||||
.dropdown-menu > .disabled > a:hover,
|
||||
.dropdown-menu > .disabled > a:focus {
|
||||
color: #999999;
|
||||
}
|
||||
|
||||
.dropdown-menu > .disabled > a:hover,
|
||||
.dropdown-menu > .disabled > a:focus {
|
||||
text-decoration: none;
|
||||
cursor: not-allowed;
|
||||
background-color: transparent;
|
||||
background-image: none;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
}
|
||||
|
||||
.open > .dropdown-menu {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.open > a {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
.dropdown-header {
|
||||
display: block;
|
||||
padding: 3px 20px;
|
||||
font-size: 12px;
|
||||
line-height: 1.428571429;
|
||||
color: #999999;
|
||||
}
|
||||
|
||||
.dropdown-backdrop {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
z-index: 990;
|
||||
}
|
||||
|
||||
.pull-right > .dropdown-menu {
|
||||
right: 0;
|
||||
left: auto;
|
||||
}
|
||||
|
||||
.dropup .caret,
|
||||
.navbar-fixed-bottom .dropdown .caret {
|
||||
border-top: 0 dotted;
|
||||
border-bottom: 4px solid #000000;
|
||||
content: "";
|
||||
}
|
||||
|
||||
.dropup .dropdown-menu,
|
||||
.navbar-fixed-bottom .dropdown .dropdown-menu {
|
||||
top: auto;
|
||||
bottom: 100%;
|
||||
margin-bottom: 1px;
|
||||
}
|
||||
|
||||
.btn-default .caret {
|
||||
border-top-color: #333333;
|
||||
}
|
||||
|
||||
.btn-primary .caret,
|
||||
.btn-success .caret,
|
||||
.btn-warning .caret,
|
||||
.btn-danger .caret,
|
||||
.btn-info .caret {
|
||||
border-top-color: #fff;
|
||||
}
|
||||
|
||||
.dropup .btn-default .caret {
|
||||
border-bottom-color: #333333;
|
||||
}
|
||||
|
||||
.dropup .btn-primary .caret,
|
||||
.dropup .btn-success .caret,
|
||||
.dropup .btn-warning .caret,
|
||||
.dropup .btn-danger .caret,
|
||||
.dropup .btn-info .caret {
|
||||
border-bottom-color: #fff;
|
||||
}
|
||||
|
||||
.btn-group,
|
||||
.btn-group-vertical {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.btn-group > .btn,
|
||||
.btn-group-vertical > .btn {
|
||||
position: relative;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.btn-group > .btn:hover,
|
||||
.btn-group-vertical > .btn:hover,
|
||||
.btn-group > .btn:focus,
|
||||
.btn-group-vertical > .btn:focus,
|
||||
.btn-group > .btn:active,
|
||||
.btn-group-vertical > .btn:active,
|
||||
.btn-group > .btn.active,
|
||||
.btn-group-vertical > .btn.active {
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.btn-group > .btn:focus,
|
||||
.btn-group-vertical > .btn:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.btn-group .btn + .btn,
|
||||
.btn-group .btn + .btn-group,
|
||||
.btn-group .btn-group + .btn,
|
||||
.btn-group .btn-group + .btn-group {
|
||||
margin-left: -1px;
|
||||
}
|
||||
|
||||
.btn-toolbar:before,
|
||||
.btn-toolbar:after {
|
||||
display: table;
|
||||
content: " ";
|
||||
}
|
||||
|
||||
.btn-toolbar:after {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.btn-toolbar:before,
|
||||
.btn-toolbar:after {
|
||||
display: table;
|
||||
content: " ";
|
||||
}
|
||||
|
||||
.btn-toolbar:after {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.btn-toolbar .btn-group {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.btn-toolbar > .btn + .btn,
|
||||
.btn-toolbar > .btn-group + .btn,
|
||||
.btn-toolbar > .btn + .btn-group,
|
||||
.btn-toolbar > .btn-group + .btn-group {
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.btn-group > .btn:first-child {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
}
|
||||
|
||||
.btn-group > .btn:last-child:not(:first-child),
|
||||
.btn-group > .dropdown-toggle:not(:first-child) {
|
||||
border-bottom-left-radius: 0;
|
||||
border-top-left-radius: 0;
|
||||
}
|
||||
|
||||
.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 > .btn:last-child,
|
||||
.btn-group > .btn-group:first-child > .dropdown-toggle {
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
}
|
||||
|
||||
.btn-group > .btn-group:last-child > .btn:first-child {
|
||||
border-bottom-left-radius: 0;
|
||||
border-top-left-radius: 0;
|
||||
}
|
||||
|
||||
.btn-group .dropdown-toggle:active,
|
||||
.btn-group.open .dropdown-toggle {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
.btn-group-xs > .btn {
|
||||
padding: 5px 10px;
|
||||
padding: 1px 5px;
|
||||
font-size: 12px;
|
||||
line-height: 1.5;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.btn-group-sm > .btn {
|
||||
padding: 5px 10px;
|
||||
font-size: 12px;
|
||||
line-height: 1.5;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.btn-group-lg > .btn {
|
||||
padding: 10px 16px;
|
||||
font-size: 18px;
|
||||
line-height: 1.33;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
.btn-group > .btn + .dropdown-toggle {
|
||||
padding-right: 8px;
|
||||
padding-left: 8px;
|
||||
}
|
||||
|
||||
.btn-group > .btn-lg + .dropdown-toggle {
|
||||
padding-right: 12px;
|
||||
padding-left: 12px;
|
||||
}
|
||||
|
||||
.btn-group.open .dropdown-toggle {
|
||||
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
|
||||
box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
|
||||
}
|
||||
|
||||
.btn .caret {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.btn-lg .caret {
|
||||
border-width: 5px;
|
||||
}
|
||||
|
||||
.dropup .btn-lg .caret {
|
||||
border-bottom-width: 5px;
|
||||
}
|
||||
|
||||
.btn-group-vertical > .btn,
|
||||
.btn-group-vertical > .btn-group {
|
||||
display: block;
|
||||
float: none;
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.btn-group-vertical > .btn-group:before,
|
||||
.btn-group-vertical > .btn-group:after {
|
||||
display: table;
|
||||
content: " ";
|
||||
}
|
||||
|
||||
.btn-group-vertical > .btn-group:after {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.btn-group-vertical > .btn-group:before,
|
||||
.btn-group-vertical > .btn-group:after {
|
||||
display: table;
|
||||
content: " ";
|
||||
}
|
||||
|
||||
.btn-group-vertical > .btn-group:after {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.btn-group-vertical > .btn-group > .btn {
|
||||
float: none;
|
||||
}
|
||||
|
||||
.btn-group-vertical > .btn + .btn,
|
||||
.btn-group-vertical > .btn + .btn-group,
|
||||
.btn-group-vertical > .btn-group + .btn,
|
||||
.btn-group-vertical > .btn-group + .btn-group {
|
||||
margin-top: -1px;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.btn-group-vertical > .btn:first-child:not(:last-child) {
|
||||
border-top-right-radius: 4px;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
|
||||
.btn-group-vertical > .btn:last-child:not(:first-child) {
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-left-radius: 4px;
|
||||
border-top-left-radius: 0;
|
||||
}
|
||||
|
||||
.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.btn-group-vertical > .btn-group:first-child > .btn:last-child,
|
||||
.btn-group-vertical > .btn-group:first-child > .dropdown-toggle {
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
|
||||
.btn-group-vertical > .btn-group:last-child > .btn:first-child {
|
||||
border-top-right-radius: 0;
|
||||
border-top-left-radius: 0;
|
||||
}
|
||||
|
||||
.btn-group-justified {
|
||||
display: table;
|
||||
width: 100%;
|
||||
border-collapse: separate;
|
||||
table-layout: fixed;
|
||||
}
|
||||
|
||||
.btn-group-justified .btn {
|
||||
display: table-cell;
|
||||
float: none;
|
||||
width: 1%;
|
||||
}
|
||||
|
||||
[data-toggle="buttons"] > .btn > input[type="radio"],
|
||||
[data-toggle="buttons"] > .btn > input[type="checkbox"] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.input-group {
|
||||
position: relative;
|
||||
display: table;
|
||||
@ -2471,453 +2882,6 @@ textarea.input-group-sm > .input-group-btn > .btn {
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.caret {
|
||||
display: inline-block;
|
||||
width: 0;
|
||||
height: 0;
|
||||
margin-left: 2px;
|
||||
vertical-align: middle;
|
||||
border-top: 4px solid #000000;
|
||||
border-right: 4px solid transparent;
|
||||
border-bottom: 0 dotted;
|
||||
border-left: 4px solid transparent;
|
||||
content: "";
|
||||
}
|
||||
|
||||
.dropdown {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.dropdown-toggle:focus {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
.dropdown-menu {
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
left: 0;
|
||||
z-index: 1000;
|
||||
display: none;
|
||||
float: left;
|
||||
min-width: 160px;
|
||||
padding: 5px 0;
|
||||
margin: 2px 0 0;
|
||||
font-size: 14px;
|
||||
list-style: none;
|
||||
background-color: #ffffff;
|
||||
border: 1px solid #cccccc;
|
||||
border: 1px solid rgba(0, 0, 0, 0.15);
|
||||
border-radius: 4px;
|
||||
-webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
|
||||
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
|
||||
background-clip: padding-box;
|
||||
}
|
||||
|
||||
.dropdown-menu.pull-right {
|
||||
right: 0;
|
||||
left: auto;
|
||||
}
|
||||
|
||||
.dropdown-menu .divider {
|
||||
height: 1px;
|
||||
margin: 9px 0;
|
||||
overflow: hidden;
|
||||
background-color: #e5e5e5;
|
||||
}
|
||||
|
||||
.dropdown-menu > li > a {
|
||||
display: block;
|
||||
padding: 3px 20px;
|
||||
clear: both;
|
||||
font-weight: normal;
|
||||
line-height: 1.428571429;
|
||||
color: #333333;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.dropdown-menu > li > a:hover,
|
||||
.dropdown-menu > li > a:focus {
|
||||
color: #ffffff;
|
||||
text-decoration: none;
|
||||
background-color: #428bca;
|
||||
}
|
||||
|
||||
.dropdown-menu > .active > a,
|
||||
.dropdown-menu > .active > a:hover,
|
||||
.dropdown-menu > .active > a:focus {
|
||||
color: #ffffff;
|
||||
text-decoration: none;
|
||||
background-color: #428bca;
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
.dropdown-menu > .disabled > a,
|
||||
.dropdown-menu > .disabled > a:hover,
|
||||
.dropdown-menu > .disabled > a:focus {
|
||||
color: #999999;
|
||||
}
|
||||
|
||||
.dropdown-menu > .disabled > a:hover,
|
||||
.dropdown-menu > .disabled > a:focus {
|
||||
text-decoration: none;
|
||||
cursor: not-allowed;
|
||||
background-color: transparent;
|
||||
background-image: none;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
}
|
||||
|
||||
.open > .dropdown-menu {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.open > a {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
.dropdown-header {
|
||||
display: block;
|
||||
padding: 3px 20px;
|
||||
font-size: 12px;
|
||||
line-height: 1.428571429;
|
||||
color: #999999;
|
||||
}
|
||||
|
||||
.dropdown-backdrop {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
z-index: 990;
|
||||
}
|
||||
|
||||
.pull-right > .dropdown-menu {
|
||||
right: 0;
|
||||
left: auto;
|
||||
}
|
||||
|
||||
.dropup .caret,
|
||||
.navbar-fixed-bottom .dropdown .caret {
|
||||
border-top: 0 dotted;
|
||||
border-bottom: 4px solid #000000;
|
||||
content: "";
|
||||
}
|
||||
|
||||
.dropup .dropdown-menu,
|
||||
.navbar-fixed-bottom .dropdown .dropdown-menu {
|
||||
top: auto;
|
||||
bottom: 100%;
|
||||
margin-bottom: 1px;
|
||||
}
|
||||
|
||||
.list-group {
|
||||
padding-left: 0;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.list-group-item {
|
||||
position: relative;
|
||||
display: block;
|
||||
padding: 10px 15px;
|
||||
margin-bottom: -1px;
|
||||
background-color: #ffffff;
|
||||
border: 1px solid #dddddd;
|
||||
}
|
||||
|
||||
.list-group-item:first-child {
|
||||
border-top-right-radius: 4px;
|
||||
border-top-left-radius: 4px;
|
||||
}
|
||||
|
||||
.list-group-item:last-child {
|
||||
margin-bottom: 0;
|
||||
border-bottom-right-radius: 4px;
|
||||
border-bottom-left-radius: 4px;
|
||||
}
|
||||
|
||||
.list-group-item > .badge {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.list-group-item > .badge + .badge {
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
a.list-group-item {
|
||||
color: #555555;
|
||||
}
|
||||
|
||||
a.list-group-item .list-group-item-heading {
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
a.list-group-item:hover,
|
||||
a.list-group-item:focus {
|
||||
text-decoration: none;
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
|
||||
.list-group-item.active,
|
||||
.list-group-item.active:hover,
|
||||
.list-group-item.active:focus {
|
||||
z-index: 2;
|
||||
color: #ffffff;
|
||||
background-color: #428bca;
|
||||
border-color: #428bca;
|
||||
}
|
||||
|
||||
.list-group-item.active .list-group-item-heading,
|
||||
.list-group-item.active:hover .list-group-item-heading,
|
||||
.list-group-item.active:focus .list-group-item-heading {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.list-group-item.active .list-group-item-text,
|
||||
.list-group-item.active:hover .list-group-item-text,
|
||||
.list-group-item.active:focus .list-group-item-text {
|
||||
color: #e1edf7;
|
||||
}
|
||||
|
||||
.list-group-item-heading {
|
||||
margin-top: 0;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.list-group-item-text {
|
||||
margin-bottom: 0;
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
.panel {
|
||||
margin-bottom: 20px;
|
||||
background-color: #ffffff;
|
||||
border: 1px solid #dddddd;
|
||||
border-radius: 4px;
|
||||
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
|
||||
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
|
||||
.panel-body {
|
||||
padding: 15px;
|
||||
}
|
||||
|
||||
.panel > .list-group {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.panel > .list-group .list-group-item {
|
||||
border-width: 1px 0;
|
||||
}
|
||||
|
||||
.panel > .list-group .list-group-item:first-child {
|
||||
border-top-right-radius: 0;
|
||||
border-top-left-radius: 0;
|
||||
}
|
||||
|
||||
.panel > .list-group .list-group-item:last-child {
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
.panel-heading + .list-group .list-group-item:first-child {
|
||||
border-top-width: 0;
|
||||
}
|
||||
|
||||
.panel-heading {
|
||||
padding: 10px 15px;
|
||||
background-color: #f5f5f5;
|
||||
border-bottom: 1px solid #dddddd;
|
||||
border-top-right-radius: 3px;
|
||||
border-top-left-radius: 3px;
|
||||
}
|
||||
|
||||
.panel-title {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.panel-title > a {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.panel-footer {
|
||||
padding: 10px 15px;
|
||||
background-color: #f5f5f5;
|
||||
border-top: 1px solid #dddddd;
|
||||
border-bottom-right-radius: 3px;
|
||||
border-bottom-left-radius: 3px;
|
||||
}
|
||||
|
||||
.panel-group .panel {
|
||||
margin-bottom: 0;
|
||||
overflow: hidden;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.panel-group .panel + .panel {
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
.panel-group .panel-heading {
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
.panel-group .panel-heading + .panel-collapse .panel-body {
|
||||
border-top: 1px solid #dddddd;
|
||||
}
|
||||
|
||||
.panel-group .panel-footer {
|
||||
border-top: 0;
|
||||
}
|
||||
|
||||
.panel-group .panel-footer + .panel-collapse .panel-body {
|
||||
border-bottom: 1px solid #dddddd;
|
||||
}
|
||||
|
||||
.panel-primary {
|
||||
border-color: #428bca;
|
||||
}
|
||||
|
||||
.panel-primary > .panel-heading {
|
||||
color: #ffffff;
|
||||
background-color: #428bca;
|
||||
border-color: #428bca;
|
||||
}
|
||||
|
||||
.panel-primary > .panel-heading + .panel-collapse .panel-body {
|
||||
border-top-color: #428bca;
|
||||
}
|
||||
|
||||
.panel-primary > .panel-footer + .panel-collapse .panel-body {
|
||||
border-bottom-color: #428bca;
|
||||
}
|
||||
|
||||
.panel-success {
|
||||
border-color: #d6e9c6;
|
||||
}
|
||||
|
||||
.panel-success > .panel-heading {
|
||||
color: #468847;
|
||||
background-color: #dff0d8;
|
||||
border-color: #d6e9c6;
|
||||
}
|
||||
|
||||
.panel-success > .panel-heading + .panel-collapse .panel-body {
|
||||
border-top-color: #d6e9c6;
|
||||
}
|
||||
|
||||
.panel-success > .panel-footer + .panel-collapse .panel-body {
|
||||
border-bottom-color: #d6e9c6;
|
||||
}
|
||||
|
||||
.panel-warning {
|
||||
border-color: #fbeed5;
|
||||
}
|
||||
|
||||
.panel-warning > .panel-heading {
|
||||
color: #c09853;
|
||||
background-color: #fcf8e3;
|
||||
border-color: #fbeed5;
|
||||
}
|
||||
|
||||
.panel-warning > .panel-heading + .panel-collapse .panel-body {
|
||||
border-top-color: #fbeed5;
|
||||
}
|
||||
|
||||
.panel-warning > .panel-footer + .panel-collapse .panel-body {
|
||||
border-bottom-color: #fbeed5;
|
||||
}
|
||||
|
||||
.panel-danger {
|
||||
border-color: #eed3d7;
|
||||
}
|
||||
|
||||
.panel-danger > .panel-heading {
|
||||
color: #b94a48;
|
||||
background-color: #f2dede;
|
||||
border-color: #eed3d7;
|
||||
}
|
||||
|
||||
.panel-danger > .panel-heading + .panel-collapse .panel-body {
|
||||
border-top-color: #eed3d7;
|
||||
}
|
||||
|
||||
.panel-danger > .panel-footer + .panel-collapse .panel-body {
|
||||
border-bottom-color: #eed3d7;
|
||||
}
|
||||
|
||||
.panel-info {
|
||||
border-color: #bce8f1;
|
||||
}
|
||||
|
||||
.panel-info > .panel-heading {
|
||||
color: #3a87ad;
|
||||
background-color: #d9edf7;
|
||||
border-color: #bce8f1;
|
||||
}
|
||||
|
||||
.panel-info > .panel-heading + .panel-collapse .panel-body {
|
||||
border-top-color: #bce8f1;
|
||||
}
|
||||
|
||||
.panel-info > .panel-footer + .panel-collapse .panel-body {
|
||||
border-bottom-color: #bce8f1;
|
||||
}
|
||||
|
||||
.well {
|
||||
min-height: 20px;
|
||||
padding: 19px;
|
||||
margin-bottom: 20px;
|
||||
background-color: #f5f5f5;
|
||||
border: 1px solid #e3e3e3;
|
||||
border-radius: 4px;
|
||||
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
|
||||
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
|
||||
.well blockquote {
|
||||
border-color: #ddd;
|
||||
border-color: rgba(0, 0, 0, 0.15);
|
||||
}
|
||||
|
||||
.well-lg {
|
||||
padding: 24px;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
.well-sm {
|
||||
padding: 9px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.close {
|
||||
float: right;
|
||||
font-size: 21px;
|
||||
font-weight: bold;
|
||||
line-height: 1;
|
||||
color: #000000;
|
||||
text-shadow: 0 1px 0 #ffffff;
|
||||
opacity: 0.2;
|
||||
filter: alpha(opacity=20);
|
||||
}
|
||||
|
||||
.close:hover,
|
||||
.close:focus {
|
||||
color: #000000;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
opacity: 0.5;
|
||||
filter: alpha(opacity=50);
|
||||
}
|
||||
|
||||
button.close {
|
||||
padding: 0;
|
||||
cursor: pointer;
|
||||
background: transparent;
|
||||
border: 0;
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
.nav {
|
||||
padding-left: 0;
|
||||
margin-bottom: 0;
|
||||
@ -3190,11 +3154,6 @@ button.close {
|
||||
}
|
||||
}
|
||||
|
||||
.navbar-header {
|
||||
padding-right: 15px;
|
||||
padding-left: 15px;
|
||||
}
|
||||
|
||||
.navbar-header:before,
|
||||
.navbar-header:after {
|
||||
display: table;
|
||||
@ -3258,8 +3217,6 @@ button.close {
|
||||
@media (min-width: 768px) {
|
||||
.navbar-collapse {
|
||||
width: auto;
|
||||
padding-right: 0;
|
||||
padding-left: 0;
|
||||
border-top: 0;
|
||||
box-shadow: none;
|
||||
}
|
||||
@ -3274,6 +3231,20 @@ button.close {
|
||||
}
|
||||
}
|
||||
|
||||
.container > .navbar-header,
|
||||
.container > .navbar-collapse {
|
||||
margin-right: -15px;
|
||||
margin-left: -15px;
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
.container > .navbar-header,
|
||||
.container > .navbar-collapse {
|
||||
margin-right: 0;
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.navbar-static-top {
|
||||
border-width: 0 0 1px;
|
||||
}
|
||||
@ -3315,8 +3286,7 @@ button.close {
|
||||
|
||||
.navbar-brand {
|
||||
float: left;
|
||||
padding-top: 15px;
|
||||
padding-bottom: 15px;
|
||||
padding: 15px 15px;
|
||||
font-size: 18px;
|
||||
line-height: 20px;
|
||||
color: #777777;
|
||||
@ -3329,11 +3299,18 @@ button.close {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
.navbar > .container .navbar-brand {
|
||||
margin-left: -15px;
|
||||
}
|
||||
}
|
||||
|
||||
.navbar-toggle {
|
||||
position: relative;
|
||||
float: right;
|
||||
padding: 9px 10px;
|
||||
margin-top: 8px;
|
||||
margin-right: 15px;
|
||||
margin-bottom: 8px;
|
||||
background-color: transparent;
|
||||
border: 1px solid #dddddd;
|
||||
@ -3359,9 +3336,6 @@ button.close {
|
||||
|
||||
@media (min-width: 768px) {
|
||||
.navbar-toggle {
|
||||
position: relative;
|
||||
top: auto;
|
||||
left: auto;
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
@ -3704,278 +3678,6 @@ button.close {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.btn-default .caret {
|
||||
border-top-color: #333333;
|
||||
}
|
||||
|
||||
.btn-primary .caret,
|
||||
.btn-success .caret,
|
||||
.btn-warning .caret,
|
||||
.btn-danger .caret,
|
||||
.btn-info .caret {
|
||||
border-top-color: #fff;
|
||||
}
|
||||
|
||||
.dropup .btn-default .caret {
|
||||
border-bottom-color: #333333;
|
||||
}
|
||||
|
||||
.dropup .btn-primary .caret,
|
||||
.dropup .btn-success .caret,
|
||||
.dropup .btn-warning .caret,
|
||||
.dropup .btn-danger .caret,
|
||||
.dropup .btn-info .caret {
|
||||
border-bottom-color: #fff;
|
||||
}
|
||||
|
||||
.btn-group,
|
||||
.btn-group-vertical {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.btn-group > .btn,
|
||||
.btn-group-vertical > .btn {
|
||||
position: relative;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.btn-group > .btn:hover,
|
||||
.btn-group-vertical > .btn:hover,
|
||||
.btn-group > .btn:focus,
|
||||
.btn-group-vertical > .btn:focus,
|
||||
.btn-group > .btn:active,
|
||||
.btn-group-vertical > .btn:active,
|
||||
.btn-group > .btn.active,
|
||||
.btn-group-vertical > .btn.active {
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.btn-group > .btn:focus,
|
||||
.btn-group-vertical > .btn:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.btn-group .btn + .btn,
|
||||
.btn-group .btn + .btn-group,
|
||||
.btn-group .btn-group + .btn,
|
||||
.btn-group .btn-group + .btn-group {
|
||||
margin-left: -1px;
|
||||
}
|
||||
|
||||
.btn-toolbar:before,
|
||||
.btn-toolbar:after {
|
||||
display: table;
|
||||
content: " ";
|
||||
}
|
||||
|
||||
.btn-toolbar:after {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.btn-toolbar:before,
|
||||
.btn-toolbar:after {
|
||||
display: table;
|
||||
content: " ";
|
||||
}
|
||||
|
||||
.btn-toolbar:after {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.btn-toolbar .btn-group {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.btn-toolbar > .btn + .btn,
|
||||
.btn-toolbar > .btn-group + .btn,
|
||||
.btn-toolbar > .btn + .btn-group,
|
||||
.btn-toolbar > .btn-group + .btn-group {
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.btn-group > .btn:first-child {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
}
|
||||
|
||||
.btn-group > .btn:last-child:not(:first-child),
|
||||
.btn-group > .dropdown-toggle:not(:first-child) {
|
||||
border-bottom-left-radius: 0;
|
||||
border-top-left-radius: 0;
|
||||
}
|
||||
|
||||
.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 > .btn:last-child,
|
||||
.btn-group > .btn-group:first-child > .dropdown-toggle {
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
}
|
||||
|
||||
.btn-group > .btn-group:last-child > .btn:first-child {
|
||||
border-bottom-left-radius: 0;
|
||||
border-top-left-radius: 0;
|
||||
}
|
||||
|
||||
.btn-group .dropdown-toggle:active,
|
||||
.btn-group.open .dropdown-toggle {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
.btn-group-xs > .btn {
|
||||
padding: 5px 10px;
|
||||
padding: 1px 5px;
|
||||
font-size: 12px;
|
||||
line-height: 1.5;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.btn-group-sm > .btn {
|
||||
padding: 5px 10px;
|
||||
font-size: 12px;
|
||||
line-height: 1.5;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.btn-group-lg > .btn {
|
||||
padding: 10px 16px;
|
||||
font-size: 18px;
|
||||
line-height: 1.33;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
.btn-group > .btn + .dropdown-toggle {
|
||||
padding-right: 8px;
|
||||
padding-left: 8px;
|
||||
}
|
||||
|
||||
.btn-group > .btn-lg + .dropdown-toggle {
|
||||
padding-right: 12px;
|
||||
padding-left: 12px;
|
||||
}
|
||||
|
||||
.btn-group.open .dropdown-toggle {
|
||||
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
|
||||
box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
|
||||
}
|
||||
|
||||
.btn .caret {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.btn-lg .caret {
|
||||
border-width: 5px;
|
||||
}
|
||||
|
||||
.dropup .btn-lg .caret {
|
||||
border-bottom-width: 5px;
|
||||
}
|
||||
|
||||
.btn-group-vertical > .btn,
|
||||
.btn-group-vertical > .btn-group {
|
||||
display: block;
|
||||
float: none;
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.btn-group-vertical > .btn-group:before,
|
||||
.btn-group-vertical > .btn-group:after {
|
||||
display: table;
|
||||
content: " ";
|
||||
}
|
||||
|
||||
.btn-group-vertical > .btn-group:after {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.btn-group-vertical > .btn-group:before,
|
||||
.btn-group-vertical > .btn-group:after {
|
||||
display: table;
|
||||
content: " ";
|
||||
}
|
||||
|
||||
.btn-group-vertical > .btn-group:after {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.btn-group-vertical > .btn-group > .btn {
|
||||
float: none;
|
||||
}
|
||||
|
||||
.btn-group-vertical > .btn + .btn,
|
||||
.btn-group-vertical > .btn + .btn-group,
|
||||
.btn-group-vertical > .btn-group + .btn,
|
||||
.btn-group-vertical > .btn-group + .btn-group {
|
||||
margin-top: -1px;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.btn-group-vertical > .btn:first-child:not(:last-child) {
|
||||
border-top-right-radius: 4px;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
|
||||
.btn-group-vertical > .btn:last-child:not(:first-child) {
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-left-radius: 4px;
|
||||
border-top-left-radius: 0;
|
||||
}
|
||||
|
||||
.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.btn-group-vertical > .btn-group:first-child > .btn:last-child,
|
||||
.btn-group-vertical > .btn-group:first-child > .dropdown-toggle {
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
|
||||
.btn-group-vertical > .btn-group:last-child > .btn:first-child {
|
||||
border-top-right-radius: 0;
|
||||
border-top-left-radius: 0;
|
||||
}
|
||||
|
||||
.btn-group-justified {
|
||||
display: table;
|
||||
width: 100%;
|
||||
border-collapse: separate;
|
||||
table-layout: fixed;
|
||||
}
|
||||
|
||||
.btn-group-justified .btn {
|
||||
display: table-cell;
|
||||
float: none;
|
||||
width: 1%;
|
||||
}
|
||||
|
||||
[data-toggle="buttons"] > .btn > input[type="radio"],
|
||||
[data-toggle="buttons"] > .btn > input[type="checkbox"] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.breadcrumb {
|
||||
padding: 8px 15px;
|
||||
margin-bottom: 20px;
|
||||
@ -4165,6 +3867,773 @@ button.close {
|
||||
background-color: #ffffff;
|
||||
}
|
||||
|
||||
.label {
|
||||
display: inline;
|
||||
padding: .25em .6em;
|
||||
font-size: 75%;
|
||||
font-weight: bold;
|
||||
line-height: 1;
|
||||
color: #ffffff;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
vertical-align: baseline;
|
||||
border-radius: .25em;
|
||||
}
|
||||
|
||||
.label[href]:hover,
|
||||
.label[href]:focus {
|
||||
color: #ffffff;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.label:empty {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.label-default {
|
||||
background-color: #999999;
|
||||
}
|
||||
|
||||
.label-default[href]:hover,
|
||||
.label-default[href]:focus {
|
||||
background-color: #808080;
|
||||
}
|
||||
|
||||
.label-primary {
|
||||
background-color: #428bca;
|
||||
}
|
||||
|
||||
.label-primary[href]:hover,
|
||||
.label-primary[href]:focus {
|
||||
background-color: #3071a9;
|
||||
}
|
||||
|
||||
.label-success {
|
||||
background-color: #5cb85c;
|
||||
}
|
||||
|
||||
.label-success[href]:hover,
|
||||
.label-success[href]:focus {
|
||||
background-color: #449d44;
|
||||
}
|
||||
|
||||
.label-info {
|
||||
background-color: #5bc0de;
|
||||
}
|
||||
|
||||
.label-info[href]:hover,
|
||||
.label-info[href]:focus {
|
||||
background-color: #31b0d5;
|
||||
}
|
||||
|
||||
.label-warning {
|
||||
background-color: #f0ad4e;
|
||||
}
|
||||
|
||||
.label-warning[href]:hover,
|
||||
.label-warning[href]:focus {
|
||||
background-color: #ec971f;
|
||||
}
|
||||
|
||||
.label-danger {
|
||||
background-color: #d9534f;
|
||||
}
|
||||
|
||||
.label-danger[href]:hover,
|
||||
.label-danger[href]:focus {
|
||||
background-color: #c9302c;
|
||||
}
|
||||
|
||||
.badge {
|
||||
display: inline-block;
|
||||
min-width: 10px;
|
||||
padding: 3px 7px;
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
line-height: 1;
|
||||
color: #ffffff;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
vertical-align: baseline;
|
||||
background-color: #999999;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.badge:empty {
|
||||
display: none;
|
||||
}
|
||||
|
||||
a.badge:hover,
|
||||
a.badge:focus {
|
||||
color: #ffffff;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.btn .badge {
|
||||
position: relative;
|
||||
top: -1px;
|
||||
}
|
||||
|
||||
a.list-group-item.active > .badge,
|
||||
.nav-pills > .active > a > .badge {
|
||||
color: #428bca;
|
||||
background-color: #ffffff;
|
||||
}
|
||||
|
||||
.nav-pills > li > a > .badge {
|
||||
margin-left: 3px;
|
||||
}
|
||||
|
||||
.jumbotron {
|
||||
padding: 30px;
|
||||
margin-bottom: 30px;
|
||||
font-size: 21px;
|
||||
font-weight: 200;
|
||||
line-height: 2.1428571435;
|
||||
color: inherit;
|
||||
background-color: #eeeeee;
|
||||
}
|
||||
|
||||
.jumbotron h1 {
|
||||
line-height: 1;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.jumbotron p {
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
.container .jumbotron {
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 768px) {
|
||||
.jumbotron {
|
||||
padding-top: 50px;
|
||||
padding-bottom: 50px;
|
||||
}
|
||||
.container .jumbotron {
|
||||
padding-right: 60px;
|
||||
padding-left: 60px;
|
||||
}
|
||||
.jumbotron h1 {
|
||||
font-size: 63px;
|
||||
}
|
||||
}
|
||||
|
||||
.thumbnail,
|
||||
.img-thumbnail {
|
||||
padding: 4px;
|
||||
line-height: 1.428571429;
|
||||
background-color: #ffffff;
|
||||
border: 1px solid #dddddd;
|
||||
border-radius: 4px;
|
||||
-webkit-transition: all 0.2s ease-in-out;
|
||||
transition: all 0.2s ease-in-out;
|
||||
}
|
||||
|
||||
.thumbnail {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.thumbnail > img {
|
||||
display: block;
|
||||
height: auto;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.img-thumbnail {
|
||||
display: inline-block;
|
||||
height: auto;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
a.thumbnail:hover,
|
||||
a.thumbnail:focus {
|
||||
border-color: #428bca;
|
||||
}
|
||||
|
||||
.thumbnail > img {
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
.thumbnail .caption {
|
||||
padding: 9px;
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
.alert {
|
||||
padding: 15px;
|
||||
margin-bottom: 20px;
|
||||
color: #c09853;
|
||||
background-color: #fcf8e3;
|
||||
border: 1px solid #fbeed5;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.alert h4 {
|
||||
margin-top: 0;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.alert hr {
|
||||
border-top-color: #f8e5be;
|
||||
}
|
||||
|
||||
.alert .alert-link {
|
||||
font-weight: bold;
|
||||
color: #a47e3c;
|
||||
}
|
||||
|
||||
.alert > p,
|
||||
.alert > ul {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.alert > p + p {
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
.alert-dismissable {
|
||||
padding-right: 35px;
|
||||
}
|
||||
|
||||
.alert-dismissable .close {
|
||||
position: relative;
|
||||
top: -2px;
|
||||
right: -21px;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.alert-success {
|
||||
color: #468847;
|
||||
background-color: #dff0d8;
|
||||
border-color: #d6e9c6;
|
||||
}
|
||||
|
||||
.alert-success hr {
|
||||
border-top-color: #c9e2b3;
|
||||
}
|
||||
|
||||
.alert-success .alert-link {
|
||||
color: #356635;
|
||||
}
|
||||
|
||||
.alert-danger {
|
||||
color: #b94a48;
|
||||
background-color: #f2dede;
|
||||
border-color: #eed3d7;
|
||||
}
|
||||
|
||||
.alert-danger hr {
|
||||
border-top-color: #e6c1c7;
|
||||
}
|
||||
|
||||
.alert-danger .alert-link {
|
||||
color: #953b39;
|
||||
}
|
||||
|
||||
.alert-info {
|
||||
color: #3a87ad;
|
||||
background-color: #d9edf7;
|
||||
border-color: #bce8f1;
|
||||
}
|
||||
|
||||
.alert-info hr {
|
||||
border-top-color: #a6e1ec;
|
||||
}
|
||||
|
||||
.alert-info .alert-link {
|
||||
color: #2d6987;
|
||||
}
|
||||
|
||||
@-webkit-keyframes progress-bar-stripes {
|
||||
from {
|
||||
background-position: 40px 0;
|
||||
}
|
||||
to {
|
||||
background-position: 0 0;
|
||||
}
|
||||
}
|
||||
|
||||
@-moz-keyframes progress-bar-stripes {
|
||||
from {
|
||||
background-position: 40px 0;
|
||||
}
|
||||
to {
|
||||
background-position: 0 0;
|
||||
}
|
||||
}
|
||||
|
||||
@-o-keyframes progress-bar-stripes {
|
||||
from {
|
||||
background-position: 0 0;
|
||||
}
|
||||
to {
|
||||
background-position: 40px 0;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes progress-bar-stripes {
|
||||
from {
|
||||
background-position: 40px 0;
|
||||
}
|
||||
to {
|
||||
background-position: 0 0;
|
||||
}
|
||||
}
|
||||
|
||||
.progress {
|
||||
height: 20px;
|
||||
margin-bottom: 20px;
|
||||
overflow: hidden;
|
||||
background-color: #f5f5f5;
|
||||
border-radius: 4px;
|
||||
-webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
|
||||
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
float: left;
|
||||
width: 0;
|
||||
height: 100%;
|
||||
font-size: 12px;
|
||||
color: #ffffff;
|
||||
text-align: center;
|
||||
background-color: #428bca;
|
||||
-webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
|
||||
box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
|
||||
-webkit-transition: width 0.6s ease;
|
||||
transition: width 0.6s ease;
|
||||
}
|
||||
|
||||
.progress-striped .progress-bar {
|
||||
background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
|
||||
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
background-size: 40px 40px;
|
||||
}
|
||||
|
||||
.progress.active .progress-bar {
|
||||
-webkit-animation: progress-bar-stripes 2s linear infinite;
|
||||
-moz-animation: progress-bar-stripes 2s linear infinite;
|
||||
-ms-animation: progress-bar-stripes 2s linear infinite;
|
||||
-o-animation: progress-bar-stripes 2s linear infinite;
|
||||
animation: progress-bar-stripes 2s linear infinite;
|
||||
}
|
||||
|
||||
.progress-bar-success {
|
||||
background-color: #5cb85c;
|
||||
}
|
||||
|
||||
.progress-striped .progress-bar-success {
|
||||
background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
|
||||
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
}
|
||||
|
||||
.progress-bar-info {
|
||||
background-color: #5bc0de;
|
||||
}
|
||||
|
||||
.progress-striped .progress-bar-info {
|
||||
background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
|
||||
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
}
|
||||
|
||||
.progress-bar-warning {
|
||||
background-color: #f0ad4e;
|
||||
}
|
||||
|
||||
.progress-striped .progress-bar-warning {
|
||||
background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
|
||||
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
}
|
||||
|
||||
.progress-bar-danger {
|
||||
background-color: #d9534f;
|
||||
}
|
||||
|
||||
.progress-striped .progress-bar-danger {
|
||||
background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
|
||||
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
}
|
||||
|
||||
.media,
|
||||
.media-body {
|
||||
overflow: hidden;
|
||||
zoom: 1;
|
||||
}
|
||||
|
||||
.media,
|
||||
.media .media {
|
||||
margin-top: 15px;
|
||||
}
|
||||
|
||||
.media:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.media-object {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.media-heading {
|
||||
margin: 0 0 5px;
|
||||
}
|
||||
|
||||
.media > .pull-left {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.media > .pull-right {
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.media-list {
|
||||
padding-left: 0;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.list-group {
|
||||
padding-left: 0;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.list-group-item {
|
||||
position: relative;
|
||||
display: block;
|
||||
padding: 10px 15px;
|
||||
margin-bottom: -1px;
|
||||
background-color: #ffffff;
|
||||
border: 1px solid #dddddd;
|
||||
}
|
||||
|
||||
.list-group-item:first-child {
|
||||
border-top-right-radius: 4px;
|
||||
border-top-left-radius: 4px;
|
||||
}
|
||||
|
||||
.list-group-item:last-child {
|
||||
margin-bottom: 0;
|
||||
border-bottom-right-radius: 4px;
|
||||
border-bottom-left-radius: 4px;
|
||||
}
|
||||
|
||||
.list-group-item > .badge {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.list-group-item > .badge + .badge {
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
a.list-group-item {
|
||||
color: #555555;
|
||||
}
|
||||
|
||||
a.list-group-item .list-group-item-heading {
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
a.list-group-item:hover,
|
||||
a.list-group-item:focus {
|
||||
text-decoration: none;
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
|
||||
.list-group-item.active,
|
||||
.list-group-item.active:hover,
|
||||
.list-group-item.active:focus {
|
||||
z-index: 2;
|
||||
color: #ffffff;
|
||||
background-color: #428bca;
|
||||
border-color: #428bca;
|
||||
}
|
||||
|
||||
.list-group-item.active .list-group-item-heading,
|
||||
.list-group-item.active:hover .list-group-item-heading,
|
||||
.list-group-item.active:focus .list-group-item-heading {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.list-group-item.active .list-group-item-text,
|
||||
.list-group-item.active:hover .list-group-item-text,
|
||||
.list-group-item.active:focus .list-group-item-text {
|
||||
color: #e1edf7;
|
||||
}
|
||||
|
||||
.list-group-item-heading {
|
||||
margin-top: 0;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.list-group-item-text {
|
||||
margin-bottom: 0;
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
.panel {
|
||||
margin-bottom: 20px;
|
||||
background-color: #ffffff;
|
||||
border: 1px solid #dddddd;
|
||||
border-radius: 4px;
|
||||
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
|
||||
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
|
||||
.panel-body {
|
||||
padding: 15px;
|
||||
}
|
||||
|
||||
.panel-body:before,
|
||||
.panel-body:after {
|
||||
display: table;
|
||||
content: " ";
|
||||
}
|
||||
|
||||
.panel-body:after {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.panel-body:before,
|
||||
.panel-body:after {
|
||||
display: table;
|
||||
content: " ";
|
||||
}
|
||||
|
||||
.panel-body:after {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.panel > .list-group {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.panel > .list-group .list-group-item {
|
||||
border-width: 1px 0;
|
||||
}
|
||||
|
||||
.panel > .list-group .list-group-item:first-child {
|
||||
border-top-right-radius: 0;
|
||||
border-top-left-radius: 0;
|
||||
}
|
||||
|
||||
.panel > .list-group .list-group-item:last-child {
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
.panel-heading + .list-group .list-group-item:first-child {
|
||||
border-top-width: 0;
|
||||
}
|
||||
|
||||
.panel-heading {
|
||||
padding: 10px 15px;
|
||||
background-color: #f5f5f5;
|
||||
border-bottom: 1px solid #dddddd;
|
||||
border-top-right-radius: 3px;
|
||||
border-top-left-radius: 3px;
|
||||
}
|
||||
|
||||
.panel-title {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.panel-title > a {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.panel-footer {
|
||||
padding: 10px 15px;
|
||||
background-color: #f5f5f5;
|
||||
border-top: 1px solid #dddddd;
|
||||
border-bottom-right-radius: 3px;
|
||||
border-bottom-left-radius: 3px;
|
||||
}
|
||||
|
||||
.panel-group .panel {
|
||||
margin-bottom: 0;
|
||||
overflow: hidden;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.panel-group .panel + .panel {
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
.panel-group .panel-heading {
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
.panel-group .panel-heading + .panel-collapse .panel-body {
|
||||
border-top: 1px solid #dddddd;
|
||||
}
|
||||
|
||||
.panel-group .panel-footer {
|
||||
border-top: 0;
|
||||
}
|
||||
|
||||
.panel-group .panel-footer + .panel-collapse .panel-body {
|
||||
border-bottom: 1px solid #dddddd;
|
||||
}
|
||||
|
||||
.panel-primary {
|
||||
border-color: #428bca;
|
||||
}
|
||||
|
||||
.panel-primary > .panel-heading {
|
||||
color: #ffffff;
|
||||
background-color: #428bca;
|
||||
border-color: #428bca;
|
||||
}
|
||||
|
||||
.panel-primary > .panel-heading + .panel-collapse .panel-body {
|
||||
border-top-color: #428bca;
|
||||
}
|
||||
|
||||
.panel-primary > .panel-footer + .panel-collapse .panel-body {
|
||||
border-bottom-color: #428bca;
|
||||
}
|
||||
|
||||
.panel-success {
|
||||
border-color: #d6e9c6;
|
||||
}
|
||||
|
||||
.panel-success > .panel-heading {
|
||||
color: #468847;
|
||||
background-color: #dff0d8;
|
||||
border-color: #d6e9c6;
|
||||
}
|
||||
|
||||
.panel-success > .panel-heading + .panel-collapse .panel-body {
|
||||
border-top-color: #d6e9c6;
|
||||
}
|
||||
|
||||
.panel-success > .panel-footer + .panel-collapse .panel-body {
|
||||
border-bottom-color: #d6e9c6;
|
||||
}
|
||||
|
||||
.panel-warning {
|
||||
border-color: #fbeed5;
|
||||
}
|
||||
|
||||
.panel-warning > .panel-heading {
|
||||
color: #c09853;
|
||||
background-color: #fcf8e3;
|
||||
border-color: #fbeed5;
|
||||
}
|
||||
|
||||
.panel-warning > .panel-heading + .panel-collapse .panel-body {
|
||||
border-top-color: #fbeed5;
|
||||
}
|
||||
|
||||
.panel-warning > .panel-footer + .panel-collapse .panel-body {
|
||||
border-bottom-color: #fbeed5;
|
||||
}
|
||||
|
||||
.panel-danger {
|
||||
border-color: #eed3d7;
|
||||
}
|
||||
|
||||
.panel-danger > .panel-heading {
|
||||
color: #b94a48;
|
||||
background-color: #f2dede;
|
||||
border-color: #eed3d7;
|
||||
}
|
||||
|
||||
.panel-danger > .panel-heading + .panel-collapse .panel-body {
|
||||
border-top-color: #eed3d7;
|
||||
}
|
||||
|
||||
.panel-danger > .panel-footer + .panel-collapse .panel-body {
|
||||
border-bottom-color: #eed3d7;
|
||||
}
|
||||
|
||||
.panel-info {
|
||||
border-color: #bce8f1;
|
||||
}
|
||||
|
||||
.panel-info > .panel-heading {
|
||||
color: #3a87ad;
|
||||
background-color: #d9edf7;
|
||||
border-color: #bce8f1;
|
||||
}
|
||||
|
||||
.panel-info > .panel-heading + .panel-collapse .panel-body {
|
||||
border-top-color: #bce8f1;
|
||||
}
|
||||
|
||||
.panel-info > .panel-footer + .panel-collapse .panel-body {
|
||||
border-bottom-color: #bce8f1;
|
||||
}
|
||||
|
||||
.well {
|
||||
min-height: 20px;
|
||||
padding: 19px;
|
||||
margin-bottom: 20px;
|
||||
background-color: #f5f5f5;
|
||||
border: 1px solid #e3e3e3;
|
||||
border-radius: 4px;
|
||||
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
|
||||
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
|
||||
.well blockquote {
|
||||
border-color: #ddd;
|
||||
border-color: rgba(0, 0, 0, 0.15);
|
||||
}
|
||||
|
||||
.well-lg {
|
||||
padding: 24px;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
.well-sm {
|
||||
padding: 9px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.close {
|
||||
float: right;
|
||||
font-size: 21px;
|
||||
font-weight: bold;
|
||||
line-height: 1;
|
||||
color: #000000;
|
||||
text-shadow: 0 1px 0 #ffffff;
|
||||
opacity: 0.2;
|
||||
filter: alpha(opacity=20);
|
||||
}
|
||||
|
||||
.close:hover,
|
||||
.close:focus {
|
||||
color: #000000;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
opacity: 0.5;
|
||||
filter: alpha(opacity=50);
|
||||
}
|
||||
|
||||
button.close {
|
||||
padding: 0;
|
||||
cursor: pointer;
|
||||
background: transparent;
|
||||
border: 0;
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
.modal-open {
|
||||
overflow: hidden;
|
||||
}
|
||||
@ -4562,408 +5031,6 @@ button.close {
|
||||
content: " ";
|
||||
}
|
||||
|
||||
.alert {
|
||||
padding: 15px;
|
||||
margin-bottom: 20px;
|
||||
color: #c09853;
|
||||
background-color: #fcf8e3;
|
||||
border: 1px solid #fbeed5;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.alert h4 {
|
||||
margin-top: 0;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.alert hr {
|
||||
border-top-color: #f8e5be;
|
||||
}
|
||||
|
||||
.alert .alert-link {
|
||||
font-weight: bold;
|
||||
color: #a47e3c;
|
||||
}
|
||||
|
||||
.alert > p,
|
||||
.alert > ul {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.alert > p + p {
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
.alert-dismissable {
|
||||
padding-right: 35px;
|
||||
}
|
||||
|
||||
.alert-dismissable .close {
|
||||
position: relative;
|
||||
top: -2px;
|
||||
right: -21px;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.alert-success {
|
||||
color: #468847;
|
||||
background-color: #dff0d8;
|
||||
border-color: #d6e9c6;
|
||||
}
|
||||
|
||||
.alert-success hr {
|
||||
border-top-color: #c9e2b3;
|
||||
}
|
||||
|
||||
.alert-success .alert-link {
|
||||
color: #356635;
|
||||
}
|
||||
|
||||
.alert-danger {
|
||||
color: #b94a48;
|
||||
background-color: #f2dede;
|
||||
border-color: #eed3d7;
|
||||
}
|
||||
|
||||
.alert-danger hr {
|
||||
border-top-color: #e6c1c7;
|
||||
}
|
||||
|
||||
.alert-danger .alert-link {
|
||||
color: #953b39;
|
||||
}
|
||||
|
||||
.alert-info {
|
||||
color: #3a87ad;
|
||||
background-color: #d9edf7;
|
||||
border-color: #bce8f1;
|
||||
}
|
||||
|
||||
.alert-info hr {
|
||||
border-top-color: #a6e1ec;
|
||||
}
|
||||
|
||||
.alert-info .alert-link {
|
||||
color: #2d6987;
|
||||
}
|
||||
|
||||
.thumbnail,
|
||||
.img-thumbnail {
|
||||
padding: 4px;
|
||||
line-height: 1.428571429;
|
||||
background-color: #ffffff;
|
||||
border: 1px solid #dddddd;
|
||||
border-radius: 4px;
|
||||
-webkit-transition: all 0.2s ease-in-out;
|
||||
transition: all 0.2s ease-in-out;
|
||||
}
|
||||
|
||||
.thumbnail {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.thumbnail > img {
|
||||
display: block;
|
||||
height: auto;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.img-thumbnail {
|
||||
display: inline-block;
|
||||
height: auto;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
a.thumbnail:hover,
|
||||
a.thumbnail:focus {
|
||||
border-color: #428bca;
|
||||
}
|
||||
|
||||
.thumbnail > img {
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
.thumbnail .caption {
|
||||
padding: 9px;
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
.media,
|
||||
.media-body {
|
||||
overflow: hidden;
|
||||
zoom: 1;
|
||||
}
|
||||
|
||||
.media,
|
||||
.media .media {
|
||||
margin-top: 15px;
|
||||
}
|
||||
|
||||
.media:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.media-object {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.media-heading {
|
||||
margin: 0 0 5px;
|
||||
}
|
||||
|
||||
.media > .pull-left {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.media > .pull-right {
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.media-list {
|
||||
padding-left: 0;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.label {
|
||||
display: inline;
|
||||
padding: .25em .6em;
|
||||
font-size: 75%;
|
||||
font-weight: bold;
|
||||
line-height: 1;
|
||||
color: #ffffff;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
vertical-align: baseline;
|
||||
border-radius: .25em;
|
||||
}
|
||||
|
||||
.label[href]:hover,
|
||||
.label[href]:focus {
|
||||
color: #ffffff;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.label:empty {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.label-default {
|
||||
background-color: #999999;
|
||||
}
|
||||
|
||||
.label-default[href]:hover,
|
||||
.label-default[href]:focus {
|
||||
background-color: #808080;
|
||||
}
|
||||
|
||||
.label-primary {
|
||||
background-color: #428bca;
|
||||
}
|
||||
|
||||
.label-primary[href]:hover,
|
||||
.label-primary[href]:focus {
|
||||
background-color: #3071a9;
|
||||
}
|
||||
|
||||
.label-success {
|
||||
background-color: #5cb85c;
|
||||
}
|
||||
|
||||
.label-success[href]:hover,
|
||||
.label-success[href]:focus {
|
||||
background-color: #449d44;
|
||||
}
|
||||
|
||||
.label-info {
|
||||
background-color: #5bc0de;
|
||||
}
|
||||
|
||||
.label-info[href]:hover,
|
||||
.label-info[href]:focus {
|
||||
background-color: #31b0d5;
|
||||
}
|
||||
|
||||
.label-warning {
|
||||
background-color: #f0ad4e;
|
||||
}
|
||||
|
||||
.label-warning[href]:hover,
|
||||
.label-warning[href]:focus {
|
||||
background-color: #ec971f;
|
||||
}
|
||||
|
||||
.label-danger {
|
||||
background-color: #d9534f;
|
||||
}
|
||||
|
||||
.label-danger[href]:hover,
|
||||
.label-danger[href]:focus {
|
||||
background-color: #c9302c;
|
||||
}
|
||||
|
||||
.badge {
|
||||
display: inline-block;
|
||||
min-width: 10px;
|
||||
padding: 3px 7px;
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
line-height: 1;
|
||||
color: #ffffff;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
vertical-align: baseline;
|
||||
background-color: #999999;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.badge:empty {
|
||||
display: none;
|
||||
}
|
||||
|
||||
a.badge:hover,
|
||||
a.badge:focus {
|
||||
color: #ffffff;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.btn .badge {
|
||||
position: relative;
|
||||
top: -1px;
|
||||
}
|
||||
|
||||
a.list-group-item.active > .badge,
|
||||
.nav-pills > .active > a > .badge {
|
||||
color: #428bca;
|
||||
background-color: #ffffff;
|
||||
}
|
||||
|
||||
.nav-pills > li > a > .badge {
|
||||
margin-left: 3px;
|
||||
}
|
||||
|
||||
@-webkit-keyframes progress-bar-stripes {
|
||||
from {
|
||||
background-position: 40px 0;
|
||||
}
|
||||
to {
|
||||
background-position: 0 0;
|
||||
}
|
||||
}
|
||||
|
||||
@-moz-keyframes progress-bar-stripes {
|
||||
from {
|
||||
background-position: 40px 0;
|
||||
}
|
||||
to {
|
||||
background-position: 0 0;
|
||||
}
|
||||
}
|
||||
|
||||
@-o-keyframes progress-bar-stripes {
|
||||
from {
|
||||
background-position: 0 0;
|
||||
}
|
||||
to {
|
||||
background-position: 40px 0;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes progress-bar-stripes {
|
||||
from {
|
||||
background-position: 40px 0;
|
||||
}
|
||||
to {
|
||||
background-position: 0 0;
|
||||
}
|
||||
}
|
||||
|
||||
.progress {
|
||||
height: 20px;
|
||||
margin-bottom: 20px;
|
||||
overflow: hidden;
|
||||
background-color: #f5f5f5;
|
||||
border-radius: 4px;
|
||||
-webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
|
||||
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
float: left;
|
||||
width: 0;
|
||||
height: 100%;
|
||||
font-size: 12px;
|
||||
color: #ffffff;
|
||||
text-align: center;
|
||||
background-color: #428bca;
|
||||
-webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
|
||||
box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
|
||||
-webkit-transition: width 0.6s ease;
|
||||
transition: width 0.6s ease;
|
||||
}
|
||||
|
||||
.progress-striped .progress-bar {
|
||||
background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
|
||||
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
background-size: 40px 40px;
|
||||
}
|
||||
|
||||
.progress.active .progress-bar {
|
||||
-webkit-animation: progress-bar-stripes 2s linear infinite;
|
||||
-moz-animation: progress-bar-stripes 2s linear infinite;
|
||||
-ms-animation: progress-bar-stripes 2s linear infinite;
|
||||
-o-animation: progress-bar-stripes 2s linear infinite;
|
||||
animation: progress-bar-stripes 2s linear infinite;
|
||||
}
|
||||
|
||||
.progress-bar-success {
|
||||
background-color: #5cb85c;
|
||||
}
|
||||
|
||||
.progress-striped .progress-bar-success {
|
||||
background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
|
||||
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
}
|
||||
|
||||
.progress-bar-info {
|
||||
background-color: #5bc0de;
|
||||
}
|
||||
|
||||
.progress-striped .progress-bar-info {
|
||||
background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
|
||||
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
}
|
||||
|
||||
.progress-bar-warning {
|
||||
background-color: #f0ad4e;
|
||||
}
|
||||
|
||||
.progress-striped .progress-bar-warning {
|
||||
background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
|
||||
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
}
|
||||
|
||||
.progress-bar-danger {
|
||||
background-color: #d9534f;
|
||||
}
|
||||
|
||||
.progress-striped .progress-bar-danger {
|
||||
background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
|
||||
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
}
|
||||
|
||||
.carousel {
|
||||
position: relative;
|
||||
}
|
||||
@ -5157,35 +5224,6 @@ a.list-group-item.active > .badge,
|
||||
}
|
||||
}
|
||||
|
||||
.jumbotron {
|
||||
padding: 30px;
|
||||
margin-bottom: 30px;
|
||||
font-size: 21px;
|
||||
font-weight: 200;
|
||||
line-height: 2.1428571435;
|
||||
color: inherit;
|
||||
background-color: #eeeeee;
|
||||
}
|
||||
|
||||
.jumbotron h1 {
|
||||
line-height: 1;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.jumbotron p {
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 768px) {
|
||||
.jumbotron {
|
||||
padding: 50px 60px;
|
||||
border-radius: 6px;
|
||||
}
|
||||
.jumbotron h1 {
|
||||
font-size: 63px;
|
||||
}
|
||||
}
|
||||
|
||||
.clearfix:before,
|
||||
.clearfix:after {
|
||||
display: table;
|
||||
|
2
dist/css/bootstrap.min.css
vendored
28
dist/js/bootstrap.js
vendored
@ -49,7 +49,7 @@ if (!jQuery) { throw new Error("Bootstrap requires jQuery") }
|
||||
|
||||
// http://blog.alexmaccaw.com/css-transitions
|
||||
$.fn.emulateTransitionEnd = function (duration) {
|
||||
var called = false, $el = this
|
||||
var called = false, $el = this
|
||||
$(this).one($.support.transition.end, function () { called = true })
|
||||
var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
|
||||
setTimeout(callback, duration)
|
||||
@ -711,7 +711,7 @@ if (!jQuery) { throw new Error("Bootstrap requires jQuery") }
|
||||
clearMenus()
|
||||
|
||||
if (!isActive) {
|
||||
if ('ontouchstart' in document.documentElement) {
|
||||
if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
|
||||
// if mobile we we use a backdrop because click events don't delegate
|
||||
$('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus)
|
||||
}
|
||||
@ -723,9 +723,9 @@ if (!jQuery) { throw new Error("Bootstrap requires jQuery") }
|
||||
$parent
|
||||
.toggleClass('open')
|
||||
.trigger('shown.bs.dropdown')
|
||||
}
|
||||
|
||||
$this.focus()
|
||||
$this.focus()
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
@ -851,7 +851,7 @@ if (!jQuery) { throw new Error("Bootstrap requires jQuery") }
|
||||
|
||||
var Modal = function (element, options) {
|
||||
this.options = options
|
||||
this.$element = $(element).on('click.dismiss.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
|
||||
this.$element = $(element)
|
||||
this.$backdrop =
|
||||
this.isShown = null
|
||||
|
||||
@ -880,6 +880,8 @@ if (!jQuery) { throw new Error("Bootstrap requires jQuery") }
|
||||
|
||||
this.escape()
|
||||
|
||||
this.$element.on('click.dismiss.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
|
||||
|
||||
this.backdrop(function () {
|
||||
var transition = $.support.transition && that.$element.hasClass('fade')
|
||||
|
||||
@ -902,7 +904,7 @@ if (!jQuery) { throw new Error("Bootstrap requires jQuery") }
|
||||
var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
|
||||
|
||||
transition ?
|
||||
that.$element
|
||||
that.$element.find('.modal-dialog') // wait for modal to slide in
|
||||
.one($.support.transition.end, function () {
|
||||
that.$element.focus().trigger(e)
|
||||
})
|
||||
@ -1179,10 +1181,11 @@ if (!jQuery) { throw new Error("Bootstrap requires jQuery") }
|
||||
|
||||
clearTimeout(self.timeout)
|
||||
|
||||
self.hoverState = 'in'
|
||||
|
||||
if (!self.options.delay || !self.options.delay.show) return self.show()
|
||||
|
||||
self.hoverState = 'in'
|
||||
self.timeout = setTimeout(function () {
|
||||
self.timeout = setTimeout(function () {
|
||||
if (self.hoverState == 'in') self.show()
|
||||
}, self.options.delay.show)
|
||||
}
|
||||
@ -1193,10 +1196,11 @@ if (!jQuery) { throw new Error("Bootstrap requires jQuery") }
|
||||
|
||||
clearTimeout(self.timeout)
|
||||
|
||||
self.hoverState = 'out'
|
||||
|
||||
if (!self.options.delay || !self.options.delay.hide) return self.hide()
|
||||
|
||||
self.hoverState = 'out'
|
||||
self.timeout = setTimeout(function () {
|
||||
self.timeout = setTimeout(function () {
|
||||
if (self.hoverState == 'out') self.hide()
|
||||
}, self.options.delay.hide)
|
||||
}
|
||||
@ -1329,7 +1333,9 @@ if (!jQuery) { throw new Error("Bootstrap requires jQuery") }
|
||||
var $tip = this.tip()
|
||||
var e = $.Event('hide.bs.' + this.type)
|
||||
|
||||
function complete() { $tip.detach() }
|
||||
function complete() {
|
||||
if (that.hoverState != 'in') $tip.detach()
|
||||
}
|
||||
|
||||
this.$element.trigger(e)
|
||||
|
||||
|
2
dist/js/bootstrap.min.js
vendored
@ -18,7 +18,7 @@
|
||||
|
||||
<body>
|
||||
|
||||
<div class="container-narrow">
|
||||
<div class="container">
|
||||
<div class="header">
|
||||
<ul class="nav nav-pills pull-right">
|
||||
<li class="active"><a href="#">Home</a></li>
|
||||
@ -31,7 +31,7 @@
|
||||
<div class="jumbotron">
|
||||
<h1>Jumbotron heading</h1>
|
||||
<p class="lead">Cras justo odio, dapibus ac facilisis in, egestas eget quam. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
|
||||
<p><a class="btn btn-large btn-success" href="#">Sign up today</a></p>
|
||||
<p><a class="btn btn-lg btn-success" href="#">Sign up today</a></p>
|
||||
</div>
|
||||
|
||||
<div class="row marketing">
|
||||
|
@ -31,10 +31,11 @@ body {
|
||||
border-top: 1px solid #e5e5e5;
|
||||
}
|
||||
|
||||
/* Custom container */
|
||||
.container-narrow {
|
||||
margin: 0 auto;
|
||||
max-width: 700px;
|
||||
/* Customize container */
|
||||
@media (min-width: 768px) {
|
||||
.container {
|
||||
max-width: 730px;
|
||||
}
|
||||
}
|
||||
.container-narrow > hr {
|
||||
margin: 30px 0;
|
||||
|
@ -59,15 +59,16 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<!-- Main jumbotron for a primary marketing message or call to action -->
|
||||
<div class="jumbotron">
|
||||
<!-- Main jumbotron for a primary marketing message or call to action -->
|
||||
<div class="jumbotron">
|
||||
<div class="container">
|
||||
<h1>Hello, world!</h1>
|
||||
<p>This is a template for a simple marketing or informational website. It includes a large callout called the hero unit and three supporting pieces of content. Use it as a starting point to create something more unique.</p>
|
||||
<p><a class="btn btn-primary btn-large">Learn more »</a></p>
|
||||
<p><a class="btn btn-primary btn-lg">Learn more »</a></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="body-content">
|
||||
|
||||
<!-- Example row of columns -->
|
||||
|
@ -13,10 +13,6 @@ body {
|
||||
|
||||
/* Responsive: Portrait tablets and up */
|
||||
@media screen and (min-width: 768px) {
|
||||
/* Let the jumbotron breathe */
|
||||
.jumbotron {
|
||||
margin-top: 20px;
|
||||
}
|
||||
/* Remove padding from wrapping element since we kick in the grid classes here */
|
||||
.body-content {
|
||||
padding: 0;
|
||||
|
@ -36,7 +36,7 @@
|
||||
<div class="jumbotron">
|
||||
<h1>Marketing stuff!</h1>
|
||||
<p class="lead">Cras justo odio, dapibus ac facilisis in, egestas eget quam. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet.</p>
|
||||
<p><a class="btn btn-large btn-success" href="#">Get started today</a></p>
|
||||
<p><a class="btn btn-lg btn-success" href="#">Get started today</a></p>
|
||||
</div>
|
||||
|
||||
|
||||
|
@ -64,7 +64,7 @@
|
||||
<p>This example is a quick exercise to illustrate how the default, static and fixed to top navbar work. It includes the responsive CSS and HTML, so it also adapts to your viewport and device.</p>
|
||||
<p>To see the difference between static and fixed top navbars, just scroll.</p>
|
||||
<p>
|
||||
<a class="btn btn-large btn-primary" href="../../components/#navbar">View navbar docs »</a>
|
||||
<a class="btn btn-lg btn-primary" href="../../components/#navbar">View navbar docs »</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
@ -65,7 +65,7 @@
|
||||
<p>This example is a quick exercise to illustrate how the default, static and fixed to top navbar work. It includes the responsive CSS and HTML, so it also adapts to your viewport and device.</p>
|
||||
<p>To see the difference between static and fixed top navbars, just scroll.</p>
|
||||
<p>
|
||||
<a class="btn btn-large btn-primary" href="../../components/#navbar">View navbar docs »</a>
|
||||
<a class="btn btn-lg btn-primary" href="../../components/#navbar">View navbar docs »</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="description" content="">
|
||||
<meta name="author" content="">
|
||||
<link rel="shortcut icon" href="../../assets/ico/favicon.png">
|
||||
|
||||
<title>Navbar Template for Bootstrap</title>
|
||||
|
||||
@ -21,40 +22,38 @@
|
||||
|
||||
<!-- Static navbar -->
|
||||
<div class="navbar">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="#">Project name</a>
|
||||
</div>
|
||||
<div class="navbar-collapse collapse">
|
||||
<ul class="nav navbar-nav">
|
||||
<li class="active"><a href="#">Home</a></li>
|
||||
<li><a href="#about">About</a></li>
|
||||
<li><a href="#contact">Contact</a></li>
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="#">Action</a></li>
|
||||
<li><a href="#">Another action</a></li>
|
||||
<li><a href="#">Something else here</a></li>
|
||||
<li class="divider"></li>
|
||||
<li class="dropdown-header">Nav header</li>
|
||||
<li><a href="#">Separated link</a></li>
|
||||
<li><a href="#">One more separated link</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
<li class="active"><a href="./">Default</a></li>
|
||||
<li><a href="../navbar-static-top/">Static top</a></li>
|
||||
<li><a href="../navbar-fixed-top/">Fixed top</a></li>
|
||||
</ul>
|
||||
</div><!--/.nav-collapse -->
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="#">Project name</a>
|
||||
</div>
|
||||
<div class="navbar-collapse collapse">
|
||||
<ul class="nav navbar-nav">
|
||||
<li class="active"><a href="#">Link</a></li>
|
||||
<li><a href="#">Link</a></li>
|
||||
<li><a href="#">Link</a></li>
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="#">Action</a></li>
|
||||
<li><a href="#">Another action</a></li>
|
||||
<li><a href="#">Something else here</a></li>
|
||||
<li class="divider"></li>
|
||||
<li class="dropdown-header">Nav header</li>
|
||||
<li><a href="#">Separated link</a></li>
|
||||
<li><a href="#">One more separated link</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
<li class="active"><a href="./">Default</a></li>
|
||||
<li><a href="../navbar-static-top/">Static top</a></li>
|
||||
<li><a href="../navbar-fixed-top/">Fixed top</a></li>
|
||||
</ul>
|
||||
</div><!--/.nav-collapse -->
|
||||
</div>
|
||||
|
||||
<!-- Main component for a primary marketing message or call to action -->
|
||||
@ -62,7 +61,7 @@
|
||||
<h1>Navbar example</h1>
|
||||
<p>This example is a quick exercise to illustrate how the default, static navbar and fixed to top navbar work. It includes the responsive CSS and HTML, so it also adapts to your viewport and device.</p>
|
||||
<p>
|
||||
<a class="btn btn-large btn-primary" href="../../components/#navbar">View navbar docs »</a>
|
||||
<a class="btn btn-lg btn-primary" href="../../components/#navbar">View navbar docs »</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
47
examples/non-responsive/index.html
Normal file
@ -0,0 +1,47 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="description" content="">
|
||||
<meta name="author" content="">
|
||||
|
||||
<!-- Note there is no responsive meta tag here -->
|
||||
|
||||
<link rel="shortcut icon" href="../../assets/ico/favicon.png">
|
||||
|
||||
<title>Non-responsive Template for Bootstrap</title>
|
||||
|
||||
<!-- Bootstrap core CSS -->
|
||||
<link href="../../dist/css/bootstrap.css" rel="stylesheet">
|
||||
|
||||
<!-- Custom styles for this template -->
|
||||
<link href="non-responsive.css" rel="stylesheet">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<div class="page-header">
|
||||
<h1>Non-responsive Bootstrap</h1>
|
||||
<p class="lead">Disable the responsiveness of Bootstrap by fixing the width of the container and using the first grid system tier.</p>
|
||||
</div>
|
||||
|
||||
<h3>What changes</h3>
|
||||
<p>Note the lack of the <code><meta name="viewport" content="width=device-width, initial-scale=1.0"></code>, which disables the zooming aspect of sites in mobile devices. In addition, we reset our container's width and are basically good to go.</p>
|
||||
|
||||
<h3>Non-responsive grid system</h3>
|
||||
<div class="row">
|
||||
<div class="col-xs-4">One third</div>
|
||||
<div class="col-xs-4">One third</div>
|
||||
<div class="col-xs-4">One third</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /container -->
|
||||
|
||||
|
||||
<!-- Bootstrap core JavaScript
|
||||
================================================== -->
|
||||
<!-- Placed at the end of the document so the pages load faster -->
|
||||
<script src="../../assets/js/respond.min.js"></script>
|
||||
</body>
|
||||
</html>
|
13
examples/non-responsive/non-responsive.css
Normal file
@ -0,0 +1,13 @@
|
||||
.container {
|
||||
max-width: none !important;
|
||||
width: 970px;
|
||||
}
|
||||
|
||||
.col-xs-4 {
|
||||
padding-top: 15px;
|
||||
padding-bottom: 15px;
|
||||
background-color: #eee;
|
||||
border: 1px solid #ddd;
|
||||
background-color: rgba(86,61,124,.15);
|
||||
border: 1px solid rgba(86,61,124,.2);
|
||||
}
|
Before Width: | Height: | Size: 139 KiB After Width: | Height: | Size: 80 KiB |
Before Width: | Height: | Size: 158 KiB After Width: | Height: | Size: 98 KiB |
Before Width: | Height: | Size: 120 KiB After Width: | Height: | Size: 67 KiB |
Before Width: | Height: | Size: 136 KiB After Width: | Height: | Size: 76 KiB |
Before Width: | Height: | Size: 138 KiB After Width: | Height: | Size: 77 KiB |
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 39 KiB |
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 40 KiB |
BIN
examples/screenshots/non-responsive.jpg
Normal file
After Width: | Height: | Size: 43 KiB |
Before Width: | Height: | Size: 198 KiB After Width: | Height: | Size: 110 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 24 KiB |
BIN
examples/screenshots/theme.jpg
Normal file
After Width: | Height: | Size: 93 KiB |
@ -27,7 +27,7 @@
|
||||
<label class="checkbox">
|
||||
<input type="checkbox" value="remember-me"> Remember me
|
||||
</label>
|
||||
<button class="btn btn-large btn-primary btn-block" type="submit">Sign in</button>
|
||||
<button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
|
||||
</form>
|
||||
|
||||
</div> <!-- /container -->
|
||||
|
382
examples/theme/index.html
Normal file
@ -0,0 +1,382 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="description" content="">
|
||||
<meta name="author" content="">
|
||||
<link rel="shortcut icon" href="../../assets/ico/favicon.png">
|
||||
|
||||
<title>Theme Template for Bootstrap</title>
|
||||
|
||||
<!-- Bootstrap core CSS -->
|
||||
<link href="../../dist/css/bootstrap.css" rel="stylesheet">
|
||||
<!-- Bootstrap theme -->
|
||||
<link href="../../dist/css/bootstrap-theme.min.css" rel="stylesheet">
|
||||
|
||||
<!-- Custom styles for this template -->
|
||||
<link href="theme.css" rel="stylesheet">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<!-- Fixed navbar -->
|
||||
<div class="navbar navbar-inverse navbar-fixed-top">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="#">Bootstrap theme</a>
|
||||
</div>
|
||||
<div class="navbar-collapse collapse">
|
||||
<ul class="nav navbar-nav">
|
||||
<li class="active"><a href="#">Home</a></li>
|
||||
<li><a href="#about">About</a></li>
|
||||
<li><a href="#contact">Contact</a></li>
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="#">Action</a></li>
|
||||
<li><a href="#">Another action</a></li>
|
||||
<li><a href="#">Something else here</a></li>
|
||||
<li class="divider"></li>
|
||||
<li class="dropdown-header">Nav header</li>
|
||||
<li><a href="#">Separated link</a></li>
|
||||
<li><a href="#">One more separated link</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div><!--/.nav-collapse -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container theme-showcase">
|
||||
|
||||
<!-- Main jumbotron for a primary marketing message or call to action -->
|
||||
<div class="jumbotron">
|
||||
<h1>Hello, world!</h1>
|
||||
<p>This is a template for a simple marketing or informational website. It includes a large callout called the hero unit and three supporting pieces of content. Use it as a starting point to create something more unique.</p>
|
||||
<p><a class="btn btn-primary btn-lg">Learn more »</a></p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="page-header">
|
||||
<h1>Buttons</h1>
|
||||
</div>
|
||||
<p>
|
||||
<button type="button" class="btn btn-lg btn-default">Default</button>
|
||||
<button type="button" class="btn btn-lg btn-primary">Primary</button>
|
||||
<button type="button" class="btn btn-lg btn-success">Success</button>
|
||||
<button type="button" class="btn btn-lg btn-info">Info</button>
|
||||
<button type="button" class="btn btn-lg btn-warning">Warning</button>
|
||||
<button type="button" class="btn btn-lg btn-danger">Danger</button>
|
||||
<button type="button" class="btn btn-lg btn-link">Link</button>
|
||||
</p>
|
||||
<p>
|
||||
<button type="button" class="btn btn-default">Default</button>
|
||||
<button type="button" class="btn btn-primary">Primary</button>
|
||||
<button type="button" class="btn btn-success">Success</button>
|
||||
<button type="button" class="btn btn-info">Info</button>
|
||||
<button type="button" class="btn btn-warning">Warning</button>
|
||||
<button type="button" class="btn btn-danger">Danger</button>
|
||||
<button type="button" class="btn btn-link">Link</button>
|
||||
</p>
|
||||
<p>
|
||||
<button type="button" class="btn btn-sm btn-default">Default</button>
|
||||
<button type="button" class="btn btn-sm btn-primary">Primary</button>
|
||||
<button type="button" class="btn btn-sm btn-success">Success</button>
|
||||
<button type="button" class="btn btn-sm btn-info">Info</button>
|
||||
<button type="button" class="btn btn-sm btn-warning">Warning</button>
|
||||
<button type="button" class="btn btn-sm btn-danger">Danger</button>
|
||||
<button type="button" class="btn btn-sm btn-link">Link</button>
|
||||
</p>
|
||||
<p>
|
||||
<button type="button" class="btn btn-xs btn-default">Default</button>
|
||||
<button type="button" class="btn btn-xs btn-primary">Primary</button>
|
||||
<button type="button" class="btn btn-xs btn-success">Success</button>
|
||||
<button type="button" class="btn btn-xs btn-info">Info</button>
|
||||
<button type="button" class="btn btn-xs btn-warning">Warning</button>
|
||||
<button type="button" class="btn btn-xs btn-danger">Danger</button>
|
||||
<button type="button" class="btn btn-xs btn-link">Link</button>
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
<div class="page-header">
|
||||
<h1>Thumbnails</h1>
|
||||
</div>
|
||||
<img data-src="holder.js/200x200" src="data:image/png;base64," class="img-thumbnail" alt="A generic square placeholder image with a white border around it, making it resemble a photograph taken with an old instant camera">
|
||||
|
||||
|
||||
|
||||
<div class="page-header">
|
||||
<h1>Dropdown menus</h1>
|
||||
</div>
|
||||
<div class="dropdown theme-dropdown clearfix">
|
||||
<a id="dropdownMenu1" href="#" role="button" class="sr-only dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu1">
|
||||
<li role="presentation"><a role="menuitem" tabindex="-1" href="#">Action</a></li>
|
||||
<li role="presentation"><a role="menuitem" tabindex="-1" href="#">Another action</a></li>
|
||||
<li role="presentation"><a role="menuitem" tabindex="-1" href="#">Something else here</a></li>
|
||||
<li role="presentation" class="divider"></li>
|
||||
<li role="presentation"><a role="menuitem" tabindex="-1" href="#">Separated link</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="page-header">
|
||||
<h1>Navbars</h1>
|
||||
</div>
|
||||
|
||||
<div class="navbar">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="#">Project name</a>
|
||||
</div>
|
||||
<div class="navbar-collapse collapse">
|
||||
<ul class="nav navbar-nav">
|
||||
<li class="active"><a href="#">Home</a></li>
|
||||
<li><a href="#about">About</a></li>
|
||||
<li><a href="#contact">Contact</a></li>
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="#">Action</a></li>
|
||||
<li><a href="#">Another action</a></li>
|
||||
<li><a href="#">Something else here</a></li>
|
||||
<li class="divider"></li>
|
||||
<li class="dropdown-header">Nav header</li>
|
||||
<li><a href="#">Separated link</a></li>
|
||||
<li><a href="#">One more separated link</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
<li><a href="../navbar/">Default</a></li>
|
||||
<li><a href="../navbar-static-top/">Static top</a></li>
|
||||
<li class="active"><a href="./">Fixed top</a></li>
|
||||
</ul>
|
||||
</div><!--/.nav-collapse -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="navbar navbar-inverse">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="#">Project name</a>
|
||||
</div>
|
||||
<div class="navbar-collapse collapse">
|
||||
<ul class="nav navbar-nav">
|
||||
<li class="active"><a href="#">Home</a></li>
|
||||
<li><a href="#about">About</a></li>
|
||||
<li><a href="#contact">Contact</a></li>
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="#">Action</a></li>
|
||||
<li><a href="#">Another action</a></li>
|
||||
<li><a href="#">Something else here</a></li>
|
||||
<li class="divider"></li>
|
||||
<li class="dropdown-header">Nav header</li>
|
||||
<li><a href="#">Separated link</a></li>
|
||||
<li><a href="#">One more separated link</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
<li><a href="../navbar/">Default</a></li>
|
||||
<li><a href="../navbar-static-top/">Static top</a></li>
|
||||
<li class="active"><a href="./">Fixed top</a></li>
|
||||
</ul>
|
||||
</div><!--/.nav-collapse -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="page-header">
|
||||
<h1>Alerts</h1>
|
||||
</div>
|
||||
<div class="alert">
|
||||
<strong>Warning!</strong> Best check yo self, you're not looking too good.
|
||||
</div>
|
||||
<div class="alert alert-success">
|
||||
<strong>Well done!</strong> You successfully read this important alert message.
|
||||
</div>
|
||||
<div class="alert alert-info">
|
||||
<strong>Heads up!</strong> This alert needs your attention, but it's not super important.
|
||||
</div>
|
||||
<div class="alert alert-danger">
|
||||
<strong>Oh snap!</strong> Change a few things up and try submitting again.
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="page-header">
|
||||
<h1>Progress bars</h1>
|
||||
</div>
|
||||
<div class="progress">
|
||||
<div class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 60%;"><span class="sr-only">60% Complete</span></div>
|
||||
</div>
|
||||
<div class="progress">
|
||||
<div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: 40%"><span class="sr-only">40% Complete (success)</span></div>
|
||||
</div>
|
||||
<div class="progress">
|
||||
<div class="progress-bar progress-bar-info" role="progressbar" aria-valuenow="20" aria-valuemin="0" aria-valuemax="100" style="width: 20%"><span class="sr-only">20% Complete</span></div>
|
||||
</div>
|
||||
<div class="progress">
|
||||
<div class="progress-bar progress-bar-warning" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 60%"><span class="sr-only">60% Complete (warning)</span></div>
|
||||
</div>
|
||||
<div class="progress">
|
||||
<div class="progress-bar progress-bar-danger" role="progressbar" aria-valuenow="80" aria-valuemin="0" aria-valuemax="100" style="width: 80%"><span class="sr-only">80% Complete (danger)</span></div>
|
||||
</div>
|
||||
<div class="progress">
|
||||
<div class="progress-bar progress-bar-success" style="width: 35%"><span class="sr-only">35% Complete (success)</span></div>
|
||||
<div class="progress-bar progress-bar-warning" style="width: 20%"><span class="sr-only">20% Complete (warning)</span></div>
|
||||
<div class="progress-bar progress-bar-danger" style="width: 10%"><span class='sr-only'>10% Complete (danger)</span></div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="page-header">
|
||||
<h1>List groups</h1>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-4">
|
||||
<ul class="list-group">
|
||||
<li class="list-group-item">Cras justo odio</li>
|
||||
<li class="list-group-item">Dapibus ac facilisis in</li>
|
||||
<li class="list-group-item">Morbi leo risus</li>
|
||||
<li class="list-group-item">Porta ac consectetur ac</li>
|
||||
<li class="list-group-item">Vestibulum at eros</li>
|
||||
</ul>
|
||||
</div><!-- /.col-sm-4 -->
|
||||
<div class="col-sm-4">
|
||||
<div class="list-group">
|
||||
<a href="#" class="list-group-item active">
|
||||
Cras justo odio
|
||||
</a>
|
||||
<a href="#" class="list-group-item">Dapibus ac facilisis in</a>
|
||||
<a href="#" class="list-group-item">Morbi leo risus</a>
|
||||
<a href="#" class="list-group-item">Porta ac consectetur ac</a>
|
||||
<a href="#" class="list-group-item">Vestibulum at eros</a>
|
||||
</div>
|
||||
</div><!-- /.col-sm-4 -->
|
||||
<div class="col-sm-4">
|
||||
<div class="list-group">
|
||||
<a href="#" class="list-group-item active">
|
||||
<h4 class="list-group-item-heading">List group item heading</h4>
|
||||
<p class="list-group-item-text">Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.</p>
|
||||
</a>
|
||||
<a href="#" class="list-group-item">
|
||||
<h4 class="list-group-item-heading">List group item heading</h4>
|
||||
<p class="list-group-item-text">Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.</p>
|
||||
</a>
|
||||
<a href="#" class="list-group-item">
|
||||
<h4 class="list-group-item-heading">List group item heading</h4>
|
||||
<p class="list-group-item-text">Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.</p>
|
||||
</a>
|
||||
</div>
|
||||
</div><!-- /.col-sm-4 -->
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="page-header">
|
||||
<h1>Panels</h1>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-4">
|
||||
<div class="panel">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">Panel title</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
Panel content
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">Panel title</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
Panel content
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- /.col-sm-4 -->
|
||||
<div class="col-sm-4">
|
||||
<div class="panel panel-success">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">Panel title</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
Panel content
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-info">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">Panel title</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
Panel content
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- /.col-sm-4 -->
|
||||
<div class="col-sm-4">
|
||||
<div class="panel panel-warning">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">Panel title</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
Panel content
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-danger">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">Panel title</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
Panel content
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- /.col-sm-4 -->
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="page-header">
|
||||
<h1>Wells</h1>
|
||||
</div>
|
||||
<div class="well">
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas sed diam eget risus varius blandit sit amet non magna. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Aenean lacinia bibendum nulla sed consectetur.</p>
|
||||
</div>
|
||||
|
||||
|
||||
</div> <!-- /container -->
|
||||
|
||||
|
||||
<!-- Bootstrap core JavaScript
|
||||
================================================== -->
|
||||
<!-- Placed at the end of the document so the pages load faster -->
|
||||
<script src="../../assets/js/jquery.js"></script>
|
||||
<script src="../../assets/js/respond.min.js"></script>
|
||||
<script src="../../dist/js/bootstrap.min.js"></script>
|
||||
<script src="../../assets/js/holder.js"></script>
|
||||
</body>
|
||||
</html>
|
14
examples/theme/theme.css
Normal file
@ -0,0 +1,14 @@
|
||||
body {
|
||||
padding-top: 70px;
|
||||
padding-bottom: 30px;
|
||||
}
|
||||
|
||||
.theme-dropdown .dropdown-menu {
|
||||
display: block;
|
||||
position: static;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.theme-showcase > p > .btn {
|
||||
margin: 5px 0;
|
||||
}
|
@ -229,7 +229,22 @@ bootstrap/
|
||||
<h4>Carousel</h4>
|
||||
<p>Customize the navbar and carousel, then add some new components.</p>
|
||||
</div>
|
||||
<div class="col-xs-6 col-md-4">
|
||||
<a class="thumbnail" href="../examples/non-responsive/">
|
||||
<img src="../examples/screenshots/non-responsive.jpg" alt="">
|
||||
</a>
|
||||
<h4>Non-responsive Bootstrap</h4>
|
||||
<p>Easily disable the responsiveness of Bootstrap <a href="../getting-started/#disable-responsive">per our docs</a>.</p>
|
||||
</div>
|
||||
<div class="clearfix visible-xs"></div>
|
||||
|
||||
<div class="col-xs-6 col-md-4">
|
||||
<a class="thumbnail" href="../examples/theme/">
|
||||
<img src="../examples/screenshots/theme.jpg" alt="">
|
||||
</a>
|
||||
<h4>Bootstrap theme</h4>
|
||||
<p>Load the optional Bootstrap theme for a visually enhanced experience.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@ -242,13 +257,13 @@ bootstrap/
|
||||
<div class="page-header">
|
||||
<h1 id="disable-responsive">Disabling responsiveness</h1>
|
||||
</div>
|
||||
<p class="lead">Don't want your site or application to be scale on different device? With a little bit of work, you can disable the responsive features of Bootstrap so that mobile users see your full desktop-version site.</p>
|
||||
<p class="lead">Don't want your site or application to be scaled on different devices? With a little bit of work, you can disable the responsive features of Bootstrap so that mobile users see your full desktop-version site. Read below or check out <a href="../examples/non-responsive/">the non-responsive example</a>.</p>
|
||||
|
||||
<h3>Steps to disable responsive views</h3>
|
||||
<p>To disable responsive features, follow these steps. See it in action in the modified template below.</p>
|
||||
<ol>
|
||||
<li>Remove (or just don't add) the viewport <code><meta></code> mentioned in <a href="../css/#overview-mobile">the CSS docs</a></li>
|
||||
<li>Force a single <code>max-width</code> on the <code>.container</code> (e.g., <code>.container { max-width: 940px; }</code>). Be sure that this comes after the default Bootstrap CSS; otherwise, you'll need <code>!important</code>.</li>
|
||||
<li>Remove the <code>max-width</code> on the <code>.container</code> for all grid tiers with <code>max-width: none !important;</code> and set a regular width like <code>width: 970px;</code>. Be sure that this comes after the default Bootstrap CSS. You can optionally avoid the <code>!important</code> with media queries or some selector-fu.</li>
|
||||
<li>For grid layouts, make use of <code>.col-xs-*</code> classes in addition to or in place of the medium/large ones. Don't worry, the extra-small device grid scales up to all resolutions, so you're set there.</li>
|
||||
</ol>
|
||||
<p>You'll still need respond.js for IE8 (since our media queries are still there and need to be picked up). This just disables the "mobile site" of Bootstrap.</p>
|
||||
@ -268,7 +283,10 @@ bootstrap/
|
||||
|
||||
<!-- 2. Add our custom CSS to set the container's fixed width -->
|
||||
<style>
|
||||
.container { max-width: 940px; }
|
||||
.container {
|
||||
max-width: none !important;
|
||||
width: 970px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
@ -359,8 +377,10 @@ if (navigator.userAgent.match(/IEMobile\/10\.0/)) {
|
||||
<p>We'll keep an eye on this though and update our code if we have an easy solution.</p>
|
||||
|
||||
<h3>Modals and mobile devices</h3>
|
||||
<h4>Overflow and scrolling</h4>
|
||||
<p>Support for <code>overflow: hidden</code> on the <code><body></code> element is quite limited in iOS and Android. To that end, when you scroll past the top or bottom of a modal in either of those devices' browsers, the <code><body></code> content will begin to scroll.</p>
|
||||
<p>Also, note that if you're using inputs in your modal – iOS has a rendering bug which doesn't update the position of fixed elements when the virtual keyboard is triggered. There are a few work arounds for this including transforming your elements to position absolute or invoking a timer on focus to try to correct the positioning manually. This is not handled by Bootstrap, so it is up to you to decide which solution is best for your application.</p>
|
||||
<h4>Virtual keyboards</h4>
|
||||
<p>Also, note that if you're using inputs in your modal – iOS has a rendering bug which doesn't update the position of fixed elements when the virtual keyboard is triggered. There are a few work arounds for this, including transforming your elements to <code>position: absolute</code> or invoking a timer on focus to try to correct the positioning manually. This is not handled by Bootstrap, so it is up to you to decide which solution is best for your application.</p>
|
||||
|
||||
<h3>Browser zooming</h3>
|
||||
<p>Page zooming inevitably presents rendering artifacts in some components, both in Bootstrap and the rest of the web. Depending on the issue, we may be able to fix it (search first and then open an issue if need be). However, we tend to ignore these as they often have no direct solution other than hacky workarounds.</p>
|
||||
@ -541,7 +561,7 @@ img { max-width: none; }
|
||||
|
||||
<div class="bs-callout bs-callout-info">
|
||||
<h4>Alternate customization methods</h4>
|
||||
<p>While not recommended for folks new to Bootstrap, you may use one of two alternate methods for customization. The first is modifying the source .less files (making upgrades super difficult), and the second is mapping source LESS code to <a href="http://ruby.bvision.com/blog/please-stop-embedding-bootstrap-classes-in-your-html">your own classes via mixins</a>. For the time being, neither options are documented here.</p>
|
||||
<p>While not recommended for folks new to Bootstrap, you may use one of two alternate methods for customization. The first is modifying the source .less files (making upgrades super difficult), and the second is mapping source LESS code to <a href="http://ruby.bvision.com/blog/please-stop-embedding-bootstrap-classes-in-your-html">your own classes via mixins</a>. For the time being, neither of those options are documented here.</p>
|
||||
</div>
|
||||
|
||||
<h3>Removing potential bloat</h3>
|
||||
|
@ -541,12 +541,12 @@ $('#myDropdown').on('show.bs.dropdown', function () {
|
||||
<li><a href="#fat">@fat</a></li>
|
||||
<li><a href="#mdo">@mdo</a></li>
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="#one">one</a></li>
|
||||
<li><a href="#two">two</a></li>
|
||||
<a href="#" id="navbarDrop1" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu" role="menu" aria-labelledby="navbarDrop1">
|
||||
<li><a href="#one" tabindex="-1">one</a></li>
|
||||
<li><a href="#two" tabindex="-1">two</a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="#three">three</a></li>
|
||||
<li><a href="#three" tabindex="-1">three</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
@ -663,10 +663,10 @@ $('#myScrollspy').on('activate.bs.scrollspy', function () {
|
||||
<li class="active"><a href="#home" data-toggle="tab">Home</a></li>
|
||||
<li><a href="#profile" data-toggle="tab">Profile</a></li>
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="#dropdown1" data-toggle="tab">@fat</a></li>
|
||||
<li><a href="#dropdown2" data-toggle="tab">@mdo</a></li>
|
||||
<a href="#" id="myTabDrop1" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu" role="menu" aria-labelledby="myTabDrop1">
|
||||
<li><a href="#dropdown1" tabindex="-1" data-toggle="tab">@fat</a></li>
|
||||
<li><a href="#dropdown2" tabindex="-1" data-toggle="tab">@mdo</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
@ -1104,7 +1104,7 @@ $('#myTooltip').on('hidden.bs.tooltip', function () {
|
||||
<td>string | false</td>
|
||||
<td>false</td>
|
||||
<td>
|
||||
<p>Appends the popover to a specific element. Example: <code>container: 'body'</code></p>
|
||||
<p>Appends the popover to a specific element. Example: <code>container: 'body'</code>. This option is particularly useful in that it allows you to position the popover in the flow of the document near the triggering element - which will prevent the popover from floating away from the triggering element during a window resize.</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
@ -1903,7 +1903,7 @@ $('#myCarousel').on('slide.bs.carousel', function () {
|
||||
<td>offset</td>
|
||||
<td>number | function | object</td>
|
||||
<td>10</td>
|
||||
<td>Pixels to offset from screen when calculating position of scroll. If a single number is provided, the offset will be applied in both top and left directions. To provide a unique, bottom and top offset just provide an object <code>offset: { top: 10 }</code> or <code>offset: { top: 10, bottom: 5 }</code>. Use a function when you need to dynamically calculate an offset.</td>
|
||||
<td>Pixels to offset from screen when calculating position of scroll. If a single number is provided, the offset will be applied in both top and bottom directions. To provide a unique, bottom and top offset just provide an object <code>offset: { top: 10 }</code> or <code>offset: { top: 10, bottom: 5 }</code>. Use a function when you need to dynamically calculate an offset.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -40,7 +40,7 @@
|
||||
clearMenus()
|
||||
|
||||
if (!isActive) {
|
||||
if ('ontouchstart' in document.documentElement) {
|
||||
if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
|
||||
// if mobile we we use a backdrop because click events don't delegate
|
||||
$('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus)
|
||||
}
|
||||
@ -52,9 +52,9 @@
|
||||
$parent
|
||||
.toggleClass('open')
|
||||
.trigger('shown.bs.dropdown')
|
||||
}
|
||||
|
||||
$this.focus()
|
||||
$this.focus()
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
@ -25,7 +25,7 @@
|
||||
|
||||
var Modal = function (element, options) {
|
||||
this.options = options
|
||||
this.$element = $(element).on('click.dismiss.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
|
||||
this.$element = $(element)
|
||||
this.$backdrop =
|
||||
this.isShown = null
|
||||
|
||||
@ -54,6 +54,8 @@
|
||||
|
||||
this.escape()
|
||||
|
||||
this.$element.on('click.dismiss.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
|
||||
|
||||
this.backdrop(function () {
|
||||
var transition = $.support.transition && that.$element.hasClass('fade')
|
||||
|
||||
@ -76,7 +78,7 @@
|
||||
var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
|
||||
|
||||
transition ?
|
||||
that.$element
|
||||
that.$element.find('.modal-dialog') // wait for modal to slide in
|
||||
.one($.support.transition.end, function () {
|
||||
that.$element.focus().trigger(e)
|
||||
})
|
||||
|
@ -174,4 +174,23 @@ $(function () {
|
||||
})
|
||||
.modal("show")
|
||||
})
|
||||
|
||||
test("should close reopened modal with [data-dismiss=modal] click", function () {
|
||||
stop()
|
||||
$.support.transition = false
|
||||
var div = $("<div id='modal-test'><div class='contents'><div id='close' data-dismiss='modal'></div></div></div>")
|
||||
div
|
||||
.bind("shown.bs.modal", function () {
|
||||
$('#close').click()
|
||||
ok(!$('#modal-test').is(":visible"), 'modal hidden')
|
||||
})
|
||||
.one("hidden.bs.modal", function() {
|
||||
div.one('hidden.bs.modal', function () {
|
||||
start()
|
||||
}).modal("show")
|
||||
})
|
||||
.modal("show")
|
||||
|
||||
div.remove()
|
||||
})
|
||||
})
|
||||
|
11
js/tests/vendor/jquery.js
vendored
@ -108,10 +108,11 @@
|
||||
|
||||
clearTimeout(self.timeout)
|
||||
|
||||
self.hoverState = 'in'
|
||||
|
||||
if (!self.options.delay || !self.options.delay.show) return self.show()
|
||||
|
||||
self.hoverState = 'in'
|
||||
self.timeout = setTimeout(function () {
|
||||
self.timeout = setTimeout(function () {
|
||||
if (self.hoverState == 'in') self.show()
|
||||
}, self.options.delay.show)
|
||||
}
|
||||
@ -122,10 +123,11 @@
|
||||
|
||||
clearTimeout(self.timeout)
|
||||
|
||||
self.hoverState = 'out'
|
||||
|
||||
if (!self.options.delay || !self.options.delay.hide) return self.hide()
|
||||
|
||||
self.hoverState = 'out'
|
||||
self.timeout = setTimeout(function () {
|
||||
self.timeout = setTimeout(function () {
|
||||
if (self.hoverState == 'out') self.hide()
|
||||
}, self.options.delay.hide)
|
||||
}
|
||||
@ -258,7 +260,9 @@
|
||||
var $tip = this.tip()
|
||||
var e = $.Event('hide.bs.' + this.type)
|
||||
|
||||
function complete() { $tip.detach() }
|
||||
function complete() {
|
||||
if (that.hoverState != 'in') $tip.detach()
|
||||
}
|
||||
|
||||
this.$element.trigger(e)
|
||||
|
||||
|
@ -42,7 +42,7 @@
|
||||
|
||||
// http://blog.alexmaccaw.com/css-transitions
|
||||
$.fn.emulateTransitionEnd = function (duration) {
|
||||
var called = false, $el = this
|
||||
var called = false, $el = this
|
||||
$(this).one($.support.transition.end, function () { called = true })
|
||||
var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
|
||||
setTimeout(callback, duration)
|
||||
|
39
less/bootstrap.less
vendored
@ -21,43 +21,38 @@
|
||||
@import "type.less";
|
||||
@import "code.less";
|
||||
@import "grid.less";
|
||||
|
||||
@import "tables.less";
|
||||
@import "forms.less";
|
||||
@import "buttons.less";
|
||||
|
||||
// Components: common
|
||||
// Components
|
||||
@import "component-animations.less";
|
||||
@import "input-groups.less";
|
||||
@import "dropdowns.less";
|
||||
@import "button-groups.less";
|
||||
@import "input-groups.less";
|
||||
@import "navs.less";
|
||||
@import "navbar.less";
|
||||
@import "breadcrumbs.less";
|
||||
@import "pagination.less";
|
||||
@import "pager.less";
|
||||
@import "labels.less";
|
||||
@import "badges.less";
|
||||
@import "jumbotron.less";
|
||||
@import "thumbnails.less";
|
||||
@import "alerts.less";
|
||||
@import "progress-bars.less";
|
||||
@import "media.less";
|
||||
@import "list-group.less";
|
||||
@import "panels.less";
|
||||
@import "wells.less";
|
||||
@import "close.less";
|
||||
|
||||
// Components: Nav
|
||||
@import "navs.less";
|
||||
@import "navbar.less";
|
||||
@import "button-groups.less";
|
||||
@import "breadcrumbs.less";
|
||||
@import "pagination.less";
|
||||
@import "pager.less";
|
||||
|
||||
// Components: Popovers
|
||||
// Components w/ JavaScript
|
||||
@import "modals.less";
|
||||
@import "tooltip.less";
|
||||
@import "popovers.less";
|
||||
|
||||
// Components: Misc
|
||||
@import "alerts.less";
|
||||
@import "thumbnails.less";
|
||||
@import "media.less";
|
||||
@import "labels.less";
|
||||
@import "badges.less";
|
||||
@import "progress-bars.less";
|
||||
@import "carousel.less";
|
||||
@import "jumbotron.less";
|
||||
|
||||
// Utility classes
|
||||
@import "utilities.less"; // Has to be last to override when necessary
|
||||
@import "utilities.less";
|
||||
@import "responsive-utilities.less";
|
||||
|
@ -272,9 +272,9 @@
|
||||
// Note that `.col-lg-12` doesn't get floated on purpose—there's no need since
|
||||
// it's full-width.
|
||||
|
||||
@media (min-width: @screen-large-desktop) {
|
||||
@media (min-width: @screen-lg-desktop) {
|
||||
.container {
|
||||
max-width: @container-large-desktop;
|
||||
max-width: @container-lg-desktop;
|
||||
}
|
||||
|
||||
.col-lg-1,
|
||||
|
@ -11,6 +11,7 @@
|
||||
line-height: (@line-height-base * 1.5);
|
||||
color: @jumbotron-lead-color;
|
||||
background-color: @jumbotron-bg;
|
||||
|
||||
h1 {
|
||||
line-height: 1;
|
||||
color: @jumbotron-heading-color;
|
||||
@ -19,9 +20,19 @@
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
.container & {
|
||||
border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container
|
||||
}
|
||||
|
||||
@media screen and (min-width: @screen-tablet) {
|
||||
padding: 50px 60px;
|
||||
border-radius: @border-radius-large; // Only round corners at higher resolutions
|
||||
padding-top: 50px;
|
||||
padding-bottom: 50px;
|
||||
|
||||
.container & {
|
||||
padding-left: 60px;
|
||||
padding-right: 60px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: (@font-size-base * 4.5);
|
||||
}
|
||||
|
@ -558,7 +558,7 @@
|
||||
padding-right: (@gutter / 2);
|
||||
|
||||
// Calculate width based on number of columns available
|
||||
@media (min-width: @screen-small) {
|
||||
@media (min-width: @screen-sm) {
|
||||
float: left;
|
||||
width: percentage((@columns / @grid-columns));
|
||||
}
|
||||
@ -566,17 +566,17 @@
|
||||
|
||||
// Generate the small column offsets
|
||||
.make-sm-column-offset(@columns) {
|
||||
@media (min-width: @screen-small) {
|
||||
@media (min-width: @screen-sm) {
|
||||
margin-left: percentage((@columns / @grid-columns));
|
||||
}
|
||||
}
|
||||
.make-sm-column-push(@columns) {
|
||||
@media (min-width: @screen-small) {
|
||||
@media (min-width: @screen-sm) {
|
||||
left: percentage((@columns / @grid-columns));
|
||||
}
|
||||
}
|
||||
.make-sm-column-pull(@columns) {
|
||||
@media (min-width: @screen-small) {
|
||||
@media (min-width: @screen-sm) {
|
||||
right: percentage((@columns / @grid-columns));
|
||||
}
|
||||
}
|
||||
@ -591,7 +591,7 @@
|
||||
padding-right: (@gutter / 2);
|
||||
|
||||
// Calculate width based on number of columns available
|
||||
@media (min-width: @screen-medium) {
|
||||
@media (min-width: @screen-md) {
|
||||
float: left;
|
||||
width: percentage((@columns / @grid-columns));
|
||||
}
|
||||
@ -599,17 +599,17 @@
|
||||
|
||||
// Generate the large column offsets
|
||||
.make-md-column-offset(@columns) {
|
||||
@media (min-width: @screen-medium) {
|
||||
@media (min-width: @screen-md) {
|
||||
margin-left: percentage((@columns / @grid-columns));
|
||||
}
|
||||
}
|
||||
.make-md-column-push(@columns) {
|
||||
@media (min-width: @screen-medium) {
|
||||
@media (min-width: @screen-md) {
|
||||
left: percentage((@columns / @grid-columns));
|
||||
}
|
||||
}
|
||||
.make-md-column-pull(@columns) {
|
||||
@media (min-width: @screen-medium) {
|
||||
@media (min-width: @screen-md) {
|
||||
right: percentage((@columns / @grid-columns));
|
||||
}
|
||||
}
|
||||
@ -624,7 +624,7 @@
|
||||
padding-right: (@gutter / 2);
|
||||
|
||||
// Calculate width based on number of columns available
|
||||
@media (min-width: @screen-large) {
|
||||
@media (min-width: @screen-lg) {
|
||||
float: left;
|
||||
width: percentage((@columns / @grid-columns));
|
||||
}
|
||||
@ -632,17 +632,17 @@
|
||||
|
||||
// Generate the large column offsets
|
||||
.make-lg-column-offset(@columns) {
|
||||
@media (min-width: @screen-large) {
|
||||
@media (min-width: @screen-lg) {
|
||||
margin-left: percentage((@columns / @grid-columns));
|
||||
}
|
||||
}
|
||||
.make-lg-column-push(@columns) {
|
||||
@media (min-width: @screen-large) {
|
||||
@media (min-width: @screen-lg) {
|
||||
left: percentage((@columns / @grid-columns));
|
||||
}
|
||||
}
|
||||
.make-lg-column-pull(@columns) {
|
||||
@media (min-width: @screen-large) {
|
||||
@media (min-width: @screen-lg) {
|
||||
right: percentage((@columns / @grid-columns));
|
||||
}
|
||||
}
|
||||
|
@ -30,8 +30,6 @@
|
||||
// styling of responsive aspects.
|
||||
|
||||
.navbar-header {
|
||||
padding-left: @navbar-padding-horizontal;
|
||||
padding-right: @navbar-padding-horizontal;
|
||||
.clearfix();
|
||||
|
||||
@media (min-width: @grid-float-breakpoint) {
|
||||
@ -66,8 +64,6 @@
|
||||
|
||||
@media (min-width: @grid-float-breakpoint) {
|
||||
width: auto;
|
||||
padding-right: 0;
|
||||
padding-left: 0;
|
||||
border-top: 0;
|
||||
box-shadow: none;
|
||||
|
||||
@ -85,6 +81,22 @@
|
||||
}
|
||||
|
||||
|
||||
// Both navbar header and collapse
|
||||
//
|
||||
// When a container is present, change the behavior of the header and collapse.
|
||||
|
||||
.container > .navbar-header,
|
||||
.container > .navbar-collapse {
|
||||
margin-right: -@navbar-padding-horizontal;
|
||||
margin-left: -@navbar-padding-horizontal;
|
||||
|
||||
@media (min-width: @grid-float-breakpoint) {
|
||||
margin-right: 0;
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Navbar alignment options
|
||||
//
|
||||
@ -130,8 +142,7 @@
|
||||
|
||||
.navbar-brand {
|
||||
float: left;
|
||||
padding-top: @navbar-padding-vertical;
|
||||
padding-bottom: @navbar-padding-vertical;
|
||||
padding: @navbar-padding-vertical @navbar-padding-horizontal;
|
||||
font-size: @font-size-large;
|
||||
line-height: @line-height-computed;
|
||||
color: @navbar-brand-color;
|
||||
@ -141,6 +152,12 @@
|
||||
text-decoration: none;
|
||||
background-color: @navbar-brand-hover-bg;
|
||||
}
|
||||
|
||||
@media (min-width: @grid-float-breakpoint) {
|
||||
.navbar > .container & {
|
||||
margin-left: -@navbar-padding-horizontal;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -152,6 +169,7 @@
|
||||
.navbar-toggle {
|
||||
position: relative;
|
||||
float: right;
|
||||
margin-right: @navbar-padding-horizontal;
|
||||
padding: 9px 10px;
|
||||
.navbar-vertical-align(34px);
|
||||
background-color: transparent;
|
||||
@ -176,9 +194,6 @@
|
||||
}
|
||||
|
||||
@media (min-width: @grid-float-breakpoint) {
|
||||
position: relative;
|
||||
top: auto;
|
||||
left: auto;
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
@ -220,7 +235,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: @screen-phone-max) {
|
||||
@media (max-width: @screen-xs-max) {
|
||||
// Dropdowns get custom display when collapsed
|
||||
.open .dropdown-menu {
|
||||
position: static;
|
||||
@ -315,7 +330,7 @@
|
||||
.form-inline();
|
||||
|
||||
.form-group {
|
||||
@media (max-width: @screen-phone-max) {
|
||||
@media (max-width: @screen-xs-max) {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
}
|
||||
@ -516,7 +531,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: @screen-phone-max) {
|
||||
@media (max-width: @screen-xs-max) {
|
||||
// Dropdowns get custom display
|
||||
.open .dropdown-menu {
|
||||
> .dropdown-header {
|
||||
|
@ -162,7 +162,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: @screen-small) {
|
||||
@media (min-width: @screen-sm) {
|
||||
> li {
|
||||
display: table-cell;
|
||||
width: 1%;
|
||||
|
@ -15,6 +15,7 @@
|
||||
// Panel contents
|
||||
.panel-body {
|
||||
padding: 15px;
|
||||
.clearfix();
|
||||
}
|
||||
|
||||
// List groups in panels
|
||||
|
@ -37,98 +37,98 @@
|
||||
|
||||
.visible-xs {
|
||||
.responsive-visibility();
|
||||
@media (min-width: @screen-tablet) and (max-width: @screen-tablet-max) {
|
||||
@media (min-width: @screen-sm) and (max-width: @screen-sm-max) {
|
||||
.responsive-invisibility();
|
||||
}
|
||||
@media (min-width: @screen-desktop) and (max-width: @screen-desktop-max) {
|
||||
@media (min-width: @screen-md) and (max-width: @screen-md-max) {
|
||||
.responsive-invisibility();
|
||||
}
|
||||
@media (min-width: @screen-large-desktop) {
|
||||
@media (min-width: @screen-lg) {
|
||||
.responsive-invisibility();
|
||||
}
|
||||
}
|
||||
.visible-sm {
|
||||
.responsive-invisibility();
|
||||
@media (min-width: @screen-tablet) and (max-width: @screen-tablet-max) {
|
||||
@media (min-width: @screen-sm) and (max-width: @screen-sm-max) {
|
||||
.responsive-visibility();
|
||||
}
|
||||
@media (min-width: @screen-desktop) and (max-width: @screen-desktop-max) {
|
||||
@media (min-width: @screen-md) and (max-width: @screen-md-max) {
|
||||
.responsive-invisibility();
|
||||
}
|
||||
@media (min-width: @screen-large-desktop) {
|
||||
@media (min-width: @screen-lg) {
|
||||
.responsive-invisibility();
|
||||
}
|
||||
}
|
||||
.visible-md {
|
||||
.responsive-invisibility();
|
||||
@media (min-width: @screen-tablet) and (max-width: @screen-tablet-max) {
|
||||
@media (min-width: @screen-sm) and (max-width: @screen-sm-max) {
|
||||
.responsive-invisibility();
|
||||
}
|
||||
@media (min-width: @screen-desktop) and (max-width: @screen-desktop-max) {
|
||||
@media (min-width: @screen-md) and (max-width: @screen-md-max) {
|
||||
.responsive-visibility();
|
||||
}
|
||||
@media (min-width: @screen-large-desktop) {
|
||||
@media (min-width: @screen-lg) {
|
||||
.responsive-invisibility();
|
||||
}
|
||||
}
|
||||
.visible-lg {
|
||||
.responsive-invisibility();
|
||||
@media (min-width: @screen-tablet) and (max-width: @screen-tablet-max) {
|
||||
@media (min-width: @screen-sm) and (max-width: @screen-sm-max) {
|
||||
.responsive-invisibility();
|
||||
}
|
||||
@media (min-width: @screen-desktop) and (max-width: @screen-desktop-max) {
|
||||
@media (min-width: @screen-md) and (max-width: @screen-md-max) {
|
||||
.responsive-invisibility();
|
||||
}
|
||||
@media (min-width: @screen-large-desktop) {
|
||||
@media (min-width: @screen-lg) {
|
||||
.responsive-visibility();
|
||||
}
|
||||
}
|
||||
|
||||
.hidden-xs {
|
||||
.responsive-invisibility();
|
||||
@media (min-width: @screen-tablet) and (max-width: @screen-tablet-max) {
|
||||
@media (min-width: @screen-sm) and (max-width: @screen-sm-max) {
|
||||
.responsive-visibility();
|
||||
}
|
||||
@media (min-width: @screen-desktop) and (max-width: @screen-desktop-max) {
|
||||
@media (min-width: @screen-md) and (max-width: @screen-md-max) {
|
||||
.responsive-visibility();
|
||||
}
|
||||
@media (min-width: @screen-large-desktop) {
|
||||
@media (min-width: @screen-lg) {
|
||||
.responsive-visibility();
|
||||
}
|
||||
}
|
||||
.hidden-sm {
|
||||
.responsive-visibility();
|
||||
@media (min-width: @screen-tablet) and (max-width: @screen-tablet-max) {
|
||||
@media (min-width: @screen-sm) and (max-width: @screen-sm-max) {
|
||||
.responsive-invisibility();
|
||||
}
|
||||
@media (min-width: @screen-desktop) and (max-width: @screen-desktop-max) {
|
||||
@media (min-width: @screen-md) and (max-width: @screen-md-max) {
|
||||
.responsive-visibility();
|
||||
}
|
||||
@media (min-width: @screen-large-desktop) {
|
||||
@media (min-width: @screen-lg) {
|
||||
.responsive-visibility();
|
||||
}
|
||||
}
|
||||
.hidden-md {
|
||||
.responsive-visibility();
|
||||
@media (min-width: @screen-tablet) and (max-width: @screen-tablet-max) {
|
||||
@media (min-width: @screen-sm) and (max-width: @screen-sm-max) {
|
||||
.responsive-visibility();
|
||||
}
|
||||
@media (min-width: @screen-desktop) and (max-width: @screen-desktop-max) {
|
||||
@media (min-width: @screen-md) and (max-width: @screen-md-max) {
|
||||
.responsive-invisibility();
|
||||
}
|
||||
@media (min-width: @screen-large-desktop) {
|
||||
@media (min-width: @screen-lg) {
|
||||
.responsive-visibility();
|
||||
}
|
||||
}
|
||||
.hidden-lg {
|
||||
.responsive-visibility();
|
||||
@media (min-width: @screen-tablet) and (max-width: @screen-tablet-max) {
|
||||
@media (min-width: @screen-sm) and (max-width: @screen-sm-max) {
|
||||
.responsive-visibility();
|
||||
}
|
||||
@media (min-width: @screen-desktop) and (max-width: @screen-desktop-max) {
|
||||
@media (min-width: @screen-md) and (max-width: @screen-md-max) {
|
||||
.responsive-visibility();
|
||||
}
|
||||
@media (min-width: @screen-large-desktop) {
|
||||
@media (min-width: @screen-lg) {
|
||||
.responsive-invisibility();
|
||||
}
|
||||
}
|
||||
|
232
less/theme.less
Normal file
@ -0,0 +1,232 @@
|
||||
|
||||
//
|
||||
// Load core variables and mixins
|
||||
// --------------------------------------------------
|
||||
|
||||
@import "variables.less";
|
||||
@import "mixins.less";
|
||||
|
||||
|
||||
|
||||
//
|
||||
// Buttons
|
||||
// --------------------------------------------------
|
||||
|
||||
// Common styles
|
||||
.btn-default,
|
||||
.btn-primary,
|
||||
.btn-success,
|
||||
.btn-info,
|
||||
.btn-warning,
|
||||
.btn-danger {
|
||||
text-shadow: 0 -1px 0 rgba(0,0,0,.2);
|
||||
@shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);
|
||||
.box-shadow(@shadow);
|
||||
|
||||
// Reset the shadow
|
||||
&:active,
|
||||
&.active {
|
||||
.box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
|
||||
}
|
||||
}
|
||||
|
||||
// Mixin for generating new styles
|
||||
.btn-styles(@btn-color: #555;) {
|
||||
#gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 10%));
|
||||
border-color: darken(@btn-color, 12%);
|
||||
|
||||
&:active,
|
||||
&.active {
|
||||
background-color: darken(@btn-color, 10%);
|
||||
border-color: darken(@btn-color, 12%);
|
||||
}
|
||||
}
|
||||
|
||||
// Common styles
|
||||
.btn {
|
||||
// Remove the gradient for the pressed/active state
|
||||
&:active,
|
||||
&.active {
|
||||
background-image: none;
|
||||
}
|
||||
}
|
||||
|
||||
// Apply the mixin to the buttons
|
||||
.btn-default { .btn-styles(@btn-default-bg;); text-shadow: 0 1px 0 #fff; border-color: #ccc; }
|
||||
.btn-primary { .btn-styles(@btn-primary-bg); }
|
||||
.btn-success { .btn-styles(@btn-success-bg); }
|
||||
.btn-warning { .btn-styles(@btn-warning-bg); }
|
||||
.btn-danger { .btn-styles(@btn-danger-bg); }
|
||||
.btn-info { .btn-styles(@btn-info-bg); }
|
||||
|
||||
|
||||
|
||||
//
|
||||
// Images
|
||||
// --------------------------------------------------
|
||||
|
||||
.thumbnail,
|
||||
.img-thumbnail {
|
||||
.box-shadow(0 1px 2px rgba(0,0,0,.075));
|
||||
}
|
||||
|
||||
|
||||
|
||||
//
|
||||
// Dropdowns
|
||||
// --------------------------------------------------
|
||||
|
||||
.dropdown-menu > li > a:hover,
|
||||
.dropdown-menu > li > a:focus,
|
||||
.dropdown-menu > .active > a,
|
||||
.dropdown-menu > .active > a:hover,
|
||||
.dropdown-menu > .active > a:focus {
|
||||
#gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));
|
||||
background-color: darken(@dropdown-link-hover-bg, 5%);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//
|
||||
// Navbar
|
||||
// --------------------------------------------------
|
||||
|
||||
// Basic navbar
|
||||
.navbar {
|
||||
#gradient > .vertical(@start-color: lighten(@navbar-bg, 10%); @end-color: @navbar-bg;);
|
||||
border-radius: @border-radius-base;
|
||||
@shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);
|
||||
.box-shadow(@shadow);
|
||||
|
||||
.navbar-nav > .active > a {
|
||||
background-color: @navbar-bg;
|
||||
}
|
||||
}
|
||||
.navbar-brand,
|
||||
.navbar-nav > li > a {
|
||||
text-shadow: 0 1px 0 rgba(255,255,255,.25);
|
||||
}
|
||||
|
||||
// Inverted navbar
|
||||
.navbar-inverse {
|
||||
#gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg;);
|
||||
|
||||
.navbar-nav > .active > a {
|
||||
background-color: @navbar-inverse-bg;
|
||||
}
|
||||
|
||||
.navbar-brand,
|
||||
.navbar-nav > li > a {
|
||||
text-shadow: 0 -1px 0 rgba(0,0,0,.25);
|
||||
}
|
||||
}
|
||||
|
||||
// Undo rounded corners in static and fixed navbars
|
||||
.navbar-static-top,
|
||||
.navbar-fixed-top,
|
||||
.navbar-fixed-bottom {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//
|
||||
// Alerts
|
||||
// --------------------------------------------------
|
||||
|
||||
// Common styles
|
||||
.alert {
|
||||
text-shadow: 0 1px 0 rgba(255,255,255,.2);
|
||||
@shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);
|
||||
.box-shadow(@shadow);
|
||||
}
|
||||
|
||||
// Mixin for generating new styles
|
||||
.alert-styles(@color) {
|
||||
#gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));
|
||||
border-color: darken(@color, 15%);
|
||||
}
|
||||
|
||||
// Apply the mixin to the alerts
|
||||
.alert { .alert-styles(@alert-bg); }
|
||||
.alert-success { .alert-styles(@alert-success-bg); }
|
||||
.alert-info { .alert-styles(@alert-info-bg); }
|
||||
.alert-danger { .alert-styles(@alert-danger-bg); }
|
||||
|
||||
|
||||
|
||||
//
|
||||
// Progress bars
|
||||
// --------------------------------------------------
|
||||
|
||||
// Give the progress background some depth
|
||||
.progress {
|
||||
#gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg;)
|
||||
}
|
||||
|
||||
// Mixin for generating new styles
|
||||
.progress-bar-styles(@color) {
|
||||
#gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));
|
||||
}
|
||||
|
||||
// Apply the mixin to the progress bars
|
||||
.progress-bar { .progress-bar-styles(@progress-bar-bg); }
|
||||
.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); }
|
||||
.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); }
|
||||
.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); }
|
||||
.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); }
|
||||
|
||||
|
||||
|
||||
//
|
||||
// List groups
|
||||
// --------------------------------------------------
|
||||
|
||||
.list-group {
|
||||
border-radius: @border-radius-base;
|
||||
.box-shadow(0 1px 2px rgba(0,0,0,.075));
|
||||
}
|
||||
.list-group-item.active,
|
||||
.list-group-item.active:hover,
|
||||
.list-group-item.active:focus {
|
||||
text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);
|
||||
#gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));
|
||||
border-color: darken(@list-group-active-border, 7.5%);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//
|
||||
// Panels
|
||||
// --------------------------------------------------
|
||||
|
||||
// Common styles
|
||||
.panel {
|
||||
.box-shadow(0 1px 2px rgba(0,0,0,.05));
|
||||
}
|
||||
|
||||
// Mixin for generating new styles
|
||||
.panel-heading-styles(@color) {
|
||||
#gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));
|
||||
}
|
||||
|
||||
// Apply the mixin to the panel headings only
|
||||
.panel-heading { .panel-heading-styles(@panel-heading-bg); }
|
||||
.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); }
|
||||
.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); }
|
||||
.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); }
|
||||
.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); }
|
||||
.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); }
|
||||
|
||||
|
||||
|
||||
//
|
||||
// Wells
|
||||
// --------------------------------------------------
|
||||
|
||||
.well {
|
||||
#gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg;);
|
||||
border-color: darken(@well-bg, 10%);
|
||||
@shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);
|
||||
.box-shadow(@shadow);
|
||||
}
|
@ -193,26 +193,25 @@
|
||||
// --------------------------------------------------
|
||||
|
||||
// Extra small screen / phone
|
||||
@screen-xsmall: 480px;
|
||||
@screen-phone: @screen-xsmall;
|
||||
@screen-xs: 480px;
|
||||
@screen-phone: @screen-xs;
|
||||
|
||||
// Small screen / tablet
|
||||
@screen-small: 768px;
|
||||
@screen-tablet: @screen-small;
|
||||
@screen-sm: 768px;
|
||||
@screen-tablet: @screen-sm;
|
||||
|
||||
// Medium screen / desktop
|
||||
@screen-medium: 992px;
|
||||
@screen-desktop: @screen-medium;
|
||||
@screen-md: 992px;
|
||||
@screen-desktop: @screen-md;
|
||||
|
||||
// Large screen / wide desktop
|
||||
@screen-large: 1200px;
|
||||
@screen-large-desktop: @screen-large;
|
||||
@screen-lg: 1200px;
|
||||
@screen-lg-desktop: @screen-lg;
|
||||
|
||||
// So media queries don't overlap when required, provide a maximum
|
||||
@screen-phone-max: (@screen-small - 1);
|
||||
@screen-small-max: (@screen-medium - 1);
|
||||
@screen-tablet-max: (@screen-desktop - 1);
|
||||
@screen-desktop-max: (@screen-large-desktop - 1);
|
||||
@screen-xs-max: (@screen-sm - 1);
|
||||
@screen-sm-max: (@screen-md - 1);
|
||||
@screen-md-max: (@screen-lg - 1);
|
||||
|
||||
|
||||
// Grid system
|
||||
@ -600,10 +599,10 @@
|
||||
// --------------------------------------------------
|
||||
|
||||
// Small screen / tablet
|
||||
@container-tablet: ((720px + @grid-gutter-width));
|
||||
@container-tablet: ((720px + @grid-gutter-width));
|
||||
|
||||
// Medium screen / desktop
|
||||
@container-desktop: ((940px + @grid-gutter-width));
|
||||
@container-desktop: ((940px + @grid-gutter-width));
|
||||
|
||||
// Large screen / wide desktop
|
||||
@container-large-desktop: ((1140px + @grid-gutter-width));
|
||||
@container-lg-desktop: ((1140px + @grid-gutter-width));
|
||||
|