Compare commits

...
Sign in to create a new pull request.

490 commits
main ... v3-dev

Author SHA1 Message Date
XhmikosR
f17f882df2
Disable crawling on Netlify. (#29193) 2019-08-03 17:09:03 +03:00
XhmikosR
08cc5c3961 Update devDependencies and gems. 2019-07-15 10:31:06 +03:00
XhmikosR
8daa814fd8 Add an update-deps npm script. 2019-07-15 10:31:06 +03:00
XhmikosR
aa690bbc3c CONTRIBUTING.md: remove obsolete stuff. 2019-07-15 10:31:06 +03:00
XhmikosR
91c0e03425 Update devDependencies and gems.
Kept stylelint to v9.6.0 because v9.10.1 throws an error.
2019-03-27 21:02:22 +02:00
XhmikosR
963abd791d Remove http from docs search. (#28557)
We use only `https` for a few months now.
2019-03-27 21:02:22 +02:00
XhmikosR
7cc9e794aa Update .gitignore. 2019-03-27 21:02:22 +02:00
XhmikosR
e3c1cccd67 GA: Anonymize IPs. 2019-03-27 21:02:22 +02:00
XhmikosR
fddd2ef16e Fix URLs.
Wrongfully changed in b9e59e9.
2019-03-27 21:02:22 +02:00
XhmikosR
7f08a90e08 Fix whitespace in title tag. 2019-03-27 21:02:22 +02:00
XhmikosR
922e29d0eb tooltip-viewport: fix path to favicon. 2019-03-27 21:02:22 +02:00
XhmikosR
55d00787f4 Add canonical tag.
For the examples, it's hardcoded, since in this branch we don't build them.
2019-03-27 21:02:22 +02:00
XhmikosR
50efb699f6 Add a netlify npm script. 2019-03-27 21:02:22 +02:00
XhmikosR
e7974e4519 Fix a few stylelint issues. 2019-03-27 21:02:22 +02:00
XhmikosR
b9e59e96af
Replace master with v3-dev after the branch switch. (#28287) 2019-02-15 23:36:44 +02:00
XhmikosR
bdb962d1e9
Remove the customize redirect. (#28270)
The current `baseurl` makes this wrong.
2019-02-15 10:34:14 +02:00
XhmikosR
68b0d231a1 Dist 2019-02-13 17:55:38 +02:00
Johann-S
2ccfa57467 handle # selector for dropdown 2019-02-13 17:55:38 +02:00
XhmikosR
a43077d3c3 Bump version to 3.4.1. 2019-02-13 17:55:38 +02:00
XhmikosR
d821de2712 Backport sanitize docs from v4. 2019-02-13 17:55:38 +02:00
XhmikosR
5cd9ef47f6 Add wdm gem for Windows. 2019-02-13 17:55:38 +02:00
XhmikosR
d6b8501e4c ES5 fixes. 2019-02-13 17:55:38 +02:00
Johann-S
2c8abb9a43 Add sanitize for tooltips and popovers html content.
On browsers that `createHTMLDocument` isn't available just return the unsafe HTML.
2019-02-13 17:55:38 +02:00
XhmikosR
d4129dff60 Bump year. 2019-02-13 17:55:38 +02:00
XhmikosR
0d64d6aee6 less/modals.less: Add missing semicolon. 2019-02-11 15:18:08 +02:00
XhmikosR
48c5d7b8e9 Use https. 2019-02-11 15:18:08 +02:00
XhmikosR
b23e213446 Update devDependencies and gems. 2019-02-11 15:18:08 +02:00
XhmikosR
695c54183f Fix redirects.
* Actually include the jekyll-redirect-from plugin
* We handle the removed ones in docs latest version, apart from the 3.3 customizer redirect.
2019-02-11 15:18:08 +02:00
Sebastian Hädrich
9206e465ad Make meaning of tooltip's 'selector' option more clear in Bootstrap 3
Based on #4215
Backport changes made to docs v4 to v3 (#27573)
2019-01-06 18:02:27 +02:00
XhmikosR
b285ea390c Add a few redirects. 2018-12-31 02:19:36 +02:00
XhmikosR
3e1b89436d Fix broken link in nav version dropdown. 2018-12-23 00:07:18 +02:00
Jesse Mandel
3e519c3726 Support nuget contentFiles, used for some project types (#27856) 2018-12-16 17:19:19 +02:00
XhmikosR
4c547f2175 Dist. 2018-12-14 01:45:51 +02:00
XhmikosR
0f1c6b005f Move the whole autoprefixer config to configBridge.json.
Reduces duplication.
2018-12-14 01:45:51 +02:00
XhmikosR
9332f3c7ac Add polyfills for older browsers.
requestAnimationFrame and btoa.
2018-12-14 01:45:51 +02:00
XhmikosR
dd71b40aed docs: Concat the IE files with the rest. 2018-12-14 01:45:51 +02:00
XhmikosR
4a5c7f21d5 Update devDependencies, gems and lots of cleanup/build fixes.
* switch to grunt-postcss and autoprefixer directly; this is the recommended way.
* uglify: specify `ie8` for compatibility
* specify `cascade:false` for autoprefixer
* specify `ieCompat` for less
* drop grunt-contrib-compress since it doesn't work with Node.js 10.x
* remove grunt-contrib-htmlmin to match the v4 docs
* clean up Gruntfile.js
* clean up .travis.yml and backport changes from v4
* build ie10-viewport-bug-workaround.less since it's used in examples
* move shrinkwrap to root
* bs-commonjs-generator.js: Use `path.posix`
* remove .hound.yml
* remove references to no longer used PR bots
* backport and adapt the sri generation script from v4
2018-12-14 01:45:51 +02:00
XhmikosR
7a2cdfb650 Center skippy. 2018-12-10 11:08:34 +02:00
XhmikosR
3b825870fa Restore cursor: help for abbr. 2018-12-10 11:08:34 +02:00
XhmikosR
bf69f1fcec Backport the abbr fix from the updated normalize.css. 2018-12-10 11:08:34 +02:00
XhmikosR
dd23bb5c12 Backport search.js changes from v4-dev. 2018-12-10 11:08:34 +02:00
XhmikosR
9edba6123e search input: hide box-shadow. 2018-12-10 11:08:34 +02:00
XhmikosR
92de1e831b Update README.md 2018-11-18 10:00:03 +02:00
XhmikosR
a185235ef3 Fix broken anchors in examples and one https redirect. 2018-11-18 10:00:03 +02:00
XhmikosR
d5e5889c6c Remove a few duplicate selectors. 2018-11-18 10:00:03 +02:00
XhmikosR
627b359541 Add the unprefixed appearance property. 2018-11-18 10:00:03 +02:00
XhmikosR
7aaabebded Use https in more places. 2018-10-20 14:03:59 +03:00
XhmikosR
bbc862b376 v4-tease link focus. 2018-10-20 14:03:59 +03:00
XhmikosR
d24d47c27a Backport search from v4 and adapt it for v3.4.0. 2018-10-20 14:03:59 +03:00
Mark Otto
ebe7459665 Simplify team display, update team members 2018-10-19 12:02:11 +03:00
XhmikosR
024be2a020 Update .stylelint config from v4. 2018-10-19 12:02:11 +03:00
XhmikosR
3d4b65aba3 Tweak customizer input a bit. 2018-10-18 12:09:17 +03:00
Johann-S
b304c61318 remove drag/drop for customizer 2018-10-18 12:09:17 +03:00
XhmikosR
d7ab2fbd5b customizer: remove gist creation.
GitHub removed anonymous gist creation a few months ago.

https://blog.github.com/2018-02-18-deprecation-notice-removing-anonymous-gist-creation/
2018-10-18 12:09:17 +03:00
Mark Otto
6de7ba427b Convert to pixels and adjust border-radius 2018-10-18 11:54:48 +03:00
XhmikosR
25d017a2ee Replace ZeroClipboard with clipboard.js (backported from v4). 2018-10-18 11:54:48 +03:00
XhmikosR
c7033212b6 Starter template: use the CDN files with SRI hashes. 2018-10-18 11:27:47 +03:00
XhmikosR
f77c7a3c92 Switch to lowercase doctype. 2018-10-18 11:27:47 +03:00
XhmikosR
26897b919b Specify rel="noopener" for external links. 2018-10-18 11:27:47 +03:00
XhmikosR
c95fa8114d Change CDN URLs to the new ones. 2018-10-18 11:27:47 +03:00
XhmikosR
e105d15642 Use https, fix broken links and unneeded redirects. 2018-10-18 11:27:47 +03:00
Andrew Luca
cf6f867190 fix: add padding to navbar-fixed-* on modal open 2018-10-18 10:14:05 +02:00
Andrew Luca
0b78f465d3 test: ensure .navbar-fixed-* padding on modal open 2018-10-18 10:14:05 +02:00
XhmikosR
5003e6c1b9 customizer: use the same license header as the main files. 2018-10-08 20:12:34 +03:00
XhmikosR
ee580c178d Move bash snippets $ to a :before so that it's not selectable. 2018-10-08 20:12:34 +03:00
XhmikosR
4ebaca2b58 Switch to jQuery's CDN and use SRI. 2018-10-08 20:12:34 +03:00
XhmikosR
44b3a3f1a2 Update anchor.js to v3.2.2. 2018-10-08 20:12:34 +03:00
XhmikosR
1912f7d7c4 Add image dimensions. 2018-10-08 20:12:34 +03:00
XhmikosR
82dd279656 Cache length variables. 2018-10-08 20:12:34 +03:00
XhmikosR
5cce25d515 Minor indentation fixes. 2018-10-08 20:12:34 +03:00
XhmikosR
b8a6855a69 Revert "Update contributing.md with correct branch (v4-dev instead of master)" 2018-10-08 20:12:34 +03:00
XhmikosR
8c8c6d1667 Fix algolia.less media rule. 2018-10-08 20:12:34 +03:00
XhmikosR
0dbbbdc26b Remove jobs link. 2018-10-08 20:12:34 +03:00
XhmikosR
525e0388e4 Compress docs images. 2018-10-08 20:12:34 +03:00
XhmikosR
abe37ff83b Remove unneeded suppression and clean up docs less files. 2018-10-08 20:12:34 +03:00
XhmikosR
37a2534c8e Go back to single colon pseudo elements.
This is for backwards compatibility with the browsers we support in v3.
2018-10-08 20:12:34 +03:00
XhmikosR
bfc052ad5a Fix HTML validation errors and lint tests too. 2018-10-08 20:12:34 +03:00
XhmikosR
08529515e5 Bump year to 2018. 2018-10-08 20:12:34 +03:00
XhmikosR
fb5a1c6b29 Switch to inline comments for stylelint inline directives.
Otherwise the comments are actually output to the CSS.
2018-10-08 20:12:34 +03:00
Johann-S
4ebe2b8753 Use BrowserStack for our unit tests. 2018-09-28 09:53:59 +03:00
XhmikosR
cee8e8653d Merge remote-tracking branch 'remotes/origin/v3.4.0-dev' into master-xmr-merged 2018-09-18 21:10:47 +03:00
XhmikosR
f9c666017e Merge remote-tracking branch 'remotes/origin/v3-dev' into master-xmr-merged 2018-09-18 21:09:28 +03:00
Landrok
d7f75b5f83 Fix broken links to Less and Sass (#24933) 2018-09-18 18:07:56 +03:00
Johann-S
9c4c72e31e fix unit tests 2018-08-19 16:57:25 +02:00
Mark Otto
82890e9bcf dist 2018-08-18 21:08:29 -07:00
Mark Otto
27e58b9491 Restore non-system fonts for now 2018-08-18 20:45:38 -07:00
don-spyker
2a5ba23ce8 Fix/xss issues on data attributes (#27047)
* fix(collapse): xss CVE-2018-14040

Fixes #26625

* fix(tooltip): xss CVE-2018-14042

Fixes #26628

* fix(tooltip): XSS on data-viewport attribute

Fixes #27044

* fix(affix): XSS on target config

Fixes #27045
2018-08-13 18:09:18 +02:00
Johann-S
13bf8aeae3 fix(tab): remove xss 2018-05-07 11:22:05 +03:00
Johann-S
029b85ad9b chore(node): use node 6 as it required in our package.json 2018-05-07 11:10:57 +03:00
Mark Otto
b3e0a8a3c4 dist 2018-04-08 18:38:25 -07:00
Mark Otto
30c6a8a380 remove script type attribute 2018-04-08 18:28:35 -07:00
Mark Otto
ec71b9e4bb update dependencies 2018-04-08 18:09:47 -07:00
Mark Otto
77342b080e update css with latest stylelint 2018-04-08 18:08:03 -07:00
Mark Otto
babd48fb81 update to stylelint order from v4 2018-04-08 18:07:05 -07:00
Mark Otto
07ee6c8ea1 Merge branch 'v3.4.0-dev' of https://github.com/twbs/bootstrap-3 into v3.4.0-dev 2018-04-08 17:31:07 -07:00
XhmikosR
446973308e Fix HTML validation error. 2018-04-07 10:53:36 +03:00
Mark Otto
e1bdfc2b52 Merge remote-tracking branch 'origin/master' into v3.4.0-dev 2018-04-06 22:11:55 -07:00
Mark Otto
ab3a997236 update port from 3001 to 9001 2018-04-06 22:09:37 -07:00
Mark Otto
511b063fbe add 3.3 to version dropdown 2018-04-06 22:09:01 -07:00
Mark Otto
a720e23a51 remove autocomplete 2017-11-26 13:42:01 -08:00
Mark Otto
fac48547a6 fix broken url 2017-11-26 13:41:51 -08:00
Mark Otto
ccd7742397 stylelint the examples 2017-11-26 13:40:49 -08:00
Mark Otto
3c2f8bafac remove csscomb, it's duplicating work from stylelint 2017-11-26 13:40:33 -08:00
Mark Otto
f464005382 update deps 2017-11-26 00:57:48 -08:00
Mark Otto
6b825f98e7 restore that 2017-11-26 00:57:27 -08:00
Mark Otto
0a7a1b7a99 move that to separate file 2017-11-26 00:42:55 -08:00
Mark Otto
96c808dd0f file cleanup 2017-11-26 00:39:59 -08:00
Mark Otto
3f02fe4012 fix qunit test running by upgrading to latest version 2017-11-26 00:39:48 -08:00
Mark Otto
58286c1ba5 3.3.7 link 2017-11-25 23:21:58 -08:00
Mark Otto
3073a4e9b6 Merge branch 'master' into v3.4.0-dev 2017-11-25 18:32:45 -08:00
Mark Otto
53f31b3edd Merge remote-tracking branch 'origin/master' into v3.4.0-dev 2017-11-25 18:28:00 -08:00
Mark Otto
1debfd2d83 Merge branch 'v3.4.0-dev' of https://github.com/twbs/bootstrap into v3.4.0-dev 2017-11-25 18:06:49 -08:00
Mark Otto
04d92a420a move from csslint to stylelint 2017-11-25 18:06:34 -08:00
Craig Main
2c2ac33564 Prevent empty carousel from throwing, and staying in a 'sliding' state.
Fixes #24132.
2017-10-04 10:51:34 +03:00
Patrick H. Lauke
e52df5dce5 Update contributing.md with correct branch (v4-dev instead of master) 2017-09-24 13:46:16 +02:00
XhmikosR
37e65feeda Unset _JAVA_OPTIONS env variable.
It's causing build failures.

See travis-ci/travis-ci#8408
2017-09-17 08:51:56 +03:00
Johann-S
29f9237f73 Fix XSS in Alert, Carousel, Collapse, Dropdown and Modal 2017-09-14 10:07:51 +02:00
XhmikosR
8b727783d8 Update Gemfile.lock so that it works with platform ruby too. (#23275) (#23927) 2017-09-12 20:54:36 +03:00
Harish Gadiya
b6fdf61e90 Fixed footer broken links (#23808) 2017-09-12 20:54:12 +03:00
XhmikosR
9ed834a5a8 Update Gemfile.lock so that it works with platform ruby too. (#23275) 2017-08-10 19:36:13 +03:00
Mark Otto
4731b239b1 grunt 2017-07-09 20:47:51 -07:00
Mark Otto
59cddda490 tweak sidebar search 2017-07-04 22:43:22 -07:00
Mark Otto
6513bab359 fix paths in footer 2017-07-04 17:16:35 -07:00
Mark Otto
21570370be fix docsearch styles 2017-07-04 17:16:29 -07:00
Mark Otto
0cda77f52f footer links 2017-07-04 14:53:25 -07:00
Mark Otto
0bb5addfc8 proper docs min 2017-07-04 14:53:16 -07:00
Mark Otto
43328fbdd2 update customizer vars 2017-07-04 14:17:00 -07:00
Mark Otto
237196720c remove unused function 2017-07-04 14:15:56 -07:00
Mark Otto
8edfb24a3c docsearch api 2017-07-04 14:15:04 -07:00
Mark Otto
819f42a7d0 more version change 2017-07-04 14:03:26 -07:00
Mark Otto
332a1905f2 bump version 2017-07-04 13:48:46 -07:00
Mark Otto
bf63d052c0 stub out docsearch additions 2017-07-04 13:24:51 -07:00
Mark Otto
4bf6d7cb29 rewrite docs navbar less to use nesting, then tweak horizontal padding to prevent early navbar breakage in responsive viewports 2017-07-04 13:07:59 -07:00
Mark Otto
8936e8a981 fix ads breaking too soon 2017-07-04 13:07:32 -07:00
Mark Otto
059969bcd2 update links, new version to v3.4.0, add new baseurl for easy v3.4 building 2017-07-04 13:07:15 -07:00
Mark Otto
4c4390193f remove bs-example classes from large/small modals. fixes #22265. 2017-07-03 11:42:23 -07:00
Mark Otto
79f9aef216 fixes #22238 2017-07-03 11:34:50 -07:00
Mark Otto
7011e272c1 remove abbr border-bottom styling. fixes #16574. 2017-07-03 11:33:56 -07:00
Mark Otto
48f1482306 add .row-no-gutters class
fixes #15180, fixes #19107, fixes #9102, fixes #7368
2017-07-03 09:18:28 -07:00
Mark Otto
2fb0cd598d run copy task during watch 2017-07-03 08:58:01 -07:00
Mark Otto
1802075458 system fonts 2017-07-03 08:57:49 -07:00
Mark Otto
3436fa2de4 small homepage update to include themes 2017-07-03 08:57:42 -07:00
Mark Otto
1a8f098a8a rip out the browser detection 2017-07-03 00:03:48 -07:00
Mark Otto
11e6178496 get rid of that 2017-07-02 23:53:21 -07:00
Mark Otto
f9b27e9ec7 v for version 2017-07-02 23:52:45 -07:00
Mark Otto
2dc18fd42e new port 2017-07-02 23:52:38 -07:00
Mark Otto
f08cf1fce7 don't let nav stack too early 2017-07-02 23:52:20 -07:00
Mark Otto
1d8328067a dropdown nav for other docs versions 2017-07-02 15:40:25 -07:00
Mark Otto
6c24c687ee move skippy and v4 notice to partials 2017-07-02 15:38:07 -07:00
Mark Otto
1e91bc2119 more syntax changes 2017-07-02 15:28:51 -07:00
Mark Otto
5706cfe42a update comments and syntax 2017-07-02 15:23:29 -07:00
Mark Otto
6621d55471 remove old comment 2017-07-02 15:20:08 -07:00
Mark Otto
0385ab3c54 less syntax 2017-07-02 15:17:44 -07:00
Mark Otto
c8bad01c20 less syntax 2017-07-02 15:16:37 -07:00
Mark Otto
9c227e6b74 update to less syntax 2017-07-02 15:16:00 -07:00
Mark Otto
7ef172df57 update to less syntax 2017-07-02 15:14:53 -07:00
Mark Otto
2f8018749d update comments, use variable for media query 2017-07-02 15:14:15 -07:00
Mark Otto
602940d634 remove comment 2017-07-02 15:13:49 -07:00
Mark Otto
448040ad5b formatting 2017-07-02 15:13:44 -07:00
Mark Otto
6cbd9b5ad5 remove commented out code 2017-07-02 15:12:55 -07:00
Mark Otto
ce24064690 remove old docs ads code, clean things up 2017-07-02 15:12:38 -07:00
Mark Otto
4f4592c225 Reorganize v3 docs CSS to use Less 2017-07-02 15:09:46 -07:00
Patrick H. Lauke
9b7d1406b9 Merge pull request #20765 from patrickhlauke/master
Port d71c7c0958 to v3
2016-09-22 11:06:30 +01:00
Patrick H. Lauke
5f06a8ebd6 Port d71c7c0958 to v3 2016-09-22 11:03:03 +01:00
Chris Rebert
7e2741eb10 Port 6844745db5 to v3
Most Wanted features: Add Edge UserVoice <dialog> entry

https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/6508895-dialog-element
Refs #20175

[ci skip]
2016-08-02 21:37:14 -07:00
Patrick H. Lauke
c282ca589c Merge pull request #20409 from nfatah/patch-1
update index.html
2016-07-29 17:49:23 +01:00
Negus
a3c9077945 update index.html
correct visible text corresponding to number of collumns
2016-07-29 19:17:06 +03:00
Patrick H. Lauke
340169eacd Merge pull request #20407 from hebbet/master
update teaser links
2016-07-29 12:44:13 +01:00
Pascal Herbert
d2adfe5a28 update teaser links 2016-07-29 13:01:59 +02:00
Chris Rebert
0b9c4a4007 Regenerate Customizer JavaScript
[ci skip]
2016-07-25 08:51:55 -07:00
Chris Rebert
ca3fabd5a1 _config.yml: Update SRI hashes for v3.3.7 2016-07-25 08:49:45 -07:00
Chris Rebert
9a4d1ae37f grunt
[ci skip]
2016-07-25 08:45:02 -07:00
Chris Rebert
e8c5de3980 grunt dist 2016-07-25 08:43:43 -07:00
Chris Rebert
c391850a2d Update remaining version numbers in source files
Refs a90341ced2
Errata for #20357

[ci skip]
2016-07-25 08:42:13 -07:00
Chris Rebert
82cba4eeab Fix grunt/change-version.js to update NuGet-related files too
[ci skip]
2016-07-25 08:40:41 -07:00
Chris Rebert
a90341ced2 Fix grunt/change-version.js to update .less files too
[ci skip]
2016-07-25 08:36:11 -07:00
Chris Rebert
904f306c52 NuGet: Adjust version range to allow jQuery 3
Refs #16834

[skip sauce]
[skip validator]
2016-07-25 08:30:30 -07:00
Chris Rebert
0ef40c496e Update NuGet version numbers is preparation for v3.3.7 release 2016-07-25 08:28:12 -07:00
Chris Rebert
df08d95495 Update version numbers in preparation for v3.3.7 release (#20357)
[skip sauce]
2016-07-25 08:24:11 -07:00
Chris Rebert
a4cfdcca0a Merge pull request #20356 from twbs/revert-18700
Revert #18700 but discourage using <a>s for disabled pagination items
2016-07-25 08:22:47 -07:00
Chris Rebert
6dc3bba1cb Discourage usage of <a>s for disabled pagination items
Refs a217db1923 (commitcomment-18275320)
/fyi @patrickhlauke

[skip sauce]
2016-07-25 08:01:01 -07:00
Chris Rebert
4b0c3f2b8b Revert "Add pointer-events:none to disabled pager/pagination"
This reverts commit a217db1923.
This reverts PR #18700
See the discussion in the comments on that commit.

[skip sauce]
2016-07-25 08:00:27 -07:00
Chris Rebert
02e9fdaa54 Update iOS temporal input types support comment (#20343)
* <input type="datetime"> no longer exists, per https://github.com/whatwg/html/issues/336
* iOS 9.3.2 still doesn't support <input type="week">

[skip sauce]
[skip validator]
2016-07-21 21:36:33 -07:00
Chris Rebert
2f9852e7cd iOS 9.3 is still affected by https://webkit.org/b/153856
[skip sauce]
2016-07-21 21:34:30 -07:00
Chris Rebert
904511adbd Docs: Update Safari versions affected by #9774
Still affects v9.1.2, but current Safari Technology Preview is no longer affected.
Refs #20342

[skip sauce]
2016-07-21 21:09:30 -07:00
Chris Rebert
edefe0e77a Update jQuery version check and jQuery dependency version range (#20338)
Closes #16834

[skip validator]
2016-07-21 08:14:21 -07:00
Chris Rebert
c2404d30e9 Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3; fixes #20280 (#20313)
Refs https://github.com/jquery/jquery/issues/3137

[skip validator]
2016-07-20 17:21:56 -07:00
Chris Rebert
d3cbb8eac2 Port #20315 to v3
Add position:sticky to Most Wanted features (#20315)

[skip sauce]
2016-07-17 14:18:09 -07:00
Pvanhesteren
a329fda8f0 Clarify valid values of Carousel's pause option
Fixes #18205
Closes #19410

[skip sauce]
2016-07-17 00:11:52 -07:00
Nicolas Ettlin
6ae5378202 Docs CSS: Removed border from GitHub buttons (#19606)
[skip sauce]
2016-07-17 00:01:59 -07:00
Chris Rebert
b8b099ddac Gruntfile.js: Use single quotes in htmlmin config to make JSCS happy (#20314)
[skip validator]
[skip sauce]
2016-07-16 21:22:39 -07:00
Chris Rebert
04036c349f Port #20311 to v3
Rename shrinkwrap-related npm script (#20311)

To avoid infinite recursion in newer npm versions, which added a lifecycle script for `npm shrinkwrap`.
Refs https://github.com/npm/npm/issues/13253
Refs https://github.com/npm/npm/pull/12814

[ci skip]
2016-07-16 14:17:23 -07:00
XhmikosR
fb75e8615a Revert "Update anchor.js to v3.2.0."
This reverts commit d4805c2c3d.
2016-07-15 03:09:18 +03:00
XhmikosR
5e8ff07322 Run grunt.
[ci skip]
2016-07-14 11:11:03 +03:00
XhmikosR
edbfd7e24d Update html-minifier's options.
[ci skip]
2016-07-14 11:04:26 +03:00
XhmikosR
3e3a266149 Bump devDependencies.
[sauce skip]
2016-07-14 10:57:41 +03:00
XhmikosR
4d2a9cd12f nuget: bump version and convert tabs to spaces.
[ci skip]
2016-07-14 10:55:43 +03:00
Chris Rebert
4574b4a918 Port #20299 to v3
Wall of Browser Bugs: Link to WebKit meta-bug

https://bugs.webkit.org/show_bug.cgi?id=159753

[skip sauce]
2016-07-13 22:22:42 -07:00
Patrick H. Lauke
4679c3ee30 Merge pull request #20294 from tomlutzenberger/v3-html-validation
Lint Docs HTML Files
2016-07-13 15:52:50 +01:00
Tom Lutzenberger
4c459bd6cf Lint Docs HTML Files 2016-07-13 16:42:48 +02:00
XhmikosR
dc99250817 Merge pull request #20287 from twbs/master-docs-img
Losslessly compress docs images.
2016-07-12 22:19:16 +03:00
XhmikosR
8691d87c62 Losslessly compress docs images.
Used zopfli 1.0.1, with `zopflipng -m --lossy_transparent -y --iterations=1000`

Before: 23,7 KB (24.352 bytes)
After:  23,5 KB (24.079 bytes)
2016-07-12 17:59:42 +03:00
Chris Rebert
e67e3e9b19 button.js: Set disabled property in addition to disabled attribute to preserve behavior under jQuery 3 (#20278)
This code ought to have used .prop instead of .attr in the first place,
but we can't get rid of the attr manipulation now due to backward compatibility constraints.

Refs https://github.com/jquery/jquery-migrate/blob/3.0.0/warnings.md#jqmigrate-jqueryfnremoveattr-no-longer-sets-boolean-properties
Refs #16834

[skip validator]
2016-07-12 04:04:40 -07:00
Dave Methvin
1956146787 alert: Avoid calling jQuery('#'), it's a syntax error in jQuery 3.0 (#20019) 2016-07-12 00:29:04 -07:00
Chris Rebert
769b2d2462 Port #20175 to v3
[skip sauce]
2016-07-11 20:07:45 -07:00
Chris Rebert
584d1fff9e Add Most Wanted Features entries for <dialog>
Ports 0b21f2ecb1 to v3

Refs https://bugzil.la/840640
Refs https://webkit.org/b/84635

[skip sauce]
2016-07-11 20:05:04 -07:00
Chris Rebert
e335e64268 Move browser feature requests to new "Most wanted features" section
Ports 58aca28234 to v3
2016-07-11 20:03:59 -07:00
XhmikosR
d4805c2c3d Update anchor.js to v3.2.0.
[ci skip]
2016-07-12 03:34:38 +03:00
XhmikosR
1317e45a54 Merge pull request #20258 from twbs/fix-19063-v3
Tell clean-css to inline source files into sourcemap
2016-07-12 03:18:16 +03:00
XhmikosR
c9425d8bbc Update gems.
[ci skip]
2016-07-12 03:14:43 +03:00
Chris Rebert
079b48b891 Run grunt. 2016-07-12 03:14:03 +03:00
Chris Rebert
ebdbed1b7d Tell clean-css to inline source files into sourcemap; v3 fix for #19063 2016-07-12 03:05:40 +03:00
XhmikosR
6b3e08420f Merge pull request #20267 from twbs/master-deps
Update devDependencies and gems.
2016-07-11 02:33:38 +03:00
XhmikosR
c2f1bf7414 Run grunt.
[ci skip]
2016-07-10 19:08:48 +03:00
XhmikosR
8af91ab967 Update gems. 2016-07-10 19:07:28 +03:00
XhmikosR
13734b55a0 Update devDependencies. 2016-07-10 19:07:15 +03:00
Patrick H. Lauke
c3c089b895 Remove forced default focus outline
As this causes non-standard dotted outline on checkboxes/radio buttons
in OS X Firefox

Fixes #19933
Closes #19935

[skip sauce]
2016-07-09 01:36:29 -07:00
Chris Rebert
415f144d8d Merge pull request #20259 from twbs/backport-unit-fixes
Backport JS unit test fixes from v4
2016-07-07 23:51:04 -07:00
Dave Methvin
bc05ef16ec Port #20198 to v3
ScrollSpy unit test: Use single done() in a then() instead of multiple done()s

Fixes test flakiness on OS X Safari and Android when using jQuery 3.
Fixes #20182 more
Refs #20191
2016-07-07 23:32:50 -07:00
Dave Methvin
4a8b29fbf5 Port #20190 to v3
Scrollspy test: Allow for async .then() in jQuery 3; fixes #20182

Instead of doing a new assert.async(), just do a single one for the entire test
and let the .then() be async as well.
2016-07-07 23:32:18 -07:00
Chris Rebert
daad359f01 Merge pull request #20199 from twbs/master-deps
Update dependencies
2016-06-28 13:16:32 -07:00
XhmikosR
9c464cfdcd Run grunt.
[ci skip]
2016-06-28 22:24:03 +03:00
XhmikosR
f95dbeaf49 Update devDependencies and gems. 2016-06-28 22:23:15 +03:00
XhmikosR
d8f278add4 Backport #20196 to v3.
Use shx so that the npm scripts work everywhere the same.
2016-06-28 22:09:21 +03:00
Chris Rebert
209288a199 Port #20183 to v3
Add Wall of Browser Bugs entry for #20161 (#20183)

Refs https://bugzilla.mozilla.org/show_bug.cgi?id=1282363
2016-06-27 01:13:01 -07:00
Chris Rebert
66a0cb3464 Port #20176 to v3
docs/_plugins/bugify.rb: Add support for MS Edge UserVoice ideas (#20176)

[skip sauce]
2016-06-25 21:35:11 -07:00
Chris Rebert
4e16300135 Port #20165 to v3
[skip sauce]
2016-06-23 23:17:36 -07:00
Chris Rebert
ea3e63a6ef Port #20143 to v3
Add Wall of Browser Bugs entries for Selectors Level 4 :nth-child() (#20143)

Refs http://caniuse.com/#feat=css-nth-child-of
Refs https://drafts.csswg.org/selectors-4/#the-nth-child-pseudo
Refs https://crbug.com/304163
Refs https://bugzil.la/854148

[skip sauce]
2016-06-22 01:21:32 -07:00
Chris Rebert
a3b567ca86 Port e0c768b667 to v3
https://webkit.org/b/158340 has been fixed

So remove its entry from the Wall.
Refs #20012, #20024
Refs http://trac.webkit.org/changeset/202324

[ci skip]
2016-06-21 23:24:44 -07:00
Julien Maulny
2a61c4a0c8 Copy fonts/ into dist/ recursively (#19817)
[skip sauce]
[skip validator]
2016-06-19 22:34:27 -07:00
Chris Rebert
7c86bc9664 Port #20089 to v3
Add Wall of Browser Bugs entries for #12832 (#20089)

Refs #12832
Refs http://getbootstrap.com/getting-started/#support-sticky-hover-mobile
Refs https://bugs.chromium.org/p/chromium/issues/detail?id=370155
Refs https://bugs.webkit.org/show_bug.cgi?id=158517

[skip sauce]
2016-06-07 23:50:38 -07:00
Chris Rebert
123fa3b602 Port #20090 to v3
https://crbug.com/460200 has been fixed! (#20090)

So remove its entry from the Wall of Browser Bugs
Refs #15832

[skip sauce]
[skip validator]
2016-06-07 21:16:28 -07:00
Chris Rebert
fcdec36bdd ISSUE_TEMPLATE.md: Fix "questons" typo
[ci skip]
2016-06-05 15:00:37 -07:00
Chris Rebert
ad6440ada7 Port 10ce36601d to v3
https://bugzil.la/1278000 was marked as dupe of https://bugzil.la/577785

Update Wall of Browser Bugs accordingly.
Refs #19670

[ci skip]
2016-06-04 00:28:15 -07:00
Chris Rebert
69e8933e02 Port #20037 to v3
Add Wall of Browser Bugs entry for #19670 for Edge (#20037)

See https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/7787318/
Refs #19670

[skip sauce]
2016-06-03 23:39:58 -07:00
Chris Rebert
5dc882ef68 Port #19706 to v3
[ci skip]
2016-06-03 23:33:38 -07:00
Chris Rebert
41d31e86cd Port #19984 to v3
Add :dir() pseudo-class feature requests to Wall of Browser Bugs (#19984)

Refs https://developer.mozilla.org/en-US/docs/Web/CSS/:dir
[skip sauce]
2016-06-03 23:18:11 -07:00
Chris Rebert
64c1ba1245 Port #20036 to v3
Add Wall of Browser Bugs entry for #19670 for Firefox (#20036)

See https://bugzil.la/1278000
Refs #19670

[skip sauce]
2016-06-03 23:15:56 -07:00
Chris Rebert
6ccf95816e Port #20026 to v3
Add Wall of Browser Bugs entry for #19839 (#20026)

See https://bugzilla.mozilla.org/show_bug.cgi?id=1277782
Refs #19839

[skip sauce]
2016-06-03 01:23:44 -07:00
Chris Rebert
c057edd9f5 Port #20025 to v3
Add Wall of Browser Bugs entry for #17695 (#20025)

See https://webkit.org/b/158342
Refs #17695.

[skip sauce]
2016-06-03 00:18:42 -07:00
Chris Rebert
f876523e57 Port #20024 to v3
Add Wall of Browser Bugs entry for #20012 (#20024)

Refs https://webkit.org/b/158340
Closes #20012

[skip sauce]
2016-06-02 22:40:57 -07:00
Chris Rebert
4985ff9f8b Port #20021 to v3
Add Wall of Browser Bugs entry for #19810 (#20021)

Refs https://crbug.com/597642
Closes #19810

[skip sauce]
2016-06-02 21:22:56 -07:00
Chris Rebert
6a1b3a1319 Port #20020 to v3
Add Wall of Browser Bugs entry for #19927 (#20020)

Refs https://webkit.org/b/158276
Closes #19927

[skip sauce]
2016-06-02 21:22:32 -07:00
eiselzby
7864eb4c54 Remove unsupported vendor prefixes for @viewport (#19955)
Fixes #19871
2016-06-02 10:04:20 -07:00
Sébastien Santoro
0b4c1b24c1 Fix typo in panels.less comment: Collapsable → Collapsible (#20017)
[ci skip]
2016-06-01 15:01:37 -07:00
Greg Sheremeta
f01f3e5f34 Clear tooltip's $element to prevent leaking memory. Fixes #17973
Closes #19659
2016-05-29 17:43:40 -07:00
Chris Rebert
846b578107 Merge pull request #19982 from twbs/master-devDeps
Update devDependencies
2016-05-29 14:47:08 -07:00
XhmikosR
224cef8794 Run grunt.
[ci skip]
2016-05-29 12:43:07 +03:00
XhmikosR
387642dbb3 Update all devDependencies.
Keep grunt at v0.4.5 due to some of the devDependencies not being updated for grunt 1.x.
2016-05-29 12:43:07 +03:00
XhmikosR
349cc8c3b4 Run grunt.
[ci skip]
2016-05-29 12:18:29 +03:00
Jonathan Persson
fc26740876 Merge two jQuery is() calls in the button component by using the OR operator in the selector instead of two function calls with the OR operator between them.
Closes #16918.
2016-05-29 12:18:29 +03:00
Chris Rebert
21d9175fef Port #19765 to v3
Add Wall of Browser Bugs entries for https://webkit.org/b/156684 & https://webkit.org/b/156687

These bugs are factors in our decisions regarding which unit to use in our media queries.
Refs #17403
[skip sauce]
2016-05-28 13:38:39 -07:00
Chris Rebert
c25cd2f2f8 Port #19946 to v3
https://crbug.com/475128 has been fixed

Remove its entry from the Wall of Browser Bugs.
Refs #16180

[skip sauce]
2016-05-28 13:36:09 -07:00
Chris Rebert
f8b25e936e Port #19958 to v3
https://webkit.org/b/144696 has been fixed

Remove its entry from the Wall of Browser Bugs
Refs #16372

[skip sauce]
2016-05-28 13:33:10 -07:00
Chris Rebert
4fd80971c9 Port #19947 to v3
http://bugzil.la/924068 closed as duplicate of http://bugzil.la/545685

Update the Wall of Browser Bugs entry accordingly.

[skip sauce]
2016-05-28 13:32:11 -07:00
Chris Rebert
4a3a109aa4 Port #19948 to v3
https://crbug.com/427994 has been fixed

Remove its entry from the Wall of Browser Bugs.

[skip sauce]
2016-05-28 13:30:52 -07:00
XhmikosR
cd071e0aff Merge pull request #19893 from twbs/master-jquery-1123
Update jQuery to v1.12.4.
2016-05-26 15:40:13 +03:00
XhmikosR
cbcf8babc8 Bump gems. 2016-05-26 15:38:50 +03:00
XhmikosR
0c2734fce0 Fix error with the new jQuery. 2016-05-26 15:37:25 +03:00
XhmikosR
20103dac18 Update jQuery to v1.12.4. 2016-05-26 15:33:43 +03:00
Feram bot
795d2208b8 Fix 2 typos; closes #19741
* cover.css: "inheritence" [sic]
* collapse.html: "targetting" [sic]
2016-04-15 12:11:23 -07:00
Chris Rebert
2c240b9f27 Port #19737 to v3
https://webkit.org/b/128489 has been fixed!

Refs #12536
[ci skip]
2016-04-14 15:56:20 -07:00
Chris Rebert
63253aba88 Port #19727 to v3
Add http://bugzil.la/1264125 to Wall of Browser Bugs

Due to the lack of this feature in browsers,
we currently have to implement an annoying setTimeout-based workaround,
which adds an extra layer of complication and probably slightly impacts performance:
e391fcb953/js/src/util.js (L63-L77)

[ci skip]
2016-04-12 17:01:36 -07:00
Chris Rebert
7e09021fc3 Port edfd72678d to v3
docs/_plugins/bugify.rb: Remove IE; all relevant issues moved to Edge

Refs #19713
[skip sauce]
2016-04-10 23:23:45 -07:00
Chris Rebert
ad0280c227 Port 6ec176eee2 to v3
Update remaining Edge issue URLs in Wall of Browser Bugs

* https://connect.microsoft.com/IE/feedback/details/2445370 => https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/6793560/
* https://connect.microsoft.com/IE/feedback/details/2256049 => https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/7165383/

Refs #19713
[skip sauce]
2016-04-10 23:23:02 -07:00
Chris Rebert
38534924fe Port #19712 to v3
https://crbug.com/273306 has been fixed

Refs #12078
[skip sauce]
2016-04-10 23:19:47 -07:00
Patrick H. Lauke
0841f7a9f0 Merge pull request #19704 from patrickhlauke/v3-pagination-a11y-label
Add aria-label and callout about labelling pagination components
2016-04-10 20:25:45 +01:00
Patrick H. Lauke
c46af16827 Add aria-label and callout about labelling pagination components 2016-04-10 14:54:05 +01:00
Chris Rebert
82cd05490f Port 62c07b67bf to v3
https://webkit.org/b/143527 has been fixed

Refs #16180, #16262
[skip sauce]
2016-04-08 17:45:03 -07:00
Chris Rebert
885ed7516a Update Wall of Browser Bugs entry for #14211
Refs https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/5381673/
Ports a563dc8f73 to v3
[skip sauce]
2016-04-05 17:10:02 -07:00
Chris Rebert
5a8e00677a Wall of Browser Bugs: Update some more URLs of MS Edge bugs
Ports 63e9346f50 to v3
[skip sauce]
2016-04-05 01:44:03 -07:00
Chris Rebert
6c12012b52 Reflect MS Edge's migration of their issue tracker
Refs https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/
Ports 16d7102176 to v3
[skip sauce]
2016-04-04 17:45:31 -07:00
Chris Rebert
6a070e95be CONTRIBUTING.md: Update MS Edge bug reporting instructions
[ci skip]
2016-04-04 14:46:18 -07:00
XhmikosR
d962fdc5b1 Update htmlmin options.
[ci skip]
2016-04-02 10:27:18 +03:00
XhmikosR
67fa9c2f58 Update devDependencies.
[sauce skip]
2016-04-02 10:25:30 +03:00
Chris Rebert
7cbd9a181a Port #19628 to v3
Add Wall of Browser Bugs entry for #19626

Refs https://bugzilla.mozilla.org/show_bug.cgi?id=1259972
Closes #19626
[ci skip]
2016-03-26 21:50:20 -07:00
XhmikosR
b4171d2739 Bump grunt-html.
[sauce skip]
2016-03-25 14:51:09 +02:00
Chris Rebert
66a3867450 Merge pull request #19605 from twbs/fix-18559-v3
Use vanilla npm shrinkwrap instead of uber/npm-shrinkwrap
2016-03-24 00:30:02 -07:00
Chris Rebert
6eec5776be update shrinkwrap 2016-03-24 00:12:54 -07:00
Chris Rebert
0af30aa65e Use vanilla npm shrinkwrap instead of uber/npm-shrinkwrap; fixes #18559
Ports #19604 to v3.

Special thanks to @kikinteractive, @azer, and @npm.
2016-03-24 00:12:10 -07:00
Chris Rebert
1a906a8a19 Merge pull request #19570 from twbs/master-jquery-122
Update jQuery to v1.12.2.
2016-03-23 20:14:25 -07:00
XhmikosR
0394b7c60e Update dependencies. 2016-03-19 18:35:35 +02:00
XhmikosR
ebc2d2badc Update jQuery to v1.12.2. 2016-03-19 15:18:33 +02:00
Chris Rebert
10606a73bc Port #19551 to v3
Add Wall of Browser Bugs entry for #17338

https://crbug.com/595210

Closes #17338
[skip sauce]
2016-03-15 20:58:53 -07:00
Chris Rebert
55f6efbbae Port #19482 to v3
[ci skip]
2016-03-14 23:02:13 -07:00
Pvanhesteren
d9a64a0281 Docs: unwantedly -> undesirably, as the validity of "unwantedly" is uncertain
Closes #19406
2016-03-14 02:32:02 -07:00
Chris Rebert
60168ad099 Port #19537 to v3
[skip sauce]
2016-03-14 02:13:38 -07:00
Chris Rebert
0b39722c7c Port #19470 to v3
CONTRIBUTING.md: Prohibit "+1" comments in favor of reactions

Refs https://github.com/blog/2119-add-reactions-to-pull-requests-issues-and-comments
Refs https://github.com/dear-github/dear-github/issues/141#issuecomment-195106918
[ci skip]
2016-03-14 02:09:40 -07:00
XhmikosR
614559b41a Update anchor.js to v3.1.0.
[ci skip]
2016-03-11 11:09:21 +02:00
XhmikosR
2744e4042f Merge pull request #19378 from twbs/v3-deps
Update devDependencies
2016-03-11 10:58:57 +02:00
Chris Rebert
0119e334a1 Port #19088 to v3
Add Wall of Browser Bugs entry for https://webkit.org/b/153856

Refs https://github.com/twbs/bootstrap/issues/14839#issuecomment-60940738
[ci skip]
2016-03-10 22:36:26 -08:00
Chris Rebert
7a8da2de14 Merge pull request #19469 from wolfy1339/patch-2
Make Hound CI fail on violations
[ci skip]
2016-03-10 22:09:25 -08:00
wolfy1339
6d7669a72d Make hound fail on violations 2016-03-10 21:07:53 -05:00
Chris Rebert
f4a09c76f1 Port #19452 to v3
Wall of Browser Bugs: Stop mentioning IE11

Sounds like IE11 isn't getting non-critical fixes anymore, so there's no point in mentioning it (just like there's no point in mentioning IE10).
Help us, Edge-Wan Kenobi! You're our only hope.
[ci skip]
2016-03-10 13:06:00 -08:00
XhmikosR
cf566a8041 Run grunt.
[ci skip]
2016-03-10 13:44:17 +02:00
Chris Rebert
626b97e8e9 Travis: Remove env vars for S3 cache credentials
Reverts part of 42697a4ecb
2016-03-10 13:44:17 +02:00
Chris Rebert
dd347b59df Travis: Remove env vars for giving Savage access to S3 cache
Since we're not using the S3 cache anymore
Reverts a1c170ed37
2016-03-10 13:44:17 +02:00
XhmikosR
f77c96402b Customizer: update uglify-js to v2.6.2.
[ci skip]
2016-03-10 13:44:17 +02:00
XhmikosR
14fa65ea29 Update QUnit to v1.22.0. 2016-03-10 13:44:17 +02:00
XhmikosR
5564142d93 Use jekyll-sitemap instead of our custom solution. 2016-03-10 13:44:16 +02:00
XhmikosR
4265f868ac Remove custom caching and use Bundle for gems. 2016-03-10 13:44:16 +02:00
XhmikosR
dcc2b8ac00 Fix HTML validation errors.
[skip sauce]
2016-03-10 13:44:16 +02:00
XhmikosR
9b412a7435 Fix JSHint errors.
[skip sauce]
2016-03-10 13:44:16 +02:00
XhmikosR
60b17950f1 Update devDependencies.
Keep grunt-contrib-qunit to v0.7.0 since the updated version (1.0.1 as the time of writing) results in Travis failures. Locally, both work fine, though.
2016-03-10 13:44:16 +02:00
Chris Rebert
0f1d09b86c Port ada8f21343 to v3
Update Wall of Browser Bugs entry for #15990

http://bugzil.la/1139853 was resolved as a duplicate of http://bugzil.la/924068
Refs #15990
[ci skip]
2016-03-09 16:03:55 -08:00
Patrick H. Lauke
0637c71295 Merge pull request #19435 from patrickhlauke/master
Add native title tooltip IE11/Edge bug to wall of browser bugs
2016-03-07 15:30:48 +00:00
Patrick H. Lauke
981a38f458 Add native title tooltip IE11/Edge bug to wall of browser bugs 2016-03-07 15:28:30 +00:00
Chris Rebert
0a6f80a479 Port #19424 to v3
Docs: Link directly to printing-related browser bugs

* https://bugs.chromium.org/p/chromium/issues/detail?id=273306
* https://bugs.webkit.org/show_bug.cgi?id=138192
[skip sauce]
2016-03-06 21:34:45 -08:00
Chris Rebert
164b89f7af Port #19423 to v3
Docs: Add link to Chrome bug regarding `body { overflow: hidden; }`

https://bugs.chromium.org/p/chromium/issues/detail?id=175502
[skip sauce]
2016-03-06 21:03:46 -08:00
Chris Rebert
0603d7afa0 Port #19395 to v3
Remove Wall of Browser Bugs entry for #19390

Refs https://bugzilla.mozilla.org/show_bug.cgi?id=1217012
Refs #19393
[ci skip]
2016-03-03 22:21:11 -08:00
Chris Rebert
4ed6ea07bb Port #19393 to v3
Add Wall of Browser Bugs entry for #19390

https://bugzilla.mozilla.org/show_bug.cgi?id=1253468
Closes #19390
[ci skip]
2016-03-03 17:34:57 -08:00
Chris Rebert
ca69e26b7d CONTRIBUTING.md: Missing serial comma
[ci skip]
2016-03-03 17:00:40 -08:00
Chris Rebert
a819a4d2f2 Merge pull request #19389 from cfleschhut/patch-1
Make v4's switch from Less to Sass more explicit in contribution guidelines
[ci skip]
2016-03-03 16:59:30 -08:00
Christian Fleschhut
ee4dbf7efd Make switch from Less to Sass more explicit in contribution guidelines 2016-03-03 20:25:58 +01:00
XhmikosR
d7f7cee39e Run grunt.
[ci skip]
2016-02-28 04:03:48 +02:00
XhmikosR
a27dfca9db Bump version in customizer.js.
[ci skip]
2016-02-28 04:02:37 +02:00
Patrick H. Lauke
85c3cf1b7c Merge pull request #19273 from patrickhlauke/v3-browser-compat-backport1
Port v4 browser support table format to v3
2016-02-28 00:05:59 +00:00
Patrick H. Lauke
2d20bb7e71 Port v4 browser support tables to v3 2016-02-27 23:46:12 +00:00
Chris Rebert
bf99fcec1a Port #19321 to v3
Wall of Browser Bugs: Update Chromium bug tracker URLs

RIP code.google.com
[skip sauce]
2016-02-25 17:07:25 -08:00
Chris Rebert
f2ba581a25 Merge pull request #19295 from twbs/v3-ios-9.2
Use iOS 9.2 in Sauce tests
2016-02-23 15:16:02 -08:00
Chris Rebert
5d549befdd Use iOS 9.2 in Sauce tests
[skip validator]
2016-02-23 13:21:34 -08:00
Chris Rebert
974cf1fbd2 Merge pull request #18904 from alberto/jquery-1.12.0
Update jQuery to 1.12.1
2016-02-23 13:19:14 -08:00
alberto
741b4eca20 Update jQuery to 1.12.1 2016-02-23 18:50:43 +01:00
Christian Oliff
562d2239c0 Docs: Remove <meta name="keywords"> from <head>
Remove meta keywords - AFAIK no search engines use them for search ranking at all. There's no need for them to be included.

Closes #18872
[skip sauce]
2016-02-18 18:07:12 -08:00
Chris Rebert
00dd18d991 Merge pull request #19263 from twbs/bump-shiv
Bump html5shiv to v3.7.3
2016-02-18 01:14:09 -08:00
Chris Rebert
851e3f1b04 Bump html5shiv to v3.7.3
Fixes #19262
Thanks to @coliff for pointing out that we were using an outdated version.
2016-02-18 00:59:27 -08:00
Chris Rebert
1037e33347 Port #19219 to v3
CONTRIBUTING: Document restriction regarding jQuery event alias methods

Refs #19192
[ci skip]
2016-02-16 14:25:26 -08:00
Chris Rebert
66c81fe4a1 Port #19220 to v3
js/tests/index.html: Replace jQuery event alias methods with functions that throw explanatory errors, instead of with undefined

Refs https://github.com/twbs/bootstrap/pull/19219#issuecomment-184653699

[skip validator]
2016-02-16 14:24:39 -08:00
Patrick H. Lauke
a42875afe7 Merge pull request #19233 from patrickhlauke/test-visual-buttons-patch2
Visual/manual test for checkbox/radio button kbd behavior
2016-02-16 22:15:46 +00:00
Patrick H. Lauke
eabdad7208 Visual/manual test for checkbox/radio button kbd behavior 2016-02-16 22:13:55 +00:00
Fabrice Daugan
ad1e98d094 button.js: Fix keyboard navigation
This PR fixes the keyboard navigation again while still keeping #16223 fixed.

Closes #19192
2016-02-16 04:38:05 -08:00
Chris Rebert
ad5e6565cc Port a24112e850 to v3
Remove http://bugzil.la/1060131 from Wall of Browser Bugs

http://bugzil.la/1060131 has been fixed by http://bugzil.la/823483 which should land in Firefox 46.
Refs #14320
[ci skip]
2016-02-10 20:01:00 -08:00
Chris Rebert
e7dc95a39a Port 183b57b504 to v3
Remove http://bugzil.la/975632 from Wall of Browser Bugs

http://bugzil.la/975632 has been fixed by http://bugzil.la/823483 which should land in Firefox 46.
Refs #10690
[ci skip]
2016-02-10 19:50:53 -08:00
Patrick H. Lauke
061981f8a3 Merge pull request #19146 from sajadtorkamani/patch-1
Correct spelling
2016-02-10 11:04:09 +00:00
Sajad Torkamani
8881ea290c Correct spelling 2016-02-10 11:01:05 +00:00
Chris Rebert
8d57ee1644 Port df07536dd1 to v3
Revert "https://webkit.org/b/138201 no longer repros"
[skip sauce]
2016-02-08 20:15:40 -08:00
Chris Rebert
64f36a316b Port f618aa7c01 to v3
https://webkit.org/b/138201 no longer repros

Wasn't able to reproduce in iOS 9.2.
So remove its entry from the Wall of Browser Bugs.
Refs #14708
[skip sauce]
2016-02-07 17:04:50 -08:00
Chris Rebert
fe47bb202c Update other Bootstrap 4 blog post link; erratum from #18913
[skip sauce]
2016-02-07 15:20:38 -08:00
Chris Rebert
38a70e4a27 Merge pull request #19091 from jshen212/patch-1
docs/assets/js/src/application.js: Fix capitalization in comment
2016-02-05 10:56:18 -08:00
Jeff Shen
6d54142099 Line 59 - Fix case type
Fixed case type to match other comments
2016-02-05 10:27:32 -08:00
Chris Rebert
b52ef829c1 Port #19078 to v3
[skip sauce]
2016-02-03 22:58:46 -08:00
Chris Rebert
f248bb25ea Port 566290f32e to v3
Add Wall of Browser Bugs entry for https://webkit.org/b/153852

Refs http://getbootstrap.com/getting-started/#overflow-and-scrolling
Refs #14839
[skip sauce]
2016-02-03 22:50:19 -08:00
Patrick H. Lauke
91c8929b28 Merge pull request #19050 from pra85/patch-1
Typo fix
2016-01-29 09:45:28 +00:00
Chris Rebert
e492782f08 Merge pull request #19051 from twbs/modal-dialog-role-doc
Docs: Add missing `role="document"`s to `.modal-dialog`s
2016-01-28 22:35:26 -08:00
Chris Rebert
a2c4771d7c Docs: Add missing role="document"s to .modal-dialogs
Refs https://github.com/twbs/bootlint/pull/349#issuecomment-176554436

[skip sauce]
2016-01-28 22:30:51 -08:00
Prayag Verma
824b6d35f5 Typo fix 2016-01-29 11:00:25 +05:30
Chris Rebert
eb8cb2158a Port 701b467994 to v3
Remove Wall of Browser Bugs entry for #16915

https://connect.microsoft.com/IE/feedback/details/2274240/edge-edge-renders-an-svg-img-with-max-width-100-too-small
is fixed as of Edge 25.10586.0.0 (or possibly earlier).
Confirmed in https://github.com/twbs/bootstrap/issues/16915#issuecomment-175210482
Reverts #19010

[skip sauce]
2016-01-26 12:38:46 -08:00
Chris Rebert
6ff1573f84 Port e381b83233 to v3
Add Wall of Browser Bugs entry for #16915

https://connect.microsoft.com/IE/feedback/details/2274240/edge-edge-renders-an-svg-img-with-max-width-100-too-small
[skip sauce]
2016-01-23 02:55:07 -08:00
Chris Rebert
7e0cac1b47 Port 332c39b690 to v3
Add Wall of Browser Bugs entry for #18228

See https://connect.microsoft.com/IE/feedback/details/2263132/edge-ie11-subpixel-problem-with-transparent-borders
Refs #18228
[skip sauce]
2016-01-20 02:10:54 -08:00
Chris Rebert
be6f70a70e Port f15da060ce to v3
Also filed a Radar for #17497

See http://openradar.appspot.com/24235301
Refs #17497
[skip sauce]
2016-01-19 00:24:46 -08:00
Chris Rebert
a9812a0281 Port #18936 to v3
Add Wall of Browser Bugs entry for #17497

https://bugs.webkit.org/show_bug.cgi?id=153224
Closes #17497

[skip sauce]
2016-01-18 23:28:43 -08:00
Chris Rebert
64b618df84 Port #18930 to v3
Add Wall of Browser Bugs entry for #18543

https://connect.microsoft.com/IE/feedback/details/2256049/edge-ie11-viewport-rule-has-side-effect-of-making-scrollbars-auto-hide
[ci skip]
2016-01-18 03:45:00 -08:00
Chris Rebert
98b9ff6b7a variables.less: Fix typo in comment for @caret-width-base
Closes https://github.com/twbs/bootstrap-sass/pull/1005
[ci skip]
2016-01-17 20:33:25 -08:00
Chris Rebert
880a3c1a86 Merge pull request #18908 from cssmonkey/patch-1
Modal.enforceFocus: Use correct variable name (event => e)
2016-01-15 17:45:50 -08:00
Chris Rebert
12cf78f64a Merge pull request #18913 from calvinf/patch-1
Docs: Update v4 banner's blog post link
2016-01-15 17:40:03 -08:00
Calvin Freitas
aaaf6aa44c update banner
update banner to link to Bootstrap 4 alpha 2 blog post
2016-01-15 13:14:08 -08:00
Sean Jones
9f2f51073c enforceFocus event.target - event is undefined
event.target should be e.target within enforceFocus method.
2016-01-15 12:13:40 +00:00
Chris Rebert
742d3ebcb5 Port 8ed66af63c to v3
Add Wall of Browser Bugs entry for #18859

See https://bugs.webkit.org/show_bug.cgi?id=153056
Closes #18859
[skip sauce]
2016-01-12 22:10:51 -08:00
Chris Rebert
d533bf0cbc Port 48e62fdf34 to v3
https://webkit.org/b/150715 has been fixed

Fixed by way of https://webkit.org/b/152803
Thanks Google Translate (I guess) and WebKit Team!
[ci skip]
2016-01-07 18:17:49 -08:00
Chris Rebert
9be8428dcb Port 6ab9e10efa to v3
https://webkit.org/b/147284 has been fixed
Refs #16814
[ci skip]
2016-01-07 14:11:14 -08:00
Chris Rebert
08031d6a76 Merge pull request #18747 from twbs/fix-18711
Docs: disable printing of hrefs
2016-01-02 21:40:57 -08:00
Chris Rebert
1639ef7390 Docs: disable printing of hrefs; fixes #18711
[ci skip]
2016-01-01 18:12:20 -08:00
Chris Rebert
244a0bde1e Port e655c2d to v3
Add Wall of Browser Bugs entry for #18738

* https://bugs.webkit.org/show_bug.cgi?id=152637
* http://openradar.appspot.com/24030853

Closes #18738

[ci skip]
2016-01-01 13:31:23 -08:00
Chris Rebert
06aa2a5bf2 grunt dist docs
[ci skip]
2016-01-01 12:26:53 -08:00
Chris Rebert
cf3f8e0d58 Update copyright years to 2016
[ci skip]
2016-01-01 12:22:03 -08:00
Dominic
3dd92b29a3 README: Update copyright to 2016
Happy New Year!
It's 2016!

Closes #18744
2016-01-01 12:13:34 -08:00
AQNOUCH Mohammed
9c469cd0e8 LICENSE: Update copyright to 2016
Closes #18739
2016-01-01 12:12:09 -08:00
Patrick H. Lauke
3a77b01d79 Merge pull request #18700 from patrickhlauke/disabled-pointer-events-v3
Add pointer-events:none to disabled pager/pagination
2015-12-29 16:25:02 +00:00
Patrick H. Lauke
a217db1923 Add pointer-events:none to disabled pager/pagination
In line with usage of `pointer-events:none` for disabled buttons
2015-12-27 10:16:07 +00:00
Chris Rebert
b0ec851f80 Merge pull request #18639 from twbs/v3-fix-18365
Modal: Ignore spurious focus event that Firefox fires at document when switching back to its tab
2015-12-24 08:15:35 -07:00
XhmikosR
b412dc5b14 Run grunt.
[ci skip]
2015-12-24 12:38:22 +02:00
XhmikosR
112b1c7a95 Update dependencies. 2015-12-24 12:37:39 +02:00
Chris Rebert
27fb89037f Merge pull request #18657 from twbs/fix-18145-v3
Update shrinkwrap
2015-12-23 21:38:55 -07:00
Chris Rebert
f6755b4687 Update shrinkwrap; fixes #18145 2015-12-23 21:31:40 -07:00
Chris Rebert
aeb25ba521 Modal: Ignore spurious focus event that Firefox fires at document when switching back to its tab
Fixes #18365
Ports #18638 to v3
Refs https://bugzilla.mozilla.org/show_bug.cgi?id=1228802
2015-12-22 23:21:51 -07:00
Chris Rebert
50ce63b5e5 Add visual test for #18365
See also https://bugzilla.mozilla.org/show_bug.cgi?id=1228802
2015-12-22 23:18:06 -07:00
Chris Rebert
40996725ce js/tests/unit/modal.js: Fix typo
[ci skip]
2015-12-22 17:11:18 -07:00
Chris Rebert
71a0bfee8e Merge pull request #18593 from twbs/change-version-script
Port #18402 to v3: s/grunt-sed/npm script/g
2015-12-16 21:55:54 -08:00
Chris Rebert
879ebe7ed4 Update shrinkwrap 2015-12-16 21:22:27 -08:00
Chris Rebert
ba926a10f3 Port #18402 to v3: s/grunt-sed/npm script/g
Fixes #18338
[skip sauce]
[skip validator]
2015-12-16 21:22:27 -08:00
Chris Rebert
ad716b9ea9 Merge pull request #18530 from twbs/npm-install-bootstrap-at-3
Docs: Include major version in `npm install bootstrap` commands
2015-12-10 15:05:45 -08:00
Chris Rebert
a823afc5e2 Docs: Include major version in npm install bootstrap commands; refs #18520
[ci skip]
2015-12-10 14:58:47 -08:00
Chris Rebert
8f7535647d Port #18514 to v3
Add Wall of Browser Bugs entry for #18504

https://connect.microsoft.com/IE/feedback/details/2110930/edge-ie11-gradient-background-image-on-tr-is-only-applied-to-first-td

[skip sauce]
2015-12-09 16:04:03 -08:00
Chris Rebert
181f76f115 Port #18453 to v3
Add Wall of Browser Bugs entry related to #16028

https://bugs.webkit.org/show_bug.cgi?id=151933

[skip sauce]
2015-12-07 01:18:45 -08:00
Mark Otto
e056a66a3b Merge pull request #18446 from twbs/fix-18332
Check-in the v4 notice and themes link in the docs
2015-12-06 23:54:36 -08:00
Chris Rebert
45b318b32f Merge pull request #18445 from twbs/docs-github
Grunt: Factor out new docs-github task
2015-12-06 11:29:47 -08:00
Chris Rebert
25e8e4fa60 Port #18448 to v3
Add Wall of Browser Bugs entry for #15990

https://bugzilla.mozilla.org/show_bug.cgi?id=1139853
[skip sauce]
2015-12-06 03:08:54 -08:00
Chris Rebert
78ea82520f Port #18447 to v3
Mention Mozilla Firefox meta-bug on Wall of Browser Bugs
https://bugzilla.mozilla.org/show_bug.cgi?id=1230801

[skip sauce]
2015-12-06 02:51:22 -08:00
Chris Rebert
46a294f683 Checkin .v4-tease styles
[skip sauce]
2015-12-06 01:50:35 -08:00
Chris Rebert
0f67b5e3d3 Checkin "Themes" link in navbar 2015-12-06 01:47:59 -08:00
Chris Rebert
2535f18157 _config.yml: Add site.themes variable 2015-12-06 01:47:28 -08:00
Chris Rebert
14b6a215c3 Checkin v4 notice links; CSS still needed 2015-12-06 01:44:31 -08:00
Chris Rebert
3786a71d04 Grunt: Factor out new docs-github task
[skip sauce]
[skip validator]
2015-12-06 01:35:14 -08:00
Chris Rebert
0ea85728d1 button-groups.less: Grammar OCD comment
[ci skip]
2015-12-01 00:07:49 -08:00
Chris Rebert
e4730c989e Merge pull request #18384 from henryw4k/patch-1
Clarify comment in button-groups.less
2015-12-01 00:06:21 -08:00
Henry Wong
75ef0dd549 Clarifying the comment
Made comment more clear.
2015-11-29 23:57:47 -08:00
Chris Rebert
de0b881c47 Port fd43ce255f to v3
Add Wall of Browser Bugs entry for #18365

See http://bugzil.la/1228802

[skip sauce]
[skip validator]
2015-11-28 20:54:53 -08:00
Chris Rebert
fcf8e5215c Merge pull request #18369 from mikexstudios/update-cdn-hash
Updated SRI hashes in docs for CDN links
2015-11-28 16:21:58 -08:00
Michael Huynh
2fb3daafc0 Closes #18353. Updated SRI hashes in docs.
Used https://www.srihash.org/.
2015-11-28 17:25:08 -05:00
Chris Rebert
0506044b94 Merge pull request #18354 from tagliala/fix-whitespaces
Remove whitespace at EOL in input-groups.less
2015-11-26 15:33:33 -08:00
Geremia Taglialatela
eb8940b786 Remove whitespaces 2015-11-26 11:47:19 +01:00
Chris Rebert
c57a9b78de Revert incorrect version number change in Stateful Button docs
Erratum from 910400e897
See 910400e897 (commitcomment-14598760)
/fyi @mdo

[skip sauce]
2015-11-26 00:59:21 -08:00
Chris Rebert
f636ff187e Merge pull request #18337 from twbs/v3-no-feats-for-you
Explain in docs that v3 is closed off to new features
2015-11-25 04:12:18 -08:00
Chris Rebert
c56789598a Explain in docs that v3 is closed off to new features
Refs #18112
[skip sauce]
2015-11-24 23:34:09 -08:00
Mark Otto
81df608a40 prep release 2015-11-24 11:37:05 -08:00
Mark Otto
87121181c8 grunt after version bump 2015-11-24 11:08:53 -08:00
Mark Otto
910400e897 bump version 2015-11-24 11:07:36 -08:00
Mark Otto
c13de0e69a grunt 2015-11-24 11:05:26 -08:00
Martin Beeby
3001831e19 Updating "Reporting upstream browser bugs" for IE
Adding Microsoft Edge and the rendering engine EdgeHTML.

Closes #18303
[skip sauce]
[skip validator]
2015-11-24 05:46:51 -08:00
Chris Rebert
94b4076dd2 Docs: Add missing tabindex="-1" & role="dialog" to some .modals
Refs https://github.com/twbs/bootlint/pull/314
[skip sauce]
2015-11-15 22:08:42 -08:00
Mark Otto
ce58026933 Merge pull request #18253 from twbs/mdo-patch-1
Ensure proper z-indexing in input-groups
2015-11-14 20:27:31 -08:00
Mark Otto
bed3872b49 Ensure proper z-indexing in input-groups 2015-11-14 20:26:19 -08:00
Mark Otto
03885dc881 Merge pull request #18252 from twbs/mdo-patch-1
Fix IE9 clickthru of carousel controls
2015-11-14 20:11:16 -08:00
Mark Otto
0820da3f52 Fix IE9 clickthru of carousel controls 2015-11-14 20:10:53 -08:00
Mark Otto
c0f6e1c70e Merge pull request #18251 from twbs/mdo-patch-1
Document offset-0 col classes
2015-11-14 19:47:55 -08:00
Mark Otto
087d16d21a that @cvrebert lifestyle 2015-11-14 19:47:49 -08:00
Mark Otto
14d73b9c13 fixes #17003 2015-11-14 19:39:28 -08:00
Chris Rebert
8248b9e210 Merge pull request #18246 from vsn4ik/use-mixin-border-radius
Use border-radius mixin in button-groups.less
2015-11-13 17:36:44 -08:00
vsn4ik
33315652ae [v3] Use border-radius mixin in button-groups.less 2015-11-14 01:16:38 +03:00
Mark Otto
f14ee8fd44 Merge pull request #17922 from jackzzjack/master
Add Chinese (Traditional) language translation.
2015-11-12 23:40:37 -08:00
Mark Otto
1565c1196e Follow up to #16975 2015-11-12 21:31:27 -08:00
Mark Otto
332ed554ec Merge pull request #16975 from kkirsche/patch-3
Use @carousel-control-font-size for in min-width sm
2015-11-12 21:28:24 -08:00
XhmikosR
18ddb7648d Run grunt.
[ci skip]
2015-11-12 09:13:58 +02:00
XhmikosR
47283e703b Update devDependencies.
Downgrade grunt-contrib-uglify to fix the comments issue.

[sauce skip]
2015-11-12 09:13:46 +02:00
Chris Rebert
c04aa41ee2 Merge pull request #18214 from kkirsche/patch-2
Update verbiage to proper tense for feature deprecations
2015-11-11 16:18:43 -08:00
Kevin Kirsche
fc87d82ae9 Update verb tenses to proper tense for feature deprecations
X-Ref: fce30b57e2
2015-11-11 18:54:10 -05:00
Mark Otto
b2a4cf0517 Merge pull request #16965 from zacechola/document_icon_helpers
Call out `.icon-next`, `.icon-prev` alternative classes for Carousel
2015-11-08 18:15:29 -08:00
Mark Otto
ef8bc28890 Merge pull request #16684 from kkirsche/patch-2
Fix border-radius not being set on 2 corners of vertical btn group
2015-11-08 18:13:48 -08:00
Chris Rebert
857d9d688f Port 33103c0b52 to v3
http://wkbug.com/146244 has been fixed in WebKit Nightly

See http://trac.webkit.org/changeset/191954
Refs #15968

[ci skip]
2015-11-03 15:14:45 -08:00
Chris Rebert
80cd128843 Port 6f14f02fc5 to v3
http://crbug.com/523282 has been fixed in Chrome Canary

Refs #17913
[ci skip]
2015-11-01 21:16:06 -08:00
Chris Rebert
a367408608 Merge pull request #18080 from twbs/csp-progress
Add docs regarding .progress, inline style attrs, and CSP
2015-10-30 01:45:15 -07:00
Chris Rebert
04d1b1fb49 Merge pull request #18111 from twbs/wkbug-150715
Add http://wkbug.com/150715 to Wall of Browser Bugs
2015-10-30 01:31:18 -07:00
Chris Rebert
ea7c23b6ce Add http://wkbug.com/150715 to Wall of Browser Bugs
[skip sauce]
[skip validator]
2015-10-30 01:27:51 -07:00
Chris Rebert
6e1e77b539 Add docs regarding .progress, inline style attrs, and CSP; closes #17785
[skip sauce]
2015-10-29 22:51:19 -07:00
XhmikosR
f5bb168a79 Run `grunt.
[skip sauce]
2015-10-29 18:02:53 +02:00
XhmikosR
50bea4625a Update devDependencies.
[skip sauce]
2015-10-29 18:02:52 +02:00
XhmikosR
5c8f7a03da Update Rouge to v1.10.1.
[skip sauce]
2015-10-29 18:02:51 +02:00
XhmikosR
2cccdc8e3d Update to Jekyll v.3.0.0.
[skip sauce]
2015-10-29 18:02:40 +02:00
Chris Rebert
2261427a2f Port #18091 to v3
Remove http://wkbug.com/149935 from Wall of Browser Bugs

It's been fixed in WebKit Nightly!
See https://trac.webkit.org/changeset/191623 and http://wkbug.com/149366
Refs #17438, #14237

[ci skip]
2015-10-28 13:04:53 -07:00
Mark Otto
3d127c0568 Merge pull request #17879 from bhamodi/master
Update Example Footers.
2015-10-26 20:53:31 -07:00
Chris Rebert
0d2cc3ed43 Port 152c491898 to v3
https://webkit.org/b/150271 has been fixed!

See http://trac.webkit.org/changeset/191610
Refs #17913
[ci skip]
2015-10-26 16:44:46 -07:00
Chris Rebert
0e3948febe Port 2332a3f536 to v3
http://crbug.com/544290 was marked duplicate of http://crbug.com/523282

Refs #17913
[ci skip]
2015-10-25 16:38:58 -07:00
Chris Barry
9aeec56745 Adding subresource hashes to CDN links.
In Firefox 43 and Chrome 45 there will be support for Subresource
Iintegrity (SRI). More information here:
https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity

Closes #17729 by merging a tweaked version of it.
2015-10-23 22:22:57 -07:00
Chris Rebert
18ad53fc56 Fix Hound's JS config
Per https://github.com/twbs/bootstrap/pull/17997#discussion_r42564175 ; thanks @vsn4ik !
Refs #17769
/fyi @croaky

[ci skip]
2015-10-20 15:57:11 -07:00
Chris Rebert
7552295617 Port #17955 to v3
Add #17913 to Wall of Browser Bugs
Refs https://code.google.com/p/chromium/issues/detail?id=544290
Refs https://bugs.webkit.org/show_bug.cgi?id=150271
Closes #17913
[ci skip]
2015-10-17 00:41:23 -07:00
Chris Rebert
1db87efc2a Merge pull request #17944 from supergibbs/NuGet_badge
Update MyGet badge
2015-10-15 17:21:02 -07:00
Supergibbs
14c04c82d3 Changed MyGet badge to more useful and better looking NuGet one by
shields.io
2015-10-15 16:48:51 -07:00
jackzzjack
15eeb87286 Add Chinese (Traditional) language website. 2015-10-14 10:41:06 +08:00
Chris Rebert
5b46f3d9d9 Merge pull request #16710 from supergibbs/NuGet_16692
Added NuGet support
2015-10-13 15:11:19 -07:00
Philip Masek
03dbebb216 Clarify that .panel-heading overrides font-size of <hN> tags
Closes #17533
Closes #17735
2015-10-13 10:57:32 -07:00
Chris Rebert
a0b8cb74c5 Port #17906 to v3
Add Wall of Browser Bugs entry for #14975
See https://bugs.webkit.org/show_bug.cgi?id=150079
Closes #14975
[ci skip]
2015-10-12 19:12:54 -07:00
Chris Rebert
167c6fa93a Port #17902 to v3
http://wkbug.com/138167 has been fixed!
See http://trac.webkit.org/changeset/190893
Refs #9774, #14907
[ci skip]
2015-10-12 16:23:37 -07:00
Chris Rebert
bb5542651d Merge pull request #17880 from bhamodi/newline-fixes
Added missing new lines at EOF.
2015-10-10 18:19:54 -07:00
Chris Rebert
d97bf25855 Add Wall of Browser Bugs entry for Safari related to #17438 / #14237
https://bugs.webkit.org/show_bug.cgi?id=149935
[skip sauce]
2015-10-10 17:03:36 -07:00
Baraa Hamodi
07c8e3862c Added missing new lines at EOF. 2015-10-10 19:31:57 -04:00
Baraa Hamodi
388b3363d2 Update Example Footers. 2015-10-10 12:53:16 -04:00
Chris Rebert
799ccf38b9 Add missing space in .backface-visibility definition; fixes #17873
[ci skip]
2015-10-10 00:30:46 -07:00
Chris Rebert
c697e17370 Port #17820 to v3
Add Wall of Browser Bugs entry for #17438 / #14237
Refs https://code.google.com/p/chromium/issues/detail?id=534750
Closes #17438
Closes #14237

[skip sauce]
2015-10-08 13:50:45 -07:00
Chris Rebert
f5043002d8 Be pedantically correct; refs #17809
[skip sauce]
2015-10-07 21:32:57 -07:00
Chris Rebert
1d39f938bb Tooltips on <table>s should use container: body ; fixes #17809 2015-10-07 21:24:20 -07:00
Dan Croak
d53525cc3e Add JavaScript configuration for Hound
This change uses Bootstrap's existing `js/.jshintrc` file
to configure Hound's hosted JSHint instance.

It leaves existing JavaScript linting as-is
because Hound does not support ESLint or JSCS yet.

On each pull request to Bootstrap,
Hound will comment on any JavaScript style violations in-line,
like this:

![screenshot](https://images.thoughtbot.com/hound/javascript-example.png)

If you update the pull request to adopt a suggestion,
the comment will be hidden.

It leaves the existing linting done by Grunt + Travis.

Hound is free for open source projects
and is open source itself:

https://github.com/thoughtbot/hound
2015-10-03 22:45:37 -07:00
Chris Rebert
a482ddb858 Merge pull request #17753 from twbs/moz-1048279
Remove http://bugzil.la/1048279 entry from Wall of Browser Bugs
2015-10-01 10:40:16 -07:00
Chris Rebert
ac9fa84385 Remove http://bugzil.la/1048279 entry from Wall of Browser Bugs
https://bugzilla.mozilla.org/show_bug.cgi?id=1048279 has been closed as WONTFIX.
Refs #14124.
[skip sauce]
2015-10-01 10:36:24 -07:00
Chris Rebert
8f627f6546 Merge pull request #17742 from twbs/ie10-viewport-bug-workaround-css
Add CSS portion of IE10 viewport bug workaround to docs & examples
2015-09-30 12:51:33 -07:00
Chris Rebert
700966253a Add CSS portion of IE10 viewport bug workaround to examples
Fixes #17337
2015-09-30 12:41:27 -07:00
Chris Rebert
05b1c625be Add CSS portion of IE10 viewport bug workaround to docs
Refs #17337
2015-09-30 12:41:18 -07:00
Chris Rebert
79cdd66bbb Merge pull request #17726 from tomkel/docs-fade-fix
Docs - clarify purpose of CSS class .in to .fade
[skip sauce]
2015-09-28 14:36:44 -07:00
Tommy Kelly
e12547d1de Docs - clarify purpose of CSS class .in to .fade 2015-09-28 16:23:54 -04:00
Baraa Hamodi
85bc0338d1 Documentation clean up and consistency; closes #17625
[skip sauce]
2015-09-28 12:37:35 -07:00
Chris Rebert
e38f066d8c Merge pull request #17712 from twbs/chrome-meta
Mention Chrome meta-bug on Wall of Browser Bugs
2015-09-27 01:25:57 -07:00
Chris Rebert
a52c68092c Mention Chrome meta-bug on Wall of Browser Bugs
https://code.google.com/p/chromium/issues/detail?id=536263

[skip sauce]
2015-09-27 01:18:51 -07:00
Chris Rebert
99d243a6b1 Merge pull request #17693 from rclai/patch-1
Update support for Meteor 1.2
2015-09-24 15:36:04 -07:00
Richard Lai
7f45ac255a Update support for Meteor 1.2 2015-09-24 09:06:17 -04:00
Mark Otto
911312d61e Merge pull request #17485 from psychobunny/patch-1
Separated link not actually separated
2015-09-05 21:33:21 -07:00
psychobunny
a035ae2882 Separated link not actually separated 2015-09-05 14:31:17 -04:00
Mark Otto
3293350780 Merge pull request #17332 from twbs/themes-contact
Mention themes contact info in CONTRIBUTING.md
2015-09-01 20:27:19 -07:00
Mark Otto
aba3e40132 Update CONTRIBUTING.md 2015-09-01 20:27:13 -07:00
Supergibbs
9d2bb0faa7 Updated NuGet jQuery dependency (>= 1.9.1 but < 3) to
match https://github.com/twbs/bootstrap/pull/16896
2015-09-01 17:08:25 -07:00
Chris Rebert
4753bfb9aa Mention themes contact info in CONTRIBUTING.md
[skip sauce]
[skip validator]
2015-08-26 02:21:34 -07:00
Supergibbs
86997512ce Changed to only include only *.less files (to match NPM/Bower) 2015-08-20 09:30:30 -07:00
Chris Rebert
108173369d Merge pull request #17012 from kkirsche/patch-5
Have Travis CI use Ruby 2.0.0
2015-08-19 19:30:48 -07:00
Kevin Kirsche
697593b9d1 Have travis use Ruby 2.0.0
Fix #17011

Update .travis.yml
2015-08-18 14:51:00 -04:00
Chris Rebert
767cbef6d4 Merge pull request #16994 from twbs/ios-text-input-bug
Add Wall of Browser Bugs entry for #16988
2015-08-15 19:55:19 -07:00
Chris Rebert
2c4e2fdd6d Add Wall of Browser Bugs entry for #16988
Refs http://wkbug.com/148061
Refs http://openradar.me/22299624
Closes #16988
[skip sauce]
2015-08-15 19:48:45 -07:00
Chris Rebert
c591227602 Travis: Update Savage webhook URL after server move 2015-08-12 20:09:41 -07:00
Kevin Kirsche
4f09bbc4ec Use @carousel-control-font-size for in min-width sm
Fix #16973

As 30px was hard coded for the following attribute values: `width`, `height`, and `font-size`, I have used the same pixel formula for each of these three as the `@carousel-control-width` is a percent value not a pixel value in variables.less
2015-08-12 08:09:18 -04:00
Zac Echola
a1eafb1e46 Adds callout for .icon-next, .icon-prev 2015-08-10 14:32:47 -05:00
Supergibbs
2e59d177aa Cleaner version parsing
Changed LESS to Less and author to Twitter, Inc.
2015-06-26 09:17:24 -07:00
Supergibbs
95013f7d6d NuGet Support - Added .nuspec files and MyGet.ps1 build script plus
status on README
2015-06-25 16:38:40 -07:00
Kevin Kirsche
5387ed62b6 Fix border-radius not being set on left of vertical btn group
While this is correct that it was not being set, I did not notice any visible difference in Chrome on OS X when it is not set.

Fixes #16683
2015-06-22 08:35:47 -04:00
318 changed files with 18499 additions and 14550 deletions

21
.gitignore vendored
View file

@ -1,7 +1,18 @@
# Ignore docs files # Ignore docs files
_gh_pages /.bundle/
_site /_gh_pages/
.ruby-version /_site/
/site/docs/**/dist/
/site/static/**/dist/
/bower_components/
/js/coverage/
/node_modules/
/resources/
/vendor/
/.ruby-version
# Jekyll metadata
/docs/.jekyll-metadata
# Numerous always-ignore extensions # Numerous always-ignore extensions
*.diff *.diff
@ -32,7 +43,3 @@ Thumbs.db
# Komodo # Komodo
.komodotools .komodotools
*.komodoproject *.komodoproject
# Folders to ignore
bower_components
node_modules

View file

@ -1,45 +1,23 @@
language: node_js language: node_js
git: git:
depth: 10 depth: 3
node_js: node_js:
- "0.12" - "6"
before_install:
- travis_retry sudo pip install -r test-infra/requirements.txt
- rvm use 1.9.3 --fuzzy
- export GEMDIR=$(rvm gemdir)
- if [ "$TWBS_TEST" = validate-html ]; then echo "ruby=$(basename $GEMDIR) jekyll=$JEKYLL_VERSION rouge=$ROUGE_VERSION" > pseudo_Gemfile.lock; fi
- "export TRAVIS_COMMIT_MSG=\"$(git log --format=%B --no-merges -n 1)\""
- echo "$TRAVIS_COMMIT_MSG" | grep '\[skip validator\]'; export TWBS_DO_VALIDATOR=$?; true
- echo "$TRAVIS_COMMIT_MSG" | grep '\[skip sauce\]'; export TWBS_DO_SAUCE=$?; true
- if [ "$TRAVIS_REPO_SLUG" = twbs-savage/bootstrap ]; then export TWBS_DO_VALIDATOR=0; fi
install:
- npm install -g grunt-cli
- ./test-infra/s3_cache.py download npm-modules
- if [ "$TWBS_TEST" = validate-html ] && [ $TWBS_DO_VALIDATOR -ne 0 ]; then ./test-infra/s3_cache.py download rubygems; fi
after_script:
- if [ "$TRAVIS_REPO_SLUG" != twbs-savage/bootstrap ] && [ "$TWBS_TEST" = core ]; then ./test-infra/s3_cache.py upload npm-modules; fi
- if [ "$TRAVIS_REPO_SLUG" != twbs-savage/bootstrap ] && [ "$TWBS_TEST" = validate-html ] && [ $TWBS_DO_VALIDATOR -ne 0 ]; then ./test-infra/s3_cache.py upload rubygems; fi
env: env:
global:
- JEKYLL_VERSION="2.5.3"
- ROUGE_VERSION="1.8.0"
- SAUCE_USERNAME="bootstrap"
- secure: "pJkBwnuae9dKU5tEcCqccfS1QQw7/meEcfz63fM7ba7QJNjoA6BaXj08L5Z3Vb5vBmVPwBawxo5Hp0jC0r/Z/O0hGnAmz/Cz09L+cy7dSAZ9x4hvZePSja/UAusaB5ogMoO8l2b773MzgQeSmrLbExr9BWLeqEfjC2hFgdgHLaQ="
- 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="
- secure: "RKWpS+P20b4tG9tawzCMJSmQftoonmC7tJzyGYiHuEM1TcpHALLBcnzKlr/+DiPTfzDJWY4kS8pxfhK4uXOe8OHnhpMNub7LEWtFPePlZIervOJcsOydaQocTKqVVWD6OUubMeQmQ+tZmvmpjoJ1uPPEbFs9ciF7+dv3U5tLUZ0="
- secure: "XswSKBY0HJ/aO9VOBeWlvGpqSFF/DsJmNKz7o5RkJMJX340qe44J929uUNwwOwlv9YrgptzC2W6l8bpmZQV+p6IYs99SoSA8CCaUfIJaqeU9x/UiT5vIHgqaNax+vFJwvzHLpF5v/ggFqFEKCd54gCDasePLTztHeC4oL104iaQ="
- secure: "Dv1HX5dzyTh8gA2YsLI+yWEgh9lnGKPpRDDEYYvm42fjBFziUYfcpvA9g8GXQuU9srY3mhfsZkCDHN0x5n1gliOai5TSjmd5Hh+9UyhvNWE+D8HoUpcFXWoQXvy/if2r25m+ZWi3cqgXkkBOcal3W1ePMtU4ln18NcWyIZ0tEFo="
- secure: "PabpUdG2dE40hHUkMCdxk1e9Ak3BOo0h7Y5/uekosLKOz5N60Xmn/ooyrSkvicLthXO4cfONFhO3/xSVRKQOxlUw4on5i0VuNK+QSqxJk0IDaRSZnTCcC8J7083K0YL+FvMdGQwcYwMY9LiwS8aS014IRkSQjsa+mjo3owP+dOU="
- secure: "G4/f4PVyVi9o6UbZMqw9YFmDu7cHqe9iymiXYd1RcnPXwhWAePX12m0PWMhUj5itJ180PTEddVip8PNOgBdqyrDxEPKkcgAW2EElVAPIKJXVfvDW64UjQ0H7NS7XvF7iLQUJp/XfmR7NJ7tT393AQdh8SGmuQpJhgYbwIWbES/k="
matrix: matrix:
- TWBS_TEST=core - TWBS_TEST=core
- TWBS_TEST=validate-html - TWBS_TEST=validate-html
- TWBS_TEST=sauce-js-unit - TWBS_TEST=browserstack
matrix: before_install:
fast_finish: true - "export TRAVIS_COMMIT_MSG=\"$(git log --format=%B --no-merges -n 1)\""
- echo "$TRAVIS_COMMIT_MSG" | grep '\[skip validator\]'; export TWBS_DO_VALIDATOR=$?; true
- echo "$TRAVIS_COMMIT_MSG" | grep '\[skip browserstack\]'; export TWBS_DO_BROWSERSTACK=$?; true
install:
- bundle install --deployment --jobs=3 --retry=3 --clean
- npm install
cache:
directories:
- node_modules
- vendor/bundle
notifications: notifications:
slack: heybb:iz4wwosL0N0EdaX1gvgkU0NH email: false
webhooks:
- http://savage.twbsapps.com/savage/travis

View file

@ -1,5 +1,5 @@
Bootstrap uses [GitHub's Releases feature](https://github.com/blog/1547-release-your-software) for its changelogs. Bootstrap uses [GitHub's Releases feature](https://blog.github.com/2013-07-02-release-your-software/) for its changelogs.
See [the Releases section of our GitHub project](https://github.com/twbs/bootstrap/releases) for changelogs for each release version of Bootstrap. See [the Releases section of our GitHub project](https://github.com/twbs/bootstrap/releases) for changelogs for each release version of Bootstrap.
Release announcement posts on [the official Bootstrap blog](http://blog.getbootstrap.com) contain summaries of the most noteworthy changes made in each release. Release announcement posts on [the official Bootstrap blog](https://blog.getbootstrap.com/) contain summaries of the most noteworthy changes made in each release.

View file

@ -19,15 +19,23 @@ and [submitting pull requests](#pull-requests), but please respect the following
restrictions: restrictions:
* Please **do not** use the issue tracker for personal support requests. Stack * Please **do not** use the issue tracker for personal support requests. Stack
Overflow ([`twitter-bootstrap-3`](https://stackoverflow.com/questions/tagged/twitter-bootstrap-3) tag), [Slack](https://bootstrap-slack.herokuapp.com/) or [IRC](README.md#community) are better places to get help. Overflow ([`twitter-bootstrap-3`](https://stackoverflow.com/questions/tagged/twitter-bootstrap-3) tag),
[Slack](https://bootstrap-slack.herokuapp.com/) or [IRC](README.md#community) are better places to get help.
* Please **do not** derail or troll issues. Keep the discussion on topic and * Please **do not** derail or troll issues. Keep the discussion on topic and
respect the opinions of others. respect the opinions of others.
* Please **do not** post comments consisting solely of "+1" or ":thumbsup:".
Use [GitHub's "reactions" feature](https://blog.github.com/2016-03-10-add-reactions-to-pull-requests-issues-and-comments/)
instead. We reserve the right to delete comments which violate this rule.
* Please **do not** open issues or pull requests regarding the code in * Please **do not** open issues or pull requests regarding the code in
[`Normalize`](https://github.com/necolas/normalize.css) (open them in [`Normalize`](https://github.com/necolas/normalize.css) (open them in
their respective repositories). their respective repositories).
* Please **do not** open issues regarding the official themes offered on <https://themes.getbootstrap.com/>.
Instead, please email any questions or feedback regarding those themes to `themes AT getbootstrap DOT com`.
## Issues and labels ## Issues and labels
@ -35,7 +43,7 @@ Our bug tracker utilizes several labels to help organize and identify issues. He
- `browser bug` - Issues that are reported to us, but actually are the result of a browser-specific bug. These are diagnosed with reduced test cases and result in an issue opened on that browser's own bug tracker. - `browser bug` - Issues that are reported to us, but actually are the result of a browser-specific bug. These are diagnosed with reduced test cases and result in an issue opened on that browser's own bug tracker.
- `confirmed` - Issues that have been confirmed with a reduced test case and identify a bug in Bootstrap. - `confirmed` - Issues that have been confirmed with a reduced test case and identify a bug in Bootstrap.
- `css` - Issues stemming from our compiled CSS or source Less files. - `css` - Issues stemming from our compiled CSS or source Less/Sass files.
- `customizer` - Issues with our web-based Customizer. - `customizer` - Issues with our web-based Customizer.
- `docs` - Issues for improving or updating our documentation. - `docs` - Issues for improving or updating our documentation.
- `examples` - Issues involving the example templates included in our docs. - `examples` - Issues involving the example templates included in our docs.
@ -55,7 +63,7 @@ Good bug reports are extremely helpful, so thanks!
Guidelines for bug reports: Guidelines for bug reports:
0. **Validate and lint your code** &mdash; [validate your HTML](http://html5.validator.nu) 0. **Validate and lint your code** &mdash; [validate your HTML](https://html5.validator.nu/)
and [lint your HTML](https://github.com/twbs/bootlint) to ensure your and [lint your HTML](https://github.com/twbs/bootlint) to ensure your
problem isn't caused by a simple error in your own code. problem isn't caused by a simple error in your own code.
@ -63,7 +71,7 @@ Guidelines for bug reports:
reported. reported.
2. **Check if the issue has been fixed** &mdash; try to reproduce it using the 2. **Check if the issue has been fixed** &mdash; try to reproduce it using the
latest `master` or development branch in the repository. latest `v3-dev` or development branch in the repository.
3. **Isolate the problem** &mdash; ideally create a [reduced test 3. **Isolate the problem** &mdash; ideally create a [reduced test
case](https://css-tricks.com/reduced-test-cases/) and a live example. case](https://css-tricks.com/reduced-test-cases/) and a live example.
@ -98,23 +106,24 @@ Example:
### Reporting upstream browser bugs ### Reporting upstream browser bugs
Sometimes bugs reported to us are actually caused by bugs in the browser(s) themselves, not bugs in Bootstrap per se. Sometimes bugs reported to us are actually caused by bugs in the browser(s) themselves, not bugs in Bootstrap per se.
When feasible, we aim to report such upstream bugs to the relevant browser vendor(s), and then list them on our [Wall of Browser Bugs](http://getbootstrap.com/browser-bugs/) and [document them in MDN](https://developer.mozilla.org/en-US/docs/Web). When feasible, we aim to report such upstream bugs to the relevant browser vendor(s), and then list them on our [Wall of Browser Bugs](https://getbootstrap.com/docs/3.4/browser-bugs/) and [document them in MDN](https://developer.mozilla.org/en-US/docs/Web).
| Vendor(s) | Browser(s) | Rendering engine | Bug reporting website(s) | Notes | | Vendor(s) | Browser(s) | Rendering engine | Bug reporting website(s) | Notes |
| ------------- | ---------------------------- | ---------------- | ------------------------------------------------------------------------------------- | -------------------------------------------------------- | | ------------- | ---------------------------- | ---------------- | ------------------------------------------------------------------------------------- | -------------------------------------------------------- |
| Mozilla | Firefox | Gecko | https://bugzilla.mozilla.org/enter_bug.cgi | "Core" is normally the right product option to choose. | | Mozilla | Firefox | Gecko | https://bugzilla.mozilla.org/enter_bug.cgi | "Core" is normally the right product option to choose. |
| Apple | Safari | WebKit | https://bugs.webkit.org/enter_bug.cgi?product=WebKit <br> https://bugreport.apple.com | In Apple's bug reporter, choose "Safari" as the product. | | Apple | Safari | WebKit | https://bugs.webkit.org/enter_bug.cgi?product=WebKit <br> https://bugreport.apple.com | In Apple's bug reporter, choose "Safari" as the product. |
| Google, Opera | Chrome, Chromium, Opera v15+ | Blink | https://code.google.com/p/chromium/issues/list | Click the "New issue" button. | | Google, Opera | Chrome, Chromium, Opera v15+ | Blink | https://code.google.com/p/chromium/issues/list | Click the "New issue" button. |
| Microsoft | Internet Explorer | Trident | https://connect.microsoft.com/IE/feedback/LoadSubmitFeedbackForm | | | Microsoft | Edge | EdgeHTML | https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/ | |
### Issues bots
[@twbs-lmvtfy](https://github.com/twbs-lmvtfy) is a Bootstrap bot that hangs out in our GitHub issue tracker and automatically checks for HTML validation errors in live examples (e.g. jsFiddles, JS Bins, Bootplys, Plunks, CodePens, etc.) posted in issue comments. If it finds any errors, it will post a follow-up comment on the issue and point out the errors. If this happens with an example you've posted, please fix the errors and post an updated live example. If you opened a bug report, please check whether the bug still occurs with your revised, valid live example. If the bug no longer occurs, it was probably due to your invalid HTML rather than something in Bootstrap and we'd appreciate it if you could close out the GitHub issue.
## Feature requests ## Feature requests
Feature requests are welcome. But take a moment to find out whether your idea Feature requests are welcome, but please note that they **must target
[Bootstrap v4](https://github.com/twbs/bootstrap/tree/v4-dev),** because
Bootstrap v3 is now in maintenance mode and is closed off to new features.
This is so that we can focus our efforts on Bootstrap v4, the future of the
framework.
Before opening a feature request, please take a moment to find out whether your idea
fits with the scope and aims of the project. It's up to *you* to make a strong fits with the scope and aims of the project. It's up to *you* to make a strong
case to convince the project's developers of the merits of this feature. Please case to convince the project's developers of the merits of this feature. Please
provide as much detail and context as possible. provide as much detail and context as possible.
@ -131,18 +140,26 @@ implementing features, refactoring code, porting to a different language),
otherwise you risk spending a lot of time working on something that the otherwise you risk spending a lot of time working on something that the
project's developers might not want to merge into the project. project's developers might not want to merge into the project.
In particular, **pull requests that add new features to Bootstrap v3 will be
rejected.** Bootstrap v3 is now in maintenance mode and is therefore closed
off to new features, so that we can focus our efforts on Bootstrap v4, the
future of the framework. Pull requests that add new features should target
[Bootstrap v4 (the `v4-dev` git branch)](https://github.com/twbs/bootstrap/tree/v4-dev)
instead, where they will be welcomed and duly considered.
Please adhere to the [coding guidelines](#code-guidelines) used throughout the Please adhere to the [coding guidelines](#code-guidelines) used throughout the
project (indentation, accurate comments, etc.) and any other requirements project (indentation, accurate comments, etc.) and any other requirements
(such as test coverage). (such as test coverage).
**Do not edit `bootstrap.css`, `bootstrap-theme.css`, or `bootstrap.js` **Do not edit `bootstrap.css`, `bootstrap-theme.css`, or `bootstrap.js`
directly!** Those files are automatically generated. You should edit the directly!** Those files are automatically generated. You should edit the
source files in [`/bootstrap/less/`](https://github.com/twbs/bootstrap/tree/master/less) source files in [`/bootstrap/less/`](https://github.com/twbs/bootstrap/tree/v3-dev/less),
and/or [`/bootstrap/js/`](https://github.com/twbs/bootstrap/tree/master/js) instead. [`/bootstrap/scss/`](https://github.com/twbs/bootstrap/tree/v4-dev/scss) (for Bootstrap v4),
and/or [`/bootstrap/js/`](https://github.com/twbs/bootstrap/tree/v3-dev/js) instead.
Similarly, when contributing to Bootstrap's documentation, you should edit the Similarly, when contributing to Bootstrap's documentation, you should edit the
documentation source files in documentation source files in
[the `/bootstrap/docs/` directory of the `master` branch](https://github.com/twbs/bootstrap/tree/master/docs). [the `/bootstrap/docs/` directory of the `v3-dev` branch](https://github.com/twbs/bootstrap/tree/v3-dev/docs).
**Do not edit the `gh-pages` branch.** That branch is generated from the **Do not edit the `gh-pages` branch.** That branch is generated from the
documentation source files and is managed separately by the Bootstrap Core Team. documentation source files and is managed separately by the Bootstrap Core Team.
@ -164,8 +181,8 @@ included in the project:
2. If you cloned a while ago, get the latest changes from upstream: 2. If you cloned a while ago, get the latest changes from upstream:
```bash ```bash
git checkout master git checkout v3-dev
git pull upstream master git pull upstream v3-dev
``` ```
3. Create a new topic branch (off the main project development branch) to 3. Create a new topic branch (off the main project development branch) to
@ -177,14 +194,14 @@ included in the project:
4. Commit your changes in logical chunks. Please adhere to these [git commit 4. Commit your changes in logical chunks. Please adhere to these [git commit
message guidelines](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html) message guidelines](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html)
or your code is unlikely be merged into the main project. Use Git's or your code is unlikely to be merged into the main project. Use Git's
[interactive rebase](https://help.github.com/articles/interactive-rebase) [interactive rebase](https://help.github.com/articles/about-git-rebase/)
feature to tidy up your commits before making them public. feature to tidy up your commits before making them public.
5. Locally merge (or rebase) the upstream development branch into your topic branch: 5. Locally merge (or rebase) the upstream development branch into your topic branch:
```bash ```bash
git pull [--rebase] upstream master git pull [--rebase] upstream v3-dev
``` ```
6. Push your topic branch up to your fork: 6. Push your topic branch up to your fork:
@ -194,7 +211,7 @@ included in the project:
``` ```
7. [Open a Pull Request](https://help.github.com/articles/using-pull-requests/) 7. [Open a Pull Request](https://help.github.com/articles/using-pull-requests/)
with a clear title and description against the `master` branch. with a clear title and description against the `v3-dev` branch.
**IMPORTANT**: By submitting a patch, you agree to allow the project owners to **IMPORTANT**: By submitting a patch, you agree to allow the project owners to
license your work under the terms of the [MIT License](LICENSE) (if it license your work under the terms of the [MIT License](LICENSE) (if it
@ -202,16 +219,6 @@ includes code changes) and under the terms of the
[Creative Commons Attribution 3.0 Unported License](docs/LICENSE) [Creative Commons Attribution 3.0 Unported License](docs/LICENSE)
(if it includes documentation changes). (if it includes documentation changes).
### Pull request bots
[@twbs-rorschach](https://github.com/twbs-rorschach) is a Bootstrap bot that hangs out in our GitHub issue tracker and automatically checks all pull requests for a few simple common mistakes. It's possible that Rorschach might leave a comment on your pull request and then close it. If that happens, simply fix the problem(s) mentioned in the comment (there should be link(s) in the comment explaining the problem(s) in detail) and then either:
* Push the revised version to your pull request's branch and post a comment on the pull request saying that you've fixed the problem(s). One of the Bootstrap Core Team members will then come along and reopen your pull request.
* Or you can just open a new pull request for your revised version.
[@twbs-savage](https://github.com/twbs-savage) is a Bootstrap bot that automatically runs cross-browser tests (via [Sauce](https://saucelabs.com) and Travis CI) on JavaScript pull requests. Savage will leave a comment on pull requests stating whether cross-browser JS tests passed or failed, with a link to the full Travis build details. If your pull request fails, check the Travis log to see which browser + OS combinations failed. Each browser test in the Travis log includes a link to a Sauce page with details about the test. On those details pages, you can watch a screencast of the test run to see exactly which unit tests failed.
## Code guidelines ## Code guidelines
### HTML ### HTML
@ -226,8 +233,8 @@ includes code changes) and under the terms of the
[Adhere to the Code Guide.](http://codeguide.co/#css) [Adhere to the Code Guide.](http://codeguide.co/#css)
- When feasible, default color palettes should comply with [WCAG color contrast guidelines](http://www.w3.org/TR/WCAG20/#visual-audio-contrast). - When feasible, default color palettes should comply with [WCAG color contrast guidelines](https://www.w3.org/TR/WCAG20/#visual-audio-contrast).
- Except in rare cases, don't remove default `:focus` styles (via e.g. `outline: none;`) without providing alternative styles. See [this A11Y Project post](http://a11yproject.com/posts/never-remove-css-outlines/) for more details. - Except in rare cases, don't remove default `:focus` styles (via e.g. `outline: none;`) without providing alternative styles. See [this A11Y Project post](https://a11yproject.com/posts/never-remove-css-outlines/) for more details.
### JS ### JS
@ -235,6 +242,7 @@ includes code changes) and under the terms of the
- 2 spaces (no tabs) - 2 spaces (no tabs)
- strict mode - strict mode
- "Attractive" - "Attractive"
- Don't use [jQuery event alias convenience methods](https://github.com/jquery/jquery/blob/master/src/event/alias.js) (such as `$().focus()`). Instead, use [`$().trigger(eventType, ...)`](https://api.jquery.com/trigger/) or [`$().on(eventType, ...)`](https://api.jquery.com/on/), depending on whether you're firing an event or listening for an event. (For example, `$().trigger('focus')` or `$().on('focus', function (event) { /* handle focus event */ })`) We do this to be compatible with custom builds of jQuery where the event aliases module has been excluded.
### Checking coding style ### Checking coding style

7
Gemfile Normal file
View file

@ -0,0 +1,7 @@
source 'https://rubygems.org'
group :development, :test do
gem 'jekyll', '~> 3.8.6'
gem 'jekyll-sitemap', '~> 1.3.1'
gem 'wdm', '~> 0.1.1', :install_if => Gem.win_platform?
end

71
Gemfile.lock Normal file
View file

@ -0,0 +1,71 @@
GEM
remote: https://rubygems.org/
specs:
addressable (2.6.0)
public_suffix (>= 2.0.2, < 4.0)
colorator (1.1.0)
concurrent-ruby (1.1.5)
em-websocket (0.5.1)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0.6.0)
eventmachine (1.2.7)
eventmachine (1.2.7-x64-mingw32)
ffi (1.11.1)
ffi (1.11.1-x64-mingw32)
forwardable-extended (2.6.0)
http_parser.rb (0.6.0)
i18n (0.9.5)
concurrent-ruby (~> 1.0)
jekyll (3.8.6)
addressable (~> 2.4)
colorator (~> 1.0)
em-websocket (~> 0.5)
i18n (~> 0.7)
jekyll-sass-converter (~> 1.0)
jekyll-watch (~> 2.0)
kramdown (~> 1.14)
liquid (~> 4.0)
mercenary (~> 0.3.3)
pathutil (~> 0.9)
rouge (>= 1.7, < 4)
safe_yaml (~> 1.0)
jekyll-sass-converter (1.5.2)
sass (~> 3.4)
jekyll-sitemap (1.3.1)
jekyll (>= 3.7, < 5.0)
jekyll-watch (2.2.1)
listen (~> 3.0)
kramdown (1.17.0)
liquid (4.0.3)
listen (3.1.5)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
ruby_dep (~> 1.2)
mercenary (0.3.6)
pathutil (0.16.2)
forwardable-extended (~> 2.6)
public_suffix (3.1.1)
rb-fsevent (0.10.3)
rb-inotify (0.10.0)
ffi (~> 1.0)
rouge (3.6.0)
ruby_dep (1.5.0)
safe_yaml (1.0.5)
sass (3.7.4)
sass-listen (~> 4.0.0)
sass-listen (4.0.0)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
wdm (0.1.1)
PLATFORMS
ruby
x64-mingw32
DEPENDENCIES
jekyll (~> 3.8.6)
jekyll-sitemap (~> 1.3.1)
wdm (~> 0.1.1)
BUNDLED WITH
1.17.3

View file

@ -1,8 +1,8 @@
/*! /*!
* Bootstrap's Gruntfile * Bootstrap's Gruntfile
* http://getbootstrap.com * https://getbootstrap.com/
* Copyright 2013-2015 Twitter, Inc. * Copyright 2013-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/v3-dev/LICENSE)
*/ */
module.exports = function (grunt) { module.exports = function (grunt) {
@ -17,7 +17,6 @@ module.exports = function (grunt) {
var fs = require('fs'); var fs = require('fs');
var path = require('path'); var path = require('path');
var npmShrinkwrap = require('npm-shrinkwrap');
var generateGlyphiconsData = require('./grunt/bs-glyphicons-data-generator.js'); var generateGlyphiconsData = require('./grunt/bs-glyphicons-data-generator.js');
var BsLessdocParser = require('./grunt/bs-lessdoc-parser.js'); var BsLessdocParser = require('./grunt/bs-lessdoc-parser.js');
var getLessVarsData = function () { var getLessVarsData = function () {
@ -105,7 +104,7 @@ module.exports = function (grunt) {
banner: '<%= banner %>\n<%= jqueryCheck %>\n<%= jqueryVersionCheck %>', banner: '<%= banner %>\n<%= jqueryCheck %>\n<%= jqueryVersionCheck %>',
stripBanners: false stripBanners: false
}, },
bootstrap: { core: {
src: [ src: [
'js/transition.js', 'js/transition.js',
'js/alert.js', 'js/alert.js',
@ -126,78 +125,90 @@ module.exports = function (grunt) {
uglify: { uglify: {
options: { options: {
compress: { compress: true,
warnings: false
},
mangle: true, mangle: true,
preserveComments: 'some' ie8: true,
output: {
comments: /^!|@preserve|@license|@cc_on/i
}
}, },
core: { core: {
src: '<%= concat.bootstrap.dest %>', src: '<%= concat.core.dest %>',
dest: 'dist/js/<%= pkg.name %>.min.js' dest: 'dist/js/<%= pkg.name %>.min.js'
}, },
customize: { customize: {
src: configBridge.paths.customizerJs, src: configBridge.paths.customizerJs,
dest: 'docs/assets/js/customize.min.js' dest: 'docs/assets/js/customize.min.js'
}, },
docsJs: { docs: {
src: configBridge.paths.docsJs, src: configBridge.paths.docsJs,
dest: 'docs/assets/js/docs.min.js' dest: 'docs/assets/js/docs.min.js'
} }
}, },
qunit: {
options: {
inject: 'js/tests/unit/phantom.js'
},
files: 'js/tests/index.html'
},
less: { less: {
compileCore: {
options: { options: {
ieCompat: true,
strictMath: true, strictMath: true,
sourceMap: true, sourceMap: true,
outputSourceFiles: true, outputSourceFiles: true
},
core: {
options: {
sourceMapURL: '<%= pkg.name %>.css.map', sourceMapURL: '<%= pkg.name %>.css.map',
sourceMapFilename: 'dist/css/<%= pkg.name %>.css.map' sourceMapFilename: 'dist/css/<%= pkg.name %>.css.map'
}, },
src: 'less/bootstrap.less', src: 'less/bootstrap.less',
dest: 'dist/css/<%= pkg.name %>.css' dest: 'dist/css/<%= pkg.name %>.css'
}, },
compileTheme: { theme: {
options: { options: {
strictMath: true,
sourceMap: true,
outputSourceFiles: true,
sourceMapURL: '<%= pkg.name %>-theme.css.map', sourceMapURL: '<%= pkg.name %>-theme.css.map',
sourceMapFilename: 'dist/css/<%= pkg.name %>-theme.css.map' sourceMapFilename: 'dist/css/<%= pkg.name %>-theme.css.map'
}, },
src: 'less/theme.less', src: 'less/theme.less',
dest: 'dist/css/<%= pkg.name %>-theme.css' dest: 'dist/css/<%= pkg.name %>-theme.css'
},
docs: {
options: {
sourceMapURL: 'docs.css.map',
sourceMapFilename: 'docs/assets/css/docs.css.map'
},
src: 'docs/assets/less/docs.less',
dest: 'docs/assets/css/docs.css'
},
docsIe: {
options: {
sourceMap: false
},
src: 'docs/assets/less/ie10-viewport-bug-workaround.less',
dest: 'docs/assets/css/ie10-viewport-bug-workaround.css'
} }
}, },
autoprefixer: { postcss: {
options: { options: {
browsers: configBridge.config.autoprefixerBrowsers map: {
inline: false,
sourcesContent: true
},
processors: [
require('autoprefixer')(configBridge.config.autoprefixer)
]
}, },
core: { core: {
options: {
map: true
},
src: 'dist/css/<%= pkg.name %>.css' src: 'dist/css/<%= pkg.name %>.css'
}, },
theme: { theme: {
options: {
map: true
},
src: 'dist/css/<%= pkg.name %>-theme.css' src: 'dist/css/<%= pkg.name %>-theme.css'
}, },
docs: { docs: {
src: ['docs/assets/css/src/docs.css'] src: 'docs/assets/css/docs.css'
}, },
examples: { examples: {
options: {
map: false
},
expand: true, expand: true,
cwd: 'docs/examples/', cwd: 'docs/examples/',
src: ['**/*.css'], src: ['**/*.css'],
@ -205,78 +216,51 @@ module.exports = function (grunt) {
} }
}, },
csslint: { stylelint: {
options: { options: {
csslintrc: 'less/.csslintrc' configFile: 'grunt/.stylelintrc',
reportNeedlessDisables: false
}, },
dist: [ dist: [
'dist/css/bootstrap.css', 'less/**/*.less'
'dist/css/bootstrap-theme.css' ],
docs: [
'docs/assets/less/**/*.less'
], ],
examples: [ examples: [
'docs/examples/**/*.css' 'docs/examples/**/*.css'
], ]
docs: {
options: {
ids: false,
'overqualified-elements': false
},
src: 'docs/assets/css/src/docs.css'
}
}, },
cssmin: { cssmin: {
options: { options: {
// TODO: disable `zeroUnits` optimization once clean-css 3.2 is released
// and then simplify the fix for https://github.com/twbs/bootstrap/issues/14837 accordingly
compatibility: 'ie8', compatibility: 'ie8',
keepSpecialComments: '*',
sourceMap: true, sourceMap: true,
advanced: false sourceMapInlineSources: true,
level: {
1: {
specialComments: 'all'
}
}
}, },
minifyCore: { core: {
src: 'dist/css/<%= pkg.name %>.css', src: 'dist/css/<%= pkg.name %>.css',
dest: 'dist/css/<%= pkg.name %>.min.css' dest: 'dist/css/<%= pkg.name %>.min.css'
}, },
minifyTheme: { theme: {
src: 'dist/css/<%= pkg.name %>-theme.css', src: 'dist/css/<%= pkg.name %>-theme.css',
dest: 'dist/css/<%= pkg.name %>-theme.min.css' dest: 'dist/css/<%= pkg.name %>-theme.min.css'
}, },
docs: { docs: {
src: [ src: 'docs/assets/css/docs.css',
'docs/assets/css/src/pygments-manni.css',
'docs/assets/css/src/docs.css'
],
dest: 'docs/assets/css/docs.min.css' dest: 'docs/assets/css/docs.min.css'
} }
}, },
csscomb: {
options: {
config: 'less/.csscomb.json'
},
dist: {
expand: true,
cwd: 'dist/css/',
src: ['*.css', '!*.min.css'],
dest: 'dist/css/'
},
examples: {
expand: true,
cwd: 'docs/examples/',
src: '**/*.css',
dest: 'docs/examples/'
},
docs: {
src: 'docs/assets/css/src/docs.css',
dest: 'docs/assets/css/src/docs.css'
}
},
copy: { copy: {
fonts: { fonts: {
expand: true, expand: true,
src: 'fonts/*', src: 'fonts/**',
dest: 'dist/' dest: 'dist/'
}, },
docs: { docs: {
@ -300,9 +284,16 @@ module.exports = function (grunt) {
jekyll: { jekyll: {
options: { options: {
config: '_config.yml' bundleExec: true,
config: '_config.yml',
incremental: false
}, },
docs: {}, docs: {},
netlify: {
options: {
raw: 'github: true\nbaseurl: ""\nnetlify: true'
}
},
github: { github: {
options: { options: {
raw: 'github: true' raw: 'github: true'
@ -310,37 +301,17 @@ module.exports = function (grunt) {
} }
}, },
htmlmin: { pug: {
dist: {
options: {
collapseWhitespace: true,
conservativeCollapse: true,
minifyCSS: true,
minifyJS: true,
removeAttributeQuotes: true,
removeComments: true
},
expand: true,
cwd: '_gh_pages',
dest: '_gh_pages',
src: [
'**/*.html',
'!examples/**/*.html'
]
}
},
jade: {
options: { options: {
pretty: true, pretty: true,
data: getLessVarsData data: getLessVarsData
}, },
customizerVars: { customizerVars: {
src: 'docs/_jade/customizer-variables.jade', src: 'docs/_pug/customizer-variables.pug',
dest: 'docs/_includes/customizer-variables.html' dest: 'docs/_includes/customizer-variables.html'
}, },
customizerNav: { customizerNav: {
src: 'docs/_jade/customizer-nav.jade', src: 'docs/_pug/customizer-nav.pug',
dest: 'docs/_includes/nav/customize.html' dest: 'docs/_includes/nav/customize.html'
} }
}, },
@ -348,86 +319,40 @@ module.exports = function (grunt) {
htmllint: { htmllint: {
options: { options: {
ignore: [ ignore: [
'Attribute "autocomplete" not allowed on element "button" at this point.',
'Attribute "autocomplete" not allowed on element "input" at this point.',
'Element "img" is missing required attribute "src".' 'Element "img" is missing required attribute "src".'
] ],
noLangDetect: true
}, },
src: '_gh_pages/**/*.html' src: ['_gh_pages/**/*.html', 'js/tests/**/*.html']
}, },
watch: { watch: {
src: { src: {
files: '<%= jshint.core.src %>', files: '<%= jshint.core.src %>',
tasks: ['jshint:core', 'qunit', 'concat'] tasks: ['jshint:core', 'exec:karma', 'concat']
}, },
test: { test: {
files: '<%= jshint.test.src %>', files: '<%= jshint.test.src %>',
tasks: ['jshint:test', 'qunit'] tasks: ['jshint:test', 'exec:karma']
}, },
less: { less: {
files: 'less/**/*.less', files: 'less/**/*.less',
tasks: 'less' tasks: ['less', 'copy']
}
}, },
docs: {
sed: { files: 'docs/assets/less/**/*.less',
versionNumber: { tasks: ['less']
pattern: (function () {
var old = grunt.option('oldver');
return old ? RegExp.quote(old) : old;
})(),
replacement: grunt.option('newver'),
exclude: [
'dist/fonts',
'docs/assets',
'fonts',
'js/tests/vendor',
'node_modules',
'test-infra'
],
recursive: true
}
},
'saucelabs-qunit': {
all: {
options: {
build: process.env.TRAVIS_JOB_ID,
throttled: 10,
maxRetries: 3,
maxPollRetries: 4,
urls: ['http://127.0.0.1:3000/js/tests/index.html?hidepassed'],
browsers: grunt.file.readYAML('grunt/sauce_browsers.yml')
}
} }
}, },
exec: { exec: {
npmUpdate: { browserstack: {
command: 'npm update' command: 'cross-env BROWSER=true karma start grunt/karma.conf.js'
}
}, },
karma: {
compress: { command: 'karma start grunt/karma.conf.js'
main: {
options: {
archive: 'bootstrap-<%= pkg.version %>-dist.zip',
mode: 'zip',
level: 9,
pretty: true
},
files: [
{
expand: true,
cwd: 'dist/',
src: ['**'],
dest: 'bootstrap-<%= pkg.version %>-dist'
}
]
} }
} }
}); });
@ -442,16 +367,14 @@ module.exports = function (grunt) {
return !process.env.TWBS_TEST || process.env.TWBS_TEST === subset; return !process.env.TWBS_TEST || process.env.TWBS_TEST === subset;
}; };
var isUndefOrNonZero = function (val) { var isUndefOrNonZero = function (val) {
return val === undefined || val !== '0'; return typeof val === 'undefined' || val !== '0';
}; };
// Test task. // Test task.
var testSubtasks = []; var testSubtasks = [];
// Skip core tests if running a different subset of the test suite // Skip core tests if running a different subset of the test suite
if (runSubset('core') && if (runSubset('core')) {
// Skip core tests if this is a Savage build testSubtasks = testSubtasks.concat(['dist-css', 'dist-js', 'stylelint:dist', 'test-js', 'docs']);
process.env.TRAVIS_REPO_SLUG !== 'twbs-savage/bootstrap') {
testSubtasks = testSubtasks.concat(['dist-css', 'dist-js', 'csslint:dist', 'test-js', 'docs']);
} }
// Skip HTML validation if running a different subset of the test suite // Skip HTML validation if running a different subset of the test suite
if (runSubset('validate-html') && if (runSubset('validate-html') &&
@ -459,24 +382,23 @@ module.exports = function (grunt) {
isUndefOrNonZero(process.env.TWBS_DO_VALIDATOR)) { isUndefOrNonZero(process.env.TWBS_DO_VALIDATOR)) {
testSubtasks.push('validate-html'); testSubtasks.push('validate-html');
} }
// Only run Sauce Labs tests if there's a Sauce access key // Only run BrowserStack tests if there's a BrowserStack access key
if (typeof process.env.SAUCE_ACCESS_KEY !== 'undefined' && if (typeof process.env.BROWSER_STACK_USERNAME !== 'undefined' &&
// Skip Sauce if running a different subset of the test suite // Skip BrowserStack if running a different subset of the test suite
runSubset('sauce-js-unit') && runSubset('browserstack') &&
// Skip Sauce on Travis when [skip sauce] is in the commit message // Skip BrowserStack on Travis when [skip browserstack] is in the commit message
isUndefOrNonZero(process.env.TWBS_DO_SAUCE)) { isUndefOrNonZero(process.env.TWBS_DO_BROWSERSTACK)) {
testSubtasks.push('connect'); testSubtasks.push('exec:browserstack');
testSubtasks.push('saucelabs-qunit');
} }
grunt.registerTask('test', testSubtasks); grunt.registerTask('test', testSubtasks);
grunt.registerTask('test-js', ['jshint:core', 'jshint:test', 'jshint:grunt', 'jscs:core', 'jscs:test', 'jscs:grunt', 'qunit']); grunt.registerTask('test-js', ['jshint:core', 'jshint:test', 'jshint:grunt', 'jscs:core', 'jscs:test', 'jscs:grunt', 'exec:karma']);
// JS distribution task. // JS distribution task.
grunt.registerTask('dist-js', ['concat', 'uglify:core', 'commonjs']); grunt.registerTask('dist-js', ['concat', 'uglify:core', 'commonjs']);
// CSS distribution task. // CSS distribution task.
grunt.registerTask('less-compile', ['less:compileCore', 'less:compileTheme']); grunt.registerTask('dist-css', ['less:core', 'less:theme', 'postcss:core', 'postcss:theme', 'cssmin:core', 'cssmin:theme']);
grunt.registerTask('dist-css', ['less-compile', 'autoprefixer:core', 'autoprefixer:theme', 'csscomb:dist', 'cssmin:minifyCore', 'cssmin:minifyTheme']);
// Full distribution task. // Full distribution task.
grunt.registerTask('dist', ['clean:dist', 'dist-css', 'copy:fonts', 'dist-js']); grunt.registerTask('dist', ['clean:dist', 'dist-css', 'copy:fonts', 'dist-js']);
@ -484,49 +406,30 @@ module.exports = function (grunt) {
// Default task. // Default task.
grunt.registerTask('default', ['clean:dist', 'copy:fonts', 'test']); grunt.registerTask('default', ['clean:dist', 'copy:fonts', 'test']);
// Version numbering task. grunt.registerTask('build-glyphicons-data', function () {
// grunt change-version-number --oldver=A.B.C --newver=X.Y.Z generateGlyphiconsData.call(this, grunt);
// This can be overzealous, so its changes should always be manually reviewed! });
grunt.registerTask('change-version-number', 'sed');
grunt.registerTask('build-glyphicons-data', function () { generateGlyphiconsData.call(this, grunt); });
// task for building customizer // task for building customizer
grunt.registerTask('build-customizer', ['build-customizer-html', 'build-raw-files']); grunt.registerTask('build-customizer', ['build-customizer-html', 'build-raw-files']);
grunt.registerTask('build-customizer-html', 'jade'); grunt.registerTask('build-customizer-html', 'pug');
grunt.registerTask('build-raw-files', 'Add scripts/less files to customizer.', function () { grunt.registerTask('build-raw-files', 'Add scripts/less files to customizer.', function () {
var banner = grunt.template.process('<%= banner %>'); var banner = grunt.template.process('<%= banner %>');
generateRawFiles(grunt, banner); generateRawFiles(grunt, banner);
}); });
grunt.registerTask('commonjs', 'Generate CommonJS entrypoint module in dist dir.', function () { grunt.registerTask('commonjs', 'Generate CommonJS entrypoint module in dist dir.', function () {
var srcFiles = grunt.config.get('concat.bootstrap.src'); var srcFiles = grunt.config.get('concat.core.src');
var destFilepath = 'dist/js/npm.js'; var destFilepath = 'dist/js/npm.js';
generateCommonJSModule(grunt, srcFiles, destFilepath); generateCommonJSModule(grunt, srcFiles, destFilepath);
}); });
// Docs task. // Docs task.
grunt.registerTask('docs-css', ['autoprefixer:docs', 'autoprefixer:examples', 'csscomb:docs', 'csscomb:examples', 'cssmin:docs']); grunt.registerTask('docs-css', ['less:docs', 'less:docsIe', 'postcss:docs', 'postcss:examples', 'cssmin:docs']);
grunt.registerTask('lint-docs-css', ['csslint:docs', 'csslint:examples']); grunt.registerTask('lint-docs-css', ['stylelint:docs', 'stylelint:examples']);
grunt.registerTask('docs-js', ['uglify:docsJs', 'uglify:customize']); grunt.registerTask('docs-js', ['uglify:docs', 'uglify:customize']);
grunt.registerTask('lint-docs-js', ['jshint:assets', 'jscs:assets']); grunt.registerTask('lint-docs-js', ['jshint:assets', 'jscs:assets']);
grunt.registerTask('docs', ['docs-css', 'lint-docs-css', 'docs-js', 'lint-docs-js', 'clean:docs', 'copy:docs', 'build-glyphicons-data', 'build-customizer']); grunt.registerTask('docs', ['docs-css', 'lint-docs-css', 'docs-js', 'lint-docs-js', 'clean:docs', 'copy:docs', 'build-glyphicons-data', 'build-customizer']);
grunt.registerTask('prep-release', ['dist', 'docs', 'jekyll:github', 'htmlmin', 'compress']); grunt.registerTask('prep-release', ['dist', 'docs', 'jekyll:github']);
// Task for updating the cached npm packages used by the Travis build (which are controlled by test-infra/npm-shrinkwrap.json).
// This task should be run and the updated file should be committed whenever Bootstrap's dependencies change.
grunt.registerTask('update-shrinkwrap', ['exec:npmUpdate', '_update-shrinkwrap']);
grunt.registerTask('_update-shrinkwrap', function () {
var done = this.async();
npmShrinkwrap({ dev: true, dirname: __dirname }, function (err) {
if (err) {
grunt.fail.warn(err);
}
var dest = 'test-infra/npm-shrinkwrap.json';
fs.renameSync('npm-shrinkwrap.json', dest);
grunt.log.writeln('File ' + dest.cyan + ' updated.');
done();
});
});
}; };

22
ISSUE_TEMPLATE.md Normal file
View file

@ -0,0 +1,22 @@
Before opening an issue:
- [Search for duplicate or closed issues](https://github.com/twbs/bootstrap/issues?utf8=%E2%9C%93&q=is%3Aissue)
- [Validate](https://validator.w3.org/nu/) and [lint](https://github.com/twbs/bootlint#in-the-browser) any HTML to avoid common problems
- Prepare a [reduced test case](https://css-tricks.com/reduced-test-cases/) for any bugs
- Read the [contributing guidelines](https://github.com/twbs/bootstrap/blob/v3-dev/CONTRIBUTING.md)
When asking general "how to" questions:
- Please do not open an issue here
- Instead, ask for help on [StackOverflow, IRC, or Slack](https://github.com/twbs/bootstrap/blob/v3-dev/README.md#community)
When reporting a bug, include:
- Operating system and version (Windows, Mac OS X, Android, iOS, Win10 Mobile)
- Browser and version (Chrome, Firefox, Safari, IE, MS Edge, Opera 15+, Android Browser)
- Reduced test cases and potential fixes using [JS Bin](https://jsbin.com/)
When suggesting a feature, include:
- As much detail as possible for what we should add and why it's important to Bootstrap
- Relevant links to prior art, screenshots, or live demos whenever possible

View file

@ -1,6 +1,6 @@
The MIT License (MIT) The MIT License (MIT)
Copyright (c) 2011-2015 Twitter, Inc Copyright (c) 2011-2019 Twitter, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

View file

@ -1,15 +1,16 @@
# [Bootstrap](http://getbootstrap.com) # [Bootstrap](https://getbootstrap.com/)
[![Slack](https://bootstrap-slack.herokuapp.com/badge.svg)](https://bootstrap-slack.herokuapp.com) [![Slack](https://bootstrap-slack.herokuapp.com/badge.svg)](https://bootstrap-slack.herokuapp.com/)
![Bower version](https://img.shields.io/bower/v/bootstrap.svg) ![Bower version](https://img.shields.io/bower/v/bootstrap.svg)
[![npm version](https://img.shields.io/npm/v/bootstrap.svg)](https://www.npmjs.com/package/bootstrap) [![npm version](https://img.shields.io/npm/v/bootstrap.svg)](https://www.npmjs.com/package/bootstrap)
[![Build Status](https://img.shields.io/travis/twbs/bootstrap/master.svg)](https://travis-ci.org/twbs/bootstrap) [![Build Status](https://img.shields.io/travis/twbs/bootstrap/v3-dev.svg)](https://travis-ci.org/twbs/bootstrap)
[![devDependency Status](https://img.shields.io/david/dev/twbs/bootstrap.svg)](https://david-dm.org/twbs/bootstrap#info=devDependencies) [![devDependency Status](https://img.shields.io/david/dev/twbs/bootstrap.svg)](https://david-dm.org/twbs/bootstrap#info=devDependencies)
[![Selenium Test Status](https://saucelabs.com/browser-matrix/bootstrap.svg)](https://saucelabs.com/u/bootstrap) [![NuGet](https://img.shields.io/nuget/v/bootstrap.svg)](https://www.nuget.org/packages/Bootstrap)
Bootstrap is a sleek, intuitive, and powerful front-end framework for faster and easier web development, created by [Mark Otto](https://twitter.com/mdo) and [Jacob Thornton](https://twitter.com/fat), and maintained by the [core team](https://github.com/orgs/twbs/people) with the massive support and involvement of the community. Bootstrap is a sleek, intuitive, and powerful front-end framework for faster and easier web development, created by [Mark Otto](https://twitter.com/mdo) and [Jacob Thornton](https://twitter.com/fat), and maintained by the [core team](https://github.com/orgs/twbs/people) with the massive support and involvement of the community.
To get started, check out <http://getbootstrap.com>! To get started, check out <https://getbootstrap.com/>!
## Table of contents ## Table of contents
@ -20,20 +21,22 @@ To get started, check out <http://getbootstrap.com>!
* [Community](#community) * [Community](#community)
* [Versioning](#versioning) * [Versioning](#versioning)
* [Creators](#creators) * [Creators](#creators)
* [Thanks](#thanks)
* [Copyright and license](#copyright-and-license) * [Copyright and license](#copyright-and-license)
## Quick start ## Quick start
Several quick start options are available: Several quick start options are available:
* [Download the latest release](https://github.com/twbs/bootstrap/archive/v3.3.5.zip). * [Download the latest release](https://github.com/twbs/bootstrap/archive/v3.4.1.zip).
* Clone the repo: `git clone https://github.com/twbs/bootstrap.git`. * Clone the repo: `git clone https://github.com/twbs/bootstrap.git`.
* Install with [Bower](http://bower.io): `bower install bootstrap`. * Install with [Bower](https://bower.io/): `bower install bootstrap`.
* Install with [npm](https://www.npmjs.com): `npm install bootstrap`. * Install with [npm](https://www.npmjs.com/): `npm install bootstrap@3`.
* Install with [Meteor](https://www.meteor.com): `meteor add twbs:bootstrap`. * Install with [Meteor](https://www.meteor.com/): `meteor add twbs:bootstrap`.
* Install with [Composer](https://getcomposer.org): `composer require twbs/bootstrap`. * Install with [Composer](https://getcomposer.org/): `composer require twbs/bootstrap`.
Read the [Getting started page](http://getbootstrap.com/getting-started/) for information on the framework contents, templates and examples, and more. Read the [Getting started page](https://getbootstrap.com/docs/3.4/getting-started/) for information on the framework contents, templates and examples, and more.
### What's included ### What's included
@ -61,45 +64,45 @@ bootstrap/
└── glyphicons-halflings-regular.woff2 └── glyphicons-halflings-regular.woff2
``` ```
We provide compiled CSS and JS (`bootstrap.*`), as well as compiled and minified CSS and JS (`bootstrap.min.*`). CSS [source maps](https://developer.chrome.com/devtools/docs/css-preprocessors) (`bootstrap.*.map`) are available for use with certain browsers' developer tools. Fonts from Glyphicons are included, as is the optional Bootstrap theme. We provide compiled CSS and JS (`bootstrap.*`), as well as compiled and minified CSS and JS (`bootstrap.min.*`). CSS [source maps](https://developers.google.com/web/tools/chrome-devtools/javascript/source-maps) (`bootstrap.*.map`) are available for use with certain browsers' developer tools. Fonts from Glyphicons are included, as is the optional Bootstrap theme.
## Bugs and feature requests ## Bugs and feature requests
Have a bug or a feature request? Please first read the [issue guidelines](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md#using-the-issue-tracker) and search for existing and closed issues. If your problem or idea is not addressed yet, [please open a new issue](https://github.com/twbs/bootstrap/issues/new). Have a bug or a feature request? Please first read the [issue guidelines](https://github.com/twbs/bootstrap/blob/v3-dev/CONTRIBUTING.md#using-the-issue-tracker) and search for existing and closed issues. If your problem or idea is not addressed yet, [please open a new issue](https://github.com/twbs/bootstrap/issues/new).
Note that **feature requests must target [Bootstrap v4](https://github.com/twbs/bootstrap/tree/v4-dev),** because Bootstrap v3 is now in maintenance mode and is closed off to new features. This is so that we can focus our efforts on Bootstrap v4.
## Documentation ## Documentation
Bootstrap's documentation, included in this repo in the root directory, is built with [Jekyll](http://jekyllrb.com) and publicly hosted on GitHub Pages at <http://getbootstrap.com>. The docs may also be run locally. Bootstrap's documentation, included in this repo in the root directory, is built with [Jekyll](https://jekyllrb.com/) and publicly hosted on GitHub Pages at <https://getbootstrap.com/>. The docs may also be run locally.
### Running documentation locally ### Running documentation locally
1. If necessary, [install Jekyll](http://jekyllrb.com/docs/installation) (requires v2.5.x). 1. If necessary, [install Jekyll](https://jekyllrb.com/docs/installation/) and other Ruby dependencies with `bundle install`.
**Note for Windows users:** Read [this unofficial guide](http://jekyll-windows.juthilo.com/) to get Jekyll up and running without problems. **Note for Windows users:** Read [this guide](https://jekyllrb.com/docs/installation/windows/) to get Jekyll up and running without problems.
2. Install the Ruby-based syntax highlighter, [Rouge](https://github.com/jneen/rouge), with `gem install rouge`. 2. From the root `/bootstrap` directory, run `bundle exec jekyll serve` in the command line.
3. From the root `/bootstrap` directory, run `jekyll serve` in the command line.
4. Open `http://localhost:9001` in your browser, and voilà. 4. 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](https://jekyllrb.com/docs/).
### Documentation for previous releases ### Documentation for previous releases
Documentation for v2.3.2 has been made available for the time being at <http://getbootstrap.com/2.3.2/> while folks transition to Bootstrap 3. Documentation for v2.3.2 has been made available for the time being at <https://getbootstrap.com/2.3.2/> while folks transition to Bootstrap 3.
[Previous releases](https://github.com/twbs/bootstrap/releases) and their documentation are also available for download. [Previous releases](https://github.com/twbs/bootstrap/releases) and their documentation are also available for download.
## Contributing ## Contributing
Please read through our [contributing guidelines](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md). Included are directions for opening issues, coding standards, and notes on development. Please read through our [contributing guidelines](https://github.com/twbs/bootstrap/blob/v3-dev/CONTRIBUTING.md). Included are directions for opening issues, coding standards, and notes on development.
Moreover, if your pull request contains JavaScript patches or features, you must include [relevant unit tests](https://github.com/twbs/bootstrap/tree/master/js/tests). All HTML and CSS should conform to the [Code Guide](https://github.com/mdo/code-guide), maintained by [Mark Otto](https://github.com/mdo). Moreover, if your pull request contains JavaScript patches or features, you must include [relevant unit tests](https://github.com/twbs/bootstrap/tree/v3-dev/js/tests). All HTML and CSS should conform to the [Code Guide](https://github.com/mdo/code-guide), maintained by [Mark Otto](https://github.com/mdo).
Editor preferences are available in the [editor config](https://github.com/twbs/bootstrap/blob/master/.editorconfig) for easy use in common text editors. Read more and download plugins at <http://editorconfig.org>. **Bootstrap v3 is now closed off to new features.** It has gone into maintenance mode so that we can focus our efforts on [Bootstrap v4](https://github.com/twbs/bootstrap/tree/v4-dev), the future of the framework. Pull requests which add new features (rather than fix bugs) should target [Bootstrap v4 (the `v4-dev` git branch)](https://github.com/twbs/bootstrap/tree/v4-dev) instead.
Editor preferences are available in the [editor config](https://github.com/twbs/bootstrap/blob/v3-dev/.editorconfig) for easy use in common text editors. Read more and download plugins at <https://editorconfig.org/>.
## Community ## Community
@ -107,21 +110,26 @@ Editor preferences are available in the [editor config](https://github.com/twbs/
Get updates on Bootstrap's development and chat with the project maintainers and community members. Get updates on Bootstrap's development and chat with the project maintainers and community members.
* Follow [@getbootstrap on Twitter](https://twitter.com/getbootstrap). * Follow [@getbootstrap on Twitter](https://twitter.com/getbootstrap).
* Read and subscribe to [The Official Bootstrap Blog](http://blog.getbootstrap.com). * Read and subscribe to [The Official Bootstrap Blog](https://blog.getbootstrap.com/).
* Join [the official Slack room](https://bootstrap-slack.herokuapp.com). * Join [the official Slack room](https://bootstrap-slack.herokuapp.com/).
* Chat with fellow Bootstrappers in IRC. On the `irc.freenode.net` server, in the `##bootstrap` channel. * Chat with fellow Bootstrappers in IRC. On the `irc.freenode.net` server, in the `##bootstrap` channel.
* Implementation help may be found at Stack Overflow (tagged [`twitter-bootstrap-3`](https://stackoverflow.com/questions/tagged/twitter-bootstrap-3)). * Implementation help may be found at Stack Overflow (tagged [`twitter-bootstrap-3`](https://stackoverflow.com/questions/tagged/twitter-bootstrap-3)).
* Developers should use the keyword `bootstrap` on packages which modify or add to the functionality of Bootstrap when distributing through [npm](https://www.npmjs.com/browse/keyword/bootstrap) or similar delivery mechanisms for maximum discoverability. * Developers should use the keyword `bootstrap` on packages which modify or add to the functionality of Bootstrap when distributing through [npm](https://www.npmjs.com/search?q=keywords:bootstrap) or similar delivery mechanisms for maximum discoverability.
## Versioning ## Versioning
For transparency into our release cycle and in striving to maintain backward compatibility, Bootstrap is maintained under [the Semantic Versioning guidelines](http://semver.org/). Sometimes we screw up, but we'll adhere to those rules whenever possible. For transparency into our release cycle and in striving to maintain backward compatibility, Bootstrap is maintained under [the Semantic Versioning guidelines](https://semver.org/). Sometimes we screw up, but we'll adhere to those rules whenever possible.
See [the Releases section of our GitHub project](https://github.com/twbs/bootstrap/releases) for changelogs for each release version of Bootstrap. Release announcement posts on [the official Bootstrap blog](http://blog.getbootstrap.com) contain summaries of the most noteworthy changes made in each release. See [the Releases section of our GitHub project](https://github.com/twbs/bootstrap/releases) for changelogs for each release version of Bootstrap. Release announcement posts on [the official Bootstrap blog](https://blog.getbootstrap.com/) contain summaries of the most noteworthy changes made in each release.
## Thanks
<img src="https://live.browserstack.com/images/opensource/browserstack-logo.svg" alt="BrowserStack Logo" width="490" height="106">
Thanks to [BrowserStack](https://www.browserstack.com/) for providing the infrastructure that allows us to test in real browsers!
## Creators ## Creators
@ -136,7 +144,6 @@ See [the Releases section of our GitHub project](https://github.com/twbs/bootstr
* <https://github.com/fat> * <https://github.com/fat>
## Copyright and license ## Copyright and license
Code and documentation copyright 2011-2015 Twitter, Inc. Code released under [the MIT license](https://github.com/twbs/bootstrap/blob/master/LICENSE). Docs released under [Creative Commons](https://github.com/twbs/bootstrap/blob/master/docs/LICENSE). Code and documentation copyright 2011-2019 Twitter, Inc. Code released under [the MIT license](https://github.com/twbs/bootstrap/blob/v3-dev/LICENSE). Docs released under [Creative Commons](https://github.com/twbs/bootstrap/blob/v3-dev/docs/LICENSE).

View file

@ -10,23 +10,37 @@ source: docs
destination: _gh_pages destination: _gh_pages
host: 0.0.0.0 host: 0.0.0.0
port: 9001 port: 9001
url: http://getbootstrap.com url: https://getbootstrap.com
baseurl: /docs/3.4
encoding: UTF-8 encoding: UTF-8
exclude:
- assets/less/
plugins:
- jekyll-sitemap
# Custom vars # Custom vars
current_version: 3.3.5 title: Bootstrap
description: "The world's most popular mobile-first and responsive front-end framework."
current_version: 3.4.1
docs_version: 3.4
repo: https://github.com/twbs/bootstrap repo: https://github.com/twbs/bootstrap
sass_repo: https://github.com/twbs/bootstrap-sass sass_repo: https://github.com/twbs/bootstrap-sass
download: download:
source: https://github.com/twbs/bootstrap/archive/v3.3.5.zip source: https://github.com/twbs/bootstrap/archive/v3.4.1.zip
dist: https://github.com/twbs/bootstrap/releases/download/v3.3.5/bootstrap-3.3.5-dist.zip dist: https://github.com/twbs/bootstrap/releases/download/v3.4.1/bootstrap-3.4.1-dist.zip
sass: https://github.com/twbs/bootstrap-sass/archive/v3.3.5.tar.gz sass: https://github.com/twbs/bootstrap-sass/archive/v3.4.1.tar.gz
blog: http://blog.getbootstrap.com blog: https://blog.getbootstrap.com
expo: http://expo.getbootstrap.com expo: https://expo.getbootstrap.com
themes: https://themes.getbootstrap.com
cdn: cdn:
css: https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css # See https://www.srihash.org for info on how to generate the hashes
css_theme: https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap-theme.min.css css: https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css
js: https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js css_hash: "sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu"
css_theme: https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap-theme.min.css
css_theme_hash: "sha384-6pzBo3FDv/PJ8r2KRkGHifhEocL+1X2rVCTTkUfGk7/0pbek5mMa1upzvWbrUbOZ"
js: https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js
js_hash: "sha384-aJ21OjlMXNL5UyIl/XNwTMqvzeRMZH2w8c5cRVpzpU8Y5bApTppSuUkhZXN0VxHd"

View file

@ -11,7 +11,7 @@
"framework", "framework",
"web" "web"
], ],
"homepage": "http://getbootstrap.com", "homepage": "https://getbootstrap.com/",
"license": "MIT", "license": "MIT",
"moduleType": "globals", "moduleType": "globals",
"main": [ "main": [
@ -29,6 +29,6 @@
"test-infra" "test-infra"
], ],
"dependencies": { "dependencies": {
"jquery": "1.9.1 - 2" "jquery": "1.9.1 - 3"
} }
} }

View file

@ -11,7 +11,7 @@
"framework", "framework",
"web" "web"
], ],
"homepage": "http://getbootstrap.com", "homepage": "https://getbootstrap.com/",
"authors": [ "authors": [
{ {
"name": "Mark Otto", "name": "Mark Otto",
@ -28,7 +28,7 @@
"license": "MIT", "license": "MIT",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "3.3.x-dev" "dev-master": "3.4.x-dev"
} }
}, },
"replace": { "replace": {

View file

@ -1,6 +1,6 @@
/*! /*!
* Bootstrap v3.3.5 (http://getbootstrap.com) * Bootstrap v3.4.1 (https://getbootstrap.com/)
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/ */
.btn-default, .btn-default,
@ -9,9 +9,9 @@
.btn-info, .btn-info,
.btn-warning, .btn-warning,
.btn-danger { .btn-danger {
text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);
} }
.btn-default:active, .btn-default:active,
.btn-primary:active, .btn-primary:active,
@ -25,8 +25,8 @@
.btn-info.active, .btn-info.active,
.btn-warning.active, .btn-warning.active,
.btn-danger.active { .btn-danger.active {
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
} }
.btn-default.disabled, .btn-default.disabled,
.btn-primary.disabled, .btn-primary.disabled,
@ -62,7 +62,6 @@ fieldset[disabled] .btn-danger {
background-image: none; background-image: none;
} }
.btn-default { .btn-default {
text-shadow: 0 1px 0 #fff;
background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%); background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);
background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%); background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0)); background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0));
@ -71,6 +70,7 @@ fieldset[disabled] .btn-danger {
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x; background-repeat: repeat-x;
border-color: #dbdbdb; border-color: #dbdbdb;
text-shadow: 0 1px 0 #fff;
border-color: #ccc; border-color: #ccc;
} }
.btn-default:hover, .btn-default:hover,
@ -311,41 +311,41 @@ fieldset[disabled] .btn-danger.active {
} }
.thumbnail, .thumbnail,
.img-thumbnail { .img-thumbnail {
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
box-shadow: 0 1px 2px rgba(0, 0, 0, .075); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
} }
.dropdown-menu > li > a:hover, .dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus { .dropdown-menu > li > a:focus {
background-color: #e8e8e8;
background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8)); background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
background-repeat: repeat-x; background-repeat: repeat-x;
background-color: #e8e8e8;
} }
.dropdown-menu > .active > a, .dropdown-menu > .active > a,
.dropdown-menu > .active > a:hover, .dropdown-menu > .active > a:hover,
.dropdown-menu > .active > a:focus { .dropdown-menu > .active > a:focus {
background-color: #2e6da4;
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
background-repeat: repeat-x; background-repeat: repeat-x;
background-color: #2e6da4;
} }
.navbar-default { .navbar-default {
background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%); background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);
background-image: -o-linear-gradient(top, #fff 0%, #f8f8f8 100%); background-image: -o-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8)); background-image: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#f8f8f8));
background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%); background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x; background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
border-radius: 4px; border-radius: 4px;
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);
} }
.navbar-default .navbar-nav > .open > a, .navbar-default .navbar-nav > .open > a,
.navbar-default .navbar-nav > .active > a { .navbar-default .navbar-nav > .active > a {
@ -355,12 +355,12 @@ fieldset[disabled] .btn-danger.active {
background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%); background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);
background-repeat: repeat-x; background-repeat: repeat-x;
-webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);
box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);
} }
.navbar-brand, .navbar-brand,
.navbar-nav > li > a { .navbar-nav > li > a {
text-shadow: 0 1px 0 rgba(255, 255, 255, .25); text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);
} }
.navbar-inverse { .navbar-inverse {
background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%); background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);
@ -368,8 +368,8 @@ fieldset[disabled] .btn-danger.active {
background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222)); background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222));
background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%); background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x; background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
border-radius: 4px; border-radius: 4px;
} }
.navbar-inverse .navbar-nav > .open > a, .navbar-inverse .navbar-nav > .open > a,
@ -380,12 +380,12 @@ fieldset[disabled] .btn-danger.active {
background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%); background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);
background-repeat: repeat-x; background-repeat: repeat-x;
-webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);
box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);
} }
.navbar-inverse .navbar-brand, .navbar-inverse .navbar-brand,
.navbar-inverse .navbar-nav > li > a { .navbar-inverse .navbar-nav > li > a {
text-shadow: 0 -1px 0 rgba(0, 0, 0, .25); text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
} }
.navbar-static-top, .navbar-static-top,
.navbar-fixed-top, .navbar-fixed-top,
@ -406,9 +406,9 @@ fieldset[disabled] .btn-danger.active {
} }
} }
.alert { .alert {
text-shadow: 0 1px 0 rgba(255, 255, 255, .2); text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);
} }
.alert-success { .alert-success {
background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
@ -495,14 +495,14 @@ fieldset[disabled] .btn-danger.active {
background-repeat: repeat-x; background-repeat: repeat-x;
} }
.progress-bar-striped { .progress-bar-striped {
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
} }
.list-group { .list-group {
border-radius: 4px; border-radius: 4px;
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
box-shadow: 0 1px 2px rgba(0, 0, 0, .075); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
} }
.list-group-item.active, .list-group-item.active,
.list-group-item.active:hover, .list-group-item.active:hover,
@ -522,8 +522,8 @@ fieldset[disabled] .btn-danger.active {
text-shadow: none; text-shadow: none;
} }
.panel { .panel {
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05); -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
box-shadow: 0 1px 2px rgba(0, 0, 0, .05); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
} }
.panel-default > .panel-heading { .panel-default > .panel-heading {
background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
@ -581,7 +581,7 @@ fieldset[disabled] .btn-danger.active {
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);
background-repeat: repeat-x; background-repeat: repeat-x;
border-color: #dcdcdc; border-color: #dcdcdc;
-webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);
box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);
} }
/*# sourceMappingURL=bootstrap-theme.css.map */ /*# sourceMappingURL=bootstrap-theme.css.map */

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,6 +1,6 @@
/*! /*!
* Bootstrap v3.3.5 (http://getbootstrap.com) * Bootstrap v3.4.1 (https://getbootstrap.com/)
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2019 Twitter, Inc.
* Licensed under the MIT license * Licensed under the MIT license
*/ */
@ -11,16 +11,16 @@ if (typeof jQuery === 'undefined') {
+function ($) { +function ($) {
'use strict'; 'use strict';
var version = $.fn.jquery.split(' ')[0].split('.') var version = $.fn.jquery.split(' ')[0].split('.')
if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 2)) { if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) {
throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3') throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4')
} }
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: transition.js v3.3.5 * Bootstrap: transition.js v3.4.1
* http://getbootstrap.com/javascript/#transitions * https://getbootstrap.com/docs/3.4/javascript/#transitions
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
@ -28,7 +28,7 @@ if (typeof jQuery === 'undefined') {
+function ($) { +function ($) {
'use strict'; 'use strict';
// CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) // CSS TRANSITION SUPPORT (Shoutout: https://modernizr.com/)
// ============================================================ // ============================================================
function transitionEnd() { function transitionEnd() {
@ -50,7 +50,7 @@ if (typeof jQuery === 'undefined') {
return false // explicit for ie8 ( ._.) return false // explicit for ie8 ( ._.)
} }
// http://blog.alexmaccaw.com/css-transitions // https://blog.alexmaccaw.com/css-transitions
$.fn.emulateTransitionEnd = function (duration) { $.fn.emulateTransitionEnd = function (duration) {
var called = false var called = false
var $el = this var $el = this
@ -77,10 +77,10 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: alert.js v3.3.5 * Bootstrap: alert.js v3.4.1
* http://getbootstrap.com/javascript/#alerts * https://getbootstrap.com/docs/3.4/javascript/#alerts
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
@ -96,7 +96,7 @@ if (typeof jQuery === 'undefined') {
$(el).on('click', dismiss, this.close) $(el).on('click', dismiss, this.close)
} }
Alert.VERSION = '3.3.5' Alert.VERSION = '3.4.1'
Alert.TRANSITION_DURATION = 150 Alert.TRANSITION_DURATION = 150
@ -109,7 +109,8 @@ if (typeof jQuery === 'undefined') {
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
} }
var $parent = $(selector) selector = selector === '#' ? [] : selector
var $parent = $(document).find(selector)
if (e) e.preventDefault() if (e) e.preventDefault()
@ -172,10 +173,10 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: button.js v3.3.5 * Bootstrap: button.js v3.4.1
* http://getbootstrap.com/javascript/#buttons * https://getbootstrap.com/docs/3.4/javascript/#buttons
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
@ -192,7 +193,7 @@ if (typeof jQuery === 'undefined') {
this.isLoading = false this.isLoading = false
} }
Button.VERSION = '3.3.5' Button.VERSION = '3.4.1'
Button.DEFAULTS = { Button.DEFAULTS = {
loadingText: 'loading...' loadingText: 'loading...'
@ -214,10 +215,10 @@ if (typeof jQuery === 'undefined') {
if (state == 'loadingText') { if (state == 'loadingText') {
this.isLoading = true this.isLoading = true
$el.addClass(d).attr(d, d) $el.addClass(d).attr(d, d).prop(d, true)
} else if (this.isLoading) { } else if (this.isLoading) {
this.isLoading = false this.isLoading = false
$el.removeClass(d).removeAttr(d) $el.removeClass(d).removeAttr(d).prop(d, false)
} }
}, this), 0) }, this), 0)
} }
@ -281,10 +282,15 @@ if (typeof jQuery === 'undefined') {
$(document) $(document)
.on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) { .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
var $btn = $(e.target) var $btn = $(e.target).closest('.btn')
if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
Plugin.call($btn, 'toggle') Plugin.call($btn, 'toggle')
if (!($(e.target).is('input[type="radio"]') || $(e.target).is('input[type="checkbox"]'))) e.preventDefault() if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) {
// Prevent double click on radios, and the double selections (so cancellation) on checkboxes
e.preventDefault()
// The target component still receive the focus
if ($btn.is('input,button')) $btn.trigger('focus')
else $btn.find('input:visible,button:visible').first().trigger('focus')
}
}) })
.on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
$(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type)) $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))
@ -293,10 +299,10 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: carousel.js v3.3.5 * Bootstrap: carousel.js v3.4.1
* http://getbootstrap.com/javascript/#carousel * https://getbootstrap.com/docs/3.4/javascript/#carousel
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
@ -324,7 +330,7 @@ if (typeof jQuery === 'undefined') {
.on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
} }
Carousel.VERSION = '3.3.5' Carousel.VERSION = '3.4.1'
Carousel.TRANSITION_DURATION = 600 Carousel.TRANSITION_DURATION = 600
@ -438,7 +444,9 @@ if (typeof jQuery === 'undefined') {
var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid"
if ($.support.transition && this.$element.hasClass('slide')) { if ($.support.transition && this.$element.hasClass('slide')) {
$next.addClass(type) $next.addClass(type)
if (typeof $next === 'object' && $next.length) {
$next[0].offsetWidth // force reflow $next[0].offsetWidth // force reflow
}
$active.addClass(direction) $active.addClass(direction)
$next.addClass(direction) $next.addClass(direction)
$active $active
@ -500,10 +508,17 @@ if (typeof jQuery === 'undefined') {
// ================= // =================
var clickHandler = function (e) { var clickHandler = function (e) {
var href
var $this = $(this) var $this = $(this)
var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 var href = $this.attr('href')
if (href) {
href = href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
}
var target = $this.attr('data-target') || href
var $target = $(document).find(target)
if (!$target.hasClass('carousel')) return if (!$target.hasClass('carousel')) return
var options = $.extend({}, $target.data(), $this.data()) var options = $.extend({}, $target.data(), $this.data())
var slideIndex = $this.attr('data-slide-to') var slideIndex = $this.attr('data-slide-to')
if (slideIndex) options.interval = false if (slideIndex) options.interval = false
@ -531,13 +546,14 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: collapse.js v3.3.5 * Bootstrap: collapse.js v3.4.1
* http://getbootstrap.com/javascript/#collapse * https://getbootstrap.com/docs/3.4/javascript/#collapse
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
/* jshint latedef: false */
+function ($) { +function ($) {
'use strict'; 'use strict';
@ -561,7 +577,7 @@ if (typeof jQuery === 'undefined') {
if (this.options.toggle) this.toggle() if (this.options.toggle) this.toggle()
} }
Collapse.VERSION = '3.3.5' Collapse.VERSION = '3.4.1'
Collapse.TRANSITION_DURATION = 350 Collapse.TRANSITION_DURATION = 350
@ -668,7 +684,7 @@ if (typeof jQuery === 'undefined') {
} }
Collapse.prototype.getParent = function () { Collapse.prototype.getParent = function () {
return $(this.options.parent) return $(document).find(this.options.parent)
.find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]') .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
.each($.proxy(function (i, element) { .each($.proxy(function (i, element) {
var $element = $(element) var $element = $(element)
@ -691,7 +707,7 @@ if (typeof jQuery === 'undefined') {
var target = $trigger.attr('data-target') var target = $trigger.attr('data-target')
|| (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
return $(target) return $(document).find(target)
} }
@ -743,10 +759,10 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: dropdown.js v3.3.5 * Bootstrap: dropdown.js v3.4.1
* http://getbootstrap.com/javascript/#dropdowns * https://getbootstrap.com/docs/3.4/javascript/#dropdowns
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
@ -763,7 +779,7 @@ if (typeof jQuery === 'undefined') {
$(element).on('click.bs.dropdown', this.toggle) $(element).on('click.bs.dropdown', this.toggle)
} }
Dropdown.VERSION = '3.3.5' Dropdown.VERSION = '3.4.1'
function getParent($this) { function getParent($this) {
var selector = $this.attr('data-target') var selector = $this.attr('data-target')
@ -773,7 +789,7 @@ if (typeof jQuery === 'undefined') {
selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
} }
var $parent = selector && $(selector) var $parent = selector !== '#' ? $(document).find(selector) : null
return $parent && $parent.length ? $parent : $this.parent() return $parent && $parent.length ? $parent : $this.parent()
} }
@ -909,10 +925,10 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: modal.js v3.3.5 * Bootstrap: modal.js v3.4.1
* http://getbootstrap.com/javascript/#modals * https://getbootstrap.com/docs/3.4/javascript/#modals
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
@ -933,6 +949,7 @@ if (typeof jQuery === 'undefined') {
this.originalBodyPad = null this.originalBodyPad = null
this.scrollbarWidth = 0 this.scrollbarWidth = 0
this.ignoreBackdropClick = false this.ignoreBackdropClick = false
this.fixedContent = '.navbar-fixed-top, .navbar-fixed-bottom'
if (this.options.remote) { if (this.options.remote) {
this.$element this.$element
@ -943,7 +960,7 @@ if (typeof jQuery === 'undefined') {
} }
} }
Modal.VERSION = '3.3.5' Modal.VERSION = '3.4.1'
Modal.TRANSITION_DURATION = 300 Modal.TRANSITION_DURATION = 300
Modal.BACKDROP_TRANSITION_DURATION = 150 Modal.BACKDROP_TRANSITION_DURATION = 150
@ -1050,7 +1067,9 @@ if (typeof jQuery === 'undefined') {
$(document) $(document)
.off('focusin.bs.modal') // guard against infinite focus loop .off('focusin.bs.modal') // guard against infinite focus loop
.on('focusin.bs.modal', $.proxy(function (e) { .on('focusin.bs.modal', $.proxy(function (e) {
if (this.$element[0] !== e.target && !this.$element.has(e.target).length) { if (document !== e.target &&
this.$element[0] !== e.target &&
!this.$element.has(e.target).length) {
this.$element.trigger('focus') this.$element.trigger('focus')
} }
}, this)) }, this))
@ -1177,11 +1196,26 @@ if (typeof jQuery === 'undefined') {
Modal.prototype.setScrollbar = function () { Modal.prototype.setScrollbar = function () {
var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10) var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
this.originalBodyPad = document.body.style.paddingRight || '' this.originalBodyPad = document.body.style.paddingRight || ''
if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth) var scrollbarWidth = this.scrollbarWidth
if (this.bodyIsOverflowing) {
this.$body.css('padding-right', bodyPad + scrollbarWidth)
$(this.fixedContent).each(function (index, element) {
var actualPadding = element.style.paddingRight
var calculatedPadding = $(element).css('padding-right')
$(element)
.data('padding-right', actualPadding)
.css('padding-right', parseFloat(calculatedPadding) + scrollbarWidth + 'px')
})
}
} }
Modal.prototype.resetScrollbar = function () { Modal.prototype.resetScrollbar = function () {
this.$body.css('padding-right', this.originalBodyPad) this.$body.css('padding-right', this.originalBodyPad)
$(this.fixedContent).each(function (index, element) {
var padding = $(element).data('padding-right')
$(element).removeData('padding-right')
element.style.paddingRight = padding ? padding : ''
})
} }
Modal.prototype.measureScrollbar = function () { // thx walsh Modal.prototype.measureScrollbar = function () { // thx walsh
@ -1230,7 +1264,10 @@ if (typeof jQuery === 'undefined') {
$(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) { $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
var $this = $(this) var $this = $(this)
var href = $this.attr('href') var href = $this.attr('href')
var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7 var target = $this.attr('data-target') ||
(href && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
var $target = $(document).find(target)
var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data()) var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
if ($this.is('a')) e.preventDefault() if ($this.is('a')) e.preventDefault()
@ -1247,18 +1284,148 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: tooltip.js v3.3.5 * Bootstrap: tooltip.js v3.4.1
* http://getbootstrap.com/javascript/#tooltip * https://getbootstrap.com/docs/3.4/javascript/#tooltip
* Inspired by the original jQuery.tipsy by Jason Frame * Inspired by the original jQuery.tipsy by Jason Frame
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
+function ($) { +function ($) {
'use strict'; 'use strict';
var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']
var uriAttrs = [
'background',
'cite',
'href',
'itemtype',
'longdesc',
'poster',
'src',
'xlink:href'
]
var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i
var DefaultWhitelist = {
// Global attributes allowed on any supplied element below.
'*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
a: ['target', 'href', 'title', 'rel'],
area: [],
b: [],
br: [],
col: [],
code: [],
div: [],
em: [],
hr: [],
h1: [],
h2: [],
h3: [],
h4: [],
h5: [],
h6: [],
i: [],
img: ['src', 'alt', 'title', 'width', 'height'],
li: [],
ol: [],
p: [],
pre: [],
s: [],
small: [],
span: [],
sub: [],
sup: [],
strong: [],
u: [],
ul: []
}
/**
* A pattern that recognizes a commonly useful subset of URLs that are safe.
*
* Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
*/
var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi
/**
* A pattern that matches safe data URLs. Only matches image, video and audio types.
*
* Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
*/
var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i
function allowedAttribute(attr, allowedAttributeList) {
var attrName = attr.nodeName.toLowerCase()
if ($.inArray(attrName, allowedAttributeList) !== -1) {
if ($.inArray(attrName, uriAttrs) !== -1) {
return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))
}
return true
}
var regExp = $(allowedAttributeList).filter(function (index, value) {
return value instanceof RegExp
})
// Check if a regular expression validates the attribute.
for (var i = 0, l = regExp.length; i < l; i++) {
if (attrName.match(regExp[i])) {
return true
}
}
return false
}
function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {
if (unsafeHtml.length === 0) {
return unsafeHtml
}
if (sanitizeFn && typeof sanitizeFn === 'function') {
return sanitizeFn(unsafeHtml)
}
// IE 8 and below don't support createHTMLDocument
if (!document.implementation || !document.implementation.createHTMLDocument) {
return unsafeHtml
}
var createdDocument = document.implementation.createHTMLDocument('sanitization')
createdDocument.body.innerHTML = unsafeHtml
var whitelistKeys = $.map(whiteList, function (el, i) { return i })
var elements = $(createdDocument.body).find('*')
for (var i = 0, len = elements.length; i < len; i++) {
var el = elements[i]
var elName = el.nodeName.toLowerCase()
if ($.inArray(elName, whitelistKeys) === -1) {
el.parentNode.removeChild(el)
continue
}
var attributeList = $.map(el.attributes, function (el) { return el })
var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])
for (var j = 0, len2 = attributeList.length; j < len2; j++) {
if (!allowedAttribute(attributeList[j], whitelistedAttributes)) {
el.removeAttribute(attributeList[j].nodeName)
}
}
}
return createdDocument.body.innerHTML
}
// TOOLTIP PUBLIC CLASS DEFINITION // TOOLTIP PUBLIC CLASS DEFINITION
// =============================== // ===============================
@ -1274,7 +1441,7 @@ if (typeof jQuery === 'undefined') {
this.init('tooltip', element, options) this.init('tooltip', element, options)
} }
Tooltip.VERSION = '3.3.5' Tooltip.VERSION = '3.4.1'
Tooltip.TRANSITION_DURATION = 150 Tooltip.TRANSITION_DURATION = 150
@ -1291,7 +1458,10 @@ if (typeof jQuery === 'undefined') {
viewport: { viewport: {
selector: 'body', selector: 'body',
padding: 0 padding: 0
} },
sanitize : true,
sanitizeFn : null,
whiteList : DefaultWhitelist
} }
Tooltip.prototype.init = function (type, element, options) { Tooltip.prototype.init = function (type, element, options) {
@ -1299,7 +1469,7 @@ if (typeof jQuery === 'undefined') {
this.type = type this.type = type
this.$element = $(element) this.$element = $(element)
this.options = this.getOptions(options) this.options = this.getOptions(options)
this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport)) this.$viewport = this.options.viewport && $(document).find($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))
this.inState = { click: false, hover: false, focus: false } this.inState = { click: false, hover: false, focus: false }
if (this.$element[0] instanceof document.constructor && !this.options.selector) { if (this.$element[0] instanceof document.constructor && !this.options.selector) {
@ -1332,7 +1502,15 @@ if (typeof jQuery === 'undefined') {
} }
Tooltip.prototype.getOptions = function (options) { Tooltip.prototype.getOptions = function (options) {
options = $.extend({}, this.getDefaults(), this.$element.data(), options) var dataAttributes = this.$element.data()
for (var dataAttr in dataAttributes) {
if (dataAttributes.hasOwnProperty(dataAttr) && $.inArray(dataAttr, DISALLOWED_ATTRIBUTES) !== -1) {
delete dataAttributes[dataAttr]
}
}
options = $.extend({}, this.getDefaults(), dataAttributes, options)
if (options.delay && typeof options.delay == 'number') { if (options.delay && typeof options.delay == 'number') {
options.delay = { options.delay = {
@ -1341,6 +1519,10 @@ if (typeof jQuery === 'undefined') {
} }
} }
if (options.sanitize) {
options.template = sanitizeHtml(options.template, options.whiteList, options.sanitizeFn)
}
return options return options
} }
@ -1452,7 +1634,7 @@ if (typeof jQuery === 'undefined') {
.addClass(placement) .addClass(placement)
.data('bs.' + this.type, this) .data('bs.' + this.type, this)
this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) this.options.container ? $tip.appendTo($(document).find(this.options.container)) : $tip.insertAfter(this.$element)
this.$element.trigger('inserted.bs.' + this.type) this.$element.trigger('inserted.bs.' + this.type)
var pos = this.getPosition() var pos = this.getPosition()
@ -1554,7 +1736,16 @@ if (typeof jQuery === 'undefined') {
var $tip = this.tip() var $tip = this.tip()
var title = this.getTitle() var title = this.getTitle()
$tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title) if (this.options.html) {
if (this.options.sanitize) {
title = sanitizeHtml(title, this.options.whiteList, this.options.sanitizeFn)
}
$tip.find('.tooltip-inner').html(title)
} else {
$tip.find('.tooltip-inner').text(title)
}
$tip.removeClass('fade in top bottom left right') $tip.removeClass('fade in top bottom left right')
} }
@ -1565,9 +1756,11 @@ if (typeof jQuery === 'undefined') {
function complete() { function complete() {
if (that.hoverState != 'in') $tip.detach() if (that.hoverState != 'in') $tip.detach()
if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.
that.$element that.$element
.removeAttr('aria-describedby') .removeAttr('aria-describedby')
.trigger('hidden.bs.' + that.type) .trigger('hidden.bs.' + that.type)
}
callback && callback() callback && callback()
} }
@ -1610,7 +1803,10 @@ if (typeof jQuery === 'undefined') {
// width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093 // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093
elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top }) elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })
} }
var elOffset = isBody ? { top: 0, left: 0 } : $element.offset() var isSvg = window.SVGElement && el instanceof window.SVGElement
// Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.
// See https://github.com/twbs/bootstrap/issues/20280
var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())
var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() } var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }
var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null
@ -1726,9 +1922,13 @@ if (typeof jQuery === 'undefined') {
that.$tip = null that.$tip = null
that.$arrow = null that.$arrow = null
that.$viewport = null that.$viewport = null
that.$element = null
}) })
} }
Tooltip.prototype.sanitizeHtml = function (unsafeHtml) {
return sanitizeHtml(unsafeHtml, this.options.whiteList, this.options.sanitizeFn)
}
// TOOLTIP PLUGIN DEFINITION // TOOLTIP PLUGIN DEFINITION
// ========================= // =========================
@ -1762,10 +1962,10 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: popover.js v3.3.5 * Bootstrap: popover.js v3.4.1
* http://getbootstrap.com/javascript/#popovers * https://getbootstrap.com/docs/3.4/javascript/#popovers
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
@ -1782,7 +1982,7 @@ if (typeof jQuery === 'undefined') {
if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
Popover.VERSION = '3.3.5' Popover.VERSION = '3.4.1'
Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
placement: 'right', placement: 'right',
@ -1808,10 +2008,25 @@ if (typeof jQuery === 'undefined') {
var title = this.getTitle() var title = this.getTitle()
var content = this.getContent() var content = this.getContent()
$tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) if (this.options.html) {
$tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events var typeContent = typeof content
this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'
if (this.options.sanitize) {
title = this.sanitizeHtml(title)
if (typeContent === 'string') {
content = this.sanitizeHtml(content)
}
}
$tip.find('.popover-title').html(title)
$tip.find('.popover-content').children().detach().end()[
typeContent === 'string' ? 'html' : 'append'
](content) ](content)
} else {
$tip.find('.popover-title').text(title)
$tip.find('.popover-content').children().detach().end().text(content)
}
$tip.removeClass('fade top bottom left right in') $tip.removeClass('fade top bottom left right in')
@ -1871,10 +2086,10 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: scrollspy.js v3.3.5 * Bootstrap: scrollspy.js v3.4.1
* http://getbootstrap.com/javascript/#scrollspy * https://getbootstrap.com/docs/3.4/javascript/#scrollspy
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
@ -1900,7 +2115,7 @@ if (typeof jQuery === 'undefined') {
this.process() this.process()
} }
ScrollSpy.VERSION = '3.3.5' ScrollSpy.VERSION = '3.4.1'
ScrollSpy.DEFAULTS = { ScrollSpy.DEFAULTS = {
offset: 10 offset: 10
@ -2044,10 +2259,10 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: tab.js v3.3.5 * Bootstrap: tab.js v3.4.1
* http://getbootstrap.com/javascript/#tabs * https://getbootstrap.com/docs/3.4/javascript/#tabs
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
@ -2064,7 +2279,7 @@ if (typeof jQuery === 'undefined') {
// jscs:enable requireDollarBeforejQueryAssignment // jscs:enable requireDollarBeforejQueryAssignment
} }
Tab.VERSION = '3.3.5' Tab.VERSION = '3.4.1'
Tab.TRANSITION_DURATION = 150 Tab.TRANSITION_DURATION = 150
@ -2093,7 +2308,7 @@ if (typeof jQuery === 'undefined') {
if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return
var $target = $(selector) var $target = $(document).find(selector)
this.activate($this.closest('li'), $ul) this.activate($this.closest('li'), $ul)
this.activate($target, $target.parent(), function () { this.activate($target, $target.parent(), function () {
@ -2200,10 +2415,10 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: affix.js v3.3.5 * Bootstrap: affix.js v3.4.1
* http://getbootstrap.com/javascript/#affix * https://getbootstrap.com/docs/3.4/javascript/#affix
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
@ -2217,7 +2432,9 @@ if (typeof jQuery === 'undefined') {
var Affix = function (element, options) { var Affix = function (element, options) {
this.options = $.extend({}, Affix.DEFAULTS, options) this.options = $.extend({}, Affix.DEFAULTS, options)
this.$target = $(this.options.target) var target = this.options.target === Affix.DEFAULTS.target ? $(this.options.target) : $(document).find(this.options.target)
this.$target = target
.on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this)) .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
.on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this)) .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))
@ -2229,7 +2446,7 @@ if (typeof jQuery === 'undefined') {
this.checkPosition() this.checkPosition()
} }
Affix.VERSION = '3.3.5' Affix.VERSION = '3.4.1'
Affix.RESET = 'affix affix-top affix-bottom' Affix.RESET = 'affix affix-top affix-bottom'

File diff suppressed because one or more lines are too long

View file

@ -316,4 +316,4 @@ Creative Commons Notice
available upon request from time to time. For the avoidance of doubt, available upon request from time to time. For the avoidance of doubt,
this trademark restriction does not form part of this License. this trademark restriction does not form part of this License.
Creative Commons may be contacted at http://creativecommons.org/. Creative Commons may be contacted at https://creativecommons.org/.

View file

@ -1,33 +1,93 @@
- -
browser: > browser: >
Internet Explorer 11 & Microsoft Edge Microsoft Edge
summary: >
Visual artifacts in scrollable modal dialogs
upstream_bug: >
Edge#9011176
origin: >
Bootstrap#20755
-
browser: >
Microsoft Edge
summary: >
Native browser tooltip for `title` shows on first keyboard focus (in addition to custom tooltip component)
upstream_bug: >
Edge#6793560
origin: >
Bootstrap#18692
-
browser: >
Microsoft Edge
summary: > summary: >
Hovered element still remains in `:hover` state after scrolling away. Hovered element still remains in `:hover` state after scrolling away.
upstream_bug: > upstream_bug: >
IE#926665 Edge#5381673
origin: > origin: >
Bootstrap#14211 Bootstrap#14211
- -
browser: > browser: >
Internet Explorer 11 & Microsoft Edge Microsoft Edge
summary: > summary: >
When hovering over a `<select>` menu item, the cursor for the element underneath the menu is displayed. When hovering over a `<select>` menu item, the cursor for the element underneath the menu is displayed.
upstream_bug: > upstream_bug: >
IE#963961 Edge#817822
origin: > origin: >
Bootstrap#14528 Bootstrap#14528
- -
browser: > browser: >
Internet Explorer 11 & Microsoft Edge Microsoft Edge
summary: > summary: >
CSS `border-radius` sometimes causes lines of bleed-through of the `background-color` of the parent element. CSS `border-radius` sometimes causes lines of bleed-through of the `background-color` of the parent element.
upstream_bug: > upstream_bug: >
IE#1463734 Edge#3342037
origin: > origin: >
Bootstrap#16671 Bootstrap#16671
-
browser: >
Microsoft Edge
summary: >
`background` of `<tr>` is only applied to first child cell instead of all cells in the row
upstream_bug: >
Edge#5865620
origin: >
Bootstrap#18504
-
browser: >
Microsoft Edge
summary: >
`@-ms-viewport{width: device-width;}` has side-effect of making scrollbars auto-hide
upstream_bug: >
Edge#7165383
origin: >
Bootstrap#18543
-
browser: >
Microsoft Edge
summary: >
Background color from lower layer bleeds through transparent border in some cases
upstream_bug: >
Edge#6274505
origin: >
Bootstrap#18228
-
browser: >
Microsoft Edge
summary: >
Hovering over descendant SVG element fires `mouseleave` event at ancestor
upstream_bug: >
Edge#7787318
origin: >
Bootstrap#19670
- -
browser: > browser: >
Firefox Firefox
@ -38,36 +98,6 @@
origin: > origin: >
Bootstrap#13453 Bootstrap#13453
-
browser: >
Firefox
summary: >
`max-width: 100%;` doesn't work inside tables.
upstream_bug: >
Mozilla#975632
origin: >
Bootstrap#10690
-
browser: >
Firefox (Windows)
summary: >
Java applets that are descendants of elements with forced hardware acceleration using `translate3d(0,0,0)` are invisible.
upstream_bug: >
Mozilla#1048279
origin: >
Bootstrap#14124
-
browser: >
Firefox
summary: >
Button elements with `width: 100%` become cropped in long tables.
upstream_bug: >
Mozilla#1060131
origin: >
Bootstrap#14320
- -
browser: > browser: >
Firefox Firefox
@ -78,6 +108,76 @@
origin: > origin: >
Bootstrap#793 Bootstrap#793
-
browser: >
Firefox
summary: >
`focus` events should not be fired at the `document` object
upstream_bug: >
Mozilla#1228802
origin: >
Bootstrap#18365
-
browser: >
Firefox
summary: >
Wide floated table doesn't wrap onto new line
upstream_bug: >
Mozilla#1277782
origin: >
Bootstrap#19839
-
browser: >
Firefox
summary: >
Mouse sometimes not within element for purposes of `mouseenter`/`mouseleave` when it's within SVG elements
upstream_bug: >
Mozilla#577785
origin: >
Bootstrap#19670
-
browser: >
Firefox
summary: >
`position: absolute` element that's wider than its column renders differently than other browsers
upstream_bug: >
Mozilla#1282363
origin: >
Bootstrap#20161
-
browser: >
Firefox (Windows)
summary: >
Right border of `<select>` menu is sometimes missing when screen is set to uncommon resolution
upstream_bug: >
Mozilla#545685
origin: >
Bootstrap#15990
-
browser: >
Firefox (OS X & Linux)
summary: >
Badge widget causes bottom border of Tabs widget to unexpectedly not overlap
upstream_bug: >
Mozilla#1259972
origin: >
Bootstrap#19626
-
browser: >
Chrome (Android)
summary: >
Tapping on an `<input>` in a scrollable overlay doesn't scroll the `<input>` into view
upstream_bug: >
Chromium#595210
origin: >
Bootstrap#17338
- -
browser: > browser: >
Chrome (OS X) Chrome (OS X)
@ -88,36 +188,6 @@
origin: > origin: >
Offshoot of Bootstrap#8350 & Chromium#337668 Offshoot of Bootstrap#8350 & Chromium#337668
-
browser: >
Chrome (OS X)
summary: >
Caps Lock indicator not shown in `<input type="password">` with `display: block`
upstream_bug: >
Chromium#460200
origin: >
Bootstrap#15832
-
browser: >
Chrome
summary: >
Focus ring of image map within a modal is displayed in the wrong location.
upstream_bug: >
Chromium#475128
origin: >
Bootstrap#16180
-
browser: >
Chrome
summary: >
Incorrect viewport size used for media queries when printing.
upstream_bug: >
Chromium#273306
origin: >
Bootstrap#12078
- -
browser: > browser: >
Chrome Chrome
@ -142,11 +212,31 @@
browser: > browser: >
Chrome Chrome
summary: > summary: >
`width: 1%` on nested table cell causes its table to hog horizontal space. `table-cell` borders not overlapping despite `margin-right: -1px`
upstream_bug: > upstream_bug: >
Chromium#427994 Chromium#534750
origin: > origin: >
Bootstrap#16372 Bootstrap#17438, Bootstrap#14237
-
browser: >
Chrome
summary: >
Clicking scrollbar in `<select multiple>` with overflowed options will select nearby `<option>`
upstream_bug: >
Chromium#597642
origin: >
Bootstrap#19810
-
browser: >
Chrome
summary: >
Don't make `:hover` sticky on touch-friendly webpages
upstream_bug: >
Chromium#370155
origin: >
Bootstrap#12832
- -
browser: > browser: >
@ -162,31 +252,23 @@
browser: > browser: >
Safari Safari
summary: > summary: >
`width: 1%` on nested table cell causes its table to hog horizontal space.
upstream_bug: >
WebKit#144696, Safari#20839572
origin: >
Bootstrap#16372
-
browser: >
Safari Safari
summary: > summary: >
Incorrect placement of `position: fixed` element when it's a child of a `position: relative; left: X%;` element. `rem` units in media queries should be calculated using `font-size: initial`, not the root element's `font-size`
upstream_bug: > upstream_bug: >
WebKit#147284, Safari#21993128 WebKit#156684
origin: > origin: >
Bootstrap#16814 Bootstrap#17403
- -
browser: > browser: >
Safari (OS X) Safari (OS X)
summary: > summary: >
Scrollbar clipped in `select[multiple]` with padding. `px`, `em`, and `rem` should all behave the same in media queries when page zoom is applied
upstream_bug: > upstream_bug: >
WebKit#128489, Safari#19208483 WebKit#156687
origin: > origin: >
Bootstrap#12536 Bootstrap#17403
- -
browser: > browser: >
@ -200,16 +282,6 @@
Normalize#283, Normalize#283,
Chromium#337668 Chromium#337668
-
browser: >
Safari (OS X)
summary: >
`display: table-cell;` within media query renders incorrectly when resizing the window.
upstream_bug: >
WebKit#138167, Safari#18987206
origin: >
Bootstrap#9774
- -
browser: > browser: >
Safari (OS X) Safari (OS X)
@ -222,13 +294,13 @@
- -
browser: > browser: >
Safari (OS X) Safari (iPad)
summary: > summary: >
Focus ring of image map within a modal is displayed in the wrong location. `<select>` menu on iPad causes shifting of hit-testing areas
upstream_bug: > upstream_bug: >
WebKit#143527, Safari#21908735 WebKit#150079, Safari#23082521
origin: > origin: >
Bootstrap#16180 Bootstrap#14975
- -
browser: > browser: >
@ -250,6 +322,16 @@
origin: > origin: >
Bootstrap#14708 Bootstrap#14708
-
browser: >
Safari (iOS)
summary: >
Can't move cursor to start of text after entering long string of text into `<input type="text">`
upstream_bug: >
WebKit#148061, Safari#22299624
origin: >
Bootstrap#16988
- -
browser: > browser: >
Safari (iOS) Safari (iOS)
@ -264,8 +346,88 @@
browser: > browser: >
Safari (iOS) Safari (iOS)
summary: > summary: >
Tapping below `<input>`s can focus them in some cases Tapping on `<body>` doesn't fire `click` events
upstream_bug: > upstream_bug: >
WebKit#146244, Safari#21509310 WebKit#151933
origin: > origin: >
Bootstrap#15968 Bootstrap#16028
-
browser: >
Safari (iOS)
summary: >
`position:fixed` is incorrectly positioned when tab bar is visible on iPhone 6S+ Safari
upstream_bug: >
WebKit#153056
origin: >
Bootstrap#18859
-
browser: >
Safari (iOS)
summary: >
Tapping into an `<input>` within a `position:fixed` element scrolls to the top of the page
upstream_bug: >
WebKit#153224, Safari#24235301
origin: >
Bootstrap#17497
-
browser: >
Safari (iOS)
summary: >
`<body>` with `overflow:hidden` CSS is scrollable on iOS
upstream_bug: >
WebKit#153852
origin: >
Bootstrap#14839
-
browser: >
Safari (iOS)
summary: >
Scroll gesture in text field in `position:fixed` element sometimes scrolls `<body>` instead of scrollable ancestor
upstream_bug: >
WebKit#153856
origin: >
Bootstrap#14839
-
browser: >
Safari (iOS)
summary: >
Tapping from one `<input>` to another in an overlay can cause shaking/jiggling effect
upstream_bug: >
WebKit#158276
origin: >
Bootstrap#19927
-
browser: >
Safari (iOS)
summary: >
Modal with `-webkit-overflow-scrolling: touch` doesn't become scrollable after added text makes it taller
upstream_bug: >
WebKit#158342
origin: >
Bootstrap#17695
-
browser: >
Safari (iOS)
summary: >
Don't make `:hover` sticky on touch-friendly webpages
upstream_bug: >
WebKit#158517
origin: >
Bootstrap#12832
-
browser: >
Safari (iPad Pro)
summary: >
Rendering of descendants of `position: fixed` element gets clipped on iPad Pro in Landscape orientation
upstream_bug: >
WebKit#152637, Safari#24030853
origin: >
Bootstrap#18738

View file

@ -0,0 +1,109 @@
-
browser: >
Microsoft Edge
summary: >
Implement the [`:dir()` pseudo-class](https://developer.mozilla.org/en-US/docs/Web/CSS/:dir) from Selectors Level 4
upstream_bug: >
UserVoice#12299532
origin: >
Bootstrap#19984
-
browser: >
Microsoft Edge
summary: >
Implement [sticky positioning](http://html5please.com/#position:sticky) from CSS Positioned Layout Level 3
upstream_bug: >
UserVoice#6263621
origin: >
Bootstrap#17021
-
browser: >
Microsoft Edge
summary: >
Implement the HTML5 [`<dialog>` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dialog)
upstream_bug: >
UserVoice#6508895
origin: >
Bootstrap#20175
-
browser: >
Firefox
summary: >
Fire a [`transitioncancel` event](https://developer.mozilla.org/en-US/docs/Web/Events/transitioncancel) when a CSS transition is canceled
upstream_bug: >
Mozilla#1264125
origin: >
Mozilla#1182856
-
browser: >
Firefox
summary: >
Implement the [`of <selector-list>` clause](https://caniuse.com/#feat=css-nth-child-of) of the `:nth-child()` pseudo-class
upstream_bug: >
Mozilla#854148
origin: >
Bootstrap#20143
-
browser: >
Firefox
summary: >
Implement the HTML5 [`<dialog>` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dialog)
upstream_bug: >
Mozilla#840640
origin: >
Bootstrap#20175
-
browser: >
Chrome
summary: >
Implement the [`of <selector-list>` clause](https://caniuse.com/#feat=css-nth-child-of) of the `:nth-child()` pseudo-class
upstream_bug: >
Chromium#304163
origin: >
Bootstrap#20143
-
browser: >
Chrome
summary: >
Implement the [`:dir()` pseudo-class](https://developer.mozilla.org/en-US/docs/Web/CSS/:dir) from Selectors Level 4
upstream_bug: >
Chromium#576815
origin: >
Bootstrap#19984
-
browser: >
Chrome
summary: >
Implement [sticky positioning](http://html5please.com/#position:sticky) from CSS Positioned Layout Level 3
upstream_bug: >
Chromium#231752
origin: >
Bootstrap#17021
-
browser: >
Safari
summary: >
Implement the [`:dir()` pseudo-class](https://developer.mozilla.org/en-US/docs/Web/CSS/:dir) from Selectors Level 4
upstream_bug: >
WebKit#64861
origin: >
Bootstrap#19984
-
browser: >
Safari
summary: >
Implement the HTML5 [`<dialog>` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dialog)
upstream_bug: >
WebKit#84635
origin: >
Bootstrap#20175

View file

@ -1,27 +0,0 @@
- name: Mark Otto
user: mdo
gravatar: bc4ab438f7a4ce1c406aadc688427f2c
- name: Jacob Thornton
user: fat
gravatar: a98244cbdacaf1c0b55499466002f7a8
- name: Chris Rebert
user: cvrebert
gravatar: edec428c425453955f770095a7d26c50
- name: Julian Thilo
user: juthilo
gravatar: 0f7dd3ce58a416be5685ea6194f82b11
- name: XhmikosR
user: xhmikosr
gravatar: e37759b1ea0125d4e97b1e00b5eed26f
- name: Heinrich Fenkart
user: hnrch02
gravatar: 0d53f5d3d3d28bd470f394d98f7ef48f
- name: Patrick H. Lauke
user: patrickhlauke
gravatar: 357f279672db832fc41a5a2f36559fcb

View file

@ -1,19 +1,14 @@
- name: Lyft - name: Lyft
url: https://www.lyft.com url: https://www.lyft.com
expo_url: http://expo.getbootstrap.com/2014/10/29/lyft/ expo_url: https://expo.getbootstrap.com/2014/10/29/lyft/
img: lyft img: lyft
- name: Vogue - name: Vogue
url: http://www.vogue.com url: http://www.vogue.com
expo_url: http://expo.getbootstrap.com/2014/09/30/vogue/ expo_url: https://expo.getbootstrap.com/2014/09/30/vogue/
img: vogue img: vogue
- name: Riot Design
url: http://riotdesign.eu/en/
expo_url: http://expo.getbootstrap.com/2014/03/13/riot-design/
img: riot
- name: Newsweek - name: Newsweek
url: http://www.newsweek.com/ url: http://www.newsweek.com/
expo_url: http://expo.getbootstrap.com/2014/02/12/newsweek/ expo_url: https://expo.getbootstrap.com/2014/02/12/newsweek/
img: newsweek img: newsweek

20
docs/_data/team.yml Normal file
View file

@ -0,0 +1,20 @@
- name: Mark Otto
user: mdo
- name: Jacob Thornton
user: fat
- name: Chris Rebert
user: cvrebert
- name: XhmikosR
user: xhmikosr
- name: Patrick H. Lauke
user: patrickhlauke
- name: Johann-S
user: johann-s
- name: Andres Galante
user: andresgalante

View file

@ -1,7 +1,7 @@
- name: Chinese - name: Chinese
code: zh code: zh
description: Bootstrap 中文文档 description: Bootstrap 中文文档
url: http://v3.bootcss.com/ url: https://v3.bootcss.com/
- name: Danish - name: Danish
code: da code: da
@ -21,7 +21,7 @@
- name: Italian - name: Italian
code: it code: it
description: Bootstrap in Italiano description: Bootstrap in Italiano
url: http://www.hackerstribe.com/guide/IT-bootstrap-3.1.1/ url: https://www.hackerstribe.com/guide/IT-bootstrap-3.1.1/
- name: Korean - name: Korean
code: ko code: ko
@ -31,7 +31,7 @@
- name: Brazilian Portuguese - name: Brazilian Portuguese
code: pt-BR code: pt-BR
description: Bootstrap em Português do Brasil description: Bootstrap em Português do Brasil
url: http://bootstrapbrasil.github.io/ url: https://getbootstrap.com.br/
- name: Russian - name: Russian
code: ru code: ru
@ -51,7 +51,7 @@
- name: Ukrainian - name: Ukrainian
code: uk code: uk
description: Bootstrap українською description: Bootstrap українською
url: http://twbs.docs.org.ua url: https://twbs.docs.org.ua/
- name: Vietnamese - name: Vietnamese
code: vi code: vi

View file

@ -1 +1 @@
<div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script>var z = document.createElement("script"); z.async = true; z.src = "http://engine.carbonads.com/z/32341/azcarbon_2_1_0_HORIZ"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div> <script async src="https://cdn.carbonads.com/carbon.js?zoneid=1673&serve=C6AILKT&placement=getbootstrapcom" id="_carbonads_js"></script>

View file

@ -36,7 +36,7 @@
<p>Build on any alert by adding an optional <code>.alert-dismissible</code> and close button.</p> <p>Build on any alert by adding an optional <code>.alert-dismissible</code> and close button.</p>
<div class="bs-callout bs-callout-info" id="callout-alerts-dismiss-plugin"> <div class="bs-callout bs-callout-info" id="callout-alerts-dismiss-plugin">
<h4>Requires JavaScript alert plugin</h4> <h4>Requires JavaScript alert plugin</h4>
<p>For fully functioning, dismissible alerts, you must use the <a href="../javascript/#alerts">alerts JavaScript plugin</a>.</p> <p>For fully functioning, dismissible alerts, you must use the <a href="{{ site.baseurl }}/javascript/#alerts">alerts JavaScript plugin</a>.</p>
</div> </div>
<div class="bs-example" data-example-id="dismissible-alert-css"> <div class="bs-example" data-example-id="dismissible-alert-css">
<div class="alert alert-warning alert-dismissible" role="alert"> <div class="alert alert-warning alert-dismissible" role="alert">

View file

@ -5,7 +5,7 @@
<div class="bs-callout bs-callout-danger" id="callout-btndropdown-dependency"> <div class="bs-callout bs-callout-danger" id="callout-btndropdown-dependency">
<h4>Plugin dependency</h4> <h4>Plugin dependency</h4>
<p>Button dropdowns require the <a href="../javascript/#dropdowns">dropdown plugin</a> to be included in your version of Bootstrap.</p> <p>Button dropdowns require the <a href="{{ site.baseurl }}/javascript/#dropdowns">dropdown plugin</a> to be included in your version of Bootstrap.</p>
</div> </div>
<h2 id="btn-dropdowns-single">Single button dropdowns</h2> <h2 id="btn-dropdowns-single">Single button dropdowns</h2>

View file

@ -1,7 +1,7 @@
<div class="bs-docs-section"> <div class="bs-docs-section">
<h1 id="btn-groups" class="page-header">Button groups</h1> <h1 id="btn-groups" class="page-header">Button groups</h1>
<p class="lead">Group a series of buttons together on a single line with the button group. Add on optional JavaScript radio and checkbox style behavior with <a href="../javascript/#buttons">our buttons plugin</a>.</p> <p class="lead">Group a series of buttons together on a single line with the button group. Add on optional JavaScript radio and checkbox style behavior with <a href="{{ site.baseurl }}/javascript/#buttons">our buttons plugin</a>.</p>
<div class="bs-callout bs-callout-warning" id="callout-btn-group-tooltips"> <div class="bs-callout bs-callout-warning" id="callout-btn-group-tooltips">
<h4>Tooltips &amp; popovers in button groups require special setting</h4> <h4>Tooltips &amp; popovers in button groups require special setting</h4>

View file

@ -1,7 +1,7 @@
<div class="bs-docs-section"> <div class="bs-docs-section">
<h1 id="dropdowns" class="page-header">Dropdowns</h1> <h1 id="dropdowns" class="page-header">Dropdowns</h1>
<p class="lead">Toggleable, contextual menu for displaying lists of links. Made interactive with the <a href="../javascript/#dropdowns">dropdown JavaScript plugin</a>.</p> <p class="lead">Toggleable, contextual menu for displaying lists of links. Made interactive with the <a href="{{ site.baseurl }}/javascript/#dropdowns">dropdown JavaScript plugin</a>.</p>
<h2 id="dropdowns-example">Example</h2> <h2 id="dropdowns-example">Example</h2>
<p>Wrap the dropdown's trigger and the dropdown menu within <code>.dropdown</code>, or another element that declares <code>position: relative;</code>. Then add the menu's HTML.</p> <p>Wrap the dropdown's trigger and the dropdown menu within <code>.dropdown</code>, or another element that declares <code>position: relative;</code>. Then add the menu's HTML.</p>
@ -28,6 +28,7 @@
<li><a href="#">Action</a></li> <li><a href="#">Action</a></li>
<li><a href="#">Another action</a></li> <li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li> <li><a href="#">Something else here</a></li>
<li role="separator" class="divider"></li>
<li><a href="#">Separated link</a></li> <li><a href="#">Separated link</a></li>
</ul> </ul>
</div> </div>
@ -57,6 +58,7 @@
<li><a href="#">Action</a></li> <li><a href="#">Action</a></li>
<li><a href="#">Another action</a></li> <li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li> <li><a href="#">Something else here</a></li>
<li role="separator" class="divider"></li>
<li><a href="#">Separated link</a></li> <li><a href="#">Separated link</a></li>
</ul> </ul>
</div> </div>

View file

@ -2,7 +2,7 @@
<h1 id="glyphicons" class="page-header">Glyphicons</h1> <h1 id="glyphicons" class="page-header">Glyphicons</h1>
<h2 id="glyphicons-glyphs">Available glyphs</h2> <h2 id="glyphicons-glyphs">Available glyphs</h2>
<p>Includes over 250 glyphs in font format from the Glyphicon Halflings set. <a href="http://glyphicons.com/">Glyphicons</a> Halflings are normally not available for free, but their creator has made them available for Bootstrap free of cost. As a thank you, we only ask that you include a link back to <a href="http://glyphicons.com/">Glyphicons</a> whenever possible.</p> <p>Includes over 250 glyphs in font format from the Glyphicon Halflings set. <a href="https://www.glyphicons.com/">Glyphicons</a> Halflings are normally not available for free, but their creator has made them available for Bootstrap free of cost. As a thank you, we only ask that you include a link back to <a href="https://www.glyphicons.com/">Glyphicons</a> whenever possible.</p>
<div class="bs-glyphicons"> <div class="bs-glyphicons">
<ul class="bs-glyphicons-list"> <ul class="bs-glyphicons-list">
{% for iconClassName in site.data.glyphicons %} {% for iconClassName in site.data.glyphicons %}
@ -30,7 +30,7 @@
<p>Bootstrap assumes icon font files will be located in the <code>../fonts/</code> directory, relative to the compiled CSS files. Moving or renaming those font files means updating the CSS in one of three ways:</p> <p>Bootstrap assumes icon font files will be located in the <code>../fonts/</code> directory, relative to the compiled CSS files. Moving or renaming those font files means updating the CSS in one of three ways:</p>
<ul> <ul>
<li>Change the <code>@icon-font-path</code> and/or <code>@icon-font-name</code> variables in the source Less files.</li> <li>Change the <code>@icon-font-path</code> and/or <code>@icon-font-name</code> variables in the source Less files.</li>
<li>Utilize the <a href="http://lesscss.org/usage/#command-line-usage-relative-urls">relative URLs option</a> provided by the Less compiler.</li> <li>Utilize the <a href="http://lesscss.org/usage/#less-options-relative-urls">relative URLs option</a> provided by the Less compiler.</li>
<li>Change the <code>url()</code> paths in the compiled CSS.</li> <li>Change the <code>url()</code> paths in the compiled CSS.</li>
</ul> </ul>
<p>Use whatever option best suits your specific development setup.</p> <p>Use whatever option best suits your specific development setup.</p>

View file

@ -10,14 +10,14 @@
<p>Since Bootstrap doesn't know how much space the content in your navbar needs, you might run into issues with content wrapping into a second row. To resolve this, you can:</p> <p>Since Bootstrap doesn't know how much space the content in your navbar needs, you might run into issues with content wrapping into a second row. To resolve this, you can:</p>
<ol type="a"> <ol type="a">
<li>Reduce the amount or width of navbar items.</li> <li>Reduce the amount or width of navbar items.</li>
<li>Hide certain navbar items at certain screen sizes using <a href="../css/#responsive-utilities">responsive utility classes</a>.</li> <li>Hide certain navbar items at certain screen sizes using <a href="{{ site.baseurl }}/css/#responsive-utilities">responsive utility classes</a>.</li>
<li>Change the point at which your navbar switches between collapsed and horizontal mode. Customize the <code>@grid-float-breakpoint</code> variable or add your own media query.</li> <li>Change the point at which your navbar switches between collapsed and horizontal mode. Customize the <code>@grid-float-breakpoint</code> variable or add your own media query.</li>
</ol> </ol>
</div> </div>
<div class="bs-callout bs-callout-danger" id="callout-navbar-js"> <div class="bs-callout bs-callout-danger" id="callout-navbar-js">
<h4>Requires JavaScript plugin</h4> <h4>Requires JavaScript plugin</h4>
<p>If JavaScript is disabled and the viewport is narrow enough that the navbar collapses, it will be impossible to expand the navbar and view the content within the <code>.navbar-collapse</code>.</p> <p>If JavaScript is disabled and the viewport is narrow enough that the navbar collapses, it will be impossible to expand the navbar and view the content within the <code>.navbar-collapse</code>.</p>
<p>The responsive navbar requires the <a href="../javascript/#collapse">collapse plugin</a> to be included in your version of Bootstrap.</p> <p>The responsive navbar requires the <a href="{{ site.baseurl }}/javascript/#collapse">collapse plugin</a> to be included in your version of Bootstrap.</p>
</div> </div>
<div class="bs-callout bs-callout-info" id="callout-navbar-breakpoint"> <div class="bs-callout bs-callout-info" id="callout-navbar-breakpoint">
<h4>Changing the collapsed mobile navbar breakpoint</h4> <h4>Changing the collapsed mobile navbar breakpoint</h4>
@ -60,7 +60,7 @@
</ul> </ul>
</li> </li>
</ul> </ul>
<form class="navbar-form navbar-left" role="search"> <form class="navbar-form navbar-left">
<div class="form-group"> <div class="form-group">
<input type="text" class="form-control" placeholder="Search"> <input type="text" class="form-control" placeholder="Search">
</div> </div>
@ -115,7 +115,7 @@
</ul> </ul>
</li> </li>
</ul> </ul>
<form class="navbar-form navbar-left" role="search"> <form class="navbar-form navbar-left">
<div class="form-group"> <div class="form-group">
<input type="text" class="form-control" placeholder="Search"> <input type="text" class="form-control" placeholder="Search">
</div> </div>
@ -147,7 +147,7 @@
<div class="container-fluid"> <div class="container-fluid">
<div class="navbar-header"> <div class="navbar-header">
<a class="navbar-brand" href="#"> <a class="navbar-brand" href="#">
<img alt="Brand" width="20" height="20" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAA81BMVEX///9VPnxWPXxWPXxWPXxWPXxWPXxWPXz///9hSYT6+vuFc6BXPn37+vz8+/z9/f2LeqWMe6aOfqiTg6uXiK5bQ4BZQX9iS4VdRYFdRYJfSINuWI5vWY9xXJF0YJR3Y5Z4ZZd5ZZd6Z5h9apq0qcW1qsW1q8a6sMqpnLyrn76tocCvpMGwpMJoUoprVYxeRoJjS4abjLGilLemmbrDutDFvdLPx9nX0eDa1OLb1uPd1+Td2OXe2eXh3Ofj3+nk4Orl4evp5u7u7PLv7fPx7/T08vb08/f19Pf29Pj39vn6+fuEcZ9YP35aQn/8/P1ZQH5fR4PINAOdAAAAB3RSTlMAIWWOw/P002ipnAAAAPhJREFUeF6NldWOhEAUBRvtRsfdfd3d3e3/v2ZPmGSWZNPDqScqqaSBSy4CGJbtSi2ubRkiwXRkBo6ZdJIApeEwoWMIS1JYwuZCW7hc6ApJkgrr+T/eW1V9uKXS5I5GXAjW2VAV9KFfSfgJpk+w4yXhwoqwl5AIGwp4RPgdK3XNHD2ETYiwe6nUa18f5jYSxle4vulw7/EtoCdzvqkPv3bn7M0eYbc7xFPXzqCrRCgH0Hsm/IjgTSb04W0i7EGjz+xw+wR6oZ1MnJ9TWrtToEx+4QfcZJ5X6tnhw+nhvqebdVhZUJX/oFcKvaTotUcvUnY188ue/n38AunzPPE8yg7bAAAAAElFTkSuQmCC"> <img alt="Brand" width="20" height="20" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAB+0lEQVR4AcyYg5LkUBhG+1X2PdZGaW3btm3btm3bHttWrPomd1r/2Jn/VJ02TpxcH4CQ/dsuazWgzbIdrm9dZVd4pBz4zx2igTaFHrhvjneVXNHCSqIlFEjiwMyyyOBilRgGSqLNF1jnwNQdIvAt48C3IlBmHCiLQHC2zoHDu6zG1iXn6+y62ScxY9AODO6w0pvAqf23oSE4joOfH6OxfMoRnoGUm+de8wykbFt6wZtA07QwtNOqKh3ZbS3Wzz2F+1c/QJY0UCJ/J3kXWJfv7VhxCRRV1jGw7XI+gcO7rEFFRvdYxydwcPsVsC0bQdKScngt4iUTD4Fy/8p7PoHzRu1DclwmgmiqgUXjD3oTKHbAt869qdJ7l98jNTEblPTkXMwetpvnftA0LLHb4X8kiY9Kx6Q+W7wJtG0HR7fdrtYz+x7iya0vkEtUULIzCjC21wY+W/GYXusRH5kGytWTLxgEEhePPwhKYb7EK3BQuxWwTBuUkd3X8goUn6fMHLyTT+DCsQdAEXNzSMeVPAJHdF2DmH8poCREp3uwm7HsGq9J9q69iuunX6EgrwQVObjpBt8z6rdPfvE8kiiyhsvHnomrQx6BxYUyYiNS8f75H1w4/ISepDZLoDhNJ9cdNUquhRsv+6EP9oNH7Iff2A9g8h8CLt1gH0Qf9NMQAFnO60BJFQe0AAAAAElFTkSuQmCC">
</a> </a>
</div> </div>
</div> </div>
@ -182,7 +182,7 @@
<a class="navbar-brand" href="#">Brand</a> <a class="navbar-brand" href="#">Brand</a>
</div> </div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-2"> <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-2">
<form class="navbar-form navbar-left" role="search"> <form class="navbar-form navbar-left">
<div class="form-group"> <div class="form-group">
<input type="text" class="form-control" placeholder="Search"> <input type="text" class="form-control" placeholder="Search">
</div> </div>
@ -203,7 +203,7 @@
<div class="bs-callout bs-callout-warning" id="callout-navbar-mobile-caveats"> <div class="bs-callout bs-callout-warning" id="callout-navbar-mobile-caveats">
<h4>Mobile device caveats</h4> <h4>Mobile device caveats</h4>
<p>There are some caveats regarding using form controls within fixed elements on mobile devices. <a href="../getting-started/#support-fixed-position-keyboards">See our browser support docs</a> for details.</p> <p>There are some caveats regarding using form controls within fixed elements on mobile devices. <a href="{{ site.baseurl }}/getting-started/#support-fixed-position-keyboards">See our browser support docs</a> for details.</p>
</div> </div>
<div class="bs-callout bs-callout-warning" id="callout-navbar-form-labels"> <div class="bs-callout bs-callout-warning" id="callout-navbar-form-labels">
@ -238,7 +238,7 @@
<div class="bs-callout bs-callout-warning" id="callout-navbar-btn-context"> <div class="bs-callout bs-callout-warning" id="callout-navbar-btn-context">
<h4>Context-specific usage</h4> <h4>Context-specific usage</h4>
<p>Like the standard <a href="../css/#buttons">button classes</a>, <code>.navbar-btn</code> can be used on <code>&lt;a&gt;</code> and <code>&lt;input&gt;</code> elements. However, neither <code>.navbar-btn</code> nor the standard button classes should be used on <code>&lt;a&gt;</code> elements within <code>.navbar-nav</code>.</p> <p>Like the standard <a href="{{ site.baseurl }}/css/#buttons">button classes</a>, <code>.navbar-btn</code> can be used on <code>&lt;a&gt;</code> and <code>&lt;input&gt;</code> elements. However, neither <code>.navbar-btn</code> nor the standard button classes should be used on <code>&lt;a&gt;</code> elements within <code>.navbar-nav</code>.</p>
</div> </div>
<h2 id="navbar-text">Text</h2> <h2 id="navbar-text">Text</h2>

View file

@ -5,7 +5,7 @@
<div class="bs-callout bs-callout-info" id="callout-navs-tabs-plugin"> <div class="bs-callout bs-callout-info" id="callout-navs-tabs-plugin">
<h4>Using navs for tab panels requires JavaScript tabs plugin</h4> <h4>Using navs for tab panels requires JavaScript tabs plugin</h4>
<p>For tabs with tabbable areas, you must use the <a href="../javascript/#tabs">tabs JavaScript plugin</a>. The markup will also require additional <code>role</code> and ARIA attributes see the plugin's <a href="../javascript/#tabs-usage">example markup</a> for further details.</p> <p>For tabs with tabbable areas, you must use the <a href="{{ site.baseurl }}/javascript/#tabs">tabs JavaScript plugin</a>. The markup will also require additional <code>role</code> and ARIA attributes see the plugin's <a href="{{ site.baseurl }}/javascript/#tabs-usage">example markup</a> for further details.</p>
</div> </div>
<div class="bs-callout bs-callout-warning" id="callout-navs-accessibility"> <div class="bs-callout bs-callout-warning" id="callout-navs-accessibility">
@ -67,7 +67,7 @@
<p><strong class="text-danger">Justified navbar nav links are currently not supported.</strong></p> <p><strong class="text-danger">Justified navbar nav links are currently not supported.</strong></p>
<div class="bs-callout bs-callout-warning" id="callout-navs-justified-safari"> <div class="bs-callout bs-callout-warning" id="callout-navs-justified-safari">
<h4>Safari and responsive justified navs</h4> <h4>Safari and responsive justified navs</h4>
<p>As of v8.0, Safari exhibits a bug in which resizing your browser horizontally causes rendering errors in the justified nav that are cleared upon refreshing. This bug is also shown in the <a href="../examples/justified-nav/">justified nav example</a>.</p> <p>As of v9.1.2, Safari exhibits a bug in which resizing your browser horizontally causes rendering errors in the justified nav that are cleared upon refreshing. This bug is also shown in the <a href="{{ site.baseurl }}/examples/justified-nav/">justified nav example</a>.</p>
</div> </div>
<div class="bs-example" data-example-id="simple-nav-justified"> <div class="bs-example" data-example-id="simple-nav-justified">
<ul class="nav nav-tabs nav-justified"> <ul class="nav nav-tabs nav-justified">
@ -117,7 +117,7 @@
<h2 id="nav-dropdowns">Using dropdowns</h2> <h2 id="nav-dropdowns">Using dropdowns</h2>
<p>Add dropdown menus with a little extra HTML and the <a href="../javascript/#dropdowns">dropdowns JavaScript plugin</a>.</p> <p>Add dropdown menus with a little extra HTML and the <a href="{{ site.baseurl }}/javascript/#dropdowns">dropdowns JavaScript plugin</a>.</p>
<h3>Tabs with dropdowns</h3> <h3>Tabs with dropdowns</h3>
<div class="bs-example" data-example-id="nav-tabs-with-dropdown"> <div class="bs-example" data-example-id="nav-tabs-with-dropdown">

View file

@ -6,7 +6,7 @@
<h2 id="pagination-default">Default pagination</h2> <h2 id="pagination-default">Default pagination</h2>
<p>Simple pagination inspired by Rdio, great for apps and search results. The large block is hard to miss, easily scalable, and provides large click areas.</p> <p>Simple pagination inspired by Rdio, great for apps and search results. The large block is hard to miss, easily scalable, and provides large click areas.</p>
<div class="bs-example" data-example-id="simple-pagination"> <div class="bs-example" data-example-id="simple-pagination">
<nav> <nav aria-label="Page navigation">
<ul class="pagination"> <ul class="pagination">
<li> <li>
<a href="#" aria-label="Previous"> <a href="#" aria-label="Previous">
@ -27,7 +27,7 @@
</nav> </nav>
</div> </div>
{% highlight html %} {% highlight html %}
<nav> <nav aria-label="Page navigation">
<ul class="pagination"> <ul class="pagination">
<li> <li>
<a href="#" aria-label="Previous"> <a href="#" aria-label="Previous">
@ -48,10 +48,15 @@
</nav> </nav>
{% endhighlight %} {% endhighlight %}
<div class="bs-callout bs-callout-info" id="callout-pagination-label">
<h4>Labelling the pagination component</h4>
<p>The pagination component should be wrapped in a <code>&lt;nav&gt;</code> element to identify it as a navigation section to screen readers and other assistive technologies. In addition, as a page is likely to have more than one such navigation section already (such as the primary navigation in the header, or a sidebar navigation), it is advisable to provide a descriptive <code>aria-label</code> for the <code>&lt;nav&gt;</code> which reflects its purpose. For example, if the pagination component is used to navigate between a set of search results, an appropriate label could be <code>aria-label="Search results pages"</code>.</p>
</div>
<h3>Disabled and active states</h3> <h3>Disabled and active states</h3>
<p>Links are customizable for different circumstances. Use <code>.disabled</code> for unclickable links and <code>.active</code> to indicate the current page.</p> <p>Links are customizable for different circumstances. Use <code>.disabled</code> for unclickable links and <code>.active</code> to indicate the current page.</p>
<div class="bs-example" data-example-id="disabled-active-pagination"> <div class="bs-example" data-example-id="disabled-active-pagination">
<nav> <nav aria-label="...">
<ul class="pagination"> <ul class="pagination">
<li class="disabled"><a href="#" aria-label="Previous"><span aria-hidden="true">&laquo;</span></a></li> <li class="disabled"><a href="#" aria-label="Previous"><span aria-hidden="true">&laquo;</span></a></li>
<li class="active"><a href="#">1 <span class="sr-only">(current)</span></a></li> <li class="active"><a href="#">1 <span class="sr-only">(current)</span></a></li>
@ -64,7 +69,7 @@
</nav> </nav>
</div> </div>
{% highlight html %} {% highlight html %}
<nav> <nav aria-label="...">
<ul class="pagination"> <ul class="pagination">
<li class="disabled"><a href="#" aria-label="Previous"><span aria-hidden="true">&laquo;</span></a></li> <li class="disabled"><a href="#" aria-label="Previous"><span aria-hidden="true">&laquo;</span></a></li>
<li class="active"><a href="#">1 <span class="sr-only">(current)</span></a></li> <li class="active"><a href="#">1 <span class="sr-only">(current)</span></a></li>
@ -72,9 +77,9 @@
</ul> </ul>
</nav> </nav>
{% endhighlight %} {% endhighlight %}
<p>You can optionally swap out active or disabled anchors for <code>&lt;span&gt;</code>, or omit the anchor in the case of the previous/next arrows, to remove click functionality while retaining intended styles.</p> <p>We recommend that you swap out active or disabled anchors for <code>&lt;span&gt;</code>, or omit the anchor in the case of the previous/next arrows, to remove click functionality while retaining intended styles.</p>
{% highlight html %} {% highlight html %}
<nav> <nav aria-label="...">
<ul class="pagination"> <ul class="pagination">
<li class="disabled"> <li class="disabled">
<span> <span>
@ -93,7 +98,7 @@
<h3>Sizing</h3> <h3>Sizing</h3>
<p>Fancy larger or smaller pagination? Add <code>.pagination-lg</code> or <code>.pagination-sm</code> for additional sizes.</p> <p>Fancy larger or smaller pagination? Add <code>.pagination-lg</code> or <code>.pagination-sm</code> for additional sizes.</p>
<div class="bs-example" data-example-id="pagination-sizing"> <div class="bs-example" data-example-id="pagination-sizing">
<nav> <nav aria-label="...">
<ul class="pagination pagination-lg"> <ul class="pagination pagination-lg">
<li><a href="#" aria-label="Previous"><span aria-hidden="true">&laquo;</span></a></li> <li><a href="#" aria-label="Previous"><span aria-hidden="true">&laquo;</span></a></li>
<li><a href="#">1</a></li> <li><a href="#">1</a></li>
@ -104,7 +109,7 @@
<li><a href="#" aria-label="Next"><span aria-hidden="true">&raquo;</span></a></li> <li><a href="#" aria-label="Next"><span aria-hidden="true">&raquo;</span></a></li>
</ul> </ul>
</nav> </nav>
<nav> <nav aria-label="...">
<ul class="pagination"> <ul class="pagination">
<li><a href="#" aria-label="Previous"><span aria-hidden="true">&laquo;</span></a></li> <li><a href="#" aria-label="Previous"><span aria-hidden="true">&laquo;</span></a></li>
<li><a href="#">1</a></li> <li><a href="#">1</a></li>
@ -115,7 +120,7 @@
<li><a href="#" aria-label="Next"><span aria-hidden="true">&raquo;</span></a></li> <li><a href="#" aria-label="Next"><span aria-hidden="true">&raquo;</span></a></li>
</ul> </ul>
</nav> </nav>
<nav> <nav aria-label="...">
<ul class="pagination pagination-sm"> <ul class="pagination pagination-sm">
<li><a href="#" aria-label="Previous"><span aria-hidden="true">&laquo;</span></a></li> <li><a href="#" aria-label="Previous"><span aria-hidden="true">&laquo;</span></a></li>
<li><a href="#">1</a></li> <li><a href="#">1</a></li>
@ -128,9 +133,9 @@
</nav> </nav>
</div> </div>
{% highlight html %} {% highlight html %}
<nav><ul class="pagination pagination-lg">...</ul></nav> <nav aria-label="..."><ul class="pagination pagination-lg">...</ul></nav>
<nav><ul class="pagination">...</ul></nav> <nav aria-label="..."><ul class="pagination">...</ul></nav>
<nav><ul class="pagination pagination-sm">...</ul></nav> <nav aria-label="..."><ul class="pagination pagination-sm">...</ul></nav>
{% endhighlight %} {% endhighlight %}
@ -140,7 +145,7 @@
<h3>Default example</h3> <h3>Default example</h3>
<p>By default, the pager centers links.</p> <p>By default, the pager centers links.</p>
<div class="bs-example" data-example-id="simple-pager"> <div class="bs-example" data-example-id="simple-pager">
<nav> <nav aria-label="...">
<ul class="pager"> <ul class="pager">
<li><a href="#">Previous</a></li> <li><a href="#">Previous</a></li>
<li><a href="#">Next</a></li> <li><a href="#">Next</a></li>
@ -148,7 +153,7 @@
</nav> </nav>
</div> </div>
{% highlight html %} {% highlight html %}
<nav> <nav aria-label="...">
<ul class="pager"> <ul class="pager">
<li><a href="#">Previous</a></li> <li><a href="#">Previous</a></li>
<li><a href="#">Next</a></li> <li><a href="#">Next</a></li>
@ -159,7 +164,7 @@
<h3>Aligned links</h3> <h3>Aligned links</h3>
<p>Alternatively, you can align each link to the sides:</p> <p>Alternatively, you can align each link to the sides:</p>
<div class="bs-example" data-example-id="aligned-pager-links"> <div class="bs-example" data-example-id="aligned-pager-links">
<nav> <nav aria-label="...">
<ul class="pager"> <ul class="pager">
<li class="previous"><a href="#"><span aria-hidden="true">&larr;</span> Older</a></li> <li class="previous"><a href="#"><span aria-hidden="true">&larr;</span> Older</a></li>
<li class="next"><a href="#">Newer <span aria-hidden="true">&rarr;</span></a></li> <li class="next"><a href="#">Newer <span aria-hidden="true">&rarr;</span></a></li>
@ -167,7 +172,7 @@
</nav> </nav>
</div> </div>
{% highlight html %} {% highlight html %}
<nav> <nav aria-label="...">
<ul class="pager"> <ul class="pager">
<li class="previous"><a href="#"><span aria-hidden="true">&larr;</span> Older</a></li> <li class="previous"><a href="#"><span aria-hidden="true">&larr;</span> Older</a></li>
<li class="next"><a href="#">Newer <span aria-hidden="true">&rarr;</span></a></li> <li class="next"><a href="#">Newer <span aria-hidden="true">&rarr;</span></a></li>
@ -179,7 +184,7 @@
<h3>Optional disabled state</h3> <h3>Optional disabled state</h3>
<p>Pager links also use the general <code>.disabled</code> utility class from the pagination.</p> <p>Pager links also use the general <code>.disabled</code> utility class from the pagination.</p>
<div class="bs-example" data-example-id="disabled-pager"> <div class="bs-example" data-example-id="disabled-pager">
<nav> <nav aria-label="...">
<ul class="pager"> <ul class="pager">
<li class="previous disabled"><a href="#"><span aria-hidden="true">&larr;</span> Older</a></li> <li class="previous disabled"><a href="#"><span aria-hidden="true">&larr;</span> Older</a></li>
<li class="next"><a href="#">Newer <span aria-hidden="true">&rarr;</span></a></li> <li class="next"><a href="#">Newer <span aria-hidden="true">&rarr;</span></a></li>
@ -187,7 +192,7 @@
</nav> </nav>
</div> </div>
{% highlight html %} {% highlight html %}
<nav> <nav aria-label="...">
<ul class="pager"> <ul class="pager">
<li class="previous disabled"><a href="#"><span aria-hidden="true">&larr;</span> Older</a></li> <li class="previous disabled"><a href="#"><span aria-hidden="true">&larr;</span> Older</a></li>
<li class="next"><a href="#">Newer <span aria-hidden="true">&rarr;</span></a></li> <li class="next"><a href="#">Newer <span aria-hidden="true">&rarr;</span></a></li>

View file

@ -21,7 +21,7 @@
{% endhighlight %} {% endhighlight %}
<h2 id="panels-heading">Panel with heading</h2> <h2 id="panels-heading">Panel with heading</h2>
<p>Easily add a heading container to your panel with <code>.panel-heading</code>. You may also include any <code>&lt;h1&gt;</code>-<code>&lt;h6&gt;</code> with a <code>.panel-title</code> class to add a pre-styled heading.</p> <p>Easily add a heading container to your panel with <code>.panel-heading</code>. You may also include any <code>&lt;h1&gt;</code>-<code>&lt;h6&gt;</code> with a <code>.panel-title</code> class to add a pre-styled heading. However, the font sizes of <code>&lt;h1&gt;</code>-<code>&lt;h6&gt;</code> are overridden by <code>.panel-heading</code>.</p>
<p>For proper link coloring, be sure to place links in headings within <code>.panel-title</code>.</p> <p>For proper link coloring, be sure to place links in headings within <code>.panel-title</code>.</p>
<div class="bs-example" data-example-id="panel-with-heading"> <div class="bs-example" data-example-id="panel-with-heading">
<div class="panel panel-default"> <div class="panel panel-default">

View file

@ -8,6 +8,11 @@
<p>Progress bars use CSS3 transitions and animations to achieve some of their effects. These features are not supported in Internet Explorer 9 and below or older versions of Firefox. Opera 12 does not support animations.</p> <p>Progress bars use CSS3 transitions and animations to achieve some of their effects. These features are not supported in Internet Explorer 9 and below or older versions of Firefox. Opera 12 does not support animations.</p>
</div> </div>
<div class="bs-callout bs-callout-info">
<h4 id="callout-progress-csp">Content Security Policy (CSP) compatibility</h4>
<p>If your website has a <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP">Content Security Policy (CSP)</a> which doesn't allow <code>style-src 'unsafe-inline'</code>, then you won't be able to use inline <code>style</code> attributes to set progress bar widths as shown in our examples below. Alternative methods for setting the widths that are compatible with strict CSPs include using a little custom JavaScript (that sets <code>element.style.width</code>) or using custom CSS classes.</p>
</div>
<h2 id="progress-basic">Basic example</h2> <h2 id="progress-basic">Basic example</h2>
<p>Default progress bar.</p> <p>Default progress bar.</p>
<div class="bs-example" data-example-id="simple-progress-bar"> <div class="bs-example" data-example-id="simple-progress-bar">
@ -168,7 +173,7 @@
<div class="progress"> <div class="progress">
<div class="progress-bar progress-bar-striped" role="progressbar" aria-valuenow="45" aria-valuemin="0" aria-valuemax="100" style="width: 45%"><span class="sr-only">45% Complete</span></div> <div class="progress-bar progress-bar-striped" role="progressbar" aria-valuenow="45" aria-valuemin="0" aria-valuemax="100" style="width: 45%"><span class="sr-only">45% Complete</span></div>
</div> </div>
<button type="button" class="btn btn-default bs-docs-activate-animated-progressbar" data-toggle="button" aria-pressed="false" autocomplete="off">Toggle animation</button> <button type="button" class="btn btn-default bs-docs-activate-animated-progressbar" data-toggle="button" aria-pressed="false">Toggle animation</button>
</div> </div>
{% highlight html %} {% highlight html %}
<div class="progress"> <div class="progress">

View file

@ -6,7 +6,7 @@
<p><strong>Pro-Tip!</strong> You don't need to include <code>frameborder="0"</code> in your <code>&lt;iframe&gt;</code>s as we override that for you.</p> <p><strong>Pro-Tip!</strong> You don't need to include <code>frameborder="0"</code> in your <code>&lt;iframe&gt;</code>s as we override that for you.</p>
<div class="bs-example" data-example-id="responsive-embed-16by9-iframe-youtube"> <div class="bs-example" data-example-id="responsive-embed-16by9-iframe-youtube">
<div class="embed-responsive embed-responsive-16by9"> <div class="embed-responsive embed-responsive-16by9">
<iframe class="embed-responsive-item" src="//www.youtube.com/embed/zpOULjyy-n8?rel=0" allowfullscreen></iframe> <iframe class="embed-responsive-item" src="https://www.youtube.com/embed/zpOULjyy-n8?rel=0" allowfullscreen></iframe>
</div> </div>
</div> </div>
{% highlight html %} {% highlight html %}

View file

@ -1,8 +1,8 @@
<div class="bs-docs-section"> <div class="bs-docs-section">
<h1 id="thumbnails" class="page-header">Thumbnails</h1> <h1 id="thumbnails" class="page-header">Thumbnails</h1>
<p class="lead">Extend Bootstrap's <a href="../css/#grid">grid system</a> with the thumbnail component to easily display grids of images, videos, text, and more.</p> <p class="lead">Extend Bootstrap's <a href="{{ site.baseurl }}/css/#grid">grid system</a> with the thumbnail component to easily display grids of images, videos, text, and more.</p>
<p>If you're looking for Pinterest-like presentation of thumbnails of varying heights and/or widths, you'll need to use a third-party plugin such as <a href="http://masonry.desandro.com">Masonry</a>, <a href="http://isotope.metafizzy.co">Isotope</a>, or <a href="http://salvattore.com">Salvattore</a>.</p> <p>If you're looking for Pinterest-like presentation of thumbnails of varying heights and/or widths, you'll need to use a third-party plugin such as <a href="https://masonry.desandro.com/">Masonry</a>, <a href="https://isotope.metafizzy.co/">Isotope</a>, or <a href="https://salvattore.js.org/">Salvattore</a>.</p>
<h2 id="thumbnails-default">Default example</h2> <h2 id="thumbnails-default">Default example</h2>
<p>By default, Bootstrap's thumbnails are designed to showcase linked images with minimal required markup.</p> <p>By default, Bootstrap's thumbnails are designed to showcase linked images with minimal required markup.</p>

View file

@ -51,7 +51,7 @@
{% endhighlight %} {% endhighlight %}
<div class="bs-callout bs-callout-warning" id="callout-formgroup-inputgroup"> <div class="bs-callout bs-callout-warning" id="callout-formgroup-inputgroup">
<h4>Don't mix form groups with input groups</h4> <h4>Don't mix form groups with input groups</h4>
<p>Do not mix form groups directly with <a href="/components/#input-groups">input groups</a>. Instead, nest the input group inside of the form group.</p> <p>Do not mix form groups directly with <a href="{{ site.baseurl }}/components/#input-groups">input groups</a>. Instead, nest the input group inside of the form group.</p>
</div> </div>
@ -240,7 +240,7 @@
{% endhighlight %} {% endhighlight %}
<div class="bs-callout bs-callout-info" id="callout-xref-input-group"> <div class="bs-callout bs-callout-info" id="callout-xref-input-group">
<h4>Input groups</h4> <h4>Input groups</h4>
<p>To add integrated text or buttons before and/or after any text-based <code>&lt;input&gt;</code>, <a href="../components/#input-groups">check out the input group component</a>.</p> <p>To add integrated text or buttons before and/or after any text-based <code>&lt;input&gt;</code>, <a href="{{ site.baseurl }}/components/#input-groups">check out the input group component</a>.</p>
</div> </div>
<h3>Textarea</h3> <h3>Textarea</h3>
@ -625,7 +625,7 @@
</form> </form>
</div><!-- /.bs-example --> </div><!-- /.bs-example -->
{% highlight html %} {% highlight html %}
<label class="sr-only" for="inputHelpBlock">Input with help text</label> <label for="inputHelpBlock">Input with help text</label>
<input type="text" id="inputHelpBlock" class="form-control" aria-describedby="helpBlock"> <input type="text" id="inputHelpBlock" class="form-control" aria-describedby="helpBlock">
... ...
<span id="helpBlock" class="help-block">A block of help text that breaks onto a new line and may extend beyond one line.</span> <span id="helpBlock" class="help-block">A block of help text that breaks onto a new line and may extend beyond one line.</span>
@ -639,7 +639,7 @@
<div class="bs-callout bs-callout-warning" id="callout-form-validation-state-accessibility"> <div class="bs-callout bs-callout-warning" id="callout-form-validation-state-accessibility">
<h4>Conveying validation state to assistive technologies and colorblind users</h4> <h4>Conveying validation state to assistive technologies and colorblind users</h4>
<p>Using these validation styles to denote the state of a form control only provides a visual, color-based indication, which will not be conveyed to users of assistive technologies - such as screen readers - or to colorblind users.</p> <p>Using these validation styles to denote the state of a form control only provides a visual, color-based indication, which will not be conveyed to users of assistive technologies - such as screen readers - or to colorblind users.</p>
<p>Ensure that an alternative indication of state is also provided. For instance, you can include a hint about state in the form control's <code>&lt;label&gt;</code> text itself (as is the case in the following code example), include a <a href="../components/#glyphicons">Glyphicon</a> (with appropriate alternative text using the <code>.sr-only</code> class - see the <a href="../components/#glyphicons-examples">Glyphicon examples</a>), or by providing an additional <a href="#forms-help-text">help text</a> block. Specifically for assistive technologies, invalid form controls can also be assigned an <code>aria-invalid="true"</code> attribute.</p> <p>Ensure that an alternative indication of state is also provided. For instance, you can include a hint about state in the form control's <code>&lt;label&gt;</code> text itself (as is the case in the following code example), include a <a href="{{ site.baseurl }}/components/#glyphicons">Glyphicon</a> (with appropriate alternative text using the <code>.sr-only</code> class - see the <a href="{{ site.baseurl }}/components/#glyphicons-examples">Glyphicon examples</a>), or by providing an additional <a href="#forms-help-text">help text</a> block. Specifically for assistive technologies, invalid form controls can also be assigned an <code>aria-invalid="true"</code> attribute.</p>
</div> </div>
<div class="bs-example" data-example-id="form-validation-states"> <div class="bs-example" data-example-id="form-validation-states">
@ -728,7 +728,7 @@
<p><strong class="text-danger">Feedback icons only work with textual <code>&lt;input class="form-control"&gt;</code> elements.</strong></p> <p><strong class="text-danger">Feedback icons only work with textual <code>&lt;input class="form-control"&gt;</code> elements.</strong></p>
<div class="bs-callout bs-callout-warning" id="callout-has-feedback-icon-positioning"> <div class="bs-callout bs-callout-warning" id="callout-has-feedback-icon-positioning">
<h4>Icons, labels, and input groups</h4> <h4>Icons, labels, and input groups</h4>
<p>Manual positioning of feedback icons is required for inputs without a label and for <a href="../components#input-groups">input groups</a> with an add-on on the right. You are strongly encouraged to provide labels for all inputs for accessibility reasons. If you wish to prevent labels from being displayed, hide them with the <code>.sr-only</code> class. If you must do without labels, adjust the <code>top</code> value of the feedback icon. For input groups, adjust the <code>right</code> value to an appropriate pixel value depending on the width of your addon.</p> <p>Manual positioning of feedback icons is required for inputs without a label and for <a href="{{ site.baseurl }}/components/#input-groups">input groups</a> with an add-on on the right. You are strongly encouraged to provide labels for all inputs for accessibility reasons. If you wish to prevent labels from being displayed, hide them with the <code>.sr-only</code> class. If you must do without labels, adjust the <code>top</code> value of the feedback icon. For input groups, adjust the <code>right</code> value to an appropriate pixel value depending on the width of your addon.</p>
</div> </div>
<div class="bs-callout bs-callout-warning" id="callout-has-feedback-icon-accessibility"> <div class="bs-callout bs-callout-warning" id="callout-has-feedback-icon-accessibility">
<h4>Conveying the icon's meaning to assistive technologies</h4> <h4>Conveying the icon's meaning to assistive technologies</h4>
@ -1026,4 +1026,3 @@
</div> </div>
</div> </div>
{% endhighlight %} {% endhighlight %}

View file

@ -292,7 +292,7 @@
<div class="col-xs-6 col-sm-3">.col-xs-6 .col-sm-3</div> <div class="col-xs-6 col-sm-3">.col-xs-6 .col-sm-3</div>
</div> </div>
{% endhighlight %} {% endhighlight %}
<p>In addition to column clearing at responsive breakpoints, you may need to <strong>reset offsets, pushes, or pulls</strong>. See this in action in <a href="../examples/grid/">the grid example</a>.</p> <p>In addition to column clearing at responsive breakpoints, you may need to <strong>reset offsets, pushes, or pulls</strong>. See this in action in <a href="{{ site.baseurl }}/examples/grid/">the grid example</a>.</p>
{% highlight html %} {% highlight html %}
<div class="row"> <div class="row">
<div class="col-sm-5 col-md-6">.col-sm-5 .col-md-6</div> <div class="col-sm-5 col-md-6">.col-sm-5 .col-md-6</div>
@ -306,6 +306,38 @@
{% endhighlight %} {% endhighlight %}
<h2 id="grid-remove-gutters">Remove gutters</h2>
<p>Remove the gutters from a row and it's columns with the <code>.row-no-gutters</code> class.</p>
<div class="row row-no-gutters show-grid">
<div class="col-xs-12 col-md-8">.col-xs-12 .col-md-8</div>
<div class="col-xs-6 col-md-4">.col-xs-6 .col-md-4</div>
</div>
<div class="row row-no-gutters show-grid">
<div class="col-xs-6 col-md-4">.col-xs-6 .col-md-4</div>
<div class="col-xs-6 col-md-4">.col-xs-6 .col-md-4</div>
<div class="col-xs-6 col-md-4">.col-xs-6 .col-md-4</div>
</div>
<div class="row row-no-gutters show-grid">
<div class="col-xs-6">.col-xs-6</div>
<div class="col-xs-6">.col-xs-6</div>
</div>
{% highlight html %}
<div class="row row-no-gutters">
<div class="col-xs-12 col-md-8">.col-xs-12 .col-md-8</div>
<div class="col-xs-6 col-md-4">.col-xs-6 .col-md-4</div>
</div>
<div class="row row-no-gutters">
<div class="col-xs-6 col-md-4">.col-xs-6 .col-md-4</div>
<div class="col-xs-6 col-md-4">.col-xs-6 .col-md-4</div>
<div class="col-xs-6 col-md-4">.col-xs-6 .col-md-4</div>
</div>
<div class="row row-no-gutters">
<div class="col-xs-6">.col-xs-6</div>
<div class="col-xs-6">.col-xs-6</div>
</div>
{% endhighlight %}
<h2 id="grid-offsetting">Offsetting columns</h2> <h2 id="grid-offsetting">Offsetting columns</h2>
<p>Move columns to the right using <code>.col-md-offset-*</code> classes. These classes increase the left margin of a column by <code>*</code> columns. For example, <code>.col-md-offset-4</code> moves <code>.col-md-4</code> over four columns.</p> <p>Move columns to the right using <code>.col-md-offset-*</code> classes. These classes increase the left margin of a column by <code>*</code> columns. For example, <code>.col-md-offset-4</code> moves <code>.col-md-4</code> over four columns.</p>
<div class="row show-grid"> <div class="row show-grid">
@ -333,6 +365,17 @@
</div> </div>
{% endhighlight %} {% endhighlight %}
<p>You can also override offsets from lower grid tiers with <code>.col-*-offset-0</code> classes.</p>
{% highlight html %}
<div class="row">
<div class="col-xs-6 col-sm-4">
</div>
<div class="col-xs-6 col-sm-4">
</div>
<div class="col-xs-6 col-xs-offset-3 col-sm-4 col-sm-offset-0">
</div>
</div>
{% endhighlight %}
<h2 id="grid-nesting">Nesting columns</h2> <h2 id="grid-nesting">Nesting columns</h2>
<p>To nest your content with the default grid, add a new <code>.row</code> and set of <code>.col-sm-*</code> columns within an existing <code>.col-sm-*</code> column. Nested rows should include a set of columns that add up to 12 or fewer (it is not required that you use all 12 available columns).</p> <p>To nest your content with the default grid, add a new <code>.row</code> and set of <code>.col-sm-*</code> columns within an existing <code>.col-sm-*</code> column. Nested rows should include a set of columns that add up to 12 or fewer (it is not required that you use all 12 available columns).</p>

View file

@ -64,7 +64,7 @@
<h3 id="helper-classes-carets">Carets</h3> <h3 id="helper-classes-carets">Carets</h3>
<p>Use carets to indicate dropdown functionality and direction. Note that the default caret will reverse automatically in <a href="../components/#btn-dropdowns-dropup">dropup menus</a>.</p> <p>Use carets to indicate dropdown functionality and direction. Note that the default caret will reverse automatically in <a href="{{ site.baseurl }}/components/#btn-dropdowns-dropup">dropup menus</a>.</p>
<div class="bs-example" data-example-id="caret"> <div class="bs-example" data-example-id="caret">
<span class="caret"></span> <span class="caret"></span>
</div> </div>
@ -99,7 +99,7 @@
<div class="bs-callout bs-callout-warning" id="callout-helper-pull-navbar"> <div class="bs-callout bs-callout-warning" id="callout-helper-pull-navbar">
<h4>Not for use in navbars</h4> <h4>Not for use in navbars</h4>
<p>To align components in navbars with utility classes, use <code>.navbar-left</code> or <code>.navbar-right</code> instead. <a href="../components/#navbar-component-alignment">See the navbar docs</a> for details.</p> <p>To align components in navbars with utility classes, use <code>.navbar-left</code> or <code>.navbar-right</code> instead. <a href="{{ site.baseurl }}/components/#navbar-component-alignment">See the navbar docs</a> for details.</p>
</div> </div>
@ -180,7 +180,7 @@
<h3 id="helper-classes-screen-readers">Screen reader and keyboard navigation content</h3> <h3 id="helper-classes-screen-readers">Screen reader and keyboard navigation content</h3>
<p>Hide an element to all devices <strong>except screen readers</strong> with <code>.sr-only</code>. Combine <code>.sr-only</code> with <code>.sr-only-focusable</code> to show the element again when it's focused (e.g. by a keyboard-only user). Necessary for following <a href="../getting-started/#accessibility">accessibility best practices</a>. Can also be used as mixins.</p> <p>Hide an element to all devices <strong>except screen readers</strong> with <code>.sr-only</code>. Combine <code>.sr-only</code> with <code>.sr-only-focusable</code> to show the element again when it's focused (e.g. by a keyboard-only user). Necessary for following <a href="{{ site.baseurl }}/getting-started/#accessibility">accessibility best practices</a>. Can also be used as mixins.</p>
{% highlight html %} {% highlight html %}
<a class="sr-only sr-only-focusable" href="#content">Skip to main content</a> <a class="sr-only sr-only-focusable" href="#content">Skip to main content</a>
{% endhighlight %} {% endhighlight %}

View file

@ -3,7 +3,7 @@
<h2 id="images-responsive">Responsive images</h2> <h2 id="images-responsive">Responsive images</h2>
<p>Images in Bootstrap 3 can be made responsive-friendly via the addition of the <code>.img-responsive</code> class. This applies <code>max-width: 100%;</code>, <code>height: auto;</code> and <code>display: block;</code> to the image so that it scales nicely to the parent element.</p> <p>Images in Bootstrap 3 can be made responsive-friendly via the addition of the <code>.img-responsive</code> class. This applies <code>max-width: 100%;</code>, <code>height: auto;</code> and <code>display: block;</code> to the image so that it scales nicely to the parent element.</p>
<p>To center images which use the <code>.img-responsive</code> class, use <code>.center-block</code> instead of <code>.text-center</code>. <a href="../css/#helper-classes-center">See the helper classes section</a> for more details about <code>.center-block</code> usage.</p> <p>To center images which use the <code>.img-responsive</code> class, use <code>.center-block</code> instead of <code>.text-center</code>. <a href="{{ site.baseurl }}/css/#helper-classes-center">See the helper classes section</a> for more details about <code>.center-block</code> usage.</p>
<div class="bs-callout bs-callout-warning" id="callout-images-ie-svg"> <div class="bs-callout bs-callout-warning" id="callout-images-ie-svg">
<h4>SVG images and IE 8-10</h4> <h4>SVG images and IE 8-10</h4>
<p>In Internet Explorer 8-10, SVG images with <code>.img-responsive</code> are disproportionately sized. To fix this, add <code>width: 100% \9;</code> where necessary. Bootstrap doesn't apply this automatically as it causes complications to other image formats.</p> <p>In Internet Explorer 8-10, SVG images with <code>.img-responsive</code> are disproportionately sized. To fix this, add <code>width: 100% \9;</code> where necessary. Bootstrap doesn't apply this automatically as it causes complications to other image formats.</p>

View file

@ -7,11 +7,11 @@
<h2 id="less-bootstrap">Compiling Bootstrap</h2> <h2 id="less-bootstrap">Compiling Bootstrap</h2>
<p>Bootstrap can be used in at least two ways: with the compiled CSS or with the source Less files. To compile the Less files, <a href="../getting-started/#grunt">consult the Getting Started section</a> for how to setup your development environment to run the necessary commands.</p> <p>Bootstrap can be used in at least two ways: with the compiled CSS or with the source Less files. To compile the Less files, <a href="{{ site.baseurl }}/getting-started/#grunt">consult the Getting Started section</a> for how to setup your development environment to run the necessary commands.</p>
<p>Third party compilation tools may work with Bootstrap, but they are not supported by our core team.</p> <p>Third party compilation tools may work with Bootstrap, but they are not supported by our core team.</p>
<h2 id="less-variables">Variables</h2> <h2 id="less-variables">Variables</h2>
<p>Variables are used throughout the entire project as a way to centralize and share commonly used values like colors, spacing, or font stacks. For a complete breakdown, please see <a href="../customize/#less-variables-section">the Customizer</a>.</p> <p>Variables are used throughout the entire project as a way to centralize and share commonly used values like colors, spacing, or font stacks. For a complete breakdown, please see <a href="{{ site.baseurl }}/customize/#less-variables-section">the Customizer</a>.</p>
<h3 id="less-variables-colors">Colors</h3> <h3 id="less-variables-colors">Colors</h3>
<p>Easily make use of two color schemes: grayscale and semantic. Grayscale colors provide quick access to commonly used shades of black while semantic include various colors assigned to meaningful contextual values.</p> <p>Easily make use of two color schemes: grayscale and semantic. Grayscale colors provide quick access to commonly used shades of black while semantic include various colors assigned to meaningful contextual values.</p>
@ -161,7 +161,7 @@ a {
<h3 id="less-mixins-box-sizing">Box-sizing</h3> <h3 id="less-mixins-box-sizing">Box-sizing</h3>
<p>Reset your components' box model with a single mixin. For context, see this <a href="https://developer.mozilla.org/en-US/docs/CSS/box-sizing" target="_blank">helpful article from Mozilla</a>.</p> <p>Reset your components' box model with a single mixin. For context, see this <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/box-sizing" rel="noopener" target="_blank">helpful article from Mozilla</a>.</p>
<p>The mixin is <strong>deprecated</strong> as of v3.2.0, with the introduction of Autoprefixer. To preserve backwards-compatibility, Bootstrap will continue to use the mixin internally until Bootstrap v4.</p> <p>The mixin is <strong>deprecated</strong> as of v3.2.0, with the introduction of Autoprefixer. To preserve backwards-compatibility, Bootstrap will continue to use the mixin internally until Bootstrap v4.</p>
{% highlight scss %} {% highlight scss %}
.box-sizing(@box-model) { .box-sizing(@box-model) {
@ -390,7 +390,7 @@ a {
<p>Utility mixins are mixins that combine otherwise unrelated CSS properties to achieve a specific goal or task.</p> <p>Utility mixins are mixins that combine otherwise unrelated CSS properties to achieve a specific goal or task.</p>
<h3 id="less-mixins-clearfix">Clearfix</h3> <h3 id="less-mixins-clearfix">Clearfix</h3>
<p>Forget adding <code>class="clearfix"</code> to any element and instead add the <code>.clearfix()</code> mixin where appropriate. Uses the <a href="http://nicolasgallagher.com/micro-clearfix-hack/" target="_blank">micro clearfix</a> from <a href="https://twitter.com/necolas" target="_blank">Nicolas Gallagher</a>.</p> <p>Forget adding <code>class="clearfix"</code> to any element and instead add the <code>.clearfix()</code> mixin where appropriate. Uses the <a href="http://nicolasgallagher.com/micro-clearfix-hack/" rel="noopener" target="_blank">micro clearfix</a> from <a href="https://twitter.com/necolas" rel="noopener" target="_blank">Nicolas Gallagher</a>.</p>
{% highlight scss %} {% highlight scss %}
// Mixin // Mixin
.clearfix() { .clearfix() {

View file

@ -6,7 +6,7 @@
<h2 id="overview-doctype">HTML5 doctype</h2> <h2 id="overview-doctype">HTML5 doctype</h2>
<p>Bootstrap makes use of certain HTML elements and CSS properties that require the use of the HTML5 doctype. Include it at the beginning of all your projects.</p> <p>Bootstrap makes use of certain HTML elements and CSS properties that require the use of the HTML5 doctype. Include it at the beginning of all your projects.</p>
{% highlight html %} {% highlight html %}
<!DOCTYPE html> <!doctype html>
<html lang="en"> <html lang="en">
... ...
</html> </html>
@ -33,7 +33,7 @@
<p>These styles can be found within <code>scaffolding.less</code>.</p> <p>These styles can be found within <code>scaffolding.less</code>.</p>
<h2 id="overview-normalize">Normalize.css</h2> <h2 id="overview-normalize">Normalize.css</h2>
<p>For improved cross-browser rendering, we use <a href="http://necolas.github.io/normalize.css/" target="_blank">Normalize.css</a>, a project by <a href="https://twitter.com/necolas" target="_blank">Nicolas Gallagher</a> and <a href="https://twitter.com/jon_neal" target="_blank">Jonathan Neal</a>.</p> <p>For improved cross-browser rendering, we use <a href="https://necolas.github.io/normalize.css/" rel="noopener" target="_blank">Normalize.css</a>, a project by <a href="https://twitter.com/necolas" rel="noopener" target="_blank">Nicolas Gallagher</a> and <a href="https://twitter.com/jon_neal" rel="noopener" target="_blank">Jonathan Neal</a>.</p>
<h2 id="overview-container">Containers</h2> <h2 id="overview-container">Containers</h2>
<p>Bootstrap requires a containing element to wrap site contents and house our grid system. You may choose one of two containers to use in your projects. Note that, due to <code>padding</code> and more, neither container is nestable.</p> <p>Bootstrap requires a containing element to wrap site contents and house our grid system. You may choose one of two containers to use in your projects. Note that, due to <code>padding</code> and more, neither container is nestable.</p>

View file

@ -357,7 +357,7 @@
</div> </div>
<div class="bs-callout bs-callout-warning" id="callout-tables-responsive-ff-fieldset"> <div class="bs-callout bs-callout-warning" id="callout-tables-responsive-ff-fieldset">
<h4>Firefox and fieldsets</h4> <h4>Firefox and fieldsets</h4>
<p>Firefox has some awkward fieldset styling involving <code>width</code> that interferes with the responsive table. This cannot be overriden without a Firefox-specific hack that we <strong>don't</strong> provide in Bootstrap:</p> <p>Firefox has some awkward fieldset styling involving <code>width</code> that interferes with the responsive table. This cannot be overridden without a Firefox-specific hack that we <strong>don't</strong> provide in Bootstrap:</p>
{% highlight css %} {% highlight css %}
@-moz-document url-prefix() { @-moz-document url-prefix() {
fieldset { display: table-cell; } fieldset { display: table-cell; }

File diff suppressed because it is too large Load diff

View file

@ -1,18 +1,18 @@
<!-- Footer <!-- Footer
================================================== --> ================================================== -->
<footer class="bs-docs-footer" role="contentinfo"> <footer class="bs-docs-footer">
<div class="container"> <div class="container">
<ul class="bs-docs-footer-links"> <ul class="bs-docs-footer-links">
<li><a href="{{ site.repo }}">GitHub</a></li> <li><a href="{{ site.repo }}">GitHub</a></li>
<li><a href="https://twitter.com/getbootstrap">Twitter</a></li> <li><a href="https://twitter.com/getbootstrap">Twitter</a></li>
<li><a href="../getting-started/#examples">Examples</a></li> <li><a href="{{ site.baseurl }}/getting-started/#examples">Examples</a></li>
<li><a href="../about/">About</a></li> <li><a href="{{ site.baseurl }}/about/">About</a></li>
</ul> </ul>
<p>Designed and built with all the love in the world by <a href="https://twitter.com/mdo" target="_blank">@mdo</a> and <a href="https://twitter.com/fat" target="_blank">@fat</a>. Maintained by the <a href="https://github.com/orgs/twbs/people">core team</a> with the help of <a href="https://github.com/twbs/bootstrap/graphs/contributors">our contributors</a>.</p> <p>Designed and built with all the love in the world by <a href="https://twitter.com/mdo" rel="noopener" target="_blank">@mdo</a> and <a href="https://twitter.com/fat" rel="noopener" target="_blank">@fat</a>. Maintained by the <a href="https://github.com/orgs/twbs/people">core team</a> with the help of <a href="https://github.com/twbs/bootstrap/graphs/contributors">our contributors</a>.</p>
<p>Code licensed <a rel="license" href="https://github.com/twbs/bootstrap/blob/master/LICENSE" target="_blank">MIT</a>, docs <a rel="license" href="https://creativecommons.org/licenses/by/3.0/" target="_blank">CC BY 3.0</a>.</p> <p>Code licensed <a href="https://github.com/twbs/bootstrap/blob/v3-dev/LICENSE" rel="license noopener" target="_blank">MIT</a>, docs <a href="https://creativecommons.org/licenses/by/3.0/" rel="license noopener" target="_blank">CC BY 3.0</a>.</p>
</div> </div>
</footer> </footer>
@ -20,48 +20,34 @@
<!-- Bootstrap core JavaScript <!-- Bootstrap core JavaScript
================================================== --> ================================================== -->
<!-- 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.11.3/jquery.min.js"></script> <script src="https://code.jquery.com/jquery-1.12.4.min.js" integrity="sha384-nvAa0+6Qg9clwYCGGPpDQLVpLNn0fRaROjHqs13t4Ggj3Ez50XnGQqc/r8MhnRDZ" crossorigin="anonymous"></script>
<script>window.jQuery || document.write('<script src="../assets/js/vendor/jquery.min.js"><\/script>')</script> <script>window.jQuery || document.write('<script src="{{ site.baseurl }}/assets/js/vendor/jquery.min.js"><\/script>')</script>
{% if site.github %} {% if site.github %}
<script src="../dist/js/bootstrap.min.js"></script> <script src="{{ site.baseurl }}/dist/js/bootstrap.min.js"></script>
{% else %} {% else %}
<script src="../dist/js/bootstrap.js"></script> <script src="{{ site.baseurl }}/dist/js/bootstrap.js"></script>
{% endif %}
{% if page.layout == "default" %}
<script src="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.js"></script>
{% endif %} {% endif %}
{% if site.github %} {% if site.github %}
<script src="../assets/js/docs.min.js"></script> <script src="{{ site.baseurl }}/assets/js/docs.min.js"></script>
{% else %} {% else %}
{% for file in site.data.configBridge.paths.docsJs %} {% for file in site.data.configBridge.paths.docsJs %}
<script src="{{ file }}"></script> <script src="{{ file | replace_first: '..', site.baseurl }}"></script>
{% endfor %} {% endfor %}
{% endif %} {% endif %}
{% if page.slug == "customize" %} {% if page.slug == "customize" %}
<script>var __configBridge = {{ site.data.configBridge.config | jsonify }}</script> <script>var __configBridge = {{ site.data.configBridge.config | jsonify }}</script>
{% if site.github %} {% if site.github %}
<script src="../assets/js/customize.min.js"></script> <script src="{{ site.baseurl }}/assets/js/customize.min.js"></script>
{% else %} {% else %}
{% for file in site.data.configBridge.paths.customizerJs %} {% for file in site.data.configBridge.paths.customizerJs %}
<script src="{{ file }}"></script> <script src="{{ file | replace_first: '..', site.baseurl }}"></script>
{% endfor %} {% endfor %}
{% endif %} {% endif %}
{% endif %} {% endif %}
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
<script src="../assets/js/ie10-viewport-bug-workaround.js"></script>
<!-- Analytics
================================================== -->
<script>
var _gauges = _gauges || [];
(function() {
var t = document.createElement('script');
t.async = true;
t.id = 'gauges-tracker';
t.setAttribute('data-site-id', '4f0dc9fef5a1f55508000013');
t.src = '//secure.gaug.es/track.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(t, s);
})();
</script>

View file

@ -3,9 +3,9 @@
<p class="lead">Bootstrap follows common web standards and&mdash;with minimal extra effort&mdash;can be used to create sites that are accessible to those using <abbr title="Assistive Technology" class="initialism">AT</abbr>.</p> <p class="lead">Bootstrap follows common web standards and&mdash;with minimal extra effort&mdash;can be used to create sites that are accessible to those using <abbr title="Assistive Technology" class="initialism">AT</abbr>.</p>
<h2>Skip navigation</h2> <h2>Skip navigation</h2>
<p>If your navigation contains many links and comes before the main content in the DOM, add a <code>Skip to main content</code> link before the navigation (for a simple explanation, see this <a href="http://a11yproject.com/posts/skip-nav-links/">A11Y Project article on skip navigation links</a>). Using the <code>.sr-only</code> class will visually hide the skip link, and the <code>.sr-only-focusable</code> class will ensure that the link becomes visible once focused (for sighted keyboard users).</p> <p>If your navigation contains many links and comes before the main content in the DOM, add a <code>Skip to main content</code> link before the navigation (for a simple explanation, see this <a href="https://a11yproject.com/posts/skip-nav-links/">A11Y Project article on skip navigation links</a>). Using the <code>.sr-only</code> class will visually hide the skip link, and the <code>.sr-only-focusable</code> class will ensure that the link becomes visible once focused (for sighted keyboard users).</p>
<div class="bs-callout bs-callout-danger" id="callout-skiplinks"> <div class="bs-callout bs-callout-danger" id="callout-skiplinks">
<p>Due to long-standing shortcomings/bugs in Chrome (see <a href="https://code.google.com/p/chromium/issues/detail?id=262171" title="Chromium bug tracker - Issue 262171: Focus should cycle from named anchor">issue 262171 in the Chromium bug tracker</a>) and Internet Explorer (see this article on <a href="http://accessibleculture.org/articles/2010/05/in-page-links/">in-page links and focus order</a>), you will need to make sure that the target of your skip link is at least programmatically focusable by adding <code>tabindex="-1"</code>.</p> <p>Due to long-standing shortcomings/bugs in Chrome (see <a href="https://bugs.chromium.org/p/chromium/issues/detail?id=262171" title="Chromium bug tracker - Issue 262171: Focus should cycle from named anchor">issue 262171 in the Chromium bug tracker</a>) and Internet Explorer (see this article on <a href="http://accessibleculture.org/articles/2010/05/in-page-links/">in-page links and focus order</a>), you will need to make sure that the target of your skip link is at least programmatically focusable by adding <code>tabindex="-1"</code>.</p>
<p>In addition, you may want to explicitly suppress a visible focus indication on the target (particularly as Chrome currently also sets focus on elements with <code>tabindex="-1"</code> when they are clicked with the mouse) with <code>#content:focus { outline: none; }</code>.</p> <p>In addition, you may want to explicitly suppress a visible focus indication on the target (particularly as Chrome currently also sets focus on elements with <code>tabindex="-1"</code> when they are clicked with the mouse) with <code>#content:focus { outline: none; }</code>.</p>
<p>Note that this bug will also affect any other in-page links your site may be using, rendering them useless for keyboard users. You may consider adding a similar stop-gap fix to all other named anchors / fragment identifiers that act as link targets.</p> <p>Note that this bug will also affect any other in-page links your site may be using, rendering them useless for keyboard users. You may consider adding a similar stop-gap fix to all other named anchors / fragment identifiers that act as link targets.</p>
</div> </div>
@ -21,17 +21,17 @@
<h2>Nested headings</h2> <h2>Nested headings</h2>
<p>When nesting headings (<code>&lt;h1&gt;</code> - <code>&lt;h6&gt;</code>), your primary document header should be an <code>&lt;h1&gt;</code>. Subsequent headings should make logical use of <code>&lt;h2&gt;</code> - <code>&lt;h6&gt;</code> such that screen readers can construct a table of contents for your pages.</p> <p>When nesting headings (<code>&lt;h1&gt;</code> - <code>&lt;h6&gt;</code>), your primary document header should be an <code>&lt;h1&gt;</code>. Subsequent headings should make logical use of <code>&lt;h2&gt;</code> - <code>&lt;h6&gt;</code> such that screen readers can construct a table of contents for your pages.</p>
<p>Learn more at <a href="http://squizlabs.github.io/HTML_CodeSniffer/Standards/Section508/">HTML CodeSniffer</a> and <a href="http://accessibility.psu.edu/headings">Penn State's AccessAbility</a>.</p> <p>Learn more at <a href="https://squizlabs.github.io/HTML_CodeSniffer/Standards/Section508/">HTML CodeSniffer</a> and <a href="http://accessibility.psu.edu/headings/">Penn State's AccessAbility</a>.</p>
<h2>Color contrast</h2> <h2>Color contrast</h2>
<p>Currently, some of the default color combinations available in Bootstrap (such as the various <a href="../css/#buttons">styled button</a> classes, some of the code highlighting colors used for <a href="../css/#code-block">basic code blocks</a>, the <code>.bg-primary</code> <a href="../css/#helper-classes-backgrounds">contextual background</a> helper class, and the default link color when used on a white background) have a low contrast ratio (below the <a href="http://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast">recommended ratio of 4.5:1</a>). This can cause problems to users with low vision or who are color blind. These default colors may need to be modified to increase their contrast and legibility.</p> <p>Currently, some of the default color combinations available in Bootstrap (such as the various <a href="{{ site.baseurl }}/css/#buttons">styled button</a> classes, some of the code highlighting colors used for <a href="{{ site.baseurl }}/css/#code-block">basic code blocks</a>, the <code>.bg-primary</code> <a href="{{ site.baseurl }}/css/#helper-classes-backgrounds">contextual background</a> helper class, and the default link color when used on a white background) have a low contrast ratio (below the <a href="https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast">recommended ratio of 4.5:1</a>). This can cause problems to users with low vision or who are color blind. These default colors may need to be modified to increase their contrast and legibility.</p>
<h2>Additional resources</h2> <h2>Additional resources</h2>
<ul> <ul>
<li><a href="https://github.com/squizlabs/HTML_CodeSniffer">"HTML Codesniffer" bookmarklet for identifying accessibility issues</a></li> <li><a href="https://github.com/squizlabs/HTML_CodeSniffer">"HTML Codesniffer" bookmarklet for identifying accessibility issues</a></li>
<li><a href="https://chrome.google.com/webstore/detail/accessibility-developer-t/fpkknkljclfencbdbgkenhalefipecmb?hl=en">Chrome's Accessibility Developer Tools extension</a></li> <li><a href="https://chrome.google.com/webstore/detail/accessibility-developer-t/fpkknkljclfencbdbgkenhalefipecmb?hl=en">Chrome's Accessibility Developer Tools extension</a></li>
<li><a href="http://www.paciellogroup.com/resources/contrastanalyser/">Colour Contrast Analyser</a> <li><a href="https://developer.paciellogroup.com/resources/contrastanalyser/">Colour Contrast Analyser</a></li>
<li><a href="http://a11yproject.com/">The A11Y Project</a></li> <li><a href="https://a11yproject.com/">The A11Y Project</a></li>
<li><a href="https://developer.mozilla.org/en-US/docs/Accessibility">MDN accessibility documentation</a></li> <li><a href="https://developer.mozilla.org/en-US/docs/Web/Accessibility">MDN accessibility documentation</a></li>
</ul> </ul>
</div> </div>

View file

@ -3,7 +3,43 @@
<p class="lead">Bootstrap is built to work best in the latest desktop and mobile browsers, meaning older browsers might display differently styled, though fully functional, renderings of certain components.</p> <p class="lead">Bootstrap is built to work best in the latest desktop and mobile browsers, meaning older browsers might display differently styled, though fully functional, renderings of certain components.</p>
<h2 id="support-browsers">Supported browsers</h2> <h2 id="support-browsers">Supported browsers</h2>
<p>Specifically, we support the <strong>latest versions</strong> of the following browsers and platforms. On Windows, <strong>we support Internet Explorer 8-11</strong>. More specific support information is provided below.</p> <p>Specifically, we support the <strong>latest versions</strong> of the following browsers and platforms.</p>
<p>Alternative browsers which use the latest version of WebKit, Blink, or Gecko, whether directly or via the platform's web view API, are not explicitly supported. However, Bootstrap should (in most cases) display and function correctly in these browsers as well. More specific support information is provided below.</p>
<h3 id="mobile-devices">Mobile devices</h3>
<p>Generally speaking, Bootstrap supports the latest versions of each major platform's default browsers. Note that proxy browsers (such as Opera Mini, Opera Mobile's Turbo mode, UC Browser Mini, Amazon Silk) are not supported.</p>
<div class="table-responsive">
<table class="table table-bordered table-striped">
<thead>
<tr>
<td></td>
<th>Chrome</th>
<th>Firefox</th>
<th>Safari</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">Android</th>
<td class="text-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> Supported</td>
<td class="text-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> Supported</td>
<td class="text-muted">N/A</td>
</tr>
<tr>
<th scope="row">iOS</th>
<td class="text-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> Supported</td>
<td class="text-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> Supported</td>
<td class="text-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> Supported</td>
</tr>
</tbody>
</table>
</div>
<h3 id="desktop-browsers">Desktop browsers</h3>
<p>Similarly, the latest versions of most desktop browsers are supported.</p>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-bordered table-striped"> <table class="table table-bordered table-striped">
<thead> <thead>
@ -18,24 +54,10 @@
</thead> </thead>
<tbody> <tbody>
<tr> <tr>
<th scope="row">Android</th> <th scope="row">Mac</th>
<td class="text-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> Supported</td> <td class="text-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> Supported</td>
<td class="text-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> Supported</td> <td class="text-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> Supported</td>
<td class="text-muted" rowspan="3" style="vertical-align: middle;">N/A</td>
<td class="text-danger"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span> Not Supported</td>
<td class="text-muted">N/A</td>
</tr>
<tr>
<th scope="row">iOS</th>
<td class="text-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> Supported</td>
<td class="text-muted">N/A</td> <td class="text-muted">N/A</td>
<td class="text-danger"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span> Not Supported</td>
<td class="text-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> Supported</td>
</tr>
<tr>
<th scope="row">Mac OS X</th>
<td class="text-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> Supported</td>
<td class="text-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> Supported</td>
<td class="text-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> Supported</td> <td class="text-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> Supported</td>
<td class="text-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> Supported</td> <td class="text-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> Supported</td>
</tr> </tr>
@ -45,13 +67,18 @@
<td class="text-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> Supported</td> <td class="text-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> Supported</td>
<td class="text-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> Supported</td> <td class="text-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> Supported</td>
<td class="text-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> Supported</td> <td class="text-success"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> Supported</td>
<td class="text-danger"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span> Not Supported</td> <td class="text-danger"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span> Not supported</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<p>Unofficially, Bootstrap should look and behave well enough in Chromium and Chrome for Linux, Firefox for Linux, and Internet Explorer 7, though they are not officially supported.</p>
<p>For a list of some of the browser bugs that Bootstrap has to grapple with, see our <a href="../browser-bugs/">Wall of browser bugs</a>.</p> <p>On Windows, <strong>we support Internet Explorer 8-11</strong>.</p>
<p>For Firefox, in addition to the latest normal stable release, we also support the latest <a href="https://www.mozilla.org/en-US/firefox/organizations/">Extended Support Release (ESR)</a> version of Firefox.</p>
<p>Unofficially, Bootstrap should look and behave well enough in Chromium and Chrome for Linux, Firefox for Linux, and Internet Explorer 7, as well as Microsoft Edge, though they are not officially supported.</p>
<p>For a list of some of the browser bugs that Bootstrap has to grapple with, see our <a href="{{ site.baseurl }}/browser-bugs/">Wall of browser bugs</a>.</p>
<h2 id="support-ie8-ie9">Internet Explorer 8 and 9</h2> <h2 id="support-ie8-ie9">Internet Explorer 8 and 9</h2>
<p>Internet Explorer 8 and 9 are also supported, however, please be aware that some CSS3 properties and HTML5 elements are not fully supported by these browsers. In addition, <strong>Internet Explorer 8 requires the use of <a href="https://github.com/scottjehl/Respond">Respond.js</a> to enable media query support.</strong></p> <p>Internet Explorer 8 and 9 are also supported, however, please be aware that some CSS3 properties and HTML5 elements are not fully supported by these browsers. In addition, <strong>Internet Explorer 8 requires the use of <a href="https://github.com/scottjehl/Respond">Respond.js</a> to enable media query support.</strong></p>
@ -92,7 +119,7 @@
</table> </table>
</div> </div>
<p>Visit <a href="http://caniuse.com/">Can I use...</a> for details on browser support of CSS3 and HTML5 features.</p> <p>Visit <a href="https://caniuse.com/">Can I use...</a> for details on browser support of CSS3 and HTML5 features.</p>
<h2 id="support-ie8-respondjs">Internet Explorer 8 and Respond.js</h2> <h2 id="support-ie8-respondjs">Internet Explorer 8 and Respond.js</h2>
<p>Beware of the following caveats when using Respond.js in your development and production environments for Internet Explorer 8.</p> <p>Beware of the following caveats when using Respond.js in your development and production environments for Internet Explorer 8.</p>
@ -116,25 +143,23 @@
{% endhighlight %} {% endhighlight %}
<p>Confirm the document mode by opening the debugging tools: press <kbd>F12</kbd> and check the "Document Mode".</p> <p>Confirm the document mode by opening the debugging tools: press <kbd>F12</kbd> and check the "Document Mode".</p>
<p>This tag is included in all of Bootstrap's documentation and examples to ensure the best rendering possible in each supported version of Internet Explorer.</p> <p>This tag is included in all of Bootstrap's documentation and examples to ensure the best rendering possible in each supported version of Internet Explorer.</p>
<p>See <a href="https://stackoverflow.com/questions/6771258/whats-the-difference-if-meta-http-equiv-x-ua-compatible-content-ie-edge">this StackOverflow question</a> for more information.</p> <p>See <a href="https://stackoverflow.com/questions/6771258/what-does-meta-http-equiv-x-ua-compatible-content-ie-edge-do">this StackOverflow question</a> for more information.</p>
<h2 id="support-ie10-width">Internet Explorer 10 in Windows 8 and Windows Phone 8</h2> <h2 id="support-ie10-width">Internet Explorer 10 in Windows 8 and Windows Phone 8</h2>
<p>Internet Explorer 10 doesn't differentiate <strong>device width</strong> from <strong>viewport width</strong>, and thus doesn't properly apply the media queries in Bootstrap's CSS. Normally you'd just add a quick snippet of CSS to fix this:</p> <p>Internet Explorer 10 doesn't differentiate <strong>device width</strong> from <strong>viewport width</strong>, and thus doesn't properly apply the media queries in Bootstrap's CSS. Normally you'd just add a quick snippet of CSS to fix this:</p>
{% highlight scss %} {% highlight scss %}
@-ms-viewport { width: device-width; } @-ms-viewport { width: device-width; }
{% endhighlight %} {% endhighlight %}
<p>However, this doesn't work for devices running Windows Phone 8 versions older than <a href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/10/14/introducing-windows-phone-preview-for-developers.aspx">Update 3 (a.k.a. GDR3)</a>, as it causes such devices to show a mostly desktop view instead of narrow "phone" view. To address this, you'll need to <strong>include the following CSS and JavaScript to work around the bug</strong>.</p> <p>However, this doesn't work for devices running Windows Phone 8 versions older than <a href="https://blogs.windows.com/buildingapps/2013/10/14/introducing-windows-phone-preview-for-developers/">Update 3 (a.k.a. GDR3)</a>, as it causes such devices to show a mostly desktop view instead of narrow "phone" view. To address this, you'll need to <strong>include the following CSS and JavaScript to work around the bug</strong>.</p>
{% highlight scss %} {% highlight scss %}
@-webkit-viewport { width: device-width; }
@-moz-viewport { width: device-width; }
@-ms-viewport { width: device-width; } @-ms-viewport { width: device-width; }
@-o-viewport { width: device-width; } @-o-viewport { width: device-width; }
@viewport { width: device-width; } @viewport { width: device-width; }
{% endhighlight %} {% endhighlight %}
{% highlight js %} {% highlight js %}
// Copyright 2014-2015 Twitter, Inc. // Copyright 2014-2019 Twitter, Inc.
// Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) // Licensed under MIT (https://github.com/twbs/bootstrap/blob/v3-dev/LICENSE)
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(
@ -145,7 +170,7 @@ if (navigator.userAgent.match(/IEMobile\/10\.0/)) {
document.querySelector('head').appendChild(msViewportStyle) document.querySelector('head').appendChild(msViewportStyle)
} }
{% endhighlight %} {% endhighlight %}
<p>For more information and usage guidelines, read <a href="http://timkadlec.com/2013/01/windows-phone-8-and-device-width/">Windows Phone 8 and Device-Width</a>.</p> <p>For more information and usage guidelines, read <a href="https://timkadlec.com/2013/01/windows-phone-8-and-device-width/">Windows Phone 8 and Device-Width</a>.</p>
<p>As a heads up, we include this in all of Bootstrap's documentation and examples as a demonstration.</p> <p>As a heads up, we include this in all of Bootstrap's documentation and examples as a demonstration.</p>
<h2 id="support-safari-percentages">Safari percent rounding</h2> <h2 id="support-safari-percentages">Safari percent rounding</h2>
@ -157,7 +182,9 @@ if (navigator.userAgent.match(/IEMobile\/10\.0/)) {
<h2 id="support-fixed-position-keyboards">Modals, navbars, and virtual keyboards</h2> <h2 id="support-fixed-position-keyboards">Modals, navbars, and virtual keyboards</h2>
<h3>Overflow and scrolling</h3> <h3>Overflow and scrolling</h3>
<p>Support for <code>overflow: hidden</code> on the <code>&lt;body&gt;</code> element is quite limited in iOS and Android. To that end, when you scroll past the top or bottom of a modal in either of those devices' browsers, the <code>&lt;body&gt;</code> content will begin to scroll.</p> <p>Support for <code>overflow: hidden</code> on the <code>&lt;body&gt;</code> element is quite limited in iOS and Android. To that end, when you scroll past the top or bottom of a modal in either of those devices' browsers, the <code>&lt;body&gt;</code> content will begin to scroll. See <a href="https://bugs.chromium.org/p/chromium/issues/detail?id=175502">Chrome bug #175502</a> (fixed in Chrome v40) and <a href="https://bugs.webkit.org/show_bug.cgi?id=153852">WebKit bug #153852</a>.</p>
<h3>iOS text fields and scrolling</h3>
<p>As of iOS 9.3, while a modal is open, if the initial touch of a scroll gesture is within the boundary of a textual <code>&lt;input&gt;</code> or a <code>&lt;textarea&gt;</code>, the <code>&lt;body&gt;</code> content underneath the modal will be scrolled instead of the modal itself. See <a href="https://bugs.webkit.org/show_bug.cgi?id=153856">WebKit bug #153856</a>.</p>
<h3>Virtual keyboards</h3> <h3>Virtual keyboards</h3>
<p>Also, note that if you're using a fixed navbar or using inputs within a modal, iOS has a rendering bug that doesn't update the position of fixed elements when the virtual keyboard is triggered. A few workarounds for this include transforming your elements to <code>position: absolute</code> or invoking a timer on focus to try to correct the positioning manually. This is not handled by Bootstrap, so it is up to you to decide which solution is best for your application.</p> <p>Also, note that if you're using a fixed navbar or using inputs within a modal, iOS has a rendering bug that doesn't update the position of fixed elements when the virtual keyboard is triggered. A few workarounds for this include transforming your elements to <code>position: absolute</code> or invoking a timer on focus to try to correct the positioning manually. This is not handled by Bootstrap, so it is up to you to decide which solution is best for your application.</p>
<h3>Navbar Dropdowns</h3> <h3>Navbar Dropdowns</h3>
@ -167,17 +194,17 @@ if (navigator.userAgent.match(/IEMobile\/10\.0/)) {
<p>Page zooming inevitably presents rendering artifacts in some components, both in Bootstrap and the rest of the web. Depending on the issue, we may be able to fix it (search first and then open an issue if need be). However, we tend to ignore these as they often have no direct solution other than hacky workarounds.</p> <p>Page zooming inevitably presents rendering artifacts in some components, both in Bootstrap and the rest of the web. Depending on the issue, we may be able to fix it (search first and then open an issue if need be). However, we tend to ignore these as they often have no direct solution other than hacky workarounds.</p>
<h2 id="support-sticky-hover-mobile">Sticky <code>:hover</code>/<code>:focus</code> on mobile</h2> <h2 id="support-sticky-hover-mobile">Sticky <code>:hover</code>/<code>:focus</code> on mobile</h2>
<p>Even though real hovering isn't possible on most touchscreens, most mobile browsers emulate hovering support and make <code>:hover</code> "sticky". In other words, <code>:hover</code> styles start applying after tapping an element and only stop applying after the user taps some other element. This can cause Bootstrap's <code>:hover</code> states to become unwantedly "stuck" on such browsers. Some mobile browsers also make <code>:focus</code> similarly sticky. There is currently no simple workaround for these issues other than removing such styles entirely.</p> <p>Even though real hovering isn't possible on most touchscreens, most mobile browsers emulate hovering support and make <code>:hover</code> "sticky". In other words, <code>:hover</code> styles start applying after tapping an element and only stop applying after the user taps some other element. This can cause Bootstrap's <code>:hover</code> states to become undesirably "stuck" on such browsers. Some mobile browsers also make <code>:focus</code> similarly sticky. There is currently no simple workaround for these issues other than removing such styles entirely.</p>
<h2 id="support-printing">Printing</h2> <h2 id="support-printing">Printing</h2>
<p>Even in some modern browsers, printing can be quirky.</p> <p>Even in some modern browsers, printing can be quirky.</p>
<p>In particular, as of Chrome v32 and regardless of margin settings, Chrome uses a viewport width significantly narrower than the physical paper size when resolving media queries while printing a webpage. This can result in Bootstrap's extra-small grid being unexpectedly activated when printing. <a href="https://github.com/twbs/bootstrap/issues/12078">See #12078 for some details.</a> Suggested workarounds:</p> <p>In particular, as of Chrome v32 and regardless of margin settings, Chrome uses a viewport width significantly narrower than the physical paper size when resolving media queries while printing a webpage. This can result in Bootstrap's extra-small grid being unexpectedly activated when printing. <a href="https://github.com/twbs/bootstrap/issues/12078">See issue #12078</a> and <a href="https://bugs.chromium.org/p/chromium/issues/detail?id=273306">Chrome bug #273306</a> for some details. Suggested workarounds:</p>
<ul> <ul>
<li>Embrace the extra-small grid and make sure your page looks acceptable under it.</li> <li>Embrace the extra-small grid and make sure your page looks acceptable under it.</li>
<li>Customize the values of the <code>@screen-*</code> Less variables so that your printer paper is considered larger than extra-small.</li> <li>Customize the values of the <code>@screen-*</code> Less variables so that your printer paper is considered larger than extra-small.</li>
<li>Add custom media queries to change the grid size breakpoints for print media only.</li> <li>Add custom media queries to change the grid size breakpoints for print media only.</li>
</ul> </ul>
<p>Also, as of Safari v8.0, fixed-width <code>.container</code>s can cause Safari to use an unusually small font size when printing. See <a href="https://github.com/twbs/bootstrap/issues/14868">#14868</a> for more details. One potential workaround for this is adding the following CSS:</p> <p>Also, as of Safari v8.0, fixed-width <code>.container</code>s can cause Safari to use an unusually small font size when printing. See <a href="https://github.com/twbs/bootstrap/issues/14868">#14868</a> and <a href="https://bugs.webkit.org/show_bug.cgi?id=138192">WebKit bug #138192</a> for more details. One potential workaround for this is adding the following CSS:</p>
{% highlight css %} {% highlight css %}
@media print { @media print {
.container { .container {
@ -201,7 +228,7 @@ $(function () {
}) })
</script> </script>
{% endhighlight %} {% endhighlight %}
<p>Want to see an example? <a href="http://jsbin.com/kuvoz/1">Check out this JS Bin demo.</a></p> <p>Want to see an example? <a href="http://output.jsbin.com/kuvoz/1">Check out this JS Bin demo.</a></p>
<h2 id="support-validators">Validators</h2> <h2 id="support-validators">Validators</h2>
<p>In order to provide the best possible experience to old and buggy browsers, Bootstrap uses <a href="http://browserhacks.com">CSS browser hacks</a> in several places to target special CSS to certain browser versions in order to work around bugs in the browsers themselves. These hacks understandably cause CSS validators to complain that they are invalid. In a couple places, we also use bleeding-edge CSS features that aren't yet fully standardized, but these are used purely for progressive enhancement.</p> <p>In order to provide the best possible experience to old and buggy browsers, Bootstrap uses <a href="http://browserhacks.com">CSS browser hacks</a> in several places to target special CSS to certain browser versions in order to work around bugs in the browsers themselves. These hacks understandably cause CSS validators to complain that they are invalid. In a couple places, we also use bleeding-edge CSS features that aren't yet fully standardized, but these are used purely for progressive enhancement.</p>

View file

@ -3,11 +3,11 @@
<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="https://blog.getbootstrap.com/">The Official Bootstrap Blog</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/%23bootstrap">##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/%23bootstrap">##bootstrap channel</a>.</li>
<li>For help using Bootstrap, ask on <a href="https://stackoverflow.com/questions/tagged/twitter-bootstrap-3">StackOverflow using the tag <code>twitter-bootstrap-3</code></a>.</li> <li>For help using Bootstrap, ask on <a href="https://stackoverflow.com/questions/tagged/twitter-bootstrap-3">StackOverflow using the tag <code>twitter-bootstrap-3</code></a>.</li>
<li>Developers should use the keyword <code>bootstrap</code> on packages which modify or add to the functionality of Bootstrap when distributing through <a href="https://www.npmjs.com/browse/keyword/bootstrap">npm</a> or similar delivery mechanisms for maximum discoverability.</li> <li>Developers should use the keyword <code>bootstrap</code> on packages which modify or add to the functionality of Bootstrap when distributing through <a href="https://www.npmjs.com/search?q=keywords:bootstrap">npm</a> or similar delivery mechanisms for maximum discoverability.</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="https://expo.getbootstrap.com/">Bootstrap Expo</a>.</li>
</ul> </ul>
<p>You can also follow <a href="https://twitter.com/getbootstrap">@getbootstrap on Twitter</a> for the latest gossip and awesome music videos.</p> <p>You can also follow <a href="https://twitter.com/getbootstrap">@getbootstrap on Twitter</a> for the latest gossip and awesome music videos.</p>
</div> </div>

View file

@ -2,11 +2,11 @@
<h1 id="disable-responsive" class="page-header">Disabling responsiveness</h1> <h1 id="disable-responsive" class="page-header">Disabling responsiveness</h1>
<p class="lead">Bootstrap automatically adapts your pages for various screen sizes. <p class="lead">Bootstrap automatically adapts your pages for various screen sizes.
Here's how to disable this feature so your page works like <a href="../examples/non-responsive/">this non-responsive example</a>.</p> Here's how to disable this feature so your page works like <a href="{{ site.baseurl }}/examples/non-responsive/">this non-responsive example</a>.</p>
<h2>Steps to disable page responsiveness</h2> <h2>Steps to disable page responsiveness</h2>
<ol> <ol>
<li>Omit the viewport <code>&lt;meta&gt;</code> mentioned in <a href="../css/#overview-mobile">the CSS docs</a></li> <li>Omit the viewport <code>&lt;meta&gt;</code> mentioned in <a href="{{ site.baseurl }}/css/#overview-mobile">the CSS docs</a></li>
<li>Override the <code>width</code> on the <code>.container</code> for each grid tier with a single width, for example <code>width: 970px !important;</code> Be sure that this comes after the default Bootstrap CSS. You can optionally avoid the <code>!important</code> with media queries or some selector-fu.</li> <li>Override the <code>width</code> on the <code>.container</code> for each grid tier with a single width, for example <code>width: 970px !important;</code> Be sure that this comes after the default Bootstrap CSS. You can optionally avoid the <code>!important</code> with media queries or some selector-fu.</li>
<li>If using navbars, remove all navbar collapsing and expanding behavior.</li> <li>If using navbars, remove all navbar collapsing and expanding behavior.</li>
<li>For grid layouts, use <code>.col-xs-*</code> classes in addition to, or in place of, the medium/large ones. Don't worry, the extra-small device grid scales to all resolutions.</li> <li>For grid layouts, use <code>.col-xs-*</code> classes in addition to, or in place of, the medium/large ones. Don't worry, the extra-small device grid scales to all resolutions.</li>
@ -17,6 +17,6 @@
<h2>Bootstrap template with responsiveness disabled</h2> <h2>Bootstrap template with responsiveness disabled</h2>
<p>We've applied these steps to an example. Read its source code to see the specific changes implemented.</p> <p>We've applied these steps to an example. Read its source code to see the specific changes implemented.</p>
<p> <p>
<a href="../examples/non-responsive/" class="btn btn-primary">View non-responsive example</a> <a href="{{ site.baseurl }}/examples/non-responsive/" class="btn btn-primary">View non-responsive example</a>
</p> </p>
</div> </div>

View file

@ -27,37 +27,37 @@
</div> </div>
</div> </div>
<h2 id="download-cdn">Bootstrap CDN</h2> <h2 id="download-cdn">BootstrapCDN</h2>
<p>The folks over at <a href="https://www.maxcdn.com/">MaxCDN</a> graciously provide CDN support for Bootstrap's CSS and JavaScript. Just use these <a href="https://www.bootstrapcdn.com/">Bootstrap CDN</a> links.</p> <p>The folks over at <a href="https://www.stackpath.com/">StackPath</a> graciously provide CDN support for Bootstrap's CSS and JavaScript. Just use these <a href="https://www.bootstrapcdn.com/">BootstrapCDN</a> links.</p>
{% highlight html %} {% highlight html %}
<!-- Latest compiled and minified CSS --> <!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="{{ site.cdn.css }}"> <link rel="stylesheet" href="{{ site.cdn.css }}" integrity="{{ site.cdn.css_hash }}" crossorigin="anonymous">
<!-- Optional theme --> <!-- Optional theme -->
<link rel="stylesheet" href="{{ site.cdn.css_theme }}"> <link rel="stylesheet" href="{{ site.cdn.css_theme }}" integrity="{{ site.cdn.css_theme_hash }}" crossorigin="anonymous">
<!-- Latest compiled and minified JavaScript --> <!-- Latest compiled and minified JavaScript -->
<script src="{{ site.cdn.js }}"></script> <script src="{{ site.cdn.js }}" integrity="{{ site.cdn.js_hash }}" crossorigin="anonymous"></script>
{% endhighlight %} {% endhighlight %}
<h2 id="download-bower">Install with Bower</h2> <h2 id="download-bower">Install with Bower</h2>
<p>You can also install and manage Bootstrap's Less, CSS, JavaScript, and fonts using <a href="http://bower.io">Bower</a>:</p> <p>You can also install and manage Bootstrap's Less, CSS, JavaScript, and fonts using <a href="https://bower.io/">Bower</a>:</p>
{% highlight bash %}$ bower install bootstrap{% endhighlight %} {% highlight bash %}bower install bootstrap{% endhighlight %}
<h2 id="download-npm">Install with npm</h2> <h2 id="download-npm">Install with npm</h2>
<p>You can also install Bootstrap using <a href="https://www.npmjs.com">npm</a>:</p> <p>You can also install Bootstrap using <a href="https://www.npmjs.com/">npm</a>:</p>
{% highlight bash %}$ npm install bootstrap{% endhighlight %} {% highlight bash %}npm install bootstrap@3{% endhighlight %}
<p><code>require('bootstrap')</code> will load all of Bootstrap's jQuery plugins onto the jQuery object. The <code>bootstrap</code> module itself does not export anything. You can manually load Bootstrap's jQuery plugins individually by loading the <code>/js/*.js</code> files under the package's top-level directory.</p> <p><code>require('bootstrap')</code> will load all of Bootstrap's jQuery plugins onto the jQuery object. The <code>bootstrap</code> module itself does not export anything. You can manually load Bootstrap's jQuery plugins individually by loading the <code>/js/*.js</code> files under the package's top-level directory.</p>
<p>Bootstrap's <code>package.json</code> contains some additional metadata under the following keys:</p> <p>Bootstrap's <code>package.json</code> contains some additional metadata under the following keys:</p>
<ul> <ul>
<li><code>less</code> - path to Bootstrap's main <a href="http://lesscss.org">Less</a> source file</li> <li><code>less</code> - path to Bootstrap's main <a href="http://lesscss.org/">Less</a> source file</li>
<li><code>style</code> - path to Bootstrap's non-minified CSS that's been precompiled using the default settings (no customization)</li> <li><code>style</code> - path to Bootstrap's non-minified CSS that's been precompiled using the default settings (no customization)</li>
</ul> </ul>
<h2 id="download-composer">Install with Composer</h2> <h2 id="download-composer">Install with Composer</h2>
<p>You can also install and manage Bootstrap's Less, CSS, JavaScript, and fonts using <a href="https://getcomposer.org">Composer</a>:</p> <p>You can also install and manage Bootstrap's Less, CSS, JavaScript, and fonts using <a href="https://getcomposer.org/">Composer</a>:</p>
{% highlight bash %}$ composer require twbs/bootstrap{% endhighlight %} {% highlight bash %}composer require twbs/bootstrap{% endhighlight %}
<h2 id="download-autoprefixer">Autoprefixer required for Less/Sass</h2> <h2 id="download-autoprefixer">Autoprefixer required for Less/Sass</h2>
<p>Bootstrap uses <a href="https://github.com/postcss/autoprefixer">Autoprefixer</a> to deal with <a href="http://webdesign.about.com/od/css/a/css-vendor-prefixes.htm">CSS vendor prefixes</a>. If you're compiling Bootstrap from its Less/Sass source and not using our Gruntfile, you'll need to integrate Autoprefixer into your build process yourself. If you're using precompiled Bootstrap or using our Gruntfile, you don't need to worry about this because Autoprefixer is already integrated into our Gruntfile.</p> <p>Bootstrap uses <a href="https://github.com/postcss/autoprefixer">Autoprefixer</a> to deal with <a href="https://www.lifewire.com/css-vendor-prefixes-3466867">CSS vendor prefixes</a>. If you're compiling Bootstrap from its Less/Sass source and not using our Gruntfile, you'll need to integrate Autoprefixer into your build process yourself. If you're using precompiled Bootstrap or using our Gruntfile, you don't need to worry about this because Autoprefixer is already integrated into our Gruntfile.</p>
</div> </div>

View file

@ -9,14 +9,14 @@
<div class="row bs-examples"> <div class="row bs-examples">
<div class="col-xs-6 col-md-4"> <div class="col-xs-6 col-md-4">
<a class="thumbnail" href="../examples/starter-template/"> <a class="thumbnail" href="../examples/starter-template/">
<img src="../examples/screenshots/starter-template.jpg" alt="Starter template example"> <img src="../examples/screenshots/starter-template.jpg" alt="Starter template example" width="800" height="600">
</a> </a>
<h3>Starter template</h3> <h3>Starter template</h3>
<p>Nothing but the basics: compiled CSS and JavaScript along with a container.</p> <p>Nothing but the basics: compiled CSS and JavaScript along with a container.</p>
</div> </div>
<div class="col-xs-6 col-md-4"> <div class="col-xs-6 col-md-4">
<a class="thumbnail" href="../examples/theme/"> <a class="thumbnail" href="../examples/theme/">
<img src="../examples/screenshots/theme.jpg" alt="Bootstrap theme example"> <img src="../examples/screenshots/theme.jpg" alt="Bootstrap theme example" width="800" height="600">
</a> </a>
<h3>Bootstrap theme</h3> <h3>Bootstrap theme</h3>
<p>Load the optional Bootstrap theme for a visually enhanced experience.</p> <p>Load the optional Bootstrap theme for a visually enhanced experience.</p>
@ -25,14 +25,14 @@
<div class="col-xs-6 col-md-4"> <div class="col-xs-6 col-md-4">
<a class="thumbnail" href="../examples/grid/"> <a class="thumbnail" href="../examples/grid/">
<img src="../examples/screenshots/grid.jpg" alt="Multiple grids example"> <img src="../examples/screenshots/grid.jpg" alt="Multiple grids example" width="800" height="600">
</a> </a>
<h3>Grids</h3> <h3>Grids</h3>
<p>Multiple examples of grid layouts with all four tiers, nesting, and more.</p> <p>Multiple examples of grid layouts with all four tiers, nesting, and more.</p>
</div> </div>
<div class="col-xs-6 col-md-4"> <div class="col-xs-6 col-md-4">
<a class="thumbnail" href="../examples/jumbotron/"> <a class="thumbnail" href="../examples/jumbotron/">
<img src="../examples/screenshots/jumbotron.jpg" alt="Jumbotron example"> <img src="../examples/screenshots/jumbotron.jpg" alt="Jumbotron example" width="800" height="600">
</a> </a>
<h3>Jumbotron</h3> <h3>Jumbotron</h3>
<p>Build around the jumbotron with a navbar and some basic grid columns.</p> <p>Build around the jumbotron with a navbar and some basic grid columns.</p>
@ -41,7 +41,7 @@
<div class="col-xs-6 col-md-4"> <div class="col-xs-6 col-md-4">
<a class="thumbnail" href="../examples/jumbotron-narrow/"> <a class="thumbnail" href="../examples/jumbotron-narrow/">
<img src="../examples/screenshots/jumbotron-narrow.jpg" alt="Narrow jumbotron example"> <img src="../examples/screenshots/jumbotron-narrow.jpg" alt="Narrow jumbotron example" width="800" height="600">
</a> </a>
<h3>Narrow jumbotron</h3> <h3>Narrow jumbotron</h3>
<p>Build a more custom page by narrowing the default container and jumbotron.</p> <p>Build a more custom page by narrowing the default container and jumbotron.</p>
@ -52,14 +52,14 @@
<div class="row bs-examples"> <div class="row bs-examples">
<div class="col-xs-6 col-md-4"> <div class="col-xs-6 col-md-4">
<a class="thumbnail" href="../examples/navbar/"> <a class="thumbnail" href="../examples/navbar/">
<img src="../examples/screenshots/navbar.jpg" alt="Navbar example"> <img src="../examples/screenshots/navbar.jpg" alt="Navbar example" width="800" height="600">
</a> </a>
<h3>Navbar</h3> <h3>Navbar</h3>
<p>Super basic template that includes the navbar along with some additional content.</p> <p>Super basic template that includes the navbar along with some additional content.</p>
</div> </div>
<div class="col-xs-6 col-md-4"> <div class="col-xs-6 col-md-4">
<a class="thumbnail" href="../examples/navbar-static-top/"> <a class="thumbnail" href="../examples/navbar-static-top/">
<img src="../examples/screenshots/navbar-static.jpg" alt="Static top navbar example"> <img src="../examples/screenshots/navbar-static.jpg" alt="Static top navbar example" width="800" height="600">
</a> </a>
<h3>Static top navbar</h3> <h3>Static top navbar</h3>
<p>Super basic template with a static top navbar along with some additional content.</p> <p>Super basic template with a static top navbar along with some additional content.</p>
@ -68,7 +68,7 @@
<div class="col-xs-6 col-md-4"> <div class="col-xs-6 col-md-4">
<a class="thumbnail" href="../examples/navbar-fixed-top/"> <a class="thumbnail" href="../examples/navbar-fixed-top/">
<img src="../examples/screenshots/navbar-fixed.jpg" alt="Fixed navbar example"> <img src="../examples/screenshots/navbar-fixed.jpg" alt="Fixed navbar example" width="800" height="600">
</a> </a>
<h3>Fixed navbar</h3> <h3>Fixed navbar</h3>
<p>Super basic template with a fixed top navbar along with some additional content.</p> <p>Super basic template with a fixed top navbar along with some additional content.</p>
@ -79,14 +79,14 @@
<div class="row bs-examples"> <div class="row bs-examples">
<div class="col-xs-6 col-md-4"> <div class="col-xs-6 col-md-4">
<a class="thumbnail" href="../examples/cover/"> <a class="thumbnail" href="../examples/cover/">
<img src="../examples/screenshots/cover.jpg" alt="A one-page template example"> <img src="../examples/screenshots/cover.jpg" alt="A one-page template example" width="800" height="600">
</a> </a>
<h3>Cover</h3> <h3>Cover</h3>
<p>A one-page template for building simple and beautiful home pages.</p> <p>A one-page template for building simple and beautiful home pages.</p>
</div> </div>
<div class="col-xs-6 col-md-4"> <div class="col-xs-6 col-md-4">
<a class="thumbnail" href="../examples/carousel/"> <a class="thumbnail" href="../examples/carousel/">
<img src="../examples/screenshots/carousel.jpg" alt="Carousel example"> <img src="../examples/screenshots/carousel.jpg" alt="Carousel example" width="800" height="600">
</a> </a>
<h3>Carousel</h3> <h3>Carousel</h3>
<p>Customize the navbar and carousel, then add some new components.</p> <p>Customize the navbar and carousel, then add some new components.</p>
@ -95,14 +95,14 @@
<div class="col-xs-6 col-md-4"> <div class="col-xs-6 col-md-4">
<a class="thumbnail" href="../examples/blog/"> <a class="thumbnail" href="../examples/blog/">
<img src="../examples/screenshots/blog.jpg" alt="Blog layout example"> <img src="../examples/screenshots/blog.jpg" alt="Blog layout example" width="800" height="600">
</a> </a>
<h3>Blog</h3> <h3>Blog</h3>
<p>Simple two-column blog layout with custom navigation, header, and type.</p> <p>Simple two-column blog layout with custom navigation, header, and type.</p>
</div> </div>
<div class="col-xs-6 col-md-4"> <div class="col-xs-6 col-md-4">
<a class="thumbnail" href="../examples/dashboard/"> <a class="thumbnail" href="../examples/dashboard/">
<img src="../examples/screenshots/dashboard.jpg" alt="Dashboard example"> <img src="../examples/screenshots/dashboard.jpg" alt="Dashboard example" width="800" height="600">
</a> </a>
<h3>Dashboard</h3> <h3>Dashboard</h3>
<p>Basic structure for an admin dashboard with fixed sidebar and navbar.</p> <p>Basic structure for an admin dashboard with fixed sidebar and navbar.</p>
@ -111,30 +111,30 @@
<div class="col-xs-6 col-md-4"> <div class="col-xs-6 col-md-4">
<a class="thumbnail" href="../examples/signin/"> <a class="thumbnail" href="../examples/signin/">
<img src="../examples/screenshots/sign-in.jpg" alt="Sign-in page example"> <img src="../examples/screenshots/sign-in.jpg" alt="Sign-in page example" width="800" height="600">
</a> </a>
<h3>Sign-in page</h3> <h3>Sign-in page</h3>
<p>Custom form layout and design for a simple sign in form.</p> <p>Custom form layout and design for a simple sign in form.</p>
</div> </div>
<div class="col-xs-6 col-md-4"> <div class="col-xs-6 col-md-4">
<a class="thumbnail" href="../examples/justified-nav/"> <a class="thumbnail" href="../examples/justified-nav/">
<img src="../examples/screenshots/justified-nav.jpg" alt="Justified nav example"> <img src="../examples/screenshots/justified-nav.jpg" alt="Justified nav example" width="800" height="600">
</a> </a>
<h3>Justified nav</h3> <h3>Justified nav</h3>
<p>Create a custom navbar with justified links. Heads up! <a href="../components/#nav-justified">Not too Safari friendly.</a></p> <p>Create a custom navbar with justified links. Heads up! <a href="{{ site.baseurl }}/components/#nav-justified">Not too Safari friendly.</a></p>
</div> </div>
<div class="clearfix visible-xs"></div> <div class="clearfix visible-xs"></div>
<div class="col-xs-6 col-md-4"> <div class="col-xs-6 col-md-4">
<a class="thumbnail" href="../examples/sticky-footer/"> <a class="thumbnail" href="../examples/sticky-footer/">
<img src="../examples/screenshots/sticky-footer.jpg" alt="Sticky footer example"> <img src="../examples/screenshots/sticky-footer.jpg" alt="Sticky footer example" width="800" height="600">
</a> </a>
<h3>Sticky footer</h3> <h3>Sticky footer</h3>
<p>Attach a footer to the bottom of the viewport when the content is shorter than it.</p> <p>Attach a footer to the bottom of the viewport when the content is shorter than it.</p>
</div> </div>
<div class="col-xs-6 col-md-4"> <div class="col-xs-6 col-md-4">
<a class="thumbnail" href="../examples/sticky-footer-navbar/"> <a class="thumbnail" href="../examples/sticky-footer-navbar/">
<img src="../examples/screenshots/sticky-footer-navbar.jpg" alt="Sticky footer with navbar example"> <img src="../examples/screenshots/sticky-footer-navbar.jpg" alt="Sticky footer with navbar example" width="800" height="600">
</a> </a>
<h3>Sticky footer with navbar</h3> <h3>Sticky footer with navbar</h3>
<p>Attach a footer to the bottom of the viewport with a fixed navbar at the top.</p> <p>Attach a footer to the bottom of the viewport with a fixed navbar at the top.</p>
@ -145,14 +145,14 @@
<div class="row bs-examples"> <div class="row bs-examples">
<div class="col-xs-6 col-md-4"> <div class="col-xs-6 col-md-4">
<a class="thumbnail" href="../examples/non-responsive/"> <a class="thumbnail" href="../examples/non-responsive/">
<img src="../examples/screenshots/non-responsive.jpg" alt="Non-responsive example"> <img src="../examples/screenshots/non-responsive.jpg" alt="Non-responsive example" width="800" height="600">
</a> </a>
<h3>Non-responsive Bootstrap</h3> <h3>Non-responsive Bootstrap</h3>
<p>Easily disable the responsiveness of Bootstrap <a href="#disable-responsive">per our docs</a>.</p> <p>Easily disable the responsiveness of Bootstrap <a href="#disable-responsive">per our docs</a>.</p>
</div> </div>
<div class="col-xs-6 col-md-4"> <div class="col-xs-6 col-md-4">
<a class="thumbnail" href="../examples/offcanvas/"> <a class="thumbnail" href="../examples/offcanvas/">
<img src="../examples/screenshots/offcanvas.jpg" alt="Off-canvas navigation example"> <img src="../examples/screenshots/offcanvas.jpg" alt="Off-canvas navigation example" width="800" height="600">
</a> </a>
<h3>Off-canvas</h3> <h3>Off-canvas</h3>
<p>Build a toggleable off-canvas navigation menu for use with Bootstrap.</p> <p>Build a toggleable off-canvas navigation menu for use with Bootstrap.</p>

View file

@ -1,7 +1,7 @@
<div class="bs-docs-section"> <div class="bs-docs-section">
<h1 id="grunt" class="page-header">Compiling CSS and JavaScript</h1> <h1 id="grunt" class="page-header">Compiling CSS and JavaScript</h1>
<p class="lead">Bootstrap uses <a href="http://gruntjs.com">Grunt</a> for its build system, with convenient methods for working with the framework. It's how we compile our code, run tests, and more.</p> <p class="lead">Bootstrap uses <a href="https://gruntjs.com/">Grunt</a> for its build system, with convenient methods for working with the framework. It's how we compile our code, run tests, and more.</p>
<h2 id="grunt-installing">Installing Grunt</h2> <h2 id="grunt-installing">Installing Grunt</h2>
<p>To install Grunt, you must <strong>first <a href="https://nodejs.org/download/">download and install node.js</a></strong> (which includes npm). npm stands for <a href="https://www.npmjs.com/">node packaged modules</a> and is a way to manage development dependencies through node.js.</p> <p>To install Grunt, you must <strong>first <a href="https://nodejs.org/download/">download and install node.js</a></strong> (which includes npm). npm stands for <a href="https://www.npmjs.com/">node packaged modules</a> and is a way to manage development dependencies through node.js.</p>
@ -9,7 +9,7 @@
Then, from the command line: Then, from the command line:
<ol> <ol>
<li>Install <code>grunt-cli</code> globally with <code>npm install -g grunt-cli</code>.</li> <li>Install <code>grunt-cli</code> globally with <code>npm install -g grunt-cli</code>.</li>
<li>Navigate to the root <code>/bootstrap/</code> directory, then run <code>npm install</code>. npm will look at the <a href="https://github.com/twbs/bootstrap/blob/master/package.json"><code>package.json</code></a> file and automatically install the necessary local dependencies listed there.</li> <li>Navigate to the root <code>/bootstrap/</code> directory, then run <code>npm install</code>. npm will look at the <a href="https://github.com/twbs/bootstrap/blob/v3-dev/package.json"><code>package.json</code></a> file and automatically install the necessary local dependencies listed there.</li>
</ol> </ol>
<p>When completed, you'll be able to run the various Grunt commands provided from the command line.</p> <p>When completed, you'll be able to run the various Grunt commands provided from the command line.</p>
@ -22,13 +22,13 @@
<p>Watches the Less source files and automatically recompiles them to CSS whenever you save a change.</p> <p>Watches the Less source files and automatically recompiles them to CSS whenever you save a change.</p>
<h3><code>grunt test</code> (Run tests)</h3> <h3><code>grunt test</code> (Run tests)</h3>
<p>Runs <a href="http://jshint.com">JSHint</a> and runs the <a href="http://qunitjs.com">QUnit</a> tests headlessly in <a href="http://phantomjs.org">PhantomJS</a>.</p> <p>Runs <a href="https://jshint.com/">JSHint</a> and runs the <a href="https://qunitjs.com/">QUnit</a> tests in real browsers thanks to <a href="https://karma-runner.github.io/2.0/index.html">Karma</a>.</p>
<h3><code>grunt docs</code> (Build &amp; test the docs assets)</h3> <h3><code>grunt docs</code> (Build &amp; test the docs assets)</h3>
<p>Builds and tests CSS, JavaScript, and other assets which are used when running the documentation locally via <code>jekyll serve</code>.</p> <p>Builds and tests CSS, JavaScript, and other assets which are used when running the documentation locally via <code>bundle exec jekyll serve</code>.</p>
<h3><code>grunt</code> (Build absolutely everything and run tests)</h3> <h3><code>grunt</code> (Build absolutely everything and run tests)</h3>
<p>Compiles and minifies CSS and JavaScript, builds the documentation website, runs the HTML5 validator against the docs, regenerates the Customizer assets, and more. Requires <a href="http://jekyllrb.com/docs/installation/">Jekyll</a>. Usually only necessary if you're hacking on Bootstrap itself.</p> <p>Compiles and minifies CSS and JavaScript, builds the documentation website, runs the HTML5 validator against the docs, regenerates the Customizer assets, and more. Requires <a href="https://jekyllrb.com/docs/installation/">Jekyll</a>. Usually only necessary if you're hacking on Bootstrap itself.</p>
<h2 id="grunt-troubleshooting">Troubleshooting</h2> <h2 id="grunt-troubleshooting">Troubleshooting</h2>
<p>Should you encounter problems with installing dependencies or running Grunt commands, first delete the <code>/node_modules/</code> directory generated by npm. Then, rerun <code>npm install</code>.</p> <p>Should you encounter problems with installing dependencies or running Grunt commands, first delete the <code>/node_modules/</code> directory generated by npm. Then, rerun <code>npm install</code>.</p>

View file

@ -30,5 +30,5 @@
<li>Submit changes that you make to Bootstrap back to the Bootstrap project (though such feedback is encouraged)</li> <li>Submit changes that you make to Bootstrap back to the Bootstrap project (though such feedback is encouraged)</li>
</ul> </ul>
<p>The full Bootstrap license is located <a href="{{ site.repo }}/blob/master/LICENSE">in the project repository</a> for more information.</p> <p>The full Bootstrap license is located <a href="{{ site.repo }}/blob/v3-dev/LICENSE">in the project repository</a> for more information.</p>
</div> </div>

View file

@ -5,7 +5,7 @@
<p>Copy the HTML below to begin working with a minimal Bootstrap document.</p> <p>Copy the HTML below to begin working with a minimal Bootstrap document.</p>
{% highlight html %} {% highlight html %}
<!DOCTYPE html> <!doctype html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
@ -15,12 +15,12 @@
<title>Bootstrap 101 Template</title> <title>Bootstrap 101 Template</title>
<!-- Bootstrap --> <!-- Bootstrap -->
<link href="css/bootstrap.min.css" rel="stylesheet"> <link rel="stylesheet" href="{{ site.cdn.css }}" integrity="{{ site.cdn.css_hash }}" crossorigin="anonymous">
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// --> <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]--> <![endif]-->
</head> </head>
@ -28,9 +28,9 @@
<h1>Hello, world!</h1> <h1>Hello, world!</h1>
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) --> <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> <script src="https://code.jquery.com/jquery-1.12.4.min.js" integrity="sha384-nvAa0+6Qg9clwYCGGPpDQLVpLNn0fRaROjHqs13t4Ggj3Ez50XnGQqc/r8MhnRDZ" crossorigin="anonymous"></script>
<!-- Include all compiled plugins (below), or include individual files as needed --> <!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="js/bootstrap.min.js"></script> <script src="{{ site.cdn.js }}" integrity="{{ site.cdn.js_hash }}" crossorigin="anonymous"></script>
</body> </body>
</html> </html>
{% endhighlight %} {% endhighlight %}

View file

@ -2,5 +2,5 @@
<h1 id="tools" class="page-header">Tools</h1> <h1 id="tools" class="page-header">Tools</h1>
<h2 id="tools-bootlint">Bootlint</h2> <h2 id="tools-bootlint">Bootlint</h2>
<p><strong><a href="https://github.com/twbs/bootlint">Bootlint</a></strong> is the official Bootstrap HTML <a href="http://en.wikipedia.org/wiki/Lint_(software)">linter</a> tool. It automatically checks for several common HTML mistakes in webpages that are using Bootstrap in a fairly "vanilla" way. Vanilla Bootstrap's components/widgets require their parts of the DOM to conform to certain structures. Bootlint checks that instances of Bootstrap components have correctly-structured HTML. Consider adding Bootlint to your Bootstrap web development toolchain so that none of the common mistakes slow down your project's development.</p> <p><strong><a href="https://github.com/twbs/bootlint">Bootlint</a></strong> is the official Bootstrap HTML <a href="https://en.wikipedia.org/wiki/Lint_(software)">linter</a> tool. It automatically checks for several common HTML mistakes in webpages that are using Bootstrap in a fairly "vanilla" way. Vanilla Bootstrap's components/widgets require their parts of the DOM to conform to certain structures. Bootlint checks that instances of Bootstrap components have correctly-structured HTML. Consider adding Bootlint to your Bootstrap web development toolchain so that none of the common mistakes slow down your project's development.</p>
</div> </div>

View file

@ -5,14 +5,14 @@
<div class="bs-callout bs-callout-warning" id="jquery-required"> <div class="bs-callout bs-callout-warning" id="jquery-required">
<h4>jQuery required</h4> <h4>jQuery required</h4>
<p>Please note that <strong>all JavaScript plugins require jQuery</strong> to be included, as shown in the <a href="#template">starter template</a>. <a href="{{ site.repo }}/blob/v{{ site.current_version }}/bower.json">Consult our <code>bower.json</code></a> to see which versions of jQuery are supported.</p> <p>Please note that <strong>all JavaScript plugins require jQuery</strong> to be included, as shown in the <a href="#template">starter template</a>. <a href="{{ site.repo }}/blob/v3-dev/bower.json">Consult our <code>bower.json</code></a> to see which versions of jQuery are supported.</p>
</div> </div>
<h2 id="whats-included-precompiled">Precompiled Bootstrap</h2> <h2 id="whats-included-precompiled">Precompiled Bootstrap</h2>
<p>Once downloaded, unzip the compressed folder to see the structure of (the compiled) Bootstrap. You'll see something like this:</p> <p>Once downloaded, unzip the compressed folder to see the structure of (the compiled) Bootstrap. You'll see something like this:</p>
<!-- NOTE: This info is intentionally duplicated in the README. <!-- NOTE: This info is intentionally duplicated in the README.
Copy any changes made here over to the README too. --> Copy any changes made here over to the README too. -->
{% highlight bash %} {% highlight text %}
bootstrap/ bootstrap/
├── css/ ├── css/
│ ├── bootstrap.css │ ├── bootstrap.css
@ -35,11 +35,11 @@ bootstrap/
{% endhighlight %} {% endhighlight %}
<!-- NOTE: This info is intentionally duplicated in the README. <!-- NOTE: This info is intentionally duplicated in the README.
Copy any changes made here over to the README too. --> Copy any changes made here over to the README too. -->
<p>This is the most basic form of Bootstrap: precompiled files for quick drop-in usage in nearly any web project. We provide compiled CSS and JS (<code>bootstrap.*</code>), as well as compiled and minified CSS and JS (<code>bootstrap.min.*</code>). CSS <a href="https://developer.chrome.com/devtools/docs/css-preprocessors">source maps</a> (<code>bootstrap.*.map</code>) are available for use with certain browsers' developer tools. Fonts from Glyphicons are included, as is the optional Bootstrap theme.</p> <p>This is the most basic form of Bootstrap: precompiled files for quick drop-in usage in nearly any web project. We provide compiled CSS and JS (<code>bootstrap.*</code>), as well as compiled and minified CSS and JS (<code>bootstrap.min.*</code>). CSS <a href="https://developers.google.com/web/tools/chrome-devtools/javascript/source-maps">source maps</a> (<code>bootstrap.*.map</code>) are available for use with certain browsers' developer tools. Fonts from Glyphicons are included, as is the optional Bootstrap theme.</p>
<h2 id="whats-included-source">Bootstrap source code</h2> <h2 id="whats-included-source">Bootstrap source code</h2>
<p>The Bootstrap source code download includes the precompiled CSS, JavaScript, and font assets, along with source Less, JavaScript, and documentation. More specifically, it includes the following and more:</p> <p>The Bootstrap source code download includes the precompiled CSS, JavaScript, and font assets, along with source Less, JavaScript, and documentation. More specifically, it includes the following and more:</p>
{% highlight bash %} {% highlight text %}
bootstrap/ bootstrap/
├── less/ ├── less/
├── js/ ├── js/

View file

@ -2,57 +2,62 @@
<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"> <meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Bootstrap, a sleek, intuitive, and powerful mobile first front-end framework for faster and easier web development."> <meta name="description" content="Bootstrap, a sleek, intuitive, and powerful mobile first front-end framework for faster and easier web development.">
<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"> <meta name="author" content="Mark Otto, Jacob Thornton, and Bootstrap contributors">
<title> <title>
{% if page.layout == "home" %} {%- if page.title -%}
{{ page.title }} {{ page.title | smartify }} · {{ site.title | smartify }}
{% else %} {%- else -%}
{{ page.title }} &middot; Bootstrap {{ site.title | smartify }} · {{ site.description | smartify }}
{% endif %} {%- endif -%}
</title> </title>
<link rel="canonical" href="{{ site.url | append: site.baseurl | append: page.url }}">
<!-- Bootstrap core CSS --> <!-- Bootstrap core CSS -->
{% if site.github %} {% if site.github %}
<link href="../dist/css/bootstrap.min.css" rel="stylesheet"> <link href="{{ site.baseurl }}/dist/css/bootstrap.min.css" rel="stylesheet">
{% else %} {% else %}
<link href="../dist/css/bootstrap.css" rel="stylesheet"> <link href="{{ site.baseurl }}/dist/css/bootstrap.css" rel="stylesheet">
{% endif %} {% endif %}
{% if page.slug == "css" or page.slug == "components" or page.slug == "js" %} {% if page.slug == "css" or page.slug == "components" or page.slug == "js" %}
<!-- Optional Bootstrap Theme --> <!-- Optional Bootstrap Theme -->
{% if site.github %} {% if site.github %}
<link href="data:text/css;charset=utf-8," data-href="../dist/css/bootstrap-theme.min.css" rel="stylesheet" id="bs-theme-stylesheet"> <link href="data:text/css;charset=utf-8," data-href="{{ site.baseurl }}/dist/css/bootstrap-theme.min.css" rel="stylesheet" id="bs-theme-stylesheet">
{% else %} {% else %}
<link href="data:text/css;charset=utf-8," data-href="../dist/css/bootstrap-theme.css" rel="stylesheet" id="bs-theme-stylesheet"> <link href="data:text/css;charset=utf-8," data-href="{{ site.baseurl }}/dist/css/bootstrap-theme.css" rel="stylesheet" id="bs-theme-stylesheet">
{% endif %}
{% endif %} {% endif %}
{% if page.layout == "default" %}
<link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.css">
{% endif %} {% endif %}
<!-- Documentation extras --> <!-- Documentation extras -->
{% if site.github %} {% if site.github %}
<link href="../assets/css/docs.min.css" rel="stylesheet"> <link href="{{ site.baseurl }}/assets/css/docs.min.css" rel="stylesheet">
{% else %} {% else %}
<link href="../assets/css/src/pygments-manni.css" rel="stylesheet"> <link href="{{ site.baseurl }}/assets/css/docs.css" rel="stylesheet">
<link href="../assets/css/src/docs.css" rel="stylesheet">
{% endif %} {% endif %}
<!--[if lt IE 9]><script src="../assets/js/ie8-responsive-file-warning.js"></script><![endif]--> <!--[if lt IE 9]><script src="{{ site.baseurl }}/assets/js/ie8-responsive-file-warning.js"></script><![endif]-->
<script src="../assets/js/ie-emulation-modes-warning.js"></script>
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]--> <![endif]-->
<!-- Favicons --> <!-- Favicons -->
<link rel="apple-touch-icon" href="/apple-touch-icon.png"> <link rel="apple-touch-icon" href="{{ site.baseurl }}/apple-touch-icon.png">
<link rel="icon" href="/favicon.ico"> <link rel="icon" href="{{ site.baseurl }}/favicon.ico">
<script> <script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga'); })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-146052-10', 'getbootstrap.com'); ga('create', 'UA-146052-10', 'getbootstrap.com');
ga('set', 'anonymizeIp', true);
ga('send', 'pageview'); ga('send', 'pageview');
</script> </script>

View file

@ -10,18 +10,18 @@
<h2 id="buttons-stateful">Stateful</h2> <h2 id="buttons-stateful">Stateful</h2>
<p>Add <code>data-loading-text="Loading..."</code> to use a loading state on a button.</p> <p>Add <code>data-loading-text="Loading..."</code> to use a loading state on a button.</p>
<p><strong class="text-danger">This feature is deprecated since v3.3.5 and will be removed in v4.</strong></p> <p><strong class="text-danger">This feature is deprecated since v3.3.5 and has been removed in v4.</strong></p>
<div class="bs-callout bs-callout-info" id="callout-buttons-state-names"> <div class="bs-callout bs-callout-info" id="callout-buttons-state-names">
<h4>Use whichever state you like!</h4> <h4>Use whichever state you like!</h4>
<p>For the sake of this demonstration, we are using <code>data-loading-text</code> and <code>$().button('loading')</code>, but that's not the only state you can use. <a href="#buttons-methods">See more on this below in the <code>$().button(string)</code> documentation</a>.</p> <p>For the sake of this demonstration, we are using <code>data-loading-text</code> and <code>$().button('loading')</code>, but that's not the only state you can use. <a href="#buttons-methods">See more on this below in the <code>$().button(string)</code> documentation</a>.</p>
</div> </div>
<div class="bs-example"> <div class="bs-example">
<button type="button" id="loading-example-btn" data-loading-text="Loading..." class="btn btn-primary" autocomplete="off"> <button type="button" id="loading-example-btn" data-loading-text="Loading..." class="btn btn-primary">
Loading state Loading state
</button> </button>
</div><!-- /example --> </div><!-- /example -->
{% highlight html %} {% highlight html %}
<button type="button" id="myButton" data-loading-text="Loading..." class="btn btn-primary" autocomplete="off"> <button type="button" id="myButton" data-loading-text="Loading..." class="btn btn-primary">
Loading state Loading state
</button> </button>
@ -41,12 +41,12 @@
<p>For pre-toggled buttons, you must add the <code>.active</code> class and the <code>aria-pressed="true"</code> attribute to the <code>button</code> yourself.</p> <p>For pre-toggled buttons, you must add the <code>.active</code> class and the <code>aria-pressed="true"</code> attribute to the <code>button</code> yourself.</p>
</div> </div>
<div class="bs-example"> <div class="bs-example">
<button type="button" class="btn btn-primary" data-toggle="button" aria-pressed="false" autocomplete="off"> <button type="button" class="btn btn-primary" data-toggle="button" aria-pressed="false">
Single toggle Single toggle
</button> </button>
</div><!-- /example --> </div><!-- /example -->
{% highlight html %} {% highlight html %}
<button type="button" class="btn btn-primary" data-toggle="button" aria-pressed="false" autocomplete="off"> <button type="button" class="btn btn-primary" data-toggle="button" aria-pressed="false">
Single toggle Single toggle
</button> </button>
{% endhighlight %} {% endhighlight %}
@ -64,26 +64,26 @@
<div class="bs-example" data-example-id="buttons-checkbox"> <div class="bs-example" data-example-id="buttons-checkbox">
<div class="btn-group" data-toggle="buttons"> <div class="btn-group" data-toggle="buttons">
<label class="btn btn-primary active"> <label class="btn btn-primary active">
<input type="checkbox" checked autocomplete="off"> Checkbox 1 (pre-checked) <input type="checkbox" checked> Checkbox 1 (pre-checked)
</label> </label>
<label class="btn btn-primary"> <label class="btn btn-primary">
<input type="checkbox" autocomplete="off"> Checkbox 2 <input type="checkbox"> Checkbox 2
</label> </label>
<label class="btn btn-primary"> <label class="btn btn-primary">
<input type="checkbox" autocomplete="off"> Checkbox 3 <input type="checkbox"> Checkbox 3
</label> </label>
</div> </div>
</div><!-- /example --> </div><!-- /example -->
{% highlight html %} {% highlight html %}
<div class="btn-group" data-toggle="buttons"> <div class="btn-group" data-toggle="buttons">
<label class="btn btn-primary active"> <label class="btn btn-primary active">
<input type="checkbox" autocomplete="off" checked> Checkbox 1 (pre-checked) <input type="checkbox" checked> Checkbox 1 (pre-checked)
</label> </label>
<label class="btn btn-primary"> <label class="btn btn-primary">
<input type="checkbox" autocomplete="off"> Checkbox 2 <input type="checkbox"> Checkbox 2
</label> </label>
<label class="btn btn-primary"> <label class="btn btn-primary">
<input type="checkbox" autocomplete="off"> Checkbox 3 <input type="checkbox"> Checkbox 3
</label> </label>
</div> </div>
{% endhighlight %} {% endhighlight %}
@ -91,26 +91,26 @@
<div class="bs-example" data-example-id="buttons-radio"> <div class="bs-example" data-example-id="buttons-radio">
<div class="btn-group" data-toggle="buttons"> <div class="btn-group" data-toggle="buttons">
<label class="btn btn-primary active"> <label class="btn btn-primary active">
<input type="radio" name="options" id="option1" autocomplete="off" checked> Radio 1 (preselected) <input type="radio" name="options" id="option1" checked> Radio 1 (preselected)
</label> </label>
<label class="btn btn-primary"> <label class="btn btn-primary">
<input type="radio" name="options" id="option2" autocomplete="off"> Radio 2 <input type="radio" name="options" id="option2"> Radio 2
</label> </label>
<label class="btn btn-primary"> <label class="btn btn-primary">
<input type="radio" name="options" id="option3" autocomplete="off"> Radio 3 <input type="radio" name="options" id="option3"> Radio 3
</label> </label>
</div> </div>
</div><!-- /example --> </div><!-- /example -->
{% highlight html %} {% highlight html %}
<div class="btn-group" data-toggle="buttons"> <div class="btn-group" data-toggle="buttons">
<label class="btn btn-primary active"> <label class="btn btn-primary active">
<input type="radio" name="options" id="option1" autocomplete="off" checked> Radio 1 (preselected) <input type="radio" name="options" id="option1" checked> Radio 1 (preselected)
</label> </label>
<label class="btn btn-primary"> <label class="btn btn-primary">
<input type="radio" name="options" id="option2" autocomplete="off"> Radio 2 <input type="radio" name="options" id="option2"> Radio 2
</label> </label>
<label class="btn btn-primary"> <label class="btn btn-primary">
<input type="radio" name="options" id="option3" autocomplete="off"> Radio 3 <input type="radio" name="options" id="option3"> Radio 3
</label> </label>
</div> </div>
{% endhighlight %} {% endhighlight %}
@ -126,7 +126,7 @@
<p>Swaps text to any data defined text state.</p> <p>Swaps text to any data defined text state.</p>
{% highlight html %} {% highlight html %}
<button type="button" id="myStateButton" data-complete-text="finished!" class="btn btn-primary" autocomplete="off"> <button type="button" id="myStateButton" data-complete-text="finished!" class="btn btn-primary">
... ...
</button> </button>

View file

@ -85,6 +85,11 @@
<p>The <code>.active</code> class needs to be added to one of the slides. Otherwise, the carousel will not be visible.</p> <p>The <code>.active</code> class needs to be added to one of the slides. Otherwise, the carousel will not be visible.</p>
</div> </div>
<div class="bs-callout bs-callout-info" id="callout-carousel-without-glyphicons">
<h4>Glyphicon icons not necessary</h4>
<p>The <code>.glyphicon .glyphicon-chevron-left</code> and <code>.glyphicon .glyphicon-chevron-right</code> classes are not necessarily needed for the controls. Bootstrap provides <code>.icon-prev</code> and <code>.icon-next</code> as plain unicode alternatives.</p>
</div>
<h3>Optional captions</h3> <h3>Optional captions</h3>
<p>Add captions to your slides easily with the <code>.carousel-caption</code> element within any <code>.item</code>. Place just about any optional HTML within there and it will be automatically aligned and formatted.</p> <p>Add captions to your slides easily with the <code>.carousel-caption</code> element within any <code>.item</code>. Place just about any optional HTML within there and it will be automatically aligned and formatted.</p>
<div class="bs-example" data-example-id="carousel-with-captions"> <div class="bs-example" data-example-id="carousel-with-captions">
@ -173,9 +178,9 @@ $('.carousel').carousel()
</tr> </tr>
<tr> <tr>
<td>pause</td> <td>pause</td>
<td>string</td> <td>string | null</td>
<td>"hover"</td> <td>"hover"</td>
<td>Pauses the cycling of the carousel on mouseenter and resumes the cycling of the carousel on mouseleave.</td> <td>If set to <code>"hover"</code>, pauses the cycling of the carousel on <code>mouseenter</code> and resumes the cycling of the carousel on <code>mouseleave</code>. If set to <code>null</code>, hovering over the carousel won't pause it.</td>
</tr> </tr>
<tr> <tr>
<td>wrap</td> <td>wrap</td>

View file

@ -167,7 +167,7 @@
<div class="bs-callout bs-callout-warning" id="callout-collapse-accessibility"> <div class="bs-callout bs-callout-warning" id="callout-collapse-accessibility">
<h4>Make expand/collapse controls accessible</h4> <h4>Make expand/collapse controls accessible</h4>
<p>Be sure to add <code>aria-expanded</code> to the control element. This attribute explicitly defines the current state of the collapsible element to screen readers and similar assistive technologies. If the collapsible element is closed by default, it should have a value of <code>aria-expanded="false"</code>. If you've set the collapsible element to be open by default using the <code>in</code> class, set <code>aria-expanded="true"</code> on the control instead. The plugin will automatically toggle this attribute based on whether or not the collapsible element has been opened or closed.</p> <p>Be sure to add <code>aria-expanded</code> to the control element. This attribute explicitly defines the current state of the collapsible element to screen readers and similar assistive technologies. If the collapsible element is closed by default, it should have a value of <code>aria-expanded="false"</code>. If you've set the collapsible element to be open by default using the <code>in</code> class, set <code>aria-expanded="true"</code> on the control instead. The plugin will automatically toggle this attribute based on whether or not the collapsible element has been opened or closed.</p>
<p>Additionally, if your control element is targetting a single collapsible element i.e. the <code>data-target</code> attribute is pointing to an <code>id</code> selector you may add an additional <code>aria-controls</code> attribute to the control element, containing the <code>id</code> of the collapsible element. Modern screen readers and similar assistive technologies make use of this attribute to provide users with additional shortcuts to navigate directly to the collapsible element itself.</p> <p>Additionally, if your control element is targeting a single collapsible element i.e. the <code>data-target</code> attribute is pointing to an <code>id</code> selector you may add an additional <code>aria-controls</code> attribute to the control element, containing the <code>id</code> of the collapsible element. Modern screen readers and similar assistive technologies make use of this attribute to provide users with additional shortcuts to navigate directly to the collapsible element itself.</p>
</div> </div>
<h2 id="collapse-usage">Usage</h2> <h2 id="collapse-usage">Usage</h2>

View file

@ -134,7 +134,7 @@
<p>To keep URLs intact with link buttons, use the <code>data-target</code> attribute instead of <code>href="#"</code>.</p> <p>To keep URLs intact with link buttons, use the <code>data-target</code> attribute instead of <code>href="#"</code>.</p>
{% highlight html %} {% highlight html %}
<div class="dropdown"> <div class="dropdown">
<a id="dLabel" data-target="#" href="http://example.com" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"> <a id="dLabel" data-target="#" href="http://example.com/" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
Dropdown trigger Dropdown trigger
<span class="caret"></span> <span class="caret"></span>
</a> </a>

View file

@ -12,7 +12,7 @@
</div> </div>
<div class="bs-callout bs-callout-warning" id="callout-modal-mobile-caveats"> <div class="bs-callout bs-callout-warning" id="callout-modal-mobile-caveats">
<h4>Mobile device caveats</h4> <h4>Mobile device caveats</h4>
<p>There are some caveats regarding using modals on mobile devices. <a href="../getting-started/#support-fixed-position-keyboards">See our browser support docs</a> for details.</p> <p>There are some caveats regarding using modals on mobile devices. <a href="{{ site.baseurl }}/getting-started/#support-fixed-position-keyboards">See our browser support docs</a> for details.</p>
</div> </div>
<p><strong class="text-danger">Due to how HTML5 defines its semantics, the <code>autofocus</code> HTML attribute has no effect in Bootstrap modals.</strong> To achieve the same effect, use some custom JavaScript:</p> <p><strong class="text-danger">Due to how HTML5 defines its semantics, the <code>autofocus</code> HTML attribute has no effect in Bootstrap modals.</strong> To achieve the same effect, use some custom JavaScript:</p>
@ -27,8 +27,8 @@ $('#myModal').on('shown.bs.modal', function () {
<h3>Static example</h3> <h3>Static example</h3>
<p>A rendered modal with header, body, and set of actions in the footer.</p> <p>A rendered modal with header, body, and set of actions in the footer.</p>
<div class="bs-example bs-example-modal" data-example-id="static-modal"> <div class="bs-example bs-example-modal" data-example-id="static-modal">
<div class="modal"> <div class="modal" tabindex="-1" role="dialog">
<div class="modal-dialog"> <div class="modal-dialog" role="document">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
@ -46,8 +46,8 @@ $('#myModal').on('shown.bs.modal', function () {
</div><!-- /.modal --> </div><!-- /.modal -->
</div><!-- /example --> </div><!-- /example -->
{% highlight html %} {% highlight html %}
<div class="modal fade"> <div class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog"> <div class="modal-dialog" role="document">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
@ -160,8 +160,8 @@ $('#myModal').on('shown.bs.modal', function () {
<!-- Large modal --> <!-- Large modal -->
<button type="button" class="btn btn-primary" data-toggle="modal" data-target=".bs-example-modal-lg">Large modal</button> <button type="button" class="btn btn-primary" data-toggle="modal" data-target=".bs-example-modal-lg">Large modal</button>
<div class="modal fade bs-example-modal-lg" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel"> <div class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel">
<div class="modal-dialog modal-lg"> <div class="modal-dialog modal-lg" role="document">
<div class="modal-content"> <div class="modal-content">
... ...
</div> </div>
@ -171,8 +171,8 @@ $('#myModal').on('shown.bs.modal', function () {
<!-- Small modal --> <!-- Small modal -->
<button type="button" class="btn btn-primary" data-toggle="modal" data-target=".bs-example-modal-sm">Small modal</button> <button type="button" class="btn btn-primary" data-toggle="modal" data-target=".bs-example-modal-sm">Small modal</button>
<div class="modal fade bs-example-modal-sm" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel"> <div class="modal fade" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel">
<div class="modal-dialog modal-sm"> <div class="modal-dialog modal-sm" role="document">
<div class="modal-content"> <div class="modal-content">
... ...
</div> </div>
@ -182,7 +182,7 @@ $('#myModal').on('shown.bs.modal', function () {
<!-- Modal content for the above example --> <!-- Modal content for the above example -->
<div class="modal fade bs-example-modal-lg" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel"> <div class="modal fade bs-example-modal-lg" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel">
<div class="modal-dialog modal-lg"> <div class="modal-dialog modal-lg" role="document">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
@ -196,7 +196,7 @@ $('#myModal').on('shown.bs.modal', function () {
</div><!-- /.modal-dialog --> </div><!-- /.modal-dialog -->
</div><!-- /.modal --> </div><!-- /.modal -->
<div class="modal fade bs-example-modal-sm" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel"> <div class="modal fade bs-example-modal-sm" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel">
<div class="modal-dialog modal-sm"> <div class="modal-dialog modal-sm" role="document">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
@ -267,7 +267,7 @@ $('#myModal').on('shown.bs.modal', function () {
</button> </button>
</div><!-- /example --> </div><!-- /example -->
{% highlight html %} {% highlight html %}
<div class="modal fade" role="dialog" aria-labelledby="gridSystemModalLabel"> <div class="modal fade" tabindex="-1" role="dialog" aria-labelledby="gridSystemModalLabel">
<div class="modal-dialog" role="document"> <div class="modal-dialog" role="document">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
@ -311,7 +311,7 @@ $('#myModal').on('shown.bs.modal', function () {
{% endhighlight %} {% endhighlight %}
<h2 id="modals-related-target">Varying modal content based on trigger button</h2> <h2 id="modals-related-target">Varying modal content based on trigger button</h2>
<p>Have a bunch of buttons that all trigger the same modal, just with slightly different contents? Use <code>event.relatedTarget</code> and <a href="https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Using_data_attributes">HTML <code>data-*</code> attributes</a> (possibly <a href="http://api.jquery.com/data/">via jQuery</a>) to vary the contents of the modal depending on which button was clicked. See the Modal Events docs for details on <code>relatedTarget</code>,</p> <p>Have a bunch of buttons that all trigger the same modal, just with slightly different contents? Use <code>event.relatedTarget</code> and <a href="https://developer.mozilla.org/en-US/docs/Learn/HTML/Howto/Use_data_attributes">HTML <code>data-*</code> attributes</a> (possibly <a href="https://api.jquery.com/data/">via jQuery</a>) to vary the contents of the modal depending on which button was clicked. See the Modal Events docs for details on <code>relatedTarget</code>,</p>
<div class="bs-example"> <div class="bs-example">
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@mdo">Open modal for @mdo</button> <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@mdo">Open modal for @mdo</button>
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@fat">Open modal for @fat</button> <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@fat">Open modal for @fat</button>
@ -439,7 +439,7 @@ $('#exampleModal').on('show.bs.modal', function (event) {
<td>path</td> <td>path</td>
<td>false</td> <td>false</td>
<td> <td>
<p><strong class="text-danger">This option is deprecated since v3.3.0 and will be removed in v4.</strong> We recommend instead using client-side templating or a data binding framework, or calling <a href="http://api.jquery.com/load/">jQuery.load</a> yourself.</p> <p><strong class="text-danger">This option is deprecated since v3.3.0 and has been removed in v4.</strong> We recommend instead using client-side templating or a data binding framework, or calling <a href="https://api.jquery.com/load/">jQuery.load</a> yourself.</p>
<p>If a remote URL is provided, <strong>content will be loaded one time</strong> via jQuery's <code>load</code> method and injected into the <code>.modal-content</code> div. If you're using the data-api, you may alternatively use the <code>href</code> attribute to specify the remote source. An example of this is shown below:</p> <p>If a remote URL is provided, <strong>content will be loaded one time</strong> via jQuery's <code>load</code> method and injected into the <code>.modal-content</code> div. If you're using the data-api, you may alternatively use the <code>href</code> attribute to specify the remote source. An example of this is shown below:</p>
{% highlight html %} {% highlight html %}
<a data-toggle="modal" href="remote.html" data-target="#modal">Click me</a> <a data-toggle="modal" href="remote.html" data-target="#modal">Click me</a>

View file

@ -11,7 +11,7 @@
<div class="bs-callout bs-callout-danger" id="callout-overview-dependencies"> <div class="bs-callout bs-callout-danger" id="callout-overview-dependencies">
<h4>Plugin dependencies</h4> <h4>Plugin dependencies</h4>
<p>Some plugins and CSS components depend on other plugins. If you include plugins individually, make sure to check for these dependencies in the docs. Also note that all plugins depend on jQuery (this means jQuery must be included <strong>before</strong> the plugin files). <a href="{{ site.repo }}/blob/v{{ site.current_version }}/bower.json">Consult our <code>bower.json</code></a> to see which versions of jQuery are supported.</p> <p>Some plugins and CSS components depend on other plugins. If you include plugins individually, make sure to check for these dependencies in the docs. Also note that all plugins depend on jQuery (this means jQuery must be included <strong>before</strong> the plugin files). <a href="{{ site.repo }}/blob/v3-dev/bower.json">Consult our <code>bower.json</code></a> to see which versions of jQuery are supported.</p>
</div> </div>
<h2 id="js-data-attrs">Data attributes</h2> <h2 id="js-data-attrs">Data attributes</h2>
@ -70,6 +70,81 @@ $('#myModal').on('show.bs.modal', function (e) {
}) })
{% endhighlight %} {% endhighlight %}
<h2 id="js-sanitizer">Sanitizer</h2>
<p>Tooltips and Popovers use our built-in sanitizer to sanitize options which accept HTML.</p>
<p>The default <code>whiteList</code> value is the following:</p>
{% highlight js %}
var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i
var DefaultWhitelist = {
// Global attributes allowed on any supplied element below.
'*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
a: ['target', 'href', 'title', 'rel'],
area: [],
b: [],
br: [],
col: [],
code: [],
div: [],
em: [],
hr: [],
h1: [],
h2: [],
h3: [],
h4: [],
h5: [],
h6: [],
i: [],
img: ['src', 'alt', 'title', 'width', 'height'],
li: [],
ol: [],
p: [],
pre: [],
s: [],
small: [],
span: [],
sub: [],
sup: [],
strong: [],
u: [],
ul: []
}
{% endhighlight %}
<p>If you want to add new values to this default <code>whiteList</code> you can do the following:</p>
{% highlight js %}
var myDefaultWhiteList = $.fn.tooltip.Constructor.DEFAULTS.whiteList
// To allow table elements
myDefaultWhiteList.table = []
// To allow td elements and data-option attributes on td elements
myDefaultWhiteList.td = ['data-option']
// You can push your custom regex to validate your attributes.
// Be careful about your regular expressions being too lax
var myCustomRegex = /^data-my-app-[\w-]+/
myDefaultWhiteList['*'].push(myCustomRegex)
{% endhighlight %}
<p>If you want to bypass our sanitizer because you prefer to use a dedicated library, for example <a href="https://www.npmjs.com/package/dompurify">DOMPurify</a>, you should do the following:</p>
{% highlight js %}
$('#yourTooltip').tooltip({
sanitizeFn: function (content) {
return DOMPurify.sanitize(content)
}
})
{% endhighlight %}
<div class="bs-callout bs-callout-danger" id="callout-sanitizer-no-createhtmldocument">
<h4>Browsers without <code>document.implementation.createHTMLDocument</code></h4>
<p>In case of browsers that don't support <code>document.implementation.createHTMLDocument</code>, like Internet Explorer 8, the built-in sanitize function returns the HTML as is.</p>
<p>If you want to perform sanitization in this case, please specify <code>sanitizeFn</code> and use an external library like <a href="https://www.npmjs.com/package/dompurify">DOMPurify</a>.</p>
</div>
<h2 id="js-version-nums">Version numbers</h2> <h2 id="js-version-nums">Version numbers</h2>
<p>The version of each of Bootstrap's jQuery plugins can be accessed via the <code>VERSION</code> property of the plugin's constructor. For example, for the tooltip plugin:</p> <p>The version of each of Bootstrap's jQuery plugins can be accessed via the <code>VERSION</code> property of the plugin's constructor. For example, for the tooltip plugin:</p>
{% highlight js %} {% highlight js %}

View file

@ -19,8 +19,8 @@ $(function () {
{% endhighlight %} {% endhighlight %}
</div> </div>
<div class="bs-callout bs-callout-warning" id="callout-popover-groups"> <div class="bs-callout bs-callout-warning" id="callout-popover-groups">
<h4>Popovers in button groups and input groups require special setting</h4> <h4>Popovers in button groups, input groups, and tables require special setting</h4>
<p>When using popovers on elements within a <code>.btn-group</code> or an <code>.input-group</code>, you'll have to specify the option <code>container: 'body'</code> (documented below) to avoid unwanted side effects (such as the element growing wider and/or losing its rounded corners when the popover is triggered).</p> <p>When using popovers on elements within a <code>.btn-group</code> or an <code>.input-group</code>, or on table-related elements (<code>&lt;td&gt;</code>, <code>&lt;th&gt;</code>, <code>&lt;tr&gt;</code>, <code>&lt;thead&gt;</code>, <code>&lt;tbody&gt;</code>, <code>&lt;tfoot&gt;</code>), you'll have to specify the option <code>container: 'body'</code> (documented below) to avoid unwanted side effects (such as the element growing wider and/or losing its rounded corners when the popover is triggered).</p>
</div> </div>
<div class="bs-callout bs-callout-warning" id="callout-popover-hidden"> <div class="bs-callout bs-callout-warning" id="callout-popover-hidden">
<h4>Don't try to show popovers on hidden elements</h4> <h4>Don't try to show popovers on hidden elements</h4>
@ -123,7 +123,7 @@ sagittis lacus vel augue laoreet rutrum faucibus.">
<p>Use the <code>focus</code> trigger to dismiss popovers on the next click that the user makes.</p> <p>Use the <code>focus</code> trigger to dismiss popovers on the next click that the user makes.</p>
<div class="bs-callout bs-callout-danger" id="callout-popover-dismiss-click"> <div class="bs-callout bs-callout-danger" id="callout-popover-dismiss-click">
<h4>Specific markup required for dismiss-on-next-click</h4> <h4>Specific markup required for dismiss-on-next-click</h4>
<p>For proper cross-browser and cross-platform behavior, you must use the <code>&lt;a&gt;</code> tag, <i>not</i> the <code>&lt;button&gt;</code> tag, and you also must include the <code>role="button"</code> and <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes#tabindex"><code>tabindex</code></a> attributes.</p> <p>For proper cross-browser and cross-platform behavior, you must use the <code>&lt;a&gt;</code> tag, <i>not</i> the <code>&lt;button&gt;</code> tag, and you also must include the <code>role="button"</code> and <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex"><code>tabindex</code></a> attributes.</p>
</div> </div>
<div class="bs-example bs-example-padded-bottom"> <div class="bs-example bs-example-padded-bottom">
<a tabindex="0" class="btn btn-lg btn-danger bs-docs-popover" role="button" data-toggle="popover" data-trigger="focus" title="Dismissible popover" data-content="And here's some amazing content. It's very engaging. Right?">Dismissible popover</a> <a tabindex="0" class="btn btn-lg btn-danger bs-docs-popover" role="button" data-toggle="popover" data-trigger="focus" title="Dismissible popover" data-content="And here's some amazing content. It's very engaging. Right?">Dismissible popover</a>
@ -139,6 +139,11 @@ sagittis lacus vel augue laoreet rutrum faucibus.">
<h3 id="popovers-options">Options</h3> <h3 id="popovers-options">Options</h3>
<p>Options can be passed via data attributes or JavaScript. For data attributes, append the option name to <code>data-</code>, as in <code>data-animation=""</code>.</p> <p>Options can be passed via data attributes or JavaScript. For data attributes, append the option name to <code>data-</code>, as in <code>data-animation=""</code>.</p>
<div class="bs-callout bs-callout-warning" id="callout-popover-disabled-options">
<p>Note that for security reasons the <code>sanitize</code>, <code>sanitizeFn</code> and <code>whiteList</code> options cannot be supplied using data attributes.</p>
</div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-bordered table-striped js-options-table js-options-table"> <table class="table table-bordered table-striped js-options-table js-options-table">
<thead> <thead>
@ -240,6 +245,24 @@ sagittis lacus vel augue laoreet rutrum faucibus.">
<p>If a function is given, it is called with the triggering element DOM node as its only argument. The <code>this</code> context is set to the popover instance.</p> <p>If a function is given, it is called with the triggering element DOM node as its only argument. The <code>this</code> context is set to the popover instance.</p>
</td> </td>
</tr> </tr>
<tr>
<td>sanitize</td>
<td>boolean</td>
<td>true</td>
<td>Enable or disable the sanitization. If activated <code>'template'</code>, <code>'content'</code> and <code>'title'</code> options will be sanitized.</td>
</tr>
<tr>
<td>whiteList</td>
<td>object</td>
<td><a href="#js-sanitizer">Default value</a></td>
<td>Object which contains allowed attributes and tags</td>
</tr>
<tr>
<td>sanitizeFn</td>
<td>null | function</td>
<td>null</td>
<td>Here you can supply your own sanitize function. This can be useful if you prefer to use a dedicated library to perform sanitization.</td>
</tr>
</tbody> </tbody>
</table> </table>
</div><!-- /.table-responsive --> </div><!-- /.table-responsive -->

View file

@ -53,7 +53,7 @@
<div class="bs-callout bs-callout-warning" id="callout-scrollspy-needs-nav"> <div class="bs-callout bs-callout-warning" id="callout-scrollspy-needs-nav">
<h4>Requires Bootstrap nav</h4> <h4>Requires Bootstrap nav</h4>
<p>Scrollspy currently requires the use of a <a href="../components/#nav">Bootstrap nav component</a> for proper highlighting of active links.</p> <p>Scrollspy currently requires the use of a <a href="{{ site.baseurl }}/components/#nav">Bootstrap nav component</a> for proper highlighting of active links.</p>
</div> </div>
<div class="bs-callout bs-callout-danger" id="callout-scrollspy-target-ids"> <div class="bs-callout bs-callout-danger" id="callout-scrollspy-target-ids">
<h4>Resolvable ID targets required</h4> <h4>Resolvable ID targets required</h4>
@ -61,7 +61,7 @@
</div> </div>
<div class="bs-callout bs-callout-info" id="callout-scrollspy-invisible-targets"> <div class="bs-callout bs-callout-info" id="callout-scrollspy-invisible-targets">
<h4>Non-<code>:visible</code> target elements ignored</h4> <h4>Non-<code>:visible</code> target elements ignored</h4>
<p>Target elements that are not <a href="http://api.jquery.com/visible-selector/"><code>:visible</code> according to jQuery</a> will be ignored and their corresponding nav items will never be highlighted.</p> <p>Target elements that are not <a href="https://api.jquery.com/visible-selector/"><code>:visible</code> according to jQuery</a> will be ignored and their corresponding nav items will never be highlighted.</p>
</div> </div>
<h3>Requires relative positioning</h3> <h3>Requires relative positioning</h3>

View file

@ -16,16 +16,16 @@
</li> </li>
</ul> </ul>
<div id="myTabContent" class="tab-content"> <div id="myTabContent" class="tab-content">
<div role="tabpanel" class="tab-pane fade in active" id="home" aria-labelledBy="home-tab"> <div role="tabpanel" class="tab-pane fade in active" id="home" aria-labelledby="home-tab">
<p>Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.</p> <p>Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.</p>
</div> </div>
<div role="tabpanel" class="tab-pane fade" id="profile" aria-labelledBy="profile-tab"> <div role="tabpanel" class="tab-pane fade" id="profile" aria-labelledby="profile-tab">
<p>Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit. Keytar helvetica VHS salvia yr, vero magna velit sapiente labore stumptown. Vegan fanny pack odio cillum wes anderson 8-bit, sustainable jean shorts beard ut DIY ethical culpa terry richardson biodiesel. Art party scenester stumptown, tumblr butcher vero sint qui sapiente accusamus tattooed echo park.</p> <p>Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit. Keytar helvetica VHS salvia yr, vero magna velit sapiente labore stumptown. Vegan fanny pack odio cillum wes anderson 8-bit, sustainable jean shorts beard ut DIY ethical culpa terry richardson biodiesel. Art party scenester stumptown, tumblr butcher vero sint qui sapiente accusamus tattooed echo park.</p>
</div> </div>
<div role="tabpanel" class="tab-pane fade" id="dropdown1" aria-labelledBy="dropdown1-tab"> <div role="tabpanel" class="tab-pane fade" id="dropdown1" aria-labelledby="dropdown1-tab">
<p>Etsy mixtape wayfarers, ethical wes anderson tofu before they sold out mcsweeney's organic lomo retro fanny pack lo-fi farm-to-table readymade. Messenger bag gentrify pitchfork tattooed craft beer, iphone skateboard locavore carles etsy salvia banksy hoodie helvetica. DIY synth PBR banksy irony. Leggings gentrify squid 8-bit cred pitchfork. Williamsburg banh mi whatever gluten-free, carles pitchfork biodiesel fixie etsy retro mlkshk vice blog. Scenester cred you probably haven't heard of them, vinyl craft beer blog stumptown. Pitchfork sustainable tofu synth chambray yr.</p> <p>Etsy mixtape wayfarers, ethical wes anderson tofu before they sold out mcsweeney's organic lomo retro fanny pack lo-fi farm-to-table readymade. Messenger bag gentrify pitchfork tattooed craft beer, iphone skateboard locavore carles etsy salvia banksy hoodie helvetica. DIY synth PBR banksy irony. Leggings gentrify squid 8-bit cred pitchfork. Williamsburg banh mi whatever gluten-free, carles pitchfork biodiesel fixie etsy retro mlkshk vice blog. Scenester cred you probably haven't heard of them, vinyl craft beer blog stumptown. Pitchfork sustainable tofu synth chambray yr.</p>
</div> </div>
<div role="tabpanel" class="tab-pane fade" id="dropdown2" aria-labelledBy="dropdown2-tab"> <div role="tabpanel" class="tab-pane fade" id="dropdown2" aria-labelledby="dropdown2-tab">
<p>Trust fund seitan letterpress, keytar raw denim keffiyeh etsy art party before they sold out master cleanse gluten-free squid scenester freegan cosby sweater. Fanny pack portland seitan DIY, art party locavore wolf cliche high life echo park Austin. Cred vinyl keffiyeh DIY salvia PBR, banh mi before they sold out farm-to-table VHS viral locavore cosby sweater. Lomo wolf viral, mustache readymade thundercats keffiyeh craft beer marfa ethical. Wolf salvia freegan, sartorial keffiyeh echo park vegan.</p> <p>Trust fund seitan letterpress, keytar raw denim keffiyeh etsy art party before they sold out master cleanse gluten-free squid scenester freegan cosby sweater. Fanny pack portland seitan DIY, art party locavore wolf cliche high life echo park Austin. Cred vinyl keffiyeh DIY salvia PBR, banh mi before they sold out farm-to-table VHS viral locavore cosby sweater. Lomo wolf viral, mustache readymade thundercats keffiyeh craft beer marfa ethical. Wolf salvia freegan, sartorial keffiyeh echo park vegan.</p>
</div> </div>
</div> </div>
@ -33,7 +33,7 @@
<div class="bs-callout bs-callout-info" id="callout-tabs-extends-component"> <div class="bs-callout bs-callout-info" id="callout-tabs-extends-component">
<h4>Extends tabbed navigation</h4> <h4>Extends tabbed navigation</h4>
<p>This plugin extends the <a href="../components/#nav-tabs">tabbed navigation component</a> to add tabbable areas.</p> <p>This plugin extends the <a href="{{ site.baseurl }}/components/#nav-tabs">tabbed navigation component</a> to add tabbable areas.</p>
</div> </div>
@ -57,7 +57,7 @@ $('#myTabs li:eq(2) a').tab('show') // Select third tab (0-indexed)
{% endhighlight %} {% endhighlight %}
<h3>Markup</h3> <h3>Markup</h3>
<p>You can activate a tab or pill navigation without writing any JavaScript by simply specifying <code>data-toggle="tab"</code> or <code>data-toggle="pill"</code> on an element. Adding the <code>nav</code> and <code>nav-tabs</code> classes to the tab <code>ul</code> will apply the Bootstrap <a href="../components/#nav-tabs">tab styling</a>, while adding the <code>nav</code> and <code>nav-pills</code> classes will apply <a href="../components/#nav-pills">pill styling</a>.</p> <p>You can activate a tab or pill navigation without writing any JavaScript by simply specifying <code>data-toggle="tab"</code> or <code>data-toggle="pill"</code> on an element. Adding the <code>nav</code> and <code>nav-tabs</code> classes to the tab <code>ul</code> will apply the Bootstrap <a href="{{ site.baseurl }}/components/#nav-tabs">tab styling</a>, while adding the <code>nav</code> and <code>nav-pills</code> classes will apply <a href="{{ site.baseurl }}/components/#nav-pills">pill styling</a>.</p>
{% highlight html %} {% highlight html %}
<div> <div>
@ -81,7 +81,7 @@ $('#myTabs li:eq(2) a').tab('show') // Select third tab (0-indexed)
{% endhighlight %} {% endhighlight %}
<h3>Fade effect</h3> <h3>Fade effect</h3>
<p>To make tabs fade in, add <code>.fade</code> to each <code>.tab-pane</code>. The first tab pane must also have <code>.in</code> to properly fade in initial content.</p> <p>To make tabs fade in, add <code>.fade</code> to each <code>.tab-pane</code>. The first tab pane must also have <code>.in</code> to make the initial content visible.</p>
{% highlight html %} {% highlight html %}
<div class="tab-content"> <div class="tab-content">
<div role="tabpanel" class="tab-pane fade in active" id="home">...</div> <div role="tabpanel" class="tab-pane fade in active" id="home">...</div>

View file

@ -97,8 +97,8 @@ $('#example').tooltip(options)
<p>Sometimes you want to add a tooltip to a hyperlink that wraps multiple lines. The default behavior of the tooltip plugin is to center it horizontally and vertically. Add <code>white-space: nowrap;</code> to your anchors to avoid this.</p> <p>Sometimes you want to add a tooltip to a hyperlink that wraps multiple lines. The default behavior of the tooltip plugin is to center it horizontally and vertically. Add <code>white-space: nowrap;</code> to your anchors to avoid this.</p>
</div> </div>
<div class="bs-callout bs-callout-warning" id="callout-tooltip-groups"> <div class="bs-callout bs-callout-warning" id="callout-tooltip-groups">
<h4>Tooltips in button groups and input groups require special setting</h4> <h4>Tooltips in button groups, input groups, and tables require special setting</h4>
<p>When using tooltips on elements within a <code>.btn-group</code> or an <code>.input-group</code>, you'll have to specify the option <code>container: 'body'</code> (documented below) to avoid unwanted side effects (such as the element growing wider and/or losing its rounded corners when the tooltip is triggered).</p> <p>When using tooltips on elements within a <code>.btn-group</code> or an <code>.input-group</code>, or on table-related elements (<code>&lt;td&gt;</code>, <code>&lt;th&gt;</code>, <code>&lt;tr&gt;</code>, <code>&lt;thead&gt;</code>, <code>&lt;tbody&gt;</code>, <code>&lt;tfoot&gt;</code>), you'll have to specify the option <code>container: 'body'</code> (documented below) to avoid unwanted side effects (such as the element growing wider and/or losing its rounded corners when the tooltip is triggered).</p>
</div> </div>
<div class="bs-callout bs-callout-warning" id="callout-tooltip-hidden"> <div class="bs-callout bs-callout-warning" id="callout-tooltip-hidden">
<h4>Don't try to show tooltips on hidden elements</h4> <h4>Don't try to show tooltips on hidden elements</h4>
@ -115,6 +115,11 @@ $('#example').tooltip(options)
<h3 id="tooltips-options">Options</h3> <h3 id="tooltips-options">Options</h3>
<p>Options can be passed via data attributes or JavaScript. For data attributes, append the option name to <code>data-</code>, as in <code>data-animation=""</code>.</p> <p>Options can be passed via data attributes or JavaScript. For data attributes, append the option name to <code>data-</code>, as in <code>data-animation=""</code>.</p>
<div class="bs-callout bs-callout-warning" id="callout-tooltip-disabled-options">
<p>Note that for security reasons the <code>sanitize</code>, <code>sanitizeFn</code> and <code>whiteList</code> options cannot be supplied using data attributes.</p>
</div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-bordered table-striped js-options-table"> <table class="table table-bordered table-striped js-options-table">
<thead> <thead>
@ -169,7 +174,7 @@ $('#example').tooltip(options)
<td>selector</td> <td>selector</td>
<td>string</td> <td>string</td>
<td>false</td> <td>false</td>
<td>If a selector is provided, tooltip objects will be delegated to the specified targets. In practice, this is used to enable dynamic HTML content to have tooltips added. See <a href="https://github.com/twbs/bootstrap/issues/4215">this</a> and <a href="http://jsbin.com/zopod/1/edit">an informative example</a>.</td> <td>If a selector is provided, tooltip objects will be delegated to the specified targets. In practice, this is used to also apply tooltips to dynamically added DOM elements (<code>jQuery.on</code> support). See <a href="https://github.com/twbs/bootstrap/issues/4215">this</a> and <a href="http://jsbin.com/zopod/1/edit">an informative example</a>.</td>
</tr> </tr>
<tr> <tr>
<td>template</td> <td>template</td>
@ -206,6 +211,24 @@ $('#example').tooltip(options)
<p>If a function is given, it is called with the triggering element DOM node as its only argument. The <code>this</code> context is set to the tooltip instance.</p> <p>If a function is given, it is called with the triggering element DOM node as its only argument. The <code>this</code> context is set to the tooltip instance.</p>
</td> </td>
</tr> </tr>
<tr>
<td>sanitize</td>
<td>boolean</td>
<td>true</td>
<td>Enable or disable the sanitization. If activated <code>'template'</code>, <code>'content'</code> and <code>'title'</code> options will be sanitized.</td>
</tr>
<tr>
<td>whiteList</td>
<td>object</td>
<td><a href="#js-sanitizer">Default value</a></td>
<td>Object which contains allowed attributes and tags</td>
</tr>
<tr>
<td>sanitizeFn</td>
<td>null | function</td>
<td>null</td>
<td>Here you can supply your own sanitize function. This can be useful if you prefer to use a dedicated library to perform sanitization.</td>
</tr>
</tbody> </tbody>
</table> </table>
</div><!-- /.table-responsive --> </div><!-- /.table-responsive -->

View file

@ -138,8 +138,8 @@
<li><a href="#panels-heading">Panel with heading</a></li> <li><a href="#panels-heading">Panel with heading</a></li>
<li><a href="#panels-footer">Panel with footer</a></li> <li><a href="#panels-footer">Panel with footer</a></li>
<li><a href="#panels-alternatives">Contextual alternatives</a></li> <li><a href="#panels-alternatives">Contextual alternatives</a></li>
<li><a href="#panels-tables">With tables</a> <li><a href="#panels-tables">With tables</a></li>
<li><a href="#panels-list-group">With list groups</a> <li><a href="#panels-list-group">With list groups</a></li>
</ul> </ul>
</li> </li>
<li><a href="#responsive-embed">Responsive embed</a></li> <li><a href="#responsive-embed">Responsive embed</a></li>

View file

@ -20,6 +20,7 @@
<li><a href="#grid-example-mixed-complete">Ex: Mobile, tablet, desktop</a></li> <li><a href="#grid-example-mixed-complete">Ex: Mobile, tablet, desktop</a></li>
<li><a href="#grid-example-wrapping">Ex: Column wrapping</a></li> <li><a href="#grid-example-wrapping">Ex: Column wrapping</a></li>
<li><a href="#grid-responsive-resets">Responsive column resets</a></li> <li><a href="#grid-responsive-resets">Responsive column resets</a></li>
<li><a href="#grid-remove-gutters">Remove gutters</a></li>
<li><a href="#grid-offsetting">Offsetting columns</a></li> <li><a href="#grid-offsetting">Offsetting columns</a></li>
<li><a href="#grid-nesting">Nesting columns</a></li> <li><a href="#grid-nesting">Nesting columns</a></li>
<li><a href="#grid-column-ordering">Column ordering</a></li> <li><a href="#grid-column-ordering">Column ordering</a></li>

View file

@ -1,5 +1,5 @@
<!-- NOTE: DO NOT EDIT THE FOLLOWING SECTION DIRECTLY! It is autogenerated via the `build-customizer-html` Grunt task using the customizer-nav.jade template.--> <!-- NOTE: DO NOT EDIT THE FOLLOWING SECTION DIRECTLY! It is autogenerated via the `build-customizer-html` Grunt task using the customizer-nav.pug template.-->
<li><a href="#import-drop-target">Import</a></li> <li><a href="#import-drop-target">Import</a></li>
<li><a href="#less">Less components</a></li> <li><a href="#less">Less components</a></li>
<li><a href="#plugins">jQuery plugins</a></li> <li><a href="#plugins">jQuery plugins</a></li>
@ -44,4 +44,4 @@
</ul> </ul>
</li> </li>
<li><a href="#download">Download</a></li> <li><a href="#download">Download</a></li>
<!-- NOTE: DO NOT EDIT THE PRECEDING SECTION DIRECTLY! It is autogenerated via the `build-customizer-html` Grunt task using the customizer-nav.jade template.--> <!-- NOTE: DO NOT EDIT THE PRECEDING SECTION DIRECTLY! It is autogenerated via the `build-customizer-html` Grunt task using the customizer-nav.pug template.-->

View file

@ -6,6 +6,7 @@
<li><a href="#js-programmatic-api">Programmatic API</a></li> <li><a href="#js-programmatic-api">Programmatic API</a></li>
<li><a href="#js-noconflict">No conflict</a></li> <li><a href="#js-noconflict">No conflict</a></li>
<li><a href="#js-events">Events</a></li> <li><a href="#js-events">Events</a></li>
<li><a href="#js-sanitizer">Sanitizer</a></li>
<li><a href="#js-version-nums">Version numbers</a></li> <li><a href="#js-version-nums">Version numbers</a></li>
<li><a href="#js-disabled">When JavaScript is disabled</a></li> <li><a href="#js-disabled">When JavaScript is disabled</a></li>
<li><a href="#callout-third-party-libs">Third-party libraries</a></li> <li><a href="#callout-third-party-libs">Third-party libraries</a></li>

View file

@ -1,4 +1,4 @@
<header class="navbar navbar-static-top bs-docs-nav" id="top" role="banner"> <header class="navbar navbar-static-top bs-docs-nav" id="top">
<div class="container"> <div class="container">
<div class="navbar-header"> <div class="navbar-header">
<button class="navbar-toggle collapsed" type="button" data-toggle="collapse" data-target="#bs-navbar" aria-controls="bs-navbar" aria-expanded="false"> <button class="navbar-toggle collapsed" type="button" data-toggle="collapse" data-target="#bs-navbar" aria-controls="bs-navbar" aria-expanded="false">
@ -7,27 +7,41 @@
<span class="icon-bar"></span> <span class="icon-bar"></span>
<span class="icon-bar"></span> <span class="icon-bar"></span>
</button> </button>
<a href="../" class="navbar-brand">Bootstrap</a> <a href="{{ site.baseurl }}/" class="navbar-brand">Bootstrap</a>
</div> </div>
<nav id="bs-navbar" class="collapse navbar-collapse"> <nav id="bs-navbar" class="collapse navbar-collapse">
<ul class="nav navbar-nav"> <ul class="nav navbar-nav">
<li{% if page.slug == "getting-started" %} class="active"{% endif %}> <li{% if page.slug == "getting-started" %} class="active"{% endif %}>
<a href="../getting-started/">Getting started</a> <a href="{{ site.baseurl }}/getting-started/">Getting started</a>
</li> </li>
<li{% if page.slug == "css" %} class="active"{% endif %}> <li{% if page.slug == "css" %} class="active"{% endif %}>
<a href="../css/">CSS</a> <a href="{{ site.baseurl }}/css/">CSS</a>
</li> </li>
<li{% if page.slug == "components" %} class="active"{% endif %}> <li{% if page.slug == "components" %} class="active"{% endif %}>
<a href="../components/">Components</a> <a href="{{ site.baseurl }}/components/">Components</a>
</li> </li>
<li{% if page.slug == "js" %} class="active"{% endif %}> <li{% if page.slug == "js" %} class="active"{% endif %}>
<a href="../javascript/">JavaScript</a> <a href="{{ site.baseurl }}/javascript/">JavaScript</a>
</li> </li>
<li{% if page.slug == "customize" %} class="active"{% endif %}> <li{% if page.slug == "customize" %} class="active"{% endif %}>
<a href="../customize/">Customize</a> <a href="{{ site.baseurl }}/customize/">Customize</a>
</li> </li>
</ul> </ul>
<ul class="nav navbar-nav navbar-right"> <ul class="nav navbar-nav navbar-right">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
v{{ site.current_version }} <span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li><a href="https://getbootstrap.com/">Latest (4.x)</a></li>
<li><a href="https://v4-alpha.getbootstrap.com/">v4 Alpha 6</a></li>
<li class="divider"></li>
<li class="active"><a href="https://getbootstrap.com/docs/{{ site.docs_version }}/">v{{ site.current_version }}</a></li>
<li><a href="https://getbootstrap.com/docs/3.3/">v3.3.7</a></li>
<li><a href="https://getbootstrap.com/2.3.2/">v2.3.2</a></li>
</ul>
</li>
<li><a href="{{ site.themes }}" onclick="ga('send', 'event', 'Navbar', 'Community links', 'Themes')">Themes</a></li>
<li><a href="{{ site.expo }}" onclick="ga('send', 'event', 'Navbar', 'Community links', 'Expo');">Expo</a></li> <li><a href="{{ site.expo }}" onclick="ga('send', 'event', 'Navbar', 'Community links', 'Expo');">Expo</a></li>
<li><a href="{{ site.blog }}" onclick="ga('send', 'event', 'Navbar', 'Community links', 'Blog');">Blog</a></li> <li><a href="{{ site.blog }}" onclick="ga('send', 'event', 'Navbar', 'Community links', 'Blog');">Blog</a></li>
</ul> </ul>

View file

@ -0,0 +1,5 @@
<a id="skippy" class="sr-only sr-only-focusable text-center" href="#content">
<div class="container">
<span class="skiplink-text">Skip to main content</span>
</div>
</a>

1
docs/_includes/v4.html Normal file
View file

@ -0,0 +1 @@
<a href="https://getbootstrap.com/" class="v4-tease">Looking for Bootstrap 4?</a>

View file

@ -1,16 +1,14 @@
<!DOCTYPE html> <!doctype html>
<html lang="en"> <html lang="en">
<head> <head>
<!-- Meta, title, CSS, favicons, etc. -->
{% include header.html %} {% include header.html %}
</head> </head>
<body> <body>
<a id="skippy" class="sr-only sr-only-focusable" href="#content"><div class="container"><span class="skiplink-text">Skip to main content</span></div></a> {% include skippy.html %}
{% include v4.html %}
<!-- Docs master nav -->
{% include nav/main.html %} {% include nav/main.html %}
<!-- Docs page layout -->
<div class="bs-docs-header" id="content" tabindex="-1"> <div class="bs-docs-header" id="content" tabindex="-1">
<div class="container"> <div class="container">
<h1>{{ page.title }}</h1> <h1>{{ page.title }}</h1>
@ -28,6 +26,10 @@
{% unless page.fullwidth == true %} {% unless page.fullwidth == true %}
<div class="col-md-3" role="complementary"> <div class="col-md-3" role="complementary">
<nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm"> <nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm">
<form class="bs-docs-search">
<input type="search" class="form-control" id="search-input" placeholder="Search..." aria-label="Search for..." autocomplete="off">
</form>
<ul class="nav bs-docs-sidenav"> <ul class="nav bs-docs-sidenav">
{% if page.slug == "getting-started" %} {% if page.slug == "getting-started" %}
{% include nav/getting-started.html %} {% include nav/getting-started.html %}

View file

@ -1,16 +1,14 @@
<!DOCTYPE html> <!doctype html>
<html lang="en"> <html lang="en">
<head> <head>
<!-- Meta, title, CSS, favicons, etc. -->
{% include header.html %} {% include header.html %}
</head> </head>
<body class="bs-docs-home"> <body class="bs-docs-home">
<a id="skippy" class="sr-only sr-only-focusable" href="#content"><div class="container"><span class="skiplink-text">Skip to main content</span></div></a> {% include skippy.html %}
{% include v4.html %}
<!-- Docs master nav -->
{% include nav/main.html %} {% include nav/main.html %}
<!-- Page content of course! -->
{{ content }} {{ content }}
{% include footer.html %} {% include footer.html %}

View file

@ -3,9 +3,10 @@ module Jekyll
def bugify(input) def bugify(input)
upstream_map = { upstream_map = {
"Bootstrap" => "https://github.com/twbs/bootstrap/issues/", "Bootstrap" => "https://github.com/twbs/bootstrap/issues/",
"IE" => ["https://connect.microsoft.com/IE/feedback/details/", "IE bug"], "Edge" => ["https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/", "Edge issue"],
"UserVoice" => ["https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/", "Edge UserVoice idea"],
"Mozilla" => ["https://bugzilla.mozilla.org/show_bug.cgi?id=", "Mozilla bug"], "Mozilla" => ["https://bugzilla.mozilla.org/show_bug.cgi?id=", "Mozilla bug"],
"Chromium" => ["https://code.google.com/p/chromium/issues/detail?id=", "Chromium issue"], "Chromium" => ["https://bugs.chromium.org/p/chromium/issues/detail?id=", "Chromium issue"],
"WebKit" => ["https://bugs.webkit.org/show_bug.cgi?id=", "WebKit bug"], "WebKit" => ["https://bugs.webkit.org/show_bug.cgi?id=", "WebKit bug"],
"Safari" => ["https://openradar.appspot.com/", "Apple Safari Radar"], "Safari" => ["https://openradar.appspot.com/", "Apple Safari Radar"],
"Normalize" => ["https://github.com/necolas/normalize.css/issues/", "Normalize"] "Normalize" => ["https://github.com/necolas/normalize.css/issues/", "Normalize"]
@ -14,7 +15,7 @@ module Jekyll
upstream_map.each do |key, data| upstream_map.each do |key, data|
url = data.is_a?(Array) ? data[0] : data url = data.is_a?(Array) ? data[0] : data
label = data.is_a?(Array) ? "#{data[1]} " : "" label = data.is_a?(Array) ? "#{data[1]} " : ""
input = input.gsub(/#{key}#(\d+)/, "<a href=\"#{url}\\1\">#{label}#\\1</a>") input = input.gsub(/#{key}#(\d+)/, "<a href=\"#{url}\\1#{key === 'Edge' ? '/' : ''}\">#{label}#\\1</a>")
end end
return input return input

View file

@ -1,4 +1,4 @@
// NOTE: DO NOT EDIT THE FOLLOWING SECTION DIRECTLY! It is autogenerated via the `build-customizer-html` Grunt task using the customizer-nav.jade template. // NOTE: DO NOT EDIT THE FOLLOWING SECTION DIRECTLY! It is autogenerated via the `build-customizer-html` Grunt task using the customizer-nav.pug template.
li li
a(href='#import-drop-target') Import a(href='#import-drop-target') Import
li li
@ -14,4 +14,4 @@ li
a(href='#'+section.id)= section.heading a(href='#'+section.id)= section.heading
li li
a(href='#download') Download a(href='#download') Download
// NOTE: DO NOT EDIT THE PRECEDING SECTION DIRECTLY! It is autogenerated via the `build-customizer-html` Grunt task using the customizer-nav.jade template. // NOTE: DO NOT EDIT THE PRECEDING SECTION DIRECTLY! It is autogenerated via the `build-customizer-html` Grunt task using the customizer-nav.pug template.

View file

@ -1,4 +1,4 @@
// NOTE: DO NOT EDIT THE FOLLOWING SECTION DIRECTLY! It is autogenerated via the `build-customizer-html` Grunt task using the customizer-variables.jade template. // NOTE: DO NOT EDIT THE FOLLOWING SECTION DIRECTLY! It is autogenerated via the `build-customizer-html` Grunt task using the customizer-variables.pug template.
each section in sections each section in sections
if section.customizable if section.customizable
h2(id=section.id)= section.heading h2(id=section.id)= section.heading
@ -22,4 +22,4 @@ each section in sections
data-var=variable.name) data-var=variable.name)
if variable.docstring if variable.docstring
p.help-block(id=helpId)!= variable.docstring.html p.help-block(id=helpId)!= variable.docstring.html
// NOTE: DO NOT EDIT THE PRECEDING SECTION DIRECTLY! It is autogenerated via the `build-customizer-html` Grunt task using the customizer-variables.jade template. // NOTE: DO NOT EDIT THE PRECEDING SECTION DIRECTLY! It is autogenerated via the `build-customizer-html` Grunt task using the customizer-variables.pug template.

View file

@ -12,8 +12,8 @@ lead: "Learn about the project's history, meet the maintaining teams, and find o
<h1 id="history" class="page-header">History</h1> <h1 id="history" class="page-header">History</h1>
<p class="lead">Originally created by a designer and a developer at Twitter, Bootstrap has become one of the most popular front-end frameworks and open source projects in the world.</p> <p class="lead">Originally created by a designer and a developer at Twitter, Bootstrap has become one of the most popular front-end frameworks and open source projects in the world.</p>
<p>Bootstrap was created at Twitter in mid-2010 by <a href="https://twitter.com/mdo">@mdo</a> and <a href="https://twitter.com/fat">@fat</a>. Prior to being an open-sourced framework, Bootstrap was known as <em>Twitter Blueprint</em>. A few months into development, Twitter held its <a href="https://blog.twitter.com/2010/hack-week">first Hack Week</a> and the project exploded as developers of all skill levels jumped in without any external guidance. It served as the style guide for internal tools development at the company for over a year before its public release, and continues to do so today.</p> <p>Bootstrap was created at Twitter in mid-2010 by <a href="https://twitter.com/mdo">@mdo</a> and <a href="https://twitter.com/fat">@fat</a>. Prior to being an open-sourced framework, Bootstrap was known as <em>Twitter Blueprint</em>. A few months into development, Twitter held its <a href="https://blog.twitter.com/engineering/en_us/a/2010/hack-week.html">first Hack Week</a> and the project exploded as developers of all skill levels jumped in without any external guidance. It served as the style guide for internal tools development at the company for over a year before its public release, and continues to do so today.</p>
<p>Originally <a href="https://blog.twitter.com/2011/bootstrap-twitter">released</a> on <a href="https://twitter.com/mdo/statuses/104620039650557952"><time datetime="2011-08-19 11:25">Friday, August 19, 2011</time></a>, we've since had over <a href="https://github.com/twbs/bootstrap/releases">twenty releases</a>, including two major rewrites with v2 and v3. With Bootstrap 2, we added responsive functionality to the entire framework as an optional stylesheet. Building on that with Bootstrap 3, we rewrote the library once more to make it responsive by default with a mobile first approach.</p> <p>Originally <a href="https://blog.twitter.com/developer/en_us/a/2011/bootstrap-twitter.html">released</a> on <time datetime="2011-08-19 11:25">Friday, August 19, 2011</time>, we've since had over <a href="https://github.com/twbs/bootstrap/releases">twenty releases</a>, including two major rewrites with v2 and v3. With Bootstrap 2, we added responsive functionality to the entire framework as an optional stylesheet. Building on that with Bootstrap 3, we rewrote the library once more to make it responsive by default with a mobile first approach.</p>
</div> </div>
@ -26,11 +26,10 @@ lead: "Learn about the project's history, meet the maintaining teams, and find o
<h2 id="team-core">Core team</h2> <h2 id="team-core">Core team</h2>
<div class="list-group bs-team"> <div class="list-group bs-team">
{% for member in site.data.core-team %} {% for member in site.data.team %}
<div class="list-group-item"> <div class="list-group-item">
<iframe class="github-btn" src="https://ghbtns.com/github-btn.html?user={{ member.user }}&amp;type=follow"></iframe>
<a class="team-member" href="https://github.com/{{ member.user }}"> <a class="team-member" href="https://github.com/{{ member.user }}">
<img src="https://secure.gravatar.com/avatar/{{ member.gravatar }}.jpg?s=32" alt="@{{ member.user }} avatar" width="32" height="32"> <img src="https://github.com/{{ member.user }}.png?s=64" alt="@{{ member.user }} avatar" width="32" height="32">
<strong>{{ member.name }}</strong> <small>@{{ member.user }}</small> <strong>{{ member.name }}</strong> <small>@{{ member.user }}</small>
</a> </a>
</div> </div>
@ -42,9 +41,8 @@ lead: "Learn about the project's history, meet the maintaining teams, and find o
<div class="list-group bs-team"> <div class="list-group bs-team">
{% for member in site.data.sass-team %} {% for member in site.data.sass-team %}
<div class="list-group-item"> <div class="list-group-item">
<iframe class="github-btn" src="https://ghbtns.com/github-btn.html?user={{ member.user }}&amp;type=follow"></iframe>
<a class="team-member" href="https://github.com/{{ member.user }}"> <a class="team-member" href="https://github.com/{{ member.user }}">
<img src="https://secure.gravatar.com/avatar/{{ member.gravatar }}.jpg?s=32" alt="@{{ member.user }} avatar" width="32" height="32"> <img src="https://github.com/{{ member.user }}.png?s=64" alt="@{{ member.user }} avatar" width="32" height="32">
<strong>{{ member.name }}</strong> <small>@{{ member.user }}</small> <strong>{{ member.name }}</strong> <small>@{{ member.user }}</small>
</a> </a>
</div> </div>
@ -59,7 +57,7 @@ lead: "Learn about the project's history, meet the maintaining teams, and find o
<div class="bs-docs-section"> <div class="bs-docs-section">
<h1 id="brand" class="page-header">Brand guidelines</h1> <h1 id="brand" class="page-header">Brand guidelines</h1>
<p class="lead">Have a need for Bootstrap's brand resources? Great! We have only a few guidelines we follow, and in turn ask you to follow as well. These guidelines were inspired by MailChimp's <a href="http://mailchimp.com/about/brand-assets/" target="_blank">Brand Assets</a>.</p> <p class="lead">Have a need for Bootstrap's brand resources? Great! We have only a few guidelines we follow, and in turn ask you to follow as well. These guidelines were inspired by MailChimp's <a href="https://mailchimp.com/about/brand-assets/" rel="noopener" target="_blank">Brand Assets</a>.</p>
<h2>Mark and logo</h2> <h2>Mark and logo</h2>
<p>Use either the Bootstrap mark (a capital <strong>B</strong>) or the standard logo (just <strong>Bootstrap</strong>). It should always appear in Helvetica Neue Bold. <strong>Do not use the Twitter bird</strong> in association with Bootstrap.</p> <p>Use either the Bootstrap mark (a capital <strong>B</strong>) or the standard logo (just <strong>Bootstrap</strong>). It should always appear in Helvetica Neue Bold. <strong>Do not use the Twitter bird</strong> in association with Bootstrap.</p>

View file

@ -1,20 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 180 612 612">
<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <g fill="#FFF">
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <path d="M510 186c25.5 0 49.6 10 67.8 28.2S606 256.5 606 282v408c0 25.5-10 49.6-28.2 67.8S535.5 786 510 786H102c-25.5 0-49.6-10-67.8-28.2S6 715.5 6 690V282c0-25.5 10-49.6 28.2-67.8S76.5 186 102 186h408m0-6H102C45.9 180 0 225.9 0 282v408c0 56.1 45.9 102 102 102h408c56.1 0 102-45.9 102-102V282c0-56.1-45.9-102-102-102z"/>
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" <path d="M166.3 313h173.5c32 0 57.7 7.3 77 22s29 36.8 29 66.5c0 18-4.4 33.4-13.2 46.2-8.8 12.8-21.4 22.8-37.8 29.8v1c22 4.7 38.7 15.1 50 31.2 11.3 16.2 17 36.4 17 60.8 0 14-2.5 27.1-7.5 39.2-5 12.2-12.8 22.7-23.5 31.5s-24.3 15.8-41 21-36.5 7.8-59.5 7.8h-164V313zm62.5 149.5h102c15 0 27.5-4.2 37.5-12.8s15-20.8 15-36.8c0-18-4.5-30.7-13.5-38s-22-11-39-11h-102v98.6zm0 156.5h110.5c19 0 33.8-4.9 44.2-14.8 10.5-9.8 15.8-23.8 15.8-41.8 0-17.7-5.2-31.2-15.8-40.8s-25.2-14.2-44.2-14.2H228.8V619z"/>
viewBox="0 180 612 612" enable-background="new 0 180 612 612" xml:space="preserve">
<g id="outline" sodipodi:docname="twitter_bootstrap_logo.svg" inkscape:version="0.48.1 r9760" xmlns:svg="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape">
<g id="bg_1_">
<path fill="#FFFFFF" d="M510,186c25.5,0,49.6,10,67.8,28.2S606,256.5,606,282v408c0,25.5-10,49.6-28.2,67.8S535.5,786,510,786H102
c-25.5,0-49.6-10-67.8-28.2S6,715.5,6,690V282c0-25.5,10-49.6,28.2-67.8S76.5,186,102,186H510 M510,180H102
C45.9,180,0,225.9,0,282v408c0,56.1,45.9,102,102,102h408c56.1,0,102-45.9,102-102V282C612,225.9,566.1,180,510,180L510,180z"/>
</g> </g>
<g id="B_2_" enable-background="new ">
<path fill="#FFFFFF" d="M166.3,313h173.5c32,0,57.7,7.3,77,22s29,36.8,29,66.5c0,18-4.4,33.4-13.2,46.2
c-8.8,12.8-21.4,22.8-37.8,29.8v1c22,4.7,38.7,15.1,50,31.2c11.3,16.2,17,36.4,17,60.8c0,14-2.5,27.1-7.5,39.2
c-5,12.2-12.8,22.7-23.5,31.5s-24.3,15.8-41,21s-36.5,7.8-59.5,7.8h-164L166.3,313L166.3,313z M228.8,462.5h102
c15,0,27.5-4.2,37.5-12.8s15-20.8,15-36.8c0-18-4.5-30.7-13.5-38s-22-11-39-11h-102L228.8,462.5L228.8,462.5z M228.8,619h110.5
c19,0,33.8-4.9,44.2-14.8c10.5-9.8,15.8-23.8,15.8-41.8c0-17.7-5.2-31.2-15.8-40.8s-25.2-14.2-44.2-14.2H228.8V619z"/>
</g>
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 918 B

Before After
Before After

View file

@ -1,18 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 180 612 612">
<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <g fill="#FFF">
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <path d="M383.5 521.8c-10.5-9.5-25.2-14.2-44.2-14.2H228.8V619h110.5c19 0 33.8-4.9 44.2-14.8 10.5-9.8 15.8-23.8 15.8-41.8-.1-17.6-5.3-31.2-15.8-40.6zm-15.3-72c10-8.5 15-20.8 15-36.8 0-18-4.5-30.7-13.5-38s-22-11-39-11h-102v98.5h102c15 0 27.5-4.3 37.5-12.7z"/>
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" <path d="M510 180H102C45.9 180 0 225.9 0 282v408c0 56.1 45.9 102 102 102h408c56.1 0 102-45.9 102-102V282c0-56.1-45.9-102-102-102zm-55.8 429.8c-5 12.2-12.8 22.7-23.5 31.5s-24.3 15.8-41 21-36.5 7.8-59.5 7.8h-164V313h173.5c32 0 57.7 7.3 77 22s29 36.8 29 66.5c0 18-4.4 33.4-13.2 46.2-8.8 12.8-21.4 22.8-37.8 29.8v1c22 4.7 38.7 15.1 50 31.2 11.3 16.2 17 36.4 17 60.8 0 14-2.5 27.1-7.5 39.3z"/>
viewBox="0 180 612 612" enable-background="new 0 180 612 612" xml:space="preserve">
<g id="punchout" sodipodi:docname="twitter_bootstrap_logo.svg" inkscape:version="0.48.1 r9760" xmlns:svg="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape">
<g>
<path fill="#FFFFFF" d="M383.5,521.8c-10.5-9.5-25.2-14.2-44.2-14.2H228.8V619h110.5c19,0,33.8-4.9,44.2-14.8
c10.5-9.8,15.8-23.8,15.8-41.8C399.2,544.8,394,531.2,383.5,521.8z"/>
<path fill="#FFFFFF" d="M368.2,449.8c10-8.5,15-20.8,15-36.8c0-18-4.5-30.7-13.5-38s-22-11-39-11h-102v98.5h102
C345.7,462.5,358.2,458.2,368.2,449.8z"/>
<path fill="#FFFFFF" d="M510,180H102C45.9,180,0,225.9,0,282v408c0,56.1,45.9,102,102,102h408c56.1,0,102-45.9,102-102V282
C612,225.9,566.1,180,510,180z M454.2,609.8c-5,12.2-12.8,22.7-23.5,31.5s-24.3,15.8-41,21s-36.5,7.8-59.5,7.8h-164V313h173.5
c32,0,57.7,7.3,77,22s29,36.8,29,66.5c0,18-4.4,33.4-13.2,46.2c-8.8,12.8-21.4,22.8-37.8,29.8v1c22,4.7,38.7,15.1,50,31.2
c11.3,16.2,17,36.4,17,60.8C461.7,584.5,459.2,597.6,454.2,609.8z"/>
</g> </g>
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 752 B

Before After
Before After

View file

@ -1,17 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 612 612">
<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <path fill="#563D7C" d="M612 510c0 56.1-45.9 102-102 102H102C45.9 612 0 566.1 0 510V102C0 45.9 45.9 0 102 0h408c56.1 0 102 45.9 102 102v408z"/>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <path fill="#FFF" d="M166.3 133h173.5c32 0 57.7 7.3 77 22s29 36.8 29 66.5c0 18-4.4 33.4-13.2 46.2-8.8 12.8-21.4 22.8-37.8 29.8v1c22 4.7 38.7 15.1 50 31.2 11.3 16.2 17 36.4 17 60.8 0 14-2.5 27.1-7.5 39.2-5 12.2-12.8 22.7-23.5 31.5s-24.3 15.8-41 21-36.5 7.8-59.5 7.8h-164V133zm62.5 149.5h102c15 0 27.5-4.2 37.5-12.8s15-20.8 15-36.8c0-18-4.5-30.7-13.5-38s-22-11-39-11h-102v98.6zm0 156.5h110.5c19 0 33.8-4.9 44.2-14.8 10.5-9.8 15.8-23.8 15.8-41.8 0-17.7-5.2-31.2-15.8-40.8s-25.2-14.2-44.2-14.2H228.8V439z"/>
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 612 612" enable-background="new 0 0 612 612" xml:space="preserve">
<g id="solid" sodipodi:docname="twitter_bootstrap_logo.svg" inkscape:version="0.48.1 r9760" xmlns:svg="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape">
<path id="bg" fill="#563D7C" d="M612,510c0,56.1-45.9,102-102,102H102C45.9,612,0,566.1,0,510V102C0,45.9,45.9,0,102,0h408
c56.1,0,102,45.9,102,102V510z"/>
<g id="B" enable-background="new ">
<path fill="#FFFFFF" d="M166.3,133h173.5c32,0,57.7,7.3,77,22s29,36.8,29,66.5c0,18-4.4,33.4-13.2,46.2
c-8.8,12.8-21.4,22.8-37.8,29.8v1c22,4.7,38.7,15.1,50,31.2c11.3,16.2,17,36.4,17,60.8c0,14-2.5,27.1-7.5,39.2
c-5,12.2-12.8,22.7-23.5,31.5s-24.3,15.8-41,21s-36.5,7.8-59.5,7.8h-164L166.3,133L166.3,133z M228.8,282.5h102
c15,0,27.5-4.2,37.5-12.8s15-20.8,15-36.8c0-18-4.5-30.7-13.5-38s-22-11-39-11h-102L228.8,282.5L228.8,282.5z M228.8,439h110.5
c19,0,33.8-4.9,44.2-14.8c10.5-9.8,15.8-23.8,15.8-41.8c0-17.7-5.2-31.2-15.8-40.8s-25.2-14.2-44.2-14.2H228.8V439z"/>
</g>
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 722 B

Before After
Before After

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,14 @@
/*!
* IE10 viewport hack for Surface/desktop Windows 8 bug
* Copyright 2014-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/v3-dev/LICENSE)
*/
@-ms-viewport {
width: device-width;
}
@-o-viewport {
width: device-width;
}
@viewport {
width: device-width;
}

View file

@ -1,66 +0,0 @@
.hll { background-color: #ffffcc }
/*{ background: #f0f3f3; }*/
.c { color: #999; } /* Comment */
.err { color: #AA0000; background-color: #FFAAAA } /* Error */
.k { color: #006699; } /* Keyword */
.o { color: #555555 } /* Operator */
.cm { color: #999; } /* Comment.Multiline */ /* Edited to remove italics and make into comment */
.cp { color: #009999 } /* Comment.Preproc */
.c1 { color: #999; } /* Comment.Single */
.cs { color: #999; } /* Comment.Special */
.gd { background-color: #FFCCCC; border: 1px solid #CC0000 } /* Generic.Deleted */
.ge { font-style: italic } /* Generic.Emph */
.gr { color: #FF0000 } /* Generic.Error */
.gh { color: #003300; } /* Generic.Heading */
.gi { background-color: #CCFFCC; border: 1px solid #00CC00 } /* Generic.Inserted */
.go { color: #AAAAAA } /* Generic.Output */
.gp { color: #000099; } /* Generic.Prompt */
.gs { } /* Generic.Strong */
.gu { color: #003300; } /* Generic.Subheading */
.gt { color: #99CC66 } /* Generic.Traceback */
.kc { color: #006699; } /* Keyword.Constant */
.kd { color: #006699; } /* Keyword.Declaration */
.kn { color: #006699; } /* Keyword.Namespace */
.kp { color: #006699 } /* Keyword.Pseudo */
.kr { color: #006699; } /* Keyword.Reserved */
.kt { color: #007788; } /* Keyword.Type */
.m { color: #FF6600 } /* Literal.Number */
.s { color: #d44950 } /* Literal.String */
.na { color: #4f9fcf } /* Name.Attribute */
.nb { color: #336666 } /* Name.Builtin */
.nc { color: #00AA88; } /* Name.Class */
.no { color: #336600 } /* Name.Constant */
.nd { color: #9999FF } /* Name.Decorator */
.ni { color: #999999; } /* Name.Entity */
.ne { color: #CC0000; } /* Name.Exception */
.nf { color: #CC00FF } /* Name.Function */
.nl { color: #9999FF } /* Name.Label */
.nn { color: #00CCFF; } /* Name.Namespace */
.nt { color: #2f6f9f; } /* Name.Tag */
.nv { color: #003333 } /* Name.Variable */
.ow { color: #000000; } /* Operator.Word */
.w { color: #bbbbbb } /* Text.Whitespace */
.mf { color: #FF6600 } /* Literal.Number.Float */
.mh { color: #FF6600 } /* Literal.Number.Hex */
.mi { color: #FF6600 } /* Literal.Number.Integer */
.mo { color: #FF6600 } /* Literal.Number.Oct */
.sb { color: #CC3300 } /* Literal.String.Backtick */
.sc { color: #CC3300 } /* Literal.String.Char */
.sd { color: #CC3300; font-style: italic } /* Literal.String.Doc */
.s2 { color: #CC3300 } /* Literal.String.Double */
.se { color: #CC3300; } /* Literal.String.Escape */
.sh { color: #CC3300 } /* Literal.String.Heredoc */
.si { color: #AA0000 } /* Literal.String.Interpol */
.sx { color: #CC3300 } /* Literal.String.Other */
.sr { color: #33AAAA } /* Literal.String.Regex */
.s1 { color: #CC3300 } /* Literal.String.Single */
.ss { color: #FFCC33 } /* Literal.String.Symbol */
.bp { color: #336666 } /* Name.Builtin.Pseudo */
.vc { color: #003333 } /* Name.Variable.Class */
.vg { color: #003333 } /* Name.Variable.Global */
.vi { color: #003333 } /* Name.Variable.Instance */
.il { color: #FF6600 } /* Literal.Number.Integer.Long */
.css .o,
.css .o + .nt,
.css .nt + .nt { color: #999; }

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Before After
Before After

Some files were not shown because too many files have changed in this diff Show more