Revert "dist from commit ec8a289 on branch v4-dev"

This reverts commit 162fd8e9b8.
This commit is contained in:
Kevin Ross 2016-01-26 12:12:48 -06:00
parent 162fd8e9b8
commit ac37625123
287 changed files with 37591 additions and 26749 deletions

3
.babelrc Normal file
View File

@ -0,0 +1,3 @@
{
presets: [ "es2015-rollup" ]
}

18
.editorconfig Normal file
View File

@ -0,0 +1,18 @@
# editorconfig.org
root = true
[*]
charset = utf-8
end_of_line = lf
indent_size = 2
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true
[*.md]
trim_trailing_whitespace = false
[*.py]
indent_size = 4

16
.gitattributes vendored Normal file
View File

@ -0,0 +1,16 @@
# Enforce Unix newlines
*.css text eol=lf
*.html text eol=lf
*.js text eol=lf
*.json text eol=lf
*.md text eol=lf
*.py text eol=lf
*.rb text eol=lf
*.scss text eol=lf
*.svg text eol=lf
*.yml text eol=lf
# Don't diff or textually merge source maps
*.map binary
bootstrap-material-design.css linguist-vendored=false
bootstrap-material-design.js linguist-vendored=false

64
.gitignore vendored Normal file
View File

@ -0,0 +1,64 @@
# Ignore docs dist files
docs/dist/**/*
docs/assets/css/*
docs/assets/js/dist/*
docs/assets/js/docs.*
js/dist/**/*
# Ignore docs files
_gh_pages
_site
# Ignore ruby files
.ruby-version
.bundle
vendor/cache
vendor/bundle
# Numerous always-ignore extensions
*.diff
*.err
*.log
*.orig
*.rej
*.swo
*.swp
*.vi
*.zip
*~
# OS or Editor folders
._*
.cache
.DS_Store
.idea
.project
.settings
.tmproj
*.esproj
*.sublime-project
*.sublime-workspace
nbproject
Thumbs.db
# Komodo
.komodotools
*.komodoproject
# grunt-html-validation
validation-report.json
validation-status.json
# SCSS-Lint
scss-lint-report.xml
# grunt-contrib-sass cache
.sass-cache
# Jekyll metadata
docs/.jekyll-metadata
# Folders to ignore
bower_components
node_modules

6
.hound.yml Normal file
View File

@ -0,0 +1,6 @@
javascript:
enabled: false
scss:
config_file: scss/.scss-lint.yml
enabled: true
ignore_file: scss/_normalize.scss

18
.npmignore Normal file
View File

@ -0,0 +1,18 @@
demo\
fonts\
meteor\
scripts\
test\
.editorconfig
.gitignore
.jshintrc
.npmignore
.travis.yml
.versions
bootstrap-elements.html
bower.json
CONTRIBUTING.md
Gruntfile.js
index.html
package.js

1
.ruby-gemset Normal file
View File

@ -0,0 +1 @@
bootstrap-material-design

1
.ruby-version Normal file
View File

@ -0,0 +1 @@
2.2.2

51
.travis.yml Normal file
View File

@ -0,0 +1,51 @@
# remove this later
branches:
except:
- v4-dev
sudo: false # use the container infrastructure
language: node_js
git:
depth: 10
node_js:
- "4"
- "5"
before_install:
# Remove ./node_modules/.bin from PATH so node-which doesn't replace Unix which and cause RVM to barf. See https://github.com/travis-ci/travis-ci/issues/5092
- export PATH=$(python -c 'from sys import argv;from collections import OrderedDict as od;print(":".join(od((p,None) for p in argv[1].split(":") if p.startswith("/")).keys()))' "$PATH")
- rvm install 2.2.2
- rvm use 2.2.2 --fuzzy
- export GEMDIR=$(rvm gemdir)
- npm install -g npm@3
- "export TRAVIS_COMMIT_MSG=\"$(git log --format=%B --no-merges -n 1)\""
- echo "$TRAVIS_COMMIT_MSG" | grep '\[skip validator\]'; export MDB_DO_VALIDATOR=$?; true
- echo "$TRAVIS_COMMIT_MSG" | grep '\[skip sauce\]'; export MDB_DO_SAUCE=$?; true
# - if [ "$TRAVIS_REPO_SLUG" = twbs-savage/bootstrap ]; then export MDB_DO_VALIDATOR=0; fi
install:
- bundle install --deployment --jobs=3
- cp grunt/npm-shrinkwrap.json ./
- npm install -g grunt-cli
- npm install -g bower
- bower install
addons:
sauce_connect:
username: "bmaterialdesign"
access_key:
secure: "eFSRVOJsJFi8Yhh0pCQpuJELDk0/B6s5tfvR3hi8oWXmW7FjNvRMgesoBKXbEW2HBhjJFMpt+1Rf49pweqgtZQ9vfz0GD47OjwJCTzip2Wv+EANLTJESdI5E0kw7STxrjL3Y12MBQQFHUYh9mhLdpAobNIppsIB5CG4pjtFSiG0="
env:
matrix:
- MDB_TEST=core
- MDB_TEST=validate-html
- MDB_TEST=sauce-js-unit
matrix:
fast_finish: true
exclude:
- node_js: "4"
env: MDB_TEST=validate-html
- node_js: "4"
env: MDB_TEST=sauce-js-unit

212
CONTRIBUTING.md Normal file
View File

