diff --git a/.gitignore b/.gitignore index 26c4eab..0e05ab8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ -### Idea ### -.idea +### General ### +*.lock ### Jekyll ### _site/ diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..a48966b --- /dev/null +++ b/Gemfile @@ -0,0 +1,6 @@ +source "http://rubygems.org" + +gem 'github-pages' +gem 'compass' +gem 'sass-media_query_combiner' +gem 'autoprefixer-rails' diff --git a/README.md b/README.md index dba823e..7c5d854 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ ### About Project Zeppelin allows you to setup awesome GDG DevFest site in 5 minutes. -Project is builded on top of [Jekyll](http://jekyllrb.com/) - simple, blog-aware, static site generator. Jekyll also happens to be the engine behind GitHub Pages, which means you can use Jekyll to host your website from GitHub’s servers for free. [Learn more about Jekyll](http://jekyllrb.com/). +Project is built on top of [Jekyll](http://jekyllrb.com/) - simple, blog-aware, static site generator. Jekyll also happens to be the engine behind GitHub Pages, which means you can use Jekyll to host your website from GitHub’s servers for free. [Learn more about Jekyll](http://jekyllrb.com/). Template is brought by [GDG Lviv](http://lviv.gdg.org.ua/) team. @@ -30,11 +30,16 @@ Or watch project presentation from [GDG[x] Townhall meeting](http://www.youtube. ## Local development -Check if you have [all requirments for local environment](http://jekyllrb.com/docs/installation/), install [Jekyll server](http://jekyllrb.com/docs/quickstart/) gem. -Install GitHub pages +Check if you have [all requirements for local environment](http://jekyllrb.com/docs/installation/). +To install all development dependencies install [Bundler](http://bundler.io/). ```bash - gem install github-pages + gem install bundler ``` +and run next command from root folder: + +```bash + bundle install +``` Run this command from project root folder: ```bash @@ -45,22 +50,7 @@ Site will be available at http://127.0.0.1:4000/zeppelin/ or http://localhost:40 **NOTE:** in this mode all changes to html and data files will be automatically regenerated, but after changing ```_config.yml``` you have to restart server. ### Sass(Compass) support -Install the latest version of [Compass](http://compass-style.org/). Ruby uses Gems to manage its various packages of code like Sass. In your open terminal window type: -```bash - gem install compass --pre -``` - -Then for combining media queries you can use [Sass::MediaQueryCombiner](https://github.com/aaronjensen/sass-media_query_combiner) plugin. Install with command -```bash - gem install sass-media_query_combiner -``` - -And for prefixing css3 properties use [Autoprefixer](https://github.com/ai/autoprefixer) -```bash - gem install autoprefixer-rails -``` - -**Note:** Also you need to install [Node.js](http://nodejs.org/download/) +**Note:** You need to install [Node.js](http://nodejs.org/download/) To watch changes of `.sass` files and compile it to the `.css` on a fly change property `safe: true` to `safe: false` in `_config.yml`. **Note: It works only on local machine, because GitHub runs Jekyll in `--save` [mode](https://help.github.com/articles/using-jekyll-with-pages/#configuration-overrides)** @@ -70,7 +60,7 @@ Learn more about Sass development from [documentation](https://github.com/gdg-x/ ### Resource optimizations (optional) -You can optimize images and minify css and javascript automaticaly (for now only on Windows). +You can optimize images and minify css and javascript automatically (for now only on Windows). But for Mac OS users available amazing tool - [imageoptim](https://imageoptim.com/). Thanks [@raphaelsavina](https://github.com/raphaelsavina) for link. Optimize all images by running this script from `/automation/images/` folder: ```bash @@ -87,13 +77,6 @@ Learn more about available optimization options from [documentation](https://git ### Documentation Quick-start guide is not enough? Checkout [full documentation](https://github.com/gdg-x/zeppelin/wiki). - -### TODO List -* Optimization scripts for mac and linux - -### Known issues -* Scrolling on open navbar - ### Used libraries * [Bootstrap](https://github.com/twbs/bootstrap) * [Animate.css](https://github.com/daneden/animate.css) @@ -129,7 +112,7 @@ Going to use template? Go on! The only thing we ask - let us know at [*lviv@gdg. * Design and web development: [Oleh Zasadnyy](https://github.com/ozasadnyy) * Idea: [Vitaliy Zasadnyy](https://github.com/zasadnyy) -### Licence -Project is published under the [MIT licence](https://github.com/gdg-x/zeppelin/blob/master/LICENSE.txt). Feel free to clone and modify repo as you want, but don't forget to add reference to authors :) +### License +Project is published under the [MIT license](https://github.com/gdg-x/zeppelin/blob/master/LICENSE.txt). Feel free to clone and modify repo as you want, but don't forget to add reference to authors :) diff --git a/_config.yml b/_config.yml index 0f9f42c..7c6fc57 100644 --- a/_config.yml +++ b/_config.yml @@ -215,7 +215,7 @@ findWayTransit: "TRANSIT" findWayFindFlight: "Find Flight" logisticsMapCenterCoordinates: "49.056728, 3.117289" logisticsMapMobileCenterCoordinates: "48.335365, 23.711648" -logisticsMapAutoDirections: true +logisticsMapAutoDirections: false # Logistics Direction Details Block directionDetailsImage: "direction-details.jpg" diff --git a/_sass/partials/_global.scss b/_sass/partials/_global.scss index 207fa87..8109bc9 100644 --- a/_sass/partials/_global.scss +++ b/_sass/partials/_global.scss @@ -42,7 +42,7 @@ b, strong { } a { @include linkColor($link-color); - &:hover { + &:hover, &:active, &:focus { text-decoration: none; } } diff --git a/_sass/vendor/_bootstrap-compass.scss b/_sass/vendor/_bootstrap-compass.scss deleted file mode 100644 index 82706c4..0000000 --- a/_sass/vendor/_bootstrap-compass.scss +++ /dev/null @@ -1,7 +0,0 @@ -@function twbs-font-path($path) { - @return font-url($path, true); -} - -@function twbs-image-path($path) { - @return image-url($path, true); -} diff --git a/_sass/vendor/_bootstrap-custom.scss b/_sass/vendor/_bootstrap-custom.scss index a7c9243..01666e2 100644 --- a/_sass/vendor/_bootstrap-custom.scss +++ b/_sass/vendor/_bootstrap-custom.scss @@ -5,25 +5,45 @@ // Reset and dependencies @import "bootstrap/normalize"; @import "bootstrap/print"; +// @import "bootstrap/glyphicons"; // Core CSS @import "bootstrap/scaffolding"; @import "bootstrap/type"; @import "bootstrap/code"; @import "bootstrap/grid"; +// @import "bootstrap/tables"; @import "bootstrap/forms"; @import "bootstrap/buttons"; // Components @import "bootstrap/component-animations"; +// @import "bootstrap/dropdowns"; +// @import "bootstrap/button-groups"; +// @import "bootstrap/input-groups"; +// @import "bootstrap/navs"; +// @import "bootstrap/navbar"; +// @import "bootstrap/breadcrumbs"; +// @import "bootstrap/pagination"; +// @import "bootstrap/pager"; +// @import "bootstrap/labels"; +// @import "bootstrap/badges"; @import "bootstrap/jumbotron"; @import "bootstrap/thumbnails"; +// @import "bootstrap/alerts"; +// @import "bootstrap/progress-bars"; @import "bootstrap/media"; +// @import "bootstrap/list-group"; +// @import "bootstrap/panels"; @import "bootstrap/responsive-embed"; +// @import "bootstrap/wells"; @import "bootstrap/close"; // Components w/ JavaScript @import "bootstrap/modals"; +// @import "bootstrap/tooltip"; +// @import "bootstrap/popovers"; +// @import "bootstrap/carousel"; // Utility classes @import "bootstrap/utilities"; diff --git a/_sass/vendor/_bootstrap-mincer.scss b/_sass/vendor/_bootstrap-mincer.scss deleted file mode 100644 index 3413250..0000000 --- a/_sass/vendor/_bootstrap-mincer.scss +++ /dev/null @@ -1,17 +0,0 @@ -// Mincer asset helper functions -// -// This must be imported into a .css.ejs.scss file. -// Then, <% %>-interpolations will be parsed as strings by Sass, and evaluated by EJS after Sass compilation. - - -@function twbs-font-path($path) { - // do something like following - // from "path/to/font.ext#suffix" to "<%- asset_path(path/to/font.ext)) + #suffix %>" - // from "path/to/font.ext?#suffix" to "<%- asset_path(path/to/font.ext)) + ?#suffix %>" - // or from "path/to/font.ext" just "<%- asset_path(path/to/font.ext)) %>" - @return "<%- asset_path('#{$path}'.replace(/[#?].*$/, '')) + '#{$path}'.replace(/(^[^#?]*)([#?]?.*$)/, '$2') %>"; -} - -@function twbs-image-path($file) { - @return "<%- asset_path('#{$file}') %>"; -} diff --git a/_sass/vendor/_bootstrap-sprockets.scss b/_sass/vendor/_bootstrap-sprockets.scss deleted file mode 100644 index 7d30692..0000000 --- a/_sass/vendor/_bootstrap-sprockets.scss +++ /dev/null @@ -1,7 +0,0 @@ -@function twbs-font-path($path) { - @return font-path($path); -} - -@function twbs-image-path($path) { - @return image-path($path); -} diff --git a/_sass/vendor/_bootstrap.scss b/_sass/vendor/_bootstrap.scss deleted file mode 100644 index 65204aa..0000000 --- a/_sass/vendor/_bootstrap.scss +++ /dev/null @@ -1,50 +0,0 @@ -// Core variables and mixins -@import "bootstrap/variables"; -@import "bootstrap/mixins"; - -// Reset and dependencies -@import "bootstrap/normalize"; -@import "bootstrap/print"; -@import "bootstrap/glyphicons"; - -// Core CSS -@import "bootstrap/scaffolding"; -@import "bootstrap/type"; -@import "bootstrap/code"; -@import "bootstrap/grid"; -@import "bootstrap/tables"; -@import "bootstrap/forms"; -@import "bootstrap/buttons"; - -// Components -@import "bootstrap/component-animations"; -@import "bootstrap/dropdowns"; -@import "bootstrap/button-groups"; -@import "bootstrap/input-groups"; -@import "bootstrap/navs"; -@import "bootstrap/navbar"; -@import "bootstrap/breadcrumbs"; -@import "bootstrap/pagination"; -@import "bootstrap/pager"; -@import "bootstrap/labels"; -@import "bootstrap/badges"; -@import "bootstrap/jumbotron"; -@import "bootstrap/thumbnails"; -@import "bootstrap/alerts"; -@import "bootstrap/progress-bars"; -@import "bootstrap/media"; -@import "bootstrap/list-group"; -@import "bootstrap/panels"; -@import "bootstrap/responsive-embed"; -@import "bootstrap/wells"; -@import "bootstrap/close"; - -// Components w/ JavaScript -@import "bootstrap/modals"; -@import "bootstrap/tooltip"; -@import "bootstrap/popovers"; -@import "bootstrap/carousel"; - -// Utility classes -@import "bootstrap/utilities"; -@import "bootstrap/responsive-utilities"; diff --git a/_sass/vendor/_waves.scss b/_sass/vendor/_waves.scss index a026971..72ad5e5 100644 --- a/_sass/vendor/_waves.scss +++ b/_sass/vendor/_waves.scss @@ -1,140 +1,140 @@ - /*! - * Waves v0.5.4 + * Waves v0.6.0 * http://fian.my.id/Waves * * Copyright 2014 Alfiana E. Sibuea and other contributors * Released under the MIT license * https://github.com/fians/Waves/blob/master/LICENSE */ - -@mixin transition ($transition) { - -webkit-transition: $transition; - -moz-transition: $transition; - -o-transition: $transition; - transition: $transition; -} - -@mixin transform($string) { - -webkit-transform: $string; - -moz-transform: $string; - -ms-transform: $string; - -o-transform: $string; - transform: $string; -} - -@mixin box-shadow($shadow) { - -webkit-box-shadow: $shadow; - box-shadow: $shadow; -} - .waves-effect { - position: relative; - cursor: pointer; - display: inline-block; - overflow: hidden; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - -webkit-tap-highlight-color: transparent; - @include transition(all .3s ease-out); - - .waves-ripple { - position: absolute; - border-radius: 50%; - width:100px; - height:100px; - opacity:0; - background-color: rgba(0, 0, 0, 0.2); - @include transition(all 0.5s ease-out); - @include transform(scale(0)); - } - - &.waves-light .waves-ripple { - background-color: rgba(255, 255, 255, 0.4); - } + position: relative; + cursor: pointer; + display: inline-block; + overflow: hidden; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-tap-highlight-color: transparent; + -webkit-transition: all 0.3s ease-out; + -moz-transition: all 0.3s ease-out; + -o-transition: all 0.3s ease-out; + transition: all 0.3s ease-out; +} +.waves-effect .waves-ripple { + position: absolute; + border-radius: 50%; + width: 100px; + height: 100px; + margin-top: -50px; + margin-left: -50px; + opacity: 0; + background: rgba(0, 0, 0, 0.2); + background: -webkit-radial-gradient(rgba(0, 0, 0, 0.2) 0, rgba(0, 0, 0, 0.3) 40%, rgba(0, 0, 0, 0.4) 50%, rgba(0, 0, 0, 0.5) 60%, rgba(255, 255, 255, 0) 70%); + background: -o-radial-gradient(rgba(0, 0, 0, 0.2) 0, rgba(0, 0, 0, 0.3) 40%, rgba(0, 0, 0, 0.4) 50%, rgba(0, 0, 0, 0.5) 60%, rgba(255, 255, 255, 0) 70%); + background: -moz-radial-gradient(rgba(0, 0, 0, 0.2) 0, rgba(0, 0, 0, 0.3) 40%, rgba(0, 0, 0, 0.4) 50%, rgba(0, 0, 0, 0.5) 60%, rgba(255, 255, 255, 0) 70%); + background: radial-gradient(rgba(0, 0, 0, 0.2) 0, rgba(0, 0, 0, 0.3) 40%, rgba(0, 0, 0, 0.4) 50%, rgba(0, 0, 0, 0.5) 60%, rgba(255, 255, 255, 0) 70%); + -webkit-transition: all 0.5s ease-out; + -moz-transition: all 0.5s ease-out; + -o-transition: all 0.5s ease-out; + transition: all 0.5s ease-out; + -webkit-transition-property: -webkit-transform, opacity; + -moz-transition-property: -moz-transform, opacity; + -o-transition-property: -o-transform, opacity; + transition-property: transform, opacity; + -webkit-transform: scale(0); + -moz-transform: scale(0); + -ms-transform: scale(0); + -o-transform: scale(0); + transform: scale(0); + pointer-events: none; +} +.waves-effect.waves-light .waves-ripple { + background: rgba(255, 255, 255, 0.4); + background: -webkit-radial-gradient(rgba(255, 255, 255, 0.2) 0, rgba(255, 255, 255, 0.3) 40%, rgba(255, 255, 255, 0.4) 50%, rgba(255, 255, 255, 0.5) 60%, rgba(255, 255, 255, 0) 70%); + background: -o-radial-gradient(rgba(255, 255, 255, 0.2) 0, rgba(255, 255, 255, 0.3) 40%, rgba(255, 255, 255, 0.4) 50%, rgba(255, 255, 255, 0.5) 60%, rgba(255, 255, 255, 0) 70%); + background: -moz-radial-gradient(rgba(255, 255, 255, 0.2) 0, rgba(255, 255, 255, 0.3) 40%, rgba(255, 255, 255, 0.4) 50%, rgba(255, 255, 255, 0.5) 60%, rgba(255, 255, 255, 0) 70%); + background: radial-gradient(rgba(255, 255, 255, 0.2) 0, rgba(255, 255, 255, 0.3) 40%, rgba(255, 255, 255, 0.4) 50%, rgba(255, 255, 255, 0.5) 60%, rgba(255, 255, 255, 0) 70%); +} +.waves-effect.waves-classic .waves-ripple { + background: rgba(0, 0, 0, 0.2); +} +.waves-effect.waves-classic.waves-light .waves-ripple { + background: rgba(255, 255, 255, 0.4); } - .waves-notransition { - -webkit-transition: none !important; - -moz-transition: none !important; - -o-transition: none !important; - transition: none !important; + -webkit-transition: none !important; + -moz-transition: none !important; + -o-transition: none !important; + transition: none !important; } - -.waves-button, +.waves-button, .waves-circle { - -webkit-transform: translateZ(0); - -webkit-image-mask: -webkit-radial-gradient(circle, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0)); + -webkit-transform: translateZ(0); + -moz-transform: translateZ(0); + -ms-transform: translateZ(0); + -o-transform: translateZ(0); + transform: translateZ(0); + -webkit-mask-image: -webkit-radial-gradient(circle, #ffffff 100%, #000000 100%); } - .waves-button, .waves-button:hover, .waves-button:visited, -.waves-button:link, .waves-button-input { - white-space: nowrap; - vertical-align: middle; - cursor: pointer; - border:none; - outline:none; - background:transparent; - color: inherit; - font-size:14px; - text-align: center; - text-decoration:none; - z-index:1; + white-space: nowrap; + vertical-align: middle; + cursor: pointer; + border: none; + outline: none; + color: inherit; + background-color: rgba(0, 0, 0, 0); + font-size: 1em; + line-height: 1em; + text-align: center; + text-decoration: none; + z-index: 1; } - .waves-button { - padding:10px 15px; - border-radius:2px; + padding: 0.85em 1.1em; + border-radius: 0.2em; } - .waves-button-input { - margin:0; - padding:10px 15px; + margin: 0; + padding: 0.85em 1.1em; } - .waves-input-wrapper { - border-radius:2px; - vertical-align: bottom; - - &.waves-button { - padding:0; - } - - .waves-button-input { - position: absolute; - top: 0; - left: 0; - z-index: 1; - } + border-radius: 0.2em; + vertical-align: bottom; +} +.waves-input-wrapper.waves-button { + padding: 0; +} +.waves-input-wrapper .waves-button-input { + position: relative; + top: 0; + left: 0; + z-index: 1; } - .waves-circle { - text-align:center; - width:2.5em; - height:2.5em; - line-height:2.5em; - border-radius:50%; + text-align: center; + width: 2.5em; + height: 2.5em; + line-height: 2.5em; + border-radius: 50%; } - .waves-float { - -webkit-mask-image:none; - @include box-shadow(0px 1px 1.5px 1px rgba(0, 0, 0, 0.12)); - - &:active { - @include box-shadow(0px 8px 20px 1px rgba(0, 0, 0, 0.30)); - } + -webkit-mask-image: none; + -webkit-box-shadow: 0px 1px 1.5px 1px rgba(0, 0, 0, 0.12); + box-shadow: 0px 1px 1.5px 1px rgba(0, 0, 0, 0.12); +} +.waves-float:active { + -webkit-box-shadow: 0px 8px 20px 1px rgba(0, 0, 0, 0.3); + box-shadow: 0px 8px 20px 1px rgba(0, 0, 0, 0.3); } - .waves-block { - display:block; + display: block; } - /* Firefox Bug: link not triggered */ a.waves-effect .waves-ripple { - z-index:-1; -} \ No newline at end of file + z-index: -1; +} diff --git a/_sass/vendor/bootstrap/_alerts.scss b/_sass/vendor/bootstrap/_alerts.scss index e45de83..372eec9 100644 --- a/_sass/vendor/bootstrap/_alerts.scss +++ b/_sass/vendor/bootstrap/_alerts.scss @@ -18,6 +18,7 @@ // Specified for the h4 to prevent conflicts of changing $headings-color color: inherit; } + // Provide class for links that match alerts .alert-link { font-weight: $alert-link-font-weight; @@ -28,6 +29,7 @@ > ul { margin-bottom: 0; } + > p + p { margin-top: 5px; } @@ -57,12 +59,15 @@ .alert-success { @include alert-variant($alert-success-bg, $alert-success-border, $alert-success-text); } + .alert-info { @include alert-variant($alert-info-bg, $alert-info-border, $alert-info-text); } + .alert-warning { @include alert-variant($alert-warning-bg, $alert-warning-border, $alert-warning-text); } + .alert-danger { @include alert-variant($alert-danger-bg, $alert-danger-border, $alert-danger-text); } diff --git a/_sass/vendor/bootstrap/_badges.scss b/_sass/vendor/bootstrap/_badges.scss index 02394ae..a647592 100644 --- a/_sass/vendor/bootstrap/_badges.scss +++ b/_sass/vendor/bootstrap/_badges.scss @@ -28,6 +28,7 @@ position: relative; top: -1px; } + .btn-xs & { top: 0; padding: 1px 5px; @@ -36,11 +37,20 @@ // [converter] extracted a& to a.badge // Account for badges in navs - a.list-group-item.active > &, + .list-group-item.active > &, .nav-pills > .active > a > & { color: $badge-active-color; background-color: $badge-active-bg; } + + .list-group-item > & { + float: right; + } + + .list-group-item > & + & { + margin-right: 5px; + } + .nav-pills > li > a > & { margin-left: 3px; } diff --git a/_sass/vendor/bootstrap/_bootstrap.scss b/_sass/vendor/bootstrap/_bootstrap.scss deleted file mode 100644 index 4d6f8aa..0000000 --- a/_sass/vendor/bootstrap/_bootstrap.scss +++ /dev/null @@ -1,50 +0,0 @@ -// Core variables and mixins -@import "variables"; -@import "mixins"; - -// Reset and dependencies -@import "normalize"; -@import "print"; -@import "glyphicons"; - -// Core CSS -@import "scaffolding"; -@import "type"; -@import "code"; -@import "grid"; -@import "tables"; -@import "forms"; -@import "buttons"; - -// Components -@import "component-animations"; -@import "dropdowns"; -@import "button-groups"; -@import "input-groups"; -@import "navs"; -@import "navbar"; -@import "breadcrumbs"; -@import "pagination"; -@import "pager"; -@import "labels"; -@import "badges"; -@import "jumbotron"; -@import "thumbnails"; -@import "alerts"; -@import "progress-bars"; -@import "media"; -@import "list-group"; -@import "panels"; -@import "responsive-embed"; -@import "wells"; -@import "close"; - -// Components w/ JavaScript -@import "modals"; -@import "tooltip"; -@import "popovers"; -@import "carousel"; - -// Utility classes -@import "utilities"; -@import "responsive-utilities"; diff --git a/_sass/vendor/bootstrap/_button-groups.scss b/_sass/vendor/bootstrap/_button-groups.scss index 63ccd92..a73bc54 100644 --- a/_sass/vendor/bootstrap/_button-groups.scss +++ b/_sass/vendor/bootstrap/_button-groups.scss @@ -18,10 +18,6 @@ &.active { z-index: 2; } - &:focus { - // Remove focus outline when dropdown JS adds it after closing the menu - outline: 0; - } } } @@ -38,7 +34,7 @@ // Optional: Group multiple button groups together for a toolbar .btn-toolbar { margin-left: -5px; // Offset the first child's margin - @include clearfix(); + @include clearfix; .btn-group, .input-group { @@ -75,13 +71,13 @@ .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { border-radius: 0; } -.btn-group > .btn-group:first-child { +.btn-group > .btn-group:first-child:not(:last-child) { > .btn:last-child, > .dropdown-toggle { @include border-right-radius(0); } } -.btn-group > .btn-group:last-child > .btn:first-child { +.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { @include border-left-radius(0); } @@ -156,7 +152,7 @@ // Clear floats so dropdown menus can be properly placed > .btn-group { - @include clearfix(); + @include clearfix; > .btn { float: none; } @@ -198,7 +194,6 @@ } - // Justified button groups // ---------------------- @@ -226,15 +221,23 @@ // Checkbox and radio options // // In order to support the browser's form validation feedback, powered by the -// `required` attribute, we have to "hide" the inputs via `opacity`. We cannot -// use `display: none;` or `visibility: hidden;` as that also hides the popover. +// `required` attribute, we have to "hide" the inputs via `clip`. We cannot use +// `display: none;` or `visibility: hidden;` as that also hides the popover. +// Simply visually hiding the inputs via `opacity` would leave them clickable in +// certain cases which is prevented by using `clip` and `pointer-events`. // This way, we ensure a DOM element is visible to position the popover from. // -// See https://github.com/twbs/bootstrap/pull/12794 for more. +// See https://github.com/twbs/bootstrap/pull/12794 and +// https://github.com/twbs/bootstrap/pull/14559 for more information. -[data-toggle="buttons"] > .btn > input[type="radio"], -[data-toggle="buttons"] > .btn > input[type="checkbox"] { - position: absolute; - z-index: -1; - @include opacity(0); +[data-toggle="buttons"] { + > .btn, + > .btn-group > .btn { + input[type="radio"], + input[type="checkbox"] { + position: absolute; + clip: rect(0,0,0,0); + pointer-events: none; + } + } } diff --git a/_sass/vendor/bootstrap/_buttons.scss b/_sass/vendor/bootstrap/_buttons.scss index dae6ee3..7f0db45 100644 --- a/_sass/vendor/bootstrap/_buttons.scss +++ b/_sass/vendor/bootstrap/_buttons.scss @@ -12,6 +12,7 @@ font-weight: $btn-font-weight; text-align: center; vertical-align: middle; + touch-action: manipulation; cursor: pointer; background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 border: 1px solid transparent; @@ -22,13 +23,15 @@ &, &:active, &.active { - &:focus { - @include tab-focus(); + &:focus, + &.focus { + @include tab-focus; } } &:hover, - &:focus { + &:focus, + &.focus { color: $btn-default-color; text-decoration: none; } @@ -43,7 +46,7 @@ &.disabled, &[disabled], fieldset[disabled] & { - cursor: not-allowed; + cursor: $cursor-disabled; pointer-events: none; // Future-proof disabling of clicks @include opacity(.65); @include box-shadow(none); @@ -85,11 +88,11 @@ .btn-link { color: $link-color; font-weight: normal; - cursor: pointer; border-radius: 0; &, &:active, + &.active, &[disabled], fieldset[disabled] & { background-color: transparent; @@ -104,7 +107,7 @@ &:hover, &:focus { color: $link-hover-color; - text-decoration: underline; + text-decoration: $link-hover-decoration; background-color: transparent; } &[disabled], diff --git a/_sass/vendor/bootstrap/_carousel.scss b/_sass/vendor/bootstrap/_carousel.scss index e9e2f7c..f91d7ee 100644 --- a/_sass/vendor/bootstrap/_carousel.scss +++ b/_sass/vendor/bootstrap/_carousel.scss @@ -21,9 +21,33 @@ // Account for jankitude on images > img, > a > img { - @include img-responsive(); + @include img-responsive; line-height: 1; } + + // WebKit CSS3 transforms for supported devices + @media all and (transform-3d), (-webkit-transform-3d) { + @include transition-transform(0.6s ease-in-out); + @include backface-visibility(hidden); + @include perspective(1000); + + &.next, + &.active.right { + @include translate3d(100%, 0, 0); + left: 0; + } + &.prev, + &.active.left { + @include translate3d(-100%, 0, 0); + left: 0; + } + &.next.left, + &.prev.right, + &.active { + @include translate3d(0, 0, 0); + left: 0; + } + } } > .active, @@ -124,6 +148,7 @@ width: 20px; height: 20px; margin-top: -10px; + line-height: 1; font-family: serif; } @@ -171,6 +196,7 @@ // Internet Explorer 8-9 does not support clicks on elements without a set // `background-color`. We cannot use `filter` since that's not viewed as a // background color by the browser. Thus, a hack is needed. + // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer // // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we // set alpha transparency for the best results possible. diff --git a/_sass/vendor/bootstrap/_close.scss b/_sass/vendor/bootstrap/_close.scss index 62ce30f..3b74d8a 100644 --- a/_sass/vendor/bootstrap/_close.scss +++ b/_sass/vendor/bootstrap/_close.scss @@ -26,6 +26,7 @@ // Additional properties for button version // iOS requires the button element instead of an anchor tag. // If you want the anchor version, it requires `href="#"`. +// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile button.close { padding: 0; cursor: pointer; diff --git a/_sass/vendor/bootstrap/_code.scss b/_sass/vendor/bootstrap/_code.scss index 8d83b14..caa5f06 100644 --- a/_sass/vendor/bootstrap/_code.scss +++ b/_sass/vendor/bootstrap/_code.scss @@ -32,6 +32,7 @@ kbd { kbd { padding: 0; font-size: 100%; + font-weight: bold; box-shadow: none; } } diff --git a/_sass/vendor/bootstrap/_component-animations.scss b/_sass/vendor/bootstrap/_component-animations.scss index 8c3fd07..1f76b8c 100644 --- a/_sass/vendor/bootstrap/_component-animations.scss +++ b/_sass/vendor/bootstrap/_component-animations.scss @@ -17,8 +17,9 @@ .collapse { display: none; + visibility: hidden; - &.in { display: block; } + &.in { display: block; visibility: visible; } // [converter] extracted tr&.in to tr.collapse.in // [converter] extracted tbody&.in to tbody.collapse.in } @@ -31,5 +32,7 @@ tbody.collapse.in { display: table-row-group; } position: relative; height: 0; overflow: hidden; - @include transition(height .35s ease); + @include transition-property(height, visibility); + @include transition-duration(.35s); + @include transition-timing-function(ease); } diff --git a/_sass/vendor/bootstrap/_dropdowns.scss b/_sass/vendor/bootstrap/_dropdowns.scss index eb74be5..b8120b8 100644 --- a/_sass/vendor/bootstrap/_dropdowns.scss +++ b/_sass/vendor/bootstrap/_dropdowns.scss @@ -16,6 +16,7 @@ } // The dropdown wrapper (div) +.dropup, .dropdown { position: relative; } @@ -103,16 +104,15 @@ &:focus { color: $dropdown-link-disabled-color; } -} -// Nuke hover/focus effects -.dropdown-menu > .disabled > a { + + // Nuke hover/focus effects &:hover, &:focus { text-decoration: none; background-color: transparent; background-image: none; // Remove CSS gradient - @include reset-filter(); - cursor: not-allowed; + @include reset-filter; + cursor: $cursor-disabled; } } @@ -191,7 +191,7 @@ .dropdown-menu { top: auto; bottom: 100%; - margin-bottom: 1px; + margin-bottom: 2px; } } @@ -212,4 +212,3 @@ } } } - diff --git a/_sass/vendor/bootstrap/_forms.scss b/_sass/vendor/bootstrap/_forms.scss index 74bb67d..72d130b 100644 --- a/_sass/vendor/bootstrap/_forms.scss +++ b/_sass/vendor/bootstrap/_forms.scss @@ -77,7 +77,7 @@ select[size] { input[type="file"]:focus, input[type="radio"]:focus, input[type="checkbox"]:focus { - @include tab-focus(); + @include tab-focus; } // Adjust output element @@ -123,15 +123,15 @@ output { background-color: $input-bg; background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 border: 1px solid $input-border; - border-radius: $input-border-radius; + border-radius: $input-border-radius; // Note: This has no effect on s in CSS. @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); @include transition(border-color ease-in-out .15s, box-shadow ease-in-out .15s); // Customize the `:focus` state to imitate native WebKit styles. - @include form-control-focus(); + @include form-control-focus; // Placeholder - @include placeholder(); + @include placeholder; // Disabled and read-only inputs // @@ -141,9 +141,9 @@ output { &[disabled], &[readonly], fieldset[disabled] & { - cursor: not-allowed; + cursor: $cursor-disabled; background-color: $input-bg-disabled; - opacity: 1; // iOS fix for unreadable disabled content + opacity: 1; // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655 } // [converter] extracted textarea& to textarea.form-control @@ -170,24 +170,26 @@ input[type="search"] { // Special styles for iOS temporal inputs // // In Mobile Safari, setting `display: block` on temporal inputs causes the -// text within the input to become vertically misaligned. -// As a workaround, we set a pixel line-height that matches the -// given height of the input. Since this fucks up everything else, we have to -// appropriately reset it for Internet Explorer and the size variations. +// text within the input to become vertically misaligned. As a workaround, we +// set a pixel line-height that matches the given height of the input, but only +// for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848 -input[type="date"], -input[type="time"], -input[type="datetime-local"], -input[type="month"] { - line-height: $input-height-base; - // IE8+ misaligns the text within date inputs, so we reset - line-height: $line-height-base #{\0}; +@media screen and (-webkit-min-device-pixel-ratio: 0) { + input[type="date"], + input[type="time"], + input[type="datetime-local"], + input[type="month"] { + line-height: $input-height-base; - &.input-sm { - line-height: $input-height-small; - } - &.input-lg { - line-height: $input-height-large; + &.input-sm, + .input-group-sm & { + line-height: $input-height-small; + } + + &.input-lg, + .input-group-lg & { + line-height: $input-height-large; + } } } @@ -210,11 +212,11 @@ input[type="month"] { .checkbox { position: relative; display: block; - min-height: $line-height-computed; // clear the floating input if there is no label text margin-top: 10px; margin-bottom: 10px; label { + min-height: $line-height-computed; // Ensure the input doesn't jump when there is no text padding-left: 20px; margin-bottom: 0; font-weight: normal; @@ -260,7 +262,7 @@ input[type="checkbox"] { &[disabled], &.disabled, fieldset[disabled] & { - cursor: not-allowed; + cursor: $cursor-disabled; } } // These classes are used directly on