mirror of
https://github.com/twbs/bootstrap.git
synced 2024-11-30 12:24:19 +01:00
Merge branch 'master' into docs_derp
This commit is contained in:
commit
6315043b1c
12
.travis.yml
12
.travis.yml
@ -2,15 +2,19 @@ language: node_js
|
||||
node_js:
|
||||
- 0.10
|
||||
before_install:
|
||||
- time sudo pip install --use-mirrors -r ./test-infra/requirements.txt
|
||||
- time sudo pip install --use-mirrors -r test-infra/requirements.txt
|
||||
- rvm use 1.9.3 --fuzzy
|
||||
- if [ "$TWBS_TEST" = validate-html ]; then echo "ruby=$(basename $(rvm gemdir)) jekyll=$JEKYLL_VERSION" > pseudo_Gemfile.lock; fi
|
||||
install:
|
||||
- if [ "$TWBS_TEST" = validate-html ]; then time gem install jekyll; fi
|
||||
- time npm install -g grunt-cli
|
||||
- time ./test-infra/node_modules_cache.py download package.json ./node_modules || time npm install
|
||||
- time ./test-infra/s3_cache.py download 'node.js packages' package.json ./node_modules || time npm install
|
||||
- if [ "$TWBS_TEST" = validate-html ]; then time ./test-infra/s3_cache.py download rubygems pseudo_Gemfile.lock $(rvm gemdir) || gem install -N jekyll -v $JEKYLL_VERSION; fi
|
||||
after_script:
|
||||
- if [ "$TWBS_TEST" = core ]; then time ./test-infra/node_modules_cache.py upload package.json ./node_modules; fi
|
||||
- if [ "$TWBS_TEST" = core ]; then time ./test-infra/s3_cache.py upload 'node.js packages' package.json ./node_modules; fi
|
||||
- if [ "$TWBS_TEST" = validate-html ]; then time ./test-infra/s3_cache.py upload rubygems pseudo_Gemfile.lock $(rvm gemdir); fi
|
||||
env:
|
||||
global:
|
||||
- JEKYLL_VERSION: 1.4.1
|
||||
- SAUCE_USERNAME: bootstrap
|
||||
- secure: "pJkBwnuae9dKU5tEcCqccfS1QQw7/meEcfz63fM7ba7QJNjoA6BaXj08L5Z3Vb5vBmVPwBawxo5Hp0jC0r/Z/O0hGnAmz/Cz09L+cy7dSAZ9x4hvZePSja/UAusaB5ogMoO8l2b773MzgQeSmrLbExr9BWLeqEfjC2hFgdgHLaQ="
|
||||
- secure: "gqjqISbxBJK6byFbsmr1AyP1qoWH+rap06A2gI7v72+Tn2PU2nYkIMUkCvhZw6K889jv+LhQ/ybcBxDOXHpNCExCnSgB4dcnmYp+9oeNZb37jSP0rQ+Ib4OTLjzc3/FawE/fUq5kukZTC7porzc/k0qJNLAZRx3YLALmK1GIdUY="
|
||||
|
86
Gruntfile.js
86
Gruntfile.js
@ -195,6 +195,7 @@ module.exports = function (grunt) {
|
||||
options: {
|
||||
charset: 'utf-8',
|
||||
doctype: 'HTML5',
|
||||
failHard: true,
|
||||
reset: true,
|
||||
relaxerror: [
|
||||
'Bad value X-UA-Compatible for attribute http-equiv on element meta.',
|
||||
@ -238,90 +239,7 @@ module.exports = function (grunt) {
|
||||
build: process.env.TRAVIS_JOB_ID,
|
||||
concurrency: 3,
|
||||
urls: ['http://127.0.0.1:3000/js/tests/index.html'],
|
||||
browsers: [
|
||||
// See https://saucelabs.com/docs/platforms/webdriver
|
||||
{
|
||||
browserName: 'safari',
|
||||
version: '7',
|
||||
platform: 'OS X 10.9'
|
||||
},
|
||||
{
|
||||
browserName: 'chrome',
|
||||
version: '31',
|
||||
platform: 'OS X 10.9'
|
||||
},
|
||||
/* FIXME: currently fails 1 tooltip test
|
||||
{
|
||||
browserName: 'firefox',
|
||||
version: '25',
|
||||
platform: 'OS X 10.6'
|
||||
},*/
|
||||
// Mac Opera not currently supported by Sauce Labs
|
||||
/* FIXME: currently fails 1 tooltip test
|
||||
{
|
||||
browserName: 'internet explorer',
|
||||
version: '11',
|
||||
platform: 'Windows 8.1'
|
||||
},*/
|
||||
/*
|
||||
{
|
||||
browserName: 'internet explorer',
|
||||
version: '10',
|
||||
platform: 'Windows 8'
|
||||
},
|
||||
{
|
||||
browserName: 'internet explorer',
|
||||
version: '9',
|
||||
platform: 'Windows 7'
|
||||
},
|
||||
{
|
||||
browserName: 'internet explorer',
|
||||
version: '8',
|
||||
platform: 'Windows 7'
|
||||
},
|
||||
{// unofficial
|
||||
browserName: 'internet explorer',
|
||||
version: '7',
|
||||
platform: 'Windows XP'
|
||||
},
|
||||
*/
|
||||
{
|
||||
browserName: 'chrome',
|
||||
version: '31',
|
||||
platform: 'Windows 8.1'
|
||||
},
|
||||
{
|
||||
browserName: 'firefox',
|
||||
version: '25',
|
||||
platform: 'Windows 8.1'
|
||||
},
|
||||
// Win Opera 15+ not currently supported by Sauce Labs
|
||||
{
|
||||
browserName: 'iphone',
|
||||
version: '6.1',
|
||||
platform: 'OS X 10.8'
|
||||
},
|
||||
// iOS Chrome not currently supported by Sauce Labs
|
||||
// Linux (unofficial)
|
||||
{
|
||||
browserName: 'chrome',
|
||||
version: '30',
|
||||
platform: 'Linux'
|
||||
},
|
||||
{
|
||||
browserName: 'firefox',
|
||||
version: '25',
|
||||
platform: 'Linux'
|
||||
}
|
||||
// Android Chrome not currently supported by Sauce Labs
|
||||
/* Android Browser (super-unofficial)
|
||||
{
|
||||
browserName: 'android',
|
||||
version: '4.0',
|
||||
platform: 'Linux'
|
||||
}
|
||||
*/
|
||||
],
|
||||
browsers: grunt.file.readYAML('sauce_browsers.yml')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -32,7 +32,7 @@
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#browsers">Browser and device support</a>
|
||||
<a href="#support">Browser and device support</a>
|
||||
<ul class="nav">
|
||||
<li><a href="#support-browsers">Supported browsers</a></li>
|
||||
<li><a href="#support-ie8-ie9">Internet Explorer 8-9</a></li>
|
||||
|
@ -1372,7 +1372,7 @@ base_url: "../"
|
||||
|
||||
<h2 id="navbar-forms">Forms</h2>
|
||||
<p>Place form content within <code>.navbar-form</code> for proper vertical alignment and collapsed behavior in narrow viewports. Use the alignment options to decide where it resides within the navbar content.</p>
|
||||
<p>As a heads up, <code>.navbar-form</code> shares much of its code with <code>.form-inline</code> via mixin.</p>
|
||||
<p>As a heads up, <code>.navbar-form</code> shares much of its code with <code>.form-inline</code> via mixin. <strong class="text-danger">Some form controls, like input groups, may require fixed widths to be show up properly within a navbar.</strong></p>
|
||||
<div class="bs-example">
|
||||
<nav class="navbar navbar-default" role="navigation">
|
||||
<div class="navbar-header">
|
||||
|
40
dist/css/bootstrap.css
vendored
40
dist/css/bootstrap.css
vendored
@ -378,31 +378,49 @@ h6 .small,
|
||||
color: #999;
|
||||
}
|
||||
h1,
|
||||
.h1,
|
||||
h2,
|
||||
h3 {
|
||||
.h2,
|
||||
h3,
|
||||
.h3 {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
h1 small,
|
||||
.h1 small,
|
||||
h2 small,
|
||||
.h2 small,
|
||||
h3 small,
|
||||
.h3 small,
|
||||
h1 .small,
|
||||
.h1 .small,
|
||||
h2 .small,
|
||||
h3 .small {
|
||||
.h2 .small,
|
||||
h3 .small,
|
||||
.h3 .small {
|
||||
font-size: 65%;
|
||||
}
|
||||
h4,
|
||||
.h4,
|
||||
h5,
|
||||
h6 {
|
||||
.h5,
|
||||
h6,
|
||||
.h6 {
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
h4 small,
|
||||
.h4 small,
|
||||
h5 small,
|
||||
.h5 small,
|
||||
h6 small,
|
||||
.h6 small,
|
||||
h4 .small,
|
||||
.h4 .small,
|
||||
h5 .small,
|
||||
h6 .small {
|
||||
.h5 .small,
|
||||
h6 .small,
|
||||
.h6 .small {
|
||||
font-size: 75%;
|
||||
}
|
||||
h1,
|
||||
@ -3361,8 +3379,10 @@ textarea.input-group-sm > .input-group-btn > .btn {
|
||||
.input-group .form-control:first-child,
|
||||
.input-group-addon:first-child,
|
||||
.input-group-btn:first-child > .btn,
|
||||
.input-group-btn:first-child > .btn-group > .btn,
|
||||
.input-group-btn:first-child > .dropdown-toggle,
|
||||
.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) {
|
||||
.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
|
||||
.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
}
|
||||
@ -3372,8 +3392,10 @@ textarea.input-group-sm > .input-group-btn > .btn {
|
||||
.input-group .form-control:last-child,
|
||||
.input-group-addon:last-child,
|
||||
.input-group-btn:last-child > .btn,
|
||||
.input-group-btn:last-child > .btn-group > .btn,
|
||||
.input-group-btn:last-child > .dropdown-toggle,
|
||||
.input-group-btn:first-child > .btn:not(:first-child) {
|
||||
.input-group-btn:first-child > .btn:not(:first-child),
|
||||
.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
|
||||
border-top-left-radius: 0;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
@ -3396,10 +3418,12 @@ textarea.input-group-sm > .input-group-btn > .btn {
|
||||
.input-group-btn > .btn:active {
|
||||
z-index: 2;
|
||||
}
|
||||
.input-group-btn:first-child > .btn {
|
||||
.input-group-btn:first-child > .btn,
|
||||
.input-group-btn:first-child > .btn-group {
|
||||
margin-right: -1px;
|
||||
}
|
||||
.input-group-btn:last-child > .btn {
|
||||
.input-group-btn:last-child > .btn,
|
||||
.input-group-btn:last-child > .btn-group {
|
||||
margin-left: -1px;
|
||||
}
|
||||
.nav {
|
||||
|
2
dist/css/bootstrap.min.css
vendored
2
dist/css/bootstrap.min.css
vendored
File diff suppressed because one or more lines are too long
@ -40,6 +40,7 @@ body {
|
||||
.site-wrapper {
|
||||
display: table;
|
||||
width: 100%;
|
||||
height: 100%; /* For at leat Firefox */
|
||||
min-height: 100%;
|
||||
}
|
||||
.site-wrapper-inner {
|
||||
|
@ -95,8 +95,10 @@
|
||||
.input-group .form-control:first-child,
|
||||
.input-group-addon:first-child,
|
||||
.input-group-btn:first-child > .btn,
|
||||
.input-group-btn:first-child > .btn-group > .btn,
|
||||
.input-group-btn:first-child > .dropdown-toggle,
|
||||
.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) {
|
||||
.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
|
||||
.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
|
||||
.border-right-radius(0);
|
||||
}
|
||||
.input-group-addon:first-child {
|
||||
@ -105,8 +107,10 @@
|
||||
.input-group .form-control:last-child,
|
||||
.input-group-addon:last-child,
|
||||
.input-group-btn:last-child > .btn,
|
||||
.input-group-btn:last-child > .btn-group > .btn,
|
||||
.input-group-btn:last-child > .dropdown-toggle,
|
||||
.input-group-btn:first-child > .btn:not(:first-child) {
|
||||
.input-group-btn:first-child > .btn:not(:first-child),
|
||||
.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
|
||||
.border-left-radius(0);
|
||||
}
|
||||
.input-group-addon:last-child {
|
||||
@ -138,10 +142,16 @@
|
||||
}
|
||||
|
||||
// Negative margin to only have a 1px border between the two
|
||||
&:first-child > .btn {
|
||||
&:first-child {
|
||||
> .btn,
|
||||
> .btn-group {
|
||||
margin-right: -1px;
|
||||
}
|
||||
&:last-child > .btn {
|
||||
}
|
||||
&:last-child {
|
||||
> .btn,
|
||||
> .btn-group {
|
||||
margin-left: -1px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -21,9 +21,9 @@ h1, h2, h3, h4, h5, h6,
|
||||
}
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3 {
|
||||
h1, .h1,
|
||||
h2, .h2,
|
||||
h3, .h3 {
|
||||
margin-top: @line-height-computed;
|
||||
margin-bottom: (@line-height-computed / 2);
|
||||
|
||||
@ -32,9 +32,9 @@ h3 {
|
||||
font-size: 65%;
|
||||
}
|
||||
}
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
h4, .h4,
|
||||
h5, .h5,
|
||||
h6, .h6 {
|
||||
margin-top: (@line-height-computed / 2);
|
||||
margin-bottom: (@line-height-computed / 2);
|
||||
|
||||
|
@ -34,7 +34,7 @@
|
||||
"grunt-contrib-uglify": "~0.2.4",
|
||||
"grunt-contrib-watch": "~0.5.3",
|
||||
"grunt-csscomb": "~1.1.0",
|
||||
"grunt-html-validation": "~0.1.6",
|
||||
"grunt-html-validation": "~0.1.11",
|
||||
"grunt-jekyll": "~0.4.0",
|
||||
"grunt-jscs-checker": "~0.2.5",
|
||||
"grunt-saucelabs": "~4.1.2",
|
||||
|
91
sauce_browsers.yml
Normal file
91
sauce_browsers.yml
Normal file
@ -0,0 +1,91 @@
|
||||
[
|
||||
# Docs: https://saucelabs.com/docs/platforms/webdriver
|
||||
|
||||
{
|
||||
browserName: "safari",
|
||||
version: "6",
|
||||
platform: "OS X 10.8"
|
||||
},
|
||||
{
|
||||
browserName: "chrome",
|
||||
version: "31",
|
||||
platform: "OS X 10.9"
|
||||
},
|
||||
|
||||
# { # FIXME: currently fails 1 tooltip test
|
||||
# browserName: "firefox",
|
||||
# version: "25",
|
||||
# platform: "OS X 10.6"
|
||||
# },
|
||||
|
||||
# Mac Opera not currently supported by Sauce Labs
|
||||
|
||||
# { # FIXME: currently fails 1 tooltip test
|
||||
# browserName: "internet explorer",
|
||||
# version: "11",
|
||||
# platform: "Windows 8.1"
|
||||
# },
|
||||
|
||||
# {
|
||||
# browserName: "internet explorer",
|
||||
# version: "10",
|
||||
# platform: "Windows 8"
|
||||
# },
|
||||
# {
|
||||
# browserName: "internet explorer",
|
||||
# version: "9",
|
||||
# platform: "Windows 7"
|
||||
# },
|
||||
# {
|
||||
# browserName: "internet explorer",
|
||||
# version: "8",
|
||||
# platform: "Windows 7"
|
||||
# },
|
||||
|
||||
# { # Unofficial
|
||||
# browserName: "internet explorer",
|
||||
# version: "7",
|
||||
# platform: "Windows XP"
|
||||
# },
|
||||
|
||||
{
|
||||
browserName: "chrome",
|
||||
version: "31",
|
||||
platform: "Windows 8.1"
|
||||
},
|
||||
{
|
||||
browserName: "firefox",
|
||||
version: "25",
|
||||
platform: "Windows 8.1"
|
||||
},
|
||||
|
||||
# Win Opera 15+ not currently supported by Sauce Labs
|
||||
|
||||
{
|
||||
browserName: "iphone",
|
||||
version: "6.1",
|
||||
platform: "OS X 10.8"
|
||||
},
|
||||
|
||||
# iOS Chrome not currently supported by Sauce Labs
|
||||
|
||||
# Linux (unofficial):
|
||||
{
|
||||
browserName: "chrome",
|
||||
version: "30",
|
||||
platform: "Linux"
|
||||
},
|
||||
{
|
||||
browserName: "firefox",
|
||||
version: "25",
|
||||
platform: "Linux"
|
||||
}
|
||||
|
||||
# Android Chrome not currently supported by Sauce Labs
|
||||
|
||||
# { # Android Browser (super-unofficial)
|
||||
# browserName: "android",
|
||||
# version: "4.0",
|
||||
# platform: "Linux"
|
||||
# }
|
||||
]
|
@ -58,22 +58,22 @@ def _extract_tarball(directory):
|
||||
def download(directory):
|
||||
_delete_file_quietly(NEED_TO_UPLOAD_MARKER)
|
||||
try:
|
||||
print("Downloading {} tarball from S3...".format(basename(directory)))
|
||||
print("Downloading {} tarball from S3...".format(friendly_name))
|
||||
key.get_contents_to_filename(_tarball_filename_for(directory))
|
||||
except S3ResponseError as err:
|
||||
open(NEED_TO_UPLOAD_MARKER, 'a').close()
|
||||
print(err)
|
||||
raise SystemExit("Cached {} download failed!".format(basename(directory)))
|
||||
raise SystemExit("Cached {} download failed!".format(friendly_name))
|
||||
print("Downloaded {}.".format(_tarball_size(directory)))
|
||||
_extract_tarball(directory)
|
||||
print("{} successfully installed from cache.".format(directory))
|
||||
print("{} successfully installed from cache.".format(friendly_name))
|
||||
|
||||
|
||||
def upload(directory):
|
||||
_create_tarball(directory)
|
||||
print("Uploading {} tarball to S3... ({})".format(basename(directory), _tarball_size(directory)))
|
||||
print("Uploading {} tarball to S3... ({})".format(friendly_name, _tarball_size(directory)))
|
||||
key.set_contents_from_filename(_tarball_filename_for(directory))
|
||||
print("{} cache successfully updated.".format(directory))
|
||||
print("{} cache successfully updated.".format(friendly_name))
|
||||
_delete_file_quietly(NEED_TO_UPLOAD_MARKER)
|
||||
|
||||
|
||||
@ -82,9 +82,9 @@ if __name__ == '__main__':
|
||||
# AWS_ACCESS_KEY_ID - AWS Access Key ID
|
||||
# AWS_SECRET_ACCESS_KEY - AWS Secret Access Key
|
||||
argv.pop(0)
|
||||
if len(argv) != 3:
|
||||
raise SystemExit("USAGE: node_modules_cache.py <download | upload> <dependencies file> <directory>")
|
||||
mode, dependencies_file, directory = argv
|
||||
if len(argv) != 4:
|
||||
raise SystemExit("USAGE: node_modules_cache.py <download | upload> <friendly name> <dependencies file> <directory>")
|
||||
mode, friendly_name, dependencies_file, directory = argv
|
||||
|
||||
conn = S3Connection()
|
||||
bucket = conn.lookup(BUCKET_NAME)
|
Loading…
Reference in New Issue
Block a user