Compare commits

...

181 Commits

Author SHA1 Message Date
Arnold Daniels
7258cacb83 Update README.md
Sunset this library
2025-02-04 11:30:17 +01:00
Arnold Daniels
d2eb1fb1e1 Merge pull request #615 from bekicot/patch-1
_config.yml: Update dist location to a working release
2020-12-08 19:45:05 +01:00
Yana Agun Siswanto
89735b2711 _config.yml: Update dist location to a working release
https://github.com/jasny/bootstrap/releases/download/v4.0.0/jasny-bootstrap-4.0.0-dist.zip is currently broken
2020-10-31 08:04:27 +07:00
Arnold Daniels
84922a48ad Update to new carbon ad script.
[skip ci]
2020-10-02 14:11:29 +02:00
Arnold Daniels
22de39727a Update components.html
Fixes #609
2020-01-13 10:07:40 +01:00
Arnold Daniels
37e8f5b94f Merge pull request #599 from Minstel/Docs_link_to_v3.2.0
Add docs link to v3.2.0
2019-02-11 18:49:23 +01:00
Sergey Boltonosov
d3c511c8f6 Add docs link to v3.2.0 2019-02-11 23:13:10 +07:00
Arnold Daniels
9e58a5d9cf Changed NPM credentials for Travis 2019-02-11 10:56:33 +01:00
Arnold Daniels
24298984ad Update version in package.json 2019-02-11 10:43:02 +01:00
Arnold Daniels
6afad69109 Set Travis release credentials 2019-02-11 09:56:22 +01:00
Arnold Daniels
97c0ff91db Merge remote-tracking branch 'minstel/Bootstrap_4_docs' 2019-02-11 09:32:48 +01:00
Arnold Daniels
d80bd194a1 Merge pull request #592 from Minstel/Bootstrap_4_offcanvas
Migrate offcanvas menu to BS 4
2019-02-11 09:06:50 +01:00
Arnold Daniels
9dd9a8e4d1 Merge pull request #593 from Minstel/Bootstrap_4_buttons
Migrate buttons to BS 4
2019-02-11 08:50:18 +01:00
Arnold Daniels
5de1b9dc02 Merge pull request #591 from Minstel/Remove_inputmask_plugin
Remove input mask plugin
2019-02-11 08:49:49 +01:00
Arnold Daniels
d1e43de6b0 Merge pull request #590 from Minstel/Bootstrap_4_file_input
Bootstrap 4 file input
2019-02-11 08:48:13 +01:00
Arnold Daniels
ed9edcb85b Merge pull request #598 from Minstel/Update_cdnjs_from_npm
Autoupdate cdnjs from npm
2019-02-11 08:47:56 +01:00
Minstel
a54f8681e7 Update version number to 4 2019-01-27 02:22:29 +07:00
Minstel
5adf3e9ec6 Minor docs fix for buttons 2019-01-27 02:14:16 +07:00
Minstel
52e4dc68fb Fix links to docs in readme 2019-01-27 01:15:05 +07:00
Minstel
65c48e4363 Autoupdate cdnjs from npm 2019-01-27 01:05:14 +07:00
Minstel
5aed4dbefb Dropped bower support 2019-01-26 22:05:35 +07:00
Minstel
4f852dbf72 Fixed showing modal when clicking on rowlink example in docs 2019-01-26 14:38:21 +07:00
Minstel
366f99a7f4 Described migration changes in docs 2019-01-26 13:48:58 +07:00
Minstel
cb25b8fb07 Fixed scrollspy for side-menu on docs pages 2019-01-26 02:48:50 +07:00
Minstel
7b376941d7 Fix docs sidebar static position on scroll 2019-01-25 22:42:02 +07:00
Minstel
9a1a74cb44 Use content from some removed pages on Components page. Updates and fixes to support BS4 2019-01-24 22:40:44 +07:00
Minstel
da898fd992 Use BS4 resources 2019-01-24 22:37:35 +07:00
Minstel
1cef9a55ed Remove Css, Customize and Javascript pages 2019-01-24 22:36:42 +07:00
Sergey Boltonosov
06124ef9fb Merge branch 'Remove_inputmask_plugin' into Bootstrap_4_docs 2018-10-18 03:41:36 +07:00
Sergey Boltonosov
0193cb5563 Merge branch 'Bootstrap_4_buttons' into Bootstrap_4_docs 2018-10-18 03:38:03 +07:00
Sergey Boltonosov
4e2d518031 Merge branch 'Bootstrap_4_offcanvas' into Bootstrap_4_docs 2018-10-18 03:37:55 +07:00
Sergey Boltonosov
82bca26a45 Merge branch 'Bootstrap_4_file_input' into Bootstrap_4_docs 2018-10-18 03:37:29 +07:00
Sergey Boltonosov
86b298a706 Migrate buttons to BS 4 2018-10-18 03:26:59 +07:00
Sergey Boltonosov
a37b412907 Migrate offcanvas menu to BS 4 2018-10-18 03:04:35 +07:00
Sergey Boltonosov
4f218f5363 Minor fix to docs 2018-10-16 02:18:40 +07:00
Sergey Boltonosov
75db81ea67 Remove input mask plugin 2018-10-16 02:09:07 +07:00
Sergey Boltonosov
ac49ab9a89 Make file input icon optional 2018-10-16 01:44:42 +07:00
Sergey Boltonosov
9d5b300656 Migrate file-input to BS 4 2018-10-16 01:06:47 +07:00
Arnold Daniels
a542efa067 Merge pull request #581 from jasny/dropdown_menu_item_click_causes_page_going_below_the_offcanvas_menu
Fix bug caused by menu clone (fixes #484)
2018-10-10 09:24:03 +02:00
Arnold Daniels
19ebcff03b Merge pull request #582 from jasny/Auto_positioning_isnt_working_in_demo
Fix demo of navbar-offcanvas (fixes #417)
2018-06-13 02:19:45 +06:00
Arnold Daniels
5660be785c Merge pull request #583 from jasny/Mention_backdrop_option_in_docs
Mention backdrop option in docs
2018-06-13 02:19:16 +06:00
Arnold Daniels
59af819e4f Merge branch 'master' into dropdown_menu_item_click_causes_page_going_below_the_offcanvas_menu 2018-06-13 02:17:35 +06:00
Arnold Daniels
b9e2c03fc0 Merge pull request #580 from jasny/Two_menu_not_works
Handle case when there are 2 menus on the page (fixes #526)
2018-06-13 02:15:46 +06:00
Arnold Daniels
0bf8df46c6 Merge pull request #579 from jasny/Offcanvas_data_attributes_on_canvas_element
Allow options on canvas element
2018-06-13 02:15:06 +06:00
Sergey Boltonosov
e9a3302a6d Mention backdrop option in docs 2018-06-10 23:51:43 +04:00
Sergey Boltonosov
6bc6eb2731 Fix demo of navbar-offcanvas (fixes #417) 2018-06-10 23:23:02 +04:00
Sergey Boltonosov
cce8a6d3a1 Fix bug caused by menu clone (fixes #484) 2018-06-10 16:36:54 +04:00
Sergey Boltonosov
96439c033a Handle case when there are 2 menus on the page (fixes #526) 2018-06-09 19:23:13 +04:00
Sergey Boltonosov
4633a6188e Allow options on canvas element 2018-06-08 22:45:42 +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
72 changed files with 2848 additions and 4460 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,44 @@
language: node_js
node_js:
- "0.10"
before_install:
- sudo pip install --use-mirrors -r test-infra/requirements.txt
- rvm use 1.9.3 --fuzzy
- '4'
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
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: "utwXW5WGahq3fXq5q3x5ajdbbj6lUEpHgLW9GVZy5Mf+4MzU4CeZpB3SLfV6KDegzVMZFwd2C6MG/NZZ2Fnqoz9W22DBxMFTPHbmi69IKMd7lHG3/m0bU4Zj/AuS9+Lnky6ilf+j4BWCX4+2XbMxH4/O9oT87R8NGDQvArW2CBk="
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: "JG2WD24x0TVSVcG5psFUAgdnWiGDdHeZS9PF+f9WuPzWHiwvMj5JePkPKQEbWuPFZWzpV7y6UGOkjxd87or5WmqVDWcQEn+94OzH1LBIUvlHJJtmyD4BxymEXhy6ftmJyeufTwhbDfNnuh5cDn9J0H5aRl1SZTzwKedGlCrjgiE="
skip_cleanup: true
on:
branch: master
repo: jasny/bootstrap
tags: true

View File

@@ -18,7 +18,6 @@ module.exports = function (grunt) {
var fs = require('fs');
var path = require('path');
var BsLessdocParser = require('./grunt/bs-lessdoc-parser.js');
var generateRawFilesJs = require('./grunt/bs-raw-files-generator.js');
var updateShrinkwrap = require('./grunt/shrinkwrap.js');
// Project configuration.
@@ -37,8 +36,7 @@ module.exports = function (grunt) {
clean: {
dist: ['dist', 'docs/dist'],
jekyll: ['_gh_pages'],
assets: ['assets/css/*.min.css', 'assets/js/*.min.js'],
jade: ['jade/*.jade']
assets: ['assets/css/*.min.css', 'assets/js/*.min.js']
},
jshint: {
@@ -58,7 +56,7 @@ module.exports = function (grunt) {
src: 'js/tests/unit/*.js'
},
assets: {
src: ['docs/assets/js/application.js', 'docs/assets/js/customizer.js']
src: ['docs/assets/js/application.js']
}
},
@@ -76,7 +74,7 @@ module.exports = function (grunt) {
src: 'js/tests/unit/*.js'
},
assets: {
src: ['docs/assets/js/application.js', 'docs/assets/js/customizer.js']
src: ['docs/assets/js/application.js']
}
},
@@ -119,21 +117,6 @@ module.exports = function (grunt) {
src: '<%= concat.bootstrap.dest %>',
dest: 'dist/js/<%= pkg.name %>.min.js'
},
customize: {
options: {
preserveComments: 'some'
},
src: [
'docs/assets/js/vendor/less.min.js',
'docs/assets/js/vendor/jszip.min.js',
'docs/assets/js/vendor/uglify.min.js',
'docs/assets/js/vendor/blob.js',
'docs/assets/js/vendor/filesaver.js',
'docs/assets/js/raw-files.min.js',
'docs/assets/js/customizer.js'
],
dest: 'docs/assets/js/customize.min.js'
},
docsJs: {
options: {
preserveComments: 'some'
@@ -250,24 +233,6 @@ module.exports = function (grunt) {
docs: {}
},
jade: {
compile: {
options: {
pretty: true,
data: function () {
var filePath = path.join(__dirname, 'less/build/variables.less');
var fileContent = fs.readFileSync(filePath, { encoding: 'utf8' });
var parser = new BsLessdocParser(fileContent);
return { sections: parser.parseFile() };
}
},
files: {
'docs/_includes/customizer-variables.html': 'docs/jade/customizer-variables.jade',
'docs/_includes/nav-customize.html': 'docs/jade/customizer-nav.jade'
}
}
},
validation: {
options: {
charset: 'utf-8',
@@ -346,7 +311,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']);
}
// Skip HTML validation if running a different subset of the test suite
if (!process.env.TWBS_TEST || process.env.TWBS_TEST === 'validate-html') {
@@ -374,7 +339,7 @@ module.exports = function (grunt) {
grunt.registerTask('dist', ['clean:dist', 'dist-css', 'dist-js', 'dist-docs']);
// Default task.
grunt.registerTask('default', ['dist', 'build-customizer']);
grunt.registerTask('default', ['dist']);
// Documentation task.
grunt.registerTask('docs', ['jekyll', 'dist-docs']);
@@ -384,14 +349,6 @@ module.exports = function (grunt) {
// This can be overzealous, so its changes should always be manually reviewed!
grunt.registerTask('change-version-number', 'replace');
// task for building customizer
grunt.registerTask('build-customizer', ['build-customizer-html', 'build-raw-files']);
grunt.registerTask('build-customizer-html', 'jade');
grunt.registerTask('build-raw-files', 'Add scripts/less files to customizer.', function () {
var banner = grunt.template.process('<%= banner %>');
generateRawFilesJs(banner);
});
// Task for updating the npm packages used by the Travis build.
grunt.registerTask('update-shrinkwrap', ['exec:npmUpdate', 'exec:npmShrinkWrap', '∆update-shrinkwrap']);
grunt.registerTask('∆update-shrinkwrap', function () { updateShrinkwrap.call(this, grunt); });

View File

@@ -1,13 +1,15 @@
# [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)
> This extension is for **Bootstrap 4**. Almost all of the components of this extension have been added to Bootstrap 5, making this library redundant.
> Because Bootstrap 4 has reached its end of life, Jasny Bootstrap will no longer be updated.
# [Jasny Bootstrap](http://jasny.github.io/bootstrap/)
Jasny Bootstrap is an extension of the famous [Bootstrap](http://getbootstrap.com/), adding the following components:
* [Button labels](http://jasny.github.io/bootstrap/css/#buttons-labels)
* [Button labels](http://jasny.github.io/bootstrap/components/#buttons-labels)
* [Off canvas navmenu](http://jasny.github.io/bootstrap/components/#navmenu)
* [Fixed alerts](http://jasny.github.io/bootstrap/components/#alerts-fixed)
* [Row link](http://jasny.github.io/bootstrap/javascript/#rowlink)
* [Input mask](http://jasny.github.io/bootstrap/javascript/#inputmask)
* [File input widget](http://jasny.github.io/bootstrap/javascript/#fileinput)
* [Row link](http://jasny.github.io/bootstrap/components/#rowlink)
* [File input widget](http://jasny.github.io/bootstrap/components/#fileinput)
To get started, check out <http://jasny.github.io/bootstrap>!
@@ -16,9 +18,8 @@ To get started, check out <http://jasny.github.io/bootstrap>!
Four quick start options are available:
* [Download the latest release](https://github.com/jasny/bootstrap/releases/download/v3.1.3/jasny-bootstrap-3.1.3-dist.zip).
* [Download the latest release](https://github.com/jasny/bootstrap/releases/download/v4.0.0/jasny-bootstrap-4.0.0-dist.zip).
* Clone the repo: `git clone git://github.com/jasny/bootstrap.git`.
* Install with [Bower](http://bower.io): `bower install jasny-bootstrap`.
* Use [cdnjs](http://cdnjs.com/libraries/jasny-bootstrap).
* Install with [Meteor](https://meteor.com): `meteor add jasny:bootstrap`.
@@ -148,9 +149,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
@@ -19,13 +19,13 @@ exclude:
- "vendor"
# Custom vars
current_version: 3.1.3
current_version: 4.0.0
repo: https://github.com/jasny/bootstrap
download:
source: https://github.com/jasny/bootstrap/archive/v3.1.3.zip
dist: https://github.com/jasny/bootstrap/releases/download/v3.1.3/jasny-bootstrap-3.1.3-dist.zip
source: https://github.com/jasny/bootstrap/archive/v4.0.0.zip
dist: https://github.com/jasny/bootstrap/releases/download/v4.0.0/jasny-bootstrap-v4.0.0.zip
cdn:
css: //cdnjs.cloudflare.com/ajax/libs/jasny-bootstrap/3.1.3/css/jasny-bootstrap.min.css
js: //cdnjs.cloudflare.com/ajax/libs/jasny-bootstrap/3.1.3/js/jasny-bootstrap.min.js
css: //cdnjs.cloudflare.com/ajax/libs/jasny-bootstrap/4.0.0/css/jasny-bootstrap.min.css
js: //cdnjs.cloudflare.com/ajax/libs/jasny-bootstrap/4.0.0/js/jasny-bootstrap.min.js

View File

@@ -1,20 +0,0 @@
{
"name": "jasny-bootstrap",
"main": [
"./dist/css/jasny-bootstrap.css",
"./dist/js/jasny-bootstrap.js"
],
"ignore": [
"**/.*",
"_config.yml",
"CNAME",
"composer.json",
"CONTRIBUTING.md",
"docs",
"js/tests"
],
"dependencies": { },
"devDependencies": {
"bootstrap": ">= 3.1.0"
}
}

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

@@ -11,6 +11,6 @@
<div id="carbonads-container">
<script async type="text/javascript" src="//cdn.carbonads.com/carbon.js?zoneid=1673&serve=C6AILKT&placement=jansy" id="_carbonads_js"></script>
<script async type="text/javascript" src="//cdn.carbonads.com/carbon.js?serve=CKYIK277&placement=wwwjasnynet" id="_carbonads_js"></script>
</div>

View File

@@ -1,335 +0,0 @@
<!-- NOTE: DO NOT EDIT THE FOLLOWING SECTION DIRECTLY! It is autogenerated via the `build-customizer-html` Grunt task using the customizer-variables.jade template.-->
<h2 id="components">Components</h2>
<p>Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).</p>
<div class="row">
<div class="bs-customizer-input">
<label for="input-@padding-base-vertical">@padding-base-vertical</label>
<input id="input-@padding-base-vertical" type="text" value="6px" data-var="@padding-base-vertical" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@padding-base-horizontal">@padding-base-horizontal</label>
<input id="input-@padding-base-horizontal" type="text" value="12px" data-var="@padding-base-horizontal" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@padding-large-vertical">@padding-large-vertical</label>
<input id="input-@padding-large-vertical" type="text" value="10px" data-var="@padding-large-vertical" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@padding-large-horizontal">@padding-large-horizontal</label>
<input id="input-@padding-large-horizontal" type="text" value="16px" data-var="@padding-large-horizontal" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@padding-small-vertical">@padding-small-vertical</label>
<input id="input-@padding-small-vertical" type="text" value="5px" data-var="@padding-small-vertical" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@padding-small-horizontal">@padding-small-horizontal</label>
<input id="input-@padding-small-horizontal" type="text" value="10px" data-var="@padding-small-horizontal" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@padding-xs-vertical">@padding-xs-vertical</label>
<input id="input-@padding-xs-vertical" type="text" value="1px" data-var="@padding-xs-vertical" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@padding-xs-horizontal">@padding-xs-horizontal</label>
<input id="input-@padding-xs-horizontal" type="text" value="5px" data-var="@padding-xs-horizontal" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@line-height-large">@line-height-large</label>
<input id="input-@line-height-large" type="text" value="1.33" data-var="@line-height-large" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@line-height-small">@line-height-small</label>
<input id="input-@line-height-small" type="text" value="1.5" data-var="@line-height-small" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@border-radius-base">@border-radius-base</label>
<input id="input-@border-radius-base" type="text" value="4px" data-var="@border-radius-base" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@border-radius-large">@border-radius-large</label>
<input id="input-@border-radius-large" type="text" value="6px" data-var="@border-radius-large" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@border-radius-small">@border-radius-small</label>
<input id="input-@border-radius-small" type="text" value="3px" data-var="@border-radius-small" class="form-control"/>
</div>
</div>
<h2 id="tables">Tables</h2>
<p>Customizes the <code>.table</code> component with basic values, each used across all table variations.</p>
<div class="row">
<div class="bs-customizer-input">
<label for="input-@table-bg-hover">@table-bg-hover</label>
<input id="input-@table-bg-hover" type="text" value="#f5f5f5" data-var="@table-bg-hover" class="form-control"/>
<p class="help-block">Background color used for <code>.table-hover</code>.</p>
</div>
</div>
<h2 id="media-queries-breakpoints">Media queries breakpoints</h2>
<p>Define the breakpoints at which your layout will change, adapting to different screen sizes.</p>
<div class="row">
<div class="bs-customizer-input">
<label for="input-@screen-xs">@screen-xs</label>
<input id="input-@screen-xs" type="text" value="480px" data-var="@screen-xs" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@screen-sm">@screen-sm</label>
<input id="input-@screen-sm" type="text" value="768px" data-var="@screen-sm" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@screen-md">@screen-md</label>
<input id="input-@screen-md" type="text" value="992px" data-var="@screen-md" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@screen-lg">@screen-lg</label>
<input id="input-@screen-lg" type="text" value="1200px" data-var="@screen-lg" class="form-control"/>
</div>
</div>
<h2 id="grid-system">Grid system</h2>
<p>Define your custom responsive grid.</p>
<div class="row">
<div class="bs-customizer-input">
<label for="input-@grid-gutter-width">@grid-gutter-width</label>
<input id="input-@grid-gutter-width" type="text" value="30px" data-var="@grid-gutter-width" class="form-control"/>
<p class="help-block">Padding between columns. Gets divided in half for the left and right.</p>
</div>
<div class="bs-customizer-input">
<label for="input-@grid-float-breakpoint">@grid-float-breakpoint</label>
<input id="input-@grid-float-breakpoint" type="text" value="768px" data-var="@grid-float-breakpoint" class="form-control"/>
<p class="help-block">Point at which the navbar becomes uncollapsed.</p>
</div>
<div class="bs-customizer-input">
<label for="input-@container-smooth">@container-smooth</label>
<input id="input-@container-smooth" type="text" value="@container-lg" data-var="@container-smooth" class="form-control"/>
<p class="help-block">Maximum with of a smooth container.</p>
</div>
</div>
<h2 id="navbar">Navbar</h2>
<p></p>
<div class="row">
<div class="bs-customizer-input">
<label for="input-@navbar-height">@navbar-height</label>
<input id="input-@navbar-height" type="text" value="50px" data-var="@navbar-height" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@navbar-padding-horizontal">@navbar-padding-horizontal</label>
<input id="input-@navbar-padding-horizontal" type="text" value="floor((@grid-gutter-width / 2))" data-var="@navbar-padding-horizontal" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@navbar-padding-vertical">@navbar-padding-vertical</label>
<input id="input-@navbar-padding-vertical" type="text" value="((@navbar-height - @line-height-computed) / 2)" data-var="@navbar-padding-vertical" class="form-control"/>
</div>
</div>
<h2 id="navmenu">Navmenu</h2>
<p></p>
<div class="row">
<div class="bs-customizer-input">
<label for="input-@navmenu-width">@navmenu-width</label>
<input id="input-@navmenu-width" type="text" value="300px" data-var="@navmenu-width" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@navmenu-margin-vertical">@navmenu-margin-vertical</label>
<input id="input-@navmenu-margin-vertical" type="text" value="(0.5 * @line-height-computed)" data-var="@navmenu-margin-vertical" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@navmenu-default-color">@navmenu-default-color</label>
<input id="input-@navmenu-default-color" type="text" value="#777" data-var="@navmenu-default-color" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@navmenu-default-bg">@navmenu-default-bg</label>
<input id="input-@navmenu-default-bg" type="text" value="#f8f8f8" data-var="@navmenu-default-bg" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@navmenu-default-border">@navmenu-default-border</label>
<input id="input-@navmenu-default-border" type="text" value="darken(@navmenu-default-bg, 6.5%)" data-var="@navmenu-default-border" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@navmenu-default-link-color">@navmenu-default-link-color</label>
<input id="input-@navmenu-default-link-color" type="text" value="#777" data-var="@navmenu-default-link-color" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@navmenu-default-link-hover-color">@navmenu-default-link-hover-color</label>
<input id="input-@navmenu-default-link-hover-color" type="text" value="#333" data-var="@navmenu-default-link-hover-color" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@navmenu-default-link-hover-bg">@navmenu-default-link-hover-bg</label>
<input id="input-@navmenu-default-link-hover-bg" type="text" value="transparent" data-var="@navmenu-default-link-hover-bg" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@navmenu-default-link-active-color">@navmenu-default-link-active-color</label>
<input id="input-@navmenu-default-link-active-color" type="text" value="#555" data-var="@navmenu-default-link-active-color" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@navmenu-default-link-active-bg">@navmenu-default-link-active-bg</label>
<input id="input-@navmenu-default-link-active-bg" type="text" value="darken(@navmenu-default-bg, 6.5%)" data-var="@navmenu-default-link-active-bg" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@navmenu-default-link-disabled-color">@navmenu-default-link-disabled-color</label>
<input id="input-@navmenu-default-link-disabled-color" type="text" value="#ccc" data-var="@navmenu-default-link-disabled-color" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@navmenu-default-link-disabled-bg">@navmenu-default-link-disabled-bg</label>
<input id="input-@navmenu-default-link-disabled-bg" type="text" value="transparent" data-var="@navmenu-default-link-disabled-bg" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@navmenu-default-brand-color">@navmenu-default-brand-color</label>
<input id="input-@navmenu-default-brand-color" type="text" value="@navmenu-default-link-color" data-var="@navmenu-default-brand-color" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@navmenu-default-brand-hover-color">@navmenu-default-brand-hover-color</label>
<input id="input-@navmenu-default-brand-hover-color" type="text" value="darken(@navmenu-default-link-color, 10%)" data-var="@navmenu-default-brand-hover-color" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@navmenu-default-brand-hover-bg">@navmenu-default-brand-hover-bg</label>
<input id="input-@navmenu-default-brand-hover-bg" type="text" value="transparent" data-var="@navmenu-default-brand-hover-bg" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@navmenu-inverse-color">@navmenu-inverse-color</label>
<input id="input-@navmenu-inverse-color" type="text" value="@gray-light" data-var="@navmenu-inverse-color" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@navmenu-inverse-bg">@navmenu-inverse-bg</label>
<input id="input-@navmenu-inverse-bg" type="text" value="#222" data-var="@navmenu-inverse-bg" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@navmenu-inverse-border">@navmenu-inverse-border</label>
<input id="input-@navmenu-inverse-border" type="text" value="darken(@navmenu-inverse-bg, 10%)" data-var="@navmenu-inverse-border" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@navmenu-inverse-link-color">@navmenu-inverse-link-color</label>
<input id="input-@navmenu-inverse-link-color" type="text" value="@gray-light" data-var="@navmenu-inverse-link-color" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@navmenu-inverse-link-hover-color">@navmenu-inverse-link-hover-color</label>
<input id="input-@navmenu-inverse-link-hover-color" type="text" value="#fff" data-var="@navmenu-inverse-link-hover-color" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@navmenu-inverse-link-hover-bg">@navmenu-inverse-link-hover-bg</label>
<input id="input-@navmenu-inverse-link-hover-bg" type="text" value="transparent" data-var="@navmenu-inverse-link-hover-bg" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@navmenu-inverse-link-active-color">@navmenu-inverse-link-active-color</label>
<input id="input-@navmenu-inverse-link-active-color" type="text" value="@navmenu-inverse-link-hover-color" data-var="@navmenu-inverse-link-active-color" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@navmenu-inverse-link-active-bg">@navmenu-inverse-link-active-bg</label>
<input id="input-@navmenu-inverse-link-active-bg" type="text" value="darken(@navmenu-inverse-bg, 10%)" data-var="@navmenu-inverse-link-active-bg" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@navmenu-inverse-link-disabled-color">@navmenu-inverse-link-disabled-color</label>
<input id="input-@navmenu-inverse-link-disabled-color" type="text" value="#444" data-var="@navmenu-inverse-link-disabled-color" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@navmenu-inverse-link-disabled-bg">@navmenu-inverse-link-disabled-bg</label>
<input id="input-@navmenu-inverse-link-disabled-bg" type="text" value="transparent" data-var="@navmenu-inverse-link-disabled-bg" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@navmenu-inverse-brand-color">@navmenu-inverse-brand-color</label>
<input id="input-@navmenu-inverse-brand-color" type="text" value="@navmenu-inverse-link-color" data-var="@navmenu-inverse-brand-color" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@navmenu-inverse-brand-hover-color">@navmenu-inverse-brand-hover-color</label>
<input id="input-@navmenu-inverse-brand-hover-color" type="text" value="#fff" data-var="@navmenu-inverse-brand-hover-color" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@navmenu-inverse-brand-hover-bg">@navmenu-inverse-brand-hover-bg</label>
<input id="input-@navmenu-inverse-brand-hover-bg" type="text" value="transparent" data-var="@navmenu-inverse-brand-hover-bg" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@navmenu-inverse-search-bg">@navmenu-inverse-search-bg</label>
<input id="input-@navmenu-inverse-search-bg" type="text" value="lighten(@navmenu-inverse-bg, 25%)" data-var="@navmenu-inverse-search-bg" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@navmenu-inverse-search-bg-focus">@navmenu-inverse-search-bg-focus</label>
<input id="input-@navmenu-inverse-search-bg-focus" type="text" value="#fff" data-var="@navmenu-inverse-search-bg-focus" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@navmenu-inverse-search-border">@navmenu-inverse-search-border</label>
<input id="input-@navmenu-inverse-search-border" type="text" value="@navmenu-inverse-bg" data-var="@navmenu-inverse-search-border" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@navmenu-inverse-search-placeholder-color">@navmenu-inverse-search-placeholder-color</label>
<input id="input-@navmenu-inverse-search-placeholder-color" type="text" value="#ccc" data-var="@navmenu-inverse-search-placeholder-color" class="form-control"/>
</div>
</div>
<h2 id="navs">Navs</h2>
<p></p>
<div class="row">
<div class="bs-customizer-input">
<label for="input-@nav-link-padding">@nav-link-padding</label>
<input id="input-@nav-link-padding" type="text" value="10px 15px" data-var="@nav-link-padding" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@nav-tabs-active-link-hover-border-color">@nav-tabs-active-link-hover-border-color</label>
<input id="input-@nav-tabs-active-link-hover-border-color" type="text" value="#ddd" data-var="@nav-tabs-active-link-hover-border-color" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@nav-tabs-border-color">@nav-tabs-border-color</label>
<input id="input-@nav-tabs-border-color" type="text" value="#ddd" data-var="@nav-tabs-border-color" class="form-control"/>
</div>
</div>
<h2 id="form-states-and-alerts">Form states and alerts</h2>
<p>Define colors for form feedback states and, by default, alerts.</p>
<div class="row">
<div class="bs-customizer-input">
<label for="input-@state-success-text">@state-success-text</label>
<input id="input-@state-success-text" type="text" value="#3c763d" data-var="@state-success-text" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@state-success-bg">@state-success-bg</label>
<input id="input-@state-success-bg" type="text" value="#dff0d8" data-var="@state-success-bg" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@state-success-border">@state-success-border</label>
<input id="input-@state-success-border" type="text" value="darken(spin(@state-success-bg, -10), 5%)" data-var="@state-success-border" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@state-info-text">@state-info-text</label>
<input id="input-@state-info-text" type="text" value="#31708f" data-var="@state-info-text" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@state-info-bg">@state-info-bg</label>
<input id="input-@state-info-bg" type="text" value="#d9edf7" data-var="@state-info-bg" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@state-info-border">@state-info-border</label>
<input id="input-@state-info-border" type="text" value="darken(spin(@state-info-bg, -10), 7%)" data-var="@state-info-border" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@state-warning-text">@state-warning-text</label>
<input id="input-@state-warning-text" type="text" value="#8a6d3b" data-var="@state-warning-text" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@state-warning-bg">@state-warning-bg</label>
<input id="input-@state-warning-bg" type="text" value="#fcf8e3" data-var="@state-warning-bg" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@state-warning-border">@state-warning-border</label>
<input id="input-@state-warning-border" type="text" value="darken(spin(@state-warning-bg, -10), 5%)" data-var="@state-warning-border" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@state-danger-text">@state-danger-text</label>
<input id="input-@state-danger-text" type="text" value="#a94442" data-var="@state-danger-text" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@state-danger-bg">@state-danger-bg</label>
<input id="input-@state-danger-bg" type="text" value="#f2dede" data-var="@state-danger-bg" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@state-danger-border">@state-danger-border</label>
<input id="input-@state-danger-border" type="text" value="darken(spin(@state-danger-bg, -10), 5%)" data-var="@state-danger-border" class="form-control"/>
</div>
</div>
<h2 id="alerts">Alerts</h2>
<p>Define alert colors, border radius, and padding.</p>
<div class="row">
<div class="bs-customizer-input">
<label for="input-@alert-border-radius">@alert-border-radius</label>
<input id="input-@alert-border-radius" type="text" value="@border-radius-base" data-var="@alert-border-radius" class="form-control"/>
</div>
<div class="bs-customizer-input">
<label for="input-@alert-fixed-width">@alert-fixed-width</label>
<input id="input-@alert-fixed-width" type="text" value="@screen-md" data-var="@alert-fixed-width" class="form-control"/>
</div>
</div>
<!-- NOTE: DO NOT EDIT THE PRECEDING SECTION DIRECTLY! It is autogenerated via the `build-customizer-html` Grunt task using the customizer-variables.jade template.-->

View File

@@ -1,14 +1,11 @@
<!-- 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://code.jquery.com/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/sticky-kit/1.1.3/sticky-kit.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
<script src="{{ page.base_url }}dist/js/jasny-bootstrap.min.js"></script>
<script src="http://platform.twitter.com/widgets.js"></script>
<script src="{{ page.base_url }}assets/js/docs.min.js"></script>
{% if page.slug == "customize" %}
<script src="../assets/js/customize.min.js"></script>
{% endif %}

View File

@@ -13,8 +13,9 @@
</title>
<!-- Bootstrap core CSS -->
<link href="//netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet">
<link href="{{ page.base_url }}dist/css/jasny-bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css">
<link rel="stylesheet" href="{{ page.base_url }}dist/css/jasny-bootstrap.min.css">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<!-- Documentation extras -->
<link href="{{ page.base_url }}assets/css/docs.css" rel="stylesheet">

View File

@@ -1,15 +1,43 @@
<li>
<a href="#navmenu">Navmenu</a>
<li class="nav-item">
<a class="nav-link" href="#navmenu">Navmenu</a>
<ul class="nav">
<li><a href="#navmenu-default">Default navmenu</a></li>
<li><a href="#navmenu-fixed">Fixed to left or right</a></li>
<li><a href="#navmenu-offcanvas">Off canvas</a></li>
<li><a href="#navmenu-inverted">Inverted navmenu</a></li>
<li class="nav-item"><a class="nav-link" href="#navmenu-default">Default navmenu</a></li>
<li class="nav-item"><a class="nav-link" href="#navmenu-fixed">Fixed to left or right</a></li>
<li class="nav-item"><a class="nav-link" href="#navmenu-offcanvas">Off canvas</a></li>
<li class="nav-item"><a class="nav-link" href="#navmenu-inverted">Inverted navmenu</a></li>
</ul>
</li>
<li>
<a href="#alerts">Alerts</a>
<li class="nav-item">
<a class="nav-link" href="#alerts">Alerts</a>
<ul class="nav">
<li><a href="#alerts-fixed">Fixed to top / bottom</a></li>
<li class="nav-item"><a class="nav-link" href="#alerts-fixed">Fixed to top / bottom</a></li>
</ul>
</li>
<li class="nav-item">
<a class="nav-link" href="#buttons">Buttons</a>
<ul class="nav">
<li class="nav-item"><a class="nav-link" href="#buttons-labels">Labels</a></li>
</ul>
</li>
<li class="nav-item">
<a class="nav-link" href="#offcanvas">Off canvas</a>
<ul class="nav">
<li class="nav-item"><a class="nav-link" href="#offcanvas-examples">Examples</a></li>
<li class="nav-item"><a class="nav-link" href="#offcanvas-usage">Usage</a></li>
</ul>
</li>
<li class="nav-item">
<a class="nav-link" href="#rowlink">Row link</a>
<ul class="nav">
<li class="nav-item"><a class="nav-link" href="#rowlink-examples">Examples</a></li>
<li class="nav-item"><a class="nav-link" href="#rowlink-usage">Usage</a></li>
</ul>
</li>
<li class="nav-item">
<a class="nav-link" href="#fileinput">File input</a>
<ul class="nav">
<li class="nav-item"><a class="nav-link" href="#fileinput-examples">Examples</a></li>
<li class="nav-item"><a class="nav-link" href="#fileinput-usage">Usage</a></li>
</ul>
</li>

View File

@@ -1,12 +0,0 @@
<li>
<a href="#overview">Overview</a>
<ul class="nav">
<li><a href="#overview-container">Containers</a></li>
</ul>
</li>
<li>
<a href="#buttons">Buttons</a>
<ul class="nav">
<li><a href="#buttons-labels">Labels</a></li>
</ul>
</li>

View File

@@ -1,19 +0,0 @@
<!-- NOTE: DO NOT EDIT THE FOLLOWING SECTION DIRECTLY! It is autogenerated via the `build-customizer-html` Grunt task using the customizer-nav.jade template.-->
<li><a href="#less">Less components</a></li>
<li><a href="#plugins">jQuery plugins</a></li>
<li><a href="#less-variables">Less variables</a>
<ul class="nav">
<li><a href="#components">Components</a></li>
<li><a href="#tables">Tables</a></li>
<li><a href="#media-queries-breakpoints">Media queries breakpoints</a></li>
<li><a href="#grid-system">Grid system</a></li>
<li><a href="#navbar">Navbar</a></li>
<li><a href="#navmenu">Navmenu</a></li>
<li><a href="#navs">Navs</a></li>
<li><a href="#form-states-and-alerts">Form states and alerts</a></li>
<li><a href="#alerts">Alerts</a></li>
</ul>
</li>
<li><a href="#download">Download</a></li>
<!-- NOTE: DO NOT EDIT THE PRECEDING SECTION DIRECTLY! It is autogenerated via the `build-customizer-html` Grunt task using the customizer-nav.jade template.-->

View File

@@ -1,26 +1,49 @@
<li>
<a href="#jasny-bootstrap">Jasny Bootstrap</a>
<li class="nav-item">
<a class="nav-link" href="#jasny-bootstrap">Jasny Bootstrap</a>
</li>
<li>
<a href="#download">Download Jasny Bootstrap</a>
<li class="nav-item">
<a class="nav-link" href="#download">Download Jasny Bootstrap</a>
<ul class="nav">
<li><a href="#download-compiled">Compiled CSS, JS, and fonts</a></li>
<li><a href="#download-additional">Additional downloads</a></li>
<li><a href="#download-cdn">Bootstrap CDN</a></li>
<li class="nav-item"><a class="nav-link" href="#download-compiled">Compiled CSS, JS, and fonts</a></li>
<li class="nav-item"><a class="nav-link" href="#download-additional">Additional downloads</a></li>
<li class="nav-item"><a class="nav-link" href="#download-cdn">Bootstrap CDN</a></li>
</ul>
</li>
<li>
<a href="#whats-included">What's included</a>
<li class="nav-item">
<a class="nav-link" href="#whats-included">What's included</a>
</li>
<li>
<a href="#examples">Examples</a>
<li class="nav-item">
<a class="nav-link" href="#template">Basic template</a>
</li>
<li>
<a href="#migration">Migrating from 2.x to 3.0</a>
<li class="nav-item">
<a class="nav-link" href="#js-overview">Plugins</a>
<ul class="nav">
<li><a href="#migration-classes">Major class changes</a></li>
<li><a href="#migration-new">What's new</a></li>
<li><a href="#migration-dropped">What's removed</a></li>
<li><a href="#migration-notes">Additional notes</a></li>
<li class="nav-item"><a class="nav-link" href="#js-individual-compiled">Individual or compiled</a></li>
<li class="nav-item"><a class="nav-link" href="#js-data-attrs">Data attributes</a></li>
<li class="nav-item"><a class="nav-link" href="#js-programmatic-api">Programmatic API</a></li>
<li class="nav-item"><a class="nav-link" href="#js-noconflict">No conflict</a></li>
<li class="nav-item"><a class="nav-link" href="#js-events">Events</a></li>
</ul>
</li>
<li class="nav-item">
<a class="nav-link" href="#containers">Containers</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#examples">Examples</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#migration-v4">Migrating from 3.x to 4.0</a>
<ul class="nav">
<li class="nav-item"><a class="nav-link" href="#migration-classes-v4">Major class changes</a></li>
<li class="nav-item"><a class="nav-link" href="#migration-dropped-v4">What's removed</a></li>
</ul>
</li>
<li class="nav-item">
<a class="nav-link" href="#migration-v3">Migrating from 2.x to 3.0</a>
<ul class="nav">
<li class="nav-item"><a class="nav-link" href="#migration-classes-v3">Major class changes</a></li>
<li class="nav-item"><a class="nav-link" href="#migration-new-v3">What's new</a></li>
<li class="nav-item"><a class="nav-link" href="#migration-dropped-v3">What's removed</a></li>
<li class="nav-item"><a class="nav-link" href="#migration-notes-v3">Additional notes</a></li>
</ul>
</li>

View File

@@ -1,38 +0,0 @@
<li>
<a href="#js-overview">Overview</a>
<ul class="nav">
<li><a href="#js-individual-compiled">Individual or compiled</a></li>
<li><a href="#js-data-attrs">Data attributes</a></li>
<li><a href="#js-programmatic-api">Programmatic API</a></li>
<li><a href="#js-noconflict">No conflict</a></li>
<li><a href="#js-events">Events</a></li>
</ul>
</li>
<li>
<a href="#offcanvas">Off canvas</a>
<ul class="nav">
<li><a href="#offcanvas-examples">Examples</a></li>
<li><a href="#offcanvas-usage">Usage</a></li>
</ul>
</li>
<li>
<a href="#rowlink">Row link</a>
<ul class="nav">
<li><a href="#rowlink-examples">Examples</a></li>
<li><a href="#rowlink-usage">Usage</a></li>
</ul>
</li>
<li>
<a href="#inputmask">Input mask</a>
<ul class="nav">
<li><a href="#inputmask-examples">Examples</a></li>
<li><a href="#inputmask-usage">Usage</a></li>
</ul>
</li>
<li>
<a href="#fileinput">File input</a>
<ul class="nav">
<li><a href="#fileinput-examples">Examples</a></li>
<li><a href="#fileinput-usage">Usage</a></li>
</ul>
</li>

View File

@@ -1,33 +1,22 @@
<header class="navbar navbar-inverse navbar-fixed-top bs-docs-nav" role="banner">
<header class="navbar navbar-dark navbar-expand-lg navbar-inverse fixed-top bs-docs-nav" role="banner">
<div class="container">
<div class="navbar-header">
<button class="navbar-toggle" type="button" data-toggle="collapse" data-target=".bs-navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a href="{{ page.base_url }}" class="navbar-brand">Jasny Bootstrap</a>
</div>
<nav class="collapse navbar-collapse bs-navbar-collapse" role="navigation">
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#mainNavmenu">
<span class="sr-only">Toggle navigation</span>
<span class="navbar-toggler-icon"></span>
</button>
<nav class="collapse navbar-collapse" role="navigation" id="mainNavmenu">
<ul class="nav navbar-nav">
<li{% if page.slug == "getting-started" %} class="active"{% endif %}>
<a href="{{ page.base_url }}getting-started">Getting started</a>
<li class="nav-item {% if page.slug == 'getting-started' %}active{% endif %}">
<a class="nav-link" href="{{ page.base_url }}getting-started">Getting started</a>
</li>
<li{% if page.slug == "css" %} class="active"{% endif %}>
<a href="{{ page.base_url }}css">CSS</a>
</li>
<li{% if page.slug == "components" %} class="active"{% endif %}>
<a href="{{ page.base_url }}components">Components</a>
</li>
<li{% if page.slug == "js" %} class="active"{% endif %}>
<a href="{{ page.base_url }}javascript">JavaScript</a>
</li>
<li{% if page.slug == "customize" %} class="active"{% endif %}>
<a href="{{ page.base_url }}customize">Customize</a>
<li class="nav-item {% if page.slug == 'components' %}active{% endif %}">
<a class="nav-link" href="{{ page.base_url }}components">Components</a>
</li>
</ul>
<ul class="nav navbar-nav navbar-right">
<ul class="nav navbar-nav ml-auto">
<li>
<a href="http://www.jasny.net"><span class="hidden-sm">More by</span> Jasny</a>
</li>

View File

@@ -4,11 +4,11 @@
<!-- Meta, title, CSS, favicons, etc. -->
{% include header.html %}
</head>
<body class="{% if page.slug == "customize" %}bs-twbs-show{% endif %}">
<body>
<script type="text/javascript">
if (localStorage && localStorage.hide_twbs === 'no') document.body.setAttribute('class', 'bs-twbs-show')
</script>
<a class="sr-only" href="#content">Skip to main content</a>
<!-- Docs master nav -->
@@ -27,17 +27,11 @@
<div class="row">
<div class="col-md-3">
<div class="bs-sidebar hidden-print" role="complementary">
<ul class="nav bs-sidenav">
<ul class="nav bs-sidenav flex-column">
{% if page.slug == "getting-started" %}
{% include nav-getting-started.html %}
{% elsif page.slug == "css" %}
{% include nav-css.html %}
{% elsif page.slug == "components" %}
{% include nav-components.html %}
{% elsif page.slug == "js" %}
{% include nav-javascript.html %}
{% elsif page.slug == "customize" %}
{% include nav-customize.html %}
{% elsif page.slug == "about" %}
{% include nav-about.html %}
{% endif %}

View File

@@ -23,7 +23,10 @@
Currently v{{ site.current_version }}
</li>
<li>
<a href="{{ page.base_url }}2.3.1/">Bootstrap 2.3.1 docs</a>
<a href="{{ page.base_url }}3.2.0/">v3.2.0 docs</a>
</li>
<li>
<a href="{{ page.base_url }}2.3.1/">v2.3.1 docs</a>
</li>
<li>
<a href="{{ site.repo }}" onclick="_gaq.push(['_trackEvent', 'Jumbotron actions', 'Jumbotron links', 'GitHub project']);">GitHub project</a>

View File

@@ -127,13 +127,13 @@ span.hidden-sm {
background-color: #6B313B;
background-color: rgba(255, 255, 255, 0.15);
}
.bs-docs-nav .navbar-toggle,
.bs-docs-nav .navbar-toggle:focus {
.bs-docs-nav .navbar-toggler,
.bs-docs-nav .navbar-toggler:focus {
border-color: #86555C;
border-color: rgba(255, 255, 255, 0.3);
background: transparent;
}
.bs-docs-nav .navbar-toggle:hover {
.bs-docs-nav .navbar-toggler:hover {
background-color: #63303A;
background-color: rgba(255, 255, 255, 0.15);
border-color: transparent;
@@ -580,14 +580,17 @@ span.hidden-sm {
*/
/* By default it's not affixed in mobile views, so undo that */
.bs-sidebar {
margin-top: 30px;
margin-bottom: 30px;
}
.bs-sidebar.affix {
position: static;
}
/* First level of nav */
.bs-sidenav {
margin-top: 30px;
margin-bottom: 30px;
padding-top: 10px;
padding-bottom: 10px;
text-shadow: 0 1px 0 #fff;
@@ -607,9 +610,9 @@ span.hidden-sm {
background-color: #e5e3e9;
border-right: 1px solid #dbd8e0;
}
.bs-sidebar .nav > .active > a,
.bs-sidebar .nav > .active:hover > a,
.bs-sidebar .nav > .active:focus > a {
.bs-sidebar .nav > li > a.active,
.bs-sidebar .nav > li > a.active:hover,
.bs-sidebar .nav > li > a.active:focus {
font-weight: bold;
color: #563d7c;
background-color: transparent;
@@ -630,7 +633,7 @@ span.hidden-sm {
/* Show and affix the side nav when space allows it */
@media (min-width: 992px) {
.bs-sidebar .nav > .active > ul {
.bs-sidebar .nav > li > .active + ul {
display: block;
}
/* Widen the fixed sidebar */
@@ -933,8 +936,8 @@ h2[id], h3[id] {
.bs-navbar-bottom-example .navbar-header {
margin-left: 0;
}
.bs-navbar-top-example .navbar-fixed-top,
.bs-navbar-bottom-example .navbar-fixed-bottom {
.bs-navbar-top-example .navbar.fixed-top,
.bs-navbar-bottom-example .navbar.fixed-bottom {
position: relative;
margin-left: 0;
margin-right: 0;
@@ -946,21 +949,21 @@ h2[id], h3[id] {
top: auto;
bottom: 15px;
}
.bs-navbar-top-example .navbar-fixed-top {
.bs-navbar-top-example .navbar.fixed-top {
top: -1px;
}
.bs-navbar-bottom-example {
padding-top: 45px;
}
.bs-navbar-bottom-example .navbar-fixed-bottom {
.bs-navbar-bottom-example .navbar.fixed-bottom {
bottom: -1px;
}
.bs-navbar-bottom-example .navbar {
margin-bottom: 0;
}
@media (min-width: 768px) {
.bs-navbar-top-example .navbar-fixed-top,
.bs-navbar-bottom-example .navbar-fixed-bottom {
.bs-navbar-top-example .navbar.fixed-top,
.bs-navbar-bottom-example .navbar.fixed-bottom {
position: absolute;
}
.bs-navbar-top-example {
@@ -999,15 +1002,15 @@ h2[id], h3[id] {
}
.bs-navmenu-fixed-example .navmenu-fixed-left,
.bs-navmenu-offcanvas-example .navmenu-fixed-left,
.bs-navmenu-offcanvas-example .navbar-fixed-top {
.bs-navmenu-offcanvas-example .navbar.fixed-top {
position: absolute;
z-index: 1;
}
.bs-navmenu-offcanvas-example .navmenu-fixed-left {
-webkit-transform: translate(-300px, 0);
-webkit-transform: translate(-300px, 0);
transform: translate(-300px, 0);
}
.bs-navmenu-offcanvas-example .navbar-toggle {
.bs-navmenu-offcanvas-example .navbar-toggler {
float: left;
margin-left: 15px;
display: block;
@@ -1122,7 +1125,9 @@ h2[id], h3[id] {
margin-bottom: 0;
background-color: transparent;
border: 0;
white-space: nowrap;
white-space: pre-wrap;
word-break: break-all;
word-wrap: break-word;
}
.highlight pre code {
font-size: inherit;
@@ -1218,99 +1223,6 @@ h2[id], h3[id] {
}
/*
* Customizer
*
* Since this is so form control heavy, we have quite a few styles to customize
* the display of inputs, headings, and more. Also included are all the download
* buttons and actions.
*/
.bs-customizer .toggle {
float: right;
margin-top: 80px;
}
/* Headings and form contrls */
.bs-customizer label {
margin-top: 10px;
font-weight: 500;
color: #555;
}
.bs-customizer h2 {
margin-top: 0;
margin-bottom: 5px;
padding-top: 30px;
}
.bs-customizer h3 {
margin-bottom: 0;
}
.bs-customizer h4 {
margin-top: 15px;
margin-bottom: 0;
}
.bs-customizer .bs-callout h4 {
margin-top: 0; /* lame, but due to specificity we have to duplicate */
margin-bottom: 5px;
}
.bs-customizer input[type="text"] {
font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
background-color: #fafafa;
}
.bs-customizer .help-block {
font-size: 12px;
margin-bottom: 5px;
}
/* For the variables, use regular weight */
#less-section label {
font-weight: normal;
}
.bs-customizer-input {
float: left;
width: 33.333333%;
padding-left: 15px;
padding-right: 15px;
}
/* Downloads */
.bs-customize-download .btn-outline {
padding: 20px;
}
/* Error handling */
.bs-customizer-alert {
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 1030;
padding: 15px 0;
color: #fff;
background-color: #d9534f;
box-shadow: inset 0 1px 0 rgba(255,255,255,.25);
border-bottom: 1px solid #b94441;
}
.bs-customizer-alert .close {
margin-top: -4px;
font-size: 24px;
}
.bs-customizer-alert p {
margin-bottom: 0;
}
.bs-customizer-alert .glyphicon {
margin-right: 5px;
}
.bs-customizer-alert pre {
margin: 10px 0 0;
color: #fff;
background-color: #a83c3a;
border-color: #973634;
box-shadow: inset 0 2px 4px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);
}
/*
* Miscellaneous
*
@@ -1345,3 +1257,8 @@ h2[id], h3[id] {
margin-top: 15px;
margin-bottom: 5px;
}
a.thumbnail {
display: block;
margin-bottom: 10px;
}

File diff suppressed because one or more lines are too long

View File

@@ -48,29 +48,10 @@
e.preventDefault()
})
// back to top
setTimeout(function () {
var $sideBar = $('.bs-sidebar')
$sideBar.affix({
offset: {
top: function () {
var offsetTop = $sideBar.offset().top
var sideBarMargin = parseInt($sideBar.children(0).css('margin-top'), 10)
var navOuterHeight = $('.bs-docs-nav').height()
return (this.top = offsetTop - navOuterHeight - sideBarMargin)
},
bottom: function () {
return (this.bottom = $('.bs-footer').outerHeight(true))
}
}
})
}, 100)
setTimeout(function () {
$('.bs-top').affix()
}, 100)
$('.bs-sidebar').stick_in_parent({
offset_top: 56,
spacer: false
});
})
}(jQuery)

File diff suppressed because one or more lines are too long

View File

@@ -1,341 +0,0 @@
/*!
* Bootstrap Customizer (http://getbootstrap.com/customize/)
* Copyright 2011-2014 Twitter, Inc.
*
* Licensed under the Creative Commons Attribution 3.0 Unported License. For
* details, see http://creativecommons.org/licenses/by/3.0/.
*/
window.onload = function () { // wait for load in a dumb way because B-0
var cw = '/*!\n' +
' * Jasny Bootstrap v3.1.0 (http://jasny.github.com/bootstrap)\n' +
' * Copyright 2011-2014 Arnold Daniels.\n' +
' * Licensed under Apache-2.0 (https://github.com/jasny/bootstrap/blob/master/LICENSE)\n' +
' */\n\n'
function showError(msg, err) {
$('<div id="bsCustomizerAlert" class="bs-customizer-alert">' +
'<div class="container">' +
'<a href="#bsCustomizerAlert" data-dismiss="alert" class="close pull-right">&times;</a>' +
'<p class="bs-customizer-alert-text"><span class="glyphicon glyphicon-warning-sign"></span>' + msg + '</p>' +
(err.extract ? '<pre class="bs-customizer-alert-extract">' + err.extract.join('\n') + '</pre>' : '') +
'</div>' +
'</div>').appendTo('body').alert()
throw err
}
function showCallout(msg, showUpTop) {
var callout = $('<div class="bs-callout bs-callout-danger">' +
'<h4>Attention!</h4>' +
'<p>' + msg + '</p>' +
'</div>')
if (showUpTop) {
callout.appendTo('.bs-docs-container')
} else {
callout.insertAfter('.bs-customize-download')
}
}
function getQueryParam(key) {
key = key.replace(/[*+?^$.\[\]{}()|\\\/]/g, '\\$&') // escape RegEx meta chars
var match = location.search.match(new RegExp('[?&]' + key + '=([^&]+)(&|$)'))
return match && decodeURIComponent(match[1].replace(/\+/g, ' '))
}
function createGist(configJson) {
var data = {
'description': 'Bootstrap Customizer Config',
'public': true,
'files': {
'config.json': {
'content': configJson
}
}
}
$.ajax({
url: 'https://api.github.com/gists',
type: 'POST',
dataType: 'json',
data: JSON.stringify(data)
})
.success(function (result) {
var origin = window.location.protocol + '//' + window.location.host
history.replaceState(false, document.title, origin + window.location.pathname + '?id=' + result.id)
})
.error(function (err) {
showError('<strong>Ruh roh!</strong> Could not save gist file, configuration not saved.', err)
})
}
function getCustomizerData() {
var vars = {}
$('#less-variables-section input')
.each(function () {
$(this).val() && (vars[$(this).prev().text()] = $(this).val())
})
var data = {
vars: vars,
css: $('#less-section input:checked') .map(function () { return this.value }).toArray(),
js: $('#plugin-section input:checked').map(function () { return this.value }).toArray()
}
if ($.isEmptyObject(data.vars) && !data.css.length && !data.js.length) return
return data
}
function parseUrl() {
var id = getQueryParam('id')
if (!id) return
$.ajax({
url: 'https://api.github.com/gists/' + id,
type: 'GET',
dataType: 'json'
})
.success(function (result) {
var data = JSON.parse(result.files['config.json'].content)
if (data.js) {
$('#plugin-section input').each(function () {
$(this).prop('checked', ~$.inArray(this.value, data.js))
})
}
if (data.css) {
$('#less-section input').each(function () {
$(this).prop('checked', ~$.inArray(this.value, data.css))
})
}
if (data.vars) {
for (var i in data.vars) {
$('input[data-var="' + i + '"]').val(data.vars[i])
}
}
})
.error(function (err) {
showError('Error fetching bootstrap config file', err)
})
}
function generateZip(css, js, fonts, config, complete) {
if (!css && !js) return showError('<strong>Ruh roh!</strong> No Bootstrap files selected.', new Error('no Bootstrap'))
var zip = new JSZip()
if (css) {
var cssFolder = zip.folder('css')
for (var fileName in css) {
cssFolder.file(fileName, css[fileName])
}
}
if (js) {
var jsFolder = zip.folder('js')
for (var jsFileName in js) {
jsFolder.file(jsFileName, js[jsFileName])
}
}
if (fonts) {
var fontsFolder = zip.folder('fonts')
for (var fontsFileName in fonts) {
fontsFolder.file(fontsFileName, fonts[fontsFileName], {base64: true})
}
}
if (config) {
zip.file('config.json', config)
}
var content = zip.generate({ type: 'blob' })
complete(content)
}
function generateCustomCSS(vars) {
var result = ''
for (var key in vars) {
result += key + ': ' + vars[key] + ';\n'
}
return result + '\n\n'
}
function generateFonts() {
return false;
}
// Returns an Array of @import'd filenames in the order
// in which they appear in the file.
function includedLessFilenames(lessFilename) {
var IMPORT_REGEX = /^@import \"(.*?)\";$/
var lessLines = __less[lessFilename].split('\n')
for (var i = 0, imports = []; i < lessLines.length; i++) {
var match = IMPORT_REGEX.exec(lessLines[i])
if (match) imports.push(match[1])
}
return imports
}
function generateLESS(lessFilename, lessFileIncludes, vars, additionalLessFiles) {
var lessSource = __less[lessFilename]
// Additional imports files, not present in less file, but required to build
$.each(additionalLessFiles || [], function(index, filename) {
lessSource += __less[filename]
})
$.each(includedLessFilenames(lessFilename), function(index, filename) {
var fileInclude = lessFileIncludes[filename]
// Files not explicitly unchecked are compiled into the final stylesheet.
// Core stylesheets like 'normalize.less' are not included in the form
// since disabling them would wreck everything, and so their 'fileInclude'
// will be 'undefined'.
if (fileInclude || (fileInclude == null)) lessSource += __less[filename]
// Custom variables are added after Bootstrap variables so the custom
// ones take precedence.
if (('variables.less' === filename) && vars) lessSource += generateCustomCSS(vars)
})
lessSource = lessSource.replace(/@import[^\n]*/gi, '') //strip any imports
return lessSource
}
function compileLESS(lessSource, baseFilename, intoResult) {
var parser = new less.Parser({
optimization: 0,
filename: baseFilename + '.css'
}).parse(lessSource, function (err, tree) {
if (err) {
return showError('<strong>Ruh roh!</strong> Could not parse less files.', err)
}
intoResult[baseFilename + '.css'] = cw + tree.toCSS()
intoResult[baseFilename + '.min.css'] = cw + tree.toCSS({ compress: true })
})
}
function generateCSS() {
var oneChecked = false
var lessFileIncludes = {}
$('#less-section input').each(function() {
var $this = $(this)
var checked = $this.is(':checked')
lessFileIncludes[$this.val()] = checked
oneChecked = oneChecked || checked
})
if (!oneChecked) return false
var result = {}
var vars = {}
$('#less-variables-section input')
.each(function () {
$(this).val() && (vars[$(this).prev().text()] = $(this).val())
})
var bsLessSource = generateLESS('jasny-bootstrap.less', lessFileIncludes, vars,
['build/variables.less', 'build/mixins.less'])
try {
compileLESS(bsLessSource, 'jasny-bootstrap', result)
} catch (err) {
return showError('<strong>Ruh roh!</strong> Could not parse less files.', err)
}
return result
}
function generateJavascript() {
var $checked = $('#plugin-section input:checked')
if (!$checked.length) return false
var js = $checked
.map(function () { return __js[this.value] })
.toArray()
.join('\n')
return {
'jasny-bootstrap.js': js,
'jasny-bootstrap.min.js': cw + uglify(js)
}
}
var inputsComponent = $('#less-section input')
var inputsPlugin = $('#plugin-section input')
var inputsVariables = $('#less-variables-section input')
$('#less-section .toggle').on('click', function (e) {
e.preventDefault()
inputsComponent.prop('checked', !inputsComponent.is(':checked'))
})
$('#plugin-section .toggle').on('click', function (e) {
e.preventDefault()
inputsPlugin.prop('checked', !inputsPlugin.is(':checked'))
})
$('[data-dependencies]').on('click', function () {
if (!$(this).is(':checked')) return
var dependencies = this.getAttribute('data-dependencies')
if (!dependencies) return
dependencies = dependencies.split(',')
for (var i = 0; i < dependencies.length; i++) {
var dependency = $('[value="' + dependencies[i] + '"]')
dependency && dependency.prop('checked', true)
}
})
$('[data-dependents]').on('click', function () {
if ($(this).is(':checked')) return
var dependents = this.getAttribute('data-dependents')
if (!dependents) return
dependents = dependents.split(',')
for (var i = 0; i < dependents.length; i++) {
var dependent = $('[value="' + dependents[i] + '"]')
dependent && dependent.prop('checked', false)
}
})
var $compileBtn = $('#btn-compile')
var $downloadBtn = $('#btn-download')
$compileBtn.on('click', function (e) {
var configData = getCustomizerData()
var configJson = JSON.stringify(configData, null, 2)
e.preventDefault()
$compileBtn.attr('disabled', 'disabled')
generateZip(generateCSS(), generateJavascript(), generateFonts(), configJson, function (blob) {
$compileBtn.removeAttr('disabled')
saveAs(blob, 'jasny-bootstrap.zip')
createGist(configJson)
})
})
// browser support alerts
if (!window.URL && navigator.userAgent.toLowerCase().indexOf('safari') != -1) {
showCallout('Looks like you\'re using safari, which sadly doesn\'t have the best support' +
'for HTML5 blobs. Because of this your file will be downloaded with the name <code>"untitled"</code>.' +
'However, if you check your downloads folder, just rename this <code>"untitled"</code> file' +
'to <code>"jasny-bootstrap.zip"</code> and you should be good to go!')
} else if (!window.URL && !window.webkitURL) {
$('.bs-docs-section, .bs-docs-sidebar').css('display', 'none')
showCallout('Looks like your current browser doesn\'t support the Bootstrap Customizer. Please take a second' +
'to <a href="https://www.google.com/intl/en/chrome/browser/">upgrade to a more modern browser</a>.', true)
}
parseUrl()
}

File diff suppressed because one or more lines are too long

View File

@@ -10,7 +10,7 @@ base_url: "../"
<!-- Navmenu
================================================== -->
<div class="bs-docs-section">
<div class="page-header">
<div class="pb-2 mt-4 mb-2 border-bottom">
<h1 id="navmenu">Navmenu</h1>
</div>
<p>Navmenu is a vertical navigation component. By default it shares it look and feel with the navmenu component.</p>
@@ -26,17 +26,17 @@ base_url: "../"
<nav class="navmenu navmenu-default" role="navigation">
<a class="navmenu-brand" href="#">Brand</a>
<ul class="nav navmenu-nav">
<li class="active"><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
<ul class="nav navmenu-nav flex-column">
<li class="nav-item active"><a class="nav-link" href="#">Link</a></li>
<li class="nav-item"><a class="nav-link" href="#">Link</a></li>
<li class="nav-item dropdown">
<a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
<ul class="dropdown-menu navmenu-nav" role="menu">
<li><a href="#">Action</a></li>
<li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li>
<li><a href="#">Separated link</a></li>
<li><a href="#">One more separated link</a></li>
<li class="nav-item"><a class="nav-link" href="#">Action</a></li>
<li class="nav-item"><a class="nav-link" href="#">Another action</a></li>
<li class="nav-item"><a class="nav-link" href="#">Something else here</a></li>
<li class="nav-item"><a class="nav-link" href="#">Separated link</a></li>
<li class="nav-item"><a class="nav-link" href="#">One more separated link</a></li>
</ul>
</li>
</ul>
@@ -46,17 +46,17 @@ base_url: "../"
<nav class="navmenu navmenu-default" role="navigation">
<a class="navmenu-brand" href="#">Brand</a>
<ul class="nav navmenu-nav">
<li class="active"><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
<ul class="nav navmenu-nav flex-column">
<li class="nav-item active"><a class="nav-link" href="#">Link</a></li>
<li class="nav-item"><a class="nav-link" href="#">Link</a></li>
<li class="nav-item dropdown">
<a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
<ul class="dropdown-menu navmenu-nav" role="menu">
<li><a href="#">Action</a></li>
<li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li>
<li><a href="#">Separated link</a></li>
<li><a href="#">One more separated link</a></li>
<li class="nav-item"><a class="nav-link" href="#">Action</a></li>
<li class="nav-item"><a class="nav-link" href="#">Another action</a></li>
<li class="nav-item"><a class="nav-link" href="#">Something else here</a></li>
<li class="nav-item"><a class="nav-link" href="#">Separated link</a></li>
<li class="nav-item"><a class="nav-link" href="#">One more separated link</a></li>
</ul>
</li>
</ul>
@@ -74,10 +74,10 @@ base_url: "../"
<div class="bs-example bs-navmenu-fixed-example">
<nav class="navmenu navmenu-default navmenu-fixed-left" role="navigation">
<a class="navmenu-brand" href="#">Brand</a>
<ul class="nav navmenu-nav">
<li class="active"><a href="#">Home</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<ul class="nav navmenu-nav list-group">
<li class="nav-item active"><a class="nav-link" href="#">Home</a></li>
<li class="nav-item"><a class="nav-link" href="#">Link</a></li>
<li class="nav-item"><a class="nav-link" href="#">Link</a></li>
</ul>
</nav>
</div><!-- /example -->
@@ -102,54 +102,58 @@ base_url: "../"
<h2 id="navmenu-offcanvas">Off canvas</h2>
<p>With the <a href="../javascript/#offcanvas">offcanvas plugin</a>, you can hide the navmenu off canvas. This is especially useful for screens with a small viewport.</p>
<p>With the <a href="../components/#offcanvas">offcanvas plugin</a>, you can hide the navmenu off canvas. This is especially useful for screens with a small viewport.</p>
<div class="bs-example bs-navmenu-offcanvas-example">
<div id="myNavmenuCanvas">
<nav id="myNavmenu" class="navmenu navmenu-default navmenu-fixed-left offcanvas" role="navigation">
<a class="navmenu-brand" href="#">Brand</a>
<ul class="nav navmenu-nav">
<li class="active"><a href="#">Home</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<ul class="nav navmenu-nav list-group">
<li class="nav-item active"><a class="nav-link" href="#">Home</a></li>
<li class="nav-item"><a class="nav-link" href="#">Link</a></li>
<li class="nav-item"><a class="nav-link" href="#">Link</a></li>
</ul>
</nav>
<div class="navbar navbar-default navbar-fixed-top">
<button type="button" class="navbar-toggle" data-toggle="offcanvas" data-target="#myNavmenu" data-canvas="#myNavmenuCanvas" data-placement="left">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<header class="navbar navbar-light bg-light fixed-top">
<button class="navbar-toggler" type="button" data-toggle="offcanvas" data-target="#myNavmenu" data-canvas="#myNavmenuCanvas" data-placement="left">
<span class="navbar-toggler-icon"></span>
</button>
</div>
</header>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis in aliquet nisl. Praesent sed leo congue, fringilla eros eu, tempus metus. Nam mollis odio ipsum, non vehicula ipsum accumsan sodales. Morbi varius vitae elit euismod cursus. Donec a dapibus justo, in facilisis nisi. Suspendisse ut turpis dui. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque dui risus, tincidunt at odio ut, ultrices dignissim ipsum. Cras ultrices erat nec leo luctus varius. Nulla sollicitudin tincidunt nulla, ut porta mauris volutpat vitae. Suspendisse ornare dolor sit amet massa venenatis pulvinar.</p>
</div>
</div><!-- /example -->
{% highlight html %}
<nav id="myNavmenu" class="navmenu navmenu-default navmenu-fixed-left offcanvas" role="navigation">
...
</nav>
<div class="navbar navbar-default navbar-fixed-top">
<button type="button" class="navbar-toggle" data-toggle="offcanvas" data-target="#myNavmenu" data-canvas="body">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<header class="navbar navbar-light bg-light fixed-top">
<button class="navbar-toggler" type="button" data-toggle="offcanvas" data-target="#myNavmenu" data-canvas="body">
<span class="navbar-toggler-icon"></span>
</button>
</div>
</header>
{% endhighlight %}
<div class="bs-callout bs-callout-info">
<h4>Examples</h4>
<p>There is a full example for an <a href="../examples/navmenu-push/">off canvas push menu</a> as well as examples for an off canvas navmenu with an <a href="../examples/navmenu/">slide in</a> and <a href="../examples/navmenu-reveal/">reveal</a> effect.</p>
</div>
<h2 id="navmenu-inverted">Inverted navmenu</h2>
<p>Modify the look of the navmenu by adding <code>.navmenu-inverse</code>.</p>
<div class="bs-example">
<nav class="navmenu navmenu-inverse" role="navigation">
<a class="navmenu-brand" href="#">Brand</a>
<ul class="nav navmenu-nav">
<li class="active"><a href="#">Home</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<ul class="nav navmenu-nav list-group">
<li class="nav-item active"><a class="nav-link" href="#">Home</a></li>
<li class="nav-item"><a class="nav-link" href="#">Link</a></li>
<li class="nav-item"><a class="nav-link" href="#">Link</a></li>
</ul>
</nav>
</div><!-- /example -->
@@ -165,7 +169,7 @@ base_url: "../"
<!-- Alerts
================================================== -->
<div class="bs-docs-section">
<div class="page-header">
<div class="pb-2 mt-4 mb-2 border-bottom">
<h1 id="alerts">Alerts</h1>
</div>
@@ -183,3 +187,563 @@ base_url: "../"
{% endhighlight %}
</div>
<!-- Buttons
================================================== -->
<div class="bs-docs-section">
<div class="pb-2 mt-4 mb-2 border-bottom">
<h1 id="buttons">Buttons</h1>
</div>
<div>
<h2 id="buttons-labels">Labels</h2>
<p>Give a button some extra style by adding a label. Add <code>.btn-labeled</code> to any button with a label.</p>
<div class="bs-example">
<button type="button" class="btn btn-labeled btn-secondary"><span class="btn-label"><i class="fa fa-arrow-left"></i></span>Left</button>
<button type="button" class="btn btn-labeled btn-secondary">Right<span class="btn-label btn-label-right"><i class="fa fa-arrow-right"></i></span></button>
<button type="button" class="btn btn-labeled btn-success"><span class="btn-label"><i class="fa fa-check"></i></span>Success</button>
<button type="button" class="btn btn-labeled btn-danger"><span class="btn-label"><i class="fa fa-times"></i></span>Danger</button>
</div>
{% highlight html %}
<!-- Standard button with label -->
<button type="button" class="btn btn-labeled btn-secondary"><span class="btn-label"><i class="fa fa-arrow-left"></i></span>Left</button>
<!-- Standard button with label on the right side -->
<button type="button" class="btn btn-labeled btn-secondary">Right<span class="btn-label btn-label-right"><i class="fa fa-arrow-right"></i></span></button>
<!-- Success button with label -->
<button type="button" class="btn btn-labeled btn-success"><span class="btn-label"><i class="fa fa-check"></i></span>Success</button>
<!-- Danger button with label -->
<button type="button" class="btn btn-labeled btn-danger"><span class="btn-label"><i class="fa fa-times"></i></span>Danger</button>
{% endhighlight %}
</div>
</div>
<!-- Off canvas
================================================== -->
<div class="bs-docs-section">
<div class="pb-2 mt-4 mb-2 border-bottom">
<h1 id="offcanvas">Off canvas <small>offcanvas.js</small></h1>
</div>
<h2 id="offcanvas-examples">Example</h2>
<p>The offcanvas plugin allows you to hide an element from sight and than show it by moving either that or any other element. It's intended to be used for off canvas navigation, like push menus.</p>
<div class="bs-example bs-navmenu-offcanvas-example">
<div id="myNavmenuCanvas2">
<nav id="myNavmenu2" class="navmenu navmenu-default navmenu-fixed-left offcanvas" role="navigation">
<a class="navmenu-brand" href="#">Brand</a>
<ul class="nav navmenu-nav flex-column">
<li class="nav-item active"><a class="nav-link" href="#">Home</a></li>
<li class="nav-item"><a class="nav-link" href="#">Link</a></li>
<li class="nav-item"><a class="nav-link" href="#">Link</a></li>
</ul>
</nav>
<header class="navbar navbar-light bg-light fixed-top">
<button class="navbar-toggler" type="button" data-toggle="offcanvas" data-target="#myNavmenu2" data-canvas="#myNavmenuCanvas2" data-placement="left">
<span class="navbar-toggler-icon"></span>
</button>
</header>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis in aliquet nisl. Praesent sed leo congue, fringilla eros eu, tempus metus. Nam mollis odio ipsum, non vehicula ipsum accumsan sodales. Morbi varius vitae elit euismod cursus. Donec a dapibus justo, in facilisis nisi. Suspendisse ut turpis dui. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque dui risus, tincidunt at odio ut, ultrices dignissim ipsum. Cras ultrices erat nec leo luctus varius. Nulla sollicitudin tincidunt nulla, ut porta mauris volutpat vitae. Suspendisse ornare dolor sit amet massa venenatis pulvinar.</p>
</div>
</div><!-- /example -->
{% highlight html %}
<nav id="myNavmenu" class="navmenu navmenu-default navmenu-fixed-left offcanvas" role="navigation">
<a class="navmenu-brand" href="#">Brand</a>
<ul class="nav navmenu-nav flex-column">
<li class="nav-item active"><a class="nav-link" href="#">Home</a></li>
<li class="nav-item"><a class="nav-link" href="#">Link</a></li>
<li class="nav-item"><a class="nav-link" href="#">Link</a></li>
</ul>
</nav>
<header class="navbar navbar-light bg-light fixed-top">
<button class="navbar-toggler" type="button" data-toggle="offcanvas" data-target="#myNavmenu" data-canvas="body">
<span class="navbar-toggler-icon"></span>
</button>
</header>
{% endhighlight %}
<div class="bs-callout bs-callout-info">
<h4>Examples</h4>
<p>For better understanding, have a look at the <a href="../examples/navmenu/">off canvas slide in menu</a>, <a href="../examples/navmenu-push/">off canvas push menu</a> and <a href="../examples/navmenu-reveal/">off canvas reveal menu</a> examples.</p>
</div>
<hr class="bs-docs-separator">
<h2 id="offcanvas-usage">Usage</h2>
<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>.
<h3>Via JavaScript</h3>
<p>Call the offcanvas via javascript:</p>
{% highlight js %}
$('.navmenu').offcanvas()
{% endhighlight %}
<h3>Options</h3>
<p>Options can be placed both on control and on target menu element.</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th style="width: 100px;">Name</th>
<th style="width: 50px;">type</th>
<th style="width: 100px;">default</th>
<th>description</th>
</tr>
</thead>
<tbody>
<tr>
<td>canvas</td>
<td>string</td>
<td>false</td>
<td>If set, the canvas will be moved on show and hide instead of the target element. This creates alternative effects.</td>
</tr>
<tr>
<td>toggle</td>
<td>boolean</td>
<td>true</td>
<td>Toggles the off canvas element on invocation</td>
</tr>
<tr>
<td>placement</td>
<td>string</td>
<td>'auto'</td>
<td>Where to position the element at the start of the animation. For example, if placement is "left", the element will slide from left to right. The default option "auto" guesses the placement based on position and dimension.</td>
</tr>
<tr>
<td>autohide</td>
<td>boolean</td>
<td>true</td>
<td>Hide the off canvas element if clicked anywhere other that the element.</td>
</tr>
<tr>
<td>recalc</td>
<td>boolean</td>
<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>
<td>true</td>
<td>Disable scrolling when the off canvas element is shown, by setting overflow to hidden for the body.</td>
</tr>
<tr>
<td>backdrop</td>
<td>boolean</td>
<td>false</td>
<td>If backdrop should be shown when menu is opened, in modal-like style.</td>
</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>
<p>Initializes the off canvas element with an optional options.</p>
<h4>.offcanvas('toggle')</h4>
<p>Toggles an off canvas element to shown or hidden.</p>
<h4>.offcanvas('show')</h4>
<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">
<thead>
<tr>
<th style="width: 150px;">Event Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>show.bs.offcanvas</td>
<td>This event fires immediately when the show instance method is called.</td>
</tr>
<tr>
<td>shown.bs.offcanvas</td>
<td>This event is fired when the target has been made visible to the user (will wait for CSS transitions to complete).</td>
</tr>
<tr>
<td>hide.bs.offcanvas</td>
<td>This event is fired immediately when the hide instance method has been called.</td>
</tr>
<tr>
<td>hidden.bs.offcanvas</td>
<td>This event is fired when the modal has finished being hidden from the user (will wait for CSS transitions to complete).</td>
</tr>
</tbody>
</table>
</div><!-- ./bs-table-responsive -->
</div>
<!-- Row link
================================================== -->
<div class="bs-docs-section bs-jasny">
<div class="pb-2 mt-4 mb-2 border-bottom">
<h1 id="rowlink">Row link <small>rowlink.js</small></h1>
</div>
<h2 id="rowlink-examples">Example</h2>
<p>This plugin turns a table row into a clickable link.</p>
<div class="bs-example">
<table class="table table-striped table-bordered table-hover">
<thead>
<tr><th>Name</th><th>Description</th><th>Actions</th></tr>
</thead>
<tbody data-link="row" class="rowlink">
<tr><td><a href="#fileinput">File input</a></td><td>The file input plugin allows you to create a visually appealing file widgets.</td><td class="rowlink-skip"><a href="#">Action</a></td></tr>
<tr><td><a href="http://www.jasny.net/" target="_blank">jasny.net</a></td><td>Shared knowledge of Arnold Daniels aka Jasny.</td><td class="rowlink-skip"><a href="#">Action</a></td></tr>
<tr><td><a href="#rowlinkModal" data-toggle="modal">Launch modal</a></td><td>Toggle a modal via JavaScript by clicking this row.</td><td class="rowlink-skip"><a href="#">Action</a></td></tr>
</tbody>
</table>
</div>
<div id="rowlinkModal" class="modal" tabindex="-1" role="dialog" aria-labelledby="rowlinkModalTitle" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="rowlinkModalTitle">Rowlink Modal</h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<p>This modal proves that JavaScript events are triggered correctly by rowlink.</p>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
{% highlight html %}
<table class="table table-striped table-bordered table-hover">
<thead>
<tr><th>Name</th><th>Description</th><th>Actions</th></tr>
</thead>
<tbody data-link="row" class="rowlink">
<tr><td><a href="#fileinput">File input</a></td><td>The file input plugin allows you to create a visually appealing file widgets.</td><td class="rowlink-skip"><a href="#">Action</a></td></tr>
<tr><td><a href="http://www.jasny.net/" target="_blank">jasny.net</a></td><td>Shared knowledge of Arnold Daniels aka Jasny.</td><td class="rowlink-skip"><a href="#">Action</a></td></tr>
<tr><td><a href="#rowlinkModal" data-toggle="modal">Launch modal</a></td><td>Toggle a modal via JavaScript by clicking this row.</td><td class="rowlink-skip"><a href="#">Action</a></td></tr>
</tbody>
</table>
{% endhighlight %}
<hr class="bs-docs-separator">
<h2 id="rowlink-usage">Usage</h2>
<h3>Via data attributes</h3>
<p>Add class <code>.rowlink</code> and attribute <code>data-link="row"</code> to a <code>&lt;table&gt;</code> or <code>&lt;tbody&gt;</code> element. For other options append the name to <code>data-</code>, as in <code>data-target="a.mainlink"</code> A cell can be excluded by adding the <code>.rowlink-skip</code> class to the <code>&lt;td&gt;</code>.</p>
<h3>Via JavaScript</h3>
<p>Call the row link via javascript:</p>
{% highlight js %}
$('tbody.rowlink').rowlink()
{% endhighlight %}
<h3>Options</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th style="width: 100px;">Name</th>
<th style="width: 50px;">type</th>
<th style="width: 100px;">default</th>
<th>description</th>
</tr>
</thead>
<tbody>
<tr>
<td>target</td>
<td>string</td>
<td>'a'</td>
<td>A jquery selector string, to select the link element within each row.</td>
</tr>
</tbody>
</table>
<h3>Methods</h3>
<h4>.rowlink(options)</h4>
<p>Makes the rows of a table or tbody clickable.</p>
</div>
<!-- File input
================================================== -->
<div class="bs-docs-section bs-jasny">
<div class="pb-2 mt-4 mb-2 border-bottom">
<h1 id="fileinput">File input <small>fileinput.js</small></h1>
</div>
<h2 id="fileinput-examples">Examples</h2>
<p>The file input plugin allows you to create a visually appealing file or image input widgets.</p>
<p>
In first of the following examples one can easily add support for file icon, how it previously was, untill Bootstrap dropped Glyphicons. Include the link to iconic font on the page, and replace the following line
</p>
{% highlight html %}
<span class="fileinput-filename"></span>
{% endhighlight %}
<p>with the following (<code>glyphicon</code> classes should be changed to the ones that you use):</p>
{% highlight html %}
<i class="glyphicon glyphicon-file fileinput-exists"></i> <span class="fileinput-filename with-icon"></span>
{% endhighlight %}
<h3>File input widgets</h3>
<div class="bs-example">
<div class="fileinput fileinput-new input-group" data-provides="fileinput">
<div class="form-control" data-trigger="fileinput">
<span class="fileinput-filename"></span>
</div>
<span class="input-group-append">
<span class="input-group-text fileinput-exists" data-dismiss="fileinput">
Remove
</span>
<span class="input-group-text btn-file">
<span class="fileinput-new">Select file</span>
<span class="fileinput-exists">Change</span>
<input type="file" multiple>
</span>
</span>
</div>
</div>
{% highlight html %}
<div class="fileinput fileinput-new input-group" data-provides="fileinput">
<div class="form-control" data-trigger="fileinput">
<span class="fileinput-filename"></span>
</div>
<span class="input-group-append">
<span class="input-group-text fileinput-exists" data-dismiss="fileinput">
Remove
</span>
<span class="input-group-text btn-file">
<span class="fileinput-new">Select file</span>
<span class="fileinput-exists">Change</span>
<input type="file" name="..." multiple>
</span>
</span>
</div>
{% endhighlight %}
<div class="bs-example">
<div class="fileinput fileinput-new" data-provides="fileinput">
<span class="btn btn-outline-secondary 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-outline-secondary 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>
{% endhighlight %}
<h3>Image upload widgets</h3>
<p>When uploading an image, it's possible to show a thumbnail instead of the filename.</p>
<div class="bs-example">
<div class="fileinput fileinput-new" data-provides="fileinput">
<div class="fileinput-preview img-thumbnail" data-trigger="fileinput" style="width: 200px; height: 150px;"></div>
<div>
<span class="btn btn-outline-secondary btn-file">
<span class="fileinput-new">Select image</span>
<span class="fileinput-exists">Change</span>
<input type="file">
</span>
<a href="#" class="btn btn-outline-secondary fileinput-exists" data-dismiss="fileinput">Remove</a>
</div>
</div>
</div>
{% highlight html %}
<div class="fileinput fileinput-new" data-provides="fileinput">
<div class="fileinput-preview img-thumbnail" data-trigger="fileinput" style="width: 200px; height: 150px;"></div>
<div>
<span class="btn btn-outline-secondary btn-file">
<span class="fileinput-new">Select image</span>
<span class="fileinput-exists">Change</span>
<input type="file" name="...">
</span>
<a href="#" class="btn btn-outline-secondary fileinput-exists" data-dismiss="fileinput">Remove</a>
</div>
</div>
{% endhighlight %}
<div class="bs-example">
<div class="fileinput fileinput-new" data-provides="fileinput">
<div class="fileinput-new img-thumbnail" style="width: 200px; height: 150px;">
<img data-src="holder.js/100%x100%" alt="Generic placeholder thumbnail" src="data:image/png;base64,">
</div>
<div class="fileinput-preview fileinput-exists img-thumbnail" style="max-width: 200px; max-height: 150px;"></div>
<div>
<span class="btn btn-outline-secondary btn-file"><span class="fileinput-new">Select image</span><span class="fileinput-exists">Change</span><input type="file"></span>
<a href="#" class="btn btn-outline-secondary fileinput-exists" data-dismiss="fileinput">Remove</a>
</div>
</div>
</div>
{% highlight html %}
<div class="fileinput fileinput-new" data-provides="fileinput">
<div class="fileinput-new img-thumbnail" style="width: 200px; height: 150px;">
<img data-src="holder.js/100%x100%" alt="...">
</div>
<div class="fileinput-preview fileinput-exists img-thumbnail" style="max-width: 200px; max-height: 150px;"></div>
<div>
<span class="btn btn-outline-secondary btn-file"><span class="fileinput-new">Select image</span><span class="fileinput-exists">Change</span><input type="file" name="..."></span>
<a href="#" class="btn btn-outline-secondary fileinput-exists" data-dismiss="fileinput">Remove</a>
</div>
</div>
{% endhighlight %}
<div class="bs-callout bs-callout-warning">
<p>Image preview only works in IE10+, FF3.6+, Safari6.0+, Chrome6.0+ and Opera11.1+. In older browsers the filename is shown instead.</p>
</div>
<hr class="bs-docs-separator">
<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>
<h3>Via JavaScript</h3>
<pre class="prettyprint linenums">$('.fileinput').fileinput()</pre>
<h3>Layout</h3>
<p>Using the given elements, you can layout the upload widget the way you want, either with a fixed <code>width</code> and <code>height</code> or with <code>max-width</code> and <code>max-height</code>.</p>
<h3>Options</h3>
<div class="table-responsive">
<table class="table table-bordered table-striped">
<thead>
<tr>
<th style="width: 100px;">Name</th>
<th style="width: 50px;">type</th>
<th>description</th>
</tr>
</thead>
<tbody>
<tr>
<td>name</td>
<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>
<tr>
<td>exif</td>
<td>bool</td>
<td>Enable this to rotate the image based on the orientation from the [Exif](https://en.wikipedia.org/wiki/Exif) meta data.</td>
</tr>
</tbody>
</table>
</div>
<h3>Methods</h3>
<h4>.fileinput(options)</h4>
<p>Initializes a file upload widget.</p>
<h4>.fileinput('clear')</h4>
<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">
<thead>
<tr>
<th style="width: 150px;">Event Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>change.bs.fileinput</td>
<td>This event is fired after a file is selected.</td>
</tr>
<tr>
<td>clear.bs.fileinput</td>
<td>This event is fired when the file input is cleared.</td>
</tr>
<tr>
<td>reset.bs.fileinput</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

@@ -1,52 +0,0 @@
---
layout: default
title: CSS
slug: css
lead: "Global CSS settings, fundamental HTML elements styled and enhanced with extensible classes, and an advanced grid system."
base_url: "../"
---
<!-- Global Bootstrap settings
================================================== -->
<div class="bs-docs-section">
<div class="page-header">
<h1 id="overview">Overview</h1>
</div>
<h3 id="overview-container">Containers</h3>
<p>Added <code>.container-smooth</code> a container to use the same <code>max-width</code> for all viewport sizes. This means that the container size won't jump at media query breakpoints.</p>
</div>
<!-- Buttons
================================================== -->
<div class="bs-docs-section">
<div class="page-header">
<h1 id="buttons">Buttons</h1>
</div>
<div>
<h2 id="buttons-labels">Labels</h2>
<p>Give a button some extra style by adding a label. Add <code>.btn-labeled</code> to any button with a label.</p>
<div class="bs-example">
<button type="button" class="btn btn-labeled btn-default"><span class="btn-label"><i class="glyphicon glyphicon-arrow-left"></i></span>Left</button>
<button type="button" class="btn btn-labeled btn-default">Right<span class="btn-label btn-label-right"><i class="glyphicon glyphicon-arrow-right"></i></span></button>
<button type="button" class="btn btn-labeled btn-success"><span class="btn-label"><i class="glyphicon glyphicon-ok"></i></span>Success</button>
<button type="button" class="btn btn-labeled btn-danger"><span class="btn-label"><i class="glyphicon glyphicon-remove"></i></span>Danger</button>
</div>
{% highlight html %}
<!-- Standard button with label -->
<button type="button" class="btn btn-labeled btn-default"><span class="btn-label"><i class="glyphicon glyphicon-arrow-left"></i></span>Left</button>
<!-- Standard button with label on the right side -->
<button type="button" class="btn btn-labeled btn-default">Right<span class="btn-label btn-label-right"><i class="glyphicon glyphicon-arrow-right"></i></span></button>
<!-- Success button with label -->
<button type="button" class="btn btn-labeled btn-success"><span class="btn-label"><i class="glyphicon glyphicon-ok"></i></span>Success</button>
<!-- Danger button with label -->
<button type="button" class="btn btn-labeled btn-danger"><span class="btn-label"><i class="glyphicon glyphicon-remove"></i></span>Danger</button>
{% endhighlight %}
</div>
</div>

View File

@@ -1,170 +0,0 @@
---
layout: default
title: Customize and download
slug: customize
lead: Customize Bootstrap's components, Less variables, and jQuery plugins to get your very own version.
base_url: "../"
---
<!-- Customizer form -->
<form class="bs-customizer" role="form">
<div class="bs-docs-section" id="less-section">
<div class="page-header">
<button class="btn btn-default toggle" type="button">Toggle all</button>
<h1 id="less">Less files</h1>
</div>
<p class="lead">Choose which Less files to compile into your custom build of Jasny Bootstrap. Not sure which files to use? Read through the <a href="../css/">CSS</a> and <a href="../components/">Components</a> pages in the docs.</p>
<div class="row">
<div class="col-xs-6 col-sm-4">
<h3>Common CSS</h3>
<div class="checkbox">
<label>
<input type="checkbox" checked value="grid-container-smooth.less">
Grid system
</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox" checked value="button-labels.less">
Button labels
</label>
</div>
</div><!-- .col-xs-6 .col-sm-4 -->
<div class="col-xs-6 col-sm-4">
<h3>Components</h3>
<div class="checkbox">
<label>
<input type="checkbox" checked value="navmenu.less">
Navmenu
</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox" checked value="alerts-fixed.less">
Alerts
</label>
</div>
</div><!-- .col-xs-6 .col-sm-4 -->
<div class="col-xs-6 col-sm-4">
<h3>JavaScript components</h3>
<div class="checkbox">
<label>
<input type="checkbox" checked value="offcanvas.less">
Off canvas
</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox" checked value="rowlink.less">
Rowlink
</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox" checked value="inputmask.less">
Input mask
</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox" checked value="fileinput.less">
File input
</label>
</div>
</div><!-- .col-xs-6 .col-sm-4 -->
</div><!-- /.row -->
<div class="bs-callout bs-callout-danger">
<h4>Vanilla Bootstrap required</h4>
<p>Jasny Bootstrap requires <a href="http://getbootstrap.com/" target="_blank">vanilla Bootstrap</a> to be included.</p>
</div>
</div>
<div class="bs-docs-section" id="plugin-section">
<div class="page-header">
<button class="btn btn-default toggle" type="button">Toggle all</button>
<h1 id="plugins">jQuery plugins</h1>
</div>
<p class="lead">Choose which jQuery plugins should be included in your custom JavaScript files. Unsure what to include? Read the <a href="../javascript/">JavaScript</a> page in the docs.</p>
<div class="row">
<div class="col-lg-6">
<h4>Linked to components</h4>
<div class="checkbox">
<label>
<input type="checkbox" checked value="rowlink.js">
Rowlink
</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox" checked value="inputmask.js">
Input mask
</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox" checked value="fileinput.js">
File input
</label>
</div>
</div>
<div class="col-lg-6">
<h4>Magic</h4>
<div class="checkbox">
<label>
<input type="checkbox" checked value="offcanvas.js">
Off canvas
</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox" checked value="transition.js">
Transitions <small>(required for any kind of animation)</small>
</label>
</div>
</div>
</div>
<div class="bs-callout bs-callout-info">
<h4>Produces two files</h4>
<p>All checked plugins will be compiled into a readable <code>jasny-bootstrap.js</code> and a minified <code>jasny-bootstrap.min.js</code>. We recommend you use the minified version in production.</p>
</div>
<div class="bs-callout bs-callout-danger">
<h4>jQuery required</h4>
<p>All plugins require the latest version of <a href="http://jquery.com/" target="_blank">jQuery</a> to be included.</p>
</div>
</div>
<div class="bs-docs-section" id="less-variables-section">
<div class="page-header">
<button class="btn btn-default toggle" type="reset">Reset to defaults</button>
<h1 id="less-variables">Less variables</h1>
</div>
<p class="lead">Customize Less variables to define colors, sizes and more inside your custom CSS stylesheets.</p>
{% include customizer-variables.html %}
</div>
<div class="bs-docs-section">
<div class="page-header">
<h1 id="download">Download</h1>
</div>
<p class="lead">Hooray! Your custom version of Jasny Bootstrap is now ready to be compiled. Just click the button below to finish the process.</p>
<div class="bs-customize-download">
<button type="submit" id="btn-compile" class="btn btn-block btn-lg btn-outline" onclick="_gaq.push(['_trackEvent', 'Customize', 'Download', 'Customize and Download']);">Compile and Download</button>
</div>
</div><!-- /download -->
</form>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -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]>
@@ -34,7 +34,7 @@
<!-- Static navbar -->
<div class="navbar navbar-fixed-top navbar-default">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="offcanvas" data-target=".navbar-offcanvas" data-canvas="body">
<button type="button" class="navbar-toggle" data-toggle="offcanvas" data-target=".navbar-offcanvas" data-canvas="body" data-placement="right">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
@@ -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

@@ -1,10 +1,11 @@
body {
left: auto!important;
padding-top: 80px;
padding-bottom: 20px;
}
}
@media (min-width: 992px) {
.navbar {
padding-right: 15px;
}
}
}

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 rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css">
<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]>
@@ -29,38 +29,36 @@
<body>
<div class="navmenu navmenu-default navmenu-fixed-left offcanvas">
<a class="navmenu-brand" href="#">Project name</a>
<ul class="nav navmenu-nav">
<li><a href="../navmenu/">Slide in</a></li>
<li class="active"><a href="./">Push</a></li>
<li><a href="../navmenu-reveal/">Reveal</a></li>
<li><a href="../navbar-offcanvas/">Off canvas navbar</a></li>
<ul class="nav navmenu-nav flex-column">
<li class="nav-item"><a class="nav-link" href="../navmenu/">Slide in</a></li>
<li class="nav-item active"><a class="nav-link" href="./">Push</a></li>
<li class="nav-item"><a class="nav-link" href="../navmenu-reveal/">Reveal</a></li>
<li class="nav-item"><a class="nav-link" href="../navbar-offcanvas/">Off canvas navbar</a></li>
</ul>
<ul class="nav navmenu-nav">
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
<ul class="nav navmenu-nav flex-column">
<li class="nav-item"><a class="nav-link" href="#">Link</a></li>
<li class="nav-item"><a class="nav-link" href="#">Link</a></li>
<li class="nav-item"><a class="nav-link" href="#">Link</a></li>
<li class="nav-item dropdown">
<a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
<ul class="dropdown-menu navmenu-nav">
<li><a href="#">Action</a></li>
<li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li>
<li class="divider"></li>
<li class="nav-item"><a class="nav-link" href="#">Action</a></li>
<li class="nav-item"><a class="nav-link" href="#">Another action</a></li>
<li class="nav-item"><a class="nav-link" href="#">Something else here</a></li>
<li class="dropdown-divider"></li>
<li class="dropdown-header">Nav header</li>
<li><a href="#">Separated link</a></li>
<li><a href="#">One more separated link</a></li>
<li class="nav-item"><a class="nav-link" href="#">Separated link</a></li>
<li class="nav-item"><a class="nav-link" href="#">One more separated link</a></li>
</ul>
</li>
</ul>
</div>
<div class="navbar navbar-default navbar-fixed-top">
<button type="button" class="navbar-toggle" data-toggle="offcanvas" data-target=".navmenu" data-canvas="body">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<header class="navbar navbar-light bg-light fixed-top">
<button class="navbar-toggler" type="button" data-toggle="offcanvas" data-target=".navmenu" data-canvas="body">
<span class="navbar-toggler-icon"></span>
</button>
</div>
</header>
<div class="container">
<div class="page-header">
@@ -74,8 +72,9 @@
<!-- 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://code.jquery.com/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
<script src="../../dist/js/jasny-bootstrap.min.js"></script>
<script src="../../../js/offcanvas.js"></script>
</body>

View File

@@ -1,29 +1,29 @@
html, body {
height: 100%;
}
}
body {
padding: 50px 0 0 0;
}
padding: 70px 0 0 0;
}
.navbar-toggle {
float: left;
margin-left: 15px;
}
}
@media (min-width: 0) {
.navbar-toggle {
display: block; /* force showing the toggle */
}
}
}
@media (min-width: 992px) {
body {
padding: 0;
}
}
.navbar {
right: auto;
background: none;
border: none;
}
}
}

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 rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css">
<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]>
@@ -29,39 +29,37 @@
<body>
<div class="navmenu navmenu-default navmenu-fixed-left">
<a class="navmenu-brand" href="#">Project name</a>
<ul class="nav navmenu-nav">
<li><a href="../navmenu/">Slide in</a></li>
<li><a href="../navmenu-push/">Push</a></li>
<li class="active"><a href="./">Reveal</a></li>
<li><a href="../navbar-offcanvas/">Off canvas navbar</a></li>
<ul class="nav navmenu-nav flex-column">
<li class="nav-item"><a class="nav-link" href="../navmenu/">Slide in</a></li>
<li class="nav-item"><a class="nav-link" href="../navmenu-push/">Push</a></li>
<li class="nav-item active"><a class="nav-link" href="../navmenu-reveal/">Reveal</a></li>
<li class="nav-item"><a class="nav-link" href="../navbar-offcanvas/">Off canvas navbar</a></li>
</ul>
<ul class="nav navmenu-nav">
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
<ul class="nav navmenu-nav flex-column">
<li class="nav-item"><a class="nav-link" href="#">Link</a></li>
<li class="nav-item"><a class="nav-link" href="#">Link</a></li>
<li class="nav-item"><a class="nav-link" href="#">Link</a></li>
<li class="nav-item dropdown">
<a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
<ul class="dropdown-menu navmenu-nav">
<li><a href="#">Action</a></li>
<li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li>
<li class="divider"></li>
<li class="nav-item"><a class="nav-link" href="#">Action</a></li>
<li class="nav-item"><a class="nav-link" href="#">Another action</a></li>
<li class="nav-item"><a class="nav-link" href="#">Something else here</a></li>
<li class="dropdown-divider"></li>
<li class="dropdown-header">Nav header</li>
<li><a href="#">Separated link</a></li>
<li><a href="#">One more separated link</a></li>
<li class="nav-item"><a class="nav-link" href="#">Separated link</a></li>
<li class="nav-item"><a class="nav-link" href="#">One more separated link</a></li>
</ul>
</li>
</ul>
</div>
<div class="canvas">
<div class="navbar navbar-default navbar-fixed-top">
<button type="button" class="navbar-toggle" data-toggle="offcanvas" data-recalc="false" data-target=".navmenu" data-canvas=".canvas">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<header class="navbar navbar-light bg-light fixed-top">
<button class="navbar-toggler" type="button" data-toggle="offcanvas" data-target=".navmenu" data-recalc="false" data-canvas=".canvas">
<span class="navbar-toggler-icon"></span>
</button>
</div>
</header>
<div class="container">
<div class="page-header">
@@ -74,13 +72,14 @@
<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://code.jquery.com/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
<script src="../../dist/js/jasny-bootstrap.min.js"></script>
</body>
</html>

View File

@@ -1,15 +1,13 @@
html, body {
height: 100%;
}
.navbar-toggle {
float: left;
margin-left: 15px;
}
}
body {
padding: 20px 0 0 0;
}
.navmenu {
z-index: 1;
}
}
.canvas {
position: relative;
@@ -18,24 +16,18 @@ html, body {
min-height: 100%;
padding: 50px 0 0 0;
background: #fff;
}
@media (min-width: 0) {
.navbar-toggle {
display: block; /* force showing the toggle */
}
}
@media (min-width: 992px) {
body {
padding: 0;
}
}
.navbar {
right: auto;
background: none;
border: none;
}
}
.canvas {
padding: 0;
}
}
}

View File

@@ -7,17 +7,17 @@
<meta name="author" content="">
<link rel="shortcut icon" href="../../assets/ico/favicon.png">
<title>Navmenu Template for Bootstrap</title>
<title>Off Canvas Slide-in Menu Template for Bootstrap</title>
<!-- Bootstrap core CSS -->
<link href="//netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css">
<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]>
@@ -28,55 +28,53 @@
<body>
<div class="navmenu navmenu-default navmenu-fixed-left offcanvas-sm">
<a class="navmenu-brand visible-md visible-lg" href="#">Project name</a>
<ul class="nav navmenu-nav">
<li class="active"><a href="./">Slide in</a></li>
<li><a href="../navmenu-push/">Push</a></li>
<li><a href="../navmenu-reveal/">Reveal</a></li>
<li><a href="../navbar-offcanvas/">Off canvas navbar</a></li>
<ul class="nav navmenu-nav flex-column">
<li class="nav-item active"><a class="nav-link" href="../navmenu/">Slide in</a></li>
<li class="nav-item"><a class="nav-link" href="../navmenu-push/">Push</a></li>
<li class="nav-item"><a class="nav-link" href="../navmenu-reveal/">Reveal</a></li>
<li class="nav-item"><a class="nav-link" href="../navbar-offcanvas/">Off canvas navbar</a></li>
</ul>
<ul class="nav navmenu-nav">
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
<ul class="nav navmenu-nav flex-column">
<li class="nav-item"><a class="nav-link" href="#">Link</a></li>
<li class="nav-item"><a class="nav-link" href="#">Link</a></li>
<li class="nav-item"><a class="nav-link" href="#">Link</a></li>
<li class="nav-item dropdown">
<a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
<ul class="dropdown-menu navmenu-nav">
<li><a href="#">Action</a></li>
<li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li>
<li class="divider"></li>
<li class="nav-item"><a class="nav-link" href="#">Action</a></li>
<li class="nav-item"><a class="nav-link" href="#">Another action</a></li>
<li class="nav-item"><a class="nav-link" href="#">Something else here</a></li>
<li class="dropdown-divider"></li>
<li class="dropdown-header">Nav header</li>
<li><a href="#">Separated link</a></li>
<li><a href="#">One more separated link</a></li>
<li class="nav-item"><a class="nav-link" href="#">Separated link</a></li>
<li class="nav-item"><a class="nav-link" href="#">One more separated link</a></li>
</ul>
</li>
</ul>
</div>
<div class="navbar navbar-default navbar-fixed-top hidden-md hidden-lg">
<button type="button" class="navbar-toggle" data-toggle="offcanvas" data-target=".navmenu">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<header class="navbar navbar-light bg-light fixed-top hidden-md hidden-lg">
<button class="navbar-toggler" type="button" data-toggle="offcanvas" data-target=".navmenu">
<span class="navbar-toggler-icon"></span>
</button>
<a class="navbar-brand" href="#">Project name</a>
</div>
</header>
<div class="container">
<div class="page-header">
<h1>Navmenu Template</h1>
<h1>Off Canvas Slide-in Menu Template</h1>
</div>
<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://code.jquery.com/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
<script src="../../dist/js/jasny-bootstrap.min.js"></script>
</body>
</html>

View File

@@ -1,46 +1,45 @@
html, body {
height: 100%;
}
}
body {
padding: 50px 0 0 0;
}
padding: 70px 0 0 0;
}
.navmenu {
padding-top: 50px;
}
}
.navbar {
display: block;
text-align: center;
}
}
.navbar-brand {
display: inline-block;
float: none;
}
.navbar-toggle {
}
.navbar-toggler {
position: absolute;
float: left;
margin-left: 15px;
}
}
.container {
max-width: 100%;
}
}
@media (min-width: 1px) {
.navbar-toggle {
.navbar-toggler {
display: block !important;
}
}
}
@media (min-width: 992px) {
body {
padding: 0 0 0 300px;
}
}
.navmenu {
padding-top: 0;
}
}
.navbar {
display: none !important; /* IE8 fix */
}
}
}

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 rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css">
<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]>
@@ -29,21 +29,19 @@
<body>
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar navbar-expand-sm navbar-dark bg-dark fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">Project name</a>
</div>
<div class="collapse navbar-collapse">
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar-collapse-menu">
<span class="navbar-toggler-icon"></span>
</button>
<a class="navbar-brand" href="#">Project name</a>
<div class="collapse navbar-collapse" id="navbar-collapse-menu">
<ul class="nav navbar-nav">
<li class="active"><a href="#">Home</a></li>
<li><a href="#about">About</a></li>
<li><a href="#contact">Contact</a></li>
<li class="nav-item active"><a class="nav-link" href="#">Home</a></li>
<li class="nav-item"><a class="nav-link" href="#about">About</a></li>
<li class="nav-item"><a class="nav-link" href="#contact">Contact</a></li>
</ul>
</div><!--/.nav-collapse -->
</div>
@@ -62,8 +60,9 @@
<!-- 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://code.jquery.com/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
<script src="../../dist/js/jasny-bootstrap.min.js"></script>
</body>
</html>

View File

@@ -1,9 +1,9 @@
body
{
padding-top: 50px;
}
}
.starter-template
{
padding: 40px 15px;
text-align: center;
}
}

View File

@@ -9,12 +9,12 @@ base_url: "../"
<!-- Getting started
================================================== -->
<div class="bs-docs-section">
<div class="page-header">
<div class="pb-2 mt-4 mb-2 border-bottom">
<h1 id="jasny-bootstrap">Jasny Bootstrap</h1>
</div>
<p class="lead">Jasny Bootstrap is an extension to <a href="http://getbootstrap.com">vanilla Bootstrap</a>, adding a number of features and components.</p>
<p>The aim of Jasny Bootstrap is to provide all the required features for building highly interactive web applications for desktop and mobile.</p>
<div class="bs-callout bs-callout-warning">
<h4>Delivered as extension only</h4>
<p>As of version 3.1.0 Jasny Bootstrap is no longer bundled with vanilla Bootstrap. You should load vanilla Bootstrap's CSS before this extension.</p>
@@ -24,7 +24,7 @@ base_url: "../"
<!-- Getting started
================================================== -->
<div class="bs-docs-section">
<div class="page-header">
<div class="pb-2 mt-4 mb-2 border-bottom">
<h1 id="download">Download</h1>
</div>
<p class="lead">Jasny Bootstrap has a few easy ways to quickly get started, each one appealing to a different skill level and use case. Read through to see what suits your particular needs.</p>
@@ -32,7 +32,7 @@ base_url: "../"
<h3 id="download-compiled">Compiled CSS and JS</h3>
<p>The fastest way to get Jasny Bootstrap is to download the compiled and minified versions of our CSS and JavaScript. No documentation or original source files are included.</p>
<p><a class="btn btn-lg btn-primary" href="{{ site.download.dist }}" onclick="_gaq.push(['_trackEvent', 'Getting started', 'Download', 'Download compiled']);">Download Jasny Bootstrap</a></p>
<h3 id="download-additional">Additional downloads</h3>
<div class="bs-docs-dl-options">
<h4>
@@ -43,11 +43,6 @@ base_url: "../"
<a href="{{ site.repo }}" onclick="_gaq.push(['_trackEvent', 'Getting started', 'Download', 'GitHub project']);">Clone or fork via GitHub</a>
</h4>
<p>Visit us on GitHub to clone or fork the Jasny Bootstrap project.</p>
<h4>
Install with <a href="http://bower.io">Bower</a>
</h4>
<p>Install and manage the original files for all CSS and JavaScript, along with a local copy of the docs, using <a href="http://bower.io">Bower</a>.</p>
{% highlight bash %}$ bower install jasny-bootstrap{% endhighlight %}
</div>
<h3 id="download-cdn">Jasny Bootstrap @ cdnjs</h3>
@@ -70,7 +65,7 @@ base_url: "../"
<!-- File structure
================================================== -->
<div class="bs-docs-section bs-jasny">
<div class="page-header">
<div class="pb-2 mt-4 mb-2 border-bottom">
<h1 id="whats-included">What's included</h1>
</div>
<p class="lead">Within the download you'll find the following directories and files, logically grouping common resources and providing both compiled and minified variations.</p>
@@ -86,16 +81,16 @@ jasny-bootstrap/
└── js/
├── jasny-bootstrap.js
└── jasny-bootstrap.min.js
{% endhighlight %}
<p>This is the most basic form of Jasny Bootstrap. We provide compiled CSS and JS (<code>jasny-bootstrap.*</code>), as well as compiled and minified CSS and JS (<code>jasny-bootstrap.min.*</code>).</p>
<p>The <code>jasny-bootstrap.*</code> files should be loaded in conjunction with the original vanilla Bootstrap files.</p>
<div class="bs-callout bs-callout-danger" id="jquery-required">
<h4>jQuery required</h4>
<p>Please note that <strong>all JavaScript plugins require jQuery</strong> to be included, as shown in the <a href="#template">starter template</a>. <a href="{{ site.repo }}/blob/v{{ site.current_version }}/bower.json">Consult our <code>bower.json</code></a> to see which versions of jQuery are supported.</p>
<p>Please note that <strong>all JavaScript plugins require jQuery</strong> to be included, as shown in the <a href="#template">starter template</a>.
</div>
</div>
@@ -103,7 +98,7 @@ jasny-bootstrap/
<!-- Template
================================================== -->
<div class="bs-docs-section">
<div class="page-header">
<div class="pb-2 mt-4 mb-2 border-bottom">
<h1 id="template">Basic template</h1>
</div>
<p class="lead">Start with this basic HTML template, or modify <a href="../getting-started#examples">these examples</a>. We hope you'll customize our templates and examples, adapting them to suit your needs.</p>
@@ -140,25 +135,99 @@ jasny-bootstrap/
</div>
<!-- Plugins
================================================== -->
<div class="bs-docs-section">
<div class="pb-2 mt-4 mb-2 border-bottom">
<h1 id="js-overview">Plugins</h1>
</div>
<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>
</div>
<h3 id="js-data-attrs">Data attributes</h3>
<p>You can use all Jasny Bootstrap plugins purely through the markup API without writing a single line of JavaScript. This is Bootstrap's first-class API and should be your first consideration when using a plugin.</p>
<p>That said, in some situations it may be desirable to turn this functionality off. Therefore, we also provide the ability to disable the data attribute API by unbinding all events on the document namespaced with <code>data-api</code>. This looks like this:
{% highlight js %}
$(document).off('.data-api')
{% endhighlight %}
<p>Alternatively, to target a specific plugin, just include the plugin's name as a namespace along with the data-api namespace like this:</p>
{% highlight js %}
$(document).off('.alert.data-api')
{% endhighlight %}
<h3 id="js-programmatic-api">Programmatic API</h3>
<p>We also believe you should be able to use all Bootstrap plugins purely through the JavaScript API. All public APIs are single, chainable methods, and return the collection acted upon.</p>
{% highlight js %}
$(".fileinput").fileinput().addClass("fat")
{% endhighlight %}
<p>All methods should accept an optional options object, a string which targets a particular method, or nothing (which initiates a plugin with default behavior):</p>
{% highlight js %}
$("#myMenu").offcanvas() // initialized with defaults
$("#myMenu").offcanvas({ autohide: false }) // initialized with no autohide
$("#myMenu").offcanvas('show') // initializes and invokes show immediately</p>
{% endhighlight %}
<p>Each plugin also exposes its raw constructor on a <code>Constructor</code> property: <code>$.fn.popover.Offcanvas</code>. If you'd like to get a particular plugin instance, retrieve it directly from an element: <code>$('.navmenu').data('offcanvas')</code>.</p>
<h3 id="js-noconflict">No conflict</h3>
<p>Sometimes it is necessary to use Bootstrap plugins with other UI frameworks. In these circumstances, namespace collisions can occasionally occur. If this happens, you may call <code>.noConflict</code> on the plugin you wish to revert the value of.</p>
{% highlight js %}
var bootstrapButton = $.fn.button.noConflict() // return $.fn.button to previously assigned value
$.fn.bootstrapBtn = bootstrapButton // give $().bootstrapBtn the Bootstrap functionality
{% endhighlight %}
<h3 id="js-events">Events</h3>
<p>Bootstrap provides custom events for most plugin's unique actions. Generally, these come in an infinitive and past participle form - where the infinitive (ex. <code>show</code>) is triggered at the start of an event, and its past participle form (ex. <code>shown</code>) is trigger on the completion of an action.</p>
<p>As of 3.1.2, all Bootstrap events are namespaced.</p>
<p>All infinitive events provide <code>preventDefault</code> functionality. This provides the ability to stop the execution of an action before it starts.</p>
{% highlight js %}
$('#myMenu').on('show.bs.offcanvas', function (e) {
if (!data) return e.preventDefault() // stops menu from being shown
})
{% endhighlight %}
</div>
<!-- Containers
================================================== -->
<div class="bs-docs-section">
<div class="pb-2 mt-4 mb-2 border-bottom">
<h1 id="containers">Containers</h1>
</div>
<p>Added <code>.container-smooth</code> a container to use the same <code>max-width</code> for all viewport sizes. This means that the container size won't jump at media query breakpoints.</p>
</div>
<!-- Template
================================================== -->
<div class="bs-docs-section">
<div class="page-header">
<div class="pb-2 mt-4 mb-2 border-bottom">
<h1 id="examples">Examples</h1>
</div>
<p class="lead">Create diverse and advanced user interfaces using Jasny's Bootstrap components. See also <a href="#customizing">Customizing Bootstrap</a> for tips on maintaining your own Bootstrap variants.</p>
<p class="lead">Create diverse and advanced user interfaces using Jasny's Bootstrap components.</p>
<div class="row bs-examples">
<div class="col-xs-6 col-md-4">
<a class="thumbnail" href="../examples/starter-template/">
<img src="../examples/screenshots/starter-template.jpg" alt="">
<img class="img-thumbnail" src="../examples/screenshots/starter-template.jpg" alt="">
</a>
<h4>Starter template</h4>
<p>Nothing but the basics: compiled CSS and JavaScript along with a container.</p>
</div>
<div class="col-xs-6 col-md-4">
<a class="thumbnail" href="../examples/navmenu/">
<img src="../examples/screenshots/navmenu.jpg" alt="">
<img class="img-thumbnail" src="../examples/screenshots/navmenu.jpg" alt="">
</a>
<h4>Navmenu</h4>
<p>A basic template showing the navmenu element and demonstrates usage of the offcanvas plugin.</p>
@@ -166,7 +235,7 @@ jasny-bootstrap/
<div class="clearfix visible-xs visible-sm"></div>
<div class="col-xs-6 col-md-4">
<a class="thumbnail" href="../examples/navmenu-push/">
<img src="../examples/screenshots/navmenu-push.jpg" alt="">
<img class="img-thumbnail" src="../examples/screenshots/navmenu-push.jpg" alt="">
</a>
<h4>Off Canvas Push Menu</h4>
<p>A template demonstrating a push effect for the off canvas navmenu.</p>
@@ -174,14 +243,14 @@ jasny-bootstrap/
<div class="clearfix visible-md visible-lg"></div>
<div class="col-xs-6 col-md-4">
<a class="thumbnail" href="../examples/navmenu-reveal/">
<img src="../examples/screenshots/navmenu-reveal.jpg" alt="">
<img class="img-thumbnail" src="../examples/screenshots/navmenu-reveal.jpg" alt="">
</a>
<h4>Off Canvas Reveal Menu</h4>
<p>A template demonstrating a reveal effect by placing the navmenu under the content.</p>
</div>
<div class="col-xs-6 col-md-4">
<a class="thumbnail" href="../examples/navbar-offcanvas/">
<img src="../examples/screenshots/navbar-offcanvas.jpg" alt="">
<img class="img-thumbnail" src="../examples/screenshots/navbar-offcanvas.jpg" alt="">
</a>
<h4>Off canvas navbar</h4>
<p>A template using offcanvas for mobile view of the navbar.</p>
@@ -189,16 +258,40 @@ jasny-bootstrap/
</div>
</div>
<!-- Migration
<!-- Migration from 3.x to 4.0
================================================== -->
<div class="bs-docs-section">
<div class="page-header">
<h1 id="migration">Migrating from 2.x to 3.0</h1>
<div class="pb-2 mt-4 mb-2 border-bottom">
<h1 id="migration-v4">Migrating from 3.x to 4.0</h1>
</div>
<p class="lead">There are not many changes in this migration, as it mostly deals with moving to Bootstrap 4 support.</p>
<h2 id="migration-classes-v4">Major class changes</h2>
<p>Bootsrtap 4 release introduced some new classes, so we also switched to using them. There're no other new classes in this version of Jasny Bootstrap.</p>
<ul>
<li>Introduced <code>.nav-item</code>, <code>.nav-link</code>, <code>.flex-column</code> classes, that are used in nav-menu.</li>
<li><code>.navbar-fixed-top</code> is changed to <code>.fixed-top</code>.</li>
</ul>
<h2 id="migration-dropped-v4">What's removed</h2>
<ul>
<li>Starting from this version Jasny Bootstrap is no longer published on Bower.</li>
<li>Inputmask plugin has been removed.</li>
<li>Removed variables customization page in documentation.</li>
<li>By default file icon is removed from file input, though it can be easily added. See <a href="../components#fileinput-examples">Fielinput examples</a>.</li>
<li>As Glyphicons were excluded from Bootstrap 4 bundle, icons now should be explicitly loaded to be used. For button labels we switched to <a href="https://fontawesome.com/">Font Awasome icons</a>. For them to work, you should include the link to them on the page, like the following: <code>&lt;link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"&gt;</code></li>
</ul>
</div>
<!-- Migration from 2.x to 3.0
================================================== -->
<div class="bs-docs-section">
<div class="pb-2 mt-4 mb-2 border-bottom">
<h1 id="migration-v3">Migrating from 2.x to 3.0</h1>
</div>
<p class="lead">Folks looking to upgrade to v3 should use this section as a general upgrade guide. We've outlined some of the major changes and provided tables that highlight key changes.</p>
<h2 id="migration-classes">Major class changes</h2>
<h2 id="migration-classes-v3">Major class changes</h2>
<p>This table shows the style changes between v2.x and v3.0.</p>
<div class="table-responsive">
<table class="table table-bordered table-striped">
@@ -221,7 +314,7 @@ jasny-bootstrap/
</table>
</div><!-- /.table-responsive -->
<h2 id="migration-new">What's new</h2>
<h2 id="migration-new-v3">What's new</h2>
<p>We've added new elements and changed some existing ones. Here are the new or updated styles.</p>
<div class="table-responsive">
<table class="table table-bordered table-striped">
@@ -249,7 +342,7 @@ jasny-bootstrap/
</div><!-- /.table-responsive -->
<h2 id="migration-dropped">What's removed</h2>
<h2 id="migration-dropped-v3">What's removed</h2>
<p>The following elements have been dropped or changed in v3.0.</p>
<div class="table-responsive">
<table class="table table-bordered table-striped">
@@ -301,7 +394,7 @@ jasny-bootstrap/
</div><!-- /.table-responsive -->
<h2 id="migration-notes">Additional notes</h2>
<h2 id="migration-notes-v3">Additional notes</h2>
<p>Other changes in v3.0 are not immediately apparent. Base classes, key styles, and behaviors have been adjusted for flexibility and our <em>mobile first</em> approach. Here's a partial list:</p>
<ul>
<li>The fileupload plugin has been renamed to fileinput. File upload was poorly chosen, since the plugin allows the creation of a styled file input element. It has nothing to do with how the file is uploaded.</li>

View File

@@ -1,575 +0,0 @@
---
layout: default
title: JavaScript
slug: js
lead: "Bring Bootstrap's components to life with over a dozen custom jQuery plugins. Easily include them all, or one by one."
base_url: "../"
---
<!-- Overview
================================================== -->
<div class="bs-docs-section">
<div class="page-header">
<h1 id="js-overview">Overview</h1>
</div>
<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>
</div>
<h3 id="js-data-attrs">Data attributes</h3>
<p>You can use all Jasny Bootstrap plugins purely through the markup API without writing a single line of JavaScript. This is Bootstrap's first-class API and should be your first consideration when using a plugin.</p>
<p>That said, in some situations it may be desirable to turn this functionality off. Therefore, we also provide the ability to disable the data attribute API by unbinding all events on the document namespaced with <code>data-api</code>. This looks like this:
{% highlight js %}
$(document).off('.data-api')
{% endhighlight %}
<p>Alternatively, to target a specific plugin, just include the plugin's name as a namespace along with the data-api namespace like this:</p>
{% highlight js %}
$(document).off('.alert.data-api')
{% endhighlight %}
<h3 id="js-programmatic-api">Programmatic API</h3>
<p>We also believe you should be able to use all Bootstrap plugins purely through the JavaScript API. All public APIs are single, chainable methods, and return the collection acted upon.</p>
{% highlight js %}
$(".fileinput").fileinput().addClass("fat")
{% endhighlight %}
<p>All methods should accept an optional options object, a string which targets a particular method, or nothing (which initiates a plugin with default behavior):</p>
{% highlight js %}
$("#myMenu").offcanvas() // initialized with defaults
$("#myMenu").offcanvas({ autohide: false }) // initialized with no autohide
$("#myMenu").offcanvas('show') // initializes and invokes show immediately</p>
{% endhighlight %}
<p>Each plugin also exposes its raw constructor on a <code>Constructor</code> property: <code>$.fn.popover.Offcanvas</code>. If you'd like to get a particular plugin instance, retrieve it directly from an element: <code>$('.navmenu').data('offcanvas')</code>.</p>
<h3 id="js-noconflict">No conflict</h3>
<p>Sometimes it is necessary to use Bootstrap plugins with other UI frameworks. In these circumstances, namespace collisions can occasionally occur. If this happens, you may call <code>.noConflict</code> on the plugin you wish to revert the value of.</p>
{% highlight js %}
var bootstrapButton = $.fn.button.noConflict() // return $.fn.button to previously assigned value
$.fn.bootstrapBtn = bootstrapButton // give $().bootstrapBtn the Bootstrap functionality
{% endhighlight %}
<h3 id="js-events">Events</h3>
<p>Bootstrap provides custom events for most plugin's unique actions. Generally, these come in an infinitive and past participle form - where the infinitive (ex. <code>show</code>) is triggered at the start of an event, and its past participle form (ex. <code>shown</code>) is trigger on the completion of an action.</p>
<p>As of 3.1.2, all Bootstrap events are namespaced.</p>
<p>All infinitive events provide <code>preventDefault</code> functionality. This provides the ability to stop the execution of an action before it starts.</p>
{% highlight js %}
$('#myMenu').on('show.bs.offcanvas', function (e) {
if (!data) return e.preventDefault() // stops menu from being shown
})
{% endhighlight %}
</div>
<!-- Off canvas
================================================== -->
<div class="bs-docs-section">
<div class="page-header">
<h1 id="offcanvas">Off canvas <small>offcanvas.js</small></h1>
</div>
<h2 id="offcanvas-examples">Example</h2>
<p>The offcanvas plugin allows you to hide an element from sight and than show it by moving either that or any other element. It's intended to be used for off canvas navigation, like push menus.</p>
<div class="bs-example bs-navmenu-offcanvas-example">
<div id="myNavmenuCanvas">
<nav id="myNavmenu" class="navmenu navmenu-default navmenu-fixed-left offcanvas" role="navigation">
<a class="navmenu-brand" href="#">Brand</a>
<ul class="nav navmenu-nav">
<li class="active"><a href="#">Home</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
</ul>
</nav>
<div class="navbar navbar-default navbar-fixed-top">
<button type="button" class="navbar-toggle" data-toggle="offcanvas" data-target="#myNavmenu" data-canvas="#myNavmenuCanvas" data-placement="left">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis in aliquet nisl. Praesent sed leo congue, fringilla eros eu, tempus metus. Nam mollis odio ipsum, non vehicula ipsum accumsan sodales. Morbi varius vitae elit euismod cursus. Donec a dapibus justo, in facilisis nisi. Suspendisse ut turpis dui. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque dui risus, tincidunt at odio ut, ultrices dignissim ipsum. Cras ultrices erat nec leo luctus varius. Nulla sollicitudin tincidunt nulla, ut porta mauris volutpat vitae. Suspendisse ornare dolor sit amet massa venenatis pulvinar.</p>
</div>
</div><!-- /example -->
{% highlight html %}
<nav id="myNavmenu" class="navmenu navmenu-default navmenu-fixed-left offcanvas" role="navigation">
<a class="navmenu-brand" href="#">Brand</a>
<ul class="nav navmenu-nav">
<li class="active"><a href="#">Home</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
</ul>
</nav>
<div class="navbar navbar-default navbar-fixed-top">
<button type="button" class="navbar-toggle" data-toggle="offcanvas" data-target="#myNavmenu" data-canvas="body">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
{% endhighlight %}
<div class="bs-callout bs-callout-info">
<h4>Examples</h4>
<p>For better understanding, have a look at the <a href="../examples/navmenu/">off canvas slide in menu</a>, <a href="../examples/navmenu-push/">off canvas push menu</a> and <a href="../examples/navmenu-reveal/">off canvas reveal menu</a> examples.</p>
</div>
<hr class="bs-docs-separator">
<h2 id="offcanvas-usage">Usage</h2>
<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>.
<h3>Via JavaScript</h3>
<p>Call the input mask via javascript:</p>
{% highlight js %}
$('.navmenu').offcanvas()
{% endhighlight %}
<h3>Options</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th style="width: 100px;">Name</th>
<th style="width: 50px;">type</th>
<th style="width: 100px;">default</th>
<th>description</th>
</tr>
</thead>
<tbody>
<tr>
<td>canvas</td>
<td>string</td>
<td>false</td>
<td>If set, the canvas will be moved on show and hide instead of the target element. This creates alternative effects.</td>
</tr>
<tr>
<td>toggle</td>
<td>boolean</td>
<td>true</td>
<td>Toggles the off canvas element on invocation</td>
</tr>
<tr>
<td>placement</td>
<td>string</td>
<td>'auto'</td>
<td>Where to position the element at the start of the animation. For example, if placement is "left", the element will slide from left to right. The default option "auto" guesses the placement based on position and dimension.</td>
</tr>
<tr>
<td>autohide</td>
<td>boolean</td>
<td>true</td>
<td>Hide the off canvas element if clicked anywhere other that the element.</td>
</tr>
<tr>
<td>recalc</td>
<td>boolean</td>
<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>disableScrolling</td>
<td>boolean</td>
<td>true</td>
<td>Disable scrolling when the off canvas element is shown, by setting overflow to hidden for the body.</td>
</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>Methods</h3>
<h4>.offcanvas(options)</h4>
<p>Initializes the off canvas element with an optional options.</p>
<h4>.offcanvas('toggle')</h4>
<p>Toggles an off canvas element to shown or hidden.</p>
<h4>.offcanvas('show')</h4>
<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">
<thead>
<tr>
<th style="width: 150px;">Event Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>show.bs.offcanvas</td>
<td>This event fires immediately when the show instance method is called.</td>
</tr>
<tr>
<td>shown.bs.offcanvas</td>
<td>This event is fired when the target has been made visible to the user (will wait for CSS transitions to complete).</td>
</tr>
<tr>
<td>hide.bs.offcanvas</td>
<td>This event is fired immediately when the hide instance method has been called.</td>
</tr>
<tr>
<td>hidden.bs.offcanvas</td>
<td>This event is fired when the modal has finished being hidden from the user (will wait for CSS transitions to complete).</td>
</tr>
</tbody>
</table>
</div><!-- ./bs-table-responsive -->
</div>
<!-- Row link
================================================== -->
<div class="bs-docs-section bs-jasny">
<div class="page-header">
<h1 id="rowlink">Row link <small>rowlink.js</small></h1>
</div>
<h2 id="rowlink-examples">Example</h2>
<p>This plugin turns a table row into a clickable link.</p>
<div class="bs-example">
<table class="table table-striped table-bordered table-hover">
<thead>
<tr><th>Name</th><th>Description</th><th>Actions</th></tr>
</thead>
<tbody data-link="row" class="rowlink">
<tr><td><a href="#inputmask">Input mask</a></td><td>Input masks can be used to force the user to enter data conform a specific format.</td><td class="rowlink-skip"><a href="#">Action</a></td></tr>
<tr><td><a href="http://www.jasny.net/" target="_blank">jasny.net</a></td><td>Shared knowledge of Arnold Daniels aka Jasny.</td><td class="rowlink-skip"><a href="#">Action</a></td></tr>
<tr><td><a href="#rowlinkModal" data-toggle="modal">Launch modal</a></td><td>Toggle a modal via JavaScript by clicking this row.</td><td class="rowlink-skip"><a href="#">Action</a></td></tr>
</tbody>
</table>
</div>
<div id="rowlinkModal" class="modal fade" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h4 class="modal-title">Rowlink Modal</h4>
</div>
<div class="modal-body">
<p>This modal proves that JavaScript events are triggered correctly by rowlink.</p>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
{% highlight html %}
<table class="table table-striped table-bordered table-hover">
<thead>
<tr><th>Name</th><th>Description</th><th>Actions</th></tr>
</thead>
<tbody data-link="row" class="rowlink">
<tr><td><a href="#inputmask">Input mask</a></td><td>Input masks can be used to force the user to enter data conform a specific format.</td><td class="rowlink-skip"><a href="#">Action</a></td></tr>
<tr><td><a href="http://www.jasny.net/" target="_blank">jasny.net</a></td><td>Shared knowledge of Arnold Daniels aka Jasny.</td><td class="rowlink-skip"><a href="#">Action</a></td></tr>
<tr><td><a href="#rowlinkModal" data-toggle="modal">Launch modal</a></td><td>Toggle a modal via JavaScript by clicking this row.</td><td class="rowlink-skip"><a href="#">Action</a></td></tr>
</tbody>
</table>
{% endhighlight %}
<hr class="bs-docs-separator">
<h2 id="rowlink-usage">Usage</h2>
<h3>Via data attributes</h3>
<p>Add class <code>.rowlink</code> and attribute <code>data-link="row"</code> to a <code>&lt;table&gt;</code> or <code>&lt;tbody&gt;</code> element. For other options append the name to <code>data-</code>, as in <code>data-target="a.mainlink"</code> A cell can be excluded by adding the <code>.rowlink-skip</code> class to the <code>&lt;td&gt;</code>.</p>
<h3>Via JavaScript</h3>
<p>Call the input mask via javascript:</p>
{% highlight js %}
$('tbody.rowlink').rowlink()
{% endhighlight %}
<h3>Options</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th style="width: 100px;">Name</th>
<th style="width: 50px;">type</th>
<th style="width: 100px;">default</th>
<th>description</th>
</tr>
</thead>
<tbody>
<tr>
<td>target</td>
<td>string</td>
<td>'a'</td>
<td>A jquery selector string, to select the link element within each row.</td>
</tr>
</tbody>
</table>
<h3>Methods</h3>
<h4>.rowlink(options)</h4>
<p>Makes the rows of a table or tbody clickable.</p>
</div>
<!-- Input mask
================================================== -->
<div class="bs-docs-section bs-jasny">
<div class="page-header">
<h1 id="inputmask">Input mask <small>inputmask.js</small></h1>
</div>
<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>
{% highlight html %}
<input type="text" class="form-control" data-mask="999-99-999-9999-9" placeholder="ISBN">
{% endhighlight %}
<hr class="bs-docs-separator">
<h2 id="inputmask-usage">Usage</h2>
<h3>Via data attributes</h3>
<p>Add data attributes to register an element with inputmask functionality as shown in the example above.</p>
<h3>Via JavaScript</h3>
<p>Call the input mask via javascript:</p>
{% highlight js %}
$('.inputmask').inputmask({
mask: '999-99-999-9999-9'
})
{% endhighlight %}
<h3>Options</h3>
<p>Options can be passed via data attributes or JavaScript. For data attributes, append the option name to <code>data-</code>, as in <code>data-mask="999-99-999-9999-9"</code>.</p>
<div class="table-responsive">
<table class="table table-bordered table-striped">
<thead>
<tr>
<th style="width: 100px;">Name</th>
<th style="width: 50px;">type</th>
<th style="width: 100px;">default</th>
<th>description</th>
</tr>
</thead>
<tbody>
<tr>
<td>mask</td>
<td>string</td>
<td>''</td>
<td>A string of formatting and literal characters, defining the input mask (see below).</td>
</tr>
<tr>
<td>placeholder</td>
<td>string</td>
<td>'_'</td>
<td>The character that is displayed where something needs to be typed.</td>
</tr>
</tbody>
</table>
</div>
<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>
<tr><th>Character</th><th>Description</th></tr>
</thead>
<tbody>
<tr><td>9</td><td>Number</td></tr>
<tr><td>a</td><td>Letter</td></tr>
<tr><td>w</td><td>Alphanumeric</td></tr>
<tr><td>*</td><td>Any character</td></tr>
<tr><td>?</td><td>Optional - any characters following will become optional</td></tr>
</tbody>
</table>
</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">
<div class="page-header">
<h1 id="fileinput">File input <small>fileinput.js</small></h1>
</div>
<h2 id="fileinput-examples">Examples</h2>
<p>The file input plugin allows you to create a visually appealing file or image input widgets.</p>
<h3>File input widgets</h3>
<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>
<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>
<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="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="fileinput-filename"></span>
<a href="#" class="close fileinput-exists" data-dismiss="fileinput" style="float: none">&times;</a>
</div>
{% endhighlight %}
<h3>Image upload widgets</h3>
<p>When uploading an image, it's possible to show a thumbnail instead of the filename.</p>
<div class="bs-example">
<div class="fileinput fileinput-new" data-provides="fileinput">
<div class="fileinput-preview thumbnail" data-trigger="fileinput" style="width: 200px; height: 150px;"></div>
<div>
<span class="btn btn-default btn-file"><span class="fileinput-new">Select image</span><span class="fileinput-exists">Change</span><input type="file"></span>
<a href="#" class="btn btn-default fileinput-exists" data-dismiss="fileinput">Remove</a>
</div>
</div>
</div>
{% highlight html %}
<div class="fileinput fileinput-new" data-provides="fileinput">
<div class="fileinput-preview thumbnail" data-trigger="fileinput" style="width: 200px; height: 150px;"></div>
<div>
<span class="btn btn-default btn-file"><span class="fileinput-new">Select image</span><span class="fileinput-exists">Change</span><input type="file" name="..."></span>
<a href="#" class="btn btn-default fileinput-exists" data-dismiss="fileinput">Remove</a>
</div>
</div>
{% endhighlight %}
<div class="bs-example">
<div class="fileinput fileinput-new" data-provides="fileinput">
<div class="fileinput-new thumbnail" style="width: 200px; height: 150px;">
<img data-src="holder.js/100%x100%" alt="Generic placeholder thumbnail" src="data:image/png;base64,">
</div>
<div class="fileinput-preview fileinput-exists thumbnail" style="max-width: 200px; max-height: 150px;"></div>
<div>
<span class="btn btn-default btn-file"><span class="fileinput-new">Select image</span><span class="fileinput-exists">Change</span><input type="file"></span>
<a href="#" class="btn btn-default fileinput-exists" data-dismiss="fileinput">Remove</a>
</div>
</div>
</div>
{% highlight html %}
<div class="fileinput fileinput-new" data-provides="fileinput">
<div class="fileinput-new thumbnail" style="width: 200px; height: 150px;">
<img data-src="holder.js/100%x100%" alt="...">
</div>
<div class="fileinput-preview fileinput-exists thumbnail" style="max-width: 200px; max-height: 150px;"></div>
<div>
<span class="btn btn-default btn-file"><span class="fileinput-new">Select image</span><span class="fileinput-exists">Change</span><input type="file" name="..."></span>
<a href="#" class="btn btn-default fileinput-exists" data-dismiss="fileinput">Remove</a>
</div>
</div>
{% endhighlight %}
<div class="bs-callout bs-callout-warning">
<p>Image preview only works in IE10+, FF3.6+, Safari6.0+, Chrome6.0+ and Opera11.1+. In older browsers the filename is shown instead.</p>
</div>
<hr class="bs-docs-separator">
<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>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>
<h3>Via JavaScript</h3>
<pre class="prettyprint linenums">$('.fileinput').fileinput()</pre>
<h3>Layout</h3>
<p>Using the given elements, you can layout the upload widget the way you want, either with a fixed <code>width</code> and <code>height</code> or with <code>max-width</code> and <code>max-height</code>.</p>
<h3>Options</h3>
<div class="table-responsive">
<table class="table table-bordered table-striped">
<thead>
<tr>
<th style="width: 100px;">Name</th>
<th style="width: 50px;">type</th>
<th>description</th>
</tr>
</thead>
<tbody>
<tr>
<td>name</td>
<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>
</tbody>
</table>
</div>
<h3>Methods</h3>
<h4>.fileinput(options)</h4>
<p>Initializes a file upload widget.</p>
<h4>.fileinput('clear')</h4>
<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">
<thead>
<tr>
<th style="width: 150px;">Event Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>change.bs.fileinput</td>
<td>This event is fired after a file is selected.</td>
</tr>
<tr>
<td>clear.bs.fileinput</td>
<td>This event is fired when the file input is cleared.</td>
</tr>
<tr>
<td>reset.bs.fileinput</td>
<td>This event is fired when the file input is reset.</td>
</tr>
</tbody>
</table>
</div><!-- ./bs-table-responsive -->
</div>

View File

@@ -1,5 +1,5 @@
/* ===========================================================
* Bootstrap: fileinput.js v3.1.3
* Bootstrap: fileinput.js v4.0.0
* http://jasny.github.com/bootstrap/javascript/#fileinput
* ===========================================================
* Copyright 2012-2014 Arnold Daniels
@@ -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

@@ -1,362 +0,0 @@
/* ===========================================================
* Bootstrap: inputmask.js v3.1.0
* http://jasny.github.io/bootstrap/javascript/#inputmask
*
* Based on Masked Input plugin by Josh Bush (digitalbush.com)
* ===========================================================
* Copyright 2012-2014 Arnold Daniels
*
* Licensed under the Apache License, Version 2.0 (the "License")
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ========================================================== */
+function ($) { "use strict";
var isIphone = (window.orientation !== undefined)
var isAndroid = navigator.userAgent.toLowerCase().indexOf("android") > -1
var isIE = window.navigator.appName == 'Microsoft Internet Explorer'
// INPUTMASK PUBLIC CLASS DEFINITION
// =================================
var Inputmask = function (element, options) {
if (isAndroid) return // No support because caret positioning doesn't work on Android
this.$element = $(element)
this.options = $.extend({}, Inputmask.DEFAULTS, options)
this.mask = String(this.options.mask)
this.init()
this.listen()
this.checkVal() //Perform initial check for existing values
}
Inputmask.DEFAULTS = {
mask: "",
placeholder: "_",
definitions: {
'9': "[0-9]",
'a': "[A-Za-z]",
'w': "[A-Za-z0-9]",
'*': "."
}
}
Inputmask.prototype.init = function() {
var defs = this.options.definitions
var len = this.mask.length
this.tests = []
this.partialPosition = this.mask.length
this.firstNonMaskPos = null
$.each(this.mask.split(""), $.proxy(function(i, c) {
if (c == '?') {
len--
this.partialPosition = i
} else if (defs[c]) {
this.tests.push(new RegExp(defs[c]))
if (this.firstNonMaskPos === null)
this.firstNonMaskPos = this.tests.length - 1
} else {
this.tests.push(null)
}
}, this))
this.buffer = $.map(this.mask.split(""), $.proxy(function(c, i) {
if (c != '?') return defs[c] ? this.options.placeholder : c
}, this))
this.focusText = this.$element.val()
this.$element.data("rawMaskFn", $.proxy(function() {
return $.map(this.buffer, function(c, i) {
return this.tests[i] && c != this.options.placeholder ? c : null
}).join('')
}, this))
}
Inputmask.prototype.listen = function() {
if (this.$element.attr("readonly")) return
var pasteEventName = (isIE ? 'paste' : 'input') + ".bs.inputmask"
this.$element
.on("unmask.bs.inputmask", $.proxy(this.unmask, this))
.on("focus.bs.inputmask", $.proxy(this.focusEvent, this))
.on("blur.bs.inputmask", $.proxy(this.blurEvent, this))
.on("keydown.bs.inputmask", $.proxy(this.keydownEvent, this))
.on("keypress.bs.inputmask", $.proxy(this.keypressEvent, this))
.on(pasteEventName, $.proxy(this.pasteEvent, this))
}
//Helper Function for Caret positioning
Inputmask.prototype.caret = function(begin, end) {
if (this.$element.length === 0) return
if (typeof begin == 'number') {
end = (typeof end == 'number') ? end : begin
return this.$element.each(function() {
if (this.setSelectionRange) {
this.setSelectionRange(begin, end)
} else if (this.createTextRange) {
var range = this.createTextRange()
range.collapse(true)
range.moveEnd('character', end)
range.moveStart('character', begin)
range.select()
}
})
} else {
if (this.$element[0].setSelectionRange) {
begin = this.$element[0].selectionStart
end = this.$element[0].selectionEnd
} else if (document.selection && document.selection.createRange) {
var range = document.selection.createRange()
begin = 0 - range.duplicate().moveStart('character', -100000)
end = begin + range.text.length
}
return {
begin: begin,
end: end
}
}
}
Inputmask.prototype.seekNext = function(pos) {
var len = this.mask.length
while (++pos <= len && !this.tests[pos]);
return pos
}
Inputmask.prototype.seekPrev = function(pos) {
while (--pos >= 0 && !this.tests[pos]);
return pos
}
Inputmask.prototype.shiftL = function(begin,end) {
var len = this.mask.length
if (begin < 0) return
for (var i = begin, j = this.seekNext(end); i < len; i++) {
if (this.tests[i]) {
if (j < len && this.tests[i].test(this.buffer[j])) {
this.buffer[i] = this.buffer[j]
this.buffer[j] = this.options.placeholder
} else
break
j = this.seekNext(j)
}
}
this.writeBuffer()
this.caret(Math.max(this.firstNonMaskPos, begin))
}
Inputmask.prototype.shiftR = function(pos) {
var len = this.mask.length
for (var i = pos, c = this.options.placeholder; i < len; i++) {
if (this.tests[i]) {
var j = this.seekNext(i)
var t = this.buffer[i]
this.buffer[i] = c
if (j < len && this.tests[j].test(t))
c = t
else
break
}
}
},
Inputmask.prototype.unmask = function() {
this.$element
.unbind(".bs.inputmask")
.removeData("bs.inputmask")
}
Inputmask.prototype.focusEvent = function() {
this.focusText = this.$element.val()
var len = this.mask.length
var pos = this.checkVal()
this.writeBuffer()
var that = this
var moveCaret = function() {
if (pos == len)
that.caret(0, pos)
else
that.caret(pos)
}
moveCaret()
setTimeout(moveCaret, 50)
}
Inputmask.prototype.blurEvent = function() {
this.checkVal()
if (this.$element.val() !== this.focusText) {
this.$element.trigger('change')
this.$element.trigger('input')
}
}
Inputmask.prototype.keydownEvent = function(e) {
var k = e.which
//backspace, delete, and escape get special treatment
if (k == 8 || k == 46 || (isIphone && k == 127)) {
var pos = this.caret(),
begin = pos.begin,
end = pos.end
if (end - begin === 0) {
begin = k != 46 ? this.seekPrev(begin) : (end = this.seekNext(begin - 1))
end = k == 46 ? this.seekNext(end) : end
}
this.clearBuffer(begin, end)
this.shiftL(begin, end - 1)
return false
} else if (k == 27) {//escape
this.$element.val(this.focusText)
this.caret(0, this.checkVal())
return false
}
}
Inputmask.prototype.keypressEvent = function(e) {
var len = this.mask.length
var k = e.which,
pos = this.caret()
if (e.ctrlKey || e.altKey || e.metaKey || k < 32) {//Ignore
return true
} else if (k) {
if (pos.end - pos.begin !== 0) {
this.clearBuffer(pos.begin, pos.end)
this.shiftL(pos.begin, pos.end - 1)
}
var p = this.seekNext(pos.begin - 1)
if (p < len) {
var c = String.fromCharCode(k)
if (this.tests[p].test(c)) {
this.shiftR(p)
this.buffer[p] = c
this.writeBuffer()
var next = this.seekNext(p)
this.caret(next)
}
}
return false
}
}
Inputmask.prototype.pasteEvent = function() {
var that = this
setTimeout(function() {
that.caret(that.checkVal(true))
}, 0)
}
Inputmask.prototype.clearBuffer = function(start, end) {
var len = this.mask.length
for (var i = start; i < end && i < len; i++) {
if (this.tests[i])
this.buffer[i] = this.options.placeholder
}
}
Inputmask.prototype.writeBuffer = function() {
return this.$element.val(this.buffer.join('')).val()
}
Inputmask.prototype.checkVal = function(allow) {
var len = this.mask.length
//try to place characters where they belong
var test = this.$element.val()
var lastMatch = -1
for (var i = 0, pos = 0; i < len; i++) {
if (this.tests[i]) {
this.buffer[i] = this.options.placeholder
while (pos++ < test.length) {
var c = test.charAt(pos - 1)
if (this.tests[i].test(c)) {
this.buffer[i] = c
lastMatch = i
break
}
}
if (pos > test.length)
break
} else if (this.buffer[i] == test.charAt(pos) && i != this.partialPosition) {
pos++
lastMatch = i
}
}
if (!allow && lastMatch + 1 < this.partialPosition) {
this.$element.val("")
this.clearBuffer(0, len)
} else if (allow || lastMatch + 1 >= this.partialPosition) {
this.writeBuffer()
if (!allow) this.$element.val(this.$element.val().substring(0, lastMatch + 1))
}
return (this.partialPosition ? i : this.firstNonMaskPos)
}
// INPUTMASK PLUGIN DEFINITION
// ===========================
var old = $.fn.inputmask
$.fn.inputmask = function (options) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.inputmask')
if (!data) $this.data('bs.inputmask', (data = new Inputmask(this, options)))
})
}
$.fn.inputmask.Constructor = Inputmask
// INPUTMASK NO CONFLICT
// ====================
$.fn.inputmask.noConflict = function () {
$.fn.inputmask = old
return this
}
// INPUTMASK DATA-API
// ==================
$(document).on('focus.bs.inputmask.data-api', '[data-mask]', function (e) {
var $this = $(this)
if ($this.data('bs.inputmask')) return
$this.inputmask($this.data())
})
}(window.jQuery);

View File

@@ -1,5 +1,5 @@
/* ========================================================================
* Bootstrap: offcanvas.js v3.1.3
* Bootstrap: offcanvas.js v4.0.0
* http://jasny.github.io/bootstrap/javascript/#offcanvas
* ========================================================================
* Copyright 2013-2014 Arnold Daniels
@@ -17,19 +17,21 @@
* limitations under the License.
* ======================================================================== */
+function ($) { "use strict";
+function ($) { "use strict"
// 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))
}
@@ -38,12 +40,18 @@
$(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,17 @@
autohide: true,
recalc: true,
disableScrolling: true,
modal: false
modal: false,
backdrop: 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 +92,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 +106,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 +127,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 +138,8 @@
if (!$.support.transition) {
var anim = {}
anim[this.placement] = "+=" + offset
anim[this.opposite(this.placement)] = "-=" + offset
return elements.animate(anim, 350, callback)
}
@@ -127,11 +147,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 +170,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
@@ -159,12 +185,13 @@
//disable scrolling on mobiles (they ignore overflow:hidden)
$('body').on('touchmove.bs', function(e) {
if (!$(event.target).closest('.offcanvas').length)
e.preventDefault();
});
e.preventDefault()
})
}
OffCanvas.prototype.enableScrolling = function() {
$('body').off('touchmove.bs');
$('body').off('touchmove.bs')
$('body').removeClass('lockIphone')
}
OffCanvas.prototype.show = function () {
@@ -174,48 +201,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 +295,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,39 +315,63 @@
}
OffCanvas.prototype.toggleBackdrop = function (callback) {
callback = callback || $.noop;
callback = callback || $.noop
var time = 150
if (this.state == 'slide-in') {
var doAnimate = $.support.transition;
var $body = $('body')
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
this.$backdrop.addClass('in')
$body.addClass('modal-open')
this.$backdrop.addClass('show').show()
this.$backdrop.on('click.bs', $.proxy(this.autohide, this))
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');
$('body').off('touchmove.bs');
var self = this;
var self = this
this.$backdrop.hide().removeClass('show')
$('body').removeClass('modal-open').off('touchmove.bs')
if ($.support.transition) {
this.$backdrop
.one($.support.transition.end, function() {
self.$backdrop.remove();
self.$backdrop.remove()
callback()
self.$backdrop = null;
self.$backdrop = null
})
.emulateTransitionEnd(150);
.emulateTransitionEnd(time)
} else {
this.$backdrop.remove();
this.$backdrop = null;
callback();
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()
@@ -300,10 +379,19 @@
}
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,18 +401,22 @@
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) {
if ($(e.target).closest(this.$element).length === 0) this.hide()
var target = $(e.target);
if (!target.hasClass('dropdown-backdrop') && $(e.target).closest(this.$element).length === 0) this.hide()
var $target = $(e.target)
var doHide = !$target.hasClass('dropdown-backdrop') && $target.closest(this.$element).length === 0
if (doHide) this.hide()
}
// OFFCANVAS PLUGIN DEFINITION
@@ -338,6 +430,10 @@
var data = $this.data('bs.offcanvas')
var options = $.extend({}, OffCanvas.DEFAULTS, $this.data(), typeof option === 'object' && option)
//In case if user does smth like $('.navmenu-fixed-left').offcanvas('hide'),
//thus selecting also menu clone (that can cause issues)
if ($this.hasClass('offcanvas-clone')) return
if (!data) $this.data('bs.offcanvas', (data = new OffCanvas(this, options)))
if (typeof option === 'string') data[option]()
})
@@ -364,13 +460,13 @@
|| (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
var $canvas = $(target)
var data = $canvas.data('bs.offcanvas')
var option = data ? 'toggle' : $this.data()
var option = data ? 'toggle' : $.extend($this.data(), $canvas.data())
e.preventDefault();
e.preventDefault()
e.stopPropagation()
if (data) data.toggle()
else $canvas.offcanvas(option)
})
}(window.jQuery);
}(window.jQuery)

View File

@@ -1,5 +1,5 @@
/* ============================================================
* Bootstrap: rowlink.js v3.1.3
* Bootstrap: rowlink.js v4.0.0
* http://jasny.github.io/bootstrap/javascript/#rowlink
* ============================================================
* Copyright 2012-2014 Arnold Daniels
@@ -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

@@ -1,81 +0,0 @@
$(function () {
var $input;
module('inputmask', {
setup : function() {
$input = $('<input type="text">').appendTo(document.body);
$input.removeData('inputmask');
}
})
test('should provide no conflict', function () {
var inputmask = $.fn.inputmask.noConflict()
ok(!$.fn.inputmask, 'inputmask was set back to undefined (org value)')
$.fn.inputmask = inputmask
})
test('should be defined on jquery object', function () {
ok($input.inputmask, 'inputmask method is defined')
})
test('should return element', function () {
ok($input.inputmask()[0] == $input[0], 'input returned')
})
test('should use default mask', function() {
var expected = ""
$.fn.inputmask.Constructor.DEFAULTS.mask = expected
$input.inputmask()
equal(expected, $input.data('bs.inputmask').options.mask)
})
test('should use default placeholder', function() {
var expected = "_"
$.fn.inputmask.Constructor.DEFAULTS.placeholder = expected
$input.inputmask()
equal(expected, $input.data('bs.inputmask').options.placeholder)
})
test('should use default definitions', function() {
var expected = {
'0': "[0-9]",
'A': "[A-Za-z]"
}
$.fn.inputmask.Constructor.DEFAULTS.definitions = expected
$input.inputmask()
deepEqual(expected, $input.data('bs.inputmask').options.definitions)
})
test('should override mask when options.mask provided', function() {
var expected = '99-99';
$input.inputmask({ mask: expected})
equal(expected, $input.data('bs.inputmask').options.mask)
})
test('should override placeholder when options.placeholder provided', function() {
var expected = '-';
$input.inputmask({ placeholder: expected})
equal(expected, $input.data('bs.inputmask').options.placeholder)
})
test('should override definitions when options.definitions provided', function() {
var expected = {
'0': "[0-9]",
'A': "[A-Za-z]"
}
$input.inputmask({definitions: expected})
deepEqual(expected, $input.data('bs.inputmask').options.definitions)
})
// TODO: add inputmask tests
})

View File

@@ -1,5 +1,5 @@
/* ========================================================================
* Bootstrap: transition.js v3.1.3
* Bootstrap: transition.js v4.0.0
* http://getbootstrap.com/javascript/#transitions
* ========================================================================
* Copyright 2011-2014 Twitter, Inc.

View File

@@ -2,7 +2,7 @@
// --------------------------------------------------
.button-label-size(@padding-vertical; @padding-horizontal; @border-radius) {
padding: @padding-vertical @padding-horizontal;
padding: (@padding-vertical - 1px) @padding-horizontal (@padding-vertical + 1px) @padding-horizontal;
left: (-1 * @padding-horizontal);
border-radius: (@border-radius - 1px) 0 0 (@border-radius - 1px);
@@ -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;
@@ -32,7 +37,7 @@
vertical-align: middle;
cursor: text;
}
.thumbnail {
.img-thumbnail {
overflow: hidden;
display: inline-block;
margin-bottom: 5px;
@@ -40,11 +45,23 @@
text-align: center;
> img {
max-height: 100%;
max-width: 100%;
height: auto;
margin-right: auto;
margin-left: auto;
display: block;
}
}
.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,16 +78,30 @@
}
.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: 10px;
}
.form-control .fileinput-filename.with-icon {
padding-left: 30px;
}
.fileinput.input-group {
display: table;
display: flex;
> * {
position: relative;
@@ -81,25 +112,16 @@
}
}
// Not 100% correct, but helps in typical use case
.fileinput-new.input-group .btn-file,
.fileinput-new .input-group .btn-file {
border-radius: 0 @border-radius-base @border-radius-base 0;
&.btn-xs,
&.btn-sm {
border-radius: 0 @border-radius-small @border-radius-small 0;
}
&.btn-lg {
border-radius: 0 @border-radius-large @border-radius-large 0;
}
.fileinput .input-group-append .input-group-text:hover {
background: #d9dcdf;
cursor: pointer;
}
.form-group.has-warning .fileinput {
.fileinput-preview {
color: @state-warning-text;
}
.thumbnail {
.img-thumbnail {
border-color: @state-warning-border;
}
}
@@ -107,7 +129,7 @@
.fileinput-preview {
color: @state-danger-text;
}
.thumbnail {
.img-thumbnail {
border-color: @state-danger-border;
}
}
@@ -115,7 +137,7 @@
.fileinput-preview {
color: @state-success-text;
}
.thumbnail {
.img-thumbnail {
border-color: @state-success-border;
}
}

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,
@@ -26,15 +40,33 @@
overflow-y: auto;
border-radius: 0;
}
.navmenu-fixed-left,
.navmenu-fixed-right {
.dropdown .dropdown-menu {
position: static !important;
float: none;
transform: none !important;
background: rgba(0, 0, 0, .02);
border-left: none;
border-right: none;
border-radius: 0;
.nav-link {
padding: .35rem 1rem .35rem 1.3rem;
}
}
}
.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;
}
@@ -43,13 +75,18 @@
margin-bottom: @navmenu-margin-vertical;
&.dropdown-menu {
position: static;
position: static!important;
transform: none!important;
margin: 0;
padding-top: 0;
float: none;
border: none;
.box-shadow(none);
border-radius: 0;
li > a {
white-space: normal;
}
}
}

View File

@@ -6,6 +6,20 @@
&.in {
display: block;
}
.dropdown .dropdown-menu {
position: static !important;
float: none;
transform: none !important;
background: rgba(0, 0, 0, .02);
border-left: none;
border-right: none;
border-radius: 0;
.nav-link {
padding: .35rem 1rem .35rem 1.3rem;
}
}
}
@media (max-width: @screen-xs-max) {
@@ -46,3 +60,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,7 +5,7 @@
// "default-variables.less" should be loaded before this file.
// -------------------------------------------------------------
@zindex-navmenu-fixed: @zindex-modal;
@zindex-navmenu-fixed: (@zindex-modal + 1);
@zindex-alert-fixed: 1035;
@container-smooth: @container-lg;

View File

@@ -2,7 +2,7 @@
Package.describe({
name: 'jasny:bootstrap', // http://atmospherejs.com/jasny/bootstrap
version: '3.1.3',
version: '4.0.0',
summary: 'Jasny Bootstrap (official): The missing components for your favorite front-end framework.',
git: 'https://github.com/jasny/bootstrap.git',
documentation: 'README.md'

View File

@@ -1,8 +1,9 @@
{
"name": "jasny-bootstrap",
"npmName": "jasny-bootstrap",
"description": "Additional features and components for Bootstrap",
"version": "3.1.3",
"main": "dist/jasny-bootstrap.js",
"version": "4.0.0",
"main": "./dist/js/jasny-bootstrap.js",
"keywords": [
"bootstrap",
"css"
@@ -64,5 +65,13 @@
"buildConfig": {
"uglify": true
}
}
},
"npmFileMap": [
{
"basePath": "dist",
"files": [
"**/*"
]
}
]
}

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