@ -0,0 +1,212 @@
## **TLDR;** Create a test case using [this CodePen template](http://codepen.io/rosskevin/pen/eJMMVB) when submitting an issue.
# Contributing
Looking to contribute something to bootsrap-material-design? **Here's how you can help.**
Please take a moment to review this document in order to make the contribution
process easy and effective for everyone involved.
Following these guidelines helps to communicate that you **respect the time of
the developers** managing and developing this open source project. In return,
they should reciprocate that respect in addressing your issue or assessing
patches and features.
## Using the issue tracker
The [issue tracker](https://github.com/FezVrasta/bootstrap-material-design/issues) is
the preferred channel for [bug reports](#bug-reports), [features requests](#feature-requests)
and [submitting pull requests](#pull-requests), but please respect the following
restrictions:
* Please **do not** use the issue tracker for personal support requests. [Stack
Overflow `bootstrap-material-design`](https://stackoverflow.com/questions/tagged/bootstrap-material-design) tag) is the best place to get help.
* Please **do not** derail or troll issues. Keep the discussion on topic and
respect the opinions of others.
* Please **do not** open issues or pull requests regarding the code in dependencies such as:
[`Bootstrap`](https://github.com/twbs/bootstrap) (open them in their respective repositories).
* Please **do not** open issues without clearly stating the problem and desired result. [See the bug reports section](#bug-reports) for more information on creating effective issues.
* Please **close your own issue** once it is resolved.
## Issues and labels
Our bug tracker utilizes several labels to help organize and identify issues. Here's what they represent and how we use them:
- `spec compliance` - Issues that are not conforming to the [Material Design Specification](https://www.google.com/design/spec/material-design/introduction.html).
- `bootstrap compliance` - Issues that are implemented in Bootstrap, but have no Material Design implementation
- `bug confirmed` - Issues that have been confirmed with a reduced test case and identify a bug in Bootstrap.
- `docs & examples` - Issues for improving or updating our documentation or examples.
- `feature` - Issues asking for a new feature to be added, or an existing one to be extended or modified. New features require a minor version bump (e.g., `v3.0.0` to `v3.1.0`).
- `enhancement` - Issues for improving existing features
- `grunt` - Issues with our included JavaScript-based Gruntfile, which is used to run all our tests, concatenate and compile source files, and more.
- `help wanted` - Issues we need or would love help from the community to resolve.
- `js` - Issues stemming from our compiled or source JavaScript files.
For a complete look at our labels, see the [project labels page](https://github.com/FezVrasta/bootstrap-material-design/labels).
## Bug reports
A bug is a _demonstrable problem_ that is caused by the code in the repository.
Good bug reports are extremely helpful, so thanks!
Guidelines for bug reports:
0. **Validate and lint your code** — [validate your HTML](http://html5.validator.nu)
and [lint your HTML](https://github.com/twbs/bootlint) to ensure your
problem isn't caused by a simple error in your own code.
1. **Use the GitHub issue search** — check if the issue has already been
reported.
2. **Check if the issue has been fixed** — try to reproduce it using the
latest `master` or development branch in the repository.
3. **Isolate the problem** — ideally create a [reduced test
case](https://css-tricks.com/reduced-test-cases/) and a live example.
[This CodePen](http://codepen.io/rosskevin/pen/eJMMVB) is a starter template.
A good bug report shouldn't leave others needing to chase you up for more
information. Please try to be as detailed as possible in your report. What is
your environment? What steps will reproduce the issue? What browser(s) and OS
experience the problem? Do other browsers show the bug differently? What
would you expect to be the outcome? All these details will help people to fix
any potential bugs.
Example:
> Short and descriptive example bug report title
>
> A summary of the issue and the browser/OS environment in which it occurs. If
> suitable, include the steps required to reproduce the bug.
>
> 1. This is the first step
> 2. This is the second step
> 3. Further steps, etc.
>
> `<url>` - a link to the reduced test case (via the [CodePen template](http://codepen.io/rosskevin/pen/eJMMVB))
>
> Any other information you want to share that is relevant to the issue being
> reported. This might include the lines of code that you have identified as
> causing the bug, and potential solutions (and your opinions on their
> merits).
## Feature requests
Feature requests are welcome. But take a moment to find out whether your idea
fits with the scope and aims of the project and the [Google Material Design specification itself](http://www.google.com/design/spec/material-design/introduction.html). It's up to *you* to make a strong
case to convince the project's developers of the merits of this feature. Please
provide as much detail and context as possible.
## Pull requests
Good pull requests—patches, improvements, new features—are a fantastic
help. They should remain focused in scope and avoid containing unrelated
commits.
**Please ask first** before embarking on any significant pull request (e.g.
implementing features, refactoring code, porting to a different language),
otherwise you risk spending a lot of time working on something that the
project's developers might not want to merge into the project.
Please adhere to the [coding guidelines](#code-guidelines) used throughout the
project (indentation, accurate comments, etc.) and any other requirements
(such as test coverage).
**In general, do not edit `dist` or `sass` files
directly!** Those files are automatically generated. You should edit the
source files in [`/less/`](https://github.com/FezVrasta/bootstrap-material-design/tree/master/less)
and/or [`/scripts/`](https://github.com/FezVrasta/bootstrap-material-design/tree/master/scripts) instead.
Similarly, when contributing to Bootstrap's documentation, you should edit the
documentation source files in
[the `/bootstrap/docs/` directory of the `master` branch](https://github.com/FezVrasta/bootstrap-material-design/tree/master/docs).
**Do not edit the `gh-pages` branch.** That branch is generated from the
documentation source files and is managed separately by the bootstrap-material-design Team.
Adhering to the following process is the best way to get your work
included in the project:
1. [Fork](https://help.github.com/fork-a-repo/) the project, clone your fork,
and configure the remotes:
```bash
# Clone your fork of the repo into the current directory
git clone https://github.com/<your-username>/bootstrap-material-design.git
# Navigate to the newly cloned directory
cd bootstrap
# Assign the original repo to a remote called "upstream"
git remote add upstream https://github.com/FezVrasta/bootstrap-material-design.git
```
2. If you cloned a while ago, get the latest changes from upstream:
```bash
git checkout master
git pull upstream master
```
3. Create a new topic branch (off the main project development branch) to
contain your feature, change, or fix:
```bash
git checkout -b <topic-branch-name>
```
4. Commit your changes in logical chunks with messages written in english. Please adhere to these [git commit
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
[interactive rebase](https://help.github.com/articles/interactive-rebase)
feature to tidy up your commits before making them public.
5. Locally merge (or rebase) the upstream development branch into your topic branch:
```bash
git pull [--rebase] upstream master
```
6. Push your topic branch up to your fork:
```bash
git push origin <topic-branch-name>
```
7. [Open a Pull Request](https://help.github.com/articles/using-pull-requests/)
with a clear title and description against the `master` branch.
**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
includes code changes) and under the terms of the
[Creative Commons Attribution 3.0 Unported License](docs/LICENSE)
(if it includes documentation changes).
## Code guidelines
### HTML
[Adhere to the Code Guide.](http://codeguide.co/#html)
- Use tags and elements appropriate for an HTML5 doctype (e.g., self-closing tags).
- Use CDNs and HTTPS for third-party JS when possible. We don't use protocol-relative URLs in this case because they break when viewing the page locally via `file://`.
- Use [WAI-ARIA](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) attributes in documentation examples to promote accessibility.
### Coding styles
Before committing ensure your changes follow our coding standards by running `grunt dist docs`. This will run the various code style
check tools and provid feedback.
## License
By contributing your code, you agree to license your contribution under the [MIT License](LICENSE).
By contributing to the documentation, you agree to license your contribution under the [Creative Commons Attribution 3.0 Unported License](docs/LICENSE).

9
Gemfile Normal file
View File

@ -0,0 +1,9 @@
source 'https://rubygems.org'
group :development, :test do
gem 'jekyll', '~> 3.0.1'
gem 'jekyll-redirect-from', '~> 0.9.0'
gem 'jekyll-seo-tag', '~> 0.1.3'
gem 'jekyll-sitemap', '~> 0.9.0'
gem 'scss_lint', '~> 0.43'
end

49
Gemfile.lock Normal file
View File

@ -0,0 +1,49 @@
GEM
remote: https://rubygems.org/
specs:
colorator (0.1)
ffi (1.9.10)
jekyll (3.0.2)
colorator (~> 0.1)
jekyll-sass-converter (~> 1.0)
jekyll-watch (~> 1.1)
kramdown (~> 1.3)
liquid (~> 3.0)
mercenary (~> 0.3.3)
rouge (~> 1.7)
safe_yaml (~> 1.0)
jekyll-redirect-from (0.9.1)
jekyll (>= 2.0)
jekyll-sass-converter (1.4.0)
sass (~> 3.4)
jekyll-seo-tag (0.1.4)
jekyll (>= 2.0)
jekyll-sitemap (0.9.0)
jekyll-watch (1.3.1)
listen (~> 3.0)
kramdown (1.9.0)
liquid (3.0.6)
listen (3.0.5)
rb-fsevent (>= 0.9.3)
rb-inotify (>= 0.9)
mercenary (0.3.5)
rake (10.5.0)
rb-fsevent (0.9.7)
rb-inotify (0.9.5)
ffi (>= 0.5.0)
rouge (1.10.1)
safe_yaml (1.0.4)
sass (3.4.21)
scss_lint (0.44.0)
rake (~> 10.0)
sass (~> 3.4.15)
PLATFORMS
ruby
DEPENDENCIES
jekyll (~> 3.0.1)
jekyll-redirect-from (~> 0.9.0)
jekyll-seo-tag (~> 0.1.3)
jekyll-sitemap (~> 0.9.0)
scss_lint (~> 0.43)

661
Gruntfile.js Normal file
View File

@ -0,0 +1,661 @@
module.exports = function (grunt) {
'use strict';
// Force use of Unix newlines
grunt.util.linefeed = '\n';
RegExp.quote = function (string) {
return string.replace(/[-\\^$*+?.()|[\]{}]/g, '\\$&');
};
var referenceDocNotice =
'$1\n\n'
+ '[//]: # DO NOT EDIT IT WILL BE OVERWRITTEN - copy of bootstrap documentation generated by grunt docs-copy-bootstrap-docs\n\n'
+ '{% callout info %}\n**Bootstrap Reference Documentation** \n'
+ 'This is a part of the reference documentation from <a href="http://getbootstrap.com">Bootstrap</a>. \n'
+ 'It is included here to demonstrate rendering with Material Design for Bootstrap default styling. \n'
+ 'See the <a href="/material-design/buttons">Material Design</a> section for more elements and customization options.\n'
+ '{% endcallout %}'
+ '\n\n$2'
var fs = require('fs');
var path = require('path');
var glob = require('glob');
var isTravis = require('is-travis');
var npmShrinkwrap = require('npm-shrinkwrap');
var mq4HoverShim = require('mq4-hover-shim');
var autoprefixer = require('autoprefixer')({
browsers: [
//
// Official browser support policy:
// http://v4-alpha.getbootstrap.com/getting-started/browsers-devices/#supported-browsers
//
'Chrome >= 35', // Exact version number here is kinda arbitrary
// Rather than using Autoprefixer's native "Firefox ESR" version specifier string,
// we deliberately hardcode the number. This is to avoid unwittingly severely breaking the previous ESR in the event that:
// (a) we happen to ship a new Bootstrap release soon after the release of a new ESR,
// such that folks haven't yet had a reasonable amount of time to upgrade; and
// (b) the new ESR has unprefixed CSS properties/values whose absence would severely break webpages
// (e.g. `box-sizing`, as opposed to `background: linear-gradient(...)`).
// Since they've been unprefixed, Autoprefixer will stop prefixing them,
// thus causing them to not work in the previous ESR (where the prefixes were required).
'Firefox >= 31', // Current Firefox Extended Support Release (ESR)
// Note: Edge versions in Autoprefixer & Can I Use refer to the EdgeHTML rendering engine version,
// NOT the Edge app version shown in Edge's "About" screen.
// For example, at the time of writing, Edge 20 on an up-to-date system uses EdgeHTML 12.
// See also https://github.com/Fyrd/caniuse/issues/1928
'Edge >= 12',
'Explorer >= 9',
// Out of leniency, we prefix these 1 version further back than the official policy.
'iOS >= 8',
'Safari >= 8',
// The following remain NOT officially supported, but we're lenient and include their prefixes to avoid severely breaking in them.
'Android 2.3',
'Android >= 4',
'Opera >= 12'
]
});
// Project configuration.
grunt.initConfig({
// Metadata.
pkg: grunt.file.readJSON('package.json'),
banner: '/*!\n' +
' * Bootstrap Material Design v<%= pkg.version %> (<%= pkg.homepage %>)\n' +
' * Copyright 2014-<%= grunt.template.today("yyyy") %> <%= pkg.author %>\n' +
' * Licensed under MIT (https://github.com/FezVrasta/bootstrap-material-design/blob/master/LICENSE)\n' +
' */\n',
// Task configuration.
clean: {
dist: 'dist',
'dist-css': 'dist/css',
'dist-js': 'dist/js',
'docs-dist-js': 'docs/dist/js',
'docs-dist-css': 'docs/dist/css'
},
sass: {
options: {
includePaths: ['scss', 'node_modules'],
precision: 6,
sourceComments: true,
sourceMap: true,
outputStyle: 'expanded'
},
core: {
files: {
'dist/css/<%= pkg.name %>.css': 'scss/<%= pkg.name %>.scss'
}
},
docs: {
files: {
'docs/dist/css/docs.css': 'docs/assets/scss/docs.scss'
}
}
},
eslint: {
options: {
configFile: 'js/.eslintrc'
},
target: ['js/src/*.js', 'docs/assets/js/src/*.js']
},
jscs: {
options: {
config: 'js/.jscsrc'
},
grunt: {
src: ['Gruntfile.js', 'grunt/*.js']
},
core: {
src: 'js/src/*.js'
},
test: {
src: 'js/tests/unit/*.js'
},
docs: {
options: {
requireCamelCaseOrUpperCaseIdentifiers: null
},
src: ['docs/assets/js/src/*.js', 'docs/assets/js/*.js', '!docs/assets/js/*.min.js']
}
},
stamp: {
options: {
banner: '<%= banner %>\n'
},
core: {
files: {
src: 'dist/js/*.js'
}
}
},
//concat: {
// options: {
// stripBanners: false,
// sourceMap: true
// },
uglify: {
options: {
compress: {
warnings: true
},
mangle: false,
preserveComments: /^!|@preserve|@license|@cc_on/i
},
dist: {
files: {
'dist/js/bootstrap-material-design.iife.min.js': 'dist/js/bootstrap-material-design.iife.js',
'dist/js/bootstrap-material-design.umd.min.js': 'dist/js/bootstrap-material-design.umd.js',
'dist/js/bootstrap-material-design.es6.min.js': 'dist/js/bootstrap-material-design.es6.js'
}
},
'docs-vendor': {
options: {
compress: false
},
src: 'docs/assets/js/vendor/*.js',
//dest: 'docs/assets/js/docs.min.js'
dest: 'docs/dist/js/docs-vendor.min.js'
},
docs: {
files: {
'docs/dist/js/docs.iife.min.js': 'docs/dist/js/docs.iife.js'
}
}
},
qunit: {
options: {
inject: 'js/tests/unit/phantom.js'
},
files: 'js/tests/index.html'
},
// CSS build configuration
scsslint: {
options: {
bundleExec: true,
config: 'scss/.scss-lint.yml',
reporterOutput: null
},
core: {
src: ['scss/*.scss', '!scss/_normalize.scss']
},
docs: {
src: ['docs/assets/scss/*.scss', '!scss/_normalize.scss', '!docs/assets/scss/docs.scss']
}
},
postcss: {
core: {
options: {
map: true,
processors: [
mq4HoverShim.postprocessorFor({hoverSelectorPrefix: '.bs-true-hover '}),
autoprefixer
]
},
src: 'dist/css/*.css'
},
docs: {
options: {
processors: [
autoprefixer
]
},
src: 'docs/dist/css/*.css'
},
examples: {
options: {
processors: [
autoprefixer
]
},
expand: true,
cwd: 'docs/examples/',
src: ['**/*.css'],
dest: 'docs/examples/'
}
},
cssmin: {
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: 'ie9',
keepSpecialComments: '*',
sourceMap: true,
advanced: false
},
core: {
files: [
{
expand: true,
cwd: 'dist/css',
src: ['*.css', '!*.min.css'],
dest: 'dist/css',
ext: '.min.css'
}
]
},
docs: {
files: [
{
expand: true,
cwd: 'docs/dist/css',
src: ['*.css', '!*.min.css'],
dest: 'docs/dist/css',
ext: '.min.css'
}
]
}
},
csscomb: {
options: {
config: 'scss/.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/dist/css/docs.css',
dest: 'docs/dist/css/docs.css'
}
},
copy: {
'dist-to-docs': { // for example templates
expand: true,
cwd: 'dist',
src: [
'js/*.iife*',
'css/*.*'
],
dest: 'docs/dist/'
},
'bs-docs-js-vendor': {
expand: true,
cwd: '../bootstrap/docs/assets/js/vendor',
src: [
'**/*',
'!tether.min.js',
'!jquery.min.js'
],
dest: 'docs/assets/js/vendor/'
},
'bs-docs-plugins': {
expand: true,
cwd: '../bootstrap/docs/_plugins',
src: ['**/*', '!bridge.rb'],
dest: 'docs/_plugins/'
},
'bs-docs-scss': {
options: {
// https://regex101.com/r/hG8lU4/1
process: function (content, srcpath) {
return content.replace(/([\s\S]+)/mg, '// DO NOT EDIT IT WILL BE OVERWRITTEN - copy of bootstrap documentation generated by grunt docs-copy-bootstrap-docs\n\n$1');
}
},
expand: true,
cwd: '../bootstrap/docs/assets/scss',
src: [
'**/*',
'!docs.scss' // keep variable customizations
],
dest: 'docs/assets/scss/'
},
'bs-docs-components': {
options: {
// //https://regex101.com/r/cZ7aO8/2
process: function (content, srcpath) {
return content.replace(/(---[\s\S]+?---)([\s\S]+)/mg, referenceDocNotice);
}
},
expand: true,
cwd: '../bootstrap/docs/components',
src: [
'**/*'
],
dest: 'docs/components/'
},
'bs-docs-getting-started': {
options: {
// https://regex101.com/r/cZ7aO8/2
process: function (content, srcpath) {
return content
// insert docs reference
.replace(/(---[\s\S]+?---)([\s\S]+)/mg, referenceDocNotice)
// remove sample text 'display' as this is a particular style and is confusing
.replace(/Fancy display heading/, 'Fancy heading');
}
},
expand: true,
cwd: '../bootstrap/docs/getting-started',
src: [
'browsers-devices.md' // only one file
],
dest: 'docs/getting-started/'
},
'bs-docs-content': {
options: {
// https://regex101.com/r/cZ7aO8/2
process: function (content, srcpath) {
return content
// insert docs reference
.replace(/(---[\s\S]+?---)([\s\S]+)/mg, referenceDocNotice)
// remove sample text 'display' as this is a particular style and is confusing
.replace(/Fancy display heading/, 'Fancy heading');
}
},
expand: true,
cwd: '../bootstrap/docs/content',
src: [
'**/*'
],
dest: 'docs/content/'
}
},
connect: {
server: {
options: {
port: 3000,
base: '.'
}
}
},
jekyll: {
options: {
bundleExec: true,
config: '_config.yml',
incremental: false
},
docs: {},
github: {
options: {
//raw: 'github: true'
raw: 'baseurl: "/bootstrap-material-design"'
}
}
},
htmllint: {
options: {
ignore: [
'Element “img” is missing required attribute “src”.',
'Attribute “autocomplete” is only allowed when the input type is “color”, “date”, “datetime”, “datetime-local”, “email”, “month”, “number”, “password”, “range”, “search”, “tel”, “text”, “time”, “url”, or “week”.',
'Attribute “autocomplete” not allowed on element “button” at this point.',
'Element “div” not allowed as child of element “progress” in this context. (Suppressing further errors from this subtree.)',
'Consider using the “h1” element as a top-level heading only (all “h1” elements are treated as top-level headings by many screen readers and other tools).',
'The “datetime” input type is not supported in all browsers. Please be sure to test, and consider using a polyfill.'
]
},
src: ['_gh_pages/**/*.html', 'js/tests/visual/*.html']
},
watch: {
corejs: {
files: 'js/src/*.js',
tasks: ['dist-js']
},
docsjs: { // watch both the source and docs js
files: ['js/src/*.js', 'docs/assets/js/src/*.js'],
tasks: ['docs-js']
},
core: {
files: 'scss/**/*.scss',
tasks: ['dist-css']
},
docs: { // watch both the source and docs scss
files: ['docs/assets/scss/**/*.scss', 'scss/**/*.scss'],
tasks: ['scsslint:docs', 'sass:docs', 'postcss:docs']
}
},
'saucelabs-qunit': {
all: {
options: {
build: process.env.TRAVIS_JOB_ID,
concurrency: 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: {
npmUpdate: {
command: 'npm update'
},
'rollup-docs-iife': {
command: 'rollup -c grunt/rollup.docs.iife.config.js'
},
'rollup-iife': {
command: 'rollup -c grunt/rollup.iife.config.js'
},
'rollup-umd': {
command: 'rollup -c grunt/rollup.umd.config.js'
},
'rollup-es2015': {
command: 'rollup -c grunt/rollup.es2015.config.js'
}
},
buildcontrol: {
options: {
remote: 'git@github.com:FezVrasta/bootstrap-material-design.git',
commit: true,
push: true
},
pages: {
options: {
// FIXME: remove this when we are ready!!!
remote: 'git@github.com:rosskevin/bootstrap-material-design.git',
dir: '_gh_pages',
branch: 'gh-pages',
message: 'Built from commit %sourceCommit% on branch %sourceBranch%'
}
},
dist: {
options: {
dir: 'dist',
branch: 'v4-dev', // FIXME: this needs to be master branch eventually!
message: 'dist from commit %sourceCommit% on branch %sourceBranch%'
}
}
},
compress: {
main: {
options: {
archive: 'bootstrap-material-design-<%= pkg.version %>-dist.zip',
mode: 'zip',
level: 9,
pretty: true
},
files: [
{
expand: true,
cwd: 'dist/',
src: ['**'],
dest: 'bootstrap-material-design-<%= pkg.version %>-dist'
}
]
}
}
});
// These plugins provide necessary tasks.
require('load-grunt-tasks')(grunt);
require('time-grunt')(grunt);
// Docs HTML validation task
grunt.registerTask('validate-html', ['jekyll:docs', 'htmllint']);
var runSubset = function (subset) {
return !process.env.MDB_TEST || process.env.MDB_TEST === subset;
};
var isUndefOrNonZero = function (val) {
return val === undefined || val !== '0';
};
// Test task.
var testSubtasks = [];
// Skip core tests if running a different subset of the test suite
if (runSubset('core') &&
// Skip core tests if this is a Savage build
process.env.TRAVIS_REPO_SLUG !== 'twbs-savage/bootstrap') {
testSubtasks = testSubtasks.concat(['dist-css', 'dist-js', 'test-scss', 'test-js', 'docs']);
}
// Skip HTML validation if running a different subset of the test suite
if (runSubset('validate-html') &&
isTravis &&
// Skip HTML5 validator when [skip validator] is in the commit message
isUndefOrNonZero(process.env.MDB_DO_VALIDATOR)) {
testSubtasks.push('validate-html');
}
// Only run Sauce Labs tests if there's a Sauce access key
if (typeof process.env.SAUCE_ACCESS_KEY !== 'undefined' &&
// Skip Sauce if running a different subset of the test suite
runSubset('sauce-js-unit') &&
// Skip Sauce on Travis when [skip sauce] is in the commit message
isUndefOrNonZero(process.env.MDB_DO_SAUCE)) {
testSubtasks.push('babel:core');
testSubtasks.push('connect');
testSubtasks.push('saucelabs-qunit');
}
grunt.registerTask('test', testSubtasks);
grunt.registerTask('test-js', ['eslint', 'jscs:core', 'jscs:test', 'jscs:grunt', 'qunit']);
// JS distribution task.
grunt.registerTask('dist-js', [
'clean:dist-js',
'eslint',
'jscs:grunt',
'jscs:core',
'jscs:test',
'exec:rollup-iife',
'exec:rollup-umd',
'exec:rollup-es2015',
'stamp',
'uglify:dist',
'copy:dist-to-docs'
]);
grunt.registerTask('docs-js', [
'clean:docs-dist-js',
'copy:dist-to-docs', // ensure dist is present after cleaning
'eslint',
'jscs:docs',
'exec:rollup-docs-iife',
'uglify:docs',
'uglify:docs-vendor'
]);
grunt.registerTask('test-scss', ['scsslint:core']);
// CSS distribution task.
grunt.registerTask('sass-compile', ['sass:core', 'sass:docs']);
grunt.registerTask('dist-css', [
'scsslint:core',
'clean:dist-css',
'sass-compile',
'postcss:core',
'csscomb:dist',
'cssmin:core',
'copy:dist-to-docs'
]);
grunt.registerTask('docs-css', [
'scsslint:docs',
'clean:docs-dist-css',
'copy:dist-to-docs', // ensure dist is present after cleaning
'sass:docs',
'postcss:docs',
'postcss:examples',
'csscomb:docs',
'csscomb:examples',
'cssmin:docs'
]);
// Full distribution task.
grunt.registerTask('dist', ['clean:dist', 'dist-css', 'dist-js', 'docs']);
// Default task.
grunt.registerTask('default', ['clean:dist', 'test']);
//------
// Docs tasks
// Independent task to be run when we are ready to sync the bootstrap repo's docs locally.
// Should be automated with no need for intervention (other than pulling the right bootstrap release locally)
grunt.registerTask('docs-copy-bootstrap-docs', [
'copy:bs-docs-js-vendor',
'copy:bs-docs-scss',
'copy:bs-docs-getting-started',
'copy:bs-docs-components',
'copy:bs-docs-content',
'copy:bs-docs-plugins'
]);
grunt.registerTask('docs', ['docs-css', 'docs-js']);
//------
//------
// Release and publish
grunt.registerTask('prep-release', [
'dist',
'jekyll:github' // build site from scratch
//'compress' // compress zip
]);
grunt.registerTask('publish', [
'prep-release', // build all including dist, docs, site
'buildcontrol:dist', // push dist
'buildcontrol:pages' // push site
]);
//------
// 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 = 'grunt/npm-shrinkwrap.json';
fs.renameSync('npm-shrinkwrap.json', dest);
grunt.log.writeln('File ' + dest.cyan + ' updated.');
done();
});
});
//grunt.registerTask('debug', function () {
// console.log('');
//});
};

32
LICENSE.md Normal file
View File

@ -0,0 +1,32 @@
The MIT License (MIT)
Copyright (c) 2015-2016, Federico Zivolo
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
## Acknowledgements:
### Bootstrap
Some original Bootstrap tooling code and documentation http://getbootstrap.com
Copyright (c) 2011-2016 Twitter, Inc
### MDL
Some original MDL code http://www.getmdl.io/
Copyright 2015 Google Inc. All Rights Reserved.

58
README.md Normal file
View File

@ -0,0 +1,58 @@
# bootstrap-material-design
## **WARNING:** These docs relate to the next major release and integration with bootstrap V4.
[![build status](https://travis-ci.org/FezVrasta/bootstrap-material-design.svg?branch=master)](https://travis-ci.org/FezVrasta/bootstrap-material-design)
[![gratipay](https://img.shields.io/gratipay/FezVrasta.svg)](https://gratipay.com/FezVrasta)
[![Bower version](https://badge.fury.io/bo/bootstrap-material-design.svg)](https://github.com/FezVrasta/bootstrap-material-design)
Bootstrap Material Design is the best way to use [Material Design guidelines by Google](http://www.google.com/design/spec/material-design/introduction.html)
in your Bootstrap 4 based application. Since this is a fully customizable version of Bootstrap,
just include Bootstrap Material Design CSS instead of Bootstrap CSS, and include the JavaScript at
the end of your document (just before the `</body>` tag), and everything will be converted to Material Design.
## Documentation
NOTE: this is a temporary site location that will be published in at http://fezvrasta.github.io/bootstrap-material-design in the future.
- [Migration](http://rosskevin.github.io/bootstrap-material-design/migration/)
- [Getting Started](http://rosskevin.github.io/bootstrap-material-design/getting-started/introduction/)
- [Material Design components](http://rosskevin.github.io/bootstrap-material-design/material-design/list-group/)
- [Bootstrap default rendering reference documentation](http://rosskevin.github.io/bootstrap-material-design/components/buttons/)
## Support
If you like this project you may support it by donating via Gittip, starring this repository or reporting issues.
All issues filed should be reduced to a [CodePen](http://codepen.io/rosskevin/pen/eJMMVB) test case where possible.
[![gittip](docs/assets/img/gittip-button.jpg)](https://www.gratipay.com/FezVrasta/)
[![issues](docs/assets/img/issues-button.jpg)](https://github.com/FezVrasta/bootstrap-material-design/issues)
## Contributing
### During V4 major development
If you want to get involved, please do so by submitting pull requests. Before undertaking any major PR effort, please check the [milestone](https://github.com/FezVrasta/bootstrap-material-design/milestones/V4) for an existing issue. If there isn't one, please file a new issue and `cc: @rosskevin` so we can discuss and assign the work so effort is not duplicated. Thank you!
Please prefix any issue or pull request title with `V4`.
### Standard guidelines
Please read through our [contributing guidelines](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. All HTML and CSS should conform to the [Code Guide](http://codeguide.co/), maintained by [Mark Otto](https://github.com/mdo), one of Bootstrap's founders.
Editor preferences are available in the [editor config](https://github.com/FezVrasta/bootstrap-material-design/blob/master/.editorconfig) for easy use in common text editors. Read more and download plugins at <http://editorconfig.org>.
## Versioning
For transparency into our release cycle and in striving to maintain backward compatibility, this project is maintained under
[the Semantic Versioning guidelines](http://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/fezvrasta/bootstrap-material-design/releases) for changelogs
of each release version.
## License
[MIT License](LICENSE.md)

72
_config.yml Normal file
View File

@ -0,0 +1,72 @@
include:
- .nojekyll
sass:
sass_dir: sass
# Dependencies
markdown: kramdown
highlighter: rouge
kramdown:
auto_ids: true
# Permalinks
permalink: pretty
# Server
source: docs
destination: _gh_pages
host: 0.0.0.0
port: 9000
encoding: UTF-8
exclude: [assets/scss/]
gems:
- jekyll-redirect-from
- jekyll-seo-tag
- jekyll-sitemap
# Site vars
#url: "http://fezvrasta.github.io"
repo: https://github.com/fezvrasta/bootstrap-material-design
#baseurl: "/bootstrap-material-design"
url: "http://rosskevin.github.io"
# other variables generated in
#blog: http://blog.getbootstrap.com
#expo: http://expo.getbootstrap.com
#themes: http://themes.getbootstrap.com
#
cdn:
# # See https://www.srihash.org for info on how to generate the hashes
css: https://cdn.rawgit.com/fezvrasta/bootstrap-material-design/v4-dev/dist/css/bootstrap-material-design.css
# css_hash: "sha384-XXXXXXXX"
js: https://cdn.rawgit.com/fezvrasta/bootstrap-material-design/v4-dev/dist/js/bootstrap-material-design
# js_hash: "sha384-XXXXXXXX"
# fonts
font_roboto: http://fonts.googleapis.com/css?family=Roboto:300,400,500,700
font_icons: https://fonts.googleapis.com/icon?family=Material+Icons
# VERSION is substituted in variables.rb and these are made available as site.data.cdn.*
jquery: https://ajax.googleapis.com/ajax/libs/jquery/VERSION/jquery
bootstrap: https://cdn.rawgit.com/twbs/bootstrap/VERSION/dist/js/bootstrap
tether: https://cdn.rawgit.com/HubSpot/tether/vVERSION/dist/js/tether
#twitter:
# username: getbootstrap
#
#social:
# type: organization
# name: twbs
# links: ["https://www.facebook.com/getbootstrap/", "https://twitter.com/getbootstrap"]

42
bower.json Normal file
View File

@ -0,0 +1,42 @@
{
"name": "bootstrap-material-design",
"description": "Bootstrap Material Design for Bootstrap 4",
"keywords": [
"material",
"design",
"bootstrap",
"css",
"js",
"sass",
"mobile-first",
"responsive",
"front-end",
"framework",
"web"
],
"homepage": "http://fezvrasta.github.io/bootstrap-material-design",
"license": "MIT",
"moduleType": "globals",
"main": [
"scss/bootstrap-material-design.scss",
"dist/js/bootstrap-material-design.js"
],
"ignore": [
"/.*",
"_config.yml",
"CNAME",
"composer.json",
"CONTRIBUTING.md",
"docs",
"js/tests",
"test-infra"
],
"dependencies": {
"bootstrap": "git@github.com:rosskevin/bootstrap.git#v4-tmp-flex-master",
"tether": "^1.1"
},
"old-dependencies": {
"bootstrap": "v4-dev",
"tether": "^1.1"
}
}

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

319
docs/LICENSE Normal file
View File

@ -0,0 +1,319 @@
Creative Commons Legal Code
Attribution 3.0 Unported
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR
DAMAGES RESULTING FROM ITS USE.
License
THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE
COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY
COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS
AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE
TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY
BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS
CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND
CONDITIONS.
1. Definitions
a. "Adaptation" means a work based upon the Work, or upon the Work and
other pre-existing works, such as a translation, adaptation,
derivative work, arrangement of music or other alterations of a
literary or artistic work, or phonogram or performance and includes
cinematographic adaptations or any other form in which the Work may be
recast, transformed, or adapted including in any form recognizably
derived from the original, except that a work that constitutes a
Collection will not be considered an Adaptation for the purpose of
this License. For the avoidance of doubt, where the Work is a musical
work, performance or phonogram, the synchronization of the Work in
timed-relation with a moving image ("synching") will be considered an
Adaptation for the purpose of this License.
b. "Collection" means a collection of literary or artistic works, such as
encyclopedias and anthologies, or performances, phonograms or
broadcasts, or other works or subject matter other than works listed
in Section 1(f) below, which, by reason of the selection and
arrangement of their contents, constitute intellectual creations, in
which the Work is included in its entirety in unmodified form along
with one or more other contributions, each constituting separate and
independent works in themselves, which together are assembled into a
collective whole. A work that constitutes a Collection will not be
considered an Adaptation (as defined above) for the purposes of this
License.
c. "Distribute" means to make available to the public the original and
copies of the Work or Adaptation, as appropriate, through sale or
other transfer of ownership.
d. "Licensor" means the individual, individuals, entity or entities that
offer(s) the Work under the terms of this License.
e. "Original Author" means, in the case of a literary or artistic work,
the individual, individuals, entity or entities who created the Work
or if no individual or entity can be identified, the publisher; and in
addition (i) in the case of a performance the actors, singers,
musicians, dancers, and other persons who act, sing, deliver, declaim,
play in, interpret or otherwise perform literary or artistic works or
expressions of folklore; (ii) in the case of a phonogram the producer
being the person or legal entity who first fixes the sounds of a
performance or other sounds; and, (iii) in the case of broadcasts, the
organization that transmits the broadcast.
f. "Work" means the literary and/or artistic work offered under the terms
of this License including without limitation any production in the
literary, scientific and artistic domain, whatever may be the mode or
form of its expression including digital form, such as a book,
pamphlet and other writing; a lecture, address, sermon or other work
of the same nature; a dramatic or dramatico-musical work; a
choreographic work or entertainment in dumb show; a musical
composition with or without words; a cinematographic work to which are
assimilated works expressed by a process analogous to cinematography;
a work of drawing, painting, architecture, sculpture, engraving or
lithography; a photographic work to which are assimilated works
expressed by a process analogous to photography; a work of applied
art; an illustration, map, plan, sketch or three-dimensional work
relative to geography, topography, architecture or science; a
performance; a broadcast; a phonogram; a compilation of data to the
extent it is protected as a copyrightable work; or a work performed by
a variety or circus performer to the extent it is not otherwise
considered a literary or artistic work.
g. "You" means an individual or entity exercising rights under this
License who has not previously violated the terms of this License with
respect to the Work, or who has received express permission from the
Licensor to exercise rights under this License despite a previous
violation.
h. "Publicly Perform" means to perform public recitations of the Work and
to communicate to the public those public recitations, by any means or
process, including by wire or wireless means or public digital
performances; to make available to the public Works in such a way that
members of the public may access these Works from a place and at a
place individually chosen by them; to perform the Work to the public
by any means or process and the communication to the public of the
performances of the Work, including by public digital performance; to
broadcast and rebroadcast the Work by any means including signs,
sounds or images.
i. "Reproduce" means to make copies of the Work by any means including
without limitation by sound or visual recordings and the right of
fixation and reproducing fixations of the Work, including storage of a
protected performance or phonogram in digital form or other electronic
medium.
2. Fair Dealing Rights. Nothing in this License is intended to reduce,
limit, or restrict any uses free from copyright or rights arising from
limitations or exceptions that are provided for in connection with the
copyright protection under copyright law or other applicable laws.
3. License Grant. Subject to the terms and conditions of this License,
Licensor hereby grants You a worldwide, royalty-free, non-exclusive,
perpetual (for the duration of the applicable copyright) license to
exercise the rights in the Work as stated below:
a. to Reproduce the Work, to incorporate the Work into one or more
Collections, and to Reproduce the Work as incorporated in the
Collections;
b. to create and Reproduce Adaptations provided that any such Adaptation,
including any translation in any medium, takes reasonable steps to
clearly label, demarcate or otherwise identify that changes were made
to the original Work. For example, a translation could be marked "The
original work was translated from English to Spanish," or a
modification could indicate "The original work has been modified.";
c. to Distribute and Publicly Perform the Work including as incorporated
in Collections; and,
d. to Distribute and Publicly Perform Adaptations.
e. For the avoidance of doubt:
i. Non-waivable Compulsory License Schemes. In those jurisdictions in
which the right to collect royalties through any statutory or
compulsory licensing scheme cannot be waived, the Licensor
reserves the exclusive right to collect such royalties for any
exercise by You of the rights granted under this License;
ii. Waivable Compulsory License Schemes. In those jurisdictions in
which the right to collect royalties through any statutory or
compulsory licensing scheme can be waived, the Licensor waives the
exclusive right to collect such royalties for any exercise by You
of the rights granted under this License; and,
iii. Voluntary License Schemes. The Licensor waives the right to
collect royalties, whether individually or, in the event that the
Licensor is a member of a collecting society that administers
voluntary licensing schemes, via that society, from any exercise
by You of the rights granted under this License.
The above rights may be exercised in all media and formats whether now
known or hereafter devised. The above rights include the right to make
such modifications as are technically necessary to exercise the rights in
other media and formats. Subject to Section 8(f), all rights not expressly
granted by Licensor are hereby reserved.
4. Restrictions. The license granted in Section 3 above is expressly made
subject to and limited by the following restrictions:
a. You may Distribute or Publicly Perform the Work only under the terms
of this License. You must include a copy of, or the Uniform Resource
Identifier (URI) for, this License with every copy of the Work You
Distribute or Publicly Perform. You may not offer or impose any terms
on the Work that restrict the terms of this License or the ability of
the recipient of the Work to exercise the rights granted to that
recipient under the terms of the License. You may not sublicense the
Work. You must keep intact all notices that refer to this License and
to the disclaimer of warranties with every copy of the Work You
Distribute or Publicly Perform. When You Distribute or Publicly
Perform the Work, You may not impose any effective technological
measures on the Work that restrict the ability of a recipient of the
Work from You to exercise the rights granted to that recipient under
the terms of the License. This Section 4(a) applies to the Work as
incorporated in a Collection, but this does not require the Collection
apart from the Work itself to be made subject to the terms of this
License. If You create a Collection, upon notice from any Licensor You
must, to the extent practicable, remove from the Collection any credit
as required by Section 4(b), as requested. If You create an
Adaptation, upon notice from any Licensor You must, to the extent
practicable, remove from the Adaptation any credit as required by
Section 4(b), as requested.
b. If You Distribute, or Publicly Perform the Work or any Adaptations or
Collections, You must, unless a request has been made pursuant to
Section 4(a), keep intact all copyright notices for the Work and
provide, reasonable to the medium or means You are utilizing: (i) the
name of the Original Author (or pseudonym, if applicable) if supplied,
and/or if the Original Author and/or Licensor designate another party
or parties (e.g., a sponsor institute, publishing entity, journal) for
attribution ("Attribution Parties") in Licensor's copyright notice,
terms of service or by other reasonable means, the name of such party
or parties; (ii) the title of the Work if supplied; (iii) to the
extent reasonably practicable, the URI, if any, that Licensor
specifies to be associated with the Work, unless such URI does not
refer to the copyright notice or licensing information for the Work;
and (iv) , consistent with Section 3(b), in the case of an Adaptation,
a credit identifying the use of the Work in the Adaptation (e.g.,
"French translation of the Work by Original Author," or "Screenplay
based on original Work by Original Author"). The credit required by
this Section 4 (b) may be implemented in any reasonable manner;
provided, however, that in the case of a Adaptation or Collection, at
a minimum such credit will appear, if a credit for all contributing
authors of the Adaptation or Collection appears, then as part of these
credits and in a manner at least as prominent as the credits for the
other contributing authors. For the avoidance of doubt, You may only
use the credit required by this Section for the purpose of attribution
in the manner set out above and, by exercising Your rights under this
License, You may not implicitly or explicitly assert or imply any
connection with, sponsorship or endorsement by the Original Author,
Licensor and/or Attribution Parties, as appropriate, of You or Your
use of the Work, without the separate, express prior written
permission of the Original Author, Licensor and/or Attribution
Parties.
c. Except as otherwise agreed in writing by the Licensor or as may be
otherwise permitted by applicable law, if You Reproduce, Distribute or
Publicly Perform the Work either by itself or as part of any
Adaptations or Collections, You must not distort, mutilate, modify or
take other derogatory action in relation to the Work which would be
prejudicial to the Original Author's honor or reputation. Licensor
agrees that in those jurisdictions (e.g. Japan), in which any exercise
of the right granted in Section 3(b) of this License (the right to
make Adaptations) would be deemed to be a distortion, mutilation,
modification or other derogatory action prejudicial to the Original
Author's honor and reputation, the Licensor will waive or not assert,
as appropriate, this Section, to the fullest extent permitted by the
applicable national law, to enable You to reasonably exercise Your
right under Section 3(b) of this License (right to make Adaptations)
but not otherwise.
5. Representations, Warranties and Disclaimer
UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR
OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY
KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE,
INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY,
FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF
LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS,
WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION
OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE
LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR
ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES
ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
7. Termination
a. This License and the rights granted hereunder will terminate
automatically upon any breach by You of the terms of this License.
Individuals or entities who have received Adaptations or Collections
from You under this License, however, will not have their licenses
terminated provided such individuals or entities remain in full
compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will
survive any termination of this License.
b. Subject to the above terms and conditions, the license granted here is
perpetual (for the duration of the applicable copyright in the Work).
Notwithstanding the above, Licensor reserves the right to release the
Work under different license terms or to stop distributing the Work at
any time; provided, however that any such election will not serve to
withdraw this License (or any other license that has been, or is
required to be, granted under the terms of this License), and this
License will continue in full force and effect unless terminated as
stated above.
8. Miscellaneous
a. Each time You Distribute or Publicly Perform the Work or a Collection,
the Licensor offers to the recipient a license to the Work on the same
terms and conditions as the license granted to You under this License.
b. Each time You Distribute or Publicly Perform an Adaptation, Licensor
offers to the recipient a license to the original Work on the same
terms and conditions as the license granted to You under this License.
c. If any provision of this License is invalid or unenforceable under
applicable law, it shall not affect the validity or enforceability of
the remainder of the terms of this License, and without further action
by the parties to this agreement, such provision shall be reformed to
the minimum extent necessary to make such provision valid and
enforceable.
d. No term or provision of this License shall be deemed waived and no
breach consented to unless such waiver or consent shall be in writing
and signed by the party to be charged with such waiver or consent.
e. This License constitutes the entire agreement between the parties with
respect to the Work licensed here. There are no understandings,
agreements or representations with respect to the Work not specified
here. Licensor shall not be bound by any additional provisions that
may appear in any communication from You. This License may not be
modified without the mutual written agreement of the Licensor and You.
f. The rights granted under, and the subject matter referenced, in this
License were drafted utilizing the terminology of the Berne Convention
for the Protection of Literary and Artistic Works (as amended on
September 28, 1979), the Rome Convention of 1961, the WIPO Copyright
Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996
and the Universal Copyright Convention (as revised on July 24, 1971).
These rights and subject matter take effect in the relevant
jurisdiction in which the License terms are sought to be enforced
according to the corresponding provisions of the implementation of
those treaty provisions in the applicable national law. If the
standard suite of rights granted under applicable copyright law
includes additional rights not granted under this License, such
additional rights are deemed to be included in the License; this
License is not intended to restrict the license of any rights under
applicable law.
Creative Commons Notice
Creative Commons is not a party to this License, and makes no warranty
whatsoever in connection with the Work. Creative Commons will not be
liable to You or any party on any legal theory for any damages
whatsoever, including without limitation any general, special,
incidental or consequential damages arising in connection to this
license. Notwithstanding the foregoing two (2) sentences, if Creative
Commons has expressly identified itself as the Licensor hereunder, it
shall have all rights and obligations of Licensor.
Except for the limited purpose of indicating to the public that the
Work is licensed under the CCPL, Creative Commons does not authorize
the use by either party of the trademark "Creative Commons" or any
related trademark or logo of Creative Commons without the prior
written consent of Creative Commons. Any permitted use will be in
compliance with Creative Commons' then-current trademark usage
guidelines, as may be published on its website or otherwise made
available upon request from time to time. For the avoidance of doubt,
this trademark restriction does not form part of this License.
Creative Commons may be contacted at http://creativecommons.org/.

281
docs/_data/browser-bugs.yml Normal file
View File

@ -0,0 +1,281 @@
-
browser: >
Internet Explorer 11 & Microsoft Edge
summary: >
Hovered element still remains in `:hover` state after scrolling away.
upstream_bug: >
IE#926665
origin: >
Bootstrap#14211
-
browser: >
Internet Explorer 11 & Microsoft Edge
summary: >
When hovering over a `<select>` menu item, the cursor for the element underneath the menu is displayed.
upstream_bug: >
IE#963961
origin: >
Bootstrap#14528
-
browser: >
Internet Explorer 11 & Microsoft Edge
summary: >
CSS `border-radius` sometimes causes lines of bleed-through of the `background-color` of the parent element.
upstream_bug: >
IE#1463734
origin: >
Bootstrap#16671
-
browser: >
Firefox
summary: >
`.table-bordered` with an empty `<tbody>` is missing borders.
upstream_bug: >
Mozilla#1023761
origin: >
Bootstrap#13453
-
browser: >
Firefox
summary: >
`max-width: 100%;` doesn't work inside tables.
upstream_bug: >
Mozilla#975632
origin: >
Bootstrap#10690
-
browser: >
Firefox
summary: >
Button elements with `width: 100%` become cropped in long tables.
upstream_bug: >
Mozilla#1060131
origin: >
Bootstrap#14320
-
browser: >
Firefox
summary: >
If the disabled state of a form control is changed via JavaScript, the normal state doesn't return after refreshing the page.
upstream_bug: >
Mozilla#654072
origin: >
Bootstrap#793
-
browser: >
Chrome (OS X)
summary: >
Clicking above `<input type="number">` increment button flashes the decrement button.
upstream_bug: >
Chromium#419108
origin: >
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: >
Chrome
summary: >
CSS infinite linear animation with alpha transparency leaks memory.
upstream_bug: >
Chromium#429375
origin: >
Bootstrap#14409
-
browser: >
Chrome
summary: >
`:focus` `outline` style causes cursor to not be displayed when toggling a `readonly` `<input>` to read-write.
upstream_bug: >
Chromium#465274
origin: >
Bootstrap#16022
-
browser: >
Chrome
summary: >
`width: 1%` on nested table cell causes its table to hog horizontal space.
upstream_bug: >
Chromium#427994
origin: >
Bootstrap#16372
-
browser: >
Chrome
summary: >
`table-cell` borders not overlapping despite `margin-right: -1px`
upstream_bug: >
Chromium#534750
origin: >
Bootstrap#17438, Bootstrap#14237
-
browser: >
Chrome (Windows & Linux)
summary: >
Animation glitch when returning to inactive tab after animations occurred while tab was hidden.
upstream_bug: >
Chromium#449180
origin: >
Bootstrap#15298
-
browser: >
Safari
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
summary: >
Incorrect placement of `position: fixed` element when it's a child of a `position: relative; left: X%;` element.
upstream_bug: >
WebKit#147284, Safari#21993128
origin: >
Bootstrap#16814
-
browser: >
Safari (OS X)
summary: >
Scrollbar clipped in `select[multiple]` with padding.
upstream_bug: >
WebKit#128489, Safari#19208483
origin: >
Bootstrap#12536
-
browser: >
Safari (OS X)
summary: >
Weird button behavior with some `<input type="number">` elements.
upstream_bug: >
WebKit#137269, Safari#18834768
origin: >
Bootstrap#8350,
Normalize#283,
Chromium#337668
-
browser: >
Safari (OS X)
summary: >
Small font size when printing webpage with fixed-width `.container`.
upstream_bug: >
WebKit#138192, Safari#19435018
origin: >
Bootstrap#14868
-
browser: >
Safari (OS X)
summary: >
Focus ring of image map within a modal is displayed in the wrong location.
upstream_bug: >
WebKit#143527, Safari#21908735
origin: >
Bootstrap#16180
-
browser: >
Safari (iPad)
summary: >
`<select>` menu on iPad causes shifting of hit-testing areas
upstream_bug: >
WebKit#150079, Safari#23082521
origin: >
Bootstrap#14975
-
browser: >
Safari (iOS)
summary: >
`transform: translate3d(0,0,0);` rendering bug.
upstream_bug: >
WebKit#138162, Safari#18804973
origin: >
Bootstrap#14603
-
browser: >
Safari (iOS)
summary: >
Text input's cursor doesn't move while scrolling the page.
upstream_bug: >
WebKit#138201, Safari#18819624
origin: >
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: >
Safari (iOS)
summary: >
`display: block` causes text of temporal `<input>`s to become vertically misaligned
upstream_bug: >
WebKit#139848, Safari#19434878
origin: >
Bootstrap#11266, Bootstrap#13098
-
browser: >
Safari (iOS 9+)
summary: >
Sometimes excessive automatic zoom is applied after opening a modal, and the user isn't allowed to zoom out
upstream_bug: >
WebKit#150715
origin: >
WebKit#138201

7
docs/_data/core-team.yml Normal file
View File

@ -0,0 +1,7 @@
- name: Federico Zivolo
user: FezVrasta
gravatar:
- name: Kevin Ross
user: rosskevin
gravatar: 5d6a051e6dabb03bc775eb9265fad4bd

81
docs/_data/nav.yml Normal file
View File

@ -0,0 +1,81 @@
- title: Getting started
pages:
- title: Introduction
- title: Download
- title: Browsers & devices
- title: Customization
- title: Best practices
- title: Build tools
- title: Release process
- title: Material Design
pages:
- title: Test
- title: List groups
- title: Menus
- title: Navs
- title: Buttons
- title: Forms
- title: Labels
- title: Selections
- title: Collapse inline
- title: Drawers
- title: About
pages:
- title: History
- title: Team
- title: Credits
- title: License
# change nav-docs.html if you change this name to insert "Bootstrap Reference Documentation"
- title: Migration
#- title: Layout
# pages:
# - title: Overview
# - title: Grid
# - title: Media object
# - title: Responsive utilities
- title: Content
pages:
- title: Typography
- title: Code
- title: Images
- title: Tables
- title: Figures
- title: Components
pages:
- title: Buttons
- title: Button group
- title: Button dropdown
- title: Forms
- title: Input group
- title: Dropdowns
- title: Jumbotron
- title: Label
- title: Alerts
- title: Card
- title: Navs
- title: Navbar
- title: Breadcrumb
- title: Pagination
- title: Progress
- title: List group
- title: Modal
- title: Scrollspy
- title: Tooltips
- title: Popovers
- title: Collapse
- title: Carousel
- title: Utilities
# - title: Extend
# pages:
# - title: Approach
# - title: Icon fonts

19
docs/_data/showcase.yml Normal file
View File

@ -0,0 +1,19 @@
- name: Lyft
url: https://www.lyft.com
expo_url: http://expo.getbootstrap.com/2014/10/29/lyft/
img: lyft
- name: Vogue
url: http://www.vogue.com
expo_url: http://expo.getbootstrap.com/2014/09/30/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
url: http://www.newsweek.com/
expo_url: http://expo.getbootstrap.com/2014/02/12/newsweek/
img: newsweek

View File

@ -0,0 +1,9 @@
- name: Chinese
code: zh
description: Bootstrap 中文文档
url: http://v4.bootcss.com/
- name: Chinese
code: zh
description: Bootstrap 4 中文文档教程
url: http://boot4.com/

8
docs/_includes/ads.html Normal file
View File

@ -0,0 +1,8 @@
<!-- I don't know the proper id for the carbon ads
<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>
-->

View File

@ -0,0 +1,27 @@
{% if site.data.minified %}
<script src="{{ site.data.cdn.jquery }}.min.js"></script>
<script src="{{ site.data.cdn.tether }}.min.js"></script>
<script src="{{ site.data.cdn.bootstrap }}.min.js"></script>
<script src="{{ site.baseurl }}/dist/js/bootstrap-material-design.iife.min.js"></script>
{% else %}
<script src="{{ site.data.cdn.jquery }}.js"></script>
<script src="{{ site.data.cdn.tether }}.js"></script>
<script src="{{ site.data.cdn.bootstrap }}.js"></script>
<script src="{{ site.baseurl }}/dist/js/bootstrap-material-design.iife.js"></script>
{% endif %}
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
<script src="{{ site.baseurl }}/assets/js/ie10-viewport-bug-workaround.js"></script>
<script src="{{ site.baseurl }}/assets/js/ie-emulation-modes-warning.js"></script>
<script>
$(function() {
$('body').bootstrapMaterialDesign()
})
</script>
{% if page.js %}
<script src="{{ page.js }}"></script>
{% endif %}

View File

@ -0,0 +1,59 @@
<footer class="bd-footer text-muted" role="contentinfo">
<div class="container">
<ul class="bd-footer-links">
<li><a href="{{ site.repo }}">GitHub</a></li>
<li><a href="{{ site.baseurl }}/examples/">Examples</a></li>
<li><a href="{{ site.baseurl }}/about/history/">About</a></li>
</ul>
<p>
Designed and built
by Federico Zivolo <span class="text-muted">(<a href="https://github.com/FezVrasta" target="_blank">@FezVrasta</a>)</span>
and Kevin Ross <span class="text-muted">(<a href="https://github.com/rosskevin" target="_blank">@rosskevin</a>)</span>.
Maintained by our core team with the help of <a href="https://github.com/FezVrasta/bootstrap-material-design/graphs/contributors">our contributors</a>.
</p>
<p>Code licensed <a rel="license" href="https://github.com/FezVrasta/bootstrap-material-design/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>Material Design for Bootstrap v{{ site.data.version }} is a customization of <a href="http://getbootstrap.com" target="_other">Bootstrap</a> v{{ site.data.bootstrap_version }} documentation and source.</p>
</div>
</footer>
<script src="{{ site.baseurl }}/dist/js/docs-vendor.min.js"></script>
{% if site.data.minified %}
<script src="{{ site.data.cdn.jquery }}.min.js"></script>
<script src="{{ site.data.cdn.tether }}.min.js"></script>
<script src="{{ site.data.cdn.bootstrap }}.min.js"></script>
<script src="{{ site.baseurl }}/dist/js/docs.iife.min.js"></script>
{% else %}
<script src="{{ site.data.cdn.jquery }}.js"></script>
<script src="{{ site.data.cdn.tether }}.js"></script>
<script src="{{ site.data.cdn.bootstrap }}.js"></script>
<script src="{{ site.baseurl }}/dist/js/docs.iife.js"></script>
{% endif %}
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
<script src="{{ site.baseurl }}/assets/js/ie10-viewport-bug-workaround.js"></script>
<script src="{{ site.baseurl }}/assets/js/ie-emulation-modes-warning.js"></script>
{% if page.layout == "docs" %}
<!--already in docs-vendor.js -->
<!--<script src="{{ site.baseurl }}/assets/js/vendor/jekyll-search.min.js"></script>-->
<script>
SimpleJekyllSearch.init({
searchInput: document.getElementById('search-input'),
resultsContainer: document.getElementById('search-results'),
searchResultTemplate: '<a class="dropdown-item" href="{url}">{title}</a>',
noResultsText: '<div class="dropdown-item no-results">Sorry, there are no results for that search.</div>',
json: '{{ site.baseurl }}/search.json'
})
</script>
{% endif %}
<script>
Holder.addTheme('gray', {
background: '#777',
foreground: 'rgba(255,255,255,.75)',
font: 'Roboto',
fontweight: 'normal'
})
</script>

View File

@ -0,0 +1,12 @@
{% include meta.html %}
<!-- Material Design fonts -->
<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Roboto:300,400,500,700">
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
<!-- Material Design for Bootstrap generic -->
{% if site.data.minified %}
<link href="{{ site.baseurl }}/dist/css/bootstrap-material-design.min.css" rel="stylesheet">
{% else %}
<link href="{{ site.baseurl }}/dist/css/bootstrap-material-design.css" rel="stylesheet">
{% endif %}

View File

@ -0,0 +1,30 @@
{% include meta.html %}
<!-- Material Design fonts -->
<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Roboto:300,400,500,700">
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
<!-- Material Design for Bootstrap customization for Documentation (consider Documentation the application) -->
{% if site.data.minified %}
<link href="{{ site.baseurl }}/dist/css/docs.min.css" rel="stylesheet">
{% else %}
<link href="{{ site.baseurl }}/dist/css/docs.css" rel="stylesheet">
{% endif %}
<!-- Favicons -->
<link rel="apple-touch-icon" href="{{ site.baseurl }}/apple-touch-icon.png">
<link rel="icon" href="{{ site.baseurl }}/favicon.ico">
{% seo %}
<!--
<script>
(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),
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');
ga('create', 'UA-146052-10', 'getbootstrap.com');
ga('send', 'pageview');
</script>
-->

14
docs/_includes/meta.html Normal file
View File

@ -0,0 +1,14 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="Material Design for Bootstrap">
<meta name="keywords" content="Material Design for Bootstrap, Sass">
<meta name="author" content="Federico Zivolo, Kevin Ross, and Bootstrap Material Design contributors">
<title>
{% if page.layout == "home" %}
{{ page.title }}
{% else %}
{{ page.title }} &middot; Bootstrap Material Design
{% endif %}
</title>

View File

@ -0,0 +1,64 @@
<form class="bd-search hidden-sm-down">
<input type="text" class="form-control" id="search-input" placeholder="Search..." autocomplete="off">
<div class="dropdown-menu bd-search-results" id="search-results"></div>
</form>
<nav class="bd-links" id="docsNavbarContent">
{% for group in site.data.nav %}
{% assign link = group.pages | first %}
{% assign slug = group.title | downcase | replace: ' ', '-' || page.title | downcase | replace: ' ', '-' %}
{% assign active = nil %}
{% if page.url contains slug %}
{% assign active = 'active' %}
{% endif %}
<div class="bd-toc-item {{ active }}">
{% if slug == "examples" %}
<a class="bd-toc-link" href="{{ site.baseurl }}/{{ group.title | downcase | replace: ' ', '-' }}/">
{% else %}
<a class="bd-toc-link" href="{{ site.baseurl }}/{{ group.title | downcase | replace: ' ', '-' }}/{{ link.title | downcase | replace: ' ', '-' || page.title | downcase | replace: ' ', '-' }}">
{% endif %}
{{ group.title }}
</a>
<ul class="nav bd-sidenav">
{% for doc in group.pages %}
{% assign slug = doc.title | downcase | replace: ' ', '-' | replace:'-&-','-' %}
{% assign active = nil %}
{% if page.url contains slug %}
{% assign active = 'active bd-sidenav-active' %}
{% endif %}
<li class="{{ active }}">
<a href="{{ site.baseurl }}/{{ group.title | downcase | replace: ' ', '-' }}/{{ doc.title | downcase | replace: ' ', '-' | replace:'-&-','-' }}">
{{ doc.title }}
</a>
{% comment %}
{% unless doc.sections == nil %}
<ul class="nav">
{% for section in doc.sections %}
<li>
<a href="#{{ section.title | downcase | replace: ' ', '-' }}">
{{ section.title }}
</a>
</li>
{% endfor %}
</ul>
{% endunless %}
{% endcomment %}
</li>
{% endfor %}
</ul>
</div>
{% if group.title == "Migration" %}
<div class="bd-toc-item mdb-toc-item-reference">
<div>Bootstrap Reference Documentation</div>
<hr>
</div>
{% endif %}
{% endfor %}
</nav>

View File

@ -0,0 +1,61 @@
<header class="navbar navbar-light navbar-static-top bd-navbar" role="banner">
{% comment %}
<nav class="nav navbar-nav pull-xs-right">
<div class="nav-item dropdown">
<a class="nav-item nav-link dropdown-toggle" href="#" id="bd-versions" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
v{{ site.data.version }}
</a>
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="bd-versions">
<a class="dropdown-item" href="#">v4.0.0-alpha</a>
<a class="dropdown-item" href="#">v3.3.5</a>
<a class="dropdown-item" href="#">v3.3.4</a>
<a class="dropdown-item" href="#">v3.3.2</a>
<a class="dropdown-item" href="#">v3.3.1</a>
<a class="dropdown-item" href="#">v3.3.0</a>
<a class="dropdown-item" href="#">v3.2.0</a>
<a class="dropdown-item" href="#">v3.1.1</a>
<a class="dropdown-item" href="#">v3.1.0</a>
<a class="dropdown-item" href="#">v3.0.3</a>
<a class="dropdown-item" href="#">v3.0.2</a>
<a class="dropdown-item" href="#">v3.0.1</a>
<a class="dropdown-item" href="#">v3.0.0</a>
</div>
</div>
</nav>
{% endcomment %}
<nav>
<div class="clearfix">
<button class="navbar-toggler pull-xs-right hidden-sm-up" type="button" data-toggle="collapse" data-target="#bd-main-nav" aria-controls="bd-main-nav" aria-expanded="false" aria-label="Toggle navigation">
&#9776;
</button>
<a class="navbar-brand hidden-sm-up" href="{{ site.baseurl }}/">
Material Design for Bootstrap
</a>
</div>
<div class="collapse navbar-toggleable-xs" id="bd-main-nav">
<ul class="nav navbar-nav">
<li class="nav-item active">
<a class="nav-item nav-link {% if page.layout == "home" %}active{% endif %}" href="{{ site.baseurl }}/" onclick="ga('send', 'event', 'Navbar', 'Community links', 'Material Design for Bootstrap');">Material Design for Bootstrap</a>
</li>
<li class="nav-item">
<a class="nav-item nav-link {% if page.layout == "docs" %}active{% endif %}" href="{{ site.baseurl }}/getting-started/introduction/" onclick="ga('send', 'event', 'Navbar', 'Community links', 'Docs');">Documentation</a>
</li>
<li class="nav-item">
<a class="nav-item nav-link {% if page.title == "Examples" %}active{% endif %}" href="{{ site.baseurl }}/examples/" onclick="ga('send', 'event', 'Navbar', 'Community links', 'Examples');">Examples</a>
</li>
<!--
<li class="nav-item">
<a class="nav-item nav-link" href="{{ site.themes }}" onclick="ga('send', 'event', 'Navbar', 'Community links', 'Themes');">Themes</a>
</li>
<li class="nav-item">
<a class="nav-item nav-link" href="{{ site.expo }}" onclick="ga('send', 'event', 'Navbar', 'Community links', 'Expo');">Expo</a>
</li>
<li class="nav-item">
<a class="nav-item nav-link" href="{{ site.blog }}" onclick="ga('send', 'event', 'Navbar', 'Community links', 'Blog');">Blog</a>
</li>
-->
</ul>
</div>
</nav>
</header>

View File

@ -0,0 +1,46 @@
{% if page.group == "getting-started" %}
<h1>Getting started</h1>
<p class="lead">
An overview of Material Design for Bootstrap, including how to download and use it, some basic templates and examples, and more.
</p>
{% elsif page.group == "layout" %}
<h1>Layout</h1>
<p class="lead">
Options for structuring your pages with Material Design for Bootstrap, including global styles and more.
</p>
{% elsif page.group == "content" %}
<h1>Content</h1>
<p class="lead">
Styles for displaying content with some of the most commonly used HTML elements, including typography, tables, and more.
</p>
{% elsif page.group == "material-design" %}
<h1>Material Design</h1>
<p class="lead">
A quick reference display for Material Design for Bootstrap components with additional options.
</p>
{% elsif page.group == "components" %}
<h1>Components</h1>
<p class="lead">
Over a dozen reusable components built to provide buttons, dropdowns, input groups, navigation, alerts, and much more.
</p>
{% elsif page.group == "javascript" %}
<h1>JavaScript plugins</h1>
<p class="lead">
Bring Material Design for Bootstrap's components to life with jQuery plugins. Easily include them all, or one by one.
</p>
{% elsif page.group == "about" %}
<h1>About</h1>
<p class="lead">
Learn about the project's history and meet the maintaining team.
</p>
{% elsif page.group == "migration" %}
<h1>Migration</h1>
<p class="lead">
Guidance on how to upgrade from Material Design for Bootstrap v3.x to v4.x with emphasis on major changes, what's new, and what's been removed.
</p>
{% elsif page.group == "browser-bugs" %}
<h1>Wall of browser bugs</h1>
<p class="lead">
A list of the browser bugs that Material Design for Bootstrap is currently grappling with.
</p>
{% endif %}

View File

@ -0,0 +1,21 @@
<!DOCTYPE html>
<html lang="en">
<head>
{% include header.html %}
</head>
<body class="bd-docs" data-spy="scroll" data-target=".bd-sidenav-active">
<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 nav-home.html %}
<div id="content">
{{ content }}
</div>
{% include footer.html %}
</body>
</html>

36
docs/_layouts/docs.html Normal file
View File

@ -0,0 +1,36 @@
<!DOCTYPE html>
<html lang="en">
<head>
{% include header.html %}
</head>
<body class="bd-docs" data-spy="scroll" data-target=".bd-sidenav-active">
<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 nav-home.html %}
<div class="bd-pageheader">
<div class="container">
{% include page-headers.html %}
{% include ads.html %}
</div>
</div>
<div class="container">
<div class="row">
<div class="col-md-3 col-md-push-9 bd-sidebar">
{% include nav-docs.html %}
</div>
<div class="col-md-9 col-md-pull-3 bd-content">
<h1 class="bd-title" id="content">{{ page.title }}</h1>
{{ content }}
</div>
</div>
</div>
{% include footer.html %}
</body>
</html>

View File

@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
{% include header-example.html %}
</head>
<body>
{{ content }}
{% include footer-example.html %}
</body>
</html>

19
docs/_layouts/home.html Normal file
View File

@ -0,0 +1,19 @@
<!DOCTYPE html>
<html lang="en">
<head>
{% include header.html %}
</head>
<body class="bd-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 nav-home.html %}
{{ content }}
{% include footer.html %}
</body>
</html>

17
docs/_layouts/simple.html Normal file
View File

@ -0,0 +1,17 @@
---
layout: default
---
<div class="bd-pageheader text-xs-center text-sm-left">
<div class="container">
<h1>{{ page.title }}</h1>
<p class="lead">
Quickly get a project started with any of our examples ranging from using parts of the framework to custom components and layouts.
</p>
{% include ads.html %}
</div>
</div>
<div class="container bd-content">
{{ content }}
</div>

25
docs/_plugins/bugify.rb Normal file
View File

@ -0,0 +1,25 @@
module Jekyll
module BugFilter
def bugify(input)
upstream_map = {
"Bootstrap" => "https://github.com/twbs/bootstrap/issues/",
"IE" => ["https://connect.microsoft.com/IE/feedback/details/", "IE bug"],
"Mozilla" => ["https://bugzilla.mozilla.org/show_bug.cgi?id=", "Mozilla bug"],
"Chromium" => ["https://code.google.com/p/chromium/issues/detail?id=", "Chromium issue"],
"WebKit" => ["https://bugs.webkit.org/show_bug.cgi?id=", "WebKit bug"],
"Safari" => ["https://openradar.appspot.com/", "Apple Safari Radar"],
"Normalize" => ["https://github.com/necolas/normalize.css/issues/", "Normalize"]
}
upstream_map.each do |key, data|
url = data.is_a?(Array) ? data[0] : data
label = data.is_a?(Array) ? "#{data[1]} " : ""
input = input.gsub(/#{key}#(\d+)/, "<a href=\"#{url}\\1\">#{label}#\\1</a>")
end
return input
end
end
end
Liquid::Template.register_filter(Jekyll::BugFilter)

28
docs/_plugins/callout.rb Normal file
View File

@ -0,0 +1,28 @@
# Source: https://stackoverflow.com/questions/19169849/how-to-get-markdown-processed-content-in-jekyll-tag-plugin
module Jekyll
module Tags
class CalloutTag < Liquid::Block
def initialize(tag_name, type, tokens)
super
type.strip!
if %w(info danger warning).include?(type)
@type = type
else
puts "#{type} callout not supported. Defaulting to info"
@type = "info"
end
end
def render(context)
site = context.registers[:site]
converter = site.find_converter_instance(::Jekyll::Converters::Markdown)
output = converter.convert(super(context))
"<div class=\"bd-callout bd-callout-#{@type}\">#{output}</div>"
end
end
end
end
Liquid::Template.register_tag('callout', Jekyll::Tags::CalloutTag)

View File

@ -0,0 +1,85 @@
module Jekyll
module Tags
class ExampleBlock < Liquid::Block
include Liquid::StandardFilters
# The regular expression syntax checker. Start with the language specifier.
# Follow that by zero or more space separated options that take one of three
# forms: name, name=value, or name="<quoted list>"
#
# <quoted list> is a space-separated list of numbers
SYNTAX = /^([a-zA-Z0-9.+#-]+)((\s+\w+(=((\w|[0-9_-])+|"([0-9]+\s)*[0-9]+"))?)*)$/
def initialize(tag_name, markup, tokens)
super
if markup.strip =~ SYNTAX
@lang = $1.downcase
@options = {}
if defined?($2) && $2 != ''
# Split along 3 possible forms -- key="<quoted list>", key=value, or key
$2.scan(/(?:\w+(?:=(?:(?:\w|[0-9_-])+|"[^"]*")?)?)/) do |opt|
key, value = opt.split('=')
# If a quoted list, convert to array
if value && value.include?("\"")
value.gsub!(/"/, "")
value = value.split
end
@options[key.to_sym] = value || true
end
end
@options[:linenos] = "inline" if @options.key?(:linenos) and @options[:linenos] == true
else
raise SyntaxError.new <<-eos
Syntax Error in tag 'highlight' while parsing the following markup:
#{markup}
Valid syntax: highlight <lang> [linenos]
eos
end
end
def render(context)
prefix = context["highlighter_prefix"] || ""
suffix = context["highlighter_suffix"] || ""
code = super.to_s.strip
output = case context.registers[:site].highlighter
when 'rouge'
render_rouge(code)
end
rendered_output = example(code) + add_code_tag(output)
prefix + rendered_output + suffix
end
def example(output)
"<div class=\"bd-example\" data-example-id=\"#{@options[:id]}\">\n#{output}\n</div>"
end
def remove_holderjs(code)
code = code.gsub(/data-src="holder.js.+?"/, 'src="..."')
end
def render_rouge(code)
require 'rouge'
formatter = Rouge::Formatters::HTML.new(line_numbers: @options[:linenos], wrap: false)
lexer = Rouge::Lexer.find_fancy(@lang, code) || Rouge::Lexers::PlainText
code = remove_holderjs(code)
code = formatter.format(lexer.lex(code))
"<div class=\"highlight\"><pre>#{code}</pre></div>"
end
def add_code_tag(code)
# Add nested <code> tags to code blocks
code = code.sub(/<pre>\n*/,'<pre><code class="language-' + @lang.to_s.gsub("+", "-") + '" data-lang="' + @lang.to_s + '">')
code = code.sub(/\n*<\/pre>/,"</code></pre>")
code.strip
end
end
end
end
Liquid::Template.register_tag('example', Jekyll::Tags::ExampleBlock)

View File

@ -0,0 +1,20 @@
module Jekyll
class MarkdownBlock < Liquid::Block
alias_method :render_block, :render
def initialize(tag_name, markup, tokens)
super
end
# Uses the default Jekyll markdown parser to
# parse the contents of this block
#
def render(context)
site = context.registers[:site]
converter = site.find_converter_instance(::Jekyll::Converters::Markdown)
converter.convert(render_block(context))
end
end
end
Liquid::Template.register_tag('markdown', Jekyll::MarkdownBlock)

View File

@ -0,0 +1,94 @@
require 'json'
require 'yaml'
module Variables
class Generator < Jekyll::Generator
safe true
def generate(site)
# indicate to use min or development assets
baseurl = site.config['baseurl']
minified = true
if baseurl.eql? ''
minified = false
end
# minified = true # debug minified
site.data['minified'] = minified
metadata_files = {
'package' => '../package.json',
'npm_bootstrap' => '../node_modules/bootstrap/package.json',
'npm_jquery' => '../node_modules/jquery/package.json',
'npm_tether' => '../node_modules/tether/package.json'
}
metadata_files.each do |metadata, path|
contents = JSON.parse(File.read(File.join(site.source, path)))
site.data[metadata] = contents
end
# validate and provide some quick access to common variables
name = site.data['package']['name']
assert_not_nil :name, name
version = site.data['package']['version']
assert_not_nil :version, version
bootstrap_version = site.data['npm_bootstrap']['version']
assert_not_nil :bootstrap_version, bootstrap_version
if (bootstrap_version.include?('rosskevin') || bootstrap_version.include?('alpha'))
# // not this
# https://cdn.rawgit.com/twbs/bootstrap/4.0.0-alpha.2/dist/js/bootstrap.js
# // this
# https://cdn.rawgit.com/twbs/bootstrap/v4-dev/dist/js/bootstrap.js
bootstrap_version = 'v4-dev' # hack since we are using a rosskevin flex branch
end
tether_version = site.data['npm_tether']['version']
assert_not_nil :tether_version, tether_version
jquery_version = site.data['npm_jquery']['version']
assert_not_nil :jquery_version, jquery_version
site.data['name'] = name
site.data['version'] = version
site.data['bootstrap_version'] = bootstrap_version
site.data['tether_version'] = tether_version
site.data['jquery_version'] = jquery_version
# fabricate the archive and release links based on the site.repo and version
repo = site.config['repo']
site.data['download'] = {
'source' => "#{repo}/archive/v#{version}.zip",
'dist' => "#{repo}/releases/download/v#{version}/#{name}-#{version}-dist.zip"
}
site.data['cdn'] = {
'jquery' => site.config['cdn']['jquery'].gsub(/VERSION/, jquery_version),
'bootstrap' => site.config['cdn']['bootstrap'].gsub(/VERSION/, bootstrap_version),
'tether' => site.config['cdn']['tether'].gsub(/VERSION/, tether_version)
}
#
# puts "\n---------------------"
# puts "site.config: #{site.config.to_yaml}"
# puts "baseurl: #{baseurl}"
# puts "minified: #{site.data['minified']}"
# puts "site: #{site.to_yaml}"
# puts site.data[:package]['version']
# puts site.data.to_yaml
# puts repo
# puts version
end
def assert_not_nil(name, value)
raise "Expected #{name} to be not nil." if value.nil?
end
end
end

17
docs/about/credits.md Normal file
View File

@ -0,0 +1,17 @@
---
layout: docs
title: Credits
group: about
---
<blockquote class="blockquote">
<p class="m-b-0">If I have seen further, it is by standing on the shoulders of giants.</p>
<footer class="blockquote-footer">Sir Isaac Newton</footer>
</blockquote>
This project has drawn significant inspiration or outright code (attributed in the LICENSE.md) from other open source projects. We take this opportunity to thank these other communities, companies and individual developers for their hard work, because we would not be here without them:
- [Bootstrap](http://getbootstrap.com) - thank you for not only for the Bootstrap code itself, but the project setup and documentation sources as well.
- [Google Material Design Specification](https://www.google.com/design/spec/material-design/introduction.html) - thank you for the effort to put forth a deeply researched, functional, and beautiful design standard.
- [Material Design Lite](http://www.getmdl.io/) - thank you for your effort, we have drawn inspiration for certain components and examples directly from your codebase.

9
docs/about/history.md Normal file
View File

@ -0,0 +1,9 @@
---
layout: docs
title: History
group: about
redirect_from: "/about/"
---
Originally created by Federico Zivolo [@FezVrasta](https://github.com/FezVrasta) in late 2014, Material Design for Bootstrap has become
the most popular Material Design implementation for Bootstrap in the world.

32
docs/about/license.md Normal file
View File

@ -0,0 +1,32 @@
---
layout: docs
title: License FAQs
group: about
---
Material Design for Bootstrap is released under the MIT license and is copyright {{ site.time | date: "%Y" }} Federico Zivolo.
Boiled down to smaller chunks, it can be described with the following conditions.
#### It requires you to:
* Keep the license and copyright notice included in Material Design for Bootstrap's files when you use them in your works
#### It permits you to:
- Freely download and use Material Design for Bootstrap, in whole or in part, for personal, private, company internal, or commercial purposes
- Use Material Design for Bootstrap in packages or distributions that you create
- Modify the source code
- Grant a sublicense to modify and distribute Material Design for Bootstrap to third parties not included in the license
#### It forbids you to:
- Hold the authors and license owners liable for damages as Material Design for Bootstrap is provided without warranty
- Hold the creators or copyright holders of Material Design for Bootstrap liable
- Redistribute any piece of Material Design for Bootstrap without proper attribution
#### It does not require you to:
- Include the source of Material Design for Bootstrap itself, or of any modifications you may have made to it, in any redistribution you may assemble that includes it
- Submit changes that you make to Material Design for Bootstrap back to the Material Design for Bootstrap project (though such feedback is encouraged)
The full Material Design for Bootstrap license is located [in the project repository]({{ site.repo }}/blob/master/LICENSE.md) for more information.

22
docs/about/team.md Normal file
View File

@ -0,0 +1,22 @@
---
layout: docs
title: Team
group: about
---
Material Design for Bootstrap is maintained by a small group of invaluable core contributors,
with the support and involvement of our community.
<div class="list-group bd-team">
{% for member in site.data.core-team %}
<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 }}">
<img src="https://secure.gravatar.com/avatar/{{ member.gravatar }}" alt="@{{ member.user }}" width="32" height="32">
<strong>{{ member.name }}</strong> <small>@{{ member.user }}</small>
</a>
</div>
{% endfor %}
</div>
Get involved with Bootstrap development by [opening an issue](https://github.com/FezVrasta/bootstrap-material-design/issues/new) or submitting a pull request. Read our [contributing guidelines](https://github.com/FezVrasta/bootstrap-material-design/blob/master/CONTRIBUTING.md) for information on how we develop.

BIN
docs/apple-touch-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

BIN
docs/assets/img/devices.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
docs/assets/img/sass.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -0,0 +1,51 @@
// NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT
// IT'S JUST JUNK FOR OUR DOCS!
// ++++++++++++++++++++++++++++++++++++++++++
/*!
* Copyright 2014-2015 Twitter, Inc.
*
* Licensed under the Creative Commons Attribution 3.0 Unported License. For
* details, see https://creativecommons.org/licenses/by/3.0/.
*/
// Intended to prevent false-positive bug reports about Bootstrap not working properly in old versions of IE due to folks testing using IE's unreliable emulation modes.
(function () {
'use strict';
function emulatedIEMajorVersion() {
var groups = /MSIE ([0-9.]+)/.exec(window.navigator.userAgent)
if (groups === null) {
return null
}
var ieVersionNum = parseInt(groups[1], 10)
var ieMajorVersion = Math.floor(ieVersionNum)
return ieMajorVersion
}
function actualNonEmulatedIEMajorVersion() {
// Detects the actual version of IE in use, even if it's in an older-IE emulation mode.
// IE JavaScript conditional compilation docs: https://msdn.microsoft.com/library/121hztk3%28v=vs.94%29.aspx
// @cc_on docs: https://msdn.microsoft.com/library/8ka90k2e%28v=vs.94%29.aspx
var jscriptVersion = new Function('/*@cc_on return @_jscript_version; @*/')()
if (jscriptVersion === undefined) {
return 11 // IE11+ not in emulation mode
}
if (jscriptVersion < 9) {
return 8 // IE8 (or lower; haven't tested on IE<8)
}
return jscriptVersion // IE9 or IE10 in any mode, or IE11 in non-IE11 mode
}
var ua = window.navigator.userAgent
if (ua.indexOf('Opera') > -1 || ua.indexOf('Presto') > -1) {
return // Opera, which might pretend to be IE
}
var emulated = emulatedIEMajorVersion()
if (emulated === null) {
return // Not IE
}
var nonEmulated = actualNonEmulatedIEMajorVersion()
if (emulated !== nonEmulated) {
window.alert('WARNING: You appear to be using IE' + nonEmulated + ' in IE' + emulated + ' emulation mode.\nIE emulation modes can behave significantly differently from ACTUAL older versions of IE.\nPLEASE DON\'T FILE BOOTSTRAP BUGS based on testing in IE emulation modes!')
}
})();

View File

@ -0,0 +1,23 @@
/*!
* IE10 viewport hack for Surface/desktop Windows 8 bug
* Copyright 2014-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
// See the Getting Started docs for more information:
// http://getbootstrap.com/getting-started/#support-ie10-width
(function () {
'use strict';
if (navigator.userAgent.match(/IEMobile\/10\.0/)) {
var msViewportStyle = document.createElement('style')
msViewportStyle.appendChild(
document.createTextNode(
'@-ms-viewport{width:auto!important}'
)
)
document.head.appendChild(msViewportStyle)
}
})();

132
docs/assets/js/src/index.js Normal file
View File

@ -0,0 +1,132 @@
import Style from './style'
import Clipboard from 'clipboard'
import anchors from 'anchor'
// import all the mdb code
import '../../../../js/src/index' // eslint-disable-line no-unused-vars
class Application {
constructor() {
}
initializeDemos() {
// Tooltip and popover demos
$('.tooltip-demo').tooltip({
selector: '[data-toggle="tooltip"]',
container: 'body'
})
$('[data-toggle="popover"]').popover()
// Demos within modals
$('.tooltip-test').tooltip()
$('.popover-test').popover()
// Indeterminate checkbox example
$('.bd-example-indeterminate [type="checkbox"]').prop('indeterminate', true)
// Disable empty links in docs examples
$('.bd-example [href="#"]').click((e) => {
e.preventDefault()
})
// Insert copy to clipboard button before .highlight
$('.highlight').each(function () {
let btnHtml = '<div class="bd-clipboard"><span class="btn-clipboard" title="Copy to clipboard">Copy</span></div>'
$(this).before(btnHtml)
$('.btn-clipboard').tooltip()
})
let clipboard = new Clipboard('.btn-clipboard', {
target: (trigger) => {
return trigger.parentNode.nextElementSibling
}
})
clipboard.on('success', (e) => {
$(e.trigger)
.attr('title', 'Copied!')
.tooltip('_fixTitle')
.tooltip('show')
.attr('title', 'Copy to clipboard')
.tooltip('_fixTitle')
e.clearSelection()
})
clipboard.on('error', (e) => {
let fallbackMsg = /Mac/i.test(navigator.userAgent) ? 'Press \u2318 to copy' : 'Press Ctrl-C to copy'
$(e.trigger)
.attr('title', fallbackMsg)
.tooltip('_fixTitle')
.tooltip('show')
.attr('title', 'Copy to clipboard')
.tooltip('_fixTitle')
})
anchors.options.placement = 'left' // eslint-disable-line no-console
anchors.add('.bd-content > h1, .bd-content > h2, .bd-content > h3, .bd-content > h4, .bd-content > h5')
}
// Add dynamic display of font properties to the existing documentation
displayTypographyProperties() {
// headings
Style.displayFontSizeWeightColor($('.bd-example-type td > *:not(.type-info)'), ($element, $text) => {
let $target = $element.closest('tr').find('td.type-info')
$target.text('')
$target.append($text)
}, false, true)
// display headings
Style.displayFontSizeWeightColor($('h2#display-headings').next().next().find('h1'), ($element, $text) => {
let $tr = $element.closest('tr')
let $td = $(`<td class="type-info">`)
$tr.append($td)
$td.append($text)
}, false, true)
// lead headings
Style.displayFontSizeWeightColor($('h2#lead').next().next().find('p'), ($element, $text) => {
$element.append($text)
}, false, true)
// inline text elements
Style.displayFontSizeWeightColor($(`p:contains(Styling for common inline HTML5 elements.)`).next().find('p > *'), ($element, $text) => {
let $p = $element.parent()
let $parent = $p.parent()
$p.detach()
// create a row with two columns to display the text properties
let $row = $(`<div class='row'></div>`)
$parent.append($row)
let $col = $(`<div class='col-sm-8'></div>`)
$col.append($p)
$row.append($col)
$col = $(`<div class='col-sm-4'></div>`)
$col.append($text)
$row.append($col)
}, false, true)
}
}
$(() => {
let app = new Application()
app.displayTypographyProperties()
$('.btn-clipboard').mdbRipples()
// FIXME: file inputs seems to be in flux, delete the offending one for now.
$('#exampleInputFile').closest('.form-group').detach()
$('body').bootstrapMaterialDesign()
app.initializeDemos()
})

View File

@ -0,0 +1,70 @@
/**
* Dynamically display style properties i.e. font
*/
const Style = (($) => {
/**
* ------------------------------------------------------------------------
* Constants
* ------------------------------------------------------------------------
*/
// const Default = {
// template: ``
// }
/**
* ------------------------------------------------------------------------
* Class Definition
* ------------------------------------------------------------------------
*/
class Style {
constructor() {
}
static rgbToHex(rgba) {
rgba = rgba.match(/\d+/g)
let hex = `#${String(`0${Number(rgba[0]).toString(16)}`).slice(-2)}${String(`0${Number(rgba[1]).toString(16)}`).slice(-2)}${String(`0${Number(rgba[2]).toString(16)}`).slice(-2)}`
return hex
}
// Function to display font properties dynamically discovered
static displayFontSizeWeightColor($elements, writeFn, bg = false, wrapWithCode = false) {
return $elements.each((index, element) => {
let $element = $(element)
let rgbaBgColor = $element.css('background-color')
// let hexBgColor = Style.rgbToHex(rgbaBgColor)
let rgbaColor = $element.css('color')
// let hexColor = Style.rgbToHex(rgbaColor)
let text = ''
if (wrapWithCode) {
text += `<code style='font-size: 10px; font-weight: 500; letter-spacing: normal'>`
}
// text += `${$element.css('font-size')} ${$element.css('font-weight')} ${hexColor}`
text += `<span>${$element.css('font-size')} ${$element.css('font-weight')} <span style='white-space: nowrap'>${rgbaColor}</span></span>`
if (bg) {
// text += ` bg: ${hexBgColor} `
text += ` bg: ${rgbaBgColor} `
}
if (wrapWithCode) {
text += `</code>`
}
writeFn($element, $(text))
})
}
}
return Style
})(jQuery)
export default Style

6
docs/assets/js/vendor/anchor.min.js vendored Normal file
View File

@ -0,0 +1,6 @@
/*!
* AnchorJS - v2.0.0 - 2015-10-31
* https://github.com/bryanbraun/anchorjs
* Copyright (c) 2015 Bryan Braun; Licensed MIT
*/
function AnchorJS(A){"use strict";function t(A){o.options.icon=o.options.hasOwnProperty("icon")?A.icon:"",o.options.visible=o.options.hasOwnProperty("visible")?A.visible:"hover",o.options.placement=o.options.hasOwnProperty("placement")?A.placement:"right",o.options.class=o.options.hasOwnProperty("class")?A.class:"",o.options.truncate=o.options.hasOwnProperty("truncate")?Math.floor(A.truncate):64}function e(){if(null===document.head.querySelector("style.anchorjs")){var A,t=document.createElement("style"),e=" .anchorjs-link { opacity: 0; text-decoration: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }",o=" *:hover > .anchorjs-link, .anchorjs-link:focus { opacity: 1; }",n=' @font-face { font-family: "anchorjs-icons"; font-style: normal; font-weight: normal; src: url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBTUAAAC8AAAAYGNtYXAWi9QdAAABHAAAAFRnYXNwAAAAEAAAAXAAAAAIZ2x5Zgq29TcAAAF4AAABNGhlYWQEZM3pAAACrAAAADZoaGVhBhUDxgAAAuQAAAAkaG10eASAADEAAAMIAAAAFGxvY2EAKACuAAADHAAAAAxtYXhwAAgAVwAAAygAAAAgbmFtZQ5yJ3cAAANIAAAB2nBvc3QAAwAAAAAFJAAAACAAAwJAAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADpywPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAOAAAAAoACAACAAIAAQAg6cv//f//AAAAAAAg6cv//f//AAH/4xY5AAMAAQAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAACADEARAJTAsAAKwBUAAABIiYnJjQ/AT4BMzIWFxYUDwEGIicmND8BNjQnLgEjIgYPAQYUFxYUBw4BIwciJicmND8BNjIXFhQPAQYUFx4BMzI2PwE2NCcmNDc2MhcWFA8BDgEjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAEAAAABAACiToc1Xw889QALBAAAAAAA0XnFFgAAAADRecUWAAAAAAJTAsAAAAAIAAIAAAAAAAAAAQAAA8D/wAAABAAAAAAAAlMAAQAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAACAAAAAoAAMQAAAAAACgAUAB4AmgABAAAABQBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAADgCuAAEAAAAAAAEADgAAAAEAAAAAAAIABwCfAAEAAAAAAAMADgBLAAEAAAAAAAQADgC0AAEAAAAAAAUACwAqAAEAAAAAAAYADgB1AAEAAAAAAAoAGgDeAAMAAQQJAAEAHAAOAAMAAQQJAAIADgCmAAMAAQQJAAMAHABZAAMAAQQJAAQAHADCAAMAAQQJAAUAFgA1AAMAAQQJAAYAHACDAAMAAQQJAAoANAD4YW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzVmVyc2lvbiAxLjAAVgBlAHIAcwBpAG8AbgAgADEALgAwYW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzYW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzUmVndWxhcgBSAGUAZwB1AGwAYQByYW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzRm9udCBnZW5lcmF0ZWQgYnkgSWNvTW9vbi4ARgBvAG4AdAAgAGcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAASQBjAG8ATQBvAG8AbgAuAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==) format("truetype"); }',i=" [data-anchorjs-icon]::after { content: attr(data-anchorjs-icon); }";t.className="anchorjs",t.appendChild(document.createTextNode("")),A=document.head.querySelector('[rel="stylesheet"], style'),void 0===A?document.head.appendChild(t):document.head.insertBefore(t,A),t.sheet.insertRule(e,t.sheet.cssRules.length),t.sheet.insertRule(o,t.sheet.cssRules.length),t.sheet.insertRule(i,t.sheet.cssRules.length),t.sheet.insertRule(n,t.sheet.cssRules.length)}}var o=this;this.options=A||{},t(A),this.add=function(A){var o,n,i,s,a,r,l,c,h,g,B,u;if(t(this.options),A){if("string"!=typeof A)throw new Error("The selector provided to AnchorJS was invalid.")}else A="h1, h2, h3, h4, h5, h6";if(o=document.querySelectorAll(A),0===o.length)return!1;for(e(),n=document.querySelectorAll("[id]"),i=[].map.call(n,function(A){return A.id}),a=0;a<o.length;a++){if(o[a].hasAttribute("id"))s=o[a].getAttribute("id");else{r=o[a].textContent,l=this.urlify(r),g=l,h=0;do void 0!==c&&(g=l+"-"+h),c=i.indexOf(g),h+=1;while(-1!==c);c=void 0,i.push(g),o[a].setAttribute("id",g),s=g}B=s.replace(/-/g," "),u=document.createElement("a"),u.className="anchorjs-link "+this.options.class,u.href="#"+s,u.setAttribute("aria-label","Anchor link for: "+B),u.setAttribute("data-anchorjs-icon",this.options.icon),"always"===this.options.visible&&(u.style.opacity="1"),""===this.options.icon&&(u.style.fontFamily="anchorjs-icons",u.style.fontStyle="normal",u.style.fontVariant="normal",u.style.fontWeight="normal",u.style.lineHeight=1,"left"===this.options.placement&&(u.style.lineHeight="inherit")),"left"===this.options.placement?(u.style.position="absolute",u.style.marginLeft="-1em",u.style.paddingRight="0.5em",o[a].insertBefore(u,o[a].firstChild)):(u.style.paddingLeft="0.375em",o[a].appendChild(u))}return this},this.remove=function(A){for(var t,e=document.querySelectorAll(A),o=0;o<e.length;o++)t=e[o].querySelector(".anchorjs-link"),t&&e[o].removeChild(t);return this},this.urlify=function(A){var e,o=/[& +$,:;=?@"#{}|^~[`%!'\]\.\/\(\)\*\\]/g;return t(this.options),e=A.replace(/\'/gi,"").replace(o,"-").replace(/-{2,}/g,"-").substring(0,this.options.truncate).replace(/^-+|-+$/gm,"").toLowerCase()}}var anchors=new AnchorJS;

File diff suppressed because one or more lines are too long

12
docs/assets/js/vendor/holder.min.js vendored Normal file

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,6 @@
DO NOT edit files in this folder EXCEPT docs.scss.
These files are copied using
grunt docs-copy-bootstrap-docs
This is done to keep samples in sync with the upstream bs4.

View File

@ -0,0 +1,66 @@
// DO NOT EDIT IT WILL BE OVERWRITTEN - copy of bootstrap documentation generated by grunt docs-copy-bootstrap-docs
//
// Carbon ads
//
.carbonad {
width: auto !important;
height: auto !important;
padding: 1.25rem !important;
margin: 2rem ($grid-gutter-width * -1) -2rem !important;
overflow: hidden; // clearfix
font-family: inherit !important;
font-size: .8rem !important;
line-height: 1rem !important;
color: $bd-purple-light !important;
text-align: left;
background: darken($bd-purple, 10%) !important;
border: 0 !important;
}
.carbonad-img {
margin: 0 !important;
}
.carbonad-text,
.carbonad-tag {
display: block !important;
float: none !important;
width: auto !important;
height: auto !important;
margin-left: 145px !important;
font-family: inherit !important;
}
.carbonad-text {
padding-top: 0 !important;
}
.carbonad-tag {
color: inherit !important;
text-align: left !important;
}
.carbonad-text a,
.carbonad-tag a {
color: $bd-purple-light !important;
&:hover {
color: #fff !important;
}
}
@include media-breakpoint-up(sm) {
.carbonad {
width: 330px !important;
padding: 1rem !important;
margin-right: auto !important;
margin-left: auto !important;
border-radius: .25rem;
}
}
@include media-breakpoint-up(md) {
}

View File

@ -0,0 +1,22 @@
// DO NOT EDIT IT WILL BE OVERWRITTEN - copy of bootstrap documentation generated by grunt docs-copy-bootstrap-docs
.anchorjs-link {
color: inherit;
}
@media (max-width: 480px) {
.anchorjs-link {
display: none;
}
}
*:hover > .anchorjs-link {
opacity: .75;
transition: color .16s linear;
}
*:hover > .anchorjs-link:hover,
.anchorjs-link:focus {
text-decoration: none;
opacity: 1;
}

View File

@ -0,0 +1,27 @@
// DO NOT EDIT IT WILL BE OVERWRITTEN - copy of bootstrap documentation generated by grunt docs-copy-bootstrap-docs
//
// Bootstrap "B" Booticon
//
.bd-booticon {
display: block;
width: 9rem;
height: 9rem;
font-size: 6.5rem;
line-height: 9rem;
color: #fff;
text-align: center;
cursor: default;
background-color: $bd-purple;
border-radius: 15%;
&.inverse {
color: $bd-purple;
background-color: #fff;
}
&.outline {
background-color: transparent;
border: 1px solid $bd-purple-light;
}
}

View File

@ -0,0 +1,110 @@
// DO NOT EDIT IT WILL BE OVERWRITTEN - copy of bootstrap documentation generated by grunt docs-copy-bootstrap-docs
//
// Brand guidelines
//
// Logo series wrapper
.bd-brand-logos {
display: table;
width: 100%;
margin-bottom: 1rem;
overflow: hidden;
color: #563d7c;
background-color: #f9f9f9;
border-radius: .25rem;
}
// Individual items
.bd-brand-item {
padding: 4rem 0;
text-align: center;
}
.bd-brand-item + .bd-brand-item {
border-top: 1px solid #fff;
}
.bd-brand-logos .inverse {
color: #fff;
background-color: #563d7c;
}
// Heading content within
.bd-brand-item h1,
.bd-brand-item h3 {
margin-top: 0;
margin-bottom: 0;
}
.bd-brand-item .bd-booticon {
margin-right: auto;
margin-left: auto;
}
// Make the icons stand out on what is/isn't okay
// .bd-brand-item .glyphicon {
// width: 30px;
// height: 30px;
// margin: 10px auto -10px;
// line-height: 30px;
// color: #fff;
// border-radius: 50%;
// }
// .bd-brand-item .glyphicon-ok {
// background-color: #5cb85c;
// }
// .bd-brand-item .glyphicon-remove {
// background-color: #d9534f;
// }
@media (min-width: 768px) {
.bd-brand-item {
display: table-cell;
width: 1%;
}
.bd-brand-item + .bd-brand-item {
border-top: 0;
border-left: 1px solid #fff;
}
.bd-brand-item h1 {
font-size: 4rem;
}
}
//
// Color swatches
//
.color-swatches {
margin: 0 -5px;
overflow: hidden; // clearfix
}
.color-swatch {
float: left;
width: 4rem;
height: 4rem;
margin-right: .25rem;
margin-left: .25rem;
border-radius: .25rem;
@media (min-width: 768px) {
width: 6rem;
height: 6rem;
}
}
// Docs colors
.color-swatches {
.bd-purple {
background-color: $bd-purple;
}
.bd-purple-light {
background-color: $bd-purple-light;
}
.bd-purple-lighter {
background-color: #e5e1ea;
}
.bd-gray {
background-color: #f9f9f9;
}
}

View File

@ -0,0 +1,14 @@
// DO NOT EDIT IT WILL BE OVERWRITTEN - copy of bootstrap documentation generated by grunt docs-copy-bootstrap-docs
// Wall of Browser Bugs
//
// Better display for the responsive table on the Wall of Browser Bugs.
.bd-browser-bugs {
td p {
margin-bottom: 0;
}
th:first-child {
width: 18%;
}
}

View File

@ -0,0 +1,19 @@
// DO NOT EDIT IT WILL BE OVERWRITTEN - copy of bootstrap documentation generated by grunt docs-copy-bootstrap-docs
// Buttons
//
// Custom buttons for the docs.
.btn-bs {
font-weight: 500;
color: $bd-purple-bright;
border-color: $bd-purple-bright;
&:hover,
&:focus,
&:active {
color: #fff;
background-color: $bd-purple-bright;
border-color: $bd-purple-bright;
}
}

View File

@ -0,0 +1,38 @@
// DO NOT EDIT IT WILL BE OVERWRITTEN - copy of bootstrap documentation generated by grunt docs-copy-bootstrap-docs
//
// Callouts
//
.bd-callout {
padding: 1.25rem;
margin-top: 1.25rem;
margin-bottom: 1.25rem;
border: 1px solid #eee;
border-left-width: .25rem;
border-radius: .25rem;
}
.bd-callout h4 {
margin-top: 0;
margin-bottom: .25rem;
}
.bd-callout p:last-child {
margin-bottom: 0;
}
.bd-callout code {
border-radius: .25rem;
}
.bd-callout + .bd-callout {
margin-top: -.25rem;
}
// Variations
@mixin bs-callout-variant($color) {
border-left-color: $color;
h4 { color: $color; }
}
.bd-callout-info { @include bs-callout-variant($bd-info); }
.bd-callout-warning { @include bs-callout-variant($bd-warning); }
.bd-callout-danger { @include bs-callout-variant($bd-danger); }

View File

@ -0,0 +1,40 @@
// DO NOT EDIT IT WILL BE OVERWRITTEN - copy of bootstrap documentation generated by grunt docs-copy-bootstrap-docs
// clipboard.js
//
// Flash-based `Copy` buttons for code snippets.
.bd-clipboard {
position: relative;
display: none;
float: right;
+ .highlight {
margin-top: 0;
}
}
.btn-clipboard {
position: absolute;
top: .5rem;
right: .5rem;
z-index: 10;
display: block;
padding: .25rem .5rem;
font-size: 75%;
color: #818a91;
cursor: pointer;
background-color: transparent;
border-radius: .25rem;
&:hover {
color: #fff;
background-color: #027de7;
}
}
@media (min-width: 768px) {
.bd-clipboard {
display: block;
}
}

View File

@ -0,0 +1,333 @@
// DO NOT EDIT IT WILL BE OVERWRITTEN - copy of bootstrap documentation generated by grunt docs-copy-bootstrap-docs
//
// Grid examples
//
.bd-example-row {
.row {
margin-bottom: 1rem;
> [class^="col-"] {
padding-top: .75rem;
padding-bottom: .75rem;
background-color: rgba(86,61,124,.15);
border: 1px solid rgba(86,61,124,.2);
}
}
}
//
// Container illustrations
//
.bd-example-container {
min-width: 16rem;
max-width: 25rem;
margin-right: auto;
margin-left: auto;
}
.bd-example-container-header {
height: 3rem;
margin-bottom: .5rem;
background-color: lighten($brand-primary, 50%);
border-radius: .25rem;
}
.bd-example-container-sidebar {
float: right;
width: 4rem;
height: 8rem;
background-color: lighten($brand-warning, 25%);
border-radius: .25rem;
}
.bd-example-container-body {
height: 8rem;
margin-right: 4.5rem;
background-color: lighten($bd-purple, 25%);
border-radius: .25rem;
}
.bd-example-container-fluid {
max-width: none;
}
//
// Docs examples
//
.bd-example {
position: relative;
padding: 1rem;
margin: 1rem -1rem;
border: solid #f7f7f9;
border-width: .2rem 0 0;
@include clearfix();
@include media-breakpoint-up(sm) {
padding: 1.5rem;
margin-right: 0;
margin-bottom: 0;
margin-left: 0;
border-width: .2rem;
}
+ .highlight,
+ .clipboard + .highlight {
margin-top: 0;
}
+ p {
margin-top: 2rem;
}
// Undo width of container
.container {
width: auto;
}
> .form-control {
+ .form-control {
margin-top: .5rem;
}
}
// Card examples should be horizontal
> .card {
max-width: 20rem;
}
> .nav + .nav,
> .alert + .alert,
> .navbar + .navbar,
> .progress + .progress,
> .progress + .btn {
margin-top: 1rem;
}
> .dropdown-menu:first-child {
position: static;
display: block;
}
}
.bd-example > .close {
float: none;
}
// Typography
.bd-example-type .table .type-info {
color: #999;
vertical-align: middle;
}
.bd-example-type .table td {
padding: 1rem 0;
border-color: #eee;
}
.bd-example-type .table tr:first-child td {
border-top: 0;
}
.bd-example-type h1,
.bd-example-type h2,
.bd-example-type h3,
.bd-example-type h4,
.bd-example-type h5,
.bd-example-type h6 {
margin: 0;
}
// Contextual background colors
.bd-example-bg-classes p {
padding: 1rem;
}
// Images
.bd-example > img {
+ img {
margin-left: .5rem;
}
}
// Buttons
.bd-example > .btn-group {
margin-top: .25rem;
margin-bottom: .25rem;
}
.bd-example > .btn-toolbar + .btn-toolbar {
margin-top: .5rem;
}
// Forms
.bd-example-control-sizing select,
.bd-example-control-sizing input[type="text"] + input[type="text"] {
margin-top: .5rem;
}
.bd-example-form .input-group {
margin-bottom: .5rem;
}
.bd-example > textarea.form-control {
resize: vertical;
}
// List groups
.bd-example > .list-group {
max-width: 400px;
}
// Navbars
.bd-example {
.navbar-fixed-top {
position: static;
margin: -1rem -1rem 1rem;
}
.navbar-fixed-bottom {
position: static;
margin: 1rem -1rem -1rem;
}
@include media-breakpoint-up(sm) {
.navbar-fixed-top {
margin: -1.5rem -1.5rem 1rem;
}
.navbar-fixed-bottom {
margin: 1rem -1.5rem -1.5rem;
}
}
}
// Pagination
.bd-example .pagination {
margin-top: .5rem;
margin-bottom: .5rem;
}
// Example modals
.bd-example-modal {
background-color: #f5f5f5;
}
.bd-example-modal .modal {
position: relative;
top: auto;
right: auto;
bottom: auto;
left: auto;
z-index: 1;
display: block;
}
.bd-example-modal .modal-dialog {
left: auto;
margin-right: auto;
margin-left: auto;
}
// Example dropdowns
.bd-example > .dropdown > .dropdown-toggle {
float: left;
}
.bd-example > .dropdown > .dropdown-menu {
position: static;
display: block;
margin-bottom: .25rem;
clear: left;
}
// Example tabbable tabs
.bd-example-tabs .nav-tabs {
margin-bottom: 1rem;
}
// Tooltips
.bd-example-tooltips {
text-align: center;
}
.bd-example-tooltips > .btn {
margin-top: .25rem;
margin-bottom: .25rem;
}
// Popovers
.bd-example-popover-static {
padding-bottom: 1.5rem;
background-color: #f9f9f9;
}
.bd-example-popover-static .popover {
position: relative;
display: block;
float: left;
width: 260px;
margin: 1.25rem;
}
// Tooltips
.tooltip-demo a {
white-space: nowrap;
}
.bd-example-tooltip-static .tooltip {
position: relative;
display: inline-block;
margin: 10px 20px;
opacity: 1;
}
// Scrollspy demo on fixed height div
.scrollspy-example {
position: relative;
height: 200px;
margin-top: .5rem;
overflow: auto;
}
// Helpers
.bd-example > {
.center-block:not(img) {
max-width: 200px;
padding: .5rem;
background-color: #eee;
}
.bg-primary,
.bg-success,
.bg-info,
.bg-warning,
.bg-danger,
.bg-inverse {
&:not(.navbar) {
padding: .5rem;
margin-top: .5rem;
margin-bottom: .5rem;
}
}
}
//
// Code snippets
//
.highlight {
padding: 1rem;
margin: 1rem (-$grid-gutter-width / 2);
background-color: #f7f7f9;
@include media-breakpoint-up(sm) {
padding: 1.5rem;
margin-right: 0;
margin-left: 0;
}
}
.highlight pre {
padding: 0;
margin-top: 0;
margin-bottom: 0;
background-color: transparent;
border: 0;
}
.highlight pre code {
font-size: inherit;
color: $gray-dark; // Effectively the base text color
}

View File

@ -0,0 +1,89 @@
// DO NOT EDIT IT WILL BE OVERWRITTEN - copy of bootstrap documentation generated by grunt docs-copy-bootstrap-docs
// scss-lint:disable IdSelector
//
// Automatically style Markdown-based tables like a Bootstrap `.table`.
//
.bd-content {
> table {
display: block;
width: 100%;
max-width: 100%;
margin-bottom: $spacer;
overflow-y: auto;
// Cells
> thead,
> tbody,
> tfoot {
> tr {
> th,
> td {
padding: $table-cell-padding;
line-height: $line-height;
vertical-align: top;
border: 1px solid $table-border-color;
> p:last-child {
margin-bottom: 0;
}
}
}
}
// Prevent breaking of code (e.g., Grunt tasks list)
td:first-child > code {
white-space: nowrap;
}
}
}
//
// Docs sections
//
.bd-content {
> h2:not(:first-child) {
margin-top: 3rem;
}
> h3 {
margin-top: 1.5rem;
}
> ul li,
> ol li {
margin-bottom: .25rem;
}
}
.bd-title {
@include media-breakpoint-up(sm) {
font-size: 3rem;
+ p {
font-size: 1.25rem;
font-weight: 300;
}
}
}
//
// Markdown generated ToC
//
#markdown-toc {
// Hide the first child li because it's always going to be "Contents".
> li:first-child {
display: none;
}
ul {
padding-left: 2rem;
margin-top: .25rem;
margin-bottom: .25rem;
}
}

View File

@ -0,0 +1,26 @@
// DO NOT EDIT IT WILL BE OVERWRITTEN - copy of bootstrap documentation generated by grunt docs-copy-bootstrap-docs
//
// Examples
//
.bd-examples .img-thumbnail {
margin-bottom: .75rem;
}
.bd-examples h4 {
margin-bottom: .25rem;
}
.bd-examples p {
margin-bottom: 1.25rem;
}
@media (max-width: 480px) {
.bd-examples {
margin-right: -.75rem;
margin-left: -.75rem;
}
.bd-examples > [class^="col-"] {
padding-right: .75rem;
padding-left: .75rem;
}
}

View File

@ -0,0 +1,23 @@
// DO NOT EDIT IT WILL BE OVERWRITTEN - copy of bootstrap documentation generated by grunt docs-copy-bootstrap-docs
.bd-featured-sites {
margin-right: -1px;
margin-left: -1px;
}
.bd-featured-sites .col-xs-6 {
padding: 1px;
}
.bd-featured-sites .img-fluid {
margin-top: 0;
}
@media (min-width: 768px) {
.bd-featured-sites .col-sm-3:first-child img {
border-top-left-radius: .25rem;
border-bottom-left-radius: .25rem;
}
.bd-featured-sites .col-sm-3:last-child img {
border-top-right-radius: .25rem;
border-bottom-right-radius: .25rem;
}
}

View File

@ -0,0 +1,99 @@
// DO NOT EDIT IT WILL BE OVERWRITTEN - copy of bootstrap documentation generated by grunt docs-copy-bootstrap-docs
.bd-featurette {
padding-top: 3rem;
padding-bottom: 3rem;
font-size: 1rem;
line-height: 1.5;
color: #555;
text-align: center;
background-color: #fff;
border-top: 1px solid #eee;
.highlight {
text-align: left;
}
.lead {
margin-right: auto;
margin-bottom: 2rem;
margin-left: auto;
font-size: 1rem;
text-align: center;
}
@include media-breakpoint-up(sm) {
text-align: left;
}
@include media-breakpoint-up(md) {
.col-sm-6:first-child {
padding-right: ($grid-gutter-width * 1.5);
};
.col-sm-6:last-child {
padding-left: ($grid-gutter-width * 1.5);
}
}
}
.bd-featurette-title {
margin-bottom: .5rem;
font-size: 2rem;
font-weight: normal;
color: #333;
text-align: center;
}
.half-rule {
width: 6rem;
margin: 2.5rem auto;
@include media-breakpoint-up(sm) {
margin-right: 0;
margin-left: 0;
}
}
.bd-featurette h4 {
margin-top: 1rem;
margin-bottom: .5rem;
font-weight: normal;
color: #333;
}
.bd-featurette-img {
display: block;
margin-bottom: 1.25rem;
color: #333;
}
.bd-featurette-img:hover {
color: $brand-primary;
text-decoration: none;
}
.bd-featurette-img img {
display: block;
margin-bottom: 1rem;
}
@media (min-width: 480px) {
.bd-featurette .img-fluid {
margin-top: 2rem;
}
}
@media (min-width: 768px) {
.bd-featurette {
padding-top: 6rem;
padding-bottom: 6rem;
}
.bd-featurette-title {
font-size: 2.5rem;
+ .lead {
font-size: 1.5rem;
}
}
.bd-featurette .lead {
max-width: 80%;
}
.bd-featurette .img-fluid {
margin-top: 0;
}
}

View File

@ -0,0 +1,43 @@
// DO NOT EDIT IT WILL BE OVERWRITTEN - copy of bootstrap documentation generated by grunt docs-copy-bootstrap-docs
//
// Footer
//
.bd-footer {
padding: 4rem 0;
margin-top: 4rem;
font-size: 85%;
text-align: center;
background-color: #f7f7f7;
a {
font-weight: 500;
color: $gray;
&:hover {
color: $link-color;
}
}
p {
margin-bottom: 0;
}
@include media-breakpoint-up(sm) {
text-align: left;
}
}
.bd-footer-links {
padding-left: 0;
margin-bottom: 1rem;
li {
display: inline-block;
+ li {
margin-left: 1rem;
}
}
}

View File

@ -0,0 +1,92 @@
// DO NOT EDIT IT WILL BE OVERWRITTEN - copy of bootstrap documentation generated by grunt docs-copy-bootstrap-docs
.bd-masthead {
position: relative;
padding: 3rem ($grid-gutter-width / 2) 2rem;
color: $bd-purple-light;
text-align: center;
background-image: linear-gradient(135deg, darken($bd-purple, 20%), $bd-purple, lighten(saturate($bd-purple, 5%), 15%));
.bd-booticon {
margin: 0 auto 2rem;
color: $bd-purple-light;
border-color: $bd-purple-light;
}
h1 {
font-weight: 300;
line-height: 1;
}
.lead {
margin-right: auto;
margin-bottom: 2rem;
margin-left: auto;
font-size: 1.25rem;
color: #fff;
}
.version {
margin-top: -1rem;
margin-bottom: 2rem;
}
.btn {
width: 100%;
padding: 1rem 2rem;
font-size: 1.25rem;
font-weight: 500;
color: $bd-yellow;
border-color: $bd-yellow;
&:hover {
color: $bd-graphite;
background-color: $bd-yellow;
border-color: $bd-yellow;
}
}
.carbonad {
margin-bottom: -2rem !important;
}
@include media-breakpoint-up(sm) {
padding-top: 8rem;
padding-bottom: 2rem;
.btn {
width: auto;
}
.carbonad {
margin-bottom: 0 !important;
}
}
@include media-breakpoint-up(md) {
padding-bottom: 4rem;
.bd-header {
margin-bottom: 4rem;
}
h1 {
font-size: 4rem;
}
.lead {
font-size: 1.5rem;
}
.carbonad {
margin-top: 3rem !important;
}
}
@include media-breakpoint-up(lg) {
.lead {
width: 85%;
font-size: 2rem;
}
}
}

View File

@ -0,0 +1,40 @@
// DO NOT EDIT IT WILL BE OVERWRITTEN - copy of bootstrap documentation generated by grunt docs-copy-bootstrap-docs
//
// Main navbar
//
.bd-navbar {
font-size: 87.5%; // 14px
.navbar-nav {
.nav-link {
color: $bd-graphite-light;
&.active,
&:hover,
&:focus {
color: $gray-dark;
background-color: transparent;
}
&.active {
color: darken($gray-dark, 25%);
}
}
}
.dropdown-menu {
font-size: inherit;
}
@include media-breakpoint-down(sm) {
.nav-link {
float: none;
+ .nav-link {
margin-left: 0;
}
}
}
}

View File

@ -0,0 +1,60 @@
// DO NOT EDIT IT WILL BE OVERWRITTEN - copy of bootstrap documentation generated by grunt docs-copy-bootstrap-docs
.bd-pageheader {
padding: 2rem ($grid-gutter-width / 2);
margin-bottom: 1.5rem;
color: $bd-purple-light;
text-align: center;
background-color: $bd-purple;
.container {
position: relative;
}
h1 {
font-size: 3rem;
font-weight: normal;
color: #fff;
}
p {
margin-bottom: 0;
font-size: 1.25rem;
font-weight: 300;
}
@include media-breakpoint-up(sm) {
padding-top: 4rem;
padding-bottom: 4rem;
margin-bottom: 3rem;
text-align: left;
.carbonad {
margin: 2rem 0 0 !important;
}
}
@include media-breakpoint-up(md) {
h1 {
font-size: 4rem;
}
p {
font-size: 1.5rem;
}
}
@include media-breakpoint-up(lg) {
h1,
p {
margin-right: 380px;
}
.carbonad {
position: absolute;
top: 0;
right: .75rem; // offset from the .container's padding
margin: 0 !important;
}
}
}

View File

@ -0,0 +1,94 @@
// DO NOT EDIT IT WILL BE OVERWRITTEN - copy of bootstrap documentation generated by grunt docs-copy-bootstrap-docs
//
// Responsive tests
//
// Responsive (scrollable) doc tables
.table-responsive .highlight pre {
white-space: normal;
}
// Utility classes table
.bd-table th small,
.responsive-utilities th small {
display: block;
font-weight: normal;
color: #999;
}
.responsive-utilities tbody th {
font-weight: normal;
}
.responsive-utilities td {
text-align: center;
}
.responsive-utilities td.is-visible {
color: #468847;
background-color: #dff0d8 !important;
}
.responsive-utilities td.is-hidden {
color: #ccc;
background-color: #f9f9f9 !important;
}
// Responsive tests
.responsive-utilities-test {
margin-top: .25rem;
}
.responsive-utilities-test .col-xs-6 {
margin-bottom: .5rem;
}
.responsive-utilities-test span {
display: block;
padding: 1rem .5rem;
font-size: 1rem;
font-weight: bold;
line-height: 1.1;
text-align: center;
border-radius: .25rem;
}
.visible-on,
.hidden-on {
.col-xs-6 {
> .not-visible {
color: #999;
border: 1px solid #ddd;
}
}
}
.visible-on,
.hidden-on {
.col-xs-6 {
.visible {
color: #468847;
background-color: #dff0d8;
border: 1px solid #d6e9c6;
}
}
}
@include media-breakpoint-only(xs) {
.hidden-xs-only {
display: none !important;
}
}
@include media-breakpoint-only(sm) {
.hidden-sm-only {
display: none !important;
}
}
@include media-breakpoint-only(md) {
.hidden-md-only {
display: none !important;
}
}
@include media-breakpoint-only(lg) {
.hidden-lg-only {
display: none !important;
}
}
@include media-breakpoint-only(xl) {
.hidden-xl-only {
display: none !important;
}
}

View File

@ -0,0 +1,109 @@
// DO NOT EDIT IT WILL BE OVERWRITTEN - copy of bootstrap documentation generated by grunt docs-copy-bootstrap-docs
//
// Side navigation
//
.bd-sidebar {
@include media-breakpoint-up(md) {
padding-left: 1rem;
}
}
.bd-search {
position: relative;
margin-bottom: 1.5rem;
.form-control {
height: 2.45rem;
padding-top: .4rem;
padding-bottom: .4rem;
background-color: #fafafa;
&:focus {
background-color: #fff;
}
}
}
.bd-search-results {
right: 0;
display: block;
padding: 0;
overflow: hidden;
font-size: .9rem;
&:empty {
display: none;
}
.dropdown-item {
padding-right: .75rem;
padding-left: .75rem;
&:first-child { margin-top: .25rem; }
&:last-child { margin-bottom: .25rem; }
}
.no-results {
padding: .75rem 1rem;
color: #7a7a7a;
text-align: center;
white-space: normal; // Undo .dropdown-item defaults
}
}
.bd-sidenav {
display: none;
}
.bd-toc-link {
display: block;
padding: .25rem .75rem;
color: $gray;
}
.bd-toc-link:hover,
.bd-toc-link:focus {
color: $brand-primary;
text-decoration: none;
}
.active > .bd-toc-link {
font-weight: 500;
color: $gray-dark;
}
.active > .bd-sidenav {
display: block;
}
.bd-toc-item.active {
margin-top: 1rem;
margin-bottom: 1rem;
}
.bd-toc-item:first-child {
margin-top: 0;
}
.bd-toc-item:last-child {
margin-bottom: 2rem;
}
// All levels of nav
.bd-sidebar .nav > li > a {
display: block;
padding: .25rem .75rem;
font-size: 90%;
color: #99979c;
}
.bd-sidebar .nav > li > a:hover,
.bd-sidebar .nav > li > a:focus {
color: $brand-primary;
text-decoration: none;
background-color: transparent;
}
.bd-sidebar .nav > .active > a,
.bd-sidebar .nav > .active:hover > a,
.bd-sidebar .nav > .active:focus > a {
font-weight: 500;
color: $gray-dark;
background-color: transparent;
}

View File

@ -0,0 +1,16 @@
// DO NOT EDIT IT WILL BE OVERWRITTEN - copy of bootstrap documentation generated by grunt docs-copy-bootstrap-docs
// scss-lint:disable IdSelector
#skippy {
display: block;
padding: 1em;
color: #fff;
background-color: $bd-purple;
outline: 0;
.skiplink-text {
padding: .5em;
outline: 1px dotted;
}
}

View File

@ -0,0 +1,66 @@
// DO NOT EDIT IT WILL BE OVERWRITTEN - copy of bootstrap documentation generated by grunt docs-copy-bootstrap-docs
.hll { background-color: #ffc; }
.c { color: #999; }
.err { color: #a00; background-color: #faa; }
.k { color: #069; }
.o { color: #555; }
.cm { color: #999; }
.cp { color: #099; }
.c1 { color: #999; }
.cs { color: #999; }
.gd { background-color: #fcc; border: 1px solid #c00; }
.ge { font-style: italic; }
.gr { color: #f00; }
.gh { color: #030; }
.gi { background-color: #cfc; border: 1px solid #0c0; }
.go { color: #aaa; }
.gp { color: #009; }
.gu { color: #030; }
.gt { color: #9c6; }
.kc { color: #069; }
.kd { color: #069; }
.kn { color: #069; }
.kp { color: #069; }
.kr { color: #069; }
.kt { color: #078; }
.m { color: #f60; }
.s { color: #d44950; }
.na { color: #4f9fcf; }
.nb { color: #366; }
.nc { color: #0a8; }
.no { color: #360; }
.nd { color: #99f; }
.ni { color: #999; }
.ne { color: #c00; }
.nf { color: #c0f; }
.nl { color: #99f; }
.nn { color: #0cf; }
.nt { color: #2f6f9f; }
.nv { color: #033; }
.ow { color: #000; }
.w { color: #bbb; }
.mf { color: #f60; }
.mh { color: #f60; }
.mi { color: #f60; }
.mo { color: #f60; }
.sb { color: #c30; }
.sc { color: #c30; }
.sd { font-style: italic; color: #c30; }
.s2 { color: #c30; }
.se { color: #c30; }
.sh { color: #c30; }
.si { color: #a00; }
.sx { color: #c30; }
.sr { color: #3aa; }
.s1 { color: #c30; }
.ss { color: #fc3; }
.bp { color: #366; }
.vc { color: #033; }
.vg { color: #033; }
.vi { color: #033; }
.il { color: #f60; }
.css .o,
.css .o + .nt,
.css .nt + .nt { color: #999; }

View File

@ -0,0 +1,30 @@
// DO NOT EDIT IT WILL BE OVERWRITTEN - copy of bootstrap documentation generated by grunt docs-copy-bootstrap-docs
.bd-team {
margin-bottom: 1.5rem;
.team-member {
line-height: 2rem;
color: #555;
}
.team-member:hover {
color: #333;
text-decoration: none;
}
.github-btn {
float: right;
width: 180px;
height: 1.25rem;
margin-top: .25rem;
border: 0;
}
img {
float: left;
width: 2rem;
margin-right: .5rem;
border-radius: .25rem;
}
}

View File

@ -0,0 +1,95 @@
// This is the only customized file in this immediate directory, the rest are copied with:
// grunt docs-copy-bootstrap-docs
// (perhaps add customizations in subdirectories)
/*!
* Bootstrap Docs (http://getbootstrap.com)
* Copyright 2011-2015 Twitter, Inc.
* Licensed under the Creative Commons Attribution 3.0 Unported License. For
* details, see https://creativecommons.org/licenses/by/3.0/.
*/
// Dev notes
//
// Background information on nomenclature and architecture decisions here.
//
// - Bootstrap variables and mixins are included for easy reuse.
// Doing so gives us access to the same core utilities provided by Bootstrap.
// For example, consistent media queries through those mixins.
//
// - Bootstrap's **docs variables** are prefixed with `%bd-`.
// These custom colors avoid collision with the components Bootstrap provides.
//
// - Classes are prefixed with `.bd-`.
// These classes indicate custom-built or modified components for the design
// and layout of the Bootstrap docs. They are not included in our builds.
//
// Happy Bootstrapping!
// Load Bootstrap variables and mixins
//@import '../../../scss/includes/variables';
//@import '../../../scss/includes/mixins';
@import '../../../scss/variables/colors';
//http://www.materialpalette.com/indigo/light-blue
$brand-primary: $indigo-500; // #3F51B5
/* Palette generated by Material Palette - materialpalette.com/indigo/light-blue */
//$primary-color-dark: #303F9F $indigo-700
//$primary-color: #3F51B5 $indigo-500
//$primary-color-light: #C5CAE9 $indigo-100
//$primary-color-text: #FFFFFF
//$accent-color: #03A9F4 $light-blue-500
//$primary-text-color: #212121 $grey-900
//$secondary-text-color: #727272
//$divider-color: #B6B6B6
// Import default variables
@import '../../../scss/variables';
// Local docs variables or overrides
$bd-purple: $brand-primary; // #563d7c;
$bd-purple-bright: $light-blue-500; //lighten(saturate($bd-purple, 5%), 15%);
$bd-purple-light: $indigo-100; // #C5CAE9; #cdbfe3;
$bd-graphite: $indigo-700; // #303F9F; //#2a2730;
$bd-graphite-light: lighten($bd-graphite, 40%);
$bd-yellow: #ffe484;
$bd-danger: $brand-danger; // #d9534f;
$bd-warning: $brand-warning; // #f0ad4e;
$bd-info: $brand-info; // #5bc0de;
// Import material design configured with the above variables
@import '../../../scss/core';
// Load docs components
@import 'booticon';
@import 'nav';
@import 'masthead';
@import 'featurettes';
@import 'featured-sites';
@import 'ads';
@import 'content';
@import 'page-header';
@import 'skiplink';
@import 'sidebar';
@import 'footer';
@import 'component-examples';
@import 'responsive-tests';
@import 'buttons';
@import 'callouts';
@import 'examples';
@import 'team';
@import 'browser-bugs';
@import 'brand';
@import 'clipboard-js';
// Load docs dependencies
@import 'syntax';
@import 'anchor';
// MDB customizatinos
@import 'mdb/booticon';
@import 'mdb/component-examples';
@import 'mdb/clipboard-js';
@import 'mdb/sidebar';
@import 'mdb/drawer';

View File

@ -0,0 +1,8 @@
//
// "MDB" icon
//
.bd-booticon {
width: 16rem;
border-radius: 1rem;
}

View File

@ -0,0 +1,10 @@
.btn-clipboard {
//color: #818a91;
border-radius: $border-radius;
text-transform: uppercase;
&:hover {
color: $gray; // #fff;
background-color: $mdb-btn-focus-bg; // #027de7;
}
}

View File

@ -0,0 +1,29 @@
//
// Code snippets
//
.highlight {
background-color: $code-bg;
}
// Helpers
.bd-example > {
//.center-block:not(img) {
// max-width: 200px;
// padding: .5rem;
// background-color: #eee;
//}
.bg-primary,
.bg-success,
.bg-info,
.bg-warning,
.bg-danger,
.bg-inverse {
&:not(.navbar) {
padding: 0; //.5rem;
//margin-top: 0; //.5rem;
//margin-bottom: 0; //.5rem;
}
}
}

View File

@ -0,0 +1,10 @@
.bd-example[data-example-id*="drawer-"] {
padding-top: 0;
padding-right: 0;
padding-left: 0;
min-height: 235px;
}
.bd-example[data-example-id*="drawer-1"] {
min-height: 350px; // make first example bigger
}

View File

@ -0,0 +1,8 @@
.mdb-toc-item-reference {
margin-top: 1rem;
//margin-bottom: 1rem;
padding: .25rem .75rem;
}

38
docs/browser-bugs.md Normal file
View File

@ -0,0 +1,38 @@
---
layout: docs
title: Wall of browser bugs
group: browser-bugs
---
Bootstrap currently works around several outstanding browser bugs in major browsers to deliver the best cross-browser experience possible. Some bugs, like those listed below, cannot be solved by us.
We publicly list browser bugs that are impacting us here, in the hopes of expediting the process of fixing them. For information on Bootstrap's browser compatibility, [see our browser compatibility docs]({{ site.baseurl }}/getting-started/browsers-devices/#supported-browsers).
Also see [jQuery's browser bug workarounds](https://docs.google.com/document/d/1LPaPA30bLUB_publLIMF0RlhdnPx_ePXm7oW02iiT6o).
See also:
* [Chromium issue 536263: [meta] Issues affecting Bootstrap](https://code.google.com/p/chromium/issues/detail?id=536263)
* [jQuery's browser bug workarounds](https://docs.google.com/document/d/1LPaPA30bLUB_publLIMF0RlhdnPx_ePXm7oW02iiT6o)
<div class="table-responsive">
<table class="bd-browser-bugs table table-bordered table-hover">
<thead>
<tr>
<th>Browser(s)</th>
<th>Summary of bug</th>
<th>Upstream bug(s)</th>
<th>Bootstrap issue(s)</th>
</tr>
</thead>
<tbody>
{% for bug in site.data.browser-bugs %}
<tr>
<td>{{ bug.browser }}</td>
<td>{{ bug.summary | markdownify | bugify }}</td>
<td>{{ bug.upstream_bug | bugify }}</td>
<td>{{ bug.origin | bugify }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>

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