0
0
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:
Mark Otto 2013-12-18 11:41:48 -08:00
commit 6315043b1c
12 changed files with 168 additions and 120 deletions

View File

@ -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="

View File

@ -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')
}
}
}

View File

@ -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>

View File

@ -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">

View File

@ -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 {

File diff suppressed because one or more lines are too long

View File

@ -40,6 +40,7 @@ body {
.site-wrapper {
display: table;
width: 100%;
height: 100%; /* For at leat Firefox */
min-height: 100%;
}
.site-wrapper-inner {

View File

@ -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 {
margin-right: -1px;
&:first-child {
> .btn,
> .btn-group {
margin-right: -1px;
}
}
&:last-child > .btn {
margin-left: -1px;
&:last-child {
> .btn,
> .btn-group {
margin-left: -1px;
}
}
}

View File

@ -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);

View File

@ -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
View 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"
# }
]

View File

@ -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)