Compare commits

...

133 Commits

Author SHA1 Message Date
Sergey Boltonosov
96439c033a Handle case when there are 2 menus on the page (fixes #526) 2018-06-09 19:23:13 +04:00
Arnold Daniels
38ac65da4d Fix travis build 2018-04-28 13:52:03 +02:00
Arnold Daniels
df158261a2 Merge pull request #563 from Minstel/253-Issues_when_navmenu_is_fixed_right__soft_fix
253 issues when navmenu is fixed right  soft fix
2018-04-28 13:34:04 +02:00
Arnold Daniels
ace5226662 Merge pull request #561 from Minstel/500-Offcanvas_menu_bug_on_screen_width_about_300px
500 offcanvas menu bug on screen width about 300px
2018-04-28 13:30:30 +02:00
Arnold Daniels
43390dc347 Merge pull request #560 from Minstel/289-Offcanvas_menu_positioned_on_right_works_incorrect_in_IE9
289 offcanvas menu positioned on right works incorrect in ie9
2018-04-28 13:29:40 +02:00
Arnold Daniels
ed0610ff45 Merge pull request #559 from Minstel/122-Clear_input_name_gives_issue_when_using_fileupload_with_AJAX
122 clear input name gives issue when using fileupload with ajax
2018-04-28 13:28:54 +02:00
Arnold Daniels
2da61eebb4 Merge branch 'master' into 122-Clear_input_name_gives_issue_when_using_fileupload_with_AJAX 2018-04-28 13:28:44 +02:00
Arnold Daniels
a6d8cb29cd Merge pull request #558 from Minstel/296-File_input_widget_doesnt_choose_file_on_UI
296 file input widget doesnt choose file on ui
2018-04-28 13:26:59 +02:00
Arnold Daniels
c4cd39eb24 Merge pull request #557 from Minstel/334-File_upload_set_max_file_size
334 file upload set max file size
2018-04-28 13:26:32 +02:00
Arnold Daniels
4a75156ef8 Merge pull request #548 from Minstel/191-btn-label_with_btn-block
Added styles for buttons with labels (fixes #191)
2018-04-28 13:24:24 +02:00
Arnold Daniels
694e44a406 Merge pull request #536 from poratuk/travis-build
Travis should build the project
2018-04-28 12:44:02 +02:00
minstel
bd1a44d5c6 Soft fix for determine auto-positioning (fixes #253) 2017-07-23 15:00:05 +07:00
minstel
50e0bb26b8 Use vertical scroll instead of horizontal for 299-300px window width (fixes #500) 2017-07-22 22:15:52 +07:00
minstel
315bb40a00 Fix for offcanvas reveal menu for IE9 (fixes #289) 2017-07-22 15:58:14 +07:00
minstel
b146864f9f Added clearName option (fixes #122) 2017-07-22 15:13:11 +07:00
minstel
fadafb57fe Reset input on init (fixes #296) 2017-07-22 14:38:39 +07:00
minstel
ce2df76a0c Allow float value for file max size 2017-07-22 13:45:51 +07:00
Nicolas Frandeboeuf
cad9c2be5a Update offcanvas.js 2017-07-22 00:35:44 +07:00
minstel
4f77865657 Set max file size for file input (fixes #334) 2017-07-22 00:32:33 +07:00
Arnold Daniels
ff0d5ad444 Merge pull request #549 from vicentenoriega/patch-1
Update package.json
2017-05-19 12:59:15 +02:00
Vicente Noriega
ce4a5a1dcb Update package.json
This change is proposed to solve this issue:

https://github.com/jasny/bootstrap/issues/545
2017-05-19 11:02:59 +02:00
minstel
e19cb28ec3 Added styles for buttons with labels (fixes #191) 2017-05-18 17:19:14 +07:00
Nicolas Frandeboeuf
ceb0388349 Update offcanvas.js 2017-05-18 16:04:38 +07:00
Arnold Daniels
64d1920836 Merge pull request #540 from jasny/navbar-offcanvas-example-not-working-468-fix
Navbar offcanvas example not working 468 fix
2017-04-13 16:57:02 +02:00
Arnold Daniels
018a5c8f09 Merge pull request #543 from poratuk/initMouseEvent-deprecated
Deprecated initMouseEvent #506
2017-04-13 16:54:46 +02:00
Andrii Cherytsya
983f04b484 Small event fix 2017-04-12 11:19:36 +03:00
Andrii Cherytsya
6fdfd0d6fa Deprecated initMouseEvent 2017-04-12 11:08:20 +03:00
john connor
b64f125f57 Fix path in nav menu 2017-04-08 05:03:08 +07:00
john connor
c34685e41f Fix bootstrap version in index files 2017-04-08 04:52:46 +07:00
john connor
39ce3c3ee7 Fix assets path in starter template 2017-04-08 04:21:20 +07:00
john connor
894ee1959a Fix version of bootstrap in includes 2017-04-08 04:16:38 +07:00
Arnold Daniels
3ec96e91a7 Merge pull request #535 from poratuk/fix-fileinput-name
Fileinput not works on MS Edge 25/ HTML 13 and IE 13
2017-04-03 01:09:12 +02:00
Andrew Cherytsya
04e9dd64b7 Added dist folder for npm. 2017-03-31 19:27:12 +03:00
Andrew Cherytsya
83fe5fa24b Roll back changes for development 2017-03-31 13:20:09 +03:00
Andrew Cherytsya
3fa58b4b84 returned skip_cleanup: true to the npm deploy 2017-03-31 11:36:51 +03:00
Andrew Cherytsya
0fff1e3894 removed git reset --hard 2017-03-31 11:26:51 +03:00
Andrew Cherytsya
dd5d98cccf Added clean up to npm 2017-03-31 11:20:22 +03:00
Andrew Cherytsya
867cb3ee05 Test commit 2017-03-31 10:52:34 +03:00
Andrew Cherytsya
c733e5a3e1 Test 2017-03-31 09:28:55 +03:00
Andrew Cherytsya
86b725b4b9 Removed commit from npm version 2017-03-30 16:35:36 +03:00
Andrew Cherytsya
78b6db8620 Added git reset hard 2017-03-30 16:26:28 +03:00
Andrew Cherytsya
bce672735b Added npm version to travis 2017-03-30 16:05:24 +03:00
Andrew Cherytsya
4e9aa011e9 Some small text changes 2017-03-30 16:00:57 +03:00
Andrew Cherytsya
ec36d74282 Canged npm version to 3.2.7 in npm (same as tag) 2017-03-30 15:36:05 +03:00
Andrew Cherytsya
c04030c966 changed npm packege json for test 2017-03-30 15:29:08 +03:00
Andrew Cherytsya
342a820ae0 Added npm 2017-03-30 15:05:10 +03:00
Andrew Cherytsya
8a926ef4fd added cd .. 2017-03-30 14:49:22 +03:00
Andrew Cherytsya
cdf21df7bc removed npm 2017-03-30 14:34:54 +03:00
Andrew Cherytsya
4f4129fc00 Change travis 2017-03-30 14:15:30 +03:00
Andrew Cherytsya
656f3b6d7c Test small changes 2017-03-30 14:00:41 +03:00
Andrew Cherytsya
bdef62d9a4 Fixed input text 2017-03-30 12:36:46 +03:00
Arnold Daniels
d8229465e3 Merge pull request #529 from poratuk/fileinput-exif-image
Support exif orientation
2017-03-07 18:33:03 +01:00
Arnold Daniels
b07d756261 Merge pull request #530 from poratuk/offcanvas-iPhone-scroll-fix
Copy css rules to the scss
2017-03-07 15:22:30 +01:00
Andrew Cherytsya
53e07863ee Copy css rules to the scss 2017-03-07 16:20:14 +02:00
Andrew Cherytsya
a1854f43dd Removed console 2017-03-07 16:09:49 +02:00
Arnold Daniels
a00bd86456 Merge pull request #521 from poratuk/offcanvas-iPhone-scroll-fix
data-disable-scrolling="true" not working on iPhone
2017-03-07 14:50:28 +01:00
Arnold Daniels
7cdd06b24f Update navmenu.less 2017-03-07 14:49:55 +01:00
Andrew Cherytsya
1d5dca063e Add posibilities #370: Support exif orientation 2017-03-07 15:40:12 +02:00
Arnold Daniels
d7805a4a6b Merge pull request #524 from poratuk/row-without-link
Target is undefined on row whitout link (rowlink)
2017-03-07 10:26:49 +01:00
Arnold Daniels
51ae080201 Update rowlink.js
Use `===`
2017-03-07 10:26:41 +01:00
Arnold Daniels
9830085c54 Merge pull request #525 from poratuk/overflow-very-slow
Fix #362: Offcanvas push can be very slow
2017-03-07 10:25:54 +01:00
Arnold Daniels
dc0da4d806 Merge pull request #528 from poratuk/fileinput-validation-by-jquery
Fix #345:  Input file validation using Jasny v3.1.3 and jQuery Validator v1.13.1
2017-03-07 10:25:20 +01:00
Andrew Cherytsya
b4e9b58d05 Fix #345: Input file validation using Jasny v3.1.3 and jQuery Validator v1.13.1 2017-03-06 14:34:10 +02:00
Andrew Cherytsya
90ea51f3af Fix #362: getCanvasElements loop got many time 2017-03-02 11:51:58 +02:00
Andrew Cherytsya
06a25dd47e Fix #366: Target is undefined on row whitout link (rowlink) 2017-03-01 17:44:54 +02:00
Andrew Cherytsya
4879b5465a Fixed iPhone scrolling on disableScrolling: true 2017-02-28 15:58:32 +02:00
Arnold Daniels
7afeefdcd9 Merge pull request #519 from poratuk/button-groups-with-labels
Button groups with button labels have radius
2017-02-27 23:36:23 +01:00
Arnold Daniels
8b2b6b05a1 Merge pull request #518 from poratuk/less-to-scss-compare
Sass files are missing things
2017-02-27 23:36:09 +01:00
Andrew Cherytsya
36cfc19cc5 Fix Button groups with button labels 2017-02-26 12:33:42 +02:00
Andrew Cherytsya
4066d9dbc7 Compare some scss files from less 2017-02-26 10:28:53 +02:00
Andrew Cherytsya
70232906c2 Compared variables and mixins 2017-02-25 19:47:45 +02:00
Arnold Daniels
9ab27cddf2 Merge pull request #515 from Minstel/318-long_string_in_dropdown
Wrap long text in dropdown menu (fixes #318)
2017-02-24 23:48:28 +01:00
Arnold Daniels
6cf7891ed8 Merge pull request #513 from Minstel/9-Multiple_file_selection_with_custom_file_uploader
Allow multiple file upload
2017-02-24 23:48:09 +01:00
Arnold Daniels
03368d27fe Merge pull request #516 from Minstel/264-Hover_over_select_file_doesnt_always_result_in_mouse_pointer
Make cursor pointer over file upload button (fixes #264)
2017-02-24 23:47:10 +01:00
Arnold Daniels
25b0442234 Merge pull request #517 from Minstel/278-Bootstrap_version_3.2.0_vs_Bootstrap_3.1.0_conflict
Fix for setting menu width. Use bootstrap 3.3.7 (fixes #278)
2017-02-24 23:46:48 +01:00
minstel
76b91df9a4 Fix for setting menu width. Use bootstrap 3.3.7 (fixes #278) 2017-02-25 00:49:44 +07:00
minstel
cdee0c4bf1 Make cursor pointer over file upload button (fixes #264) 2017-02-24 22:44:54 +07:00
minstel
b16251c47c Wrap long text in dropdown menu (fixes #318) 2017-02-23 23:07:54 +07:00
minstel
4b5f033d46 Allow multiple file upload (fixes #9) 2017-02-23 16:47:58 +07:00
Arnold Daniels
4b7285346a Update offcanvas.js
Fixup
2017-01-27 15:13:18 +01:00
Arnold Daniels
aced3f383d Merge pull request #503 from nicofrand/patch-1
Fix data-disablescrolling=false not working
2017-01-26 17:42:22 +01:00
Arnold Daniels
06251c5733 Merge branch 'master' into patch-1 2017-01-26 17:42:07 +01:00
Arnold Daniels
0013f7af79 Merge pull request #508 from Minstel/399-Off_canvas_hide_and_hidden_are_not_triggered_on_resize_(recalc)
Trigger hide events on recalc (fixes #399)
2017-01-20 03:23:58 +01:00
Arnold Daniels
6b71c9f9af Merge pull request #507 from Minstel/422-Rowlink-Open_with_ctrl-clic_or_mouse_click
Allow open rowlink with ctrl/middle-mouse click (fixes #422)
2017-01-20 03:23:20 +01:00
Arnold Daniels
60cc232172 Merge pull request #505 from Minstel/458-disable_background_elements_when_offcanvas_is_activated
Can use offcanvas backdrop (fixes #458)
2017-01-20 03:22:50 +01:00
Arnold Daniels
dc06e4e935 Merge pull request #502 from Minstel/462-Offcanvas_closing_when_interacting_with_dropdown
Fix offcanvas close issue (fixes #462)
2017-01-20 03:20:33 +01:00
Arnold Daniels
6d42b2ae68 Merge pull request #501 from Minstel/443-How_to_close_the_left_hand_nav_for_really_small_screens
Menu width should always be smaller then screen width (fixes #443)
2017-01-20 03:20:09 +01:00
Arnold Daniels
32776b61e7 Merge pull request #499 from Minstel/451-Javascript_clone_more_div_offcanvas-clone
Do not create non-needed menu clones (fixes #451)
2017-01-20 03:19:24 +01:00
Arnold Daniels
a60257d123 Merge pull request #498 from Minstel/355-Offcanvas_menu_not_working_properly
Fixes for offcanvas menu bag for bootstrap v3.2.0 (fixes #355)
2017-01-20 03:18:53 +01:00
Arnold Daniels
ff9991ceac Merge pull request #486 from proferabg/master
Add Hexadecimal Mask
2017-01-20 03:18:42 +01:00
Arnold Daniels
b785791bfa Merge pull request #497 from Minstel/SVG_support_for_file_input_preview
SVG support for file input preview (fixes #489)
2017-01-20 03:18:21 +01:00
minstel
16a8d70a67 Trigger hide events on recalc (fixes #399) 2017-01-19 14:27:49 +07:00
minstel
1ee0865acd Allow open rowlink with ctrl/middle-mouse click (fixes #422) 2017-01-19 10:50:16 +07:00
minstel
5f27188f69 Can use offcanvas backdrop (fixes #458) 2017-01-18 12:01:45 +07:00
Nicolas Frandeboeuf
a4f103ddde Update offcanvas.js 2017-01-16 18:46:28 +01:00
Nicolas Frandeboeuf
f095e50394 Fix data-disablescrolling=false not working 2017-01-16 17:58:39 +01:00
minstel
04ab9af0fb Fix offcanvas close issue (fixes #462) 2017-01-14 00:04:32 +07:00
minstel
a1c4a672dd Menu width should always be smaller then screen width (fixes #443) 2017-01-13 13:37:22 +07:00
minstel
ddece62a51 Do not create non-needed menu clones (fixes #451) 2017-01-12 01:36:03 +07:00
minstel
502b0c9d3e Fixes for offcanvas menu bag for bootstrap v3.2.0 (fixes #355) 2017-01-12 00:06:45 +07:00
minstel
cae5798d8f SVG support for file input preview (fixes #489) 2017-01-11 22:14:17 +07:00
proferabg
e54f0dcc30 Add Hexadecimal Mask 2016-10-21 17:10:30 -04:00
Arnold Daniels
c34f648479 Merge pull request #482 from poratuk/travis-publishing
Fixed issue 179 by commit: ba75c17 revert
2016-10-03 17:03:11 +02:00
Andrii Cherytsya
6d18413346 Fixed issue 179 by commit: ba75c17 revert 2016-10-03 17:54:06 +03:00
Arnold Daniels
0c61d937d1 Merge pull request #481 from poratuk/travis-publishing
Travis automatic git create Release and npm update package
2016-10-03 16:38:36 +02:00
Andrii Cherytsya
d3044d67f0 Changed back js file formatiing.
Removed 'jscs' test from grunt (jscss formating).
2016-10-03 17:29:17 +03:00
Andrii Cherytsya
b18bed6237 Merge branch 'travis-publishing'
Conflicts:
	dist/js/jasny-bootstrap.js
	dist/js/jasny-bootstrap.min.js
	js/fileinput.js
2016-10-03 16:22:56 +03:00
Andrii Cherytsya
119508c28b Fixed js files after grunt formatting 2016-10-03 14:20:12 +03:00
Arnold Daniels
e096e63441 Merge pull request #466 from prodrigestivill/issue-179
Fix issue 179 (stack overflow on reset)
2016-10-03 11:39:40 +02:00
Arnold Daniels
74313102ea Merge pull request #480 from poratuk/issue-263
Fixed issues #263
2016-10-03 11:39:03 +02:00
Andrii Cherytsya
7d915698a4 Fixed releases archives 2016-10-03 12:20:59 +03:00
Andrii Cherytsya
1d7b2a6c0a Forgot update some files 2016-10-03 11:43:32 +03:00
Andrii Cherytsya
e58ba7f3d2 Removed dist folder 2016-10-03 11:23:36 +03:00
Andrii Cherytsya
1fb2ef8ab6 Travis automatic git create Release and npm update package 2016-10-03 11:19:06 +03:00
Andrii Cherytsya
25cc9b6ff5 Fixed issues #263 2016-10-03 11:07:56 +03:00
Pau Rodriguez-Estivill
97e2d4ad48 Compiled. 2016-08-21 15:16:38 +02:00
Arnold Daniels
8900005a96 Update README.md 2016-08-15 11:54:47 +02:00
Pau Rodriguez-Estivill
ba08673672 Added reseted.bs.fileinput to docs. 2016-07-16 20:24:07 +02:00
Pau Rodriguez-Estivill
ba75c1732e Fixed issue 179, stack overflow. 2016-07-16 02:23:14 +02:00
Arnold Daniels
e4be342ee6 Update README.md
Added link
2016-07-10 08:24:27 +02:00
Arnold Daniels
feea0e59b5 Merge pull request #444 from brcontainer/patch-1
Firefox returns empty in `.css()`
2016-06-08 19:49:29 +02:00
Arnold Daniels
e5c67d158f Merge pull request #450 from fstiehle/patch-1
Performance Improvement var $this = $(this);
2016-06-08 19:48:55 +02:00
Arnold Daniels
06b88f8f34 Merge pull request #453 from cariboufute/master
Converted mixins.less into missing file _mixins.scss
2016-06-08 19:48:09 +02:00
Arnold Daniels
a527039e86 Merge pull request #456 from NicholasGWK/master
Update package.json to fix main path
2016-06-08 19:47:51 +02:00
Nick
0e75e9562e Update package.json 2016-05-02 12:03:26 -03:00
CaribouFuté
42ab5a464f =Converted mixins.less into missing file _mixins.scss 2016-03-27 14:49:11 -04:00
fstiehle
27aa305f1f Performance Improvement var $this = $(this);
A minor thing: avoid creating a new jQuery object every time. Performance Improvement?
2016-03-22 12:43:08 +01:00
Guilherme Nascimento
6191dadc66 Update fileinput.js 2016-03-09 14:12:12 -03:00
Guilherme Nascimento
d8aaaf8e96 Update jasny-bootstrap.js 2016-03-09 14:11:44 -03:00
Guilherme Nascimento
9e5683c79a Update jasny-bootstrap.min.js 2016-03-09 14:07:51 -03:00
Guilherme Nascimento
9f325228bc Update jasny-bootstrap.js 2016-03-09 14:05:17 -03:00
Guilherme Nascimento
5c2e463d13 Firefox returns empty in .css()
Firefox returns empty in `.css()` and parseInt("", 10) returns NaN
Any calcs with NaN returns NaN
2016-03-09 14:02:32 -03:00
Arnold Daniels
decb890084 Merge pull request #434 from jasny/revert-393-master
Revert "fix csp warning about unsafe-inline style-src"
2016-01-07 19:40:47 -04:00
40 changed files with 1027 additions and 1901 deletions

2
.gitignore vendored
View File

@@ -1,8 +1,10 @@
# Ignore docs files
_gh_pages
_site
dist
.ruby-version
# Numerous always-ignore extensions
*.diff
*.err

46
.npmignore Normal file
View 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

View File

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

View File

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

View File

@@ -1,4 +1,4 @@
# [Jasny Bootstrap](http://jasny.github.io/bootstrap/) ![Bower](https://img.shields.io/bower/v/jasny-bootstrap.svg) [![Build Status](https://secure.travis-ci.org/jasny/bootstrap.png)](http://travis-ci.org/jasny/bootstrap) [![Join the chat at https://gitter.im/jasny/bootstrap](https://img.shields.io/gitter/room/nwjs/nw.js.svg)](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

View File

@@ -1,6 +1,6 @@
# Dependencies
markdown: rdiscount
pygments: true
highlighter: true
# Permalinks
permalink: pretty

View File

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

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

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

View File

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

File diff suppressed because one or more lines are too long

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -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">&times;</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">&times;</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>&lt;form&gt;</code> replacing a standard <code>&lt;input type="file"&gt;</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>&lt;input&gt;</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>

View File

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

View File

@@ -48,6 +48,7 @@
'9': "[0-9]",
'a': "[A-Za-z]",
'w': "[A-Za-z0-9]",
'h': "[A-Fa-f0-9]",
'*': "."
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -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
View 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;
}

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,5 @@
// Jasny Bootstrap with default variables
@import "variables";
@import "mixins";
@import "../jasny-bootstrap";

View File

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