Commit 122245fe authored by Mark Otto's avatar Mark Otto

Merge branch 'master' into pr/11676

Conflicts:
	less/modals.less
parents 0fcaca86 55f6beb4
{
"always-semicolon": true,
"block-indent": 2,
"colon-space": true,
"color-case": "lower",
"color-shorthand": true,
"combinator-space": true,
"element-case": "lower",
"eof-newline": true,
"leading-zero": false,
"remove-empty-rulesets": true,
"rule-indent": 2,
"stick-brace": true,
"strip-spaces": true,
"unitless-zero": true,
"vendor-prefix-align": true,
"sort-order": [
[
"position",
"top",
"right",
"bottom",
"left",
"z-index",
"display",
"float",
"width",
"min-width",
"max-width",
"height",
"min-height",
"max-height",
"-webkit-box-sizing",
"-moz-box-sizing",
"box-sizing",
"padding",
"padding-top",
"padding-right",
"padding-bottom",
"padding-left",
"margin",
"margin-top",
"margin-right",
"margin-bottom",
"margin-left",
"overflow",
"overflow-x",
"overflow-y",
"-ms-overflow-x",
"-ms-overflow-y",
"clip",
"clear",
"font",
"font-family",
"font-size",
"font-style",
"font-weight",
"font-variant",
"font-size-adjust",
"font-stretch",
"font-effect",
"font-emphasize",
"font-emphasize-position",
"font-emphasize-style",
"font-smooth",
"-webkit-hyphens",
"-moz-hyphens",
"hyphens",
"line-height",
"color",
"text-align",
"-webkit-text-align-last",
"-moz-text-align-last",
"-ms-text-align-last",
"text-align-last",
"text-emphasis",
"text-emphasis-color",
"text-emphasis-style",
"text-emphasis-position",
"text-decoration",
"text-indent",
"text-justify",
"text-outline",
"-ms-text-overflow",
"text-overflow",
"text-overflow-ellipsis",
"text-overflow-mode",
"text-shadow",
"text-transform",
"text-wrap",
"letter-spacing",
"-ms-word-break",
"word-break",
"word-spacing",
"-ms-word-wrap",
"word-wrap",
"-moz-tab-size",
"-o-tab-size",
"tab-size",
"white-space",
"vertical-align",
"list-style",
"list-style-position",
"list-style-type",
"list-style-image",
"pointer-events",
"cursor",
"visibility",
"zoom",
"flex-direction",
"flex-order",
"flex-pack",
"flex-align",
"table-layout",
"empty-cells",
"caption-side",
"border-spacing",
"border-collapse",
"content",
"quotes",
"counter-reset",
"counter-increment",
"resize",
"-webkit-user-select",
"-moz-user-select",
"-ms-user-select",
"user-select",
"nav-index",
"nav-up",
"nav-right",
"nav-down",
"nav-left",
"filter:progid:DXImageTransform.Microsoft.AlphaImageLoader",
"background",
"background-color",
"-ms-filter:\\'progid:DXImageTransform.Microsoft.gradient",
"filter:progid:DXImageTransform.Microsoft.gradient",
"background-image",
"background-repeat",
"background-attachment",
"background-position",
"background-position-x",
"background-position-y",
"-webkit-background-clip",
"-moz-background-clip",
"background-clip",
"background-origin",
"-webkit-background-size",
"-moz-background-size",
"-o-background-size",
"background-size",
"border",
"border-color",
"border-style",
"border-width",
"border-top",
"border-top-color",
"border-top-style",
"border-top-width",
"border-right",
"border-right-color",
"border-right-style",
"border-right-width",
"border-bottom",
"border-bottom-color",
"border-bottom-style",
"border-bottom-width",
"border-left",
"border-left-color",
"border-left-style",
"border-left-width",
"border-radius",
"border-top-left-radius",
"border-top-right-radius",
"border-bottom-right-radius",
"border-bottom-left-radius",
"-webkit-border-image",
"-moz-border-image",
"-o-border-image",
"border-image",
"-webkit-border-image-source",
"-moz-border-image-source",
"-o-border-image-source",
"border-image-source",
"-webkit-border-image-slice",
"-moz-border-image-slice",
"-o-border-image-slice",
"border-image-slice",
"-webkit-border-image-width",
"-moz-border-image-width",
"-o-border-image-width",
"border-image-width",
"-webkit-border-image-outset",
"-moz-border-image-outset",
"-o-border-image-outset",
"border-image-outset",
"-webkit-border-image-repeat",
"-moz-border-image-repeat",
"-o-border-image-repeat",
"border-image-repeat",
"outline",
"outline-width",
"outline-style",
"outline-color",
"outline-offset",
"-webkit-box-shadow",
"-moz-box-shadow",
"box-shadow",
"filter:progid:DXImageTransform.Microsoft.Alpha(Opacity",
"-ms-filter:\\'progid:DXImageTransform.Microsoft.Alpha",
"opacity",
"-ms-interpolation-mode",
"-webkit-transition",
"-moz-transition",
"-ms-transition",
"-o-transition",
"transition",
"-webkit-transition-delay",
"-moz-transition-delay",
"-ms-transition-delay",
"-o-transition-delay",
"transition-delay",
"-webkit-transition-timing-function",
"-moz-transition-timing-function",
"-ms-transition-timing-function",
"-o-transition-timing-function",
"transition-timing-function",
"-webkit-transition-duration",
"-moz-transition-duration",
"-ms-transition-duration",
"-o-transition-duration",
"transition-duration",
"-webkit-transition-property",
"-moz-transition-property",
"-ms-transition-property",
"-o-transition-property",
"transition-property",
"-webkit-transform",
"-moz-transform",
"-ms-transform",
"-o-transform",
"transform",
"-webkit-transform-origin",
"-moz-transform-origin",
"-ms-transform-origin",
"-o-transform-origin",
"transform-origin",
"-webkit-animation",
"-moz-animation",
"-ms-animation",
"-o-animation",
"animation",
"-webkit-animation-name",
"-moz-animation-name",
"-ms-animation-name",
"-o-animation-name",
"animation-name",
"-webkit-animation-duration",
"-moz-animation-duration",
"-ms-animation-duration",
"-o-animation-duration",
"animation-duration",
"-webkit-animation-play-state",
"-moz-animation-play-state",
"-ms-animation-play-state",
"-o-animation-play-state",
"animation-play-state",
"-webkit-animation-timing-function",
"-moz-animation-timing-function",
"-ms-animation-timing-function",
"-o-animation-timing-function",
"animation-timing-function",
"-webkit-animation-delay",
"-moz-animation-delay",
"-ms-animation-delay",
"-o-animation-delay",
"animation-delay",
"-webkit-animation-iteration-count",
"-moz-animation-iteration-count",
"-ms-animation-iteration-count",
"-o-animation-iteration-count",
"animation-iteration-count",
"-webkit-animation-direction",
"-moz-animation-direction",
"-ms-animation-direction",
"-o-animation-direction",
"animation-direction"
]
]
}
{
"adjoining-classes": false,
"box-sizing": false,
"box-model": false,
"compatible-vendor-prefixes": false,
"floats": false,
"font-sizes": false,
"gradients": false,
"important": false,
"known-properties": false,
"outline-none": false,
"qualified-headings": false,
"regex-selectors": false,
"text-indent": false,
"unique-headings": false,
"universal-selector": false,
"unqualified-attributes": false
}
# Enforce Unix newlines
*.css text eol=lf
*.html text eol=lf
*.js text eol=lf
*.json text eol=lf
*.less text eol=lf
*.md text eol=lf
*.yml text eol=lf
language: node_js language: node_js
node_js: node_js:
- 0.10 - 0.10
before_script: before_install:
- gem install jekyll - time sudo pip install --use-mirrors -r ./test-infra/requirements.txt
- npm install -g grunt-cli 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 || time npm install
after_script:
- if [ "$TWBS_TEST" = core ]; then time ./test-infra/node_modules_cache.py upload; fi
env: env:
global: global:
- secure: Besg41eyU+2mfxrywQ4ydOShMdc34ImaO0S0ENP+aCOBuyNBIgP59wy5tBMmyai2/8eInYeVps4Td96mWInMMxzTe3Bar7eTLG5tWVKRSr/wc4NBPZ/ppoPAmCEsz9Y+VptRH9/FO8n7hsL9EFZ+xBKbG+C0SccGoyBDpA5j7/w= - SAUCE_USERNAME: bootstrap
- secure: Ptiv7phCImFP3ALIz+sMQzrZg8k7C1gLZbFBhWxjnQr3g06wIfX3Ls5y9OHvxid+lOZZjISui3wzBVgpVHqwHUYf96+r0mo6/mJ+F4ffUmShZANVaIMD/JRTnXhUQJbvntGLvxn1EYWPdNM+2IHJrMipnjHxU9tkgAnlel4Zdew= - secure: "pJkBwnuae9dKU5tEcCqccfS1QQw7/meEcfz63fM7ba7QJNjoA6BaXj08L5Z3Vb5vBmVPwBawxo5Hp0jC0r/Z/O0hGnAmz/Cz09L+cy7dSAZ9x4hvZePSja/UAusaB5ogMoO8l2b773MzgQeSmrLbExr9BWLeqEfjC2hFgdgHLaQ="
- TWBS_HAVE_OWN_BROWSERSTACK_KEY: "" - secure: "gqjqISbxBJK6byFbsmr1AyP1qoWH+rap06A2gI7v72+Tn2PU2nYkIMUkCvhZw6K889jv+LhQ/ybcBxDOXHpNCExCnSgB4dcnmYp+9oeNZb37jSP0rQ+Ib4OTLjzc3/FawE/fUq5kukZTC7porzc/k0qJNLAZRx3YLALmK1GIdUY="
- secure: "Gghh/e3Gsbj1+4RR9Lh2aR/xJl35HWiHqlPIeSUqE9D7uDCVTAwNce/dGL3Ew7uJPfJ6Pgr70wD3zgu3stw0Zmzayax0hiDtGwcQCxVIER08wqGANK9C2Q7PYJkNTNtiTo6ehKWbdV4Z+/U+TEYyQfpQTDbAFYk/vVpsdjp0Lmc="
- secure: "RTbRdx4G/2OTLfrZtP1VbRljxEmd6A1F3GqXboeQTldsnAlwpsES65es5CE3ub/rmixLApOY9ot7OPmNixFgC2Y8xOsV7lNCC62QVpmqQEDyGFFQKb3yO6/dmwQxdsCqGfzf9Np6Wh5V22QFvr50ZLKLd7Uhd9oXMDIk/z1MJ3o="
matrix:
- TWBS_TEST=core
- TWBS_TEST=validate-html
- TWBS_TEST=sauce-js-unit
matrix:
fast_finish: true
...@@ -37,12 +37,15 @@ We only accept issues that are bug reports or feature requests. Bugs must be iso ...@@ -37,12 +37,15 @@ We only accept issues that are bug reports or feature requests. Bugs must be iso
### CSS ### CSS
- Adhere to the [RECESS CSS property order](http://markdotto.com/2011/11/29/css-property-order/) - Adhere to the [CSS property order](http://markdotto.com/2011/11/29/css-property-order/)
- Multiple-line approach (one property and value per line) - Multiple-line approach (one property and value per line)
- Always a space after a property's colon (e.g., `display: block;` and not `display:block;`) - Always a space after a property's colon (e.g., `display: block;` and not `display:block;`)
- End all lines with a semi-colon - End all lines with a semi-colon
- For multiple, comma-separated selectors, place each selector on its own line - For multiple, comma-separated selectors, place each selector on its own line
- Attribute selectors, like `input[type="text"]` should always wrap the attribute's value in double quotes, for consistency and safety (see this [blog post on unquoted attribute values](http://mathiasbynens.be/notes/unquoted-attribute-values) that can lead to XSS attacks). - Attribute selectors, like `input[type="text"]` should always wrap the attribute's value in double quotes, for consistency and safety (see this [blog post on unquoted attribute values](http://mathiasbynens.be/notes/unquoted-attribute-values) that can lead to XSS attacks).
- Attribute selectors should only be used where absolutely necessary (e.g., form controls) and should be avoided on custom components for performance and explicitness.
- Series of classes for a component should include a base class (e.g., `.component`) and use the base class as a prefix for modifier and sub-components (e.g., `.component-lg`).
- Avoid inheritance and over nesting—use single, explicit classes whenever possible.
### JS ### JS
...@@ -58,7 +61,7 @@ We only accept issues that are bug reports or feature requests. Bugs must be iso ...@@ -58,7 +61,7 @@ We only accept issues that are bug reports or feature requests. Bugs must be iso
With v3.1, we're moving from the Apache 2 to the MIT license for the Bootstrap code (not the docs). We're in the process of collecting permissions from all Bootstrap contributors with code still part of the project to make this happen. For details, please see [#2054](https://github.com/twbs/bootstrap/issues/2054). With v3.1, we're moving from the Apache 2 to the MIT license for the Bootstrap code (not the docs). We're in the process of collecting permissions from all Bootstrap contributors with code still part of the project to make this happen. For details, please see [#2054](https://github.com/twbs/bootstrap/issues/2054).
By contributing your code, you agree to dual-license your contribution under the [Apache 2](https://github.com/twbs/bootstrap/blob/master/LICENSE) and [MIT](https://github.com/twbs/bootstrap/blob/master/MIT) licenses. By contributing your code, you agree to dual-license your contribution under the [Apache 2](https://github.com/twbs/bootstrap/blob/master/LICENSE) and [MIT](https://github.com/twbs/bootstrap/blob/master/LICENSE-MIT) licenses.
......
/* jshint node: true */ /* jshint node: true */
module.exports = function(grunt) { module.exports = function (grunt) {
"use strict"; 'use strict';
RegExp.quote = require('regexp-quote') // Force use of Unix newlines
grunt.util.linefeed = '\n';
RegExp.quote = function (string) {
return string.replace(/[-\\^$*+?.()|[\]{}]/g, '\\$&')
}
var btoa = require('btoa') var btoa = require('btoa')
// Project configuration. // Project configuration.
grunt.initConfig({ grunt.initConfig({
...@@ -34,9 +39,34 @@ module.exports = function(grunt) { ...@@ -34,9 +39,34 @@ module.exports = function(grunt) {
}, },
test: { test: {
src: ['js/tests/unit/*.js'] src: ['js/tests/unit/*.js']
},
assets: {
src: ['docs-assets/js/application.js', 'docs-assets/js/customizer.js']
} }
}, },
jscs: {
options: {
config: 'js/.jscs.json',
},
gruntfile: {
src: ['Gruntfile.js']
},
src: {
src: ['js/*.js']
},
test: {
src: ['js/tests/unit/*.js']
}
},
csslint: {
options: {
csslintrc: '.csslintrc'
},
src: ['dist/css/bootstrap.css', 'dist/css/bootstrap-theme.css']
},
concat: { concat: {
options: { options: {
banner: '<%= banner %><%= jqueryCheck %>', banner: '<%= banner %><%= jqueryCheck %>',
...@@ -69,42 +99,74 @@ module.exports = function(grunt) { ...@@ -69,42 +99,74 @@ module.exports = function(grunt) {
bootstrap: { bootstrap: {
src: ['<%= concat.bootstrap.dest %>'], src: ['<%= concat.bootstrap.dest %>'],
dest: 'dist/js/<%= pkg.name %>.min.js' dest: 'dist/js/<%= pkg.name %>.min.js'
},
customize: {
src: [
'docs-assets/js/less.js',
'docs-assets/js/jszip.js',
'docs-assets/js/uglify.js',
'docs-assets/js/filesaver.js',
'docs-assets/js/customizer.js'
],
dest: 'docs-assets/js/customize.js'
} }
}, },
recess: { less: {
options: { compile: {
compile: true,
banner: '<%= banner %>'
},
bootstrap: {
src: ['less/bootstrap.less'],
dest: 'dist/css/<%= pkg.name %>.css'
},
min: {
options: { options: {
compress: true strictMath: true
}, },
src: ['less/bootstrap.less'], files: {
dest: 'dist/css/<%= pkg.name %>.min.css' 'dist/css/<%= pkg.name %>.css': 'less/bootstrap.less',
}, 'dist/css/<%= pkg.name %>-theme.css': 'less/theme.less'
theme: { }
src: ['less/theme.less'],
dest: 'dist/css/<%= pkg.name %>-theme.css'
}, },
theme_min: { minify: {
options: {
cleancss: true,
report: 'min'
},
files: {
'dist/css/<%= pkg.name %>.min.css': 'dist/css/<%= pkg.name %>.css',
'dist/css/<%= pkg.name %>-theme.min.css': 'dist/css/<%= pkg.name %>-theme.css'
}
}
},
usebanner: {
dist: {
options: {
position: 'top',
banner: '<%= banner %>'
},
files: {
src: [
'dist/css/<%= pkg.name %>.css',
'dist/css/<%= pkg.name %>.min.css',
'dist/css/<%= pkg.name %>-theme.css',
'dist/css/<%= pkg.name %>-theme.min.css',
]
}
}
},
csscomb: {
sort: {
options: { options: {
compress: true sortOrder: '.csscomb.json'
}, },
src: ['less/theme.less'], files: {
dest: 'dist/css/<%= pkg.name %>-theme.min.css' 'dist/css/<%= pkg.name %>.css': ['dist/css/<%= pkg.name %>.css'],
'dist/css/<%= pkg.name %>-theme.css': ['dist/css/<%= pkg.name %>-theme.css'],
}
} }
}, },
copy: { copy: {
fonts: { fonts: {
expand: true, expand: true,
src: ["fonts/*"], src: ['fonts/*'],
dest: 'dist/' dest: 'dist/'
} }
}, },
...@@ -133,12 +195,12 @@ module.exports = function(grunt) { ...@@ -133,12 +195,12 @@ module.exports = function(grunt) {
options: { options: {
reset: true, reset: true,
relaxerror: [ relaxerror: [
"Bad value X-UA-Compatible for attribute http-equiv on element meta.", 'Bad value X-UA-Compatible for attribute http-equiv on element meta.',
"Element img is missing required attribute src." 'Element img is missing required attribute src.'
] ]
}, },
files: { files: {
src: ["_gh_pages/**/*.html"] src: ['_gh_pages/**/*.html']
} }
}, },
...@@ -151,9 +213,9 @@ module.exports = function(grunt) { ...@@ -151,9 +213,9 @@ module.exports = function(grunt) {
files: '<%= jshint.test.src %>', files: '<%= jshint.test.src %>',
tasks: ['jshint:test', 'qunit'] tasks: ['jshint:test', 'qunit']
}, },
recess: { less: {
files: 'less/*.less', files: 'less/*.less',
tasks: ['recess'] tasks: ['less']
} }
}, },
...@@ -166,36 +228,126 @@ module.exports = function(grunt) { ...@@ -166,36 +228,126 @@ module.exports = function(grunt) {
replacement: grunt.option('newver'), replacement: grunt.option('newver'),
recursive: true recursive: true
} }
},
'saucelabs-qunit': {
all: {
options: {
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'
}
*/
],
}
}
} }
}); });
// These plugins provide necessary tasks. // These plugins provide necessary tasks.
grunt.loadNpmTasks('browserstack-runner'); require('load-grunt-tasks')(grunt, {scope: 'devDependencies'});
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-connect');
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-qunit');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-html-validation');
grunt.loadNpmTasks('grunt-jekyll');
grunt.loadNpmTasks('grunt-recess');
grunt.loadNpmTasks('grunt-sed');
// Docs HTML validation task // Docs HTML validation task
grunt.registerTask('validate-html', ['jekyll', 'validation']); grunt.registerTask('validate-html', ['jekyll', 'validation']);
// Test task. // Test task.
var testSubtasks = ['dist-css', 'jshint', 'qunit', 'validate-html']; var testSubtasks = [];
// Only run BrowserStack tests under Travis // Skip core tests if running a different subset of the test suite
if (process.env.TRAVIS) { if (!process.env.TWBS_TEST || process.env.TWBS_TEST === 'core') {
// Only run BrowserStack tests if this is a mainline commit in twbs/bootstrap, or you have your own BrowserStack key testSubtasks = testSubtasks.concat(['dist-css', 'jshint', 'jscs', 'qunit']);
if ((process.env.TRAVIS_REPO_SLUG === 'twbs/bootstrap' && process.env.TRAVIS_PULL_REQUEST === 'false') || process.env.TWBS_HAVE_OWN_BROWSERSTACK_KEY) { }
testSubtasks.push('browserstack_runner'); // Skip HTML validation if running a different subset of the test suite
} if (!process.env.TWBS_TEST || process.env.TWBS_TEST === 'validate-html') {
testSubtasks.push('validate-html');
}
// Only run Sauce Labs tests if there's a Sauce access key
if (typeof process.env.SAUCE_ACCESS_KEY !== 'undefined'
// Skip Sauce if running a different subset of the test suite
&& (!process.env.TWBS_TEST || process.env.TWBS_TEST === 'sauce-js-unit')) {
testSubtasks.push('connect');
testSubtasks.push('saucelabs-qunit');
} }
grunt.registerTask('test', testSubtasks); grunt.registerTask('test', testSubtasks);
...@@ -203,7 +355,7 @@ module.exports = function(grunt) { ...@@ -203,7 +355,7 @@ module.exports = function(grunt) {
grunt.registerTask('dist-js', ['concat', 'uglify']); grunt.registerTask('dist-js', ['concat', 'uglify']);
// CSS distribution task. // CSS distribution task.
grunt.registerTask('dist-css', ['recess']); grunt.registerTask('dist-css', ['less', 'csscomb', 'usebanner']);
// Fonts distribution task. // Fonts distribution task.
grunt.registerTask('dist-fonts', ['copy']); grunt.registerTask('dist-fonts', ['copy']);
......
# [Bootstrap](http://getbootstrap.com) [![Build Status](https://secure.travis-ci.org/twbs/bootstrap.png)](http://travis-ci.org/twbs/bootstrap) [![devDependency Status](https://david-dm.org/twbs/bootstrap/dev-status.png)](https://david-dm.org/twbs/bootstrap#info=devDependencies) # [Bootstrap](http://getbootstrap.com) [![Build Status](https://secure.travis-ci.org/twbs/bootstrap.png)](http://travis-ci.org/twbs/bootstrap) [![devDependency Status](https://david-dm.org/twbs/bootstrap/dev-status.png)](https://david-dm.org/twbs/bootstrap#info=devDependencies)
[![Selenium Test Status](https://saucelabs.com/browser-matrix/bootstrap.svg)](https://saucelabs.com/u/bootstrap)
Bootstrap is a sleek, intuitive, and powerful front-end framework for faster and easier web development, created and maintained by [Mark Otto](http://twitter.com/mdo) and [Jacob Thornton](http://twitter.com/fat). Bootstrap is a sleek, intuitive, and powerful front-end framework for faster and easier web development, created and maintained by [Mark Otto](http://twitter.com/mdo) and [Jacob Thornton](http://twitter.com/fat).
...@@ -56,8 +57,9 @@ Bootstrap's documentation, included in this repo in the root directory, is built ...@@ -56,8 +57,9 @@ Bootstrap's documentation, included in this repo in the root directory, is built
### Running documentation locally ### Running documentation locally
1. If necessary, [install Jekyll](http://jekyllrb.com/docs/installation) (requires v1.x). 1. If necessary, [install Jekyll](http://jekyllrb.com/docs/installation) (requires v1.x).
- **Windows users:** read [this unofficial guide](https://github.com/juthilo/run-jekyll-on-windows/) to get Jekyll up and running without problems.
2. From the root `/bootstrap` directory, run `jekyll serve` in the command line. 2. From the root `/bootstrap` directory, run `jekyll serve` in the command line.
- **Windows users:** run `chcp 65001` first to change the command prompt's character encoding ([code page](http://en.wikipedia.org/wiki/Windows_code_page)) to UTF-8 so Jekyll runs without errors. - **Windows users:** For Ruby 2.0.0 run `chcp 65001` first to change the command prompt's character encoding ([code page](http://en.wikipedia.org/wiki/Windows_code_page)) to UTF-8 so Jekyll runs without errors. For Ruby 1.9.3 you can alternatively do `SET LANG=en_EN.UTF-8`. In addition, ensure you have Python installed and added in your `PATH` or the build will fail due to our Pygments dependency.
3. Open <http://localhost:9001> in your browser, and voilà. 3. Open <http://localhost:9001> in your browser, and voilà.
Learn more about using Jekyll by reading its [documentation](http://jekyllrb.com/docs/home/). Learn more about using Jekyll by reading its [documentation](http://jekyllrb.com/docs/home/).
...@@ -122,7 +124,6 @@ Keep track of development and community news. ...@@ -122,7 +124,6 @@ Keep track of development and community news.
* Follow [@twbootstrap on Twitter](http://twitter.com/twbootstrap). * Follow [@twbootstrap on Twitter](http://twitter.com/twbootstrap).
* Read and subscribe to [The Official Bootstrap Blog](http://blog.getbootstrap.com). * Read and subscribe to [The Official Bootstrap Blog](http://blog.getbootstrap.com).
* Have a question that's not a feature request or bug report? [Ask on the mailing list.](http://groups.google.com/group/twitter-bootstrap)
* Chat with fellow Bootstrappers in IRC. On the `irc.freenode.net` server, in the `##twitter-bootstrap` channel. * Chat with fellow Bootstrappers in IRC. On the `irc.freenode.net` server, in the `##twitter-bootstrap` channel.
......
...@@ -2,19 +2,15 @@ ...@@ -2,19 +2,15 @@
================================================== --> ================================================== -->
<!-- Placed at the end of the document so the pages load faster --> <!-- Placed at the end of the document so the pages load faster -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="{{ page.base_url }}dist/js/bootstrap.js"></script> <script src="{{ page.base_url }}dist/js/bootstrap.min.js"></script>
<script src="{{ page.base_url }}docs-assets/js/holder.js"></script> <script src="{{ page.base_url }}docs-assets/js/holder.js"></script>
<script src="{{ page.base_url }}docs-assets/js/application.js"></script> <script src="{{ page.base_url }}docs-assets/js/application.js"></script>
{% if page.slug == "customize" %} {% if page.slug == "customize" %}
<script src="{{ page.base_url }}docs-assets/js/less.js"></script>
<script src="{{ page.base_url }}docs-assets/js/jszip.js"></script>
<script src="{{ page.base_url }}docs-assets/js/uglify.js"></script>
<script src="{{ page.base_url }}docs-assets/js/filesaver.js"></script>
<script src="{{ page.base_url }}docs-assets/js/raw-files.js"></script> <script src="{{ page.base_url }}docs-assets/js/raw-files.js"></script>
<script src="{{ page.base_url }}docs-assets/js/customizer.js"></script> <script src="{{ page.base_url }}docs-assets/js/customize.js"></script>
{% endif %} {% endif %}
{% comment %} {% comment %}
......
<meta charset="utf-8"> <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content=""> <meta name="description" content="Bootstrap, a sleek, intuitive, and powerful mobile first front-end framework for faster and easier web development.">
<meta name="author" content=""> <meta name="keywords" content="HTML, CSS, JS, JavaScript, framework, bootstrap, front-end, frontend, web development">
<meta name="author" content="Mark Otto, Jacob Thornton, and Bootstrap contributors">
<title> <title>
{% if page.title == "Bootstrap" %} {% if page.title == "Bootstrap" %}
......
...@@ -121,6 +121,7 @@ ...@@ -121,6 +121,7 @@
<li><a href="#list-group-basic">Basic example</a></li> <li><a href="#list-group-basic">Basic example</a></li>
<li><a href="#list-group-badges">Badges</a></li> <li><a href="#list-group-badges">Badges</a></li>
<li><a href="#list-group-linked">Linked items</a></li> <li><a href="#list-group-linked">Linked items</a></li>
<li><a href="#list-group-contextual-classes">Contextual classes</a></li>
<li><a href="#list-group-custom-content">Custom content</a></li> <li><a href="#list-group-custom-content">Custom content</a></li>
</ul> </ul>
</li> </li>
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
<li><a href="#grid-media-queries">Media queries</a></li> <li><a href="#grid-media-queries">Media queries</a></li>
<li><a href="#grid-options">Grid options</a></li> <li><a href="#grid-options">Grid options</a></li>
<li><a href="#grid-example-basic">Ex: Stacked-to-horizonal</a></li> <li><a href="#grid-example-basic">Ex: Stacked-to-horizonal</a></li>
<li><a href="#grid-example-fluid">Ex: Fluid container</a></li>
<li><a href="#grid-example-mixed">Ex: Mobile and desktops</a></li> <li><a href="#grid-example-mixed">Ex: Mobile and desktops</a></li>
<li><a href="#grid-example-mixed-complete">Ex: Mobile, tablet, desktops</a></li> <li><a href="#grid-example-mixed-complete">Ex: Mobile, tablet, desktops</a></li>
<li><a href="#grid-responsive-resets">Responsive column resets</a></li> <li><a href="#grid-responsive-resets">Responsive column resets</a></li>
...@@ -37,7 +38,14 @@ ...@@ -37,7 +38,14 @@
<li><a href="#type-lists">Lists</a></li> <li><a href="#type-lists">Lists</a></li>
</ul> </ul>
</li> </li>
<li><a href="#code">Code</a></li> <li>
<a href="#code">Code</a>
<ul class="nav">
<li><a href="#code-inline">Inline code</a></li>
<li><a href="#code-user-input">User input</a></li>
<li><a href="#code-block">Blocks of code</a></li>
</ul>
</li>
<li> <li>
<a href="#tables">Tables</a> <a href="#tables">Tables</a>
<ul class="nav"> <ul class="nav">
...@@ -79,6 +87,8 @@ ...@@ -79,6 +87,8 @@
<li> <li>
<a href="#helper-classes">Helper classes</a> <a href="#helper-classes">Helper classes</a>
<ul class="nav"> <ul class="nav">
<li><a href="#helper-classes-colors">Contextual colors</a></li>
<li><a href="#helper-classes-backgrounds">Contextual backgrounds</a></li>
<li><a href="#helper-classes-close">Close icon</a></li> <li><a href="#helper-classes-close">Close icon</a></li>
<li><a href="#helper-classes-carets">Carets</a></li> <li><a href="#helper-classes-carets">Carets</a></li>
<li><a href="#helper-classes-floats">Quick floats</a></li> <li><a href="#helper-classes-floats">Quick floats</a></li>
...@@ -97,3 +107,11 @@ ...@@ -97,3 +107,11 @@
<li><a href="#responsive-utilities-tests">Test cases</a></li> <li><a href="#responsive-utilities-tests">Test cases</a></li>
</ul> </ul>
</li> </li>
<li>
<a href="#less">Using LESS</a>
<ul class="nav">
<li><a href="#less-variables">Variables</a></li>
<li><a href="#less-mixins-vendor">Vendor mixins</a></li>
<li><a href="#less-mixins-utility">Utility mixins</a></li>
</ul>
</li>
...@@ -32,7 +32,19 @@ ...@@ -32,7 +32,19 @@
</ul> </ul>
</li> </li>
<li> <li>
<a href="#browsers">Browser support</a> <a href="#browsers">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>
<li><a href="#support-ie8-respondjs">IE8 and Respond.js</a></li>
<li><a href="#support-ie8-box-sizing">IE8 and box-sizing</a></li>
<li><a href="#support-ie-compatibility-modes">IE Compatibility modes</a></li>
<li><a href="#support-ie10-width">IE10 and Windows (Phone) 8</a></li>
<li><a href="#support-safari-percentages">Safari percent rounding</a></li>
<li><a href="#support-fixed-position-keyboards">Modals, navbars, and virtual keyboards</a></li>
<li><a href="#support-browser-zooming">Browser zooming</a></li>
<li><a href="#support-android-stock-browser">Android stock browser</a></li>
</ul>
</li> </li>
<li> <li>
<a href="#third-parties">Third party support</a> <a href="#third-parties">Third party support</a>
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
<a href="#modals">Modal</a> <a href="#modals">Modal</a>
<ul class="nav"> <ul class="nav">
<li><a href="#modals-examples">Examples</a></li> <li><a href="#modals-examples">Examples</a></li>
<li><a href="#modals-sizes">Sizes</a></li>
<li><a href="#modals-usage">Usage</a></li> <li><a href="#modals-usage">Usage</a></li>
</ul> </ul>
</li> </li>
......
...@@ -69,7 +69,6 @@ base_url: "../" ...@@ -69,7 +69,6 @@ base_url: "../"
<p class="lead">Stay up to date on the development of Bootstrap and reach out to the community with these helpful resources.</p> <p class="lead">Stay up to date on the development of Bootstrap and reach out to the community with these helpful resources.</p>
<ul> <ul>
<li>Read and subscribe to <a href="http://blog.getbootstrap.com/">The Official Bootstrap Blog</a>.</li> <li>Read and subscribe to <a href="http://blog.getbootstrap.com/">The Official Bootstrap Blog</a>.</li>
<li>Have a question that's not a feature request or bug report? <a href="http://groups.google.com/group/twitter-bootstrap">Ask on the mailing list.</a></li>
<li>Chat with fellow Bootstrappers using IRC in the <code>irc.freenode.net</code> server, in the <a href="irc://irc.freenode.net/#twitter-bootstrap">##twitter-bootstrap channel</a>.</li> <li>Chat with fellow Bootstrappers using IRC in the <code>irc.freenode.net</code> server, in the <a href="irc://irc.freenode.net/#twitter-bootstrap">##twitter-bootstrap channel</a>.</li>
<li>Find inspiring examples of people building with Bootstrap at the <a href="http://expo.getbootstrap.com">Bootstrap Expo</a>.</li> <li>Find inspiring examples of people building with Bootstrap at the <a href="http://expo.getbootstrap.com">Bootstrap Expo</a>.</li>
</ul> </ul>
...@@ -88,6 +87,8 @@ base_url: "../" ...@@ -88,6 +87,8 @@ base_url: "../"
<li><a href="http://v3.bootcss.com/">Bootstrap 中文文档 (Chinese)</a></li> <li><a href="http://v3.bootcss.com/">Bootstrap 中文文档 (Chinese)</a></li>
<li><a href="http://www.oneskyapp.com/docs/bootstrap/ru">Bootstrap по-русски (Russian)</a></li> <li><a href="http://www.oneskyapp.com/docs/bootstrap/ru">Bootstrap по-русски (Russian)</a></li>
<li><a href="http://www.oneskyapp.com/docs/bootstrap/es">Bootstrap en Español (Spanish)</a></li> <li><a href="http://www.oneskyapp.com/docs/bootstrap/es">Bootstrap en Español (Spanish)</a></li>
<li><a href="http://twbs.site-konstruktor.com.ua">Bootstrap ua Українською (Ukrainian)</a></li>
<li><a href="http://www.oneskyapp.com/docs/bootstrap/fr">Bootstrap en Français (French)</a></li>
</ul> </ul>
<p>Have another language to add, or perhaps a different or better translation? Let us know by <a href="https://github.com/twbs/bootstrap/issues/new">opening an issue</a>.</p> <p>Have another language to add, or perhaps a different or better translation? Let us know by <a href="https://github.com/twbs/bootstrap/issues/new">opening an issue</a>.</p>
</div> </div>
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
"name": "bootstrap", "name": "bootstrap",
"version": "3.0.3", "version": "3.0.3",
"main": [ "main": [
"./dist/js/bootstrap.js", "./dist/js/bootstrap.js",
"./dist/css/bootstrap.css", "./dist/css/bootstrap.css",
"./dist/fonts/glyphicons-halflings-regular.eot", "./dist/fonts/glyphicons-halflings-regular.eot",
"./dist/fonts/glyphicons-halflings-regular.svg", "./dist/fonts/glyphicons-halflings-regular.svg",
"./dist/fonts/glyphicons-halflings-regular.ttf", "./dist/fonts/glyphicons-halflings-regular.ttf",
...@@ -18,10 +18,7 @@ ...@@ -18,10 +18,7 @@
"js/tests", "js/tests",
"CNAME", "CNAME",
"CONTRIBUTING.md", "CONTRIBUTING.md",
"Gruntfile.js",
"browserstack.json",
"composer.json", "composer.json",
"package.json",
"*.html" "*.html"
], ],
"dependencies": { "dependencies": {
......
{
"username": "--secure--",
"key": "--secure--",
"test_path": "js/tests/index.html",
"browsers": [
{
"browser": "firefox",
"browser_version": "latest",
"os": "OS X",
"os_version": "Mountain Lion"
},
{
"browser": "safari",
"browser_version": "latest",
"os": "OS X",
"os_version": "Mountain Lion"
},
{
"browser": "chrome",
"browser_version": "latest",
"os": "OS X",
"os_version": "Mountain Lion"
},
{
"browser": "firefox",
"browser_version": "latest",
"os": "Windows",
"os_version": "7"
},
{
"browser": "chrome",
"browser_version": "latest",
"os": "Windows",
"os_version": "7"
}
]
}
This diff is collapsed.
This diff is collapsed.
...@@ -56,7 +56,7 @@ base_url: "../" ...@@ -56,7 +56,7 @@ base_url: "../"
</div> </div>
<div class="checkbox"> <div class="checkbox">
<label> <label>
<input type="checkbox" checked value="buttons.less"> <input type="checkbox" checked value="buttons.less" data-dependents="button-groups.less">
Buttons Buttons
</label> </label>
</div> </div>
...@@ -436,7 +436,7 @@ base_url: "../" ...@@ -436,7 +436,7 @@ base_url: "../"
<div class="row"> <div class="row">
<div class="col-lg-6"> <div class="col-lg-6">
<label>@headings-font-family</label> <label>@headings-font-family</label>
<input type="text" class="form-control" placeholder="@font-family-base" data-var="@headings-font-family"> <input type="text" class="form-control" placeholder="inherit" data-var="@headings-font-family">
<label>@headings-font-weight</label> <label>@headings-font-weight</label>
<input type="text" class="form-control" placeholder="500" data-var="@headings-font-weight"> <input type="text" class="form-control" placeholder="500" data-var="@headings-font-weight">
</div> </div>
...@@ -1056,7 +1056,7 @@ base_url: "../" ...@@ -1056,7 +1056,7 @@ base_url: "../"
<p class="help-block">Hovered dropdown menu entry text color</p> <p class="help-block">Hovered dropdown menu entry text color</p>
<label>@dropdown-link-hover-bg</label> <label>@dropdown-link-hover-bg</label>
<input type="text" class="form-control" placeholder="#f5f5f5" data-var="@dropdown-link-hover-bg"> <input type="text" class="form-control" placeholder="#f5f5f5" data-var="@dropdown-link-hover-bg">
<p class="help-block">Hovered dropdown menu entry text color</p> <p class="help-block">Hovered dropdown menu entry background color</p>
<label>@dropdown-link-active-color</label> <label>@dropdown-link-active-color</label>
<input type="text" class="form-control" placeholder="@component-active-color" data-var="@dropdown-link-active-color"> <input type="text" class="form-control" placeholder="@component-active-color" data-var="@dropdown-link-active-color">
...@@ -1147,6 +1147,8 @@ base_url: "../" ...@@ -1147,6 +1147,8 @@ base_url: "../"
<h3>Wells</h3> <h3>Wells</h3>
<label>@well-bg</label> <label>@well-bg</label>
<input type="text" class="form-control" placeholder="#f5f5f5" data-var="@well-bg"> <input type="text" class="form-control" placeholder="#f5f5f5" data-var="@well-bg">
<label>@well-border</label>
<input type="text" class="form-control" placeholder="darken(@well-bg, 7%)" data-var="@well-border">
<h2 id="variables-accordion">Accordion</h2> <h2 id="variables-accordion">Accordion</h2>
...@@ -1247,6 +1249,11 @@ base_url: "../" ...@@ -1247,6 +1249,11 @@ base_url: "../"
<input type="text" class="form-control" placeholder="#000" data-var="@modal-backdrop-bg"> <input type="text" class="form-control" placeholder="#000" data-var="@modal-backdrop-bg">
<p class="help-block">Modal backdrop background color</p> <p class="help-block">Modal backdrop background color</p>
</div> </div>
<div class="col-md-4">
<label>@modal-backdrop-opacity</label>
<input type="text" class="form-control" placeholder=".5" data-var="@modal-backdrop-opacity">
<p class="help-block">Modal backdrop opacity</p>
</div>
</div> </div>
<h3>Modal header and footer</h3> <h3>Modal header and footer</h3>
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -26,7 +26,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery" ...@@ -26,7 +26,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery"
* ======================================================================== */ * ======================================================================== */
+function ($) { "use strict"; +function ($) { 'use strict';
// CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
// ============================================================ // ============================================================
...@@ -83,7 +83,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery" ...@@ -83,7 +83,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery"
* ======================================================================== */ * ======================================================================== */
+function ($) { "use strict"; +function ($) { 'use strict';
// ALERT CLASS DEFINITION // ALERT CLASS DEFINITION
// ====================== // ======================
...@@ -182,7 +182,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery" ...@@ -182,7 +182,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery"
* ======================================================================== */ * ======================================================================== */
+function ($) { "use strict"; +function ($) { 'use strict';
// BUTTON PUBLIC CLASS DEFINITION // BUTTON PUBLIC CLASS DEFINITION
// ============================== // ==============================
...@@ -298,7 +298,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery" ...@@ -298,7 +298,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery"
* ======================================================================== */ * ======================================================================== */
+function ($) { "use strict"; +function ($) { 'use strict';
// CAROUSEL CLASS DEFINITION // CAROUSEL CLASS DEFINITION
// ========================= // =========================
...@@ -516,7 +516,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery" ...@@ -516,7 +516,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery"
* ======================================================================== */ * ======================================================================== */
+function ($) { "use strict"; +function ($) { 'use strict';
// COLLAPSE PUBLIC CLASS DEFINITION // COLLAPSE PUBLIC CLASS DEFINITION
// ================================ // ================================
...@@ -696,7 +696,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery" ...@@ -696,7 +696,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery"
* ======================================================================== */ * ======================================================================== */
+function ($) { "use strict"; +function ($) { 'use strict';
// DROPDOWN CLASS DEFINITION // DROPDOWN CLASS DEFINITION
// ========================= // =========================
...@@ -704,7 +704,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery" ...@@ -704,7 +704,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery"
var backdrop = '.dropdown-backdrop' var backdrop = '.dropdown-backdrop'
var toggle = '[data-toggle=dropdown]' var toggle = '[data-toggle=dropdown]'
var Dropdown = function (element) { var Dropdown = function (element) {
var $el = $(element).on('click.bs.dropdown', this.toggle) $(element).on('click.bs.dropdown', this.toggle)
} }
Dropdown.prototype.toggle = function (e) { Dropdown.prototype.toggle = function (e) {
...@@ -763,7 +763,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery" ...@@ -763,7 +763,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery"
if (e.keyCode == 38 && index > 0) index-- // up if (e.keyCode == 38 && index > 0) index-- // up
if (e.keyCode == 40 && index < $items.length - 1) index++ // down if (e.keyCode == 40 && index < $items.length - 1) index++ // down
if (!~index) index=0 if (!~index) index = 0
$items.eq(index).focus() $items.eq(index).focus()
} }
...@@ -851,7 +851,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery" ...@@ -851,7 +851,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery"
* ======================================================================== */ * ======================================================================== */
+function ($) { "use strict"; +function ($) { 'use strict';
// MODAL CLASS DEFINITION // MODAL CLASS DEFINITION
// ====================== // ======================
...@@ -982,7 +982,6 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery" ...@@ -982,7 +982,6 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery"
} }
Modal.prototype.backdrop = function (callback) { Modal.prototype.backdrop = function (callback) {
var that = this
var animate = this.$element.hasClass('fade') ? 'fade' : '' var animate = this.$element.hasClass('fade') ? 'fade' : ''
if (this.isShown && this.options.backdrop) { if (this.isShown && this.options.backdrop) {
...@@ -1013,7 +1012,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery" ...@@ -1013,7 +1012,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery"
} else if (!this.isShown && this.$backdrop) { } else if (!this.isShown && this.$backdrop) {
this.$backdrop.removeClass('in') this.$backdrop.removeClass('in')
$.support.transition && this.$element.hasClass('fade')? $.support.transition && this.$element.hasClass('fade') ?
this.$backdrop this.$backdrop
.one($.support.transition.end, callback) .one($.support.transition.end, callback)
.emulateTransitionEnd(150) : .emulateTransitionEnd(150) :
...@@ -1099,7 +1098,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery" ...@@ -1099,7 +1098,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery"
* ======================================================================== */ * ======================================================================== */
+function ($) { "use strict"; +function ($) { 'use strict';
// TOOLTIP PUBLIC CLASS DEFINITION // TOOLTIP PUBLIC CLASS DEFINITION
// =============================== // ===============================
...@@ -1213,7 +1212,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery" ...@@ -1213,7 +1212,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery"
} }
Tooltip.prototype.show = function () { Tooltip.prototype.show = function () {
var e = $.Event('show.bs.'+ this.type) var e = $.Event('show.bs.' + this.type)
if (this.hasContent() && this.enabled) { if (this.hasContent() && this.enabled) {
this.$element.trigger(e) this.$element.trigger(e)
...@@ -1272,7 +1271,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery" ...@@ -1272,7 +1271,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery"
} }
} }
Tooltip.prototype.applyPlacement = function(offset, placement) { Tooltip.prototype.applyPlacement = function (offset, placement) {
var replace var replace
var $tip = this.tip() var $tip = this.tip()
var width = $tip[0].offsetWidth var width = $tip[0].offsetWidth
...@@ -1323,8 +1322,8 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery" ...@@ -1323,8 +1322,8 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery"
if (replace) $tip.offset(offset) if (replace) $tip.offset(offset)
} }
Tooltip.prototype.replaceArrow = function(delta, dimension, position) { Tooltip.prototype.replaceArrow = function (delta, dimension, position) {
this.arrow().css(position, delta ? (50 * (1 - delta / dimension) + "%") : '') this.arrow().css(position, delta ? (50 * (1 - delta / dimension) + '%') : '')
} }
Tooltip.prototype.setContent = function () { Tooltip.prototype.setContent = function () {
...@@ -1485,7 +1484,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery" ...@@ -1485,7 +1484,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery"
* ======================================================================== */ * ======================================================================== */
+function ($) { "use strict"; +function ($) { 'use strict';
// POPOVER PUBLIC CLASS DEFINITION // POPOVER PUBLIC CLASS DEFINITION
// =============================== // ===============================
...@@ -1603,7 +1602,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery" ...@@ -1603,7 +1602,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery"
* ======================================================================== */ * ======================================================================== */
+function ($) { "use strict"; +function ($) { 'use strict';
// SCROLLSPY CLASS DEFINITION // SCROLLSPY CLASS DEFINITION
// ========================== // ==========================
...@@ -1762,7 +1761,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery" ...@@ -1762,7 +1761,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery"
* ======================================================================== */ * ======================================================================== */
+function ($) { "use strict"; +function ($) { 'use strict';
// TAB CLASS DEFINITION // TAB CLASS DEFINITION
// ==================== // ====================
...@@ -1898,7 +1897,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery" ...@@ -1898,7 +1897,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery"
* ======================================================================== */ * ======================================================================== */
+function ($) { "use strict"; +function ($) { 'use strict';
// AFFIX CLASS DEFINITION // AFFIX CLASS DEFINITION
// ====================== // ======================
......
This diff is collapsed.
...@@ -597,6 +597,35 @@ h1[id] { ...@@ -597,6 +597,35 @@ h1[id] {
} }
/*
* Color swatches
*
* Color swatches and associated values for our grayscale and brand colors.
*/
.color-swatches {
margin: 0 -5px;
overflow: hidden; /* clearfix */
}
.color-swatch {
float: left;
width: 100px;
height: 100px;
margin: 0 5px;
border-radius: 3px;
}
.color-swatches .gray-darker { background-color: #222; }
.color-swatches .gray-dark { background-color: #333; }
.color-swatches .gray { background-color: #555; }
.color-swatches .gray-light { background-color: #999; }
.color-swatches .gray-lighter { background-color: #eee; }
.color-swatches .brand-primary { background-color: #428bca; }
.color-swatches .brand-success { background-color: #5cb85c; }
.color-swatches .brand-warning { background-color: #f0ad4e; }
.color-swatches .brand-danger { background-color: #d9534f; }
.color-swatches .brand-info { background-color: #5bc0de; }
/* /*
* Team members * Team members
* *
...@@ -730,7 +759,7 @@ h1[id] { ...@@ -730,7 +759,7 @@ h1[id] {
} }
/* Typography */ /* Typography */
.bs-example-type .table .info { .bs-example-type .table .type-info {
color: #999; color: #999;
vertical-align: middle; vertical-align: middle;
} }
...@@ -750,6 +779,11 @@ h1[id] { ...@@ -750,6 +779,11 @@ h1[id] {
margin: 0; margin: 0;
} }
/* Contextual background colors */
.bs-example-bg-classes p {
padding: 15px;
}
/* Images */ /* Images */
.bs-example > .img-circle, .bs-example > .img-circle,
.bs-example > .img-rounded, .bs-example > .img-rounded,
...@@ -921,7 +955,6 @@ h1[id] { ...@@ -921,7 +955,6 @@ h1[id] {
*/ */
.highlight { .highlight {
display: none; /* hidden by default, until >480px */
padding: 9px 14px; padding: 9px 14px;
margin-bottom: 14px; margin-bottom: 14px;
background-color: #f7f7f9; background-color: #f7f7f9;
...@@ -949,13 +982,6 @@ h1[id] { ...@@ -949,13 +982,6 @@ h1[id] {
color: #bebec5; color: #bebec5;
} }
/* Show code snippets when we have the space */
@media (min-width: 481px) {
.highlight {
display: block;
}
}
/* /*
* Responsive tests * Responsive tests
...@@ -998,6 +1024,7 @@ h1[id] { ...@@ -998,6 +1024,7 @@ h1[id] {
margin-bottom: 10px; margin-bottom: 10px;
} }
.responsive-utilities-test span { .responsive-utilities-test span {
display: block;
padding: 15px 10px; padding: 15px 10px;
font-size: 14px; font-size: 14px;
font-weight: bold; font-weight: bold;
...@@ -1037,11 +1064,12 @@ h1[id] { ...@@ -1037,11 +1064,12 @@ h1[id] {
*/ */
.bs-glyphicons { .bs-glyphicons {
margin: 0 -19px 20px -16px;
overflow: hidden;
}
.bs-glyphicons-list {
padding-left: 0; padding-left: 0;
padding-bottom: 1px;
margin-bottom: 20px;
list-style: none; list-style: none;
overflow: hidden;
} }
.bs-glyphicons li { .bs-glyphicons li {
float: left; float: left;
...@@ -1049,7 +1077,7 @@ h1[id] { ...@@ -1049,7 +1077,7 @@ h1[id] {
height: 115px; height: 115px;
padding: 10px; padding: 10px;
margin: 0 -1px -1px 0; margin: 0 -1px -1px 0;
font-size: 12px; font-size: 10px;
line-height: 1.4; line-height: 1.4;
text-align: center; text-align: center;
border: 1px solid #ddd; border: 1px solid #ddd;
...@@ -1069,8 +1097,13 @@ h1[id] { ...@@ -1069,8 +1097,13 @@ h1[id] {
} }
@media (min-width: 768px) { @media (min-width: 768px) {
.bs-glyphicons {
margin-left: 0;
margin-right: 0;
}
.bs-glyphicons li { .bs-glyphicons li {
width: 12.5%; width: 12.5%;
font-size: 12px;
} }
} }
......
...@@ -12,19 +12,19 @@ ...@@ -12,19 +12,19 @@
!function ($) { !function ($) {
$(function(){ $(function () {
// IE10 viewport hack for Surface/desktop Windows 8 bug // IE10 viewport hack for Surface/desktop Windows 8 bug
// //
// See Getting Started docs for more information // See Getting Started docs for more information
if (navigator.userAgent.match(/IEMobile\/10\.0/)) { if (navigator.userAgent.match(/IEMobile\/10\.0/)) {
var msViewportStyle = document.createElement("style"); var msViewportStyle = document.createElement('style');
msViewportStyle.appendChild( msViewportStyle.appendChild(
document.createTextNode( document.createTextNode(
"@-ms-viewport{width:auto!important}" '@-ms-viewport{width:auto!important}'
) )
); );
document.getElementsByTagName("head")[0]. document.getElementsByTagName('head')[0].
appendChild(msViewportStyle); appendChild(msViewportStyle);
} }
...@@ -73,24 +73,24 @@ ...@@ -73,24 +73,24 @@
// tooltip demo // tooltip demo
$('.tooltip-demo').tooltip({ $('.tooltip-demo').tooltip({
selector: "[data-toggle=tooltip]", selector: '[data-toggle=tooltip]',
container: "body" container: 'body'
}) })
$('.tooltip-test').tooltip() $('.tooltip-test').tooltip()
$('.popover-test').popover() $('.popover-test').popover()
$('.bs-docs-navbar').tooltip({ $('.bs-docs-navbar').tooltip({
selector: "a[data-toggle=tooltip]", selector: 'a[data-toggle=tooltip]',
container: ".bs-docs-navbar .nav" container: '.bs-docs-navbar .nav'
}) })
// popover demo // popover demo
$("[data-toggle=popover]") $('[data-toggle=popover]')
.popover() .popover()
// button state demo // button state demo
$('#fat-btn') $('#loading-example-btn')
.click(function () { .click(function () {
var btn = $(this) var btn = $(this)
btn.button('loading') btn.button('loading')
...@@ -98,6 +98,6 @@ ...@@ -98,6 +98,6 @@
btn.button('reset') btn.button('reset')
}, 3000) }, 3000)
}) })
}) })
}(jQuery) }(jQuery)
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -5,9 +5,10 @@ ...@@ -5,9 +5,10 @@
* details, see http://creativecommons.org/licenses/by/3.0/. * details, see http://creativecommons.org/licenses/by/3.0/.
*/ */
/* jshint multistr:true */
window.onload = function () { // wait for load in a dumb way because B-0 window.onload = function () { // wait for load in a dumb way because B-0
var cw = '/*!\n * Bootstrap v3.0.3\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' var cw = '/*!\n * Bootstrap v3.0.3 (http://getbootstrap.com)\n\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\n'
function showError(msg, err) { function showError(msg, err) {
$('<div id="bsCustomizerAlert" class="bs-customizer-alert">\ $('<div id="bsCustomizerAlert" class="bs-customizer-alert">\
...@@ -34,18 +35,18 @@ window.onload = function () { // wait for load in a dumb way because B-0 ...@@ -34,18 +35,18 @@ window.onload = function () { // wait for load in a dumb way because B-0
} }
function getQueryParam(key) { function getQueryParam(key) {
key = key.replace(/[*+?^$.\[\]{}()|\\\/]/g, "\\$&"); // escape RegEx meta chars key = key.replace(/[*+?^$.\[\]{}()|\\\/]/g, '\\$&'); // escape RegEx meta chars
var match = location.search.match(new RegExp("[?&]"+key+"=([^&]+)(&|$)")); var match = location.search.match(new RegExp('[?&]' + key + '=([^&]+)(&|$)'));
return match && decodeURIComponent(match[1].replace(/\+/g, " ")); return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
} }
function createGist(configJson) { function createGist(configJson) {
var data = { var data = {
"description": "Bootstrap Customizer Config", 'description': 'Bootstrap Customizer Config',
"public": true, 'public': true,
"files": { 'files': {
"config.json": { 'config.json': {
"content": configJson 'content': configJson
} }
} }
} }
...@@ -55,11 +56,11 @@ window.onload = function () { // wait for load in a dumb way because B-0 ...@@ -55,11 +56,11 @@ window.onload = function () { // wait for load in a dumb way because B-0
dataType: 'json', dataType: 'json',
data: JSON.stringify(data) data: JSON.stringify(data)
}) })
.success(function(result) { .success(function (result) {
var origin = window.location.protocol + "//" + window.location.host var origin = window.location.protocol + '//' + window.location.host
history.replaceState(false, document.title, origin + window.location.pathname + '?id=' + result.id) history.replaceState(false, document.title, origin + window.location.pathname + '?id=' + result.id)
}) })
.error(function(err) { .error(function (err) {
showError('<strong>Ruh roh!</strong> Could not save gist file, configuration not saved.', err) showError('<strong>Ruh roh!</strong> Could not save gist file, configuration not saved.', err)
}) })
} }
...@@ -69,7 +70,7 @@ window.onload = function () { // wait for load in a dumb way because B-0 ...@@ -69,7 +70,7 @@ window.onload = function () { // wait for load in a dumb way because B-0
$('#less-variables-section input') $('#less-variables-section input')
.each(function () { .each(function () {
$(this).val() && (vars[ $(this).prev().text() ] = $(this).val()) $(this).val() && (vars[$(this).prev().text()] = $(this).val())
}) })
var data = { var data = {
...@@ -93,7 +94,7 @@ window.onload = function () { // wait for load in a dumb way because B-0 ...@@ -93,7 +94,7 @@ window.onload = function () { // wait for load in a dumb way because B-0
type: 'GET', type: 'GET',
dataType: 'json' dataType: 'json'
}) })
.success(function(result) { .success(function (result) {
var data = JSON.parse(result.files['config.json'].content) var data = JSON.parse(result.files['config.json'].content)
if (data.js) { if (data.js) {
$('#plugin-section input').each(function () { $('#plugin-section input').each(function () {
...@@ -111,7 +112,7 @@ window.onload = function () { // wait for load in a dumb way because B-0 ...@@ -111,7 +112,7 @@ window.onload = function () { // wait for load in a dumb way because B-0
} }
} }
}) })
.error(function(err) { .error(function (err) {
showError('Error fetching bootstrap config file', err) showError('Error fetching bootstrap config file', err)
}) })
} }
...@@ -130,15 +131,15 @@ window.onload = function () { // wait for load in a dumb way because B-0 ...@@ -130,15 +131,15 @@ window.onload = function () { // wait for load in a dumb way because B-0
if (js) { if (js) {
var jsFolder = zip.folder('js') var jsFolder = zip.folder('js')
for (var fileName in js) { for (var jsFileName in js) {
jsFolder.file(fileName, js[fileName]) jsFolder.file(jsFileName, js[jsFileName])
} }
} }
if (fonts) { if (fonts) {
var fontsFolder = zip.folder('fonts') var fontsFolder = zip.folder('fonts')
for (var fileName in fonts) { for (var fontsFileName in fonts) {
fontsFolder.file(fileName, fonts[fileName], {base64: true}) fontsFolder.file(fontsFileName, fonts[fontsFileName], {base64: true})
} }
} }
...@@ -146,7 +147,7 @@ window.onload = function () { // wait for load in a dumb way because B-0 ...@@ -146,7 +147,7 @@ window.onload = function () { // wait for load in a dumb way because B-0
zip.file('config.json', config) zip.file('config.json', config)
} }
var content = zip.generate({type:"blob"}) var content = zip.generate({ type: 'blob' })
complete(content) complete(content)
} }
...@@ -201,7 +202,7 @@ window.onload = function () { // wait for load in a dumb way because B-0 ...@@ -201,7 +202,7 @@ window.onload = function () { // wait for load in a dumb way because B-0
$('#less-variables-section input') $('#less-variables-section input')
.each(function () { .each(function () {
$(this).val() && (vars[ $(this).prev().text() ] = $(this).val()) $(this).val() && (vars[$(this).prev().text()] = $(this).val())
}) })
$.each(bootstrapLessFilenames(), function(index, filename) { $.each(bootstrapLessFilenames(), function(index, filename) {
...@@ -231,7 +232,7 @@ window.onload = function () { // wait for load in a dumb way because B-0 ...@@ -231,7 +232,7 @@ window.onload = function () { // wait for load in a dumb way because B-0
} }
result = { result = {
'bootstrap.css' : cw + tree.toCSS(), 'bootstrap.css' : cw + tree.toCSS(),
'bootstrap.min.css' : cw + tree.toCSS({ compress: true }).replace(/\n/g, '') 'bootstrap.min.css' : cw + tree.toCSS({ compress: true })
} }
}) })
} catch (err) { } catch (err) {
...@@ -310,22 +311,22 @@ window.onload = function () { // wait for load in a dumb way because B-0 ...@@ -310,22 +311,22 @@ window.onload = function () { // wait for load in a dumb way because B-0
generateZip(generateCSS(), generateJavascript(), generateFonts(), configJson, function (blob) { generateZip(generateCSS(), generateJavascript(), generateFonts(), configJson, function (blob) {
$compileBtn.removeAttr('disabled') $compileBtn.removeAttr('disabled')
saveAs(blob, "bootstrap.zip") saveAs(blob, 'bootstrap.zip')
createGist(configJson) createGist(configJson)
}) })
}) })
// browser support alerts // browser support alerts
if (!window.URL && navigator.userAgent.toLowerCase().indexOf('safari') != -1) { if (!window.URL && navigator.userAgent.toLowerCase().indexOf('safari') != -1) {
showCallout("Looks like you're using safari, which sadly doesn't have the best support\ showCallout('Looks like you\'re using safari, which sadly doesn\'t have the best support\
for HTML5 blobs. Because of this your file will be downloaded with the name <code>\"untitled\"</code>.\ for HTML5 blobs. Because of this your file will be downloaded with the name <code>"untitled"</code>.\
However, if you check your downloads folder, just rename this <code>\"untitled\"</code> file\ However, if you check your downloads folder, just rename this <code>"untitled"</code> file\
to <code>\"bootstrap.zip\"</code> and you should be good to go!") to <code>"bootstrap.zip"</code> and you should be good to go!')
} else if (!window.URL && !window.webkitURL) { } else if (!window.URL && !window.webkitURL) {
$('.bs-docs-section, .bs-sidebar').css('display', 'none') $('.bs-docs-section, .bs-sidebar').css('display', 'none')
showCallout("Looks like your current browser doesn't support the Bootstrap Customizer. Please take a second\ showCallout('Looks like your current browser doesn\'t support the Bootstrap Customizer. Please take a second\
to <a href=\"https://www.google.com/intl/en/chrome/browser/\"> upgrade to a more modern browser</a>.", true) to <a href="https://www.google.com/intl/en/chrome/browser/"> upgrade to a more modern browser</a>.', true)
} }
parseUrl() parseUrl()
......
This diff is collapsed.
This diff is collapsed.
...@@ -16,7 +16,9 @@ Usage: ...@@ -16,7 +16,9 @@ Usage:
base64zip = zip.generate(); base64zip = zip.generate();
**/ **/
"use strict"; // We use strict, but it should not be placed outside of a function because
// the environment is shared inside the browser.
// "use strict";
/** /**
* Representation a of zip file in js * Representation a of zip file in js
...@@ -93,8 +95,8 @@ JSZip.support = { ...@@ -93,8 +95,8 @@ JSZip.support = {
catch(e) {} catch(e) {}
try { try {
var builder = new (window.BlobBuilder || window.WebKitBlobBuilder || var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;
window.MozBlobBuilder || window.MSBlobBuilder)(); var builder = new BlobBuilder();
builder.append(buffer); builder.append(buffer);
return builder.getBlob('application/zip').size === 0; return builder.getBlob('application/zip').size === 0;
} }
...@@ -161,7 +163,7 @@ JSZip.prototype = (function () { ...@@ -161,7 +163,7 @@ JSZip.prototype = (function () {
return file.asBinary(); return file.asBinary();
} }
return result; return result;
} };
/** /**
* Transform this._data into a string. * Transform this._data into a string.
...@@ -287,9 +289,11 @@ JSZip.prototype = (function () { ...@@ -287,9 +289,11 @@ JSZip.prototype = (function () {
*/ */
var prepareFileAttrs = function (o) { var prepareFileAttrs = function (o) {
o = o || {}; o = o || {};
/*jshint -W041 */
if (o.base64 === true && o.binary == null) { if (o.base64 === true && o.binary == null) {
o.binary = true; o.binary = true;
} }
/*jshint +W041 */
o = extend(o, JSZip.defaults); o = extend(o, JSZip.defaults);
o.date = o.date || new Date(); o.date = o.date || new Date();
if (o.compression !== null) o.compression = o.compression.toUpperCase(); if (o.compression !== null) o.compression = o.compression.toUpperCase();
...@@ -341,7 +345,9 @@ JSZip.prototype = (function () { ...@@ -341,7 +345,9 @@ JSZip.prototype = (function () {
} }
} }
return this.files[name] = new ZipObject(name, data, o); var object = new ZipObject(name, data, o);
this.files[name] = object;
return object;
}; };
...@@ -399,7 +405,7 @@ JSZip.prototype = (function () { ...@@ -399,7 +405,7 @@ JSZip.prototype = (function () {
} else if (file._data.compressionMethod === compression.magic) { } else if (file._data.compressionMethod === compression.magic) {
result.compressedContent = file._data.getCompressedContent(); result.compressedContent = file._data.getCompressedContent();
} else { } else {
content = file._data.getContent() content = file._data.getContent();
// need to decompress / recompress // need to decompress / recompress
result.compressedContent = compression.compress(JSZip.utils.transformTo(compression.compressInputType, content)); result.compressedContent = compression.compress(JSZip.utils.transformTo(compression.compressInputType, content));
} }
...@@ -756,8 +762,9 @@ JSZip.prototype = (function () { ...@@ -756,8 +762,9 @@ JSZip.prototype = (function () {
case "nodebuffer" : case "nodebuffer" :
writer = new Uint8ArrayWriter(localDirLength + centralDirLength + dirEnd.length); writer = new Uint8ArrayWriter(localDirLength + centralDirLength + dirEnd.length);
break; break;
case "base64" : // case "base64" :
default : // case "string" : // case "string" :
default :
writer = new StringWriter(localDirLength + centralDirLength + dirEnd.length); writer = new StringWriter(localDirLength + centralDirLength + dirEnd.length);
break; break;
} }
...@@ -1066,8 +1073,8 @@ JSZip.compressions = { ...@@ -1066,8 +1073,8 @@ JSZip.compressions = {
try { try {
// deprecated, browser only, old way // deprecated, browser only, old way
var builder = new (window.BlobBuilder || window.WebKitBlobBuilder || var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;
window.MozBlobBuilder || window.MSBlobBuilder)(); var builder = new BlobBuilder();
builder.append(buffer); builder.append(buffer);
return builder.getBlob('application/zip'); return builder.getBlob('application/zip');
} }
...@@ -1095,7 +1102,7 @@ JSZip.compressions = { ...@@ -1095,7 +1102,7 @@ JSZip.compressions = {
*/ */
function identity(input) { function identity(input) {
return input; return input;
}; }
/** /**
* Fill in an array with a string. * Fill in an array with a string.
...@@ -1108,7 +1115,7 @@ JSZip.compressions = { ...@@ -1108,7 +1115,7 @@ JSZip.compressions = {
array[i] = str.charCodeAt(i) & 0xFF; array[i] = str.charCodeAt(i) & 0xFF;
} }
return array; return array;
}; }
/** /**
* Transform an array-like object to a string. * Transform an array-like object to a string.
...@@ -1165,7 +1172,7 @@ JSZip.compressions = { ...@@ -1165,7 +1172,7 @@ JSZip.compressions = {
} }
} }
return result.join(""); return result.join("");
}; }
/** /**
* Copy the data from an array-like to an other array-like. * Copy the data from an array-like to an other array-like.
...@@ -1178,7 +1185,7 @@ JSZip.compressions = { ...@@ -1178,7 +1185,7 @@ JSZip.compressions = {
arrayTo[i] = arrayFrom[i]; arrayTo[i] = arrayFrom[i];
} }
return arrayTo; return arrayTo;
}; }
// a matrix containing functions to transform everything into everything. // a matrix containing functions to transform everything into everything.
var transform = {}; var transform = {};
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
/*
* Globals
*/
body {
font-family: Georgia, "Times New Roman", Times, serif;
color: #555;
}
h1, .h1,
h2, .h2,
h3, .h3,
h4, .h4,
h5, .h5,
h6, .h6 {
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;;
font-weight: normal;
color: #333;
margin-top: 0;
}
/*
* Override Bootstrap's default container.
*/
@media (min-width: 1200px) {
.container {
width: 970px;
}
}
/*
* Masthead for nav
*/
.blog-masthead {
background-color: #428bca;
box-shadow: inset 0 -2px 5px rgba(0,0,0,.1);
}
/* Nav links */
.blog-nav {
}
.blog-nav-item {
position: relative;
display: inline-block;
padding: 10px;
font-weight: 500;
color: #cdddeb;
}
.blog-nav-item:hover,
.blog-nav-item:focus {
color: #fff;
text-decoration: none;
}
/* Active state gets a caret at the bottom */
.blog-nav .active {
color: #fff;
}
.blog-nav .active:after {
position: absolute;
bottom: 0;
left: 50%;
display: block;
content: " ";
width: 0;
height: 0;
margin-left: -5px;
vertical-align: middle;
border-right: 5px solid transparent;
border-left: 5px solid transparent;
border-bottom: 5px solid;
}
/*
* Blog name and description
*/
.blog-header {
padding-top: 20px;
padding-bottom: 20px;
}
.blog-title {
margin-top: 30px;
margin-bottom: 0;
font-size: 60px;
font-weight: normal;
}
.blog-description {
font-size: 20px;
color: #999;
}
/*
* Main column and sidebar layout
*/
.blog-main {
font-size: 18px;
line-height: 1.5;
}
/* Sidebar modules for boxing content */
.sidebar-module {
padding: 15px;
margin: 0 -15px 15px;
}
.sidebar-module-inset {
padding: 15px;
background-color: #f5f5f5;
border-radius: 4px;
}
.sidebar-module-inset p:last-child,
.sidebar-module-inset ul:last-child,
.sidebar-module-inset ol:last-child {
margin-bottom: 0;
}
/* Pagination */
.pager {
margin-bottom: 60px;
text-align: left;
}
.pager > li > a {
width: 140px;
padding: 10px 20px;
text-align: center;
border-radius: 30px;
}
/*
* Blog posts
*/
.blog-post {
margin-bottom: 60px;
}
.blog-post-title {
margin-bottom: 5px;
font-size: 40px;
}
.blog-post-meta {
margin-bottom: 20px;
color: #999;
}
/*
* Footer
*/
.blog-footer {
padding: 40px 0;
color: #999;
text-align: center;
background-color: #f9f9f9;
border-top: 1px solid #e5e5e5;
}
This diff is collapsed.
This diff is collapsed.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="">
<meta name="author" content="">
<link rel="shortcut icon" href="../../docs-assets/ico/favicon.png">
<title>Cover Template for Bootstrap</title>
<!-- Bootstrap core CSS -->
<link href="../../dist/css/bootstrap.css" rel="stylesheet">
<!-- Custom styles for this template -->
<link href="cover.css" rel="stylesheet">
<!-- Just for debugging purposes. Don't actually copy this line! -->
<!--[if lt IE 9]><script src="../../docs-assets/js/ie8-responsive-file-warning.js"></script><![endif]-->
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="site-wrapper">
<div class="site-wrapper-inner">
<div class="cover-container">
<div class="masthead clearfix">
<div class="inner">
<h3 class="masthead-brand">Cover</h3>
<ul class="nav masthead-nav">
<li class="active"><a href="#">Home</a></li>
<li><a href="#">Features</a></li>
<li><a href="#">Contact</a></li>
</ul>
</div>
</div>
<div class="inner cover">
<h1 class="cover-heading">Cover your page.</h1>
<p class="lead">Cover is a one-page template for building simple and beautiful home pages. Download, edit the text, and add your own fullscreen background photo to make it your own.</p>
<p class="lead">
<a href="#" class="btn btn-lg btn-default">Learn more</a>
</p>
</div>
<div class="mastfoot">
<div class="inner">
<p>Cover template for <a href="http://getbootstrap.com">Bootstrap</a>, by <a href="https://twitter.com/mdo">@mdo</a>.</p>
</div>
</div>
</div>
</div>
</div>
<!-- Bootstrap core JavaScript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
<script src="../../dist/js/bootstrap.min.js"></script>
<script src="../../docs-assets/js/holder.js"></script>
</body>
</html>
This diff is collapsed.
This diff is collapsed.
examples/screenshots/jumbotron.jpg

76.1 KB | W: | H:

examples/screenshots/jumbotron.jpg

98.8 KB | W: | H:

examples/screenshots/jumbotron.jpg
examples/screenshots/jumbotron.jpg
examples/screenshots/jumbotron.jpg
examples/screenshots/jumbotron.jpg
  • 2-up
  • Swipe
  • Onion skin
examples/screenshots/theme.jpg

93.2 KB | W: | H:

examples/screenshots/theme.jpg

83.5 KB | W: | H:

examples/screenshots/theme.jpg
examples/screenshots/theme.jpg
examples/screenshots/theme.jpg
examples/screenshots/theme.jpg
  • 2-up
  • Swipe
  • Onion skin
This diff is collapsed.
This diff is collapsed.
{
"requireSpaceAfterKeywords": ["if", "else", "for", "while", "do", "switch", "return", "try", "catch"],
"requireSpacesInFunctionExpression": { "beforeOpeningCurlyBrace": true },
"disallowLeftStickedOperators": ["?", "+", "-", "/", "*", "=", "==", "===", "!=", "!==", ">", ">=", "<", "<="],
"requireRightStickedOperators": ["!"],
"disallowRightStickedOperators": ["?", "/", "*", ":", "=", "==", "===", "!=", "!==", ">", ">=", "<", "<="],
"disallowSpaceAfterPrefixUnaryOperators": ["++", "--", "+", "-", "~", "!"],
"disallowSpaceBeforePostfixUnaryOperators": ["++", "--"],
"requireSpaceBeforeBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!=="],
"requireSpaceAfterBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!=="],
"disallowKeywords": ["with"],
"validateLineBreaks": "LF",
"requireLineFeedAtFileEnd": true
}
...@@ -10,5 +10,6 @@ ...@@ -10,5 +10,6 @@
"expr" : true, "expr" : true,
"laxbreak" : true, "laxbreak" : true,
"laxcomma" : true, "laxcomma" : true,
"quotmark" : "single",
"validthis": true "validthis": true
} }
\ No newline at end of file
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
* ======================================================================== */ * ======================================================================== */
+function ($) { "use strict"; +function ($) { 'use strict';
// AFFIX CLASS DEFINITION // AFFIX CLASS DEFINITION
// ====================== // ======================
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
* ======================================================================== */ * ======================================================================== */
+function ($) { "use strict"; +function ($) { 'use strict';
// ALERT CLASS DEFINITION // ALERT CLASS DEFINITION
// ====================== // ======================
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
* ======================================================================== */ * ======================================================================== */
+function ($) { "use strict"; +function ($) { 'use strict';
// BUTTON PUBLIC CLASS DEFINITION // BUTTON PUBLIC CLASS DEFINITION
// ============================== // ==============================
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
* ======================================================================== */ * ======================================================================== */
+function ($) { "use strict"; +function ($) { 'use strict';
// CAROUSEL CLASS DEFINITION // CAROUSEL CLASS DEFINITION
// ========================= // =========================
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
* ======================================================================== */ * ======================================================================== */
+function ($) { "use strict"; +function ($) { 'use strict';
// COLLAPSE PUBLIC CLASS DEFINITION // COLLAPSE PUBLIC CLASS DEFINITION
// ================================ // ================================
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment