mirror of
https://github.com/jasny/bootstrap.git
synced 2026-04-24 03:00:49 -04:00
Compare commits
133 Commits
revert-393
...
Two_menu_n
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
96439c033a | ||
|
|
38ac65da4d | ||
|
|
df158261a2 | ||
|
|
ace5226662 | ||
|
|
43390dc347 | ||
|
|
ed0610ff45 | ||
|
|
2da61eebb4 | ||
|
|
a6d8cb29cd | ||
|
|
c4cd39eb24 | ||
|
|
4a75156ef8 | ||
|
|
694e44a406 | ||
|
|
bd1a44d5c6 | ||
|
|
50e0bb26b8 | ||
|
|
315bb40a00 | ||
|
|
b146864f9f | ||
|
|
fadafb57fe | ||
|
|
ce2df76a0c | ||
|
|
cad9c2be5a | ||
|
|
4f77865657 | ||
|
|
ff0d5ad444 | ||
|
|
ce4a5a1dcb | ||
|
|
e19cb28ec3 | ||
|
|
ceb0388349 | ||
|
|
64d1920836 | ||
|
|
018a5c8f09 | ||
|
|
983f04b484 | ||
|
|
6fdfd0d6fa | ||
|
|
b64f125f57 | ||
|
|
c34685e41f | ||
|
|
39ce3c3ee7 | ||
|
|
894ee1959a | ||
|
|
3ec96e91a7 | ||
|
|
04e9dd64b7 | ||
|
|
83fe5fa24b | ||
|
|
3fa58b4b84 | ||
|
|
0fff1e3894 | ||
|
|
dd5d98cccf | ||
|
|
867cb3ee05 | ||
|
|
c733e5a3e1 | ||
|
|
86b725b4b9 | ||
|
|
78b6db8620 | ||
|
|
bce672735b | ||
|
|
4e9aa011e9 | ||
|
|
ec36d74282 | ||
|
|
c04030c966 | ||
|
|
342a820ae0 | ||
|
|
8a926ef4fd | ||
|
|
cdf21df7bc | ||
|
|
4f4129fc00 | ||
|
|
656f3b6d7c | ||
|
|
bdef62d9a4 | ||
|
|
d8229465e3 | ||
|
|
b07d756261 | ||
|
|
53e07863ee | ||
|
|
a1854f43dd | ||
|
|
a00bd86456 | ||
|
|
7cdd06b24f | ||
|
|
1d5dca063e | ||
|
|
d7805a4a6b | ||
|
|
51ae080201 | ||
|
|
9830085c54 | ||
|
|
dc0da4d806 | ||
|
|
b4e9b58d05 | ||
|
|
90ea51f3af | ||
|
|
06a25dd47e | ||
|
|
4879b5465a | ||
|
|
7afeefdcd9 | ||
|
|
8b2b6b05a1 | ||
|
|
36cfc19cc5 | ||
|
|
4066d9dbc7 | ||
|
|
70232906c2 | ||
|
|
9ab27cddf2 | ||
|
|
6cf7891ed8 | ||
|
|
03368d27fe | ||
|
|
25b0442234 | ||
|
|
76b91df9a4 | ||
|
|
cdee0c4bf1 | ||
|
|
b16251c47c | ||
|
|
4b5f033d46 | ||
|
|
4b7285346a | ||
|
|
aced3f383d | ||
|
|
06251c5733 | ||
|
|
0013f7af79 | ||
|
|
6b71c9f9af | ||
|
|
60cc232172 | ||
|
|
dc06e4e935 | ||
|
|
6d42b2ae68 | ||
|
|
32776b61e7 | ||
|
|
a60257d123 | ||
|
|
ff9991ceac | ||
|
|
b785791bfa | ||
|
|
16a8d70a67 | ||
|
|
1ee0865acd | ||
|
|
5f27188f69 | ||
|
|
a4f103ddde | ||
|
|
f095e50394 | ||
|
|
04ab9af0fb | ||
|
|
a1c4a672dd | ||
|
|
ddece62a51 | ||
|
|
502b0c9d3e | ||
|
|
cae5798d8f | ||
|
|
e54f0dcc30 | ||
|
|
c34f648479 | ||
|
|
6d18413346 | ||
|
|
0c61d937d1 | ||
|
|
d3044d67f0 | ||
|
|
b18bed6237 | ||
|
|
119508c28b | ||
|
|
e096e63441 | ||
|
|
74313102ea | ||
|
|
7d915698a4 | ||
|
|
1d7b2a6c0a | ||
|
|
e58ba7f3d2 | ||
|
|
1fb2ef8ab6 | ||
|
|
25cc9b6ff5 | ||
|
|
97e2d4ad48 | ||
|
|
8900005a96 | ||
|
|
ba08673672 | ||
|
|
ba75c1732e | ||
|
|
e4be342ee6 | ||
|
|
feea0e59b5 | ||
|
|
e5c67d158f | ||
|
|
06b88f8f34 | ||
|
|
a527039e86 | ||
|
|
0e75e9562e | ||
|
|
42ab5a464f | ||
|
|
27aa305f1f | ||
|
|
6191dadc66 | ||
|
|
d8aaaf8e96 | ||
|
|
9e5683c79a | ||
|
|
9f325228bc | ||
|
|
5c2e463d13 | ||
|
|
decb890084 |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -1,8 +1,10 @@
|
||||
# Ignore docs files
|
||||
_gh_pages
|
||||
_site
|
||||
dist
|
||||
.ruby-version
|
||||
|
||||
|
||||
# Numerous always-ignore extensions
|
||||
*.diff
|
||||
*.err
|
||||
|
||||
46
.npmignore
Normal file
46
.npmignore
Normal file
@@ -0,0 +1,46 @@
|
||||
# Ignore docs files
|
||||
_gh_pages
|
||||
_site
|
||||
.ruby-version
|
||||
|
||||
#ignore dist zip and gz files
|
||||
/dist/jasny-bootstrap-*.zip
|
||||
/dist/jasny-bootstrap-*.tar.gz
|
||||
|
||||
# Numerous always-ignore extensions
|
||||
*.diff
|
||||
*.err
|
||||
*.orig
|
||||
*.log
|
||||
*.rej
|
||||
*.swo
|
||||
*.swp
|
||||
*.zip
|
||||
*.vi
|
||||
*~
|
||||
|
||||
# OS or Editor folders
|
||||
.DS_Store
|
||||
._*
|
||||
Thumbs.db
|
||||
.cache
|
||||
.project
|
||||
.settings
|
||||
.tmproj
|
||||
*.esproj
|
||||
nbproject
|
||||
*.sublime-project
|
||||
*.sublime-workspace
|
||||
.idea
|
||||
|
||||
# Komodo
|
||||
*.komodoproject
|
||||
.komodotools
|
||||
|
||||
# grunt-html-validation
|
||||
validation-status.json
|
||||
validation-report.json
|
||||
|
||||
# Folders to ignore
|
||||
bower_components
|
||||
node_modules
|
||||
47
.travis.yml
47
.travis.yml
@@ -1,17 +1,46 @@
|
||||
language: node_js
|
||||
node_js:
|
||||
- "0.10"
|
||||
- '4'
|
||||
before_install:
|
||||
- sudo pip install --use-mirrors -r test-infra/requirements.txt
|
||||
- rvm use 1.9.3 --fuzzy
|
||||
#- rvm install 2.2.2
|
||||
#- rvm use 2.2.2 --fuzzy
|
||||
install:
|
||||
- npm install -g grunt-cli
|
||||
- npm install
|
||||
- gem install jekyll html-proofer
|
||||
- npm install -g grunt-cli
|
||||
- npm install
|
||||
env:
|
||||
matrix:
|
||||
- TWBS_TEST=core
|
||||
- TWBS_TEST=validate-html
|
||||
- TWBS_TEST=sauce-js-unit
|
||||
- TWBS_TEST=core
|
||||
- TWBS_TEST=validate-html
|
||||
matrix:
|
||||
fast_finish: true
|
||||
|
||||
after_success:
|
||||
- grunt dist
|
||||
- cd dist;
|
||||
- zip -r jasny-bootstrap-${TRAVIS_TAG}.zip *
|
||||
- tar -zcvf jasny-bootstrap-${TRAVIS_TAG}.tar.gz *
|
||||
- ls
|
||||
- cd ..
|
||||
- git reset --hard
|
||||
- npm --no-git-tag-version version ${TRAVIS_TAG}
|
||||
deploy:
|
||||
- provider: releases
|
||||
api_key:
|
||||
secure: aQNPWNaAg4TaDJrYqtubvyFKFBIoRe08WLhusetTUIGlpmlRm9y+uzp1DzslKVQdoRg6frsvEClMMd4Rh6AMoY+XaTlCu7gKn8tfDfRNJg4BaEklOeZZO/nbSuzh9JRxtWsfZatpzFafgPqpxLCyj4THPu/iD3VquZjNnwnOaXBO9yGuEyGB6CKeBPMeWl2jYHqhROhXmDR5HkI1Kyu6wDXNCcWGkU5PPud1KFRa0HgDW/Ir01lc4wvxt/F3fcfbt6ZbfC4Dc9VkOSV6qJig5qFBDfyBSgcTa/vKsO3n71x1At+EpkUw4HGBqNqAE339ap4fTqR+nIM8b9fFUTtnUf5JngSsaAnWGaLmqK0QhIaeAe7tWny6T9K85pbyp68qJC7EXYswwlg+CIxNR0bQJ7LGJWphHk8TRVtCoGMNX6EZjSZr4E4tXA9BmlQUzRwF9ShABAPgbQq2SgnY7fEiif1xLSkL9sjsZSzjuRY5bkeStkxg3GaKebpvzqOnk1ml9zkDxZCvYoYaGBk+6oKfBrmX8Yef3E61FwpV9h19ZaUr9tv9vzWOiD88SCYDmU3nxIQ2CjZVDX3dg6NiuYeGzdjpwxI8g04jHp2pnwZqxL2Ci23yAX6fbBo+HgjwmNx3hyjDGWIdG0ZzOV86PCBLSO5YtHzag4LmaObu+0Gih+A=
|
||||
file:
|
||||
- dist/jasny-bootstrap-${TRAVIS_TAG}.zip
|
||||
- dist/jasny-bootstrap-${TRAVIS_TAG}.tar.gz
|
||||
skip_cleanup: true
|
||||
on:
|
||||
branch: master
|
||||
repo: jasny/bootstrap
|
||||
tags: true
|
||||
- provider: npm
|
||||
email: arnold@jasny.net
|
||||
api_key:
|
||||
secure: AguJesgWKARxL9bSfIYGCgAc7Itu8BL2HC/6TVQT7HpX+LexyvyEfkJYILGlzwnqw1KdmDC08NVt0gzIqn2PbN3TcPMnJywz9lZZqxSUdnrXj2L+cHEiMsnmV6E30R1eGPG76lRkCchzqLXjONZ6lQx8fWVAIbyeMx2+HiN74RQ=
|
||||
skip_cleanup: true
|
||||
on:
|
||||
branch: master
|
||||
repo: jasny/bootstrap
|
||||
tags: true
|
||||
|
||||
@@ -346,7 +346,7 @@ module.exports = function (grunt) {
|
||||
var testSubtasks = [];
|
||||
// Skip core tests if running a different subset of the test suite
|
||||
if (!process.env.TWBS_TEST || process.env.TWBS_TEST === 'core') {
|
||||
testSubtasks = testSubtasks.concat(['dist-css', 'csslint', 'jshint', 'jscs', 'qunit', 'build-customizer-html']);
|
||||
testSubtasks = testSubtasks.concat(['dist-css', 'csslint', 'jshint', 'qunit', 'build-customizer-html']);
|
||||
}
|
||||
// Skip HTML validation if running a different subset of the test suite
|
||||
if (!process.env.TWBS_TEST || process.env.TWBS_TEST === 'validate-html') {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# [Jasny Bootstrap](http://jasny.github.io/bootstrap/)  [](http://travis-ci.org/jasny/bootstrap) [](https://gitter.im/jasny/bootstrap?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||
# [Jasny Bootstrap](http://jasny.github.io/bootstrap/)
|
||||
|
||||
Jasny Bootstrap is an extension of the famous [Bootstrap](http://getbootstrap.com/), adding the following components:
|
||||
|
||||
@@ -148,9 +148,10 @@ __The major version will follow Bootstrap's major version. This means backward c
|
||||
|
||||
**Arnold Daniels**
|
||||
|
||||
+ [http://twitter.com/ArnoldDaniels](http://twitter.com/ArnoldDaniels)
|
||||
+ [http://github.com/jasny](http://github.com/jasny)
|
||||
+ [http://jasny.net](http://jasny.net)
|
||||
+ [twitter.com/ArnoldDaniels](https://twitter.com/ArnoldDaniels)
|
||||
+ [github.com/jasny](https://github.com/jasny)
|
||||
+ [jasny.net](http://jasny.net)
|
||||
+ [fiestainfo.com](https://www.fiestainfo.com)
|
||||
|
||||
|
||||
## Copyright and license
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Dependencies
|
||||
markdown: rdiscount
|
||||
pygments: true
|
||||
highlighter: true
|
||||
|
||||
# Permalinks
|
||||
permalink: pretty
|
||||
|
||||
626
dist/css/jasny-bootstrap.css
vendored
626
dist/css/jasny-bootstrap.css
vendored
@@ -1,626 +0,0 @@
|
||||
/*!
|
||||
* Jasny Bootstrap v3.1.3 (http://jasny.github.io/bootstrap)
|
||||
* Copyright 2012-2015 Arnold Daniels
|
||||
* Licensed under Apache-2.0 (https://github.com/jasny/bootstrap/blob/master/LICENSE)
|
||||
*/
|
||||
|
||||
.container-smooth {
|
||||
max-width: 1170px;
|
||||
}
|
||||
@media (min-width: 1px) {
|
||||
.container-smooth {
|
||||
width: auto;
|
||||
}
|
||||
}
|
||||
.btn-labeled {
|
||||
padding-top: 0;
|
||||
padding-bottom: 0;
|
||||
}
|
||||
.btn-label {
|
||||
position: relative;
|
||||
left: -12px;
|
||||
display: inline-block;
|
||||
padding: 6px 12px;
|
||||
background: transparent;
|
||||
background: rgba(0, 0, 0, .15);
|
||||
border-radius: 3px 0 0 3px;
|
||||
}
|
||||
.btn-label.btn-label-right {
|
||||
right: -12px;
|
||||
left: auto;
|
||||
border-radius: 0 3px 3px 0;
|
||||
}
|
||||
.btn-lg .btn-label {
|
||||
left: -16px;
|
||||
padding: 10px 16px;
|
||||
border-radius: 5px 0 0 5px;
|
||||
}
|
||||
.btn-lg .btn-label.btn-label-right {
|
||||
right: -16px;
|
||||
left: auto;
|
||||
border-radius: 0 5px 5px 0;
|
||||
}
|
||||
.btn-sm .btn-label {
|
||||
left: -10px;
|
||||
padding: 5px 10px;
|
||||
border-radius: 2px 0 0 2px;
|
||||
}
|
||||
.btn-sm .btn-label.btn-label-right {
|
||||
right: -10px;
|
||||
left: auto;
|
||||
border-radius: 0 2px 2px 0;
|
||||
}
|
||||
.btn-xs .btn-label {
|
||||
left: -5px;
|
||||
padding: 1px 5px;
|
||||
border-radius: 2px 0 0 2px;
|
||||
}
|
||||
.btn-xs .btn-label.btn-label-right {
|
||||
right: -5px;
|
||||
left: auto;
|
||||
border-radius: 0 2px 2px 0;
|
||||
}
|
||||
.btn-group > .btn:last-child:not(:first-child) .btn-label,
|
||||
.btn-group > .dropdown-toggle:not(:first-child) .btn-label {
|
||||
border-top-left-radius: 0;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
.nav-tabs-bottom {
|
||||
border-top: 1px solid #ddd;
|
||||
border-bottom: 0;
|
||||
}
|
||||
.nav-tabs-bottom > li {
|
||||
margin-top: -1px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.nav-tabs-bottom > li > a {
|
||||
border-radius: 0 0 4px 4px;
|
||||
}
|
||||
.nav-tabs-bottom > li > a:hover,
|
||||
.nav-tabs-bottom > li > a:focus,
|
||||
.nav-tabs-bottom > li.active > a,
|
||||
.nav-tabs-bottom > li.active > a:hover,
|
||||
.nav-tabs-bottom > li.active > a:focus {
|
||||
border: 1px solid #ddd;
|
||||
border-top-color: transparent;
|
||||
}
|
||||
.nav-tabs-left {
|
||||
border-right: 1px solid #ddd;
|
||||
border-bottom: 0;
|
||||
}
|
||||
.nav-tabs-left > li {
|
||||
float: none;
|
||||
margin-right: -1px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.nav-tabs-left > li > a {
|
||||
margin-right: 0;
|
||||
margin-bottom: 2px;
|
||||
border-radius: 4px 0 0 4px;
|
||||
}
|
||||
.nav-tabs-left > li > a:hover,
|
||||
.nav-tabs-left > li > a:focus,
|
||||
.nav-tabs-left > li.active > a,
|
||||
.nav-tabs-left > li.active > a:hover,
|
||||
.nav-tabs-left > li.active > a:focus {
|
||||
border: 1px solid #ddd;
|
||||
border-right-color: transparent;
|
||||
}
|
||||
.row > .nav-tabs-left {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
padding-right: 0;
|
||||
padding-left: 15px;
|
||||
margin-right: -1px;
|
||||
}
|
||||
.row > .nav-tabs-left + .tab-content {
|
||||
border-left: 1px solid #ddd;
|
||||
}
|
||||
.nav-tabs-right {
|
||||
border-bottom: 0;
|
||||
border-left: 1px solid #ddd;
|
||||
}
|
||||
.nav-tabs-right > li {
|
||||
float: none;
|
||||
margin-bottom: 0;
|
||||
margin-left: -1px;
|
||||
}
|
||||
.nav-tabs-right > li > a {
|
||||
margin-bottom: 2px;
|
||||
margin-left: 0;
|
||||
border-radius: 0 4px 4px 0;
|
||||
}
|
||||
.nav-tabs-right > li > a:hover,
|
||||
.nav-tabs-right > li > a:focus,
|
||||
.nav-tabs-right > li.active > a,
|
||||
.nav-tabs-right > li.active > a:hover,
|
||||
.nav-tabs-right > li.active > a:focus {
|
||||
border: 1px solid #ddd;
|
||||
border-left-color: transparent;
|
||||
}
|
||||
.row > .nav-tabs-right {
|
||||
padding-right: 15px;
|
||||
padding-left: 0;
|
||||
}
|
||||
.navmenu,
|
||||
.navbar-offcanvas {
|
||||
width: 300px;
|
||||
height: auto;
|
||||
border-style: solid;
|
||||
border-width: 1px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.navmenu-fixed-left,
|
||||
.navmenu-fixed-right,
|
||||
.navbar-offcanvas {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
z-index: 1050;
|
||||
overflow-y: auto;
|
||||
border-radius: 0;
|
||||
}
|
||||
.navmenu-fixed-left,
|
||||
.navbar-offcanvas.navmenu-fixed-left {
|
||||
right: auto;
|
||||
left: 0;
|
||||
border-width: 0 1px 0 0;
|
||||
}
|
||||
.navmenu-fixed-right,
|
||||
.navbar-offcanvas {
|
||||
right: 0;
|
||||
left: auto;
|
||||
border-width: 0 0 0 1px;
|
||||
}
|
||||
.navmenu-nav {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.navmenu-nav.dropdown-menu {
|
||||
position: static;
|
||||
float: none;
|
||||
padding-top: 0;
|
||||
margin: 0;
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
.navbar-offcanvas .navbar-nav {
|
||||
margin: 0;
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.navbar-offcanvas {
|
||||
width: auto;
|
||||
border-top: 0;
|
||||
box-shadow: none;
|
||||
}
|
||||
.navbar-offcanvas.offcanvas {
|
||||
position: static;
|
||||
display: block !important;
|
||||
height: auto !important;
|
||||
padding-bottom: 0;
|
||||
overflow: visible !important;
|
||||
}
|
||||
.navbar-offcanvas .navbar-nav.navbar-left:first-child {
|
||||
margin-left: -15px;
|
||||
}
|
||||
.navbar-offcanvas .navbar-nav.navbar-right:last-child {
|
||||
margin-right: -15px;
|
||||
}
|
||||
.navbar-offcanvas .navmenu-brand {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
.navmenu-brand {
|
||||
display: block;
|
||||
padding: 10px 15px;
|
||||
margin: 10px 0;
|
||||
font-size: 18px;
|
||||
line-height: 20px;
|
||||
}
|
||||
.navmenu-brand:hover,
|
||||
.navmenu-brand:focus {
|
||||
text-decoration: none;
|
||||
}
|
||||
.navmenu-default,
|
||||
.navbar-default .navbar-offcanvas {
|
||||
background-color: #f8f8f8;
|
||||
border-color: #e7e7e7;
|
||||
}
|
||||
.navmenu-default .navmenu-brand,
|
||||
.navbar-default .navbar-offcanvas .navmenu-brand {
|
||||
color: #777;
|
||||
}
|
||||
.navmenu-default .navmenu-brand:hover,
|
||||
.navbar-default .navbar-offcanvas .navmenu-brand:hover,
|
||||
.navmenu-default .navmenu-brand:focus,
|
||||
.navbar-default .navbar-offcanvas .navmenu-brand:focus {
|
||||
color: #5e5e5e;
|
||||
background-color: transparent;
|
||||
}
|
||||
.navmenu-default .navmenu-text,
|
||||
.navbar-default .navbar-offcanvas .navmenu-text {
|
||||
color: #777;
|
||||
}
|
||||
.navmenu-default .navmenu-nav > .dropdown > a:hover .caret,
|
||||
.navbar-default .navbar-offcanvas .navmenu-nav > .dropdown > a:hover .caret,
|
||||
.navmenu-default .navmenu-nav > .dropdown > a:focus .caret,
|
||||
.navbar-default .navbar-offcanvas .navmenu-nav > .dropdown > a:focus .caret {
|
||||
border-top-color: #333;
|
||||
border-bottom-color: #333;
|
||||
}
|
||||
.navmenu-default .navmenu-nav > .open > a,
|
||||
.navbar-default .navbar-offcanvas .navmenu-nav > .open > a,
|
||||
.navmenu-default .navmenu-nav > .open > a:hover,
|
||||
.navbar-default .navbar-offcanvas .navmenu-nav > .open > a:hover,
|
||||
.navmenu-default .navmenu-nav > .open > a:focus,
|
||||
.navbar-default .navbar-offcanvas .navmenu-nav > .open > a:focus {
|
||||
color: #555;
|
||||
background-color: #e7e7e7;
|
||||
}
|
||||
.navmenu-default .navmenu-nav > .open > a .caret,
|
||||
.navbar-default .navbar-offcanvas .navmenu-nav > .open > a .caret,
|
||||
.navmenu-default .navmenu-nav > .open > a:hover .caret,
|
||||
.navbar-default .navbar-offcanvas .navmenu-nav > .open > a:hover .caret,
|
||||
.navmenu-default .navmenu-nav > .open > a:focus .caret,
|
||||
.navbar-default .navbar-offcanvas .navmenu-nav > .open > a:focus .caret {
|
||||
border-top-color: #555;
|
||||
border-bottom-color: #555;
|
||||
}
|
||||
.navmenu-default .navmenu-nav > .dropdown > a .caret,
|
||||
.navbar-default .navbar-offcanvas .navmenu-nav > .dropdown > a .caret {
|
||||
border-top-color: #777;
|
||||
border-bottom-color: #777;
|
||||
}
|
||||
.navmenu-default .navmenu-nav.dropdown-menu,
|
||||
.navbar-default .navbar-offcanvas .navmenu-nav.dropdown-menu {
|
||||
background-color: #e7e7e7;
|
||||
}
|
||||
.navmenu-default .navmenu-nav.dropdown-menu > .divider,
|
||||
.navbar-default .navbar-offcanvas .navmenu-nav.dropdown-menu > .divider {
|
||||
background-color: #f8f8f8;
|
||||
}
|
||||
.navmenu-default .navmenu-nav.dropdown-menu > .active > a,
|
||||
.navbar-default .navbar-offcanvas .navmenu-nav.dropdown-menu > .active > a,
|
||||
.navmenu-default .navmenu-nav.dropdown-menu > .active > a:hover,
|
||||
.navbar-default .navbar-offcanvas .navmenu-nav.dropdown-menu > .active > a:hover,
|
||||
.navmenu-default .navmenu-nav.dropdown-menu > .active > a:focus,
|
||||
.navbar-default .navbar-offcanvas .navmenu-nav.dropdown-menu > .active > a:focus {
|
||||
background-color: #d7d7d7;
|
||||
}
|
||||
.navmenu-default .navmenu-nav > li > a,
|
||||
.navbar-default .navbar-offcanvas .navmenu-nav > li > a {
|
||||
color: #777;
|
||||
}
|
||||
.navmenu-default .navmenu-nav > li > a:hover,
|
||||
.navbar-default .navbar-offcanvas .navmenu-nav > li > a:hover,
|
||||
.navmenu-default .navmenu-nav > li > a:focus,
|
||||
.navbar-default .navbar-offcanvas .navmenu-nav > li > a:focus {
|
||||
color: #333;
|
||||
background-color: transparent;
|
||||
}
|
||||
.navmenu-default .navmenu-nav > .active > a,
|
||||
.navbar-default .navbar-offcanvas .navmenu-nav > .active > a,
|
||||
.navmenu-default .navmenu-nav > .active > a:hover,
|
||||
.navbar-default .navbar-offcanvas .navmenu-nav > .active > a:hover,
|
||||
.navmenu-default .navmenu-nav > .active > a:focus,
|
||||
.navbar-default .navbar-offcanvas .navmenu-nav > .active > a:focus {
|
||||
color: #555;
|
||||
background-color: #e7e7e7;
|
||||
}
|
||||
.navmenu-default .navmenu-nav > .disabled > a,
|
||||
.navbar-default .navbar-offcanvas .navmenu-nav > .disabled > a,
|
||||
.navmenu-default .navmenu-nav > .disabled > a:hover,
|
||||
.navbar-default .navbar-offcanvas .navmenu-nav > .disabled > a:hover,
|
||||
.navmenu-default .navmenu-nav > .disabled > a:focus,
|
||||
.navbar-default .navbar-offcanvas .navmenu-nav > .disabled > a:focus {
|
||||
color: #ccc;
|
||||
background-color: transparent;
|
||||
}
|
||||
.navmenu-inverse,
|
||||
.navbar-inverse .navbar-offcanvas {
|
||||
background-color: #222;
|
||||
border-color: #080808;
|
||||
}
|
||||
.navmenu-inverse .navmenu-brand,
|
||||
.navbar-inverse .navbar-offcanvas .navmenu-brand {
|
||||
color: #999;
|
||||
}
|
||||
.navmenu-inverse .navmenu-brand:hover,
|
||||
.navbar-inverse .navbar-offcanvas .navmenu-brand:hover,
|
||||
.navmenu-inverse .navmenu-brand:focus,
|
||||
.navbar-inverse .navbar-offcanvas .navmenu-brand:focus {
|
||||
color: #fff;
|
||||
background-color: transparent;
|
||||
}
|
||||
.navmenu-inverse .navmenu-text,
|
||||
.navbar-inverse .navbar-offcanvas .navmenu-text {
|
||||
color: #999;
|
||||
}
|
||||
.navmenu-inverse .navmenu-nav > .dropdown > a:hover .caret,
|
||||
.navbar-inverse .navbar-offcanvas .navmenu-nav > .dropdown > a:hover .caret,
|
||||
.navmenu-inverse .navmenu-nav > .dropdown > a:focus .caret,
|
||||
.navbar-inverse .navbar-offcanvas .navmenu-nav > .dropdown > a:focus .caret {
|
||||
border-top-color: #fff;
|
||||
border-bottom-color: #fff;
|
||||
}
|
||||
.navmenu-inverse .navmenu-nav > .open > a,
|
||||
.navbar-inverse .navbar-offcanvas .navmenu-nav > .open > a,
|
||||
.navmenu-inverse .navmenu-nav > .open > a:hover,
|
||||
.navbar-inverse .navbar-offcanvas .navmenu-nav > .open > a:hover,
|
||||
.navmenu-inverse .navmenu-nav > .open > a:focus,
|
||||
.navbar-inverse .navbar-offcanvas .navmenu-nav > .open > a:focus {
|
||||
color: #fff;
|
||||
background-color: #080808;
|
||||
}
|
||||
.navmenu-inverse .navmenu-nav > .open > a .caret,
|
||||
.navbar-inverse .navbar-offcanvas .navmenu-nav > .open > a .caret,
|
||||
.navmenu-inverse .navmenu-nav > .open > a:hover .caret,
|
||||
.navbar-inverse .navbar-offcanvas .navmenu-nav > .open > a:hover .caret,
|
||||
.navmenu-inverse .navmenu-nav > .open > a:focus .caret,
|
||||
.navbar-inverse .navbar-offcanvas .navmenu-nav > .open > a:focus .caret {
|
||||
border-top-color: #fff;
|
||||
border-bottom-color: #fff;
|
||||
}
|
||||
.navmenu-inverse .navmenu-nav > .dropdown > a .caret,
|
||||
.navbar-inverse .navbar-offcanvas .navmenu-nav > .dropdown > a .caret {
|
||||
border-top-color: #999;
|
||||
border-bottom-color: #999;
|
||||
}
|
||||
.navmenu-inverse .navmenu-nav.dropdown-menu,
|
||||
.navbar-inverse .navbar-offcanvas .navmenu-nav.dropdown-menu {
|
||||
background-color: #080808;
|
||||
}
|
||||
.navmenu-inverse .navmenu-nav.dropdown-menu > .divider,
|
||||
.navbar-inverse .navbar-offcanvas .navmenu-nav.dropdown-menu > .divider {
|
||||
background-color: #222;
|
||||
}
|
||||
.navmenu-inverse .navmenu-nav.dropdown-menu > .active > a,
|
||||
.navbar-inverse .navbar-offcanvas .navmenu-nav.dropdown-menu > .active > a,
|
||||
.navmenu-inverse .navmenu-nav.dropdown-menu > .active > a:hover,
|
||||
.navbar-inverse .navbar-offcanvas .navmenu-nav.dropdown-menu > .active > a:hover,
|
||||
.navmenu-inverse .navmenu-nav.dropdown-menu > .active > a:focus,
|
||||
.navbar-inverse .navbar-offcanvas .navmenu-nav.dropdown-menu > .active > a:focus {
|
||||
background-color: #000;
|
||||
}
|
||||
.navmenu-inverse .navmenu-nav > li > a,
|
||||
.navbar-inverse .navbar-offcanvas .navmenu-nav > li > a {
|
||||
color: #999;
|
||||
}
|
||||
.navmenu-inverse .navmenu-nav > li > a:hover,
|
||||
.navbar-inverse .navbar-offcanvas .navmenu-nav > li > a:hover,
|
||||
.navmenu-inverse .navmenu-nav > li > a:focus,
|
||||
.navbar-inverse .navbar-offcanvas .navmenu-nav > li > a:focus {
|
||||
color: #fff;
|
||||
background-color: transparent;
|
||||
}
|
||||
.navmenu-inverse .navmenu-nav > .active > a,
|
||||
.navbar-inverse .navbar-offcanvas .navmenu-nav > .active > a,
|
||||
.navmenu-inverse .navmenu-nav > .active > a:hover,
|
||||
.navbar-inverse .navbar-offcanvas .navmenu-nav > .active > a:hover,
|
||||
.navmenu-inverse .navmenu-nav > .active > a:focus,
|
||||
.navbar-inverse .navbar-offcanvas .navmenu-nav > .active > a:focus {
|
||||
color: #fff;
|
||||
background-color: #080808;
|
||||
}
|
||||
.navmenu-inverse .navmenu-nav > .disabled > a,
|
||||
.navbar-inverse .navbar-offcanvas .navmenu-nav > .disabled > a,
|
||||
.navmenu-inverse .navmenu-nav > .disabled > a:hover,
|
||||
.navbar-inverse .navbar-offcanvas .navmenu-nav > .disabled > a:hover,
|
||||
.navmenu-inverse .navmenu-nav > .disabled > a:focus,
|
||||
.navbar-inverse .navbar-offcanvas .navmenu-nav > .disabled > a:focus {
|
||||
color: #444;
|
||||
background-color: transparent;
|
||||
}
|
||||
.alert-fixed-top,
|
||||
.alert-fixed-bottom {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
z-index: 1035;
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
@media (min-width: 992px) {
|
||||
.alert-fixed-top,
|
||||
.alert-fixed-bottom {
|
||||
left: 50%;
|
||||
width: 992px;
|
||||
margin-left: -496px;
|
||||
}
|
||||
}
|
||||
.alert-fixed-top {
|
||||
top: 0;
|
||||
border-width: 0 0 1px 0;
|
||||
}
|
||||
@media (min-width: 992px) {
|
||||
.alert-fixed-top {
|
||||
border-width: 0 1px 1px 1px;
|
||||
border-bottom-right-radius: 4px;
|
||||
border-bottom-left-radius: 4px;
|
||||
}
|
||||
}
|
||||
.alert-fixed-bottom {
|
||||
bottom: 0;
|
||||
border-width: 1px 0 0 0;
|
||||
}
|
||||
@media (min-width: 992px) {
|
||||
.alert-fixed-bottom {
|
||||
border-width: 1px 1px 0 1px;
|
||||
border-top-left-radius: 4px;
|
||||
border-top-right-radius: 4px;
|
||||
}
|
||||
}
|
||||
.offcanvas {
|
||||
display: none;
|
||||
}
|
||||
.offcanvas.in {
|
||||
display: block;
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
.offcanvas-xs {
|
||||
display: none;
|
||||
}
|
||||
.offcanvas-xs.in {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
@media (max-width: 991px) {
|
||||
.offcanvas-sm {
|
||||
display: none;
|
||||
}
|
||||
.offcanvas-sm.in {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
@media (max-width: 1199px) {
|
||||
.offcanvas-md {
|
||||
display: none;
|
||||
}
|
||||
.offcanvas-md.in {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
.offcanvas-lg {
|
||||
display: none;
|
||||
}
|
||||
.offcanvas-lg.in {
|
||||
display: block;
|
||||
}
|
||||
.canvas-sliding {
|
||||
-webkit-transition: top .35s, left .35s, bottom .35s, right .35s;
|
||||
transition: top .35s, left .35s, bottom .35s, right .35s;
|
||||
}
|
||||
.offcanvas-clone {
|
||||
position: absolute !important;
|
||||
top: auto !important;
|
||||
right: 0 !important;
|
||||
bottom: 0 !important;
|
||||
left: auto !important;
|
||||
width: 0 !important;
|
||||
height: 0 !important;
|
||||
padding: 0 !important;
|
||||
margin: 0 !important;
|
||||
overflow: hidden !important;
|
||||
border: none !important;
|
||||
opacity: 0 !important;
|
||||
}
|
||||
.table.rowlink td:not(.rowlink-skip),
|
||||
.table .rowlink td:not(.rowlink-skip) {
|
||||
cursor: pointer;
|
||||
}
|
||||
.table.rowlink td:not(.rowlink-skip) a,
|
||||
.table .rowlink td:not(.rowlink-skip) a {
|
||||
font: inherit;
|
||||
color: inherit;
|
||||
text-decoration: inherit;
|
||||
}
|
||||
.table-hover.rowlink tr:hover td,
|
||||
.table-hover .rowlink tr:hover td {
|
||||
background-color: #cfcfcf;
|
||||
}
|
||||
.btn-file {
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.btn-file > input {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: 0;
|
||||
font-size: 23px;
|
||||
cursor: pointer;
|
||||
filter: alpha(opacity=0);
|
||||
opacity: 0;
|
||||
|
||||
direction: ltr;
|
||||
}
|
||||
.fileinput {
|
||||
display: inline-block;
|
||||
margin-bottom: 9px;
|
||||
}
|
||||
.fileinput .form-control {
|
||||
display: inline-block;
|
||||
padding-top: 7px;
|
||||
padding-bottom: 5px;
|
||||
margin-bottom: 0;
|
||||
vertical-align: middle;
|
||||
cursor: text;
|
||||
}
|
||||
.fileinput .thumbnail {
|
||||
display: inline-block;
|
||||
margin-bottom: 5px;
|
||||
overflow: hidden;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.fileinput .thumbnail > img {
|
||||
max-height: 100%;
|
||||
}
|
||||
.fileinput .btn {
|
||||
vertical-align: middle;
|
||||
}
|
||||
.fileinput-exists .fileinput-new,
|
||||
.fileinput-new .fileinput-exists {
|
||||
display: none;
|
||||
}
|
||||
.fileinput-inline .fileinput-controls {
|
||||
display: inline;
|
||||
}
|
||||
.fileinput-filename {
|
||||
display: inline-block;
|
||||
overflow: hidden;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.form-control .fileinput-filename {
|
||||
vertical-align: bottom;
|
||||
}
|
||||
.fileinput.input-group {
|
||||
display: table;
|
||||
}
|
||||
.fileinput.input-group > * {
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
}
|
||||
.fileinput.input-group > .btn-file {
|
||||
z-index: 1;
|
||||
}
|
||||
.fileinput-new.input-group .btn-file,
|
||||
.fileinput-new .input-group .btn-file {
|
||||
border-radius: 0 4px 4px 0;
|
||||
}
|
||||
.fileinput-new.input-group .btn-file.btn-xs,
|
||||
.fileinput-new .input-group .btn-file.btn-xs,
|
||||
.fileinput-new.input-group .btn-file.btn-sm,
|
||||
.fileinput-new .input-group .btn-file.btn-sm {
|
||||
border-radius: 0 3px 3px 0;
|
||||
}
|
||||
.fileinput-new.input-group .btn-file.btn-lg,
|
||||
.fileinput-new .input-group .btn-file.btn-lg {
|
||||
border-radius: 0 6px 6px 0;
|
||||
}
|
||||
.form-group.has-warning .fileinput .fileinput-preview {
|
||||
color: #8a6d3b;
|
||||
}
|
||||
.form-group.has-warning .fileinput .thumbnail {
|
||||
border-color: #faebcc;
|
||||
}
|
||||
.form-group.has-error .fileinput .fileinput-preview {
|
||||
color: #a94442;
|
||||
}
|
||||
.form-group.has-error .fileinput .thumbnail {
|
||||
border-color: #ebccd1;
|
||||
}
|
||||
.form-group.has-success .fileinput .fileinput-preview {
|
||||
color: #3c763d;
|
||||
}
|
||||
.form-group.has-success .fileinput .thumbnail {
|
||||
border-color: #d6e9c6;
|
||||
}
|
||||
.input-group-addon:not(:first-child) {
|
||||
border-left: 0;
|
||||
}
|
||||
/*# sourceMappingURL=jasny-bootstrap.css.map */
|
||||
1
dist/css/jasny-bootstrap.css.map
vendored
1
dist/css/jasny-bootstrap.css.map
vendored
File diff suppressed because one or more lines are too long
7
dist/css/jasny-bootstrap.min.css
vendored
7
dist/css/jasny-bootstrap.min.css
vendored
File diff suppressed because one or more lines are too long
1078
dist/js/jasny-bootstrap.js
vendored
1078
dist/js/jasny-bootstrap.js
vendored
File diff suppressed because it is too large
Load Diff
6
dist/js/jasny-bootstrap.min.js
vendored
6
dist/js/jasny-bootstrap.min.js
vendored
File diff suppressed because one or more lines are too long
@@ -2,7 +2,7 @@
|
||||
================================================== -->
|
||||
<!-- Placed at the end of the document so the pages load faster -->
|
||||
<script src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
|
||||
<script src="//netdna.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
|
||||
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
|
||||
<script src="{{ page.base_url }}dist/js/jasny-bootstrap.min.js"></script>
|
||||
|
||||
<script src="http://platform.twitter.com/widgets.js"></script>
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
</title>
|
||||
|
||||
<!-- Bootstrap core CSS -->
|
||||
<link href="//netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet">
|
||||
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
|
||||
<link href="{{ page.base_url }}dist/css/jasny-bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
<!-- Documentation extras -->
|
||||
|
||||
6
docs/dist/js/jasny-bootstrap.min.js
vendored
6
docs/dist/js/jasny-bootstrap.min.js
vendored
File diff suppressed because one or more lines are too long
@@ -6,19 +6,19 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="description" content="">
|
||||
<meta name="author" content="">
|
||||
<link rel="shortcut icon" href="../../docs-assets/ico/favicon.png">
|
||||
<link rel="shortcut icon" href="../../assets/ico/favicon.png">
|
||||
|
||||
<title>Navbar Template for Bootstrap</title>
|
||||
|
||||
<!-- Bootstrap core CSS -->
|
||||
<link href="//netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet">
|
||||
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
|
||||
<link href="../../dist/css/jasny-bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
<!-- Custom styles for this template -->
|
||||
<link href="navbar-offcanvas.css" rel="stylesheet">
|
||||
|
||||
<!-- Just for debugging purposes. Don't actually copy this line! -->
|
||||
<!--[if lt IE 9]><script src="../../docs-assets/js/ie8-responsive-file-warning.js"></script><![endif]-->
|
||||
<!--[if lt IE 9]><script src="../../assets/js/ie8-responsive-file-warning.js"></script><![endif]-->
|
||||
|
||||
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
||||
<!--[if lt IE 9]>
|
||||
@@ -46,7 +46,7 @@
|
||||
<ul class="nav navbar-nav">
|
||||
<li><a href="../navmenu/">Slide in</a></li>
|
||||
<li><a href="../navmenu-push/">Push</a></li>
|
||||
<li><a href="../navmenu-reveal">Reveal</a></li>
|
||||
<li><a href="../navmenu-reveal/">Reveal</a></li>
|
||||
<li class="active"><a href="./">Off canvas navbar</a></li>
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
|
||||
@@ -69,7 +69,7 @@
|
||||
<h1>Offcanvas Navbar example</h1>
|
||||
<p>This example demonstrates using the offcanvas plugin with the navbar.</p>
|
||||
</div>
|
||||
|
||||
|
||||
<p>
|
||||
By default the navbar is show on the right side of the screen. You can show it on the left side instead by
|
||||
adding <code>.navmenu-fixed-left</code> to the <code>.navbar-offcanvas</code>.
|
||||
@@ -81,7 +81,7 @@
|
||||
================================================== -->
|
||||
<!-- Placed at the end of the document so the pages load faster -->
|
||||
<script src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
|
||||
<script src="//netdna.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
|
||||
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
|
||||
<script src="../../dist/js/jasny-bootstrap.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -10,14 +10,14 @@
|
||||
<title>Off Canvas Push Menu Template for Bootstrap</title>
|
||||
|
||||
<!-- Bootstrap core CSS -->
|
||||
<link href="//netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet">
|
||||
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
|
||||
<link href="../../dist/css/jasny-bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
<!-- Custom styles for this template -->
|
||||
<link href="navmenu-push.css" rel="stylesheet">
|
||||
|
||||
<!-- Just for debugging purposes. Don't actually copy this line! -->
|
||||
<!--[if lt IE 9]><script src="../../docs-assets/js/ie8-responsive-file-warning.js"></script><![endif]-->
|
||||
<!--[if lt IE 9]><script src="../../assets/js/ie8-responsive-file-warning.js"></script><![endif]-->
|
||||
|
||||
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
||||
<!--[if lt IE 9]>
|
||||
@@ -75,7 +75,7 @@
|
||||
================================================== -->
|
||||
<!-- Placed at the end of the document so the pages load faster -->
|
||||
<script src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
|
||||
<script src="//netdna.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
|
||||
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
|
||||
<script src="../../dist/js/jasny-bootstrap.min.js"></script>
|
||||
<script src="../../../js/offcanvas.js"></script>
|
||||
</body>
|
||||
|
||||
@@ -10,14 +10,14 @@
|
||||
<title>Off Canvas Reveal Menu Template for Bootstrap</title>
|
||||
|
||||
<!-- Bootstrap core CSS -->
|
||||
<link href="//netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet">
|
||||
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
|
||||
<link href="../../dist/css/jasny-bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
<!-- Custom styles for this template -->
|
||||
<link href="navmenu-reveal.css" rel="stylesheet">
|
||||
|
||||
<!-- Just for debugging purposes. Don't actually copy this line! -->
|
||||
<!--[if lt IE 9]><script src="../../docs-assets/js/ie8-responsive-file-warning.js"></script><![endif]-->
|
||||
<!--[if lt IE 9]><script src="../../assets/js/ie8-responsive-file-warning.js"></script><![endif]-->
|
||||
|
||||
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
||||
<!--[if lt IE 9]>
|
||||
@@ -74,13 +74,13 @@
|
||||
<p>Also take a look at the examples for a navmenu with <a href="../navmenu">slide in effect</a> and <a href="../navmenu-push">push effect</a>.</p>
|
||||
</div><!-- /.container -->
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!-- Bootstrap core JavaScript
|
||||
================================================== -->
|
||||
<!-- Placed at the end of the document so the pages load faster -->
|
||||
<script src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
|
||||
<script src="//netdna.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
|
||||
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
|
||||
<script src="../../dist/js/jasny-bootstrap.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -10,14 +10,14 @@
|
||||
<title>Navmenu Template for Bootstrap</title>
|
||||
|
||||
<!-- Bootstrap core CSS -->
|
||||
<link href="//netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet">
|
||||
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
|
||||
<link href="../../dist/css/jasny-bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
<!-- Custom styles for this template -->
|
||||
<link href="navmenu.css" rel="stylesheet">
|
||||
|
||||
<!-- Just for debugging purposes. Don't actually copy this line! -->
|
||||
<!--[if lt IE 9]><script src="../../docs-assets/js/ie8-responsive-file-warning.js"></script><![endif]-->
|
||||
<!--[if lt IE 9]><script src="../../assets/js/ie8-responsive-file-warning.js"></script><![endif]-->
|
||||
|
||||
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
||||
<!--[if lt IE 9]>
|
||||
@@ -70,13 +70,13 @@
|
||||
<p class="lead">This example shows the navmenu element. If the viewport is <b>less than 992px</b> the menu will be placed the off canvas and will be shown with a slide in effect.</p>
|
||||
<p>Also take a look at the examples for a navmenu with <a href="../navmenu-push">push effect</a> and <a href="../navmenu-reveal">reveal effect</a>.</p>
|
||||
</div><!-- /.container -->
|
||||
|
||||
|
||||
|
||||
<!-- Bootstrap core JavaScript
|
||||
================================================== -->
|
||||
<!-- Placed at the end of the document so the pages load faster -->
|
||||
<script src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
|
||||
<script src="//netdna.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
|
||||
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
|
||||
<script src="../../dist/js/jasny-bootstrap.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -6,19 +6,19 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="description" content="">
|
||||
<meta name="author" content="">
|
||||
<link rel="shortcut icon" href="../../docs-assets/ico/favicon.png">
|
||||
<link rel="shortcut icon" href="../../assets/ico/favicon.png">
|
||||
|
||||
<title>Starter Template for Bootstrap</title>
|
||||
|
||||
<!-- Bootstrap core CSS -->
|
||||
<link href="//netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet">
|
||||
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
|
||||
<link href="../../dist/css/jasny-bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
<!-- Custom styles for this template -->
|
||||
<link href="starter-template.css" rel="stylesheet">
|
||||
|
||||
<!-- Just for debugging purposes. Don't actually copy this line! -->
|
||||
<!--[if lt IE 9]><script src="../../docs-assets/js/ie8-responsive-file-warning.js"></script><![endif]-->
|
||||
<!--[if lt IE 9]><script src="../../assets/js/ie8-responsive-file-warning.js"></script><![endif]-->
|
||||
|
||||
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
||||
<!--[if lt IE 9]>
|
||||
@@ -63,7 +63,7 @@
|
||||
================================================== -->
|
||||
<!-- Placed at the end of the document so the pages load faster -->
|
||||
<script src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
|
||||
<script src="//netdna.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
|
||||
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
|
||||
<script src="../../dist/js/jasny-bootstrap.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -17,7 +17,7 @@ base_url: "../"
|
||||
<h3 id="js-individual-compiled">Individual or compiled</h3>
|
||||
<p>Plugins can be included individually (using Jasny Bootstrap's individual <code>*.js</code> files), or all at once (using <code>jasny-bootstrap.js</code> or the minified <code>jasny-bootstrap.min.js</code>).</p>
|
||||
<p>The Jasny Bootstrap plugins work with or without loading vanilla Bootstrap's <code>bootstrap.js</code>.</p>
|
||||
|
||||
|
||||
<div class="bs-callout bs-callout-danger">
|
||||
<h4>Do not attempt to include both.</h4>
|
||||
<p>Both <code>jasny-bootstrap.js</code> and <code>jasny-bootstrap.min.js</code> contain all plugins in a single file.</p>
|
||||
@@ -69,7 +69,7 @@ $('#myMenu').on('show.bs.offcanvas', function (e) {
|
||||
{% endhighlight %}
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!-- Off canvas
|
||||
================================================== -->
|
||||
<div class="bs-docs-section">
|
||||
@@ -128,7 +128,7 @@ $('#myMenu').on('show.bs.offcanvas', function (e) {
|
||||
<p>Add <code>.offcanvas</code> to hide an element. Alternatively add <code>.offcanvas-*</code> to hide an element up to a specific viewport width. Adding the <code>.offcanvas</code> class is not required. You may also hide an element by any other means.</p>
|
||||
<p>The effect works best for elements positioned to the top, bottom, left or right of the window, either with absolute or fixed positioning.</p>
|
||||
<p>When shown, the plugin adds <code>.canvas-slid</code> to the element that has slid.</p>
|
||||
|
||||
|
||||
<h3>Via data attributes</h3>
|
||||
<p>Add <code>data-toggle="offcanvas"</code> and a <code>data-target</code> to control, assigning it to show and hide the target element. The <code>data-target</code> attribute accepts a CSS selector to apply the collapse to.</p>
|
||||
<p>Optionally add a <code>data-canvas</code> attribute to slide a canvas instead of only the target element. For a push menu set <code>data-canvas="body"</code>.
|
||||
@@ -180,6 +180,12 @@ $('.navmenu').offcanvas()
|
||||
<td>true</td>
|
||||
<td>Calculate if off canvas should be disabled for this viewport width on window resize. If your elements always gets hidden on window resize, try setting this to false.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>exclude</td>
|
||||
<td>string</td>
|
||||
<td>null</td>
|
||||
<td>Set css selectors for elements, that have fixed positioning and that should not be moved when showing\hiding menu.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>disableScrolling</td>
|
||||
<td>boolean</td>
|
||||
@@ -188,12 +194,15 @@ $('.navmenu').offcanvas()
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
<div class="bs-callout bs-callout-danger">
|
||||
<h4>Graceful degradation</h4>
|
||||
<p>For browsers that don't support transform (mainly IE8), the <code>target</code> option is ignored. In that case, the plugin will always slide the target element. In that case <code>.canvas-slid</code> will be added to the target element instead.</p>
|
||||
</div>
|
||||
|
||||
|
||||
<h3>Two menus on the page</h3>
|
||||
|
||||
<p>If there are two (or more) menus on the page, there can be only one opened at a time. When menu attempts to be opened, already opened one will be closed first. It's almost fully automated, accept that <code>data-exclude</code> option should be set for each menu, holding references to other menus. For example, if we have two menus <code>#menu-left</code> and <code>#menu-right</code>, then they should have the following option set, correspondingly: <code>data-exclude="#menu-right"</code> and <code>data-exclude="#menu-left"</code>.</p>
|
||||
|
||||
<h3>Methods</h3>
|
||||
<h4>.offcanvas(options)</h4>
|
||||
@@ -204,7 +213,7 @@ $('.navmenu').offcanvas()
|
||||
<p>Shows an off canvas element.</p>
|
||||
<h4>.offcanvas('hide')</h4>
|
||||
<p>Hides an off canvas element.</p>
|
||||
|
||||
|
||||
<h3>Events</h3>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-striped">
|
||||
@@ -332,7 +341,7 @@ $('tbody.rowlink').rowlink()
|
||||
|
||||
<h2 id="inputmask-examples">Example</h2>
|
||||
<p>Input masks can be used to force the user to enter data conform a specific format. Unlike validation, the user can't enter any other key than the ones specified by the mask.</p>
|
||||
|
||||
|
||||
<div class="bs-example">
|
||||
<input type="text" class="form-control" data-mask="999-99-999-9999-9" placeholder="ISBN">
|
||||
</div>
|
||||
@@ -387,7 +396,7 @@ $('.inputmask').inputmask({
|
||||
|
||||
<h3>Format</h3>
|
||||
<p>Each typed character needs to match exactly one character in the <code>mask</code> option.</p>
|
||||
|
||||
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-striped">
|
||||
<thead>
|
||||
@@ -404,13 +413,13 @@ $('.inputmask').inputmask({
|
||||
</div>
|
||||
|
||||
<h3>Methods</h3>
|
||||
|
||||
|
||||
<h4>.inputmask(options)</h4>
|
||||
<p>Initializes an input element with an input mask.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- File input
|
||||
================================================== -->
|
||||
<div class="bs-docs-section bs-jasny">
|
||||
@@ -425,28 +434,28 @@ $('.inputmask').inputmask({
|
||||
<div class="bs-example">
|
||||
<div class="fileinput fileinput-new input-group" data-provides="fileinput">
|
||||
<div class="form-control" data-trigger="fileinput"><i class="glyphicon glyphicon-file fileinput-exists"></i> <span class="fileinput-filename"></span></div>
|
||||
<span class="input-group-addon btn btn-default btn-file"><span class="fileinput-new">Select file</span><span class="fileinput-exists">Change</span><input type="file"></span>
|
||||
<span class="input-group-addon btn btn-default btn-file"><span class="fileinput-new">Select file</span><span class="fileinput-exists">Change</span><input type="file" multiple></span>
|
||||
<a href="#" class="input-group-addon btn btn-default fileinput-exists" data-dismiss="fileinput">Remove</a>
|
||||
</div>
|
||||
</div>
|
||||
{% highlight html %}
|
||||
<div class="fileinput fileinput-new input-group" data-provides="fileinput">
|
||||
<div class="form-control" data-trigger="fileinput"><i class="glyphicon glyphicon-file fileinput-exists"></i> <span class="fileinput-filename"></span></div>
|
||||
<span class="input-group-addon btn btn-default btn-file"><span class="fileinput-new">Select file</span><span class="fileinput-exists">Change</span><input type="file" name="..."></span>
|
||||
<span class="input-group-addon btn btn-default btn-file"><span class="fileinput-new">Select file</span><span class="fileinput-exists">Change</span><input type="file" name="..." multiple></span>
|
||||
<a href="#" class="input-group-addon btn btn-default fileinput-exists" data-dismiss="fileinput">Remove</a>
|
||||
</div>
|
||||
{% endhighlight %}
|
||||
|
||||
<div class="bs-example">
|
||||
<div class="fileinput fileinput-new" data-provides="fileinput">
|
||||
<span class="btn btn-default btn-file"><span class="fileinput-new">Select file</span><span class="fileinput-exists">Change</span><input type="file"></span>
|
||||
<span class="btn btn-default btn-file"><span class="fileinput-new">Select file</span><span class="fileinput-exists">Change</span><input type="file" multiple></span>
|
||||
<span class="fileinput-filename"></span>
|
||||
<a href="#" class="close fileinput-exists" data-dismiss="fileinput" style="float: none">×</a>
|
||||
</div>
|
||||
</div>
|
||||
{% highlight html %}
|
||||
<div class="fileinput fileinput-new" data-provides="fileinput">
|
||||
<span class="btn btn-default btn-file"><span class="fileinput-new">Select file</span><span class="fileinput-exists">Change</span><input type="file" name="..."></span>
|
||||
<span class="btn btn-default btn-file"><span class="fileinput-new">Select file</span><span class="fileinput-exists">Change</span><input type="file" name="..." multiple></span>
|
||||
<span class="fileinput-filename"></span>
|
||||
<a href="#" class="close fileinput-exists" data-dismiss="fileinput" style="float: none">×</a>
|
||||
</div>
|
||||
@@ -507,8 +516,11 @@ $('.inputmask').inputmask({
|
||||
|
||||
<h2 id="fileinput-usage">Usage</h2>
|
||||
<p>Add <code>.fileinput</code> to the container. Elements inside the container with <code>.fileinput-new</code> and <code>.fileinput-exists</code> are shown or hidden based on the current state. A preview of the selected file is placed in <code>.fileinput-preview</code>. The text of <code>.fileinput-filename</code> gets set to the name of the selected file.</p>
|
||||
|
||||
<p>Multiple file uploads can be handled by adding <code>multiple</code> attribute to file input element. Names of files are shown in name preview, joined by comma. In image preview only the first image is shown.</p>
|
||||
|
||||
<p>The file input widget should be placed in a regular <code><form></code> replacing a standard <code><input type="file"></code>. The server side code should handle the file upload as normal.</p>
|
||||
|
||||
|
||||
<h3>Via data attributes</h3>
|
||||
<p>Add <code>data-provides="fileinput"</code> to the <code>.fileinput</code> element. Implement a button to clear the file with <code>data-dismiss="fileinput"</code>. Add <code>data-trigger="fileinput"</code> to any element within the <code>.fileinput</code> widget to trigger the file dialog.</p>
|
||||
|
||||
@@ -534,10 +546,20 @@ $('.inputmask').inputmask({
|
||||
<td>string</td>
|
||||
<td>Use this option instead of setting the <code>name</code> attribute on the <code><input></code> element to prevent it from being part of the post data when not changed.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>clearName</td>
|
||||
<td>boolean</td>
|
||||
<td>Sets if file input name should be cleared when input is cleared. It's <code>true</code> by default, to tell the server the difference between pressing clear and submit without a change in a normal form.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>maxSize</td>
|
||||
<td>float</td>
|
||||
<td>Use this option if you want to limit file upload size. It's in <code>MB</code> and should be set for <code>.fileinput</code> element. For ex. <code>data-max-size="3"</code> allows upload only for files with size <= 3MB. If several files are selected, and only one of them is greater then this option value, all files will be discarded. Event <code>max_size.bs.fileinput</code> is triggered on discard.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
|
||||
<h3>Methods</h3>
|
||||
<h4>.fileinput(options)</h4>
|
||||
<p>Initializes a file upload widget.</p>
|
||||
@@ -545,7 +567,7 @@ $('.inputmask').inputmask({
|
||||
<p>Clear the selected file.</p>
|
||||
<h4>.fileinput('reset')</h4>
|
||||
<p>Reset the form element to the original value.</p>
|
||||
|
||||
|
||||
<h3>Events</h3>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-striped">
|
||||
@@ -566,10 +588,18 @@ $('.inputmask').inputmask({
|
||||
</tr>
|
||||
<tr>
|
||||
<td>reset.bs.fileinput</td>
|
||||
<td>This event is fired when the file input is reset.</td>
|
||||
<td>This event is fired before the file input is reset.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>reseted.bs.fileinput</td>
|
||||
<td>This event is fired after the file input is reset.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>max_size.bs.fileinput</td>
|
||||
<td>This event is fired, if at least one of selected files has size greater then <code>maxSize</code> option, before input is cleared.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div><!-- ./bs-table-responsive -->
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
152
js/fileinput.js
152
js/fileinput.js
@@ -27,6 +27,7 @@
|
||||
var Fileinput = function (element, options) {
|
||||
this.$element = $(element)
|
||||
|
||||
this.options = $.extend({}, Fileinput.DEFAULTS, options)
|
||||
this.$input = this.$element.find(':file')
|
||||
if (this.$input.length === 0) return
|
||||
|
||||
@@ -50,6 +51,11 @@
|
||||
}
|
||||
|
||||
this.listen()
|
||||
this.reset()
|
||||
}
|
||||
|
||||
Fileinput.DEFAULTS = {
|
||||
clearName: true
|
||||
}
|
||||
|
||||
Fileinput.prototype.listen = function() {
|
||||
@@ -60,6 +66,23 @@
|
||||
this.$element.find('[data-dismiss="fileinput"]').on('click.bs.fileinput', $.proxy(this.clear, this))
|
||||
},
|
||||
|
||||
Fileinput.prototype.verifySizes = function(files) {
|
||||
if (typeof this.options.maxSize === 'undefined') return true
|
||||
|
||||
var max = parseFloat(this.options.maxSize)
|
||||
if (max !== this.options.maxSize) return true
|
||||
|
||||
for (var i = 0; i < files.length; i++) {
|
||||
var size = typeof files[i].size !== 'undefined' ? files[i].size : null
|
||||
if (size === null) continue
|
||||
|
||||
size = size / 1000 / 1000 /* convert from bytes to MB */
|
||||
if (size > max) return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
Fileinput.prototype.change = function(e) {
|
||||
var files = e.target.files === undefined ? (e.target && e.target.value ? [{ name: e.target.value.replace(/^.+\\/, '')}] : []) : e.target.files
|
||||
|
||||
@@ -71,13 +94,22 @@
|
||||
return
|
||||
}
|
||||
|
||||
if (!this.verifySizes(files)) {
|
||||
this.$element.trigger('max_size.bs.fileinput')
|
||||
|
||||
this.clear()
|
||||
this.$element.trigger('clear.bs.fileinput')
|
||||
return
|
||||
}
|
||||
|
||||
this.$hidden.val('')
|
||||
this.$hidden.attr('name', '')
|
||||
this.$input.attr('name', this.name)
|
||||
|
||||
var file = files[0]
|
||||
|
||||
if (this.$preview.length > 0 && (typeof file.type !== "undefined" ? file.type.match(/^image\/(gif|png|jpeg)$/) : file.name.match(/\.(gif|png|jpe?g)$/i)) && typeof FileReader !== "undefined") {
|
||||
if (this.$preview.length > 0 && (typeof file.type !== "undefined" ? file.type.match(/^image\/(gif|png|jpeg|svg\+xml)$/) : file.name.match(/\.(gif|png|jpe?g|svg)$/i)) && typeof FileReader !== "undefined") {
|
||||
var Fileinput = this
|
||||
var reader = new FileReader()
|
||||
var preview = this.$preview
|
||||
var element = this.$element
|
||||
@@ -90,9 +122,21 @@
|
||||
element.find('.fileinput-filename').text(file.name)
|
||||
|
||||
// if parent has max-height, using `(max-)height: 100%` on child doesn't take padding and border into account
|
||||
if (preview.css('max-height') != 'none') $img.css('max-height', parseInt(preview.css('max-height'), 10) - parseInt(preview.css('padding-top'), 10) - parseInt(preview.css('padding-bottom'), 10) - parseInt(preview.css('border-top'), 10) - parseInt(preview.css('border-bottom'), 10))
|
||||
if (preview.css('max-height') != 'none') {
|
||||
var mh = parseInt(preview.css('max-height'), 10) || 0
|
||||
var pt = parseInt(preview.css('padding-top'), 10) || 0
|
||||
var pb = parseInt(preview.css('padding-bottom'), 10) || 0
|
||||
var bt = parseInt(preview.css('border-top'), 10) || 0
|
||||
var bb = parseInt(preview.css('border-bottom'), 10) || 0
|
||||
|
||||
$img.css('max-height', mh - pt - pb - bt - bb)
|
||||
}
|
||||
|
||||
preview.html($img)
|
||||
if (Fileinput.options.exif) {
|
||||
//Fix image tranformation if this is possible
|
||||
Fileinput.setImageTransform($img, file);
|
||||
}
|
||||
element.addClass('fileinput-exists').removeClass('fileinput-new')
|
||||
|
||||
element.trigger('change.bs.fileinput', files)
|
||||
@@ -100,21 +144,115 @@
|
||||
|
||||
reader.readAsDataURL(file)
|
||||
} else {
|
||||
this.$element.find('.fileinput-filename').text(file.name)
|
||||
var text = file.name
|
||||
var $nameView = this.$element.find('.fileinput-filename')
|
||||
|
||||
if (files.length > 1) {
|
||||
text = $.map(files, function(file) {
|
||||
return file.name;
|
||||
}).join(', ')
|
||||
}
|
||||
|
||||
$nameView.text(text)
|
||||
this.$preview.text(file.name)
|
||||
|
||||
this.$element.addClass('fileinput-exists').removeClass('fileinput-new')
|
||||
|
||||
this.$element.trigger('change.bs.fileinput')
|
||||
}
|
||||
},
|
||||
|
||||
Fileinput.prototype.setImageTransform = function($img, file) {
|
||||
var Fileinput = this;
|
||||
var reader = new FileReader();
|
||||
reader.onload = function(me) {
|
||||
var transform = false;
|
||||
var view = new DataView(reader.result);
|
||||
var exif = Fileinput.getImageExif(view);
|
||||
if (exif) {
|
||||
Fileinput.resetOrientation($img, exif);
|
||||
}
|
||||
}
|
||||
|
||||
reader.readAsArrayBuffer(file);
|
||||
}
|
||||
|
||||
Fileinput.prototype.getImageExif = function(view) {
|
||||
if (view.getUint16(0, false) != 0xFFD8) {
|
||||
return -2;
|
||||
}
|
||||
var length = view.byteLength, offset = 2;
|
||||
while (offset < length) {
|
||||
var marker = view.getUint16(offset, false);
|
||||
offset += 2;
|
||||
if (marker == 0xFFE1) {
|
||||
if (view.getUint32(offset += 2, false) != 0x45786966) {
|
||||
return -1;
|
||||
}
|
||||
var little = view.getUint16(offset += 6, false) == 0x4949;
|
||||
offset += view.getUint32(offset + 4, little);
|
||||
var tags = view.getUint16(offset, little);
|
||||
offset += 2;
|
||||
for (var i = 0; i < tags; i++) {
|
||||
if (view.getUint16(offset + (i * 12), little) == 0x0112) {
|
||||
return view.getUint16(offset + (i * 12) + 8, little);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if ((marker & 0xFF00) != 0xFF00){
|
||||
break;
|
||||
} else {
|
||||
offset += view.getUint16(offset, false);
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
Fileinput.prototype.resetOrientation = function($img, transform) {
|
||||
var img = new Image();
|
||||
|
||||
img.onload = function() {
|
||||
var width = img.width,
|
||||
height = img.height,
|
||||
canvas = document.createElement('canvas'),
|
||||
ctx = canvas.getContext("2d");
|
||||
|
||||
// set proper canvas dimensions before transform & export
|
||||
if ([5,6,7,8].indexOf(transform) > -1) {
|
||||
canvas.width = height;
|
||||
canvas.height = width;
|
||||
} else {
|
||||
canvas.width = width;
|
||||
canvas.height = height;
|
||||
}
|
||||
|
||||
// transform context before drawing image
|
||||
switch (transform) {
|
||||
case 2: ctx.transform(-1, 0, 0, 1, width, 0); break;
|
||||
case 3: ctx.transform(-1, 0, 0, -1, width, height ); break;
|
||||
case 4: ctx.transform(1, 0, 0, -1, 0, height ); break;
|
||||
case 5: ctx.transform(0, 1, 1, 0, 0, 0); break;
|
||||
case 6: ctx.transform(0, 1, -1, 0, height , 0); break;
|
||||
case 7: ctx.transform(0, -1, -1, 0, height , width); break;
|
||||
case 8: ctx.transform(0, -1, 1, 0, 0, width); break;
|
||||
default: ctx.transform(1, 0, 0, 1, 0, 0);
|
||||
}
|
||||
|
||||
// draw image
|
||||
ctx.drawImage(img, 0, 0);
|
||||
|
||||
// export base64
|
||||
$img.attr('src', canvas.toDataURL());
|
||||
};
|
||||
|
||||
img.src = $img.attr('src');
|
||||
};
|
||||
|
||||
Fileinput.prototype.clear = function(e) {
|
||||
if (e) e.preventDefault()
|
||||
|
||||
this.$hidden.val('')
|
||||
this.$hidden.attr('name', this.name)
|
||||
this.$input.attr('name', '')
|
||||
if (this.options.clearName) this.$input.attr('name', '')
|
||||
|
||||
//ie8+ doesn't support changing the value of input with type=file so clone instead
|
||||
if (isIE) {
|
||||
@@ -146,7 +284,7 @@
|
||||
if (this.original.exists) this.$element.addClass('fileinput-exists').removeClass('fileinput-new')
|
||||
else this.$element.addClass('fileinput-new').removeClass('fileinput-exists')
|
||||
|
||||
this.$element.trigger('reset.bs.fileinput')
|
||||
this.$element.trigger('reseted.bs.fileinput')
|
||||
},
|
||||
|
||||
Fileinput.prototype.trigger = function(e) {
|
||||
|
||||
@@ -48,6 +48,7 @@
|
||||
'9': "[0-9]",
|
||||
'a': "[A-Za-z]",
|
||||
'w': "[A-Za-z0-9]",
|
||||
'h': "[A-Fa-f0-9]",
|
||||
'*': "."
|
||||
}
|
||||
}
|
||||
|
||||
194
js/offcanvas.js
194
js/offcanvas.js
@@ -21,29 +21,37 @@
|
||||
|
||||
// OFFCANVAS PUBLIC CLASS DEFINITION
|
||||
// =================================
|
||||
|
||||
var isIphone = (navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i))
|
||||
var OffCanvas = function (element, options) {
|
||||
this.$element = $(element)
|
||||
this.options = $.extend({}, OffCanvas.DEFAULTS, options)
|
||||
this.state = null
|
||||
this.placement = null
|
||||
this.$calcClone = null
|
||||
|
||||
this.calcClone()
|
||||
|
||||
if (this.options.recalc) {
|
||||
this.calcClone()
|
||||
$(window).on('resize', $.proxy(this.recalc, this))
|
||||
}
|
||||
|
||||
if (this.options.autohide && !this.options.modal) {
|
||||
var eventName = (navigator.userAgent.match(/(iPad|iPhone)/i) === null) ? 'click' : 'touchstart'
|
||||
$(document).on('click touchstart', $.proxy(this.autohide, this))
|
||||
}
|
||||
}
|
||||
|
||||
if (this.options.toggle) this.toggle()
|
||||
// Backdrop is added to dropdown on it's open, if device is touchable (or desctop FF, https://github.com/twbs/bootstrap/issues/13748)
|
||||
// and dropdown is not inside .navbar-nav. So we remove it
|
||||
$(this.$element).on('shown.bs.dropdown', $.proxy(function(e) {
|
||||
$(this.$element).find('.dropdown .dropdown-backdrop').remove()
|
||||
}, this))
|
||||
|
||||
if (this.options.disablescrolling) {
|
||||
if (typeof(this.options.disablescrolling) === "boolean") {
|
||||
this.options.disableScrolling = this.options.disablescrolling
|
||||
delete this.options.disablescrolling
|
||||
}
|
||||
|
||||
if (this.options.toggle) this.toggle()
|
||||
}
|
||||
|
||||
OffCanvas.DEFAULTS = {
|
||||
@@ -52,7 +60,16 @@
|
||||
autohide: true,
|
||||
recalc: true,
|
||||
disableScrolling: true,
|
||||
modal: false
|
||||
modal: false,
|
||||
exclude: null
|
||||
}
|
||||
|
||||
OffCanvas.prototype.setWidth = function () {
|
||||
var size = this.$element.outerWidth()
|
||||
var max = $(window).width()
|
||||
max -= 68 //Minimum space between menu and screen edge
|
||||
|
||||
this.$element.css('width', size > max ? max : size)
|
||||
}
|
||||
|
||||
OffCanvas.prototype.offset = function () {
|
||||
@@ -74,8 +91,8 @@
|
||||
this.$element.css('visiblity', 'hidden !important').addClass('in')
|
||||
}
|
||||
|
||||
var horizontal = $(window).width() / this.$element.width()
|
||||
var vertical = $(window).height() / this.$element.height()
|
||||
var horizontal = $(window).width() / this.$element.outerWidth()
|
||||
var vertical = $(window).height() / this.$element.outerHeight()
|
||||
|
||||
var element = this.$element
|
||||
function ab(a, b) {
|
||||
@@ -88,7 +105,7 @@
|
||||
return size_a > size_b ? b : a
|
||||
}
|
||||
|
||||
this.placement = horizontal >= vertical ? ab('left', 'right') : ab('top', 'bottom')
|
||||
this.placement = horizontal > vertical ? ab('left', 'right') : ab('top', 'bottom')
|
||||
|
||||
if (this.$element.css('visibility') === 'hidden !important') {
|
||||
this.$element.removeClass('in').css('visiblity', '')
|
||||
@@ -109,7 +126,7 @@
|
||||
var canvas = this.options.canvas ? $(this.options.canvas) : this.$element
|
||||
|
||||
var fixed_elements = canvas.find('*').filter(function() {
|
||||
return $(this).css('position') === 'fixed'
|
||||
return getComputedStyle(this).getPropertyValue('position') === 'fixed'
|
||||
}).not(this.options.exclude)
|
||||
|
||||
return canvas.add(fixed_elements)
|
||||
@@ -120,6 +137,8 @@
|
||||
if (!$.support.transition) {
|
||||
var anim = {}
|
||||
anim[this.placement] = "+=" + offset
|
||||
anim[this.opposite(this.placement)] = "-=" + offset
|
||||
|
||||
return elements.animate(anim, 350, callback)
|
||||
}
|
||||
|
||||
@@ -127,11 +146,13 @@
|
||||
var opposite = this.opposite(placement)
|
||||
|
||||
elements.each(function() {
|
||||
if ($(this).css(placement) !== 'auto')
|
||||
if ($(this).css(placement) !== 'auto') {
|
||||
$(this).css(placement, (parseInt($(this).css(placement), 10) || 0) + offset)
|
||||
}
|
||||
|
||||
if ($(this).css(opposite) !== 'auto')
|
||||
if ($(this).css(opposite) !== 'auto') {
|
||||
$(this).css(opposite, (parseInt($(this).css(opposite), 10) || 0) - offset)
|
||||
}
|
||||
})
|
||||
|
||||
this.$element
|
||||
@@ -148,6 +169,10 @@
|
||||
}
|
||||
|
||||
$('body').css('overflow', 'hidden')
|
||||
//Fix iPhone scrolling
|
||||
if (isIphone) {
|
||||
$('body').addClass('lockIphone');
|
||||
}
|
||||
|
||||
if ($('body').width() > bodyWidth) {
|
||||
var padding = parseInt($('body').css(prop), 10) + $('body').width() - bodyWidth
|
||||
@@ -165,6 +190,7 @@
|
||||
|
||||
OffCanvas.prototype.enableScrolling = function() {
|
||||
$('body').off('touchmove.bs');
|
||||
$('body').removeClass('lockIphone');
|
||||
}
|
||||
|
||||
OffCanvas.prototype.show = function () {
|
||||
@@ -174,48 +200,75 @@
|
||||
this.$element.trigger(startEvent)
|
||||
if (startEvent.isDefaultPrevented()) return
|
||||
|
||||
this.state = 'slide-in'
|
||||
this.calcPlacement();
|
||||
this.hideOthers($.proxy(function() {
|
||||
this.state = 'slide-in'
|
||||
this.$element.css('width', '')
|
||||
this.calcPlacement()
|
||||
this.setWidth()
|
||||
|
||||
var elements = this.getCanvasElements()
|
||||
var placement = this.placement
|
||||
var opposite = this.opposite(placement)
|
||||
var offset = this.offset()
|
||||
var elements = this.getCanvasElements()
|
||||
var placement = this.placement
|
||||
var opposite = this.opposite(placement)
|
||||
var offset = this.offset()
|
||||
|
||||
if (elements.index(this.$element) !== -1) {
|
||||
$(this.$element).data('offcanvas-style', $(this.$element).attr('style') || '')
|
||||
this.$element.css(placement, -1 * offset)
|
||||
this.$element.css(placement); // Workaround: Need to get the CSS property for it to be applied before the next line of code
|
||||
}
|
||||
|
||||
elements.addClass('canvas-sliding').each(function() {
|
||||
if ($(this).data('offcanvas-style') === undefined) $(this).data('offcanvas-style', $(this).attr('style') || '')
|
||||
if ($(this).css('position') === 'static') $(this).css('position', 'relative')
|
||||
if (($(this).css(placement) === 'auto' || $(this).css(placement) === '0px') &&
|
||||
($(this).css(opposite) === 'auto' || $(this).css(opposite) === '0px')) {
|
||||
$(this).css(placement, 0)
|
||||
if (elements.index(this.$element) !== -1) {
|
||||
$(this.$element).data('offcanvas-style', $(this.$element).attr('style') || '')
|
||||
this.$element.css(placement, -1 * offset)
|
||||
this.$element.css(placement); // Workaround: Need to get the CSS property for it to be applied before the next line of code
|
||||
}
|
||||
})
|
||||
|
||||
if (this.options.disableScrolling) this.disableScrolling()
|
||||
if (this.options.modal) this.toggleBackdrop()
|
||||
elements.addClass('canvas-sliding').each(function() {
|
||||
var $this = $(this)
|
||||
if ($this.data('offcanvas-style') === undefined) $this.data('offcanvas-style', $this.attr('style') || '')
|
||||
if ($this.css('position') === 'static' && !isIphone) $this.css('position', 'relative')
|
||||
if (($this.css(placement) === 'auto' || $this.css(placement) === '0px') &&
|
||||
($this.css(opposite) === 'auto' || $this.css(opposite) === '0px')) {
|
||||
$this.css(placement, 0)
|
||||
}
|
||||
})
|
||||
|
||||
var complete = function () {
|
||||
if (this.state != 'slide-in') return
|
||||
if (this.options.disableScrolling) this.disableScrolling()
|
||||
if (this.options.modal || this.options.backdrop) this.toggleBackdrop()
|
||||
|
||||
this.state = 'slid'
|
||||
var complete = function () {
|
||||
if (this.state != 'slide-in') return
|
||||
|
||||
elements.removeClass('canvas-sliding').addClass('canvas-slid')
|
||||
this.$element.trigger('shown.bs.offcanvas')
|
||||
}
|
||||
this.state = 'slid'
|
||||
|
||||
setTimeout($.proxy(function() {
|
||||
this.$element.addClass('in')
|
||||
this.slide(elements, offset, $.proxy(complete, this))
|
||||
}, this), 1)
|
||||
elements.removeClass('canvas-sliding').addClass('canvas-slid')
|
||||
this.$element.trigger('shown.bs.offcanvas')
|
||||
}
|
||||
|
||||
setTimeout($.proxy(function() {
|
||||
this.$element.addClass('in')
|
||||
this.slide(elements, offset, $.proxy(complete, this))
|
||||
}, this), 1)
|
||||
}, this));
|
||||
}
|
||||
|
||||
OffCanvas.prototype.hide = function (fast) {
|
||||
//Hide other opened offcanvas menus, and then open this one
|
||||
OffCanvas.prototype.hideOthers = function (callback) {
|
||||
var doHide = false
|
||||
var id = this.$element.attr('id')
|
||||
var $clones = $('.offcanvas-clone:not([data-id="' + id + '"])')
|
||||
|
||||
if (!$clones.length) return callback()
|
||||
|
||||
$clones.each(function(index, clone) {
|
||||
var id = $(clone).attr('data-id')
|
||||
var $menu = $('#' + id)
|
||||
doHide = $menu.hasClass('canvas-slid')
|
||||
|
||||
if (!doHide) return
|
||||
|
||||
$menu.one('hidden.bs.offcanvas', callback)
|
||||
$menu.offcanvas('hide')
|
||||
})
|
||||
|
||||
if (!doHide) callback()
|
||||
}
|
||||
|
||||
OffCanvas.prototype.hide = function () {
|
||||
if (this.state !== 'slid') return
|
||||
|
||||
var startEvent = $.Event('hide.bs.offcanvas')
|
||||
@@ -241,11 +294,12 @@
|
||||
$(this).attr('style', $(this).data('offcanvas-style')).removeData('offcanvas-style')
|
||||
})
|
||||
|
||||
this.$element.css('width', '')
|
||||
this.$element.trigger('hidden.bs.offcanvas')
|
||||
}
|
||||
|
||||
if (this.options.disableScrolling) this.enableScrolling()
|
||||
if (this.options.modal) this.toggleBackdrop()
|
||||
if (this.options.modal || this.options.backdrop) this.toggleBackdrop()
|
||||
|
||||
elements.removeClass('canvas-slid').addClass('canvas-sliding')
|
||||
|
||||
@@ -260,12 +314,25 @@
|
||||
}
|
||||
|
||||
OffCanvas.prototype.toggleBackdrop = function (callback) {
|
||||
callback = callback || $.noop;
|
||||
callback = callback || $.noop
|
||||
var time = 150
|
||||
|
||||
if (this.state == 'slide-in') {
|
||||
var doAnimate = $.support.transition;
|
||||
var doAnimate = $.support.transition
|
||||
|
||||
this.$backdrop = $('<div class="modal-backdrop fade" />')
|
||||
.insertAfter(this.$element);
|
||||
if (this.options.backdrop) {
|
||||
this.$backdrop.addClass('allow-navbar')
|
||||
|
||||
if (this.options.canvas && $(this.options.canvas)[0] !== $('body')[0]) {
|
||||
$(this.options.canvas).addClass('limit-backdrop')
|
||||
this.$backdrop.appendTo(this.options.canvas)
|
||||
} else {
|
||||
this.$backdrop.insertAfter(this.$element)
|
||||
}
|
||||
} else {
|
||||
this.$backdrop.insertAfter(this.$element)
|
||||
}
|
||||
|
||||
if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
|
||||
|
||||
@@ -275,7 +342,7 @@
|
||||
doAnimate ?
|
||||
this.$backdrop
|
||||
.one($.support.transition.end, callback)
|
||||
.emulateTransitionEnd(150) :
|
||||
.emulateTransitionEnd(time) :
|
||||
callback()
|
||||
} else if (this.state == 'slide-out' && this.$backdrop) {
|
||||
this.$backdrop.removeClass('in');
|
||||
@@ -288,22 +355,38 @@
|
||||
callback()
|
||||
self.$backdrop = null;
|
||||
})
|
||||
.emulateTransitionEnd(150);
|
||||
.emulateTransitionEnd(time);
|
||||
} else {
|
||||
this.$backdrop.remove();
|
||||
this.$backdrop = null;
|
||||
callback();
|
||||
}
|
||||
|
||||
if (this.options.canvas && $(this.options.canvas)[0] !== $('body')[0]) {
|
||||
var canvas = this.options.canvas
|
||||
setTimeout(function() {
|
||||
$(canvas).removeClass('limit-backdrop')
|
||||
}, time)
|
||||
}
|
||||
} else if (callback) {
|
||||
callback()
|
||||
}
|
||||
}
|
||||
|
||||
OffCanvas.prototype.calcClone = function() {
|
||||
this.$calcClone = this.$element.clone()
|
||||
.html('')
|
||||
.addClass('offcanvas-clone').removeClass('in')
|
||||
.appendTo($('body'))
|
||||
var id = this.$element.attr('id')
|
||||
this.$calcClone = $('.offcanvas-clone[data-id="' + id + '"]')
|
||||
|
||||
if (!this.$calcClone.length) {
|
||||
this.$calcClone = this.$element.clone()
|
||||
.addClass('offcanvas-clone')
|
||||
.attr('data-id', id)
|
||||
.removeAttr('id')
|
||||
.appendTo($('body'))
|
||||
.html('')
|
||||
}
|
||||
|
||||
this.$calcClone.removeClass('in')
|
||||
}
|
||||
|
||||
OffCanvas.prototype.recalc = function () {
|
||||
@@ -313,12 +396,15 @@
|
||||
this.placement = null
|
||||
var elements = this.getCanvasElements()
|
||||
|
||||
this.$element.trigger('hide.bs.offcanvas')
|
||||
this.$element.removeClass('in')
|
||||
|
||||
elements.removeClass('canvas-slid')
|
||||
elements.add(this.$element).add('body').each(function() {
|
||||
$(this).attr('style', $(this).data('offcanvas-style')).removeData('offcanvas-style')
|
||||
})
|
||||
|
||||
this.$element.trigger('hidden.bs.offcanvas')
|
||||
}
|
||||
|
||||
OffCanvas.prototype.autohide = function (e) {
|
||||
|
||||
@@ -23,24 +23,31 @@
|
||||
this.$element = $(element)
|
||||
this.options = $.extend({}, Rowlink.DEFAULTS, options)
|
||||
|
||||
this.$element.on('click.bs.rowlink', 'td:not(.rowlink-skip)', $.proxy(this.click, this))
|
||||
this.$element.on('click.bs.rowlink mouseup.bs.rowlink', 'td:not(.rowlink-skip)', $.proxy(this.click, this))
|
||||
}
|
||||
|
||||
Rowlink.DEFAULTS = {
|
||||
target: "a"
|
||||
}
|
||||
|
||||
Rowlink.prototype.click = function(e) {
|
||||
Rowlink.prototype.click = function(e, ctrlKey) {
|
||||
var target = $(e.currentTarget).closest('tr').find(this.options.target)[0]
|
||||
if ($(e.target)[0] === target) return
|
||||
|
||||
if (typeof target === 'undefined' || $(e.target)[0] === target) return
|
||||
if (e.type === 'mouseup' && e.which !== 2) return
|
||||
|
||||
e.preventDefault();
|
||||
ctrlKey = ctrlKey || e.ctrlKey || (e.type === 'mouseup' && e.which === 2)
|
||||
|
||||
if (target.click) {
|
||||
if (!ctrlKey && target.click) {
|
||||
target.click()
|
||||
} else if (document.createEvent) {
|
||||
var evt = document.createEvent("MouseEvents");
|
||||
evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
|
||||
var evt = new MouseEvent("click", {
|
||||
view: window,
|
||||
bubbles: true,
|
||||
cancelable: true,
|
||||
ctrlKey: ctrlKey
|
||||
});
|
||||
target.dispatchEvent(evt);
|
||||
}
|
||||
}
|
||||
@@ -74,13 +81,16 @@
|
||||
// ROWLINK DATA-API
|
||||
// ==================
|
||||
|
||||
$(document).on('click.bs.rowlink.data-api', '[data-link="row"]', function (e) {
|
||||
$(document).on('click.bs.rowlink.data-api mouseup.bs.rowlink.data-api', '[data-link="row"]', function (e) {
|
||||
if (e.type === 'mouseup' && e.which !== 2) return
|
||||
if ($(e.target).closest('.rowlink-skip').length !== 0) return
|
||||
|
||||
var $this = $(this)
|
||||
if ($this.data('bs.rowlink')) return
|
||||
$this.rowlink($this.data())
|
||||
$(e.target).trigger('click.bs.rowlink')
|
||||
|
||||
var ctrlKey = e.ctrlKey || e.which === 2
|
||||
$(e.target).trigger('click.bs.rowlink', [ctrlKey])
|
||||
})
|
||||
|
||||
}(window.jQuery);
|
||||
|
||||
@@ -13,10 +13,35 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.btn-labeled {
|
||||
padding-top: 0;
|
||||
padding-bottom: 0;
|
||||
|
||||
&.btn-block {
|
||||
text-indent: -12px;
|
||||
line-height: 32px;
|
||||
|
||||
&.btn-lg {
|
||||
line-height: 42px;
|
||||
text-indent: -16px;
|
||||
}
|
||||
|
||||
&.btn-sm {
|
||||
line-height: 30px;
|
||||
text-indent: -10px;
|
||||
}
|
||||
|
||||
&.btn-xs {
|
||||
line-height: 22px;
|
||||
text-indent: -5px;
|
||||
}
|
||||
|
||||
.btn-label {
|
||||
float: left;
|
||||
line-height: 20px;
|
||||
text-indent: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-label {
|
||||
@@ -36,7 +61,12 @@
|
||||
.btn-xs .btn-label {
|
||||
.button-label-size(1px; 5px; @border-radius-small);
|
||||
}
|
||||
.btn-group > .btn:last-child:not(:first-child) .btn-label, .btn-group > .dropdown-toggle:not(:first-child) .btn-label {
|
||||
border-bottom-left-radius: 0px;
|
||||
border-top-left-radius: 0px;
|
||||
//Fix bootstrap grouped buttons
|
||||
.btn-group {
|
||||
.btn-labeled:not(:first-child) .btn-label:not(.btn-label-right) {
|
||||
.border-left-radius(0px);
|
||||
}
|
||||
.btn-labeled:not(:last-child) .btn-label.btn-label-right {
|
||||
.border-right-radius(0px);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,12 +18,17 @@
|
||||
width: 100%;
|
||||
direction: ltr;
|
||||
cursor: pointer;
|
||||
|
||||
&::-webkit-file-upload-button {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.fileinput {
|
||||
margin-bottom: 9px;
|
||||
display: inline-block;
|
||||
max-width: 100vw;
|
||||
.form-control {
|
||||
padding-top: 7px;
|
||||
padding-bottom: 5px;
|
||||
@@ -45,6 +50,13 @@
|
||||
.btn {
|
||||
vertical-align: middle;
|
||||
}
|
||||
.form-group {
|
||||
overflow: hidden;
|
||||
.fileinput-filename {
|
||||
width: 90%;
|
||||
width: calc(100% - 20px);
|
||||
}
|
||||
}
|
||||
}
|
||||
.fileinput-exists .fileinput-new,
|
||||
.fileinput-new .fileinput-exists {
|
||||
@@ -61,12 +73,22 @@
|
||||
}
|
||||
|
||||
.fileinput-filename {
|
||||
vertical-align: middle;
|
||||
display: inline-block;
|
||||
overflow: hidden;
|
||||
vertical-align: middle;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
max-width: 65%;
|
||||
}
|
||||
|
||||
.form-control .fileinput-filename {
|
||||
vertical-align: bottom;
|
||||
white-space: nowrap;
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
padding-left: 30px;
|
||||
}
|
||||
|
||||
.fileinput.input-group {
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
// Vanilla Bootstrap's "variables.less" should already be imported
|
||||
|
||||
/*!
|
||||
* Jasny Bootstrap v3.1.3 (http://jasny.github.io/bootstrap)
|
||||
* Copyright 2012-2015 Arnold Daniels
|
||||
* Licensed under Apache-2.0 (https://github.com/jasny/bootstrap/blob/master/LICENSE)
|
||||
*
|
||||
*/
|
||||
// Core variables and mixins
|
||||
@import "variables.less";
|
||||
|
||||
|
||||
@@ -15,6 +15,20 @@
|
||||
border-style: solid;
|
||||
border-radius: @border-radius-base;
|
||||
}
|
||||
// Fixed iphone with disableScrolling
|
||||
.lockIphone {
|
||||
position: fixed;
|
||||
overflow: hidden;
|
||||
height: 100%;
|
||||
-webkit-overflow-scrolling: auto;
|
||||
}
|
||||
// Fix the bug for bootstrap 3.2.0 (https://github.com/jasny/bootstrap/issues/355)
|
||||
.navbar-fixed-top,
|
||||
.navbar-fixed-bottom {
|
||||
-webkit-transform: none;
|
||||
-o-transform: none;
|
||||
transform: none;
|
||||
}
|
||||
|
||||
.navmenu-fixed-left,
|
||||
.navmenu-fixed-right,
|
||||
@@ -29,12 +43,12 @@
|
||||
.navmenu-fixed-left,
|
||||
.navbar-offcanvas.navmenu-fixed-left {
|
||||
left: 0;
|
||||
right: auto;
|
||||
right: auto!important;
|
||||
border-width: 0 1px 0 0;
|
||||
}
|
||||
.navmenu-fixed-right,
|
||||
.navbar-offcanvas {
|
||||
left: auto;
|
||||
left: auto!important;
|
||||
right: 0;
|
||||
border-width: 0 0 0 1px;
|
||||
}
|
||||
@@ -50,6 +64,10 @@
|
||||
border: none;
|
||||
.box-shadow(none);
|
||||
border-radius: 0;
|
||||
|
||||
li > a {
|
||||
white-space: normal;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -46,3 +46,15 @@
|
||||
right: 0px !important;
|
||||
opacity: 0 !important;
|
||||
}
|
||||
|
||||
.modal-backdrop.allow-navbar {
|
||||
z-index: 1029;
|
||||
}
|
||||
|
||||
.limit-backdrop {
|
||||
overflow: hidden!important;
|
||||
|
||||
.modal-backdrop {
|
||||
position: absolute;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"name": "jasny-bootstrap",
|
||||
"description": "Additional features and components for Bootstrap",
|
||||
"version": "3.1.3",
|
||||
"main": "dist/jasny-bootstrap.js",
|
||||
"version": "3.2.0",
|
||||
"main": "./dist/js/jasny-bootstrap.js",
|
||||
"keywords": [
|
||||
"bootstrap",
|
||||
"css"
|
||||
|
||||
@@ -36,7 +36,12 @@
|
||||
.btn-xs .btn-label {
|
||||
@include button-label-size(1px, 5px, $border-radius-small);
|
||||
}
|
||||
.btn-group > .btn:last-child:not(:first-child) .btn-label, .btn-group > .dropdown-toggle:not(:first-child) .btn-label {
|
||||
border-bottom-left-radius: 0px;
|
||||
border-top-left-radius: 0px;
|
||||
//Fix bootstrap grouped buttons
|
||||
.btn-group {
|
||||
.btn-labeled:not(:first-child) .btn-label:not(.btn-label-right) {
|
||||
@include border-left-radius(0px);
|
||||
}
|
||||
.btn-labeled:not(:last-child) .btn-label.btn-label-right {
|
||||
@include border-right-radius(0px);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,12 +18,17 @@
|
||||
width: 100%;
|
||||
direction: ltr;
|
||||
cursor: pointer;
|
||||
|
||||
&::-webkit-file-upload-button {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.fileinput {
|
||||
margin-bottom: 9px;
|
||||
display: inline-block;
|
||||
max-width: 100vw;
|
||||
.form-control {
|
||||
padding-top: 7px;
|
||||
padding-bottom: 5px;
|
||||
@@ -45,6 +50,13 @@
|
||||
.btn {
|
||||
vertical-align: middle;
|
||||
}
|
||||
.form-group {
|
||||
overflow: hidden;
|
||||
.fileinput-filename {
|
||||
width: 90%;
|
||||
width: calc(100% - 20px);
|
||||
}
|
||||
}
|
||||
}
|
||||
.fileinput-exists .fileinput-new,
|
||||
.fileinput-new .fileinput-exists {
|
||||
@@ -61,18 +73,34 @@
|
||||
}
|
||||
|
||||
.fileinput-filename {
|
||||
vertical-align: middle;
|
||||
display: inline-block;
|
||||
overflow: hidden;
|
||||
vertical-align: middle;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
max-width: 65%;
|
||||
}
|
||||
|
||||
.form-control .fileinput-filename {
|
||||
vertical-align: bottom;
|
||||
white-space: nowrap;
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
padding-left: 30px;
|
||||
}
|
||||
|
||||
.fileinput.input-group {
|
||||
display: table;
|
||||
|
||||
> * {
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
}
|
||||
> .btn-file {
|
||||
z-index: 1;
|
||||
}
|
||||
}
|
||||
|
||||
// Not 100% correct, but helps in typical use case
|
||||
|
||||
61
scss/_mixins.scss
Normal file
61
scss/_mixins.scss
Normal file
@@ -0,0 +1,61 @@
|
||||
//
|
||||
// These mixins are used when Jasny Bootstrap is
|
||||
// built without importing Twitter Bootstrap.
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
// CSS3 PROPERTIES
|
||||
// --------------------------------------------------
|
||||
|
||||
// Single side border-radius
|
||||
@mixin border-top-radius($radius) {
|
||||
border-top-right-radius: $radius;
|
||||
border-top-left-radius: $radius;
|
||||
}
|
||||
@mixin border-right-radius($radius) {
|
||||
border-bottom-right-radius: $radius;
|
||||
border-top-right-radius: $radius;
|
||||
}
|
||||
@mixin border-bottom-radius($radius) {
|
||||
border-bottom-right-radius: $radius;
|
||||
border-bottom-left-radius: $radius;
|
||||
}
|
||||
@mixin border-left-radius($radius) {
|
||||
border-bottom-left-radius: $radius;
|
||||
border-top-left-radius: $radius;
|
||||
}
|
||||
|
||||
// Drop shadows
|
||||
@mixin box-shadow($shadow) {
|
||||
-webkit-box-shadow: $shadow; // iOS <4.3 & Android <4.1
|
||||
box-shadow: $shadow;
|
||||
}
|
||||
@mixin transition($transition) {
|
||||
-webkit-transition: $transition;
|
||||
-o-transition: $transition;
|
||||
transition: $transition;
|
||||
}
|
||||
|
||||
// Transition
|
||||
@mixin transition-property($transition-property) {
|
||||
-webkit-transition-property: $transition-property;
|
||||
transition-property: $transition-property;
|
||||
}
|
||||
@mixin transition-delay($transition-delay) {
|
||||
-webkit-transition-delay: $transition-delay;
|
||||
transition-delay: $transition-delay;
|
||||
}
|
||||
@mixin transition-duration($transition-duration) {
|
||||
-webkit-transition-duration: $transition-duration;
|
||||
transition-duration: $transition-duration;
|
||||
}
|
||||
@mixin transition-timing-function($timing-function) {
|
||||
-webkit-transition-timing-function: $timing-function;
|
||||
transition-timing-function: $timing-function;
|
||||
}
|
||||
@mixin transition-transform($transition) {
|
||||
-webkit-transition: -webkit-transform $transition;
|
||||
-moz-transition: -moz-transform $transition;
|
||||
-o-transition: -o-transform $transition;
|
||||
transition: transform $transition;
|
||||
}
|
||||
@@ -10,11 +10,25 @@
|
||||
.navmenu,
|
||||
.navbar-offcanvas {
|
||||
width: $navmenu-width;
|
||||
height: 100%;
|
||||
height: auto;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-radius: $border-radius-base;
|
||||
}
|
||||
// Fixed iphone with disableScrolling
|
||||
.lockIphone {
|
||||
position: fixed;
|
||||
overflow: hidden;
|
||||
height: 100%;
|
||||
-webkit-overflow-scrolling: auto;
|
||||
}
|
||||
// Fix the bug for bootstrap 3.2.0 (https://github.com/jasny/bootstrap/issues/355)
|
||||
.navbar-fixed-top,
|
||||
.navbar-fixed-bottom {
|
||||
-webkit-transform: none;
|
||||
-o-transform: none;
|
||||
transform: none;
|
||||
}
|
||||
|
||||
.navmenu-fixed-left,
|
||||
.navmenu-fixed-right,
|
||||
@@ -22,15 +36,15 @@
|
||||
position: fixed;
|
||||
z-index: $zindex-navmenu-fixed;
|
||||
top: 0;
|
||||
border-radius: 0;
|
||||
bottom: 0;
|
||||
overflow-y: auto;
|
||||
border-radius: 0;
|
||||
}
|
||||
.navmenu-fixed-left,
|
||||
.navbar-offcanvas.navmenu-fixed-left {
|
||||
left: 0;
|
||||
right: auto;
|
||||
border-width: 0 1px 0 0;
|
||||
bottom: 0;
|
||||
}
|
||||
.navmenu-fixed-right,
|
||||
.navbar-offcanvas {
|
||||
@@ -50,6 +64,10 @@
|
||||
border: none;
|
||||
@include box-shadow(none);
|
||||
border-radius: 0;
|
||||
|
||||
li > a {
|
||||
white-space: normal;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -50,3 +50,15 @@
|
||||
right: 0px !important;
|
||||
opacity: 0 !important;
|
||||
}
|
||||
|
||||
.modal-backdrop.allow-navbar {
|
||||
z-index: 1029;
|
||||
}
|
||||
|
||||
.limit-backdrop {
|
||||
overflow: hidden!important;
|
||||
|
||||
.modal-backdrop {
|
||||
position: absolute;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,62 +5,62 @@
|
||||
// "default-variables.less" should be loaded before this file.
|
||||
// -------------------------------------------------------------
|
||||
|
||||
$zindex-navmenu-fixed: 1030 !default;
|
||||
$zindex-alert-fixed: 1035 !default;
|
||||
$zindex-navmenu-fixed: $zindex-modal;
|
||||
$zindex-alert-fixed: 1035;
|
||||
|
||||
$container-smooth: $container-lg !default;
|
||||
$container-smooth: $container-lg;
|
||||
|
||||
$alert-fixed-width: $screen-md-min !default;
|
||||
$alert-fixed-width: $screen-md-min;
|
||||
|
||||
|
||||
//== Navmenu
|
||||
|
||||
// Basics of a navmenu
|
||||
$navmenu-width: 300px !default;
|
||||
$navmenu-margin-vertical: (0.5 * $line-height-computed) !default;
|
||||
$navmenu-default-color: #777 !default;
|
||||
$navmenu-default-bg: #f8f8f8 !default;
|
||||
$navmenu-default-border: darken($navmenu-default-bg, 6.5%) !default;
|
||||
$navmenu-width: 300px;
|
||||
$navmenu-margin-vertical: (0.5 * $line-height-computed);
|
||||
$navmenu-default-color: #777;
|
||||
$navmenu-default-bg: #f8f8f8;
|
||||
$navmenu-default-border: darken($navmenu-default-bg, 6.5%);
|
||||
|
||||
// Navmenu links
|
||||
$navmenu-default-link-color: #777 !default;
|
||||
$navmenu-default-link-hover-color: #333 !default;
|
||||
$navmenu-default-link-hover-bg: transparent !default;
|
||||
$navmenu-default-link-active-color: #555 !default;
|
||||
$navmenu-default-link-active-bg: darken($navmenu-default-bg, 6.5%) !default;
|
||||
$navmenu-default-link-disabled-color: #ccc !default;
|
||||
$navmenu-default-link-disabled-bg: transparent !default;
|
||||
$navmenu-default-link-color: #777;
|
||||
$navmenu-default-link-hover-color: #333;
|
||||
$navmenu-default-link-hover-bg: transparent;
|
||||
$navmenu-default-link-active-color: #555;
|
||||
$navmenu-default-link-active-bg: darken($navmenu-default-bg, 6.5%);
|
||||
$navmenu-default-link-disabled-color: #ccc;
|
||||
$navmenu-default-link-disabled-bg: transparent;
|
||||
|
||||
// Navmenu brand label
|
||||
$navmenu-default-brand-color: $navmenu-default-link-color !default;
|
||||
$navmenu-default-brand-hover-color: darken($navmenu-default-link-color, 10%) !default;
|
||||
$navmenu-default-brand-hover-bg: transparent !default;
|
||||
$navmenu-default-brand-color: $navmenu-default-link-color;
|
||||
$navmenu-default-brand-hover-color: darken($navmenu-default-link-color, 10%);
|
||||
$navmenu-default-brand-hover-bg: transparent;
|
||||
|
||||
|
||||
// Inverted navmenu
|
||||
//
|
||||
// Reset inverted navmenu basics
|
||||
$navmenu-inverse-color: $gray-light !default;
|
||||
$navmenu-inverse-bg: #222 !default;
|
||||
$navmenu-inverse-border: darken($navmenu-inverse-bg, 10%) !default;
|
||||
$navmenu-inverse-color: $gray-light;
|
||||
$navmenu-inverse-bg: #222;
|
||||
$navmenu-inverse-border: darken($navmenu-inverse-bg, 10%);
|
||||
|
||||
// Inverted navmenu links
|
||||
$navmenu-inverse-link-color: $gray-light !default;
|
||||
$navmenu-inverse-link-hover-color: #fff !default;
|
||||
$navmenu-inverse-link-hover-bg: transparent !default;
|
||||
$navmenu-inverse-link-active-color: $navmenu-inverse-link-hover-color !default;
|
||||
$navmenu-inverse-link-active-bg: darken($navmenu-inverse-bg, 10%) !default;
|
||||
$navmenu-inverse-link-disabled-color: #444 !default;
|
||||
$navmenu-inverse-link-disabled-bg: transparent !default;
|
||||
$navmenu-inverse-link-color: $gray-light;
|
||||
$navmenu-inverse-link-hover-color: #fff;
|
||||
$navmenu-inverse-link-hover-bg: transparent;
|
||||
$navmenu-inverse-link-active-color: $navmenu-inverse-link-hover-color;
|
||||
$navmenu-inverse-link-active-bg: darken($navmenu-inverse-bg, 10%);
|
||||
$navmenu-inverse-link-disabled-color: #444;
|
||||
$navmenu-inverse-link-disabled-bg: transparent;
|
||||
|
||||
// Inverted navmenu brand label
|
||||
$navmenu-inverse-brand-color: $navmenu-inverse-link-color !default;
|
||||
$navmenu-inverse-brand-hover-color: #fff !default;
|
||||
$navmenu-inverse-brand-hover-bg: transparent !default;
|
||||
$navmenu-inverse-brand-color: $navmenu-inverse-link-color;
|
||||
$navmenu-inverse-brand-hover-color: #fff;
|
||||
$navmenu-inverse-brand-hover-bg: transparent;
|
||||
|
||||
// Inverted navmenu search
|
||||
// Normal navmenu needs no special styles or vars
|
||||
$navmenu-inverse-search-bg: lighten($navmenu-inverse-bg, 25%) !default;
|
||||
$navmenu-inverse-search-bg-focus: #fff !default;
|
||||
$navmenu-inverse-search-border: $navmenu-inverse-bg !default;
|
||||
$navmenu-inverse-search-placeholder-color: #ccc !default;
|
||||
$navmenu-inverse-search-bg: lighten($navmenu-inverse-bg, 25%);
|
||||
$navmenu-inverse-search-bg-focus: #fff;
|
||||
$navmenu-inverse-search-border: $navmenu-inverse-bg;
|
||||
$navmenu-inverse-search-placeholder-color: #ccc;
|
||||
|
||||
61
scss/build/_mixins.scss
Normal file
61
scss/build/_mixins.scss
Normal file
@@ -0,0 +1,61 @@
|
||||
//
|
||||
// These mixins are used when Jasny Bootstrap is
|
||||
// built without importing vanilla Bootstrap@mixin
|
||||
// --------------------------------------------------
|
||||
|
||||
|
||||
// CSS3 PROPERTIES
|
||||
// --------------------------------------------------
|
||||
|
||||
// Single side border-radius
|
||||
@mixin border-top-radius($radius) {
|
||||
border-top-right-radius: $radius;
|
||||
border-top-left-radius: $radius;
|
||||
}
|
||||
@mixin border-right-radius($radius) {
|
||||
border-bottom-right-radius: $radius;
|
||||
border-top-right-radius: $radius;
|
||||
}
|
||||
@mixin border-bottom-radius($radius) {
|
||||
border-bottom-right-radius: $radius;
|
||||
border-bottom-left-radius: $radius;
|
||||
}
|
||||
@mixin border-left-radius($radius) {
|
||||
border-bottom-left-radius: $radius;
|
||||
border-top-left-radius: $radius;
|
||||
}
|
||||
|
||||
// Drop shadows
|
||||
@mixin box-shadow($shadow) {
|
||||
-webkit-box-shadow: $shadow; // iOS <4@mixin 3 & Android <4@mixin 1
|
||||
box-shadow: $shadow;
|
||||
}
|
||||
@mixin transition($transition) {
|
||||
-webkit-transition: $transition;
|
||||
-o-transition: $transition;
|
||||
transition: $transition;
|
||||
}
|
||||
|
||||
// Transition
|
||||
@mixin transition-property($transition-property) {
|
||||
-webkit-transition-property: $transition-property;
|
||||
transition-property: $transition-property;
|
||||
}
|
||||
@mixin transition-delay($transition-delay) {
|
||||
-webkit-transition-delay: $transition-delay;
|
||||
transition-delay: $transition-delay;
|
||||
}
|
||||
@mixin transition-duration($transition-duration) {
|
||||
-webkit-transition-duration: $transition-duration;
|
||||
transition-duration: $transition-duration;
|
||||
}
|
||||
@mixin transition-timing-function($timing-function) {
|
||||
-webkit-transition-timing-function: $timing-function;
|
||||
transition-timing-function: $timing-function;
|
||||
}
|
||||
@mixin transition-transform($transition) {
|
||||
-webkit-transition: -webkit-transform $transition;
|
||||
-moz-transition: -moz-transform $transition;
|
||||
-o-transition: -o-transform $transition;
|
||||
transition: transform $transition;
|
||||
}
|
||||
218
scss/build/_variables.scss
Normal file
218
scss/build/_variables.scss
Normal file
@@ -0,0 +1,218 @@
|
||||
//
|
||||
// These variables are used when Jasny Bootstrap is built
|
||||
// without importing vanilla Bootstrap.
|
||||
// --------------------------------------------------------
|
||||
|
||||
//-- Colors
|
||||
//
|
||||
//## Gray colors for use across Bootstrap.
|
||||
|
||||
$gray-darker: lighten(#000, 13.5%); // #222
|
||||
$gray-dark: lighten(#000, 20%); // #333
|
||||
$gray: lighten(#000, 33.5%); // #555
|
||||
$gray-light: lighten(#000, 60%); // #999
|
||||
$gray-lighter: lighten(#000, 93.5%); // #eee
|
||||
|
||||
//-- Typography
|
||||
//
|
||||
//## Font size and line-height.
|
||||
|
||||
$font-size-base: 14px;
|
||||
$font-size-large: ceil(($font-size-base * 1.25)); // ~18px
|
||||
$font-size-small: ceil(($font-size-base * 0.85)); // ~12px
|
||||
|
||||
//** Unit-less `line-height` for use in components like buttons.
|
||||
$line-height-base: 1.428571429; // 20/14
|
||||
//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
|
||||
$line-height-computed: floor(($font-size-base * $line-height-base)); // ~20px
|
||||
|
||||
|
||||
//== Components
|
||||
//
|
||||
//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
|
||||
|
||||
$padding-base-vertical: 6px;
|
||||
$padding-base-horizontal: 12px;
|
||||
|
||||
$padding-large-vertical: 10px;
|
||||
$padding-large-horizontal: 16px;
|
||||
|
||||
$padding-small-vertical: 5px;
|
||||
$padding-small-horizontal: 10px;
|
||||
|
||||
$padding-xs-vertical: 1px;
|
||||
$padding-xs-horizontal: 5px;
|
||||
|
||||
$line-height-large: 1.33;
|
||||
$line-height-small: 1.5;
|
||||
|
||||
$border-radius-base: 4px;
|
||||
$border-radius-large: 6px;
|
||||
$border-radius-small: 3px;
|
||||
|
||||
|
||||
//== Tables
|
||||
//
|
||||
//## Customizes the `.table` component with basic values, each used across all table variations.
|
||||
|
||||
//** Background color used for `.table-hover`.
|
||||
$table-bg-hover: #f5f5f5;
|
||||
|
||||
|
||||
//-- Z-index master list
|
||||
//
|
||||
// Warning: Avoid customizing these values. They're used for a bird's eye view
|
||||
// of components dependent on the z-axis and are designed to all work together.
|
||||
//
|
||||
// Note: These variables are not generated into the Customizer.
|
||||
|
||||
$zindex-navmenu-fixed: 1030;
|
||||
$zindex-alert-fixed: 1035;
|
||||
|
||||
$zindex-modal: 1050;
|
||||
|
||||
|
||||
//== Media queries breakpoints
|
||||
//
|
||||
//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
|
||||
|
||||
// Extra small screen / phone
|
||||
$screen-xs: 480px;
|
||||
|
||||
// Small screen / tablet
|
||||
$screen-sm: 768px;
|
||||
|
||||
// Medium screen / desktop
|
||||
$screen-md: 992px;
|
||||
|
||||
// Large screen / wide desktop
|
||||
$screen-lg: 1200px;
|
||||
|
||||
//-- So media queries don't overlap when required, provide a maximum
|
||||
//
|
||||
// Note: These variables are not generated into the Customizer.
|
||||
$screen-xs-min: $screen-xs;
|
||||
$screen-sm-min: $screen-sm;
|
||||
$screen-md-min: $screen-md;
|
||||
$screen-lg-min: $screen-lg;
|
||||
|
||||
$screen-xs-max: ($screen-sm-min - 1);
|
||||
$screen-sm-max: ($screen-md-min - 1);
|
||||
$screen-md-max: ($screen-lg-min - 1);
|
||||
|
||||
//== Grid system
|
||||
//
|
||||
//## Define your custom responsive grid.
|
||||
|
||||
//** Padding between columns. Gets divided in half for the left and right.
|
||||
$grid-gutter-width: 30px;
|
||||
//** Point at which the navbar becomes uncollapsed.
|
||||
$grid-float-breakpoint: 768px;
|
||||
|
||||
//--
|
||||
$container-lg: ((1140px + $grid-gutter-width));
|
||||
//** Maximum with of a smooth container.
|
||||
$container-smooth: $container-lg;
|
||||
|
||||
//== Navbar
|
||||
//
|
||||
//##
|
||||
|
||||
// Basics of a navbar
|
||||
$navbar-height: 50px;
|
||||
$navbar-padding-horizontal: floor(($grid-gutter-width / 2));
|
||||
$navbar-padding-vertical: (($navbar-height - $line-height-computed) / 2);
|
||||
|
||||
|
||||
//== Navmenu
|
||||
//
|
||||
//##
|
||||
|
||||
// Basics of a navmenu
|
||||
$navmenu-width: 300px;
|
||||
$navmenu-margin-vertical: (0.5 * $line-height-computed);
|
||||
$navmenu-default-color: #777;
|
||||
$navmenu-default-bg: #f8f8f8;
|
||||
$navmenu-default-border: darken($navmenu-default-bg, 6.5%);
|
||||
|
||||
// Navmenu links
|
||||
$navmenu-default-link-color: #777;
|
||||
$navmenu-default-link-hover-color: #333;
|
||||
$navmenu-default-link-hover-bg: transparent;
|
||||
$navmenu-default-link-active-color: #555;
|
||||
$navmenu-default-link-active-bg: darken($navmenu-default-bg, 6.5%);
|
||||
$navmenu-default-link-disabled-color: #ccc;
|
||||
$navmenu-default-link-disabled-bg: transparent;
|
||||
|
||||
// Navmenu brand label
|
||||
$navmenu-default-brand-color: $navmenu-default-link-color;
|
||||
$navmenu-default-brand-hover-color: darken($navmenu-default-link-color, 10%);
|
||||
$navmenu-default-brand-hover-bg: transparent;
|
||||
|
||||
|
||||
// Inverted navmenu
|
||||
//
|
||||
// Reset inverted navmenu basics
|
||||
$navmenu-inverse-color: $gray-light;
|
||||
$navmenu-inverse-bg: #222;
|
||||
$navmenu-inverse-border: darken($navmenu-inverse-bg, 10%);
|
||||
|
||||
// Inverted navmenu links
|
||||
$navmenu-inverse-link-color: $gray-light;
|
||||
$navmenu-inverse-link-hover-color: #fff;
|
||||
$navmenu-inverse-link-hover-bg: transparent;
|
||||
$navmenu-inverse-link-active-color: $navmenu-inverse-link-hover-color;
|
||||
$navmenu-inverse-link-active-bg: darken($navmenu-inverse-bg, 10%);
|
||||
$navmenu-inverse-link-disabled-color: #444;
|
||||
$navmenu-inverse-link-disabled-bg: transparent;
|
||||
|
||||
// Inverted navmenu brand label
|
||||
$navmenu-inverse-brand-color: $navmenu-inverse-link-color;
|
||||
$navmenu-inverse-brand-hover-color: #fff;
|
||||
$navmenu-inverse-brand-hover-bg: transparent;
|
||||
|
||||
// Inverted navmenu search
|
||||
// Normal navmenu needs no special styles or vars
|
||||
$navmenu-inverse-search-bg: lighten($navmenu-inverse-bg, 25%);
|
||||
$navmenu-inverse-search-bg-focus: #fff;
|
||||
$navmenu-inverse-search-border: $navmenu-inverse-bg;
|
||||
$navmenu-inverse-search-placeholder-color: #ccc;
|
||||
|
||||
|
||||
//== Navs
|
||||
//
|
||||
//##
|
||||
|
||||
$nav-link-padding: 10px 15px;
|
||||
$nav-tabs-active-link-hover-border-color: #ddd;
|
||||
$nav-tabs-border-color: #ddd;
|
||||
|
||||
|
||||
//== Form states and alerts
|
||||
//
|
||||
//## Define colors for form feedback states and, by default, alerts.
|
||||
|
||||
$state-success-text: #3c763d;
|
||||
$state-success-bg: #dff0d8;
|
||||
$state-success-border: darken(adjust-hue($state-success-bg, -10), 5%);
|
||||
|
||||
$state-info-text: #31708f;
|
||||
$state-info-bg: #d9edf7;
|
||||
$state-info-border: darken(adjust-hue($state-info-bg, -10), 7%);
|
||||
|
||||
$state-warning-text: #8a6d3b;
|
||||
$state-warning-bg: #fcf8e3;
|
||||
$state-warning-border: darken(adjust-hue($state-warning-bg, -10), 5%);
|
||||
|
||||
$state-danger-text: #a94442;
|
||||
$state-danger-bg: #f2dede;
|
||||
$state-danger-border: darken(adjust-hue($state-danger-bg, -10), 5%);
|
||||
|
||||
|
||||
//== Alerts
|
||||
//
|
||||
//## Define alert colors, border radius, and padding.
|
||||
|
||||
$alert-border-radius: $border-radius-base;
|
||||
$alert-fixed-width: $screen-md;
|
||||
|
||||
5
scss/build/jasny-bootstrap.scss
Normal file
5
scss/build/jasny-bootstrap.scss
Normal file
@@ -0,0 +1,5 @@
|
||||
// Jasny Bootstrap with default variables
|
||||
|
||||
@import "variables";
|
||||
@import "mixins";
|
||||
@import "../jasny-bootstrap";
|
||||
@@ -1,4 +1,10 @@
|
||||
// Vanilla Bootstrap's "variables.scss" should already be imported
|
||||
/*!
|
||||
* Jasny Bootstrap v3.1.3 (http://jasny.github.io/bootstrap)
|
||||
* Copyright 2012-2015 Arnold Daniels
|
||||
* Licensed under Apache-2.0 (https://github.com/jasny/bootstrap/blob/master/LICENSE)
|
||||
*
|
||||
*/
|
||||
|
||||
// Core variables
|
||||
@import "variables";
|
||||
|
||||
Reference in New Issue
Block a user