add bower
This commit is contained in:
33
sites/all/themes/gui/materiobasetheme/bower_components/foundation/.bower.json
vendored
Normal file
33
sites/all/themes/gui/materiobasetheme/bower_components/foundation/.bower.json
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"name": "foundation",
|
||||
"version": "5.5.1",
|
||||
"main": [
|
||||
"css/foundation.css",
|
||||
"css/foundation.css.map",
|
||||
"js/foundation.js"
|
||||
],
|
||||
"ignore": [],
|
||||
"dependencies": {
|
||||
"jquery": ">= 2.1.0",
|
||||
"modernizr": ">= 2.7.2",
|
||||
"fastclick": ">=0.6.11",
|
||||
"jquery.cookie": "~1.4.0",
|
||||
"jquery-placeholder": "~2.0.7"
|
||||
},
|
||||
"devDependencies": {
|
||||
"jquery.autocomplete": "devbridge/jQuery-Autocomplete#1.2.9",
|
||||
"lodash": "~2.4.1"
|
||||
},
|
||||
"private": true,
|
||||
"homepage": "https://github.com/zurb/bower-foundation",
|
||||
"_release": "5.5.1",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "5.5.1",
|
||||
"commit": "bf07a7551bc3e599404d9cb2eb2251a95c1ea782"
|
||||
},
|
||||
"_source": "git://github.com/zurb/bower-foundation.git",
|
||||
"_target": "~5.5.1",
|
||||
"_originalSource": "foundation",
|
||||
"_direct": true
|
||||
}
|
||||
23
sites/all/themes/gui/materiobasetheme/bower_components/foundation/bower.json
vendored
Normal file
23
sites/all/themes/gui/materiobasetheme/bower_components/foundation/bower.json
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"name": "foundation",
|
||||
"version": "5.5.1",
|
||||
"main": [
|
||||
"css/foundation.css",
|
||||
"css/foundation.css.map",
|
||||
"js/foundation.js"
|
||||
],
|
||||
"ignore": [
|
||||
],
|
||||
"dependencies": {
|
||||
"jquery": ">= 2.1.0",
|
||||
"modernizr": ">= 2.7.2",
|
||||
"fastclick": ">=0.6.11",
|
||||
"jquery.cookie": "~1.4.0",
|
||||
"jquery-placeholder": "~2.0.7"
|
||||
},
|
||||
"devDependencies": {
|
||||
"jquery.autocomplete": "devbridge/jQuery-Autocomplete#1.2.9",
|
||||
"lodash": "~2.4.1"
|
||||
},
|
||||
"private": true
|
||||
}
|
||||
6155
sites/all/themes/gui/materiobasetheme/bower_components/foundation/css/foundation.css
vendored
Normal file
6155
sites/all/themes/gui/materiobasetheme/bower_components/foundation/css/foundation.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
7
sites/all/themes/gui/materiobasetheme/bower_components/foundation/css/foundation.css.map
vendored
Normal file
7
sites/all/themes/gui/materiobasetheme/bower_components/foundation/css/foundation.css.map
vendored
Normal file
File diff suppressed because one or more lines are too long
359
sites/all/themes/gui/materiobasetheme/bower_components/foundation/css/normalize.css
vendored
Normal file
359
sites/all/themes/gui/materiobasetheme/bower_components/foundation/css/normalize.css
vendored
Normal file
@@ -0,0 +1,359 @@
|
||||
/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
|
||||
/**
|
||||
* 1. Set default font family to sans-serif.
|
||||
* 2. Prevent iOS text size adjust after orientation change, without disabling
|
||||
* user zoom.
|
||||
*/
|
||||
html {
|
||||
font-family: sans-serif;
|
||||
/* 1 */
|
||||
-ms-text-size-adjust: 100%;
|
||||
/* 2 */
|
||||
-webkit-text-size-adjust: 100%;
|
||||
/* 2 */ }
|
||||
|
||||
/**
|
||||
* Remove default margin.
|
||||
*/
|
||||
body {
|
||||
margin: 0; }
|
||||
|
||||
/* HTML5 display definitions
|
||||
========================================================================== */
|
||||
/**
|
||||
* Correct `block` display not defined for any HTML5 element in IE 8/9.
|
||||
* Correct `block` display not defined for `details` or `summary` in IE 10/11
|
||||
* and Firefox.
|
||||
* Correct `block` display not defined for `main` in IE 11.
|
||||
*/
|
||||
article,
|
||||
aside,
|
||||
details,
|
||||
figcaption,
|
||||
figure,
|
||||
footer,
|
||||
header,
|
||||
hgroup,
|
||||
main,
|
||||
menu,
|
||||
nav,
|
||||
section,
|
||||
summary {
|
||||
display: block; }
|
||||
|
||||
/**
|
||||
* 1. Correct `inline-block` display not defined in IE 8/9.
|
||||
* 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
|
||||
*/
|
||||
audio,
|
||||
canvas,
|
||||
progress,
|
||||
video {
|
||||
display: inline-block;
|
||||
/* 1 */
|
||||
vertical-align: baseline;
|
||||
/* 2 */ }
|
||||
|
||||
/**
|
||||
* Prevent modern browsers from displaying `audio` without controls.
|
||||
* Remove excess height in iOS 5 devices.
|
||||
*/
|
||||
audio:not([controls]) {
|
||||
display: none;
|
||||
height: 0; }
|
||||
|
||||
/**
|
||||
* Address `[hidden]` styling not present in IE 8/9/10.
|
||||
* Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
|
||||
*/
|
||||
[hidden],
|
||||
template {
|
||||
display: none; }
|
||||
|
||||
/* Links
|
||||
========================================================================== */
|
||||
/**
|
||||
* Remove the gray background color from active links in IE 10.
|
||||
*/
|
||||
a {
|
||||
background-color: transparent; }
|
||||
|
||||
/**
|
||||
* Improve readability when focused and also mouse hovered in all browsers.
|
||||
*/
|
||||
a:active,
|
||||
a:hover {
|
||||
outline: 0; }
|
||||
|
||||
/* Text-level semantics
|
||||
========================================================================== */
|
||||
/**
|
||||
* Address styling not present in IE 8/9/10/11, Safari, and Chrome.
|
||||
*/
|
||||
abbr[title] {
|
||||
border-bottom: 1px dotted; }
|
||||
|
||||
/**
|
||||
* Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
|
||||
*/
|
||||
b,
|
||||
strong {
|
||||
font-weight: bold; }
|
||||
|
||||
/**
|
||||
* Address styling not present in Safari and Chrome.
|
||||
*/
|
||||
dfn {
|
||||
font-style: italic; }
|
||||
|
||||
/**
|
||||
* Address variable `h1` font-size and margin within `section` and `article`
|
||||
* contexts in Firefox 4+, Safari, and Chrome.
|
||||
*/
|
||||
h1 {
|
||||
font-size: 2em;
|
||||
margin: 0.67em 0; }
|
||||
|
||||
/**
|
||||
* Address styling not present in IE 8/9.
|
||||
*/
|
||||
mark {
|
||||
background: #ff0;
|
||||
color: #000; }
|
||||
|
||||
/**
|
||||
* Address inconsistent and variable font size in all browsers.
|
||||
*/
|
||||
small {
|
||||
font-size: 80%; }
|
||||
|
||||
/**
|
||||
* Prevent `sub` and `sup` affecting `line-height` in all browsers.
|
||||
*/
|
||||
sub,
|
||||
sup {
|
||||
font-size: 75%;
|
||||
line-height: 0;
|
||||
position: relative;
|
||||
vertical-align: baseline; }
|
||||
|
||||
sup {
|
||||
top: -0.5em; }
|
||||
|
||||
sub {
|
||||
bottom: -0.25em; }
|
||||
|
||||
/* Embedded content
|
||||
========================================================================== */
|
||||
/**
|
||||
* Remove border when inside `a` element in IE 8/9/10.
|
||||
*/
|
||||
img {
|
||||
border: 0; }
|
||||
|
||||
/**
|
||||
* Correct overflow not hidden in IE 9/10/11.
|
||||
*/
|
||||
svg:not(:root) {
|
||||
overflow: hidden; }
|
||||
|
||||
/* Grouping content
|
||||
========================================================================== */
|
||||
/**
|
||||
* Address margin not present in IE 8/9 and Safari.
|
||||
*/
|
||||
figure {
|
||||
margin: 1em 40px; }
|
||||
|
||||
/**
|
||||
* Address differences between Firefox and other browsers.
|
||||
*/
|
||||
hr {
|
||||
-moz-box-sizing: content-box;
|
||||
box-sizing: content-box;
|
||||
height: 0; }
|
||||
|
||||
/**
|
||||
* Contain overflow in all browsers.
|
||||
*/
|
||||
pre {
|
||||
overflow: auto; }
|
||||
|
||||
/**
|
||||
* Address odd `em`-unit font size rendering in all browsers.
|
||||
*/
|
||||
code,
|
||||
kbd,
|
||||
pre,
|
||||
samp {
|
||||
font-family: monospace, monospace;
|
||||
font-size: 1em; }
|
||||
|
||||
/* Forms
|
||||
========================================================================== */
|
||||
/**
|
||||
* Known limitation: by default, Chrome and Safari on OS X allow very limited
|
||||
* styling of `select`, unless a `border` property is set.
|
||||
*/
|
||||
/**
|
||||
* 1. Correct color not being inherited.
|
||||
* Known issue: affects color of disabled elements.
|
||||
* 2. Correct font properties not being inherited.
|
||||
* 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
|
||||
*/
|
||||
button,
|
||||
input,
|
||||
optgroup,
|
||||
select,
|
||||
textarea {
|
||||
color: inherit;
|
||||
/* 1 */
|
||||
font: inherit;
|
||||
/* 2 */
|
||||
margin: 0;
|
||||
/* 3 */ }
|
||||
|
||||
/**
|
||||
* Address `overflow` set to `hidden` in IE 8/9/10/11.
|
||||
*/
|
||||
button {
|
||||
overflow: visible; }
|
||||
|
||||
/**
|
||||
* Address inconsistent `text-transform` inheritance for `button` and `select`.
|
||||
* All other form control elements do not inherit `text-transform` values.
|
||||
* Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
|
||||
* Correct `select` style inheritance in Firefox.
|
||||
*/
|
||||
button,
|
||||
select {
|
||||
text-transform: none; }
|
||||
|
||||
/**
|
||||
* 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
|
||||
* and `video` controls.
|
||||
* 2. Correct inability to style clickable `input` types in iOS.
|
||||
* 3. Improve usability and consistency of cursor style between image-type
|
||||
* `input` and others.
|
||||
*/
|
||||
button,
|
||||
html input[type="button"],
|
||||
input[type="reset"],
|
||||
input[type="submit"] {
|
||||
-webkit-appearance: button;
|
||||
/* 2 */
|
||||
cursor: pointer;
|
||||
/* 3 */ }
|
||||
|
||||
/**
|
||||
* Re-set default cursor for disabled elements.
|
||||
*/
|
||||
button[disabled],
|
||||
html input[disabled] {
|
||||
cursor: default; }
|
||||
|
||||
/**
|
||||
* Remove inner padding and border in Firefox 4+.
|
||||
*/
|
||||
button::-moz-focus-inner,
|
||||
input::-moz-focus-inner {
|
||||
border: 0;
|
||||
padding: 0; }
|
||||
|
||||
/**
|
||||
* Address Firefox 4+ setting `line-height` on `input` using `!important` in
|
||||
* the UA stylesheet.
|
||||
*/
|
||||
input {
|
||||
line-height: normal; }
|
||||
|
||||
/**
|
||||
* It's recommended that you don't attempt to style these elements.
|
||||
* Firefox's implementation doesn't respect box-sizing, padding, or width.
|
||||
*
|
||||
* 1. Address box sizing set to `content-box` in IE 8/9/10.
|
||||
* 2. Remove excess padding in IE 8/9/10.
|
||||
*/
|
||||
input[type="checkbox"],
|
||||
input[type="radio"] {
|
||||
box-sizing: border-box;
|
||||
/* 1 */
|
||||
padding: 0;
|
||||
/* 2 */ }
|
||||
|
||||
/**
|
||||
* Fix the cursor style for Chrome's increment/decrement buttons. For certain
|
||||
* `font-size` values of the `input`, it causes the cursor style of the
|
||||
* decrement button to change from `default` to `text`.
|
||||
*/
|
||||
input[type="number"]::-webkit-inner-spin-button,
|
||||
input[type="number"]::-webkit-outer-spin-button {
|
||||
height: auto; }
|
||||
|
||||
/**
|
||||
* 1. Address `appearance` set to `searchfield` in Safari and Chrome.
|
||||
* 2. Address `box-sizing` set to `border-box` in Safari and Chrome
|
||||
* (include `-moz` to future-proof).
|
||||
*/
|
||||
input[type="search"] {
|
||||
-webkit-appearance: textfield;
|
||||
/* 1 */
|
||||
-moz-box-sizing: content-box;
|
||||
-webkit-box-sizing: content-box;
|
||||
/* 2 */
|
||||
box-sizing: content-box; }
|
||||
|
||||
/**
|
||||
* Remove inner padding and search cancel button in Safari and Chrome on OS X.
|
||||
* Safari (but not Chrome) clips the cancel button when the search input has
|
||||
* padding (and `textfield` appearance).
|
||||
*/
|
||||
input[type="search"]::-webkit-search-cancel-button,
|
||||
input[type="search"]::-webkit-search-decoration {
|
||||
-webkit-appearance: none; }
|
||||
|
||||
/**
|
||||
* Define consistent border, margin, and padding.
|
||||
*/
|
||||
fieldset {
|
||||
border: 1px solid #c0c0c0;
|
||||
margin: 0 2px;
|
||||
padding: 0.35em 0.625em 0.75em; }
|
||||
|
||||
/**
|
||||
* 1. Correct `color` not being inherited in IE 8/9/10/11.
|
||||
* 2. Remove padding so people aren't caught out if they zero out fieldsets.
|
||||
*/
|
||||
legend {
|
||||
border: 0;
|
||||
/* 1 */
|
||||
padding: 0;
|
||||
/* 2 */ }
|
||||
|
||||
/**
|
||||
* Remove default vertical scrollbar in IE 8/9/10/11.
|
||||
*/
|
||||
textarea {
|
||||
overflow: auto; }
|
||||
|
||||
/**
|
||||
* Don't inherit the `font-weight` (applied by a rule above).
|
||||
* NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
|
||||
*/
|
||||
optgroup {
|
||||
font-weight: bold; }
|
||||
|
||||
/* Tables
|
||||
========================================================================== */
|
||||
/**
|
||||
* Remove most spacing between table cells.
|
||||
*/
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0; }
|
||||
|
||||
td,
|
||||
th {
|
||||
padding: 0; }
|
||||
|
||||
/*# sourceMappingURL=normalize.css.map */
|
||||
7
sites/all/themes/gui/materiobasetheme/bower_components/foundation/css/normalize.css.map
vendored
Normal file
7
sites/all/themes/gui/materiobasetheme/bower_components/foundation/css/normalize.css.map
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"mappings": ";;;;;;AAQA,IAAK;EACH,WAAW,EAAE,UAAU;;EACvB,oBAAoB,EAAE,IAAI;;EAC1B,wBAAwB,EAAE,IAAI;;;;;;AAOhC,IAAK;EACH,MAAM,EAAE,CAAC;;;;;;;;;;AAaX;;;;;;;;;;;;OAYQ;EACN,OAAO,EAAE,KAAK;;;;;;AAQhB;;;KAGM;EACJ,OAAO,EAAE,YAAY;;EACrB,cAAc,EAAE,QAAQ;;;;;;;AAQ1B,qBAAsB;EACpB,OAAO,EAAE,IAAI;EACb,MAAM,EAAE,CAAC;;;;;;AAQX;QACS;EACP,OAAO,EAAE,IAAI;;;;;;;AAUf,CAAE;EACA,gBAAgB,EAAE,WAAW;;;;;AAO/B;OACQ;EACN,OAAO,EAAE,CAAC;;;;;;;AAUZ,WAAY;EACV,aAAa,EAAE,UAAU;;;;;AAO3B;MACO;EACL,WAAW,EAAE,IAAI;;;;;AAOnB,GAAI;EACF,UAAU,EAAE,MAAM;;;;;;AAQpB,EAAG;EACD,SAAS,EAAE,GAAG;EACd,MAAM,EAAE,QAAQ;;;;;AAOlB,IAAK;EACH,UAAU,EAAE,IAAI;EAChB,KAAK,EAAE,IAAI;;;;;AAOb,KAAM;EACJ,SAAS,EAAE,GAAG;;;;;AAOhB;GACI;EACF,SAAS,EAAE,GAAG;EACd,WAAW,EAAE,CAAC;EACd,QAAQ,EAAE,QAAQ;EAClB,cAAc,EAAE,QAAQ;;AAG1B,GAAI;EACF,GAAG,EAAE,MAAM;;AAGb,GAAI;EACF,MAAM,EAAE,OAAO;;;;;;;AAUjB,GAAI;EACF,MAAM,EAAE,CAAC;;;;;AAOX,cAAe;EACb,QAAQ,EAAE,MAAM;;;;;;;AAUlB,MAAO;EACL,MAAM,EAAE,QAAQ;;;;;AAOlB,EAAG;EACD,eAAe,EAAE,WAAW;EAC5B,UAAU,EAAE,WAAW;EACvB,MAAM,EAAE,CAAC;;;;;AAOX,GAAI;EACF,QAAQ,EAAE,IAAI;;;;;AAOhB;;;IAGK;EACH,WAAW,EAAE,oBAAoB;EACjC,SAAS,EAAE,GAAG;;;;;;;;;;;;;;AAkBhB;;;;QAIS;EACP,KAAK,EAAE,OAAO;;EACd,IAAI,EAAE,OAAO;;EACb,MAAM,EAAE,CAAC;;;;;;AAOX,MAAO;EACL,QAAQ,EAAE,OAAO;;;;;;;;AAUnB;MACO;EACL,cAAc,EAAE,IAAI;;;;;;;;;AAWtB;;;oBAGqB;EACnB,kBAAkB,EAAE,MAAM;;EAC1B,MAAM,EAAE,OAAO;;;;;;AAOjB;oBACqB;EACnB,MAAM,EAAE,OAAO;;;;;AAOjB;uBACwB;EACtB,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC;;;;;;AAQZ,KAAM;EACJ,WAAW,EAAE,MAAM;;;;;;;;;AAWrB;mBACoB;EAClB,UAAU,EAAE,UAAU;;EACtB,OAAO,EAAE,CAAC;;;;;;;;AASZ;+CACgD;EAC9C,MAAM,EAAE,IAAI;;;;;;;AASd,oBAAqB;EACnB,kBAAkB,EAAE,SAAS;;EAC7B,eAAe,EAAE,WAAW;EAC5B,kBAAkB,EAAE,WAAW;;EAC/B,UAAU,EAAE,WAAW;;;;;;;AASzB;+CACgD;EAC9C,kBAAkB,EAAE,IAAI;;;;;AAO1B,QAAS;EACP,MAAM,EAAE,iBAAiB;EACzB,MAAM,EAAE,KAAK;EACb,OAAO,EAAE,qBAAqB;;;;;;AAQhC,MAAO;EACL,MAAM,EAAE,CAAC;;EACT,OAAO,EAAE,CAAC;;;;;;AAOZ,QAAS;EACP,QAAQ,EAAE,IAAI;;;;;;AAQhB,QAAS;EACP,WAAW,EAAE,IAAI;;;;;;;AAUnB,KAAM;EACJ,eAAe,EAAE,QAAQ;EACzB,cAAc,EAAE,CAAC;;AAGnB;EACG;EACD,OAAO,EAAE,CAAC",
|
||||
"sources": ["../../../scss/normalize.scss"],
|
||||
"names": [],
|
||||
"file": "normalize.css"
|
||||
}
|
||||
6097
sites/all/themes/gui/materiobasetheme/bower_components/foundation/js/foundation.js
vendored
Normal file
6097
sites/all/themes/gui/materiobasetheme/bower_components/foundation/js/foundation.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
4
sites/all/themes/gui/materiobasetheme/bower_components/foundation/js/foundation.min.js
vendored
Normal file
4
sites/all/themes/gui/materiobasetheme/bower_components/foundation/js/foundation.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
340
sites/all/themes/gui/materiobasetheme/bower_components/foundation/js/foundation/foundation.abide.js
vendored
Normal file
340
sites/all/themes/gui/materiobasetheme/bower_components/foundation/js/foundation/foundation.abide.js
vendored
Normal file
@@ -0,0 +1,340 @@
|
||||
;(function ($, window, document, undefined) {
|
||||
'use strict';
|
||||
|
||||
Foundation.libs.abide = {
|
||||
name : 'abide',
|
||||
|
||||
version : '5.5.1',
|
||||
|
||||
settings : {
|
||||
live_validate : true,
|
||||
validate_on_blur : true,
|
||||
focus_on_invalid : true,
|
||||
error_labels : true, // labels with a for="inputId" will recieve an `error` class
|
||||
error_class : 'error',
|
||||
timeout : 1000,
|
||||
patterns : {
|
||||
alpha : /^[a-zA-Z]+$/,
|
||||
alpha_numeric : /^[a-zA-Z0-9]+$/,
|
||||
integer : /^[-+]?\d+$/,
|
||||
number : /^[-+]?\d*(?:[\.\,]\d+)?$/,
|
||||
|
||||
// amex, visa, diners
|
||||
card : /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/,
|
||||
cvv : /^([0-9]){3,4}$/,
|
||||
|
||||
// http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#valid-e-mail-address
|
||||
email : /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/,
|
||||
|
||||
url : /^(https?|ftp|file|ssh):\/\/(((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/,
|
||||
// abc.de
|
||||
domain : /^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,8}$/,
|
||||
|
||||
datetime : /^([0-2][0-9]{3})\-([0-1][0-9])\-([0-3][0-9])T([0-5][0-9])\:([0-5][0-9])\:([0-5][0-9])(Z|([\-\+]([0-1][0-9])\:00))$/,
|
||||
// YYYY-MM-DD
|
||||
date : /(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/,
|
||||
// HH:MM:SS
|
||||
time : /^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/,
|
||||
dateISO : /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/,
|
||||
// MM/DD/YYYY
|
||||
month_day_year : /^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.]\d{4}$/,
|
||||
// DD/MM/YYYY
|
||||
day_month_year : /^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.]\d{4}$/,
|
||||
|
||||
// #FFF or #FFFFFF
|
||||
color : /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/
|
||||
},
|
||||
validators : {
|
||||
equalTo : function (el, required, parent) {
|
||||
var from = document.getElementById(el.getAttribute(this.add_namespace('data-equalto'))).value,
|
||||
to = el.value,
|
||||
valid = (from === to);
|
||||
|
||||
return valid;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
timer : null,
|
||||
|
||||
init : function (scope, method, options) {
|
||||
this.bindings(method, options);
|
||||
},
|
||||
|
||||
events : function (scope) {
|
||||
var self = this,
|
||||
form = self.S(scope).attr('novalidate', 'novalidate'),
|
||||
settings = form.data(this.attr_name(true) + '-init') || {};
|
||||
|
||||
this.invalid_attr = this.add_namespace('data-invalid');
|
||||
|
||||
form
|
||||
.off('.abide')
|
||||
.on('submit.fndtn.abide validate.fndtn.abide', function (e) {
|
||||
var is_ajax = /ajax/i.test(self.S(this).attr(self.attr_name()));
|
||||
return self.validate(self.S(this).find('input, textarea, select').get(), e, is_ajax);
|
||||
})
|
||||
.on('reset', function () {
|
||||
return self.reset($(this));
|
||||
})
|
||||
.find('input, textarea, select')
|
||||
.off('.abide')
|
||||
.on('blur.fndtn.abide change.fndtn.abide', function (e) {
|
||||
if (settings.validate_on_blur === true) {
|
||||
self.validate([this], e);
|
||||
}
|
||||
})
|
||||
.on('keydown.fndtn.abide', function (e) {
|
||||
if (settings.live_validate === true && e.which != 9) {
|
||||
clearTimeout(self.timer);
|
||||
self.timer = setTimeout(function () {
|
||||
self.validate([this], e);
|
||||
}.bind(this), settings.timeout);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
reset : function (form) {
|
||||
form.removeAttr(this.invalid_attr);
|
||||
$(this.invalid_attr, form).removeAttr(this.invalid_attr);
|
||||
$('.' + this.settings.error_class, form).not('small').removeClass(this.settings.error_class);
|
||||
},
|
||||
|
||||
validate : function (els, e, is_ajax) {
|
||||
var validations = this.parse_patterns(els),
|
||||
validation_count = validations.length,
|
||||
form = this.S(els[0]).closest('form'),
|
||||
submit_event = /submit/.test(e.type);
|
||||
|
||||
// Has to count up to make sure the focus gets applied to the top error
|
||||
for (var i = 0; i < validation_count; i++) {
|
||||
if (!validations[i] && (submit_event || is_ajax)) {
|
||||
if (this.settings.focus_on_invalid) {
|
||||
els[i].focus();
|
||||
}
|
||||
form.trigger('invalid').trigger('invalid.fndtn.abide');
|
||||
this.S(els[i]).closest('form').attr(this.invalid_attr, '');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (submit_event || is_ajax) {
|
||||
form.trigger('valid').trigger('valid.fndtn.abide');
|
||||
}
|
||||
|
||||
form.removeAttr(this.invalid_attr);
|
||||
|
||||
if (is_ajax) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
},
|
||||
|
||||
parse_patterns : function (els) {
|
||||
var i = els.length,
|
||||
el_patterns = [];
|
||||
|
||||
while (i--) {
|
||||
el_patterns.push(this.pattern(els[i]));
|
||||
}
|
||||
|
||||
return this.check_validation_and_apply_styles(el_patterns);
|
||||
},
|
||||
|
||||
pattern : function (el) {
|
||||
var type = el.getAttribute('type'),
|
||||
required = typeof el.getAttribute('required') === 'string';
|
||||
|
||||
var pattern = el.getAttribute('pattern') || '';
|
||||
|
||||
if (this.settings.patterns.hasOwnProperty(pattern) && pattern.length > 0) {
|
||||
return [el, this.settings.patterns[pattern], required];
|
||||
} else if (pattern.length > 0) {
|
||||
return [el, new RegExp(pattern), required];
|
||||
}
|
||||
|
||||
if (this.settings.patterns.hasOwnProperty(type)) {
|
||||
return [el, this.settings.patterns[type], required];
|
||||
}
|
||||
|
||||
pattern = /.*/;
|
||||
|
||||
return [el, pattern, required];
|
||||
},
|
||||
|
||||
// TODO: Break this up into smaller methods, getting hard to read.
|
||||
check_validation_and_apply_styles : function (el_patterns) {
|
||||
var i = el_patterns.length,
|
||||
validations = [],
|
||||
form = this.S(el_patterns[0][0]).closest('[data-' + this.attr_name(true) + ']'),
|
||||
settings = form.data(this.attr_name(true) + '-init') || {};
|
||||
while (i--) {
|
||||
var el = el_patterns[i][0],
|
||||
required = el_patterns[i][2],
|
||||
value = el.value.trim(),
|
||||
direct_parent = this.S(el).parent(),
|
||||
validator = el.getAttribute(this.add_namespace('data-abide-validator')),
|
||||
is_radio = el.type === 'radio',
|
||||
is_checkbox = el.type === 'checkbox',
|
||||
label = this.S('label[for="' + el.getAttribute('id') + '"]'),
|
||||
valid_length = (required) ? (el.value.length > 0) : true,
|
||||
el_validations = [];
|
||||
|
||||
var parent, valid;
|
||||
|
||||
// support old way to do equalTo validations
|
||||
if (el.getAttribute(this.add_namespace('data-equalto'))) { validator = 'equalTo' }
|
||||
|
||||
if (!direct_parent.is('label')) {
|
||||
parent = direct_parent;
|
||||
} else {
|
||||
parent = direct_parent.parent();
|
||||
}
|
||||
|
||||
if (validator) {
|
||||
valid = this.settings.validators[validator].apply(this, [el, required, parent]);
|
||||
el_validations.push(valid);
|
||||
}
|
||||
|
||||
if (is_radio && required) {
|
||||
el_validations.push(this.valid_radio(el, required));
|
||||
} else if (is_checkbox && required) {
|
||||
el_validations.push(this.valid_checkbox(el, required));
|
||||
} else {
|
||||
|
||||
if (el_patterns[i][1].test(value) && valid_length ||
|
||||
!required && el.value.length < 1 || $(el).attr('disabled')) {
|
||||
el_validations.push(true);
|
||||
} else {
|
||||
el_validations.push(false);
|
||||
}
|
||||
|
||||
el_validations = [el_validations.every(function (valid) {return valid;})];
|
||||
|
||||
if (el_validations[0]) {
|
||||
this.S(el).removeAttr(this.invalid_attr);
|
||||
el.setAttribute('aria-invalid', 'false');
|
||||
el.removeAttribute('aria-describedby');
|
||||
parent.removeClass(this.settings.error_class);
|
||||
if (label.length > 0 && this.settings.error_labels) {
|
||||
label.removeClass(this.settings.error_class).removeAttr('role');
|
||||
}
|
||||
$(el).triggerHandler('valid');
|
||||
} else {
|
||||
this.S(el).attr(this.invalid_attr, '');
|
||||
el.setAttribute('aria-invalid', 'true');
|
||||
|
||||
// Try to find the error associated with the input
|
||||
var errorElem = parent.find('small.' + this.settings.error_class, 'span.' + this.settings.error_class);
|
||||
var errorID = errorElem.length > 0 ? errorElem[0].id : '';
|
||||
if (errorID.length > 0) {
|
||||
el.setAttribute('aria-describedby', errorID);
|
||||
}
|
||||
|
||||
// el.setAttribute('aria-describedby', $(el).find('.error')[0].id);
|
||||
parent.addClass(this.settings.error_class);
|
||||
if (label.length > 0 && this.settings.error_labels) {
|
||||
label.addClass(this.settings.error_class).attr('role', 'alert');
|
||||
}
|
||||
$(el).triggerHandler('invalid');
|
||||
}
|
||||
}
|
||||
validations.push(el_validations[0]);
|
||||
}
|
||||
validations = [validations.every(function (valid) {return valid;})];
|
||||
return validations;
|
||||
},
|
||||
|
||||
valid_checkbox : function (el, required) {
|
||||
var el = this.S(el),
|
||||
valid = (el.is(':checked') || !required || el.get(0).getAttribute('disabled'));
|
||||
|
||||
if (valid) {
|
||||
el.removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class);
|
||||
} else {
|
||||
el.attr(this.invalid_attr, '').parent().addClass(this.settings.error_class);
|
||||
}
|
||||
|
||||
return valid;
|
||||
},
|
||||
|
||||
valid_radio : function (el, required) {
|
||||
var name = el.getAttribute('name'),
|
||||
group = this.S(el).closest('[data-' + this.attr_name(true) + ']').find("[name='" + name + "']"),
|
||||
count = group.length,
|
||||
valid = false,
|
||||
disabled = false;
|
||||
|
||||
// Has to count up to make sure the focus gets applied to the top error
|
||||
for (var i=0; i < count; i++) {
|
||||
if( group[i].getAttribute('disabled') ){
|
||||
disabled=true;
|
||||
valid=true;
|
||||
} else {
|
||||
if (group[i].checked){
|
||||
valid = true;
|
||||
} else {
|
||||
if( disabled ){
|
||||
valid = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Has to count up to make sure the focus gets applied to the top error
|
||||
for (var i = 0; i < count; i++) {
|
||||
if (valid) {
|
||||
this.S(group[i]).removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class);
|
||||
} else {
|
||||
this.S(group[i]).attr(this.invalid_attr, '').parent().addClass(this.settings.error_class);
|
||||
}
|
||||
}
|
||||
|
||||
return valid;
|
||||
},
|
||||
|
||||
valid_equal : function (el, required, parent) {
|
||||
var from = document.getElementById(el.getAttribute(this.add_namespace('data-equalto'))).value,
|
||||
to = el.value,
|
||||
valid = (from === to);
|
||||
|
||||
if (valid) {
|
||||
this.S(el).removeAttr(this.invalid_attr);
|
||||
parent.removeClass(this.settings.error_class);
|
||||
if (label.length > 0 && settings.error_labels) {
|
||||
label.removeClass(this.settings.error_class);
|
||||
}
|
||||
} else {
|
||||
this.S(el).attr(this.invalid_attr, '');
|
||||
parent.addClass(this.settings.error_class);
|
||||
if (label.length > 0 && settings.error_labels) {
|
||||
label.addClass(this.settings.error_class);
|
||||
}
|
||||
}
|
||||
|
||||
return valid;
|
||||
},
|
||||
|
||||
valid_oneof : function (el, required, parent, doNotValidateOthers) {
|
||||
var el = this.S(el),
|
||||
others = this.S('[' + this.add_namespace('data-oneof') + ']'),
|
||||
valid = others.filter(':checked').length > 0;
|
||||
|
||||
if (valid) {
|
||||
el.removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class);
|
||||
} else {
|
||||
el.attr(this.invalid_attr, '').parent().addClass(this.settings.error_class);
|
||||
}
|
||||
|
||||
if (!doNotValidateOthers) {
|
||||
var _this = this;
|
||||
others.each(function () {
|
||||
_this.valid_oneof.call(_this, this, null, null, true);
|
||||
});
|
||||
}
|
||||
|
||||
return valid;
|
||||
}
|
||||
};
|
||||
}(jQuery, window, window.document));
|
||||
@@ -0,0 +1,67 @@
|
||||
;(function ($, window, document, undefined) {
|
||||
'use strict';
|
||||
|
||||
Foundation.libs.accordion = {
|
||||
name : 'accordion',
|
||||
|
||||
version : '5.5.1',
|
||||
|
||||
settings : {
|
||||
content_class : 'content',
|
||||
active_class : 'active',
|
||||
multi_expand : false,
|
||||
toggleable : true,
|
||||
callback : function () {}
|
||||
},
|
||||
|
||||
init : function (scope, method, options) {
|
||||
this.bindings(method, options);
|
||||
},
|
||||
|
||||
events : function () {
|
||||
var self = this;
|
||||
var S = this.S;
|
||||
S(this.scope)
|
||||
.off('.fndtn.accordion')
|
||||
.on('click.fndtn.accordion', '[' + this.attr_name() + '] > .accordion-navigation > a', function (e) {
|
||||
var accordion = S(this).closest('[' + self.attr_name() + ']'),
|
||||
groupSelector = self.attr_name() + '=' + accordion.attr(self.attr_name()),
|
||||
settings = accordion.data(self.attr_name(true) + '-init') || self.settings,
|
||||
target = S('#' + this.href.split('#')[1]),
|
||||
aunts = $('> .accordion-navigation', accordion),
|
||||
siblings = aunts.children('.' + settings.content_class),
|
||||
active_content = siblings.filter('.' + settings.active_class);
|
||||
|
||||
e.preventDefault();
|
||||
|
||||
if (accordion.attr(self.attr_name())) {
|
||||
siblings = siblings.add('[' + groupSelector + '] dd > ' + '.' + settings.content_class);
|
||||
aunts = aunts.add('[' + groupSelector + '] .accordion-navigation');
|
||||
}
|
||||
|
||||
if (settings.toggleable && target.is(active_content)) {
|
||||
target.parent('.accordion-navigation').toggleClass(settings.active_class, false);
|
||||
target.toggleClass(settings.active_class, false);
|
||||
settings.callback(target);
|
||||
target.triggerHandler('toggled', [accordion]);
|
||||
accordion.triggerHandler('toggled', [target]);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!settings.multi_expand) {
|
||||
siblings.removeClass(settings.active_class);
|
||||
aunts.removeClass(settings.active_class);
|
||||
}
|
||||
|
||||
target.addClass(settings.active_class).parent().addClass(settings.active_class);
|
||||
settings.callback(target);
|
||||
target.triggerHandler('toggled', [accordion]);
|
||||
accordion.triggerHandler('toggled', [target]);
|
||||
});
|
||||
},
|
||||
|
||||
off : function () {},
|
||||
|
||||
reflow : function () {}
|
||||
};
|
||||
}(jQuery, window, window.document));
|
||||
@@ -0,0 +1,43 @@
|
||||
;(function ($, window, document, undefined) {
|
||||
'use strict';
|
||||
|
||||
Foundation.libs.alert = {
|
||||
name : 'alert',
|
||||
|
||||
version : '5.5.1',
|
||||
|
||||
settings : {
|
||||
callback : function () {}
|
||||
},
|
||||
|
||||
init : function (scope, method, options) {
|
||||
this.bindings(method, options);
|
||||
},
|
||||
|
||||
events : function () {
|
||||
var self = this,
|
||||
S = this.S;
|
||||
|
||||
$(this.scope).off('.alert').on('click.fndtn.alert', '[' + this.attr_name() + '] .close', function (e) {
|
||||
var alertBox = S(this).closest('[' + self.attr_name() + ']'),
|
||||
settings = alertBox.data(self.attr_name(true) + '-init') || self.settings;
|
||||
|
||||
e.preventDefault();
|
||||
if (Modernizr.csstransitions) {
|
||||
alertBox.addClass('alert-close');
|
||||
alertBox.on('transitionend webkitTransitionEnd oTransitionEnd', function (e) {
|
||||
S(this).trigger('close').trigger('close.fndtn.alert').remove();
|
||||
settings.callback();
|
||||
});
|
||||
} else {
|
||||
alertBox.fadeOut(300, function () {
|
||||
S(this).trigger('close').trigger('close.fndtn.alert').remove();
|
||||
settings.callback();
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
reflow : function () {}
|
||||
};
|
||||
}(jQuery, window, window.document));
|
||||
@@ -0,0 +1,556 @@
|
||||
;(function ($, window, document, undefined) {
|
||||
'use strict';
|
||||
|
||||
Foundation.libs.clearing = {
|
||||
name : 'clearing',
|
||||
|
||||
version : '5.5.1',
|
||||
|
||||
settings : {
|
||||
templates : {
|
||||
viewing : '<a href="#" class="clearing-close">×</a>' +
|
||||
'<div class="visible-img" style="display: none"><div class="clearing-touch-label"></div><img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D" alt="" />' +
|
||||
'<p class="clearing-caption"></p><a href="#" class="clearing-main-prev"><span></span></a>' +
|
||||
'<a href="#" class="clearing-main-next"><span></span></a></div>'
|
||||
},
|
||||
|
||||
// comma delimited list of selectors that, on click, will close clearing,
|
||||
// add 'div.clearing-blackout, div.visible-img' to close on background click
|
||||
close_selectors : '.clearing-close, div.clearing-blackout',
|
||||
|
||||
// Default to the entire li element.
|
||||
open_selectors : '',
|
||||
|
||||
// Image will be skipped in carousel.
|
||||
skip_selector : '',
|
||||
|
||||
touch_label : '',
|
||||
|
||||
// event initializers and locks
|
||||
init : false,
|
||||
locked : false
|
||||
},
|
||||
|
||||
init : function (scope, method, options) {
|
||||
var self = this;
|
||||
Foundation.inherit(this, 'throttle image_loaded');
|
||||
|
||||
this.bindings(method, options);
|
||||
|
||||
if (self.S(this.scope).is('[' + this.attr_name() + ']')) {
|
||||
this.assemble(self.S('li', this.scope));
|
||||
} else {
|
||||
self.S('[' + this.attr_name() + ']', this.scope).each(function () {
|
||||
self.assemble(self.S('li', this));
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
events : function (scope) {
|
||||
var self = this,
|
||||
S = self.S,
|
||||
$scroll_container = $('.scroll-container');
|
||||
|
||||
if ($scroll_container.length > 0) {
|
||||
this.scope = $scroll_container;
|
||||
}
|
||||
|
||||
S(this.scope)
|
||||
.off('.clearing')
|
||||
.on('click.fndtn.clearing', 'ul[' + this.attr_name() + '] li ' + this.settings.open_selectors,
|
||||
function (e, current, target) {
|
||||
var current = current || S(this),
|
||||
target = target || current,
|
||||
next = current.next('li'),
|
||||
settings = current.closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init'),
|
||||
image = S(e.target);
|
||||
|
||||
e.preventDefault();
|
||||
|
||||
if (!settings) {
|
||||
self.init();
|
||||
settings = current.closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init');
|
||||
}
|
||||
|
||||
// if clearing is open and the current image is
|
||||
// clicked, go to the next image in sequence
|
||||
if (target.hasClass('visible') &&
|
||||
current[0] === target[0] &&
|
||||
next.length > 0 && self.is_open(current)) {
|
||||
target = next;
|
||||
image = S('img', target);
|
||||
}
|
||||
|
||||
// set current and target to the clicked li if not otherwise defined.
|
||||
self.open(image, current, target);
|
||||
self.update_paddles(target);
|
||||
})
|
||||
|
||||
.on('click.fndtn.clearing', '.clearing-main-next',
|
||||
function (e) { self.nav(e, 'next') })
|
||||
.on('click.fndtn.clearing', '.clearing-main-prev',
|
||||
function (e) { self.nav(e, 'prev') })
|
||||
.on('click.fndtn.clearing', this.settings.close_selectors,
|
||||
function (e) { Foundation.libs.clearing.close(e, this) });
|
||||
|
||||
$(document).on('keydown.fndtn.clearing',
|
||||
function (e) { self.keydown(e) });
|
||||
|
||||
S(window).off('.clearing').on('resize.fndtn.clearing',
|
||||
function () { self.resize() });
|
||||
|
||||
this.swipe_events(scope);
|
||||
},
|
||||
|
||||
swipe_events : function (scope) {
|
||||
var self = this,
|
||||
S = self.S;
|
||||
|
||||
S(this.scope)
|
||||
.on('touchstart.fndtn.clearing', '.visible-img', function (e) {
|
||||
if (!e.touches) { e = e.originalEvent; }
|
||||
var data = {
|
||||
start_page_x : e.touches[0].pageX,
|
||||
start_page_y : e.touches[0].pageY,
|
||||
start_time : (new Date()).getTime(),
|
||||
delta_x : 0,
|
||||
is_scrolling : undefined
|
||||
};
|
||||
|
||||
S(this).data('swipe-transition', data);
|
||||
e.stopPropagation();
|
||||
})
|
||||
.on('touchmove.fndtn.clearing', '.visible-img', function (e) {
|
||||
if (!e.touches) {
|
||||
e = e.originalEvent;
|
||||
}
|
||||
// Ignore pinch/zoom events
|
||||
if (e.touches.length > 1 || e.scale && e.scale !== 1) {
|
||||
return;
|
||||
}
|
||||
|
||||
var data = S(this).data('swipe-transition');
|
||||
|
||||
if (typeof data === 'undefined') {
|
||||
data = {};
|
||||
}
|
||||
|
||||
data.delta_x = e.touches[0].pageX - data.start_page_x;
|
||||
|
||||
if (Foundation.rtl) {
|
||||
data.delta_x = -data.delta_x;
|
||||
}
|
||||
|
||||
if (typeof data.is_scrolling === 'undefined') {
|
||||
data.is_scrolling = !!( data.is_scrolling || Math.abs(data.delta_x) < Math.abs(e.touches[0].pageY - data.start_page_y) );
|
||||
}
|
||||
|
||||
if (!data.is_scrolling && !data.active) {
|
||||
e.preventDefault();
|
||||
var direction = (data.delta_x < 0) ? 'next' : 'prev';
|
||||
data.active = true;
|
||||
self.nav(e, direction);
|
||||
}
|
||||
})
|
||||
.on('touchend.fndtn.clearing', '.visible-img', function (e) {
|
||||
S(this).data('swipe-transition', {});
|
||||
e.stopPropagation();
|
||||
});
|
||||
},
|
||||
|
||||
assemble : function ($li) {
|
||||
var $el = $li.parent();
|
||||
|
||||
if ($el.parent().hasClass('carousel')) {
|
||||
return;
|
||||
}
|
||||
|
||||
$el.after('<div id="foundationClearingHolder"></div>');
|
||||
|
||||
var grid = $el.detach(),
|
||||
grid_outerHTML = '';
|
||||
|
||||
if (grid[0] == null) {
|
||||
return;
|
||||
} else {
|
||||
grid_outerHTML = grid[0].outerHTML;
|
||||
}
|
||||
|
||||
var holder = this.S('#foundationClearingHolder'),
|
||||
settings = $el.data(this.attr_name(true) + '-init'),
|
||||
data = {
|
||||
grid : '<div class="carousel">' + grid_outerHTML + '</div>',
|
||||
viewing : settings.templates.viewing
|
||||
},
|
||||
wrapper = '<div class="clearing-assembled"><div>' + data.viewing +
|
||||
data.grid + '</div></div>',
|
||||
touch_label = this.settings.touch_label;
|
||||
|
||||
if (Modernizr.touch) {
|
||||
wrapper = $(wrapper).find('.clearing-touch-label').html(touch_label).end();
|
||||
}
|
||||
|
||||
holder.after(wrapper).remove();
|
||||
},
|
||||
|
||||
open : function ($image, current, target) {
|
||||
var self = this,
|
||||
body = $(document.body),
|
||||
root = target.closest('.clearing-assembled'),
|
||||
container = self.S('div', root).first(),
|
||||
visible_image = self.S('.visible-img', container),
|
||||
image = self.S('img', visible_image).not($image),
|
||||
label = self.S('.clearing-touch-label', container),
|
||||
error = false;
|
||||
|
||||
// Event to disable scrolling on touch devices when Clearing is activated
|
||||
$('body').on('touchmove', function (e) {
|
||||
e.preventDefault();
|
||||
});
|
||||
|
||||
image.error(function () {
|
||||
error = true;
|
||||
});
|
||||
|
||||
function startLoad() {
|
||||
setTimeout(function () {
|
||||
this.image_loaded(image, function () {
|
||||
if (image.outerWidth() === 1 && !error) {
|
||||
startLoad.call(this);
|
||||
} else {
|
||||
cb.call(this, image);
|
||||
}
|
||||
}.bind(this));
|
||||
}.bind(this), 100);
|
||||
}
|
||||
|
||||
function cb (image) {
|
||||
var $image = $(image);
|
||||
$image.css('visibility', 'visible');
|
||||
// toggle the gallery
|
||||
body.css('overflow', 'hidden');
|
||||
root.addClass('clearing-blackout');
|
||||
container.addClass('clearing-container');
|
||||
visible_image.show();
|
||||
this.fix_height(target)
|
||||
.caption(self.S('.clearing-caption', visible_image), self.S('img', target))
|
||||
.center_and_label(image, label)
|
||||
.shift(current, target, function () {
|
||||
target.closest('li').siblings().removeClass('visible');
|
||||
target.closest('li').addClass('visible');
|
||||
});
|
||||
visible_image.trigger('opened.fndtn.clearing')
|
||||
}
|
||||
|
||||
if (!this.locked()) {
|
||||
visible_image.trigger('open.fndtn.clearing');
|
||||
// set the image to the selected thumbnail
|
||||
image
|
||||
.attr('src', this.load($image))
|
||||
.css('visibility', 'hidden');
|
||||
|
||||
startLoad.call(this);
|
||||
}
|
||||
},
|
||||
|
||||
close : function (e, el) {
|
||||
e.preventDefault();
|
||||
|
||||
var root = (function (target) {
|
||||
if (/blackout/.test(target.selector)) {
|
||||
return target;
|
||||
} else {
|
||||
return target.closest('.clearing-blackout');
|
||||
}
|
||||
}($(el))),
|
||||
body = $(document.body), container, visible_image;
|
||||
|
||||
if (el === e.target && root) {
|
||||
body.css('overflow', '');
|
||||
container = $('div', root).first();
|
||||
visible_image = $('.visible-img', container);
|
||||
visible_image.trigger('close.fndtn.clearing');
|
||||
this.settings.prev_index = 0;
|
||||
$('ul[' + this.attr_name() + ']', root)
|
||||
.attr('style', '').closest('.clearing-blackout')
|
||||
.removeClass('clearing-blackout');
|
||||
container.removeClass('clearing-container');
|
||||
visible_image.hide();
|
||||
visible_image.trigger('closed.fndtn.clearing');
|
||||
}
|
||||
|
||||
// Event to re-enable scrolling on touch devices
|
||||
$('body').off('touchmove');
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
is_open : function (current) {
|
||||
return current.parent().prop('style').length > 0;
|
||||
},
|
||||
|
||||
keydown : function (e) {
|
||||
var clearing = $('.clearing-blackout ul[' + this.attr_name() + ']'),
|
||||
NEXT_KEY = this.rtl ? 37 : 39,
|
||||
PREV_KEY = this.rtl ? 39 : 37,
|
||||
ESC_KEY = 27;
|
||||
|
||||
if (e.which === NEXT_KEY) {
|
||||
this.go(clearing, 'next');
|
||||
}
|
||||
if (e.which === PREV_KEY) {
|
||||
this.go(clearing, 'prev');
|
||||
}
|
||||
if (e.which === ESC_KEY) {
|
||||
this.S('a.clearing-close').trigger('click').trigger('click.fndtn.clearing');
|
||||
}
|
||||
},
|
||||
|
||||
nav : function (e, direction) {
|
||||
var clearing = $('ul[' + this.attr_name() + ']', '.clearing-blackout');
|
||||
|
||||
e.preventDefault();
|
||||
this.go(clearing, direction);
|
||||
},
|
||||
|
||||
resize : function () {
|
||||
var image = $('img', '.clearing-blackout .visible-img'),
|
||||
label = $('.clearing-touch-label', '.clearing-blackout');
|
||||
|
||||
if (image.length) {
|
||||
this.center_and_label(image, label);
|
||||
image.trigger('resized.fndtn.clearing')
|
||||
}
|
||||
},
|
||||
|
||||
// visual adjustments
|
||||
fix_height : function (target) {
|
||||
var lis = target.parent().children(),
|
||||
self = this;
|
||||
|
||||
lis.each(function () {
|
||||
var li = self.S(this),
|
||||
image = li.find('img');
|
||||
|
||||
if (li.height() > image.outerHeight()) {
|
||||
li.addClass('fix-height');
|
||||
}
|
||||
})
|
||||
.closest('ul')
|
||||
.width(lis.length * 100 + '%');
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
update_paddles : function (target) {
|
||||
target = target.closest('li');
|
||||
var visible_image = target
|
||||
.closest('.carousel')
|
||||
.siblings('.visible-img');
|
||||
|
||||
if (target.next().length > 0) {
|
||||
this.S('.clearing-main-next', visible_image).removeClass('disabled');
|
||||
} else {
|
||||
this.S('.clearing-main-next', visible_image).addClass('disabled');
|
||||
}
|
||||
|
||||
if (target.prev().length > 0) {
|
||||
this.S('.clearing-main-prev', visible_image).removeClass('disabled');
|
||||
} else {
|
||||
this.S('.clearing-main-prev', visible_image).addClass('disabled');
|
||||
}
|
||||
},
|
||||
|
||||
center_and_label : function (target, label) {
|
||||
if (!this.rtl && label.length > 0) {
|
||||
label.css({
|
||||
marginLeft : -(label.outerWidth() / 2),
|
||||
marginTop : -(target.outerHeight() / 2)-label.outerHeight()-10
|
||||
});
|
||||
} else {
|
||||
label.css({
|
||||
marginRight : -(label.outerWidth() / 2),
|
||||
marginTop : -(target.outerHeight() / 2)-label.outerHeight()-10,
|
||||
left: 'auto',
|
||||
right: '50%'
|
||||
});
|
||||
}
|
||||
return this;
|
||||
},
|
||||
|
||||
// image loading and preloading
|
||||
|
||||
load : function ($image) {
|
||||
var href;
|
||||
|
||||
if ($image[0].nodeName === 'A') {
|
||||
href = $image.attr('href');
|
||||
} else {
|
||||
href = $image.closest('a').attr('href');
|
||||
}
|
||||
|
||||
this.preload($image);
|
||||
|
||||
if (href) {
|
||||
return href;
|
||||
}
|
||||
return $image.attr('src');
|
||||
},
|
||||
|
||||
preload : function ($image) {
|
||||
this
|
||||
.img($image.closest('li').next())
|
||||
.img($image.closest('li').prev());
|
||||
},
|
||||
|
||||
img : function (img) {
|
||||
if (img.length) {
|
||||
var new_img = new Image(),
|
||||
new_a = this.S('a', img);
|
||||
|
||||
if (new_a.length) {
|
||||
new_img.src = new_a.attr('href');
|
||||
} else {
|
||||
new_img.src = this.S('img', img).attr('src');
|
||||
}
|
||||
}
|
||||
return this;
|
||||
},
|
||||
|
||||
// image caption
|
||||
|
||||
caption : function (container, $image) {
|
||||
var caption = $image.attr('data-caption');
|
||||
|
||||
if (caption) {
|
||||
container
|
||||
.html(caption)
|
||||
.show();
|
||||
} else {
|
||||
container
|
||||
.text('')
|
||||
.hide();
|
||||
}
|
||||
return this;
|
||||
},
|
||||
|
||||
// directional methods
|
||||
|
||||
go : function ($ul, direction) {
|
||||
var current = this.S('.visible', $ul),
|
||||
target = current[direction]();
|
||||
|
||||
// Check for skip selector.
|
||||
if (this.settings.skip_selector && target.find(this.settings.skip_selector).length != 0) {
|
||||
target = target[direction]();
|
||||
}
|
||||
|
||||
if (target.length) {
|
||||
this.S('img', target)
|
||||
.trigger('click', [current, target]).trigger('click.fndtn.clearing', [current, target])
|
||||
.trigger('change.fndtn.clearing');
|
||||
}
|
||||
},
|
||||
|
||||
shift : function (current, target, callback) {
|
||||
var clearing = target.parent(),
|
||||
old_index = this.settings.prev_index || target.index(),
|
||||
direction = this.direction(clearing, current, target),
|
||||
dir = this.rtl ? 'right' : 'left',
|
||||
left = parseInt(clearing.css('left'), 10),
|
||||
width = target.outerWidth(),
|
||||
skip_shift;
|
||||
|
||||
var dir_obj = {};
|
||||
|
||||
// we use jQuery animate instead of CSS transitions because we
|
||||
// need a callback to unlock the next animation
|
||||
// needs support for RTL **
|
||||
if (target.index() !== old_index && !/skip/.test(direction)) {
|
||||
if (/left/.test(direction)) {
|
||||
this.lock();
|
||||
dir_obj[dir] = left + width;
|
||||
clearing.animate(dir_obj, 300, this.unlock());
|
||||
} else if (/right/.test(direction)) {
|
||||
this.lock();
|
||||
dir_obj[dir] = left - width;
|
||||
clearing.animate(dir_obj, 300, this.unlock());
|
||||
}
|
||||
} else if (/skip/.test(direction)) {
|
||||
// the target image is not adjacent to the current image, so
|
||||
// do we scroll right or not
|
||||
skip_shift = target.index() - this.settings.up_count;
|
||||
this.lock();
|
||||
|
||||
if (skip_shift > 0) {
|
||||
dir_obj[dir] = -(skip_shift * width);
|
||||
clearing.animate(dir_obj, 300, this.unlock());
|
||||
} else {
|
||||
dir_obj[dir] = 0;
|
||||
clearing.animate(dir_obj, 300, this.unlock());
|
||||
}
|
||||
}
|
||||
|
||||
callback();
|
||||
},
|
||||
|
||||
direction : function ($el, current, target) {
|
||||
var lis = this.S('li', $el),
|
||||
li_width = lis.outerWidth() + (lis.outerWidth() / 4),
|
||||
up_count = Math.floor(this.S('.clearing-container').outerWidth() / li_width) - 1,
|
||||
target_index = lis.index(target),
|
||||
response;
|
||||
|
||||
this.settings.up_count = up_count;
|
||||
|
||||
if (this.adjacent(this.settings.prev_index, target_index)) {
|
||||
if ((target_index > up_count) && target_index > this.settings.prev_index) {
|
||||
response = 'right';
|
||||
} else if ((target_index > up_count - 1) && target_index <= this.settings.prev_index) {
|
||||
response = 'left';
|
||||
} else {
|
||||
response = false;
|
||||
}
|
||||
} else {
|
||||
response = 'skip';
|
||||
}
|
||||
|
||||
this.settings.prev_index = target_index;
|
||||
|
||||
return response;
|
||||
},
|
||||
|
||||
adjacent : function (current_index, target_index) {
|
||||
for (var i = target_index + 1; i >= target_index - 1; i--) {
|
||||
if (i === current_index) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
},
|
||||
|
||||
// lock management
|
||||
|
||||
lock : function () {
|
||||
this.settings.locked = true;
|
||||
},
|
||||
|
||||
unlock : function () {
|
||||
this.settings.locked = false;
|
||||
},
|
||||
|
||||
locked : function () {
|
||||
return this.settings.locked;
|
||||
},
|
||||
|
||||
off : function () {
|
||||
this.S(this.scope).off('.fndtn.clearing');
|
||||
this.S(window).off('.fndtn.clearing');
|
||||
},
|
||||
|
||||
reflow : function () {
|
||||
this.init();
|
||||
}
|
||||
};
|
||||
|
||||
}(jQuery, window, window.document));
|
||||
@@ -0,0 +1,448 @@
|
||||
;(function ($, window, document, undefined) {
|
||||
'use strict';
|
||||
|
||||
Foundation.libs.dropdown = {
|
||||
name : 'dropdown',
|
||||
|
||||
version : '5.5.1',
|
||||
|
||||
settings : {
|
||||
active_class : 'open',
|
||||
disabled_class : 'disabled',
|
||||
mega_class : 'mega',
|
||||
align : 'bottom',
|
||||
is_hover : false,
|
||||
hover_timeout : 150,
|
||||
opened : function () {},
|
||||
closed : function () {}
|
||||
},
|
||||
|
||||
init : function (scope, method, options) {
|
||||
Foundation.inherit(this, 'throttle');
|
||||
|
||||
$.extend(true, this.settings, method, options);
|
||||
this.bindings(method, options);
|
||||
},
|
||||
|
||||
events : function (scope) {
|
||||
var self = this,
|
||||
S = self.S;
|
||||
|
||||
S(this.scope)
|
||||
.off('.dropdown')
|
||||
.on('click.fndtn.dropdown', '[' + this.attr_name() + ']', function (e) {
|
||||
var settings = S(this).data(self.attr_name(true) + '-init') || self.settings;
|
||||
if (!settings.is_hover || Modernizr.touch) {
|
||||
e.preventDefault();
|
||||
if (S(this).parent('[data-reveal-id]')) {
|
||||
e.stopPropagation();
|
||||
}
|
||||
self.toggle($(this));
|
||||
}
|
||||
})
|
||||
.on('mouseenter.fndtn.dropdown', '[' + this.attr_name() + '], [' + this.attr_name() + '-content]', function (e) {
|
||||
var $this = S(this),
|
||||
dropdown,
|
||||
target;
|
||||
|
||||
clearTimeout(self.timeout);
|
||||
|
||||
if ($this.data(self.data_attr())) {
|
||||
dropdown = S('#' + $this.data(self.data_attr()));
|
||||
target = $this;
|
||||
} else {
|
||||
dropdown = $this;
|
||||
target = S('[' + self.attr_name() + '="' + dropdown.attr('id') + '"]');
|
||||
}
|
||||
|
||||
var settings = target.data(self.attr_name(true) + '-init') || self.settings;
|
||||
|
||||
if (S(e.currentTarget).data(self.data_attr()) && settings.is_hover) {
|
||||
self.closeall.call(self);
|
||||
}
|
||||
|
||||
if (settings.is_hover) {
|
||||
self.open.apply(self, [dropdown, target]);
|
||||
}
|
||||
})
|
||||
.on('mouseleave.fndtn.dropdown', '[' + this.attr_name() + '], [' + this.attr_name() + '-content]', function (e) {
|
||||
var $this = S(this);
|
||||
var settings;
|
||||
|
||||
if ($this.data(self.data_attr())) {
|
||||
settings = $this.data(self.data_attr(true) + '-init') || self.settings;
|
||||
} else {
|
||||
var target = S('[' + self.attr_name() + '="' + S(this).attr('id') + '"]'),
|
||||
settings = target.data(self.attr_name(true) + '-init') || self.settings;
|
||||
}
|
||||
|
||||
self.timeout = setTimeout(function () {
|
||||
if ($this.data(self.data_attr())) {
|
||||
if (settings.is_hover) {
|
||||
self.close.call(self, S('#' + $this.data(self.data_attr())));
|
||||
}
|
||||
} else {
|
||||
if (settings.is_hover) {
|
||||
self.close.call(self, $this);
|
||||
}
|
||||
}
|
||||
}.bind(this), settings.hover_timeout);
|
||||
})
|
||||
.on('click.fndtn.dropdown', function (e) {
|
||||
var parent = S(e.target).closest('[' + self.attr_name() + '-content]');
|
||||
var links = parent.find('a');
|
||||
|
||||
if (links.length > 0 && parent.attr('aria-autoclose') !== 'false') {
|
||||
self.close.call(self, S('[' + self.attr_name() + '-content]'));
|
||||
}
|
||||
|
||||
if (e.target !== document && !$.contains(document.documentElement, e.target)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (S(e.target).closest('[' + self.attr_name() + ']').length > 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!(S(e.target).data('revealId')) &&
|
||||
(parent.length > 0 && (S(e.target).is('[' + self.attr_name() + '-content]') ||
|
||||
$.contains(parent.first()[0], e.target)))) {
|
||||
e.stopPropagation();
|
||||
return;
|
||||
}
|
||||
|
||||
self.close.call(self, S('[' + self.attr_name() + '-content]'));
|
||||
})
|
||||
.on('opened.fndtn.dropdown', '[' + self.attr_name() + '-content]', function () {
|
||||
self.settings.opened.call(this);
|
||||
})
|
||||
.on('closed.fndtn.dropdown', '[' + self.attr_name() + '-content]', function () {
|
||||
self.settings.closed.call(this);
|
||||
});
|
||||
|
||||
S(window)
|
||||
.off('.dropdown')
|
||||
.on('resize.fndtn.dropdown', self.throttle(function () {
|
||||
self.resize.call(self);
|
||||
}, 50));
|
||||
|
||||
this.resize();
|
||||
},
|
||||
|
||||
close : function (dropdown) {
|
||||
var self = this;
|
||||
dropdown.each(function () {
|
||||
var original_target = $('[' + self.attr_name() + '=' + dropdown[0].id + ']') || $('aria-controls=' + dropdown[0].id + ']');
|
||||
original_target.attr('aria-expanded', 'false');
|
||||
if (self.S(this).hasClass(self.settings.active_class)) {
|
||||
self.S(this)
|
||||
.css(Foundation.rtl ? 'right' : 'left', '-99999px')
|
||||
.attr('aria-hidden', 'true')
|
||||
.removeClass(self.settings.active_class)
|
||||
.prev('[' + self.attr_name() + ']')
|
||||
.removeClass(self.settings.active_class)
|
||||
.removeData('target');
|
||||
|
||||
self.S(this).trigger('closed').trigger('closed.fndtn.dropdown', [dropdown]);
|
||||
}
|
||||
});
|
||||
dropdown.removeClass('f-open-' + this.attr_name(true));
|
||||
},
|
||||
|
||||
closeall : function () {
|
||||
var self = this;
|
||||
$.each(self.S('.f-open-' + this.attr_name(true)), function () {
|
||||
self.close.call(self, self.S(this));
|
||||
});
|
||||
},
|
||||
|
||||
open : function (dropdown, target) {
|
||||
this
|
||||
.css(dropdown
|
||||
.addClass(this.settings.active_class), target);
|
||||
dropdown.prev('[' + this.attr_name() + ']').addClass(this.settings.active_class);
|
||||
dropdown.data('target', target.get(0)).trigger('opened').trigger('opened.fndtn.dropdown', [dropdown, target]);
|
||||
dropdown.attr('aria-hidden', 'false');
|
||||
target.attr('aria-expanded', 'true');
|
||||
dropdown.focus();
|
||||
dropdown.addClass('f-open-' + this.attr_name(true));
|
||||
},
|
||||
|
||||
data_attr : function () {
|
||||
if (this.namespace.length > 0) {
|
||||
return this.namespace + '-' + this.name;
|
||||
}
|
||||
|
||||
return this.name;
|
||||
},
|
||||
|
||||
toggle : function (target) {
|
||||
if (target.hasClass(this.settings.disabled_class)) {
|
||||
return;
|
||||
}
|
||||
var dropdown = this.S('#' + target.data(this.data_attr()));
|
||||
if (dropdown.length === 0) {
|
||||
// No dropdown found, not continuing
|
||||
return;
|
||||
}
|
||||
|
||||
this.close.call(this, this.S('[' + this.attr_name() + '-content]').not(dropdown));
|
||||
|
||||
if (dropdown.hasClass(this.settings.active_class)) {
|
||||
this.close.call(this, dropdown);
|
||||
if (dropdown.data('target') !== target.get(0)) {
|
||||
this.open.call(this, dropdown, target);
|
||||
}
|
||||
} else {
|
||||
this.open.call(this, dropdown, target);
|
||||
}
|
||||
},
|
||||
|
||||
resize : function () {
|
||||
var dropdown = this.S('[' + this.attr_name() + '-content].open');
|
||||
var target = $(dropdown.data("target"));
|
||||
|
||||
if (dropdown.length && target.length) {
|
||||
this.css(dropdown, target);
|
||||
}
|
||||
},
|
||||
|
||||
css : function (dropdown, target) {
|
||||
var left_offset = Math.max((target.width() - dropdown.width()) / 2, 8),
|
||||
settings = target.data(this.attr_name(true) + '-init') || this.settings;
|
||||
|
||||
this.clear_idx();
|
||||
|
||||
if (this.small()) {
|
||||
var p = this.dirs.bottom.call(dropdown, target, settings);
|
||||
|
||||
dropdown.attr('style', '').removeClass('drop-left drop-right drop-top').css({
|
||||
position : 'absolute',
|
||||
width : '95%',
|
||||
'max-width' : 'none',
|
||||
top : p.top
|
||||
});
|
||||
|
||||
dropdown.css(Foundation.rtl ? 'right' : 'left', left_offset);
|
||||
} else {
|
||||
|
||||
this.style(dropdown, target, settings);
|
||||
}
|
||||
|
||||
return dropdown;
|
||||
},
|
||||
|
||||
style : function (dropdown, target, settings) {
|
||||
var css = $.extend({position : 'absolute'},
|
||||
this.dirs[settings.align].call(dropdown, target, settings));
|
||||
|
||||
dropdown.attr('style', '').css(css);
|
||||
},
|
||||
|
||||
// return CSS property object
|
||||
// `this` is the dropdown
|
||||
dirs : {
|
||||
// Calculate target offset
|
||||
_base : function (t) {
|
||||
var o_p = this.offsetParent(),
|
||||
o = o_p.offset(),
|
||||
p = t.offset();
|
||||
|
||||
p.top -= o.top;
|
||||
p.left -= o.left;
|
||||
|
||||
//set some flags on the p object to pass along
|
||||
p.missRight = false;
|
||||
p.missTop = false;
|
||||
p.missLeft = false;
|
||||
p.leftRightFlag = false;
|
||||
|
||||
//lets see if the panel will be off the screen
|
||||
//get the actual width of the page and store it
|
||||
var actualBodyWidth;
|
||||
if (document.getElementsByClassName('row')[0]) {
|
||||
actualBodyWidth = document.getElementsByClassName('row')[0].clientWidth;
|
||||
} else {
|
||||
actualBodyWidth = window.outerWidth;
|
||||
}
|
||||
|
||||
var actualMarginWidth = (window.outerWidth - actualBodyWidth) / 2;
|
||||
var actualBoundary = actualBodyWidth;
|
||||
|
||||
if (!this.hasClass('mega')) {
|
||||
//miss top
|
||||
if (t.offset().top <= this.outerHeight()) {
|
||||
p.missTop = true;
|
||||
actualBoundary = window.outerWidth - actualMarginWidth;
|
||||
p.leftRightFlag = true;
|
||||
}
|
||||
|
||||
//miss right
|
||||
if (t.offset().left + this.outerWidth() > t.offset().left + actualMarginWidth && t.offset().left - actualMarginWidth > this.outerWidth()) {
|
||||
p.missRight = true;
|
||||
p.missLeft = false;
|
||||
}
|
||||
|
||||
//miss left
|
||||
if (t.offset().left - this.outerWidth() <= 0) {
|
||||
p.missLeft = true;
|
||||
p.missRight = false;
|
||||
}
|
||||
}
|
||||
|
||||
return p;
|
||||
},
|
||||
|
||||
top : function (t, s) {
|
||||
var self = Foundation.libs.dropdown,
|
||||
p = self.dirs._base.call(this, t);
|
||||
|
||||
this.addClass('drop-top');
|
||||
|
||||
if (p.missTop == true) {
|
||||
p.top = p.top + t.outerHeight() + this.outerHeight();
|
||||
this.removeClass('drop-top');
|
||||
}
|
||||
|
||||
if (p.missRight == true) {
|
||||
p.left = p.left - this.outerWidth() + t.outerWidth();
|
||||
}
|
||||
|
||||
if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) {
|
||||
self.adjust_pip(this, t, s, p);
|
||||
}
|
||||
|
||||
if (Foundation.rtl) {
|
||||
return {left : p.left - this.outerWidth() + t.outerWidth(),
|
||||
top : p.top - this.outerHeight()};
|
||||
}
|
||||
|
||||
return {left : p.left, top : p.top - this.outerHeight()};
|
||||
},
|
||||
|
||||
bottom : function (t, s) {
|
||||
var self = Foundation.libs.dropdown,
|
||||
p = self.dirs._base.call(this, t);
|
||||
|
||||
if (p.missRight == true) {
|
||||
p.left = p.left - this.outerWidth() + t.outerWidth();
|
||||
}
|
||||
|
||||
if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) {
|
||||
self.adjust_pip(this, t, s, p);
|
||||
}
|
||||
|
||||
if (self.rtl) {
|
||||
return {left : p.left - this.outerWidth() + t.outerWidth(), top : p.top + t.outerHeight()};
|
||||
}
|
||||
|
||||
return {left : p.left, top : p.top + t.outerHeight()};
|
||||
},
|
||||
|
||||
left : function (t, s) {
|
||||
var p = Foundation.libs.dropdown.dirs._base.call(this, t);
|
||||
|
||||
this.addClass('drop-left');
|
||||
|
||||
if (p.missLeft == true) {
|
||||
p.left = p.left + this.outerWidth();
|
||||
p.top = p.top + t.outerHeight();
|
||||
this.removeClass('drop-left');
|
||||
}
|
||||
|
||||
return {left : p.left - this.outerWidth(), top : p.top};
|
||||
},
|
||||
|
||||
right : function (t, s) {
|
||||
var p = Foundation.libs.dropdown.dirs._base.call(this, t);
|
||||
|
||||
this.addClass('drop-right');
|
||||
|
||||
if (p.missRight == true) {
|
||||
p.left = p.left - this.outerWidth();
|
||||
p.top = p.top + t.outerHeight();
|
||||
this.removeClass('drop-right');
|
||||
} else {
|
||||
p.triggeredRight = true;
|
||||
}
|
||||
|
||||
var self = Foundation.libs.dropdown;
|
||||
|
||||
if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) {
|
||||
self.adjust_pip(this, t, s, p);
|
||||
}
|
||||
|
||||
return {left : p.left + t.outerWidth(), top : p.top};
|
||||
}
|
||||
},
|
||||
|
||||
// Insert rule to style psuedo elements
|
||||
adjust_pip : function (dropdown, target, settings, position) {
|
||||
var sheet = Foundation.stylesheet,
|
||||
pip_offset_base = 8;
|
||||
|
||||
if (dropdown.hasClass(settings.mega_class)) {
|
||||
pip_offset_base = position.left + (target.outerWidth() / 2) - 8;
|
||||
} else if (this.small()) {
|
||||
pip_offset_base += position.left - 8;
|
||||
}
|
||||
|
||||
this.rule_idx = sheet.cssRules.length;
|
||||
|
||||
//default
|
||||
var sel_before = '.f-dropdown.open:before',
|
||||
sel_after = '.f-dropdown.open:after',
|
||||
css_before = 'left: ' + pip_offset_base + 'px;',
|
||||
css_after = 'left: ' + (pip_offset_base - 1) + 'px;';
|
||||
|
||||
if (position.missRight == true) {
|
||||
pip_offset_base = dropdown.outerWidth() - 23;
|
||||
sel_before = '.f-dropdown.open:before',
|
||||
sel_after = '.f-dropdown.open:after',
|
||||
css_before = 'left: ' + pip_offset_base + 'px;',
|
||||
css_after = 'left: ' + (pip_offset_base - 1) + 'px;';
|
||||
}
|
||||
|
||||
//just a case where right is fired, but its not missing right
|
||||
if (position.triggeredRight == true) {
|
||||
sel_before = '.f-dropdown.open:before',
|
||||
sel_after = '.f-dropdown.open:after',
|
||||
css_before = 'left:-12px;',
|
||||
css_after = 'left:-14px;';
|
||||
}
|
||||
|
||||
if (sheet.insertRule) {
|
||||
sheet.insertRule([sel_before, '{', css_before, '}'].join(' '), this.rule_idx);
|
||||
sheet.insertRule([sel_after, '{', css_after, '}'].join(' '), this.rule_idx + 1);
|
||||
} else {
|
||||
sheet.addRule(sel_before, css_before, this.rule_idx);
|
||||
sheet.addRule(sel_after, css_after, this.rule_idx + 1);
|
||||
}
|
||||
},
|
||||
|
||||
// Remove old dropdown rule index
|
||||
clear_idx : function () {
|
||||
var sheet = Foundation.stylesheet;
|
||||
|
||||
if (typeof this.rule_idx !== 'undefined') {
|
||||
sheet.deleteRule(this.rule_idx);
|
||||
sheet.deleteRule(this.rule_idx);
|
||||
delete this.rule_idx;
|
||||
}
|
||||
},
|
||||
|
||||
small : function () {
|
||||
return matchMedia(Foundation.media_queries.small).matches &&
|
||||
!matchMedia(Foundation.media_queries.medium).matches;
|
||||
},
|
||||
|
||||
off : function () {
|
||||
this.S(this.scope).off('.fndtn.dropdown');
|
||||
this.S('html, body').off('.fndtn.dropdown');
|
||||
this.S(window).off('.fndtn.dropdown');
|
||||
this.S('[data-dropdown-content]').off('.fndtn.dropdown');
|
||||
},
|
||||
|
||||
reflow : function () {}
|
||||
};
|
||||
}(jQuery, window, window.document));
|
||||
@@ -0,0 +1,77 @@
|
||||
;(function ($, window, document, undefined) {
|
||||
'use strict';
|
||||
|
||||
Foundation.libs.equalizer = {
|
||||
name : 'equalizer',
|
||||
|
||||
version : '5.5.1',
|
||||
|
||||
settings : {
|
||||
use_tallest : true,
|
||||
before_height_change : $.noop,
|
||||
after_height_change : $.noop,
|
||||
equalize_on_stack : false
|
||||
},
|
||||
|
||||
init : function (scope, method, options) {
|
||||
Foundation.inherit(this, 'image_loaded');
|
||||
this.bindings(method, options);
|
||||
this.reflow();
|
||||
},
|
||||
|
||||
events : function () {
|
||||
this.S(window).off('.equalizer').on('resize.fndtn.equalizer', function (e) {
|
||||
this.reflow();
|
||||
}.bind(this));
|
||||
},
|
||||
|
||||
equalize : function (equalizer) {
|
||||
var isStacked = false,
|
||||
vals = equalizer.find('[' + this.attr_name() + '-watch]:visible'),
|
||||
settings = equalizer.data(this.attr_name(true) + '-init');
|
||||
|
||||
if (vals.length === 0) {
|
||||
return;
|
||||
}
|
||||
var firstTopOffset = vals.first().offset().top;
|
||||
settings.before_height_change();
|
||||
equalizer.trigger('before-height-change').trigger('before-height-change.fndth.equalizer');
|
||||
vals.height('inherit');
|
||||
vals.each(function () {
|
||||
var el = $(this);
|
||||
if (el.offset().top !== firstTopOffset) {
|
||||
isStacked = true;
|
||||
}
|
||||
});
|
||||
|
||||
if (settings.equalize_on_stack === false) {
|
||||
if (isStacked) {
|
||||
return;
|
||||
}
|
||||
};
|
||||
|
||||
var heights = vals.map(function () { return $(this).outerHeight(false) }).get();
|
||||
|
||||
if (settings.use_tallest) {
|
||||
var max = Math.max.apply(null, heights);
|
||||
vals.css('height', max);
|
||||
} else {
|
||||
var min = Math.min.apply(null, heights);
|
||||
vals.css('height', min);
|
||||
}
|
||||
settings.after_height_change();
|
||||
equalizer.trigger('after-height-change').trigger('after-height-change.fndtn.equalizer');
|
||||
},
|
||||
|
||||
reflow : function () {
|
||||
var self = this;
|
||||
|
||||
this.S('[' + this.attr_name() + ']', this.scope).each(function () {
|
||||
var $eq_target = $(this);
|
||||
self.image_loaded(self.S('img', this), function () {
|
||||
self.equalize($eq_target)
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
})(jQuery, window, window.document);
|
||||
@@ -0,0 +1,354 @@
|
||||
;(function ($, window, document, undefined) {
|
||||
'use strict';
|
||||
|
||||
Foundation.libs.interchange = {
|
||||
name : 'interchange',
|
||||
|
||||
version : '5.5.1',
|
||||
|
||||
cache : {},
|
||||
|
||||
images_loaded : false,
|
||||
nodes_loaded : false,
|
||||
|
||||
settings : {
|
||||
load_attr : 'interchange',
|
||||
|
||||
named_queries : {
|
||||
'default' : 'only screen',
|
||||
'small' : Foundation.media_queries['small'],
|
||||
'small-only' : Foundation.media_queries['small-only'],
|
||||
'medium' : Foundation.media_queries['medium'],
|
||||
'medium-only' : Foundation.media_queries['medium-only'],
|
||||
'large' : Foundation.media_queries['large'],
|
||||
'large-only' : Foundation.media_queries['large-only'],
|
||||
'xlarge' : Foundation.media_queries['xlarge'],
|
||||
'xlarge-only' : Foundation.media_queries['xlarge-only'],
|
||||
'xxlarge' : Foundation.media_queries['xxlarge'],
|
||||
'landscape' : 'only screen and (orientation: landscape)',
|
||||
'portrait' : 'only screen and (orientation: portrait)',
|
||||
'retina' : 'only screen and (-webkit-min-device-pixel-ratio: 2),' +
|
||||
'only screen and (min--moz-device-pixel-ratio: 2),' +
|
||||
'only screen and (-o-min-device-pixel-ratio: 2/1),' +
|
||||
'only screen and (min-device-pixel-ratio: 2),' +
|
||||
'only screen and (min-resolution: 192dpi),' +
|
||||
'only screen and (min-resolution: 2dppx)'
|
||||
},
|
||||
|
||||
directives : {
|
||||
replace : function (el, path, trigger) {
|
||||
// The trigger argument, if called within the directive, fires
|
||||
// an event named after the directive on the element, passing
|
||||
// any parameters along to the event that you pass to trigger.
|
||||
//
|
||||
// ex. trigger(), trigger([a, b, c]), or trigger(a, b, c)
|
||||
//
|
||||
// This allows you to bind a callback like so:
|
||||
// $('#interchangeContainer').on('replace', function (e, a, b, c) {
|
||||
// console.log($(this).html(), a, b, c);
|
||||
// });
|
||||
|
||||
if (/IMG/.test(el[0].nodeName)) {
|
||||
var orig_path = el[0].src;
|
||||
|
||||
if (new RegExp(path, 'i').test(orig_path)) {
|
||||
return;
|
||||
}
|
||||
|
||||
el[0].src = path;
|
||||
|
||||
return trigger(el[0].src);
|
||||
}
|
||||
var last_path = el.data(this.data_attr + '-last-path'),
|
||||
self = this;
|
||||
|
||||
if (last_path == path) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (/\.(gif|jpg|jpeg|tiff|png)([?#].*)?/i.test(path)) {
|
||||
$(el).css('background-image', 'url(' + path + ')');
|
||||
el.data('interchange-last-path', path);
|
||||
return trigger(path);
|
||||
}
|
||||
|
||||
return $.get(path, function (response) {
|
||||
el.html(response);
|
||||
el.data(self.data_attr + '-last-path', path);
|
||||
trigger();
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
init : function (scope, method, options) {
|
||||
Foundation.inherit(this, 'throttle random_str');
|
||||
|
||||
this.data_attr = this.set_data_attr();
|
||||
$.extend(true, this.settings, method, options);
|
||||
this.bindings(method, options);
|
||||
this.load('images');
|
||||
this.load('nodes');
|
||||
},
|
||||
|
||||
get_media_hash : function () {
|
||||
var mediaHash = '';
|
||||
for (var queryName in this.settings.named_queries ) {
|
||||
mediaHash += matchMedia(this.settings.named_queries[queryName]).matches.toString();
|
||||
}
|
||||
return mediaHash;
|
||||
},
|
||||
|
||||
events : function () {
|
||||
var self = this, prevMediaHash;
|
||||
|
||||
$(window)
|
||||
.off('.interchange')
|
||||
.on('resize.fndtn.interchange', self.throttle(function () {
|
||||
var currMediaHash = self.get_media_hash();
|
||||
if (currMediaHash !== prevMediaHash) {
|
||||
self.resize();
|
||||
}
|
||||
prevMediaHash = currMediaHash;
|
||||
}, 50));
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
resize : function () {
|
||||
var cache = this.cache;
|
||||
|
||||
if (!this.images_loaded || !this.nodes_loaded) {
|
||||
setTimeout($.proxy(this.resize, this), 50);
|
||||
return;
|
||||
}
|
||||
|
||||
for (var uuid in cache) {
|
||||
if (cache.hasOwnProperty(uuid)) {
|
||||
var passed = this.results(uuid, cache[uuid]);
|
||||
|
||||
if (passed) {
|
||||
this.settings.directives[passed
|
||||
.scenario[1]].call(this, passed.el, passed.scenario[0], (function (passed) {
|
||||
if (arguments[0] instanceof Array) {
|
||||
var args = arguments[0];
|
||||
} else {
|
||||
var args = Array.prototype.slice.call(arguments, 0);
|
||||
}
|
||||
|
||||
return function() {
|
||||
passed.el.trigger(passed.scenario[1], args);
|
||||
}
|
||||
}(passed)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
results : function (uuid, scenarios) {
|
||||
var count = scenarios.length;
|
||||
|
||||
if (count > 0) {
|
||||
var el = this.S('[' + this.add_namespace('data-uuid') + '="' + uuid + '"]');
|
||||
|
||||
while (count--) {
|
||||
var mq, rule = scenarios[count][2];
|
||||
if (this.settings.named_queries.hasOwnProperty(rule)) {
|
||||
mq = matchMedia(this.settings.named_queries[rule]);
|
||||
} else {
|
||||
mq = matchMedia(rule);
|
||||
}
|
||||
if (mq.matches) {
|
||||
return {el : el, scenario : scenarios[count]};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
load : function (type, force_update) {
|
||||
if (typeof this['cached_' + type] === 'undefined' || force_update) {
|
||||
this['update_' + type]();
|
||||
}
|
||||
|
||||
return this['cached_' + type];
|
||||
},
|
||||
|
||||
update_images : function () {
|
||||
var images = this.S('img[' + this.data_attr + ']'),
|
||||
count = images.length,
|
||||
i = count,
|
||||
loaded_count = 0,
|
||||
data_attr = this.data_attr;
|
||||
|
||||
this.cache = {};
|
||||
this.cached_images = [];
|
||||
this.images_loaded = (count === 0);
|
||||
|
||||
while (i--) {
|
||||
loaded_count++;
|
||||
if (images[i]) {
|
||||
var str = images[i].getAttribute(data_attr) || '';
|
||||
|
||||
if (str.length > 0) {
|
||||
this.cached_images.push(images[i]);
|
||||
}
|
||||
}
|
||||
|
||||
if (loaded_count === count) {
|
||||
this.images_loaded = true;
|
||||
this.enhance('images');
|
||||
}
|
||||
}
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
update_nodes : function () {
|
||||
var nodes = this.S('[' + this.data_attr + ']').not('img'),
|
||||
count = nodes.length,
|
||||
i = count,
|
||||
loaded_count = 0,
|
||||
data_attr = this.data_attr;
|
||||
|
||||
this.cached_nodes = [];
|
||||
this.nodes_loaded = (count === 0);
|
||||
|
||||
while (i--) {
|
||||
loaded_count++;
|
||||
var str = nodes[i].getAttribute(data_attr) || '';
|
||||
|
||||
if (str.length > 0) {
|
||||
this.cached_nodes.push(nodes[i]);
|
||||
}
|
||||
|
||||
if (loaded_count === count) {
|
||||
this.nodes_loaded = true;
|
||||
this.enhance('nodes');
|
||||
}
|
||||
}
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
enhance : function (type) {
|
||||
var i = this['cached_' + type].length;
|
||||
|
||||
while (i--) {
|
||||
this.object($(this['cached_' + type][i]));
|
||||
}
|
||||
|
||||
return $(window).trigger('resize').trigger('resize.fndtn.interchange');
|
||||
},
|
||||
|
||||
convert_directive : function (directive) {
|
||||
|
||||
var trimmed = this.trim(directive);
|
||||
|
||||
if (trimmed.length > 0) {
|
||||
return trimmed;
|
||||
}
|
||||
|
||||
return 'replace';
|
||||
},
|
||||
|
||||
parse_scenario : function (scenario) {
|
||||
// This logic had to be made more complex since some users were using commas in the url path
|
||||
// So we cannot simply just split on a comma
|
||||
var directive_match = scenario[0].match(/(.+),\s*(\w+)\s*$/),
|
||||
media_query = scenario[1];
|
||||
|
||||
if (directive_match) {
|
||||
var path = directive_match[1],
|
||||
directive = directive_match[2];
|
||||
} else {
|
||||
var cached_split = scenario[0].split(/,\s*$/),
|
||||
path = cached_split[0],
|
||||
directive = '';
|
||||
}
|
||||
|
||||
return [this.trim(path), this.convert_directive(directive), this.trim(media_query)];
|
||||
},
|
||||
|
||||
object : function (el) {
|
||||
var raw_arr = this.parse_data_attr(el),
|
||||
scenarios = [],
|
||||
i = raw_arr.length;
|
||||
|
||||
if (i > 0) {
|
||||
while (i--) {
|
||||
var split = raw_arr[i].split(/\(([^\)]*?)(\))$/);
|
||||
|
||||
if (split.length > 1) {
|
||||
var params = this.parse_scenario(split);
|
||||
scenarios.push(params);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return this.store(el, scenarios);
|
||||
},
|
||||
|
||||
store : function (el, scenarios) {
|
||||
var uuid = this.random_str(),
|
||||
current_uuid = el.data(this.add_namespace('uuid', true));
|
||||
|
||||
if (this.cache[current_uuid]) {
|
||||
return this.cache[current_uuid];
|
||||
}
|
||||
|
||||
el.attr(this.add_namespace('data-uuid'), uuid);
|
||||
|
||||
return this.cache[uuid] = scenarios;
|
||||
},
|
||||
|
||||
trim : function (str) {
|
||||
|
||||
if (typeof str === 'string') {
|
||||
return $.trim(str);
|
||||
}
|
||||
|
||||
return str;
|
||||
},
|
||||
|
||||
set_data_attr : function (init) {
|
||||
if (init) {
|
||||
if (this.namespace.length > 0) {
|
||||
return this.namespace + '-' + this.settings.load_attr;
|
||||
}
|
||||
|
||||
return this.settings.load_attr;
|
||||
}
|
||||
|
||||
if (this.namespace.length > 0) {
|
||||
return 'data-' + this.namespace + '-' + this.settings.load_attr;
|
||||
}
|
||||
|
||||
return 'data-' + this.settings.load_attr;
|
||||
},
|
||||
|
||||
parse_data_attr : function (el) {
|
||||
var raw = el.attr(this.attr_name()).split(/\[(.*?)\]/),
|
||||
i = raw.length,
|
||||
output = [];
|
||||
|
||||
while (i--) {
|
||||
if (raw[i].replace(/[\W\d]+/, '').length > 4) {
|
||||
output.push(raw[i]);
|
||||
}
|
||||
}
|
||||
|
||||
return output;
|
||||
},
|
||||
|
||||
reflow : function () {
|
||||
this.load('images', true);
|
||||
this.load('nodes', true);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
}(jQuery, window, window.document));
|
||||
@@ -0,0 +1,932 @@
|
||||
;(function ($, window, document, undefined) {
|
||||
'use strict';
|
||||
|
||||
var Modernizr = Modernizr || false;
|
||||
|
||||
Foundation.libs.joyride = {
|
||||
name : 'joyride',
|
||||
|
||||
version : '5.5.1',
|
||||
|
||||
defaults : {
|
||||
expose : false, // turn on or off the expose feature
|
||||
modal : true, // Whether to cover page with modal during the tour
|
||||
keyboard : true, // enable left, right and esc keystrokes
|
||||
tip_location : 'bottom', // 'top' or 'bottom' in relation to parent
|
||||
nub_position : 'auto', // override on a per tooltip bases
|
||||
scroll_speed : 1500, // Page scrolling speed in milliseconds, 0 = no scroll animation
|
||||
scroll_animation : 'linear', // supports 'swing' and 'linear', extend with jQuery UI.
|
||||
timer : 0, // 0 = no timer , all other numbers = timer in milliseconds
|
||||
start_timer_on_click : true, // true or false - true requires clicking the first button start the timer
|
||||
start_offset : 0, // the index of the tooltip you want to start on (index of the li)
|
||||
next_button : true, // true or false to control whether a next button is used
|
||||
prev_button : true, // true or false to control whether a prev button is used
|
||||
tip_animation : 'fade', // 'pop' or 'fade' in each tip
|
||||
pause_after : [], // array of indexes where to pause the tour after
|
||||
exposed : [], // array of expose elements
|
||||
tip_animation_fade_speed : 300, // when tipAnimation = 'fade' this is speed in milliseconds for the transition
|
||||
cookie_monster : false, // true or false to control whether cookies are used
|
||||
cookie_name : 'joyride', // Name the cookie you'll use
|
||||
cookie_domain : false, // Will this cookie be attached to a domain, ie. '.notableapp.com'
|
||||
cookie_expires : 365, // set when you would like the cookie to expire.
|
||||
tip_container : 'body', // Where will the tip be attached
|
||||
abort_on_close : true, // When true, the close event will not fire any callback
|
||||
tip_location_patterns : {
|
||||
top : ['bottom'],
|
||||
bottom : [], // bottom should not need to be repositioned
|
||||
left : ['right', 'top', 'bottom'],
|
||||
right : ['left', 'top', 'bottom']
|
||||
},
|
||||
post_ride_callback : function () {}, // A method to call once the tour closes (canceled or complete)
|
||||
post_step_callback : function () {}, // A method to call after each step
|
||||
pre_step_callback : function () {}, // A method to call before each step
|
||||
pre_ride_callback : function () {}, // A method to call before the tour starts (passed index, tip, and cloned exposed element)
|
||||
post_expose_callback : function () {}, // A method to call after an element has been exposed
|
||||
template : { // HTML segments for tip layout
|
||||
link : '<a href="#close" class="joyride-close-tip">×</a>',
|
||||
timer : '<div class="joyride-timer-indicator-wrap"><span class="joyride-timer-indicator"></span></div>',
|
||||
tip : '<div class="joyride-tip-guide"><span class="joyride-nub"></span></div>',
|
||||
wrapper : '<div class="joyride-content-wrapper"></div>',
|
||||
button : '<a href="#" class="small button joyride-next-tip"></a>',
|
||||
prev_button : '<a href="#" class="small button joyride-prev-tip"></a>',
|
||||
modal : '<div class="joyride-modal-bg"></div>',
|
||||
expose : '<div class="joyride-expose-wrapper"></div>',
|
||||
expose_cover : '<div class="joyride-expose-cover"></div>'
|
||||
},
|
||||
expose_add_class : '' // One or more space-separated class names to be added to exposed element
|
||||
},
|
||||
|
||||
init : function (scope, method, options) {
|
||||
Foundation.inherit(this, 'throttle random_str');
|
||||
|
||||
this.settings = this.settings || $.extend({}, this.defaults, (options || method));
|
||||
|
||||
this.bindings(method, options)
|
||||
},
|
||||
|
||||
go_next : function () {
|
||||
if (this.settings.$li.next().length < 1) {
|
||||
this.end();
|
||||
} else if (this.settings.timer > 0) {
|
||||
clearTimeout(this.settings.automate);
|
||||
this.hide();
|
||||
this.show();
|
||||
this.startTimer();
|
||||
} else {
|
||||
this.hide();
|
||||
this.show();
|
||||
}
|
||||
},
|
||||
|
||||
go_prev : function () {
|
||||
if (this.settings.$li.prev().length < 1) {
|
||||
// Do nothing if there are no prev element
|
||||
} else if (this.settings.timer > 0) {
|
||||
clearTimeout(this.settings.automate);
|
||||
this.hide();
|
||||
this.show(null, true);
|
||||
this.startTimer();
|
||||
} else {
|
||||
this.hide();
|
||||
this.show(null, true);
|
||||
}
|
||||
},
|
||||
|
||||
events : function () {
|
||||
var self = this;
|
||||
|
||||
$(this.scope)
|
||||
.off('.joyride')
|
||||
.on('click.fndtn.joyride', '.joyride-next-tip, .joyride-modal-bg', function (e) {
|
||||
e.preventDefault();
|
||||
this.go_next()
|
||||
}.bind(this))
|
||||
.on('click.fndtn.joyride', '.joyride-prev-tip', function (e) {
|
||||
e.preventDefault();
|
||||
this.go_prev();
|
||||
}.bind(this))
|
||||
|
||||
.on('click.fndtn.joyride', '.joyride-close-tip', function (e) {
|
||||
e.preventDefault();
|
||||
this.end(this.settings.abort_on_close);
|
||||
}.bind(this))
|
||||
|
||||
.on('keyup.fndtn.joyride', function (e) {
|
||||
// Don't do anything if keystrokes are disabled
|
||||
// or if the joyride is not being shown
|
||||
if (!this.settings.keyboard || !this.settings.riding) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (e.which) {
|
||||
case 39: // right arrow
|
||||
e.preventDefault();
|
||||
this.go_next();
|
||||
break;
|
||||
case 37: // left arrow
|
||||
e.preventDefault();
|
||||
this.go_prev();
|
||||
break;
|
||||
case 27: // escape
|
||||
e.preventDefault();
|
||||
this.end(this.settings.abort_on_close);
|
||||
}
|
||||
}.bind(this));
|
||||
|
||||
$(window)
|
||||
.off('.joyride')
|
||||
.on('resize.fndtn.joyride', self.throttle(function () {
|
||||
if ($('[' + self.attr_name() + ']').length > 0 && self.settings.$next_tip && self.settings.riding) {
|
||||
if (self.settings.exposed.length > 0) {
|
||||
var $els = $(self.settings.exposed);
|
||||
|
||||
$els.each(function () {
|
||||
var $this = $(this);
|
||||
self.un_expose($this);
|
||||
self.expose($this);
|
||||
});
|
||||
}
|
||||
|
||||
if (self.is_phone()) {
|
||||
self.pos_phone();
|
||||
} else {
|
||||
self.pos_default(false);
|
||||
}
|
||||
}
|
||||
}, 100));
|
||||
},
|
||||
|
||||
start : function () {
|
||||
var self = this,
|
||||
$this = $('[' + this.attr_name() + ']', this.scope),
|
||||
integer_settings = ['timer', 'scrollSpeed', 'startOffset', 'tipAnimationFadeSpeed', 'cookieExpires'],
|
||||
int_settings_count = integer_settings.length;
|
||||
|
||||
if (!$this.length > 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!this.settings.init) {
|
||||
this.events();
|
||||
}
|
||||
|
||||
this.settings = $this.data(this.attr_name(true) + '-init');
|
||||
|
||||
// non configureable settings
|
||||
this.settings.$content_el = $this;
|
||||
this.settings.$body = $(this.settings.tip_container);
|
||||
this.settings.body_offset = $(this.settings.tip_container).position();
|
||||
this.settings.$tip_content = this.settings.$content_el.find('> li');
|
||||
this.settings.paused = false;
|
||||
this.settings.attempts = 0;
|
||||
this.settings.riding = true;
|
||||
|
||||
// can we create cookies?
|
||||
if (typeof $.cookie !== 'function') {
|
||||
this.settings.cookie_monster = false;
|
||||
}
|
||||
|
||||
// generate the tips and insert into dom.
|
||||
if (!this.settings.cookie_monster || this.settings.cookie_monster && !$.cookie(this.settings.cookie_name)) {
|
||||
this.settings.$tip_content.each(function (index) {
|
||||
var $this = $(this);
|
||||
this.settings = $.extend({}, self.defaults, self.data_options($this));
|
||||
|
||||
// Make sure that settings parsed from data_options are integers where necessary
|
||||
var i = int_settings_count;
|
||||
while (i--) {
|
||||
self.settings[integer_settings[i]] = parseInt(self.settings[integer_settings[i]], 10);
|
||||
}
|
||||
self.create({$li : $this, index : index});
|
||||
});
|
||||
|
||||
// show first tip
|
||||
if (!this.settings.start_timer_on_click && this.settings.timer > 0) {
|
||||
this.show('init');
|
||||
this.startTimer();
|
||||
} else {
|
||||
this.show('init');
|
||||
}
|
||||
|
||||
}
|
||||
},
|
||||
|
||||
resume : function () {
|
||||
this.set_li();
|
||||
this.show();
|
||||
},
|
||||
|
||||
tip_template : function (opts) {
|
||||
var $blank, content;
|
||||
|
||||
opts.tip_class = opts.tip_class || '';
|
||||
|
||||
$blank = $(this.settings.template.tip).addClass(opts.tip_class);
|
||||
content = $.trim($(opts.li).html()) +
|
||||
this.prev_button_text(opts.prev_button_text, opts.index) +
|
||||
this.button_text(opts.button_text) +
|
||||
this.settings.template.link +
|
||||
this.timer_instance(opts.index);
|
||||
|
||||
$blank.append($(this.settings.template.wrapper));
|
||||
$blank.first().attr(this.add_namespace('data-index'), opts.index);
|
||||
$('.joyride-content-wrapper', $blank).append(content);
|
||||
|
||||
return $blank[0];
|
||||
},
|
||||
|
||||
timer_instance : function (index) {
|
||||
var txt;
|
||||
|
||||
if ((index === 0 && this.settings.start_timer_on_click && this.settings.timer > 0) || this.settings.timer === 0) {
|
||||
txt = '';
|
||||
} else {
|
||||
txt = $(this.settings.template.timer)[0].outerHTML;
|
||||
}
|
||||
return txt;
|
||||
},
|
||||
|
||||
button_text : function (txt) {
|
||||
if (this.settings.tip_settings.next_button) {
|
||||
txt = $.trim(txt) || 'Next';
|
||||
txt = $(this.settings.template.button).append(txt)[0].outerHTML;
|
||||
} else {
|
||||
txt = '';
|
||||
}
|
||||
return txt;
|
||||
},
|
||||
|
||||
prev_button_text : function (txt, idx) {
|
||||
if (this.settings.tip_settings.prev_button) {
|
||||
txt = $.trim(txt) || 'Previous';
|
||||
|
||||
// Add the disabled class to the button if it's the first element
|
||||
if (idx == 0) {
|
||||
txt = $(this.settings.template.prev_button).append(txt).addClass('disabled')[0].outerHTML;
|
||||
} else {
|
||||
txt = $(this.settings.template.prev_button).append(txt)[0].outerHTML;
|
||||
}
|
||||
} else {
|
||||
txt = '';
|
||||
}
|
||||
return txt;
|
||||
},
|
||||
|
||||
create : function (opts) {
|
||||
this.settings.tip_settings = $.extend({}, this.settings, this.data_options(opts.$li));
|
||||
var buttonText = opts.$li.attr(this.add_namespace('data-button')) || opts.$li.attr(this.add_namespace('data-text')),
|
||||
prevButtonText = opts.$li.attr(this.add_namespace('data-button-prev')) || opts.$li.attr(this.add_namespace('data-prev-text')),
|
||||
tipClass = opts.$li.attr('class'),
|
||||
$tip_content = $(this.tip_template({
|
||||
tip_class : tipClass,
|
||||
index : opts.index,
|
||||
button_text : buttonText,
|
||||
prev_button_text : prevButtonText,
|
||||
li : opts.$li
|
||||
}));
|
||||
|
||||
$(this.settings.tip_container).append($tip_content);
|
||||
},
|
||||
|
||||
show : function (init, is_prev) {
|
||||
var $timer = null;
|
||||
|
||||
// are we paused?
|
||||
if (this.settings.$li === undefined || ($.inArray(this.settings.$li.index(), this.settings.pause_after) === -1)) {
|
||||
|
||||
// don't go to the next li if the tour was paused
|
||||
if (this.settings.paused) {
|
||||
this.settings.paused = false;
|
||||
} else {
|
||||
this.set_li(init, is_prev);
|
||||
}
|
||||
|
||||
this.settings.attempts = 0;
|
||||
|
||||
if (this.settings.$li.length && this.settings.$target.length > 0) {
|
||||
if (init) { //run when we first start
|
||||
this.settings.pre_ride_callback(this.settings.$li.index(), this.settings.$next_tip);
|
||||
if (this.settings.modal) {
|
||||
this.show_modal();
|
||||
}
|
||||
}
|
||||
|
||||
this.settings.pre_step_callback(this.settings.$li.index(), this.settings.$next_tip);
|
||||
|
||||
if (this.settings.modal && this.settings.expose) {
|
||||
this.expose();
|
||||
}
|
||||
|
||||
this.settings.tip_settings = $.extend({}, this.settings, this.data_options(this.settings.$li));
|
||||
|
||||
this.settings.timer = parseInt(this.settings.timer, 10);
|
||||
|
||||
this.settings.tip_settings.tip_location_pattern = this.settings.tip_location_patterns[this.settings.tip_settings.tip_location];
|
||||
|
||||
// scroll and hide bg if not modal
|
||||
if (!/body/i.test(this.settings.$target.selector)) {
|
||||
var joyridemodalbg = $('.joyride-modal-bg');
|
||||
if (/pop/i.test(this.settings.tipAnimation)) {
|
||||
joyridemodalbg.hide();
|
||||
} else {
|
||||
joyridemodalbg.fadeOut(this.settings.tipAnimationFadeSpeed);
|
||||
}
|
||||
this.scroll_to();
|
||||
}
|
||||
|
||||
if (this.is_phone()) {
|
||||
this.pos_phone(true);
|
||||
} else {
|
||||
this.pos_default(true);
|
||||
}
|
||||
|
||||
$timer = this.settings.$next_tip.find('.joyride-timer-indicator');
|
||||
|
||||
if (/pop/i.test(this.settings.tip_animation)) {
|
||||
|
||||
$timer.width(0);
|
||||
|
||||
if (this.settings.timer > 0) {
|
||||
|
||||
this.settings.$next_tip.show();
|
||||
|
||||
setTimeout(function () {
|
||||
$timer.animate({
|
||||
width : $timer.parent().width()
|
||||
}, this.settings.timer, 'linear');
|
||||
}.bind(this), this.settings.tip_animation_fade_speed);
|
||||
|
||||
} else {
|
||||
this.settings.$next_tip.show();
|
||||
|
||||
}
|
||||
|
||||
} else if (/fade/i.test(this.settings.tip_animation)) {
|
||||
|
||||
$timer.width(0);
|
||||
|
||||
if (this.settings.timer > 0) {
|
||||
|
||||
this.settings.$next_tip
|
||||
.fadeIn(this.settings.tip_animation_fade_speed)
|
||||
.show();
|
||||
|
||||
setTimeout(function () {
|
||||
$timer.animate({
|
||||
width : $timer.parent().width()
|
||||
}, this.settings.timer, 'linear');
|
||||
}.bind(this), this.settings.tip_animation_fade_speed);
|
||||
|
||||
} else {
|
||||
this.settings.$next_tip.fadeIn(this.settings.tip_animation_fade_speed);
|
||||
}
|
||||
}
|
||||
|
||||
this.settings.$current_tip = this.settings.$next_tip;
|
||||
|
||||
// skip non-existant targets
|
||||
} else if (this.settings.$li && this.settings.$target.length < 1) {
|
||||
|
||||
this.show(init, is_prev);
|
||||
|
||||
} else {
|
||||
|
||||
this.end();
|
||||
|
||||
}
|
||||
} else {
|
||||
|
||||
this.settings.paused = true;
|
||||
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
is_phone : function () {
|
||||
return matchMedia(Foundation.media_queries.small).matches &&
|
||||
!matchMedia(Foundation.media_queries.medium).matches;
|
||||
},
|
||||
|
||||
hide : function () {
|
||||
if (this.settings.modal && this.settings.expose) {
|
||||
this.un_expose();
|
||||
}
|
||||
|
||||
if (!this.settings.modal) {
|
||||
$('.joyride-modal-bg').hide();
|
||||
}
|
||||
|
||||
// Prevent scroll bouncing...wait to remove from layout
|
||||
this.settings.$current_tip.css('visibility', 'hidden');
|
||||
setTimeout($.proxy(function () {
|
||||
this.hide();
|
||||
this.css('visibility', 'visible');
|
||||
}, this.settings.$current_tip), 0);
|
||||
this.settings.post_step_callback(this.settings.$li.index(),
|
||||
this.settings.$current_tip);
|
||||
},
|
||||
|
||||
set_li : function (init, is_prev) {
|
||||
if (init) {
|
||||
this.settings.$li = this.settings.$tip_content.eq(this.settings.start_offset);
|
||||
this.set_next_tip();
|
||||
this.settings.$current_tip = this.settings.$next_tip;
|
||||
} else {
|
||||
if (is_prev) {
|
||||
this.settings.$li = this.settings.$li.prev();
|
||||
} else {
|
||||
this.settings.$li = this.settings.$li.next();
|
||||
}
|
||||
this.set_next_tip();
|
||||
}
|
||||
|
||||
this.set_target();
|
||||
},
|
||||
|
||||
set_next_tip : function () {
|
||||
this.settings.$next_tip = $('.joyride-tip-guide').eq(this.settings.$li.index());
|
||||
this.settings.$next_tip.data('closed', '');
|
||||
},
|
||||
|
||||
set_target : function () {
|
||||
var cl = this.settings.$li.attr(this.add_namespace('data-class')),
|
||||
id = this.settings.$li.attr(this.add_namespace('data-id')),
|
||||
$sel = function () {
|
||||
if (id) {
|
||||
return $(document.getElementById(id));
|
||||
} else if (cl) {
|
||||
return $('.' + cl).first();
|
||||
} else {
|
||||
return $('body');
|
||||
}
|
||||
};
|
||||
|
||||
this.settings.$target = $sel();
|
||||
},
|
||||
|
||||
scroll_to : function () {
|
||||
var window_half, tipOffset;
|
||||
|
||||
window_half = $(window).height() / 2;
|
||||
tipOffset = Math.ceil(this.settings.$target.offset().top - window_half + this.settings.$next_tip.outerHeight());
|
||||
|
||||
if (tipOffset != 0) {
|
||||
$('html, body').stop().animate({
|
||||
scrollTop : tipOffset
|
||||
}, this.settings.scroll_speed, 'swing');
|
||||
}
|
||||
},
|
||||
|
||||
paused : function () {
|
||||
return ($.inArray((this.settings.$li.index() + 1), this.settings.pause_after) === -1);
|
||||
},
|
||||
|
||||
restart : function () {
|
||||
this.hide();
|
||||
this.settings.$li = undefined;
|
||||
this.show('init');
|
||||
},
|
||||
|
||||
pos_default : function (init) {
|
||||
var $nub = this.settings.$next_tip.find('.joyride-nub'),
|
||||
nub_width = Math.ceil($nub.outerWidth() / 2),
|
||||
nub_height = Math.ceil($nub.outerHeight() / 2),
|
||||
toggle = init || false;
|
||||
|
||||
// tip must not be "display: none" to calculate position
|
||||
if (toggle) {
|
||||
this.settings.$next_tip.css('visibility', 'hidden');
|
||||
this.settings.$next_tip.show();
|
||||
}
|
||||
|
||||
if (!/body/i.test(this.settings.$target.selector)) {
|
||||
var topAdjustment = this.settings.tip_settings.tipAdjustmentY ? parseInt(this.settings.tip_settings.tipAdjustmentY) : 0,
|
||||
leftAdjustment = this.settings.tip_settings.tipAdjustmentX ? parseInt(this.settings.tip_settings.tipAdjustmentX) : 0;
|
||||
|
||||
if (this.bottom()) {
|
||||
if (this.rtl) {
|
||||
this.settings.$next_tip.css({
|
||||
top : (this.settings.$target.offset().top + nub_height + this.settings.$target.outerHeight() + topAdjustment),
|
||||
left : this.settings.$target.offset().left + this.settings.$target.outerWidth() - this.settings.$next_tip.outerWidth() + leftAdjustment});
|
||||
} else {
|
||||
this.settings.$next_tip.css({
|
||||
top : (this.settings.$target.offset().top + nub_height + this.settings.$target.outerHeight() + topAdjustment),
|
||||
left : this.settings.$target.offset().left + leftAdjustment});
|
||||
}
|
||||
|
||||
this.nub_position($nub, this.settings.tip_settings.nub_position, 'top');
|
||||
|
||||
} else if (this.top()) {
|
||||
if (this.rtl) {
|
||||
this.settings.$next_tip.css({
|
||||
top : (this.settings.$target.offset().top - this.settings.$next_tip.outerHeight() - nub_height + topAdjustment),
|
||||
left : this.settings.$target.offset().left + this.settings.$target.outerWidth() - this.settings.$next_tip.outerWidth()});
|
||||
} else {
|
||||
this.settings.$next_tip.css({
|
||||
top : (this.settings.$target.offset().top - this.settings.$next_tip.outerHeight() - nub_height + topAdjustment),
|
||||
left : this.settings.$target.offset().left + leftAdjustment});
|
||||
}
|
||||
|
||||
this.nub_position($nub, this.settings.tip_settings.nub_position, 'bottom');
|
||||
|
||||
} else if (this.right()) {
|
||||
|
||||
this.settings.$next_tip.css({
|
||||
top : this.settings.$target.offset().top + topAdjustment,
|
||||
left : (this.settings.$target.outerWidth() + this.settings.$target.offset().left + nub_width + leftAdjustment)});
|
||||
|
||||
this.nub_position($nub, this.settings.tip_settings.nub_position, 'left');
|
||||
|
||||
} else if (this.left()) {
|
||||
|
||||
this.settings.$next_tip.css({
|
||||
top : this.settings.$target.offset().top + topAdjustment,
|
||||
left : (this.settings.$target.offset().left - this.settings.$next_tip.outerWidth() - nub_width + leftAdjustment)});
|
||||
|
||||
this.nub_position($nub, this.settings.tip_settings.nub_position, 'right');
|
||||
|
||||
}
|
||||
|
||||
if (!this.visible(this.corners(this.settings.$next_tip)) && this.settings.attempts < this.settings.tip_settings.tip_location_pattern.length) {
|
||||
|
||||
$nub.removeClass('bottom')
|
||||
.removeClass('top')
|
||||
.removeClass('right')
|
||||
.removeClass('left');
|
||||
|
||||
this.settings.tip_settings.tip_location = this.settings.tip_settings.tip_location_pattern[this.settings.attempts];
|
||||
|
||||
this.settings.attempts++;
|
||||
|
||||
this.pos_default();
|
||||
|
||||
}
|
||||
|
||||
} else if (this.settings.$li.length) {
|
||||
|
||||
this.pos_modal($nub);
|
||||
|
||||
}
|
||||
|
||||
if (toggle) {
|
||||
this.settings.$next_tip.hide();
|
||||
this.settings.$next_tip.css('visibility', 'visible');
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
pos_phone : function (init) {
|
||||
var tip_height = this.settings.$next_tip.outerHeight(),
|
||||
tip_offset = this.settings.$next_tip.offset(),
|
||||
target_height = this.settings.$target.outerHeight(),
|
||||
$nub = $('.joyride-nub', this.settings.$next_tip),
|
||||
nub_height = Math.ceil($nub.outerHeight() / 2),
|
||||
toggle = init || false;
|
||||
|
||||
$nub.removeClass('bottom')
|
||||
.removeClass('top')
|
||||
.removeClass('right')
|
||||
.removeClass('left');
|
||||
|
||||
if (toggle) {
|
||||
this.settings.$next_tip.css('visibility', 'hidden');
|
||||
this.settings.$next_tip.show();
|
||||
}
|
||||
|
||||
if (!/body/i.test(this.settings.$target.selector)) {
|
||||
|
||||
if (this.top()) {
|
||||
|
||||
this.settings.$next_tip.offset({top : this.settings.$target.offset().top - tip_height - nub_height});
|
||||
$nub.addClass('bottom');
|
||||
|
||||
} else {
|
||||
|
||||
this.settings.$next_tip.offset({top : this.settings.$target.offset().top + target_height + nub_height});
|
||||
$nub.addClass('top');
|
||||
|
||||
}
|
||||
|
||||
} else if (this.settings.$li.length) {
|
||||
this.pos_modal($nub);
|
||||
}
|
||||
|
||||
if (toggle) {
|
||||
this.settings.$next_tip.hide();
|
||||
this.settings.$next_tip.css('visibility', 'visible');
|
||||
}
|
||||
},
|
||||
|
||||
pos_modal : function ($nub) {
|
||||
this.center();
|
||||
$nub.hide();
|
||||
|
||||
this.show_modal();
|
||||
},
|
||||
|
||||
show_modal : function () {
|
||||
if (!this.settings.$next_tip.data('closed')) {
|
||||
var joyridemodalbg = $('.joyride-modal-bg');
|
||||
if (joyridemodalbg.length < 1) {
|
||||
var joyridemodalbg = $(this.settings.template.modal);
|
||||
joyridemodalbg.appendTo('body');
|
||||
}
|
||||
|
||||
if (/pop/i.test(this.settings.tip_animation)) {
|
||||
joyridemodalbg.show();
|
||||
} else {
|
||||
joyridemodalbg.fadeIn(this.settings.tip_animation_fade_speed);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
expose : function () {
|
||||
var expose,
|
||||
exposeCover,
|
||||
el,
|
||||
origCSS,
|
||||
origClasses,
|
||||
randId = 'expose-' + this.random_str(6);
|
||||
|
||||
if (arguments.length > 0 && arguments[0] instanceof $) {
|
||||
el = arguments[0];
|
||||
} else if (this.settings.$target && !/body/i.test(this.settings.$target.selector)) {
|
||||
el = this.settings.$target;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (el.length < 1) {
|
||||
if (window.console) {
|
||||
console.error('element not valid', el);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
expose = $(this.settings.template.expose);
|
||||
this.settings.$body.append(expose);
|
||||
expose.css({
|
||||
top : el.offset().top,
|
||||
left : el.offset().left,
|
||||
width : el.outerWidth(true),
|
||||
height : el.outerHeight(true)
|
||||
});
|
||||
|
||||
exposeCover = $(this.settings.template.expose_cover);
|
||||
|
||||
origCSS = {
|
||||
zIndex : el.css('z-index'),
|
||||
position : el.css('position')
|
||||
};
|
||||
|
||||
origClasses = el.attr('class') == null ? '' : el.attr('class');
|
||||
|
||||
el.css('z-index', parseInt(expose.css('z-index')) + 1);
|
||||
|
||||
if (origCSS.position == 'static') {
|
||||
el.css('position', 'relative');
|
||||
}
|
||||
|
||||
el.data('expose-css', origCSS);
|
||||
el.data('orig-class', origClasses);
|
||||
el.attr('class', origClasses + ' ' + this.settings.expose_add_class);
|
||||
|
||||
exposeCover.css({
|
||||
top : el.offset().top,
|
||||
left : el.offset().left,
|
||||
width : el.outerWidth(true),
|
||||
height : el.outerHeight(true)
|
||||
});
|
||||
|
||||
if (this.settings.modal) {
|
||||
this.show_modal();
|
||||
}
|
||||
|
||||
this.settings.$body.append(exposeCover);
|
||||
expose.addClass(randId);
|
||||
exposeCover.addClass(randId);
|
||||
el.data('expose', randId);
|
||||
this.settings.post_expose_callback(this.settings.$li.index(), this.settings.$next_tip, el);
|
||||
this.add_exposed(el);
|
||||
},
|
||||
|
||||
un_expose : function () {
|
||||
var exposeId,
|
||||
el,
|
||||
expose,
|
||||
origCSS,
|
||||
origClasses,
|
||||
clearAll = false;
|
||||
|
||||
if (arguments.length > 0 && arguments[0] instanceof $) {
|
||||
el = arguments[0];
|
||||
} else if (this.settings.$target && !/body/i.test(this.settings.$target.selector)) {
|
||||
el = this.settings.$target;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (el.length < 1) {
|
||||
if (window.console) {
|
||||
console.error('element not valid', el);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
exposeId = el.data('expose');
|
||||
expose = $('.' + exposeId);
|
||||
|
||||
if (arguments.length > 1) {
|
||||
clearAll = arguments[1];
|
||||
}
|
||||
|
||||
if (clearAll === true) {
|
||||
$('.joyride-expose-wrapper,.joyride-expose-cover').remove();
|
||||
} else {
|
||||
expose.remove();
|
||||
}
|
||||
|
||||
origCSS = el.data('expose-css');
|
||||
|
||||
if (origCSS.zIndex == 'auto') {
|
||||
el.css('z-index', '');
|
||||
} else {
|
||||
el.css('z-index', origCSS.zIndex);
|
||||
}
|
||||
|
||||
if (origCSS.position != el.css('position')) {
|
||||
if (origCSS.position == 'static') {// this is default, no need to set it.
|
||||
el.css('position', '');
|
||||
} else {
|
||||
el.css('position', origCSS.position);
|
||||
}
|
||||
}
|
||||
|
||||
origClasses = el.data('orig-class');
|
||||
el.attr('class', origClasses);
|
||||
el.removeData('orig-classes');
|
||||
|
||||
el.removeData('expose');
|
||||
el.removeData('expose-z-index');
|
||||
this.remove_exposed(el);
|
||||
},
|
||||
|
||||
add_exposed : function (el) {
|
||||
this.settings.exposed = this.settings.exposed || [];
|
||||
if (el instanceof $ || typeof el === 'object') {
|
||||
this.settings.exposed.push(el[0]);
|
||||
} else if (typeof el == 'string') {
|
||||
this.settings.exposed.push(el);
|
||||
}
|
||||
},
|
||||
|
||||
remove_exposed : function (el) {
|
||||
var search, i;
|
||||
if (el instanceof $) {
|
||||
search = el[0]
|
||||
} else if (typeof el == 'string') {
|
||||
search = el;
|
||||
}
|
||||
|
||||
this.settings.exposed = this.settings.exposed || [];
|
||||
i = this.settings.exposed.length;
|
||||
|
||||
while (i--) {
|
||||
if (this.settings.exposed[i] == search) {
|
||||
this.settings.exposed.splice(i, 1);
|
||||
return;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
center : function () {
|
||||
var $w = $(window);
|
||||
|
||||
this.settings.$next_tip.css({
|
||||
top : ((($w.height() - this.settings.$next_tip.outerHeight()) / 2) + $w.scrollTop()),
|
||||
left : ((($w.width() - this.settings.$next_tip.outerWidth()) / 2) + $w.scrollLeft())
|
||||
});
|
||||
|
||||
return true;
|
||||
},
|
||||
|
||||
bottom : function () {
|
||||
return /bottom/i.test(this.settings.tip_settings.tip_location);
|
||||
},
|
||||
|
||||
top : function () {
|
||||
return /top/i.test(this.settings.tip_settings.tip_location);
|
||||
},
|
||||
|
||||
right : function () {
|
||||
return /right/i.test(this.settings.tip_settings.tip_location);
|
||||
},
|
||||
|
||||
left : function () {
|
||||
return /left/i.test(this.settings.tip_settings.tip_location);
|
||||
},
|
||||
|
||||
corners : function (el) {
|
||||
var w = $(window),
|
||||
window_half = w.height() / 2,
|
||||
//using this to calculate since scroll may not have finished yet.
|
||||
tipOffset = Math.ceil(this.settings.$target.offset().top - window_half + this.settings.$next_tip.outerHeight()),
|
||||
right = w.width() + w.scrollLeft(),
|
||||
offsetBottom = w.height() + tipOffset,
|
||||
bottom = w.height() + w.scrollTop(),
|
||||
top = w.scrollTop();
|
||||
|
||||
if (tipOffset < top) {
|
||||
if (tipOffset < 0) {
|
||||
top = 0;
|
||||
} else {
|
||||
top = tipOffset;
|
||||
}
|
||||
}
|
||||
|
||||
if (offsetBottom > bottom) {
|
||||
bottom = offsetBottom;
|
||||
}
|
||||
|
||||
return [
|
||||
el.offset().top < top,
|
||||
right < el.offset().left + el.outerWidth(),
|
||||
bottom < el.offset().top + el.outerHeight(),
|
||||
w.scrollLeft() > el.offset().left
|
||||
];
|
||||
},
|
||||
|
||||
visible : function (hidden_corners) {
|
||||
var i = hidden_corners.length;
|
||||
|
||||
while (i--) {
|
||||
if (hidden_corners[i]) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
},
|
||||
|
||||
nub_position : function (nub, pos, def) {
|
||||
if (pos === 'auto') {
|
||||
nub.addClass(def);
|
||||
} else {
|
||||
nub.addClass(pos);
|
||||
}
|
||||
},
|
||||
|
||||
startTimer : function () {
|
||||
if (this.settings.$li.length) {
|
||||
this.settings.automate = setTimeout(function () {
|
||||
this.hide();
|
||||
this.show();
|
||||
this.startTimer();
|
||||
}.bind(this), this.settings.timer);
|
||||
} else {
|
||||
clearTimeout(this.settings.automate);
|
||||
}
|
||||
},
|
||||
|
||||
end : function (abort) {
|
||||
if (this.settings.cookie_monster) {
|
||||
$.cookie(this.settings.cookie_name, 'ridden', {expires : this.settings.cookie_expires, domain : this.settings.cookie_domain});
|
||||
}
|
||||
|
||||
if (this.settings.timer > 0) {
|
||||
clearTimeout(this.settings.automate);
|
||||
}
|
||||
|
||||
if (this.settings.modal && this.settings.expose) {
|
||||
this.un_expose();
|
||||
}
|
||||
|
||||
// Unplug keystrokes listener
|
||||
$(this.scope).off('keyup.joyride')
|
||||
|
||||
this.settings.$next_tip.data('closed', true);
|
||||
this.settings.riding = false;
|
||||
|
||||
$('.joyride-modal-bg').hide();
|
||||
this.settings.$current_tip.hide();
|
||||
|
||||
if (typeof abort === 'undefined' || abort === false) {
|
||||
this.settings.post_step_callback(this.settings.$li.index(), this.settings.$current_tip);
|
||||
this.settings.post_ride_callback(this.settings.$li.index(), this.settings.$current_tip);
|
||||
}
|
||||
|
||||
$('.joyride-tip-guide').remove();
|
||||
},
|
||||
|
||||
off : function () {
|
||||
$(this.scope).off('.joyride');
|
||||
$(window).off('.joyride');
|
||||
$('.joyride-close-tip, .joyride-next-tip, .joyride-modal-bg').off('.joyride');
|
||||
$('.joyride-tip-guide, .joyride-modal-bg').remove();
|
||||
clearTimeout(this.settings.automate);
|
||||
this.settings = {};
|
||||
},
|
||||
|
||||
reflow : function () {}
|
||||
};
|
||||
}(jQuery, window, window.document));
|
||||
703
sites/all/themes/gui/materiobasetheme/bower_components/foundation/js/foundation/foundation.js
vendored
Normal file
703
sites/all/themes/gui/materiobasetheme/bower_components/foundation/js/foundation/foundation.js
vendored
Normal file
@@ -0,0 +1,703 @@
|
||||
/*
|
||||
* Foundation Responsive Library
|
||||
* http://foundation.zurb.com
|
||||
* Copyright 2014, ZURB
|
||||
* Free to use under the MIT license.
|
||||
* http://www.opensource.org/licenses/mit-license.php
|
||||
*/
|
||||
|
||||
(function ($, window, document, undefined) {
|
||||
'use strict';
|
||||
|
||||
var header_helpers = function (class_array) {
|
||||
var i = class_array.length;
|
||||
var head = $('head');
|
||||
|
||||
while (i--) {
|
||||
if (head.has('.' + class_array[i]).length === 0) {
|
||||
head.append('<meta class="' + class_array[i] + '" />');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
header_helpers([
|
||||
'foundation-mq-small',
|
||||
'foundation-mq-small-only',
|
||||
'foundation-mq-medium',
|
||||
'foundation-mq-medium-only',
|
||||
'foundation-mq-large',
|
||||
'foundation-mq-large-only',
|
||||
'foundation-mq-xlarge',
|
||||
'foundation-mq-xlarge-only',
|
||||
'foundation-mq-xxlarge',
|
||||
'foundation-data-attribute-namespace']);
|
||||
|
||||
// Enable FastClick if present
|
||||
|
||||
$(function () {
|
||||
if (typeof FastClick !== 'undefined') {
|
||||
// Don't attach to body if undefined
|
||||
if (typeof document.body !== 'undefined') {
|
||||
FastClick.attach(document.body);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// private Fast Selector wrapper,
|
||||
// returns jQuery object. Only use where
|
||||
// getElementById is not available.
|
||||
var S = function (selector, context) {
|
||||
if (typeof selector === 'string') {
|
||||
if (context) {
|
||||
var cont;
|
||||
if (context.jquery) {
|
||||
cont = context[0];
|
||||
if (!cont) {
|
||||
return context;
|
||||
}
|
||||
} else {
|
||||
cont = context;
|
||||
}
|
||||
return $(cont.querySelectorAll(selector));
|
||||
}
|
||||
|
||||
return $(document.querySelectorAll(selector));
|
||||
}
|
||||
|
||||
return $(selector, context);
|
||||
};
|
||||
|
||||
// Namespace functions.
|
||||
|
||||
var attr_name = function (init) {
|
||||
var arr = [];
|
||||
if (!init) {
|
||||
arr.push('data');
|
||||
}
|
||||
if (this.namespace.length > 0) {
|
||||
arr.push(this.namespace);
|
||||
}
|
||||
arr.push(this.name);
|
||||
|
||||
return arr.join('-');
|
||||
};
|
||||
|
||||
var add_namespace = function (str) {
|
||||
var parts = str.split('-'),
|
||||
i = parts.length,
|
||||
arr = [];
|
||||
|
||||
while (i--) {
|
||||
if (i !== 0) {
|
||||
arr.push(parts[i]);
|
||||
} else {
|
||||
if (this.namespace.length > 0) {
|
||||
arr.push(this.namespace, parts[i]);
|
||||
} else {
|
||||
arr.push(parts[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return arr.reverse().join('-');
|
||||
};
|
||||
|
||||
// Event binding and data-options updating.
|
||||
|
||||
var bindings = function (method, options) {
|
||||
var self = this,
|
||||
bind = function(){
|
||||
var $this = S(this),
|
||||
should_bind_events = !$this.data(self.attr_name(true) + '-init');
|
||||
$this.data(self.attr_name(true) + '-init', $.extend({}, self.settings, (options || method), self.data_options($this)));
|
||||
|
||||
if (should_bind_events) {
|
||||
self.events(this);
|
||||
}
|
||||
};
|
||||
|
||||
if (S(this.scope).is('[' + this.attr_name() +']')) {
|
||||
bind.call(this.scope);
|
||||
} else {
|
||||
S('[' + this.attr_name() +']', this.scope).each(bind);
|
||||
}
|
||||
// # Patch to fix #5043 to move this *after* the if/else clause in order for Backbone and similar frameworks to have improved control over event binding and data-options updating.
|
||||
if (typeof method === 'string') {
|
||||
return this[method].call(this, options);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
var single_image_loaded = function (image, callback) {
|
||||
function loaded () {
|
||||
callback(image[0]);
|
||||
}
|
||||
|
||||
function bindLoad () {
|
||||
this.one('load', loaded);
|
||||
|
||||
if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
|
||||
var src = this.attr( 'src' ),
|
||||
param = src.match( /\?/ ) ? '&' : '?';
|
||||
|
||||
param += 'random=' + (new Date()).getTime();
|
||||
this.attr('src', src + param);
|
||||
}
|
||||
}
|
||||
|
||||
if (!image.attr('src')) {
|
||||
loaded();
|
||||
return;
|
||||
}
|
||||
|
||||
if (image[0].complete || image[0].readyState === 4) {
|
||||
loaded();
|
||||
} else {
|
||||
bindLoad.call(image);
|
||||
}
|
||||
};
|
||||
|
||||
/*
|
||||
https://github.com/paulirish/matchMedia.js
|
||||
*/
|
||||
|
||||
window.matchMedia = window.matchMedia || (function ( doc ) {
|
||||
|
||||
'use strict';
|
||||
|
||||
var bool,
|
||||
docElem = doc.documentElement,
|
||||
refNode = docElem.firstElementChild || docElem.firstChild,
|
||||
// fakeBody required for <FF4 when executed in <head>
|
||||
fakeBody = doc.createElement( 'body' ),
|
||||
div = doc.createElement( 'div' );
|
||||
|
||||
div.id = 'mq-test-1';
|
||||
div.style.cssText = 'position:absolute;top:-100em';
|
||||
fakeBody.style.background = 'none';
|
||||
fakeBody.appendChild(div);
|
||||
|
||||
return function (q) {
|
||||
|
||||
div.innerHTML = '­<style media="' + q + '"> #mq-test-1 { width: 42px; }</style>';
|
||||
|
||||
docElem.insertBefore( fakeBody, refNode );
|
||||
bool = div.offsetWidth === 42;
|
||||
docElem.removeChild( fakeBody );
|
||||
|
||||
return {
|
||||
matches : bool,
|
||||
media : q
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
}( document ));
|
||||
|
||||
/*
|
||||
* jquery.requestAnimationFrame
|
||||
* https://github.com/gnarf37/jquery-requestAnimationFrame
|
||||
* Requires jQuery 1.8+
|
||||
*
|
||||
* Copyright (c) 2012 Corey Frang
|
||||
* Licensed under the MIT license.
|
||||
*/
|
||||
|
||||
(function(jQuery) {
|
||||
|
||||
|
||||
// requestAnimationFrame polyfill adapted from Erik Möller
|
||||
// fixes from Paul Irish and Tino Zijdel
|
||||
// http://paulirish.com/2011/requestanimationframe-for-smart-animating/
|
||||
// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating
|
||||
|
||||
var animating,
|
||||
lastTime = 0,
|
||||
vendors = ['webkit', 'moz'],
|
||||
requestAnimationFrame = window.requestAnimationFrame,
|
||||
cancelAnimationFrame = window.cancelAnimationFrame,
|
||||
jqueryFxAvailable = 'undefined' !== typeof jQuery.fx;
|
||||
|
||||
for (; lastTime < vendors.length && !requestAnimationFrame; lastTime++) {
|
||||
requestAnimationFrame = window[ vendors[lastTime] + 'RequestAnimationFrame' ];
|
||||
cancelAnimationFrame = cancelAnimationFrame ||
|
||||
window[ vendors[lastTime] + 'CancelAnimationFrame' ] ||
|
||||
window[ vendors[lastTime] + 'CancelRequestAnimationFrame' ];
|
||||
}
|
||||
|
||||
function raf() {
|
||||
if (animating) {
|
||||
requestAnimationFrame(raf);
|
||||
|
||||
if (jqueryFxAvailable) {
|
||||
jQuery.fx.tick();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (requestAnimationFrame) {
|
||||
// use rAF
|
||||
window.requestAnimationFrame = requestAnimationFrame;
|
||||
window.cancelAnimationFrame = cancelAnimationFrame;
|
||||
|
||||
if (jqueryFxAvailable) {
|
||||
jQuery.fx.timer = function (timer) {
|
||||
if (timer() && jQuery.timers.push(timer) && !animating) {
|
||||
animating = true;
|
||||
raf();
|
||||
}
|
||||
};
|
||||
|
||||
jQuery.fx.stop = function () {
|
||||
animating = false;
|
||||
};
|
||||
}
|
||||
} else {
|
||||
// polyfill
|
||||
window.requestAnimationFrame = function (callback) {
|
||||
var currTime = new Date().getTime(),
|
||||
timeToCall = Math.max(0, 16 - (currTime - lastTime)),
|
||||
id = window.setTimeout(function () {
|
||||
callback(currTime + timeToCall);
|
||||
}, timeToCall);
|
||||
lastTime = currTime + timeToCall;
|
||||
return id;
|
||||
};
|
||||
|
||||
window.cancelAnimationFrame = function (id) {
|
||||
clearTimeout(id);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
}( $ ));
|
||||
|
||||
function removeQuotes (string) {
|
||||
if (typeof string === 'string' || string instanceof String) {
|
||||
string = string.replace(/^['\\/"]+|(;\s?})+|['\\/"]+$/g, '');
|
||||
}
|
||||
|
||||
return string;
|
||||
}
|
||||
|
||||
window.Foundation = {
|
||||
name : 'Foundation',
|
||||
|
||||
version : '5.5.1',
|
||||
|
||||
media_queries : {
|
||||
'small' : S('.foundation-mq-small').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
|
||||
'small-only' : S('.foundation-mq-small-only').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
|
||||
'medium' : S('.foundation-mq-medium').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
|
||||
'medium-only' : S('.foundation-mq-medium-only').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
|
||||
'large' : S('.foundation-mq-large').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
|
||||
'large-only' : S('.foundation-mq-large-only').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
|
||||
'xlarge' : S('.foundation-mq-xlarge').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
|
||||
'xlarge-only' : S('.foundation-mq-xlarge-only').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
|
||||
'xxlarge' : S('.foundation-mq-xxlarge').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, '')
|
||||
},
|
||||
|
||||
stylesheet : $('<style></style>').appendTo('head')[0].sheet,
|
||||
|
||||
global : {
|
||||
namespace : undefined
|
||||
},
|
||||
|
||||
init : function (scope, libraries, method, options, response) {
|
||||
var args = [scope, method, options, response],
|
||||
responses = [];
|
||||
|
||||
// check RTL
|
||||
this.rtl = /rtl/i.test(S('html').attr('dir'));
|
||||
|
||||
// set foundation global scope
|
||||
this.scope = scope || this.scope;
|
||||
|
||||
this.set_namespace();
|
||||
|
||||
if (libraries && typeof libraries === 'string' && !/reflow/i.test(libraries)) {
|
||||
if (this.libs.hasOwnProperty(libraries)) {
|
||||
responses.push(this.init_lib(libraries, args));
|
||||
}
|
||||
} else {
|
||||
for (var lib in this.libs) {
|
||||
responses.push(this.init_lib(lib, libraries));
|
||||
}
|
||||
}
|
||||
|
||||
S(window).load(function () {
|
||||
S(window)
|
||||
.trigger('resize.fndtn.clearing')
|
||||
.trigger('resize.fndtn.dropdown')
|
||||
.trigger('resize.fndtn.equalizer')
|
||||
.trigger('resize.fndtn.interchange')
|
||||
.trigger('resize.fndtn.joyride')
|
||||
.trigger('resize.fndtn.magellan')
|
||||
.trigger('resize.fndtn.topbar')
|
||||
.trigger('resize.fndtn.slider');
|
||||
});
|
||||
|
||||
return scope;
|
||||
},
|
||||
|
||||
init_lib : function (lib, args) {
|
||||
if (this.libs.hasOwnProperty(lib)) {
|
||||
this.patch(this.libs[lib]);
|
||||
|
||||
if (args && args.hasOwnProperty(lib)) {
|
||||
if (typeof this.libs[lib].settings !== 'undefined') {
|
||||
$.extend(true, this.libs[lib].settings, args[lib]);
|
||||
} else if (typeof this.libs[lib].defaults !== 'undefined') {
|
||||
$.extend(true, this.libs[lib].defaults, args[lib]);
|
||||
}
|
||||
return this.libs[lib].init.apply(this.libs[lib], [this.scope, args[lib]]);
|
||||
}
|
||||
|
||||
args = args instanceof Array ? args : new Array(args);
|
||||
return this.libs[lib].init.apply(this.libs[lib], args);
|
||||
}
|
||||
|
||||
return function () {};
|
||||
},
|
||||
|
||||
patch : function (lib) {
|
||||
lib.scope = this.scope;
|
||||
lib.namespace = this.global.namespace;
|
||||
lib.rtl = this.rtl;
|
||||
lib['data_options'] = this.utils.data_options;
|
||||
lib['attr_name'] = attr_name;
|
||||
lib['add_namespace'] = add_namespace;
|
||||
lib['bindings'] = bindings;
|
||||
lib['S'] = this.utils.S;
|
||||
},
|
||||
|
||||
inherit : function (scope, methods) {
|
||||
var methods_arr = methods.split(' '),
|
||||
i = methods_arr.length;
|
||||
|
||||
while (i--) {
|
||||
if (this.utils.hasOwnProperty(methods_arr[i])) {
|
||||
scope[methods_arr[i]] = this.utils[methods_arr[i]];
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
set_namespace : function () {
|
||||
|
||||
// Description:
|
||||
// Don't bother reading the namespace out of the meta tag
|
||||
// if the namespace has been set globally in javascript
|
||||
//
|
||||
// Example:
|
||||
// Foundation.global.namespace = 'my-namespace';
|
||||
// or make it an empty string:
|
||||
// Foundation.global.namespace = '';
|
||||
//
|
||||
//
|
||||
|
||||
// If the namespace has not been set (is undefined), try to read it out of the meta element.
|
||||
// Otherwise use the globally defined namespace, even if it's empty ('')
|
||||
var namespace = ( this.global.namespace === undefined ) ? $('.foundation-data-attribute-namespace').css('font-family') : this.global.namespace;
|
||||
|
||||
// Finally, if the namsepace is either undefined or false, set it to an empty string.
|
||||
// Otherwise use the namespace value.
|
||||
this.global.namespace = ( namespace === undefined || /false/i.test(namespace) ) ? '' : namespace;
|
||||
},
|
||||
|
||||
libs : {},
|
||||
|
||||
// methods that can be inherited in libraries
|
||||
utils : {
|
||||
|
||||
// Description:
|
||||
// Fast Selector wrapper returns jQuery object. Only use where getElementById
|
||||
// is not available.
|
||||
//
|
||||
// Arguments:
|
||||
// Selector (String): CSS selector describing the element(s) to be
|
||||
// returned as a jQuery object.
|
||||
//
|
||||
// Scope (String): CSS selector describing the area to be searched. Default
|
||||
// is document.
|
||||
//
|
||||
// Returns:
|
||||
// Element (jQuery Object): jQuery object containing elements matching the
|
||||
// selector within the scope.
|
||||
S : S,
|
||||
|
||||
// Description:
|
||||
// Executes a function a max of once every n milliseconds
|
||||
//
|
||||
// Arguments:
|
||||
// Func (Function): Function to be throttled.
|
||||
//
|
||||
// Delay (Integer): Function execution threshold in milliseconds.
|
||||
//
|
||||
// Returns:
|
||||
// Lazy_function (Function): Function with throttling applied.
|
||||
throttle : function (func, delay) {
|
||||
var timer = null;
|
||||
|
||||
return function () {
|
||||
var context = this, args = arguments;
|
||||
|
||||
if (timer == null) {
|
||||
timer = setTimeout(function () {
|
||||
func.apply(context, args);
|
||||
timer = null;
|
||||
}, delay);
|
||||
}
|
||||
};
|
||||
},
|
||||
|
||||
// Description:
|
||||
// Executes a function when it stops being invoked for n seconds
|
||||
// Modified version of _.debounce() http://underscorejs.org
|
||||
//
|
||||
// Arguments:
|
||||
// Func (Function): Function to be debounced.
|
||||
//
|
||||
// Delay (Integer): Function execution threshold in milliseconds.
|
||||
//
|
||||
// Immediate (Bool): Whether the function should be called at the beginning
|
||||
// of the delay instead of the end. Default is false.
|
||||
//
|
||||
// Returns:
|
||||
// Lazy_function (Function): Function with debouncing applied.
|
||||
debounce : function (func, delay, immediate) {
|
||||
var timeout, result;
|
||||
return function () {
|
||||
var context = this, args = arguments;
|
||||
var later = function () {
|
||||
timeout = null;
|
||||
if (!immediate) {
|
||||
result = func.apply(context, args);
|
||||
}
|
||||
};
|
||||
var callNow = immediate && !timeout;
|
||||
clearTimeout(timeout);
|
||||
timeout = setTimeout(later, delay);
|
||||
if (callNow) {
|
||||
result = func.apply(context, args);
|
||||
}
|
||||
return result;
|
||||
};
|
||||
},
|
||||
|
||||
// Description:
|
||||
// Parses data-options attribute
|
||||
//
|
||||
// Arguments:
|
||||
// El (jQuery Object): Element to be parsed.
|
||||
//
|
||||
// Returns:
|
||||
// Options (Javascript Object): Contents of the element's data-options
|
||||
// attribute.
|
||||
data_options : function (el, data_attr_name) {
|
||||
data_attr_name = data_attr_name || 'options';
|
||||
var opts = {}, ii, p, opts_arr,
|
||||
data_options = function (el) {
|
||||
var namespace = Foundation.global.namespace;
|
||||
|
||||
if (namespace.length > 0) {
|
||||
return el.data(namespace + '-' + data_attr_name);
|
||||
}
|
||||
|
||||
return el.data(data_attr_name);
|
||||
};
|
||||
|
||||
var cached_options = data_options(el);
|
||||
|
||||
if (typeof cached_options === 'object') {
|
||||
return cached_options;
|
||||
}
|
||||
|
||||
opts_arr = (cached_options || ':').split(';');
|
||||
ii = opts_arr.length;
|
||||
|
||||
function isNumber (o) {
|
||||
return !isNaN (o - 0) && o !== null && o !== '' && o !== false && o !== true;
|
||||
}
|
||||
|
||||
function trim (str) {
|
||||
if (typeof str === 'string') {
|
||||
return $.trim(str);
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
while (ii--) {
|
||||
p = opts_arr[ii].split(':');
|
||||
p = [p[0], p.slice(1).join(':')];
|
||||
|
||||
if (/true/i.test(p[1])) {
|
||||
p[1] = true;
|
||||
}
|
||||
if (/false/i.test(p[1])) {
|
||||
p[1] = false;
|
||||
}
|
||||
if (isNumber(p[1])) {
|
||||
if (p[1].indexOf('.') === -1) {
|
||||
p[1] = parseInt(p[1], 10);
|
||||
} else {
|
||||
p[1] = parseFloat(p[1]);
|
||||
}
|
||||
}
|
||||
|
||||
if (p.length === 2 && p[0].length > 0) {
|
||||
opts[trim(p[0])] = trim(p[1]);
|
||||
}
|
||||
}
|
||||
|
||||
return opts;
|
||||
},
|
||||
|
||||
// Description:
|
||||
// Adds JS-recognizable media queries
|
||||
//
|
||||
// Arguments:
|
||||
// Media (String): Key string for the media query to be stored as in
|
||||
// Foundation.media_queries
|
||||
//
|
||||
// Class (String): Class name for the generated <meta> tag
|
||||
register_media : function (media, media_class) {
|
||||
if (Foundation.media_queries[media] === undefined) {
|
||||
$('head').append('<meta class="' + media_class + '"/>');
|
||||
Foundation.media_queries[media] = removeQuotes($('.' + media_class).css('font-family'));
|
||||
}
|
||||
},
|
||||
|
||||
// Description:
|
||||
// Add custom CSS within a JS-defined media query
|
||||
//
|
||||
// Arguments:
|
||||
// Rule (String): CSS rule to be appended to the document.
|
||||
//
|
||||
// Media (String): Optional media query string for the CSS rule to be
|
||||
// nested under.
|
||||
add_custom_rule : function (rule, media) {
|
||||
if (media === undefined && Foundation.stylesheet) {
|
||||
Foundation.stylesheet.insertRule(rule, Foundation.stylesheet.cssRules.length);
|
||||
} else {
|
||||
var query = Foundation.media_queries[media];
|
||||
|
||||
if (query !== undefined) {
|
||||
Foundation.stylesheet.insertRule('@media ' +
|
||||
Foundation.media_queries[media] + '{ ' + rule + ' }');
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// Description:
|
||||
// Performs a callback function when an image is fully loaded
|
||||
//
|
||||
// Arguments:
|
||||
// Image (jQuery Object): Image(s) to check if loaded.
|
||||
//
|
||||
// Callback (Function): Function to execute when image is fully loaded.
|
||||
image_loaded : function (images, callback) {
|
||||
var self = this,
|
||||
unloaded = images.length;
|
||||
|
||||
if (unloaded === 0) {
|
||||
callback(images);
|
||||
}
|
||||
|
||||
images.each(function () {
|
||||
single_image_loaded(self.S(this), function () {
|
||||
unloaded -= 1;
|
||||
if (unloaded === 0) {
|
||||
callback(images);
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
// Description:
|
||||
// Returns a random, alphanumeric string
|
||||
//
|
||||
// Arguments:
|
||||
// Length (Integer): Length of string to be generated. Defaults to random
|
||||
// integer.
|
||||
//
|
||||
// Returns:
|
||||
// Rand (String): Pseudo-random, alphanumeric string.
|
||||
random_str : function () {
|
||||
if (!this.fidx) {
|
||||
this.fidx = 0;
|
||||
}
|
||||
this.prefix = this.prefix || [(this.name || 'F'), (+new Date).toString(36)].join('-');
|
||||
|
||||
return this.prefix + (this.fidx++).toString(36);
|
||||
},
|
||||
|
||||
// Description:
|
||||
// Helper for window.matchMedia
|
||||
//
|
||||
// Arguments:
|
||||
// mq (String): Media query
|
||||
//
|
||||
// Returns:
|
||||
// (Boolean): Whether the media query passes or not
|
||||
match : function (mq) {
|
||||
return window.matchMedia(mq).matches;
|
||||
},
|
||||
|
||||
// Description:
|
||||
// Helpers for checking Foundation default media queries with JS
|
||||
//
|
||||
// Returns:
|
||||
// (Boolean): Whether the media query passes or not
|
||||
|
||||
is_small_up : function () {
|
||||
return this.match(Foundation.media_queries.small);
|
||||
},
|
||||
|
||||
is_medium_up : function () {
|
||||
return this.match(Foundation.media_queries.medium);
|
||||
},
|
||||
|
||||
is_large_up : function () {
|
||||
return this.match(Foundation.media_queries.large);
|
||||
},
|
||||
|
||||
is_xlarge_up : function () {
|
||||
return this.match(Foundation.media_queries.xlarge);
|
||||
},
|
||||
|
||||
is_xxlarge_up : function () {
|
||||
return this.match(Foundation.media_queries.xxlarge);
|
||||
},
|
||||
|
||||
is_small_only : function () {
|
||||
return !this.is_medium_up() && !this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up();
|
||||
},
|
||||
|
||||
is_medium_only : function () {
|
||||
return this.is_medium_up() && !this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up();
|
||||
},
|
||||
|
||||
is_large_only : function () {
|
||||
return this.is_medium_up() && this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up();
|
||||
},
|
||||
|
||||
is_xlarge_only : function () {
|
||||
return this.is_medium_up() && this.is_large_up() && this.is_xlarge_up() && !this.is_xxlarge_up();
|
||||
},
|
||||
|
||||
is_xxlarge_only : function () {
|
||||
return this.is_medium_up() && this.is_large_up() && this.is_xlarge_up() && this.is_xxlarge_up();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
$.fn.foundation = function () {
|
||||
var args = Array.prototype.slice.call(arguments, 0);
|
||||
|
||||
return this.each(function () {
|
||||
Foundation.init.apply(Foundation, [this].concat(args));
|
||||
return this;
|
||||
});
|
||||
};
|
||||
|
||||
}(jQuery, window, window.document));
|
||||
@@ -0,0 +1,203 @@
|
||||
;(function ($, window, document, undefined) {
|
||||
'use strict';
|
||||
|
||||
Foundation.libs['magellan-expedition'] = {
|
||||
name : 'magellan-expedition',
|
||||
|
||||
version : '5.5.1',
|
||||
|
||||
settings : {
|
||||
active_class : 'active',
|
||||
threshold : 0, // pixels from the top of the expedition for it to become fixes
|
||||
destination_threshold : 20, // pixels from the top of destination for it to be considered active
|
||||
throttle_delay : 30, // calculation throttling to increase framerate
|
||||
fixed_top : 0, // top distance in pixels assigend to the fixed element on scroll
|
||||
offset_by_height : true, // whether to offset the destination by the expedition height. Usually you want this to be true, unless your expedition is on the side.
|
||||
duration : 700, // animation duration time
|
||||
easing : 'swing' // animation easing
|
||||
},
|
||||
|
||||
init : function (scope, method, options) {
|
||||
Foundation.inherit(this, 'throttle');
|
||||
this.bindings(method, options);
|
||||
},
|
||||
|
||||
events : function () {
|
||||
var self = this,
|
||||
S = self.S,
|
||||
settings = self.settings;
|
||||
|
||||
// initialize expedition offset
|
||||
self.set_expedition_position();
|
||||
|
||||
S(self.scope)
|
||||
.off('.magellan')
|
||||
.on('click.fndtn.magellan', '[' + self.add_namespace('data-magellan-arrival') + '] a[href^="#"]', function (e) {
|
||||
e.preventDefault();
|
||||
var expedition = $(this).closest('[' + self.attr_name() + ']'),
|
||||
settings = expedition.data('magellan-expedition-init'),
|
||||
hash = this.hash.split('#').join(''),
|
||||
target = $('a[name="' + hash + '"]');
|
||||
|
||||
if (target.length === 0) {
|
||||
target = $('#' + hash);
|
||||
|
||||
}
|
||||
|
||||
// Account for expedition height if fixed position
|
||||
var scroll_top = target.offset().top - settings.destination_threshold + 1;
|
||||
if (settings.offset_by_height) {
|
||||
scroll_top = scroll_top - expedition.outerHeight();
|
||||
}
|
||||
|
||||
$('html, body').stop().animate({
|
||||
'scrollTop' : scroll_top
|
||||
}, settings.duration, settings.easing, function () {
|
||||
if (history.pushState) {
|
||||
history.pushState(null, null, '#' + hash);
|
||||
} else {
|
||||
location.hash = '#' + hash;
|
||||
}
|
||||
});
|
||||
})
|
||||
.on('scroll.fndtn.magellan', self.throttle(this.check_for_arrivals.bind(this), settings.throttle_delay));
|
||||
|
||||
$(window)
|
||||
.on('resize.fndtn.magellan', self.throttle(this.set_expedition_position.bind(this), settings.throttle_delay));
|
||||
},
|
||||
|
||||
check_for_arrivals : function () {
|
||||
var self = this;
|
||||
self.update_arrivals();
|
||||
self.update_expedition_positions();
|
||||
},
|
||||
|
||||
set_expedition_position : function () {
|
||||
var self = this;
|
||||
$('[' + this.attr_name() + '=fixed]', self.scope).each(function (idx, el) {
|
||||
var expedition = $(this),
|
||||
settings = expedition.data('magellan-expedition-init'),
|
||||
styles = expedition.attr('styles'), // save styles
|
||||
top_offset, fixed_top;
|
||||
|
||||
expedition.attr('style', '');
|
||||
top_offset = expedition.offset().top + settings.threshold;
|
||||
|
||||
//set fixed-top by attribute
|
||||
fixed_top = parseInt(expedition.data('magellan-fixed-top'));
|
||||
if (!isNaN(fixed_top)) {
|
||||
self.settings.fixed_top = fixed_top;
|
||||
}
|
||||
|
||||
expedition.data(self.data_attr('magellan-top-offset'), top_offset);
|
||||
expedition.attr('style', styles);
|
||||
});
|
||||
},
|
||||
|
||||
update_expedition_positions : function () {
|
||||
var self = this,
|
||||
window_top_offset = $(window).scrollTop();
|
||||
|
||||
$('[' + this.attr_name() + '=fixed]', self.scope).each(function () {
|
||||
var expedition = $(this),
|
||||
settings = expedition.data('magellan-expedition-init'),
|
||||
styles = expedition.attr('style'), // save styles
|
||||
top_offset = expedition.data('magellan-top-offset');
|
||||
|
||||
//scroll to the top distance
|
||||
if (window_top_offset + self.settings.fixed_top >= top_offset) {
|
||||
// Placeholder allows height calculations to be consistent even when
|
||||
// appearing to switch between fixed/non-fixed placement
|
||||
var placeholder = expedition.prev('[' + self.add_namespace('data-magellan-expedition-clone') + ']');
|
||||
if (placeholder.length === 0) {
|
||||
placeholder = expedition.clone();
|
||||
placeholder.removeAttr(self.attr_name());
|
||||
placeholder.attr(self.add_namespace('data-magellan-expedition-clone'), '');
|
||||
expedition.before(placeholder);
|
||||
}
|
||||
expedition.css({position :'fixed', top : settings.fixed_top}).addClass('fixed');
|
||||
} else {
|
||||
expedition.prev('[' + self.add_namespace('data-magellan-expedition-clone') + ']').remove();
|
||||
expedition.attr('style', styles).css('position', '').css('top', '').removeClass('fixed');
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
update_arrivals : function () {
|
||||
var self = this,
|
||||
window_top_offset = $(window).scrollTop();
|
||||
|
||||
$('[' + this.attr_name() + ']', self.scope).each(function () {
|
||||
var expedition = $(this),
|
||||
settings = expedition.data(self.attr_name(true) + '-init'),
|
||||
offsets = self.offsets(expedition, window_top_offset),
|
||||
arrivals = expedition.find('[' + self.add_namespace('data-magellan-arrival') + ']'),
|
||||
active_item = false;
|
||||
offsets.each(function (idx, item) {
|
||||
if (item.viewport_offset >= item.top_offset) {
|
||||
var arrivals = expedition.find('[' + self.add_namespace('data-magellan-arrival') + ']');
|
||||
arrivals.not(item.arrival).removeClass(settings.active_class);
|
||||
item.arrival.addClass(settings.active_class);
|
||||
active_item = true;
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
if (!active_item) {
|
||||
arrivals.removeClass(settings.active_class);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
offsets : function (expedition, window_offset) {
|
||||
var self = this,
|
||||
settings = expedition.data(self.attr_name(true) + '-init'),
|
||||
viewport_offset = window_offset;
|
||||
|
||||
return expedition.find('[' + self.add_namespace('data-magellan-arrival') + ']').map(function (idx, el) {
|
||||
var name = $(this).data(self.data_attr('magellan-arrival')),
|
||||
dest = $('[' + self.add_namespace('data-magellan-destination') + '=' + name + ']');
|
||||
if (dest.length > 0) {
|
||||
var top_offset = dest.offset().top - settings.destination_threshold;
|
||||
if (settings.offset_by_height) {
|
||||
top_offset = top_offset - expedition.outerHeight();
|
||||
}
|
||||
top_offset = Math.floor(top_offset);
|
||||
return {
|
||||
destination : dest,
|
||||
arrival : $(this),
|
||||
top_offset : top_offset,
|
||||
viewport_offset : viewport_offset
|
||||
}
|
||||
}
|
||||
}).sort(function (a, b) {
|
||||
if (a.top_offset < b.top_offset) {
|
||||
return -1;
|
||||
}
|
||||
if (a.top_offset > b.top_offset) {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
});
|
||||
},
|
||||
|
||||
data_attr : function (str) {
|
||||
if (this.namespace.length > 0) {
|
||||
return this.namespace + '-' + str;
|
||||
}
|
||||
|
||||
return str;
|
||||
},
|
||||
|
||||
off : function () {
|
||||
this.S(this.scope).off('.magellan');
|
||||
this.S(window).off('.magellan');
|
||||
},
|
||||
|
||||
reflow : function () {
|
||||
var self = this;
|
||||
// remove placeholder expeditions used for height calculation purposes
|
||||
$('[' + self.add_namespace('data-magellan-expedition-clone') + ']', self.scope).remove();
|
||||
}
|
||||
};
|
||||
}(jQuery, window, window.document));
|
||||
@@ -0,0 +1,152 @@
|
||||
;(function ($, window, document, undefined) {
|
||||
'use strict';
|
||||
|
||||
Foundation.libs.offcanvas = {
|
||||
name : 'offcanvas',
|
||||
|
||||
version : '5.5.1',
|
||||
|
||||
settings : {
|
||||
open_method : 'move',
|
||||
close_on_click : false
|
||||
},
|
||||
|
||||
init : function (scope, method, options) {
|
||||
this.bindings(method, options);
|
||||
},
|
||||
|
||||
events : function () {
|
||||
var self = this,
|
||||
S = self.S,
|
||||
move_class = '',
|
||||
right_postfix = '',
|
||||
left_postfix = '';
|
||||
|
||||
if (this.settings.open_method === 'move') {
|
||||
move_class = 'move-';
|
||||
right_postfix = 'right';
|
||||
left_postfix = 'left';
|
||||
} else if (this.settings.open_method === 'overlap_single') {
|
||||
move_class = 'offcanvas-overlap-';
|
||||
right_postfix = 'right';
|
||||
left_postfix = 'left';
|
||||
} else if (this.settings.open_method === 'overlap') {
|
||||
move_class = 'offcanvas-overlap';
|
||||
}
|
||||
|
||||
S(this.scope).off('.offcanvas')
|
||||
.on('click.fndtn.offcanvas', '.left-off-canvas-toggle', function (e) {
|
||||
self.click_toggle_class(e, move_class + right_postfix);
|
||||
if (self.settings.open_method !== 'overlap') {
|
||||
S('.left-submenu').removeClass(move_class + right_postfix);
|
||||
}
|
||||
$('.left-off-canvas-toggle').attr('aria-expanded', 'true');
|
||||
})
|
||||
.on('click.fndtn.offcanvas', '.left-off-canvas-menu a', function (e) {
|
||||
var settings = self.get_settings(e);
|
||||
var parent = S(this).parent();
|
||||
|
||||
if (settings.close_on_click && !parent.hasClass('has-submenu') && !parent.hasClass('back')) {
|
||||
self.hide.call(self, move_class + right_postfix, self.get_wrapper(e));
|
||||
parent.parent().removeClass(move_class + right_postfix);
|
||||
} else if (S(this).parent().hasClass('has-submenu')) {
|
||||
e.preventDefault();
|
||||
S(this).siblings('.left-submenu').toggleClass(move_class + right_postfix);
|
||||
} else if (parent.hasClass('back')) {
|
||||
e.preventDefault();
|
||||
parent.parent().removeClass(move_class + right_postfix);
|
||||
}
|
||||
$('.left-off-canvas-toggle').attr('aria-expanded', 'true');
|
||||
})
|
||||
.on('click.fndtn.offcanvas', '.right-off-canvas-toggle', function (e) {
|
||||
self.click_toggle_class(e, move_class + left_postfix);
|
||||
if (self.settings.open_method !== 'overlap') {
|
||||
S('.right-submenu').removeClass(move_class + left_postfix);
|
||||
}
|
||||
$('.right-off-canvas-toggle').attr('aria-expanded', 'true');
|
||||
})
|
||||
.on('click.fndtn.offcanvas', '.right-off-canvas-menu a', function (e) {
|
||||
var settings = self.get_settings(e);
|
||||
var parent = S(this).parent();
|
||||
|
||||
if (settings.close_on_click && !parent.hasClass('has-submenu') && !parent.hasClass('back')) {
|
||||
self.hide.call(self, move_class + left_postfix, self.get_wrapper(e));
|
||||
parent.parent().removeClass(move_class + left_postfix);
|
||||
} else if (S(this).parent().hasClass('has-submenu')) {
|
||||
e.preventDefault();
|
||||
S(this).siblings('.right-submenu').toggleClass(move_class + left_postfix);
|
||||
} else if (parent.hasClass('back')) {
|
||||
e.preventDefault();
|
||||
parent.parent().removeClass(move_class + left_postfix);
|
||||
}
|
||||
$('.right-off-canvas-toggle').attr('aria-expanded', 'true');
|
||||
})
|
||||
.on('click.fndtn.offcanvas', '.exit-off-canvas', function (e) {
|
||||
self.click_remove_class(e, move_class + left_postfix);
|
||||
S('.right-submenu').removeClass(move_class + left_postfix);
|
||||
if (right_postfix) {
|
||||
self.click_remove_class(e, move_class + right_postfix);
|
||||
S('.left-submenu').removeClass(move_class + left_postfix);
|
||||
}
|
||||
$('.right-off-canvas-toggle').attr('aria-expanded', 'true');
|
||||
})
|
||||
.on('click.fndtn.offcanvas', '.exit-off-canvas', function (e) {
|
||||
self.click_remove_class(e, move_class + left_postfix);
|
||||
$('.left-off-canvas-toggle').attr('aria-expanded', 'false');
|
||||
if (right_postfix) {
|
||||
self.click_remove_class(e, move_class + right_postfix);
|
||||
$('.right-off-canvas-toggle').attr('aria-expanded', 'false');
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
toggle : function (class_name, $off_canvas) {
|
||||
$off_canvas = $off_canvas || this.get_wrapper();
|
||||
if ($off_canvas.is('.' + class_name)) {
|
||||
this.hide(class_name, $off_canvas);
|
||||
} else {
|
||||
this.show(class_name, $off_canvas);
|
||||
}
|
||||
},
|
||||
|
||||
show : function (class_name, $off_canvas) {
|
||||
$off_canvas = $off_canvas || this.get_wrapper();
|
||||
$off_canvas.trigger('open').trigger('open.fndtn.offcanvas');
|
||||
$off_canvas.addClass(class_name);
|
||||
},
|
||||
|
||||
hide : function (class_name, $off_canvas) {
|
||||
$off_canvas = $off_canvas || this.get_wrapper();
|
||||
$off_canvas.trigger('close').trigger('close.fndtn.offcanvas');
|
||||
$off_canvas.removeClass(class_name);
|
||||
},
|
||||
|
||||
click_toggle_class : function (e, class_name) {
|
||||
e.preventDefault();
|
||||
var $off_canvas = this.get_wrapper(e);
|
||||
this.toggle(class_name, $off_canvas);
|
||||
},
|
||||
|
||||
click_remove_class : function (e, class_name) {
|
||||
e.preventDefault();
|
||||
var $off_canvas = this.get_wrapper(e);
|
||||
this.hide(class_name, $off_canvas);
|
||||
},
|
||||
|
||||
get_settings : function (e) {
|
||||
var offcanvas = this.S(e.target).closest('[' + this.attr_name() + ']');
|
||||
return offcanvas.data(this.attr_name(true) + '-init') || this.settings;
|
||||
},
|
||||
|
||||
get_wrapper : function (e) {
|
||||
var $off_canvas = this.S(e ? e.target : this.scope).closest('.off-canvas-wrap');
|
||||
|
||||
if ($off_canvas.length === 0) {
|
||||
$off_canvas = this.S('.off-canvas-wrap');
|
||||
}
|
||||
return $off_canvas;
|
||||
},
|
||||
|
||||
reflow : function () {}
|
||||
};
|
||||
}(jQuery, window, window.document));
|
||||
476
sites/all/themes/gui/materiobasetheme/bower_components/foundation/js/foundation/foundation.orbit.js
vendored
Normal file
476
sites/all/themes/gui/materiobasetheme/bower_components/foundation/js/foundation/foundation.orbit.js
vendored
Normal file
@@ -0,0 +1,476 @@
|
||||
;(function ($, window, document, undefined) {
|
||||
'use strict';
|
||||
|
||||
var noop = function () {};
|
||||
|
||||
var Orbit = function (el, settings) {
|
||||
// Don't reinitialize plugin
|
||||
if (el.hasClass(settings.slides_container_class)) {
|
||||
return this;
|
||||
}
|
||||
|
||||
var self = this,
|
||||
container,
|
||||
slides_container = el,
|
||||
number_container,
|
||||
bullets_container,
|
||||
timer_container,
|
||||
idx = 0,
|
||||
animate,
|
||||
timer,
|
||||
locked = false,
|
||||
adjust_height_after = false;
|
||||
|
||||
self.slides = function () {
|
||||
return slides_container.children(settings.slide_selector);
|
||||
};
|
||||
|
||||
self.slides().first().addClass(settings.active_slide_class);
|
||||
|
||||
self.update_slide_number = function (index) {
|
||||
if (settings.slide_number) {
|
||||
number_container.find('span:first').text(parseInt(index) + 1);
|
||||
number_container.find('span:last').text(self.slides().length);
|
||||
}
|
||||
if (settings.bullets) {
|
||||
bullets_container.children().removeClass(settings.bullets_active_class);
|
||||
$(bullets_container.children().get(index)).addClass(settings.bullets_active_class);
|
||||
}
|
||||
};
|
||||
|
||||
self.update_active_link = function (index) {
|
||||
var link = $('[data-orbit-link="' + self.slides().eq(index).attr('data-orbit-slide') + '"]');
|
||||
link.siblings().removeClass(settings.bullets_active_class);
|
||||
link.addClass(settings.bullets_active_class);
|
||||
};
|
||||
|
||||
self.build_markup = function () {
|
||||
slides_container.wrap('<div class="' + settings.container_class + '"></div>');
|
||||
container = slides_container.parent();
|
||||
slides_container.addClass(settings.slides_container_class);
|
||||
|
||||
if (settings.stack_on_small) {
|
||||
container.addClass(settings.stack_on_small_class);
|
||||
}
|
||||
|
||||
if (settings.navigation_arrows) {
|
||||
container.append($('<a href="#"><span></span></a>').addClass(settings.prev_class));
|
||||
container.append($('<a href="#"><span></span></a>').addClass(settings.next_class));
|
||||
}
|
||||
|
||||
if (settings.timer) {
|
||||
timer_container = $('<div>').addClass(settings.timer_container_class);
|
||||
timer_container.append('<span>');
|
||||
timer_container.append($('<div>').addClass(settings.timer_progress_class));
|
||||
timer_container.addClass(settings.timer_paused_class);
|
||||
container.append(timer_container);
|
||||
}
|
||||
|
||||
if (settings.slide_number) {
|
||||
number_container = $('<div>').addClass(settings.slide_number_class);
|
||||
number_container.append('<span></span> ' + settings.slide_number_text + ' <span></span>');
|
||||
container.append(number_container);
|
||||
}
|
||||
|
||||
if (settings.bullets) {
|
||||
bullets_container = $('<ol>').addClass(settings.bullets_container_class);
|
||||
container.append(bullets_container);
|
||||
bullets_container.wrap('<div class="orbit-bullets-container"></div>');
|
||||
self.slides().each(function (idx, el) {
|
||||
var bullet = $('<li>').attr('data-orbit-slide', idx).on('click', self.link_bullet);;
|
||||
bullets_container.append(bullet);
|
||||
});
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
self._goto = function (next_idx, start_timer) {
|
||||
// if (locked) {return false;}
|
||||
if (next_idx === idx) {return false;}
|
||||
if (typeof timer === 'object') {timer.restart();}
|
||||
var slides = self.slides();
|
||||
|
||||
var dir = 'next';
|
||||
locked = true;
|
||||
if (next_idx < idx) {dir = 'prev';}
|
||||
if (next_idx >= slides.length) {
|
||||
if (!settings.circular) {
|
||||
return false;
|
||||
}
|
||||
next_idx = 0;
|
||||
} else if (next_idx < 0) {
|
||||
if (!settings.circular) {
|
||||
return false;
|
||||
}
|
||||
next_idx = slides.length - 1;
|
||||
}
|
||||
|
||||
var current = $(slides.get(idx));
|
||||
var next = $(slides.get(next_idx));
|
||||
|
||||
current.css('zIndex', 2);
|
||||
current.removeClass(settings.active_slide_class);
|
||||
next.css('zIndex', 4).addClass(settings.active_slide_class);
|
||||
|
||||
slides_container.trigger('before-slide-change.fndtn.orbit');
|
||||
settings.before_slide_change();
|
||||
self.update_active_link(next_idx);
|
||||
|
||||
var callback = function () {
|
||||
var unlock = function () {
|
||||
idx = next_idx;
|
||||
locked = false;
|
||||
if (start_timer === true) {timer = self.create_timer(); timer.start();}
|
||||
self.update_slide_number(idx);
|
||||
slides_container.trigger('after-slide-change.fndtn.orbit', [{slide_number : idx, total_slides : slides.length}]);
|
||||
settings.after_slide_change(idx, slides.length);
|
||||
};
|
||||
if (slides_container.outerHeight() != next.outerHeight() && settings.variable_height) {
|
||||
slides_container.animate({'height': next.outerHeight()}, 250, 'linear', unlock);
|
||||
} else {
|
||||
unlock();
|
||||
}
|
||||
};
|
||||
|
||||
if (slides.length === 1) {callback(); return false;}
|
||||
|
||||
var start_animation = function () {
|
||||
if (dir === 'next') {animate.next(current, next, callback);}
|
||||
if (dir === 'prev') {animate.prev(current, next, callback);}
|
||||
};
|
||||
|
||||
if (next.outerHeight() > slides_container.outerHeight() && settings.variable_height) {
|
||||
slides_container.animate({'height': next.outerHeight()}, 250, 'linear', start_animation);
|
||||
} else {
|
||||
start_animation();
|
||||
}
|
||||
};
|
||||
|
||||
self.next = function (e) {
|
||||
e.stopImmediatePropagation();
|
||||
e.preventDefault();
|
||||
self._goto(idx + 1);
|
||||
};
|
||||
|
||||
self.prev = function (e) {
|
||||
e.stopImmediatePropagation();
|
||||
e.preventDefault();
|
||||
self._goto(idx - 1);
|
||||
};
|
||||
|
||||
self.link_custom = function (e) {
|
||||
e.preventDefault();
|
||||
var link = $(this).attr('data-orbit-link');
|
||||
if ((typeof link === 'string') && (link = $.trim(link)) != '') {
|
||||
var slide = container.find('[data-orbit-slide=' + link + ']');
|
||||
if (slide.index() != -1) {self._goto(slide.index());}
|
||||
}
|
||||
};
|
||||
|
||||
self.link_bullet = function (e) {
|
||||
var index = $(this).attr('data-orbit-slide');
|
||||
if ((typeof index === 'string') && (index = $.trim(index)) != '') {
|
||||
if (isNaN(parseInt(index))) {
|
||||
var slide = container.find('[data-orbit-slide=' + index + ']');
|
||||
if (slide.index() != -1) {self._goto(slide.index() + 1);}
|
||||
} else {
|
||||
self._goto(parseInt(index));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
self.timer_callback = function () {
|
||||
self._goto(idx + 1, true);
|
||||
}
|
||||
|
||||
self.compute_dimensions = function () {
|
||||
var current = $(self.slides().get(idx));
|
||||
var h = current.outerHeight();
|
||||
if (!settings.variable_height) {
|
||||
self.slides().each(function(){
|
||||
if ($(this).outerHeight() > h) { h = $(this).outerHeight(); }
|
||||
});
|
||||
}
|
||||
slides_container.height(h);
|
||||
};
|
||||
|
||||
self.create_timer = function () {
|
||||
var t = new Timer(
|
||||
container.find('.' + settings.timer_container_class),
|
||||
settings,
|
||||
self.timer_callback
|
||||
);
|
||||
return t;
|
||||
};
|
||||
|
||||
self.stop_timer = function () {
|
||||
if (typeof timer === 'object') {
|
||||
timer.stop();
|
||||
}
|
||||
};
|
||||
|
||||
self.toggle_timer = function () {
|
||||
var t = container.find('.' + settings.timer_container_class);
|
||||
if (t.hasClass(settings.timer_paused_class)) {
|
||||
if (typeof timer === 'undefined') {timer = self.create_timer();}
|
||||
timer.start();
|
||||
} else {
|
||||
if (typeof timer === 'object') {timer.stop();}
|
||||
}
|
||||
};
|
||||
|
||||
self.init = function () {
|
||||
self.build_markup();
|
||||
if (settings.timer) {
|
||||
timer = self.create_timer();
|
||||
Foundation.utils.image_loaded(this.slides().children('img'), timer.start);
|
||||
}
|
||||
animate = new FadeAnimation(settings, slides_container);
|
||||
if (settings.animation === 'slide') {
|
||||
animate = new SlideAnimation(settings, slides_container);
|
||||
}
|
||||
|
||||
container.on('click', '.' + settings.next_class, self.next);
|
||||
container.on('click', '.' + settings.prev_class, self.prev);
|
||||
|
||||
if (settings.next_on_click) {
|
||||
container.on('click', '.' + settings.slides_container_class + ' [data-orbit-slide]', self.link_bullet);
|
||||
}
|
||||
|
||||
container.on('click', self.toggle_timer);
|
||||
if (settings.swipe) {
|
||||
container.on('touchstart.fndtn.orbit', function (e) {
|
||||
if (!e.touches) {e = e.originalEvent;}
|
||||
var data = {
|
||||
start_page_x : e.touches[0].pageX,
|
||||
start_page_y : e.touches[0].pageY,
|
||||
start_time : (new Date()).getTime(),
|
||||
delta_x : 0,
|
||||
is_scrolling : undefined
|
||||
};
|
||||
container.data('swipe-transition', data);
|
||||
e.stopPropagation();
|
||||
})
|
||||
.on('touchmove.fndtn.orbit', function (e) {
|
||||
if (!e.touches) {
|
||||
e = e.originalEvent;
|
||||
}
|
||||
// Ignore pinch/zoom events
|
||||
if (e.touches.length > 1 || e.scale && e.scale !== 1) {
|
||||
return;
|
||||
}
|
||||
|
||||
var data = container.data('swipe-transition');
|
||||
if (typeof data === 'undefined') {data = {};}
|
||||
|
||||
data.delta_x = e.touches[0].pageX - data.start_page_x;
|
||||
|
||||
if ( typeof data.is_scrolling === 'undefined') {
|
||||
data.is_scrolling = !!( data.is_scrolling || Math.abs(data.delta_x) < Math.abs(e.touches[0].pageY - data.start_page_y) );
|
||||
}
|
||||
|
||||
if (!data.is_scrolling && !data.active) {
|
||||
e.preventDefault();
|
||||
var direction = (data.delta_x < 0) ? (idx + 1) : (idx - 1);
|
||||
data.active = true;
|
||||
self._goto(direction);
|
||||
}
|
||||
})
|
||||
.on('touchend.fndtn.orbit', function (e) {
|
||||
container.data('swipe-transition', {});
|
||||
e.stopPropagation();
|
||||
})
|
||||
}
|
||||
container.on('mouseenter.fndtn.orbit', function (e) {
|
||||
if (settings.timer && settings.pause_on_hover) {
|
||||
self.stop_timer();
|
||||
}
|
||||
})
|
||||
.on('mouseleave.fndtn.orbit', function (e) {
|
||||
if (settings.timer && settings.resume_on_mouseout) {
|
||||
timer.start();
|
||||
}
|
||||
});
|
||||
|
||||
$(document).on('click', '[data-orbit-link]', self.link_custom);
|
||||
$(window).on('load resize', self.compute_dimensions);
|
||||
Foundation.utils.image_loaded(this.slides().children('img'), self.compute_dimensions);
|
||||
Foundation.utils.image_loaded(this.slides().children('img'), function () {
|
||||
container.prev('.' + settings.preloader_class).css('display', 'none');
|
||||
self.update_slide_number(0);
|
||||
self.update_active_link(0);
|
||||
slides_container.trigger('ready.fndtn.orbit');
|
||||
});
|
||||
};
|
||||
|
||||
self.init();
|
||||
};
|
||||
|
||||
var Timer = function (el, settings, callback) {
|
||||
var self = this,
|
||||
duration = settings.timer_speed,
|
||||
progress = el.find('.' + settings.timer_progress_class),
|
||||
start,
|
||||
timeout,
|
||||
left = -1;
|
||||
|
||||
this.update_progress = function (w) {
|
||||
var new_progress = progress.clone();
|
||||
new_progress.attr('style', '');
|
||||
new_progress.css('width', w + '%');
|
||||
progress.replaceWith(new_progress);
|
||||
progress = new_progress;
|
||||
};
|
||||
|
||||
this.restart = function () {
|
||||
clearTimeout(timeout);
|
||||
el.addClass(settings.timer_paused_class);
|
||||
left = -1;
|
||||
self.update_progress(0);
|
||||
};
|
||||
|
||||
this.start = function () {
|
||||
if (!el.hasClass(settings.timer_paused_class)) {return true;}
|
||||
left = (left === -1) ? duration : left;
|
||||
el.removeClass(settings.timer_paused_class);
|
||||
start = new Date().getTime();
|
||||
progress.animate({'width' : '100%'}, left, 'linear');
|
||||
timeout = setTimeout(function () {
|
||||
self.restart();
|
||||
callback();
|
||||
}, left);
|
||||
el.trigger('timer-started.fndtn.orbit')
|
||||
};
|
||||
|
||||
this.stop = function () {
|
||||
if (el.hasClass(settings.timer_paused_class)) {return true;}
|
||||
clearTimeout(timeout);
|
||||
el.addClass(settings.timer_paused_class);
|
||||
var end = new Date().getTime();
|
||||
left = left - (end - start);
|
||||
var w = 100 - ((left / duration) * 100);
|
||||
self.update_progress(w);
|
||||
el.trigger('timer-stopped.fndtn.orbit');
|
||||
};
|
||||
};
|
||||
|
||||
var SlideAnimation = function (settings, container) {
|
||||
var duration = settings.animation_speed;
|
||||
var is_rtl = ($('html[dir=rtl]').length === 1);
|
||||
var margin = is_rtl ? 'marginRight' : 'marginLeft';
|
||||
var animMargin = {};
|
||||
animMargin[margin] = '0%';
|
||||
|
||||
this.next = function (current, next, callback) {
|
||||
current.animate({marginLeft : '-100%'}, duration);
|
||||
next.animate(animMargin, duration, function () {
|
||||
current.css(margin, '100%');
|
||||
callback();
|
||||
});
|
||||
};
|
||||
|
||||
this.prev = function (current, prev, callback) {
|
||||
current.animate({marginLeft : '100%'}, duration);
|
||||
prev.css(margin, '-100%');
|
||||
prev.animate(animMargin, duration, function () {
|
||||
current.css(margin, '100%');
|
||||
callback();
|
||||
});
|
||||
};
|
||||
};
|
||||
|
||||
var FadeAnimation = function (settings, container) {
|
||||
var duration = settings.animation_speed;
|
||||
var is_rtl = ($('html[dir=rtl]').length === 1);
|
||||
var margin = is_rtl ? 'marginRight' : 'marginLeft';
|
||||
|
||||
this.next = function (current, next, callback) {
|
||||
next.css({'margin' : '0%', 'opacity' : '0.01'});
|
||||
next.animate({'opacity' :'1'}, duration, 'linear', function () {
|
||||
current.css('margin', '100%');
|
||||
callback();
|
||||
});
|
||||
};
|
||||
|
||||
this.prev = function (current, prev, callback) {
|
||||
prev.css({'margin' : '0%', 'opacity' : '0.01'});
|
||||
prev.animate({'opacity' : '1'}, duration, 'linear', function () {
|
||||
current.css('margin', '100%');
|
||||
callback();
|
||||
});
|
||||
};
|
||||
};
|
||||
|
||||
Foundation.libs = Foundation.libs || {};
|
||||
|
||||
Foundation.libs.orbit = {
|
||||
name : 'orbit',
|
||||
|
||||
version : '5.5.1',
|
||||
|
||||
settings : {
|
||||
animation : 'slide',
|
||||
timer_speed : 10000,
|
||||
pause_on_hover : true,
|
||||
resume_on_mouseout : false,
|
||||
next_on_click : true,
|
||||
animation_speed : 500,
|
||||
stack_on_small : false,
|
||||
navigation_arrows : true,
|
||||
slide_number : true,
|
||||
slide_number_text : 'of',
|
||||
container_class : 'orbit-container',
|
||||
stack_on_small_class : 'orbit-stack-on-small',
|
||||
next_class : 'orbit-next',
|
||||
prev_class : 'orbit-prev',
|
||||
timer_container_class : 'orbit-timer',
|
||||
timer_paused_class : 'paused',
|
||||
timer_progress_class : 'orbit-progress',
|
||||
slides_container_class : 'orbit-slides-container',
|
||||
preloader_class : 'preloader',
|
||||
slide_selector : '*',
|
||||
bullets_container_class : 'orbit-bullets',
|
||||
bullets_active_class : 'active',
|
||||
slide_number_class : 'orbit-slide-number',
|
||||
caption_class : 'orbit-caption',
|
||||
active_slide_class : 'active',
|
||||
orbit_transition_class : 'orbit-transitioning',
|
||||
bullets : true,
|
||||
circular : true,
|
||||
timer : true,
|
||||
variable_height : false,
|
||||
swipe : true,
|
||||
before_slide_change : noop,
|
||||
after_slide_change : noop
|
||||
},
|
||||
|
||||
init : function (scope, method, options) {
|
||||
var self = this;
|
||||
this.bindings(method, options);
|
||||
},
|
||||
|
||||
events : function (instance) {
|
||||
var orbit_instance = new Orbit(this.S(instance), this.S(instance).data('orbit-init'));
|
||||
this.S(instance).data(this.name + '-instance', orbit_instance);
|
||||
},
|
||||
|
||||
reflow : function () {
|
||||
var self = this;
|
||||
|
||||
if (self.S(self.scope).is('[data-orbit]')) {
|
||||
var $el = self.S(self.scope);
|
||||
var instance = $el.data(self.name + '-instance');
|
||||
instance.compute_dimensions();
|
||||
} else {
|
||||
self.S('[data-orbit]', self.scope).each(function (idx, el) {
|
||||
var $el = self.S(el);
|
||||
var opts = self.data_options($el);
|
||||
var instance = $el.data(self.name + '-instance');
|
||||
instance.compute_dimensions();
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
}(jQuery, window, window.document));
|
||||
471
sites/all/themes/gui/materiobasetheme/bower_components/foundation/js/foundation/foundation.reveal.js
vendored
Normal file
471
sites/all/themes/gui/materiobasetheme/bower_components/foundation/js/foundation/foundation.reveal.js
vendored
Normal file
@@ -0,0 +1,471 @@
|
||||
;(function ($, window, document, undefined) {
|
||||
'use strict';
|
||||
|
||||
Foundation.libs.reveal = {
|
||||
name : 'reveal',
|
||||
|
||||
version : '5.5.1',
|
||||
|
||||
locked : false,
|
||||
|
||||
settings : {
|
||||
animation : 'fadeAndPop',
|
||||
animation_speed : 250,
|
||||
close_on_background_click : true,
|
||||
close_on_esc : true,
|
||||
dismiss_modal_class : 'close-reveal-modal',
|
||||
multiple_opened : false,
|
||||
bg_class : 'reveal-modal-bg',
|
||||
root_element : 'body',
|
||||
open : function(){},
|
||||
opened : function(){},
|
||||
close : function(){},
|
||||
closed : function(){},
|
||||
bg : $('.reveal-modal-bg'),
|
||||
css : {
|
||||
open : {
|
||||
'opacity' : 0,
|
||||
'visibility' : 'visible',
|
||||
'display' : 'block'
|
||||
},
|
||||
close : {
|
||||
'opacity' : 1,
|
||||
'visibility' : 'hidden',
|
||||
'display' : 'none'
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
init : function (scope, method, options) {
|
||||
$.extend(true, this.settings, method, options);
|
||||
this.bindings(method, options);
|
||||
},
|
||||
|
||||
events : function (scope) {
|
||||
var self = this,
|
||||
S = self.S;
|
||||
|
||||
S(this.scope)
|
||||
.off('.reveal')
|
||||
.on('click.fndtn.reveal', '[' + this.add_namespace('data-reveal-id') + ']:not([disabled])', function (e) {
|
||||
e.preventDefault();
|
||||
|
||||
if (!self.locked) {
|
||||
var element = S(this),
|
||||
ajax = element.data(self.data_attr('reveal-ajax'));
|
||||
|
||||
self.locked = true;
|
||||
|
||||
if (typeof ajax === 'undefined') {
|
||||
self.open.call(self, element);
|
||||
} else {
|
||||
var url = ajax === true ? element.attr('href') : ajax;
|
||||
|
||||
self.open.call(self, element, {url : url});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
S(document)
|
||||
.on('click.fndtn.reveal', this.close_targets(), function (e) {
|
||||
e.preventDefault();
|
||||
if (!self.locked) {
|
||||
var settings = S('[' + self.attr_name() + '].open').data(self.attr_name(true) + '-init') || self.settings,
|
||||
bg_clicked = S(e.target)[0] === S('.' + settings.bg_class)[0];
|
||||
|
||||
if (bg_clicked) {
|
||||
if (settings.close_on_background_click) {
|
||||
e.stopPropagation();
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
self.locked = true;
|
||||
self.close.call(self, bg_clicked ? S('[' + self.attr_name() + '].open') : S(this).closest('[' + self.attr_name() + ']'));
|
||||
}
|
||||
});
|
||||
|
||||
if (S('[' + self.attr_name() + ']', this.scope).length > 0) {
|
||||
S(this.scope)
|
||||
// .off('.reveal')
|
||||
.on('open.fndtn.reveal', this.settings.open)
|
||||
.on('opened.fndtn.reveal', this.settings.opened)
|
||||
.on('opened.fndtn.reveal', this.open_video)
|
||||
.on('close.fndtn.reveal', this.settings.close)
|
||||
.on('closed.fndtn.reveal', this.settings.closed)
|
||||
.on('closed.fndtn.reveal', this.close_video);
|
||||
} else {
|
||||
S(this.scope)
|
||||
// .off('.reveal')
|
||||
.on('open.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.open)
|
||||
.on('opened.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.opened)
|
||||
.on('opened.fndtn.reveal', '[' + self.attr_name() + ']', this.open_video)
|
||||
.on('close.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.close)
|
||||
.on('closed.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.closed)
|
||||
.on('closed.fndtn.reveal', '[' + self.attr_name() + ']', this.close_video);
|
||||
}
|
||||
|
||||
return true;
|
||||
},
|
||||
|
||||
// PATCH #3: turning on key up capture only when a reveal window is open
|
||||
key_up_on : function (scope) {
|
||||
var self = this;
|
||||
|
||||
// PATCH #1: fixing multiple keyup event trigger from single key press
|
||||
self.S('body').off('keyup.fndtn.reveal').on('keyup.fndtn.reveal', function ( event ) {
|
||||
var open_modal = self.S('[' + self.attr_name() + '].open'),
|
||||
settings = open_modal.data(self.attr_name(true) + '-init') || self.settings ;
|
||||
// PATCH #2: making sure that the close event can be called only while unlocked,
|
||||
// so that multiple keyup.fndtn.reveal events don't prevent clean closing of the reveal window.
|
||||
if ( settings && event.which === 27 && settings.close_on_esc && !self.locked) { // 27 is the keycode for the Escape key
|
||||
self.close.call(self, open_modal);
|
||||
}
|
||||
});
|
||||
|
||||
return true;
|
||||
},
|
||||
|
||||
// PATCH #3: turning on key up capture only when a reveal window is open
|
||||
key_up_off : function (scope) {
|
||||
this.S('body').off('keyup.fndtn.reveal');
|
||||
return true;
|
||||
},
|
||||
|
||||
open : function (target, ajax_settings) {
|
||||
var self = this,
|
||||
modal;
|
||||
|
||||
if (target) {
|
||||
if (typeof target.selector !== 'undefined') {
|
||||
// Find the named node; only use the first one found, since the rest of the code assumes there's only one node
|
||||
modal = self.S('#' + target.data(self.data_attr('reveal-id'))).first();
|
||||
} else {
|
||||
modal = self.S(this.scope);
|
||||
|
||||
ajax_settings = target;
|
||||
}
|
||||
} else {
|
||||
modal = self.S(this.scope);
|
||||
}
|
||||
|
||||
var settings = modal.data(self.attr_name(true) + '-init');
|
||||
settings = settings || this.settings;
|
||||
|
||||
if (modal.hasClass('open') && target.attr('data-reveal-id') == modal.attr('id')) {
|
||||
return self.close(modal);
|
||||
}
|
||||
|
||||
if (!modal.hasClass('open')) {
|
||||
var open_modal = self.S('[' + self.attr_name() + '].open');
|
||||
|
||||
if (typeof modal.data('css-top') === 'undefined') {
|
||||
modal.data('css-top', parseInt(modal.css('top'), 10))
|
||||
.data('offset', this.cache_offset(modal));
|
||||
}
|
||||
|
||||
this.key_up_on(modal); // PATCH #3: turning on key up capture only when a reveal window is open
|
||||
|
||||
modal.on('open.fndtn.reveal').trigger('open.fndtn.reveal');
|
||||
|
||||
if (open_modal.length < 1) {
|
||||
this.toggle_bg(modal, true);
|
||||
}
|
||||
|
||||
if (typeof ajax_settings === 'string') {
|
||||
ajax_settings = {
|
||||
url : ajax_settings
|
||||
};
|
||||
}
|
||||
|
||||
if (typeof ajax_settings === 'undefined' || !ajax_settings.url) {
|
||||
if (open_modal.length > 0) {
|
||||
if (settings.multiple_opened) {
|
||||
this.to_back(open_modal);
|
||||
} else {
|
||||
this.hide(open_modal, settings.css.close);
|
||||
}
|
||||
}
|
||||
|
||||
this.show(modal, settings.css.open);
|
||||
} else {
|
||||
var old_success = typeof ajax_settings.success !== 'undefined' ? ajax_settings.success : null;
|
||||
|
||||
$.extend(ajax_settings, {
|
||||
success : function (data, textStatus, jqXHR) {
|
||||
if ( $.isFunction(old_success) ) {
|
||||
var result = old_success(data, textStatus, jqXHR);
|
||||
if (typeof result == 'string') {
|
||||
data = result;
|
||||
}
|
||||
}
|
||||
|
||||
modal.html(data);
|
||||
self.S(modal).foundation('section', 'reflow');
|
||||
self.S(modal).children().foundation();
|
||||
|
||||
if (open_modal.length > 0) {
|
||||
if (settings.multiple_opened) {
|
||||
this.to_back(open_modal);
|
||||
} else {
|
||||
this.hide(open_modal, settings.css.close);
|
||||
}
|
||||
}
|
||||
self.show(modal, settings.css.open);
|
||||
}
|
||||
});
|
||||
|
||||
$.ajax(ajax_settings);
|
||||
}
|
||||
}
|
||||
self.S(window).trigger('resize');
|
||||
},
|
||||
|
||||
close : function (modal) {
|
||||
var modal = modal && modal.length ? modal : this.S(this.scope),
|
||||
open_modals = this.S('[' + this.attr_name() + '].open'),
|
||||
settings = modal.data(this.attr_name(true) + '-init') || this.settings;
|
||||
|
||||
if (open_modals.length > 0) {
|
||||
this.locked = true;
|
||||
this.key_up_off(modal); // PATCH #3: turning on key up capture only when a reveal window is open
|
||||
modal.trigger('close').trigger('close.fndtn.reveal');
|
||||
|
||||
if ((settings.multiple_opened && open_modals.length === 1) || !settings.multiple_opened || modal.length > 1) {
|
||||
this.toggle_bg(modal, false);
|
||||
this.to_front(modal);
|
||||
}
|
||||
|
||||
if (settings.multiple_opened) {
|
||||
this.hide(modal, settings.css.close, settings);
|
||||
this.to_front($($.makeArray(open_modals).reverse()[1]));
|
||||
} else {
|
||||
this.hide(open_modals, settings.css.close, settings);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
close_targets : function () {
|
||||
var base = '.' + this.settings.dismiss_modal_class;
|
||||
|
||||
if (this.settings.close_on_background_click) {
|
||||
return base + ', .' + this.settings.bg_class;
|
||||
}
|
||||
|
||||
return base;
|
||||
},
|
||||
|
||||
toggle_bg : function (modal, state) {
|
||||
if (this.S('.' + this.settings.bg_class).length === 0) {
|
||||
this.settings.bg = $('<div />', {'class': this.settings.bg_class})
|
||||
.appendTo('body').hide();
|
||||
}
|
||||
|
||||
var visible = this.settings.bg.filter(':visible').length > 0;
|
||||
if ( state != visible ) {
|
||||
if ( state == undefined ? visible : !state ) {
|
||||
this.hide(this.settings.bg);
|
||||
} else {
|
||||
this.show(this.settings.bg);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
show : function (el, css) {
|
||||
// is modal
|
||||
if (css) {
|
||||
var settings = el.data(this.attr_name(true) + '-init') || this.settings,
|
||||
root_element = settings.root_element;
|
||||
|
||||
if (el.parent(root_element).length === 0) {
|
||||
var placeholder = el.wrap('<div style="display: none;" />').parent();
|
||||
|
||||
el.on('closed.fndtn.reveal.wrapped', function () {
|
||||
el.detach().appendTo(placeholder);
|
||||
el.unwrap().unbind('closed.fndtn.reveal.wrapped');
|
||||
});
|
||||
|
||||
el.detach().appendTo(root_element);
|
||||
}
|
||||
|
||||
var animData = getAnimationData(settings.animation);
|
||||
if (!animData.animate) {
|
||||
this.locked = false;
|
||||
}
|
||||
if (animData.pop) {
|
||||
css.top = $(window).scrollTop() - el.data('offset') + 'px';
|
||||
var end_css = {
|
||||
top: $(window).scrollTop() + el.data('css-top') + 'px',
|
||||
opacity: 1
|
||||
};
|
||||
|
||||
return setTimeout(function () {
|
||||
return el
|
||||
.css(css)
|
||||
.animate(end_css, settings.animation_speed, 'linear', function () {
|
||||
this.locked = false;
|
||||
el.trigger('opened').trigger('opened.fndtn.reveal');
|
||||
}.bind(this))
|
||||
.addClass('open');
|
||||
}.bind(this), settings.animation_speed / 2);
|
||||
}
|
||||
|
||||
if (animData.fade) {
|
||||
css.top = $(window).scrollTop() + el.data('css-top') + 'px';
|
||||
var end_css = {opacity: 1};
|
||||
|
||||
return setTimeout(function () {
|
||||
return el
|
||||
.css(css)
|
||||
.animate(end_css, settings.animation_speed, 'linear', function () {
|
||||
this.locked = false;
|
||||
el.trigger('opened').trigger('opened.fndtn.reveal');
|
||||
}.bind(this))
|
||||
.addClass('open');
|
||||
}.bind(this), settings.animation_speed / 2);
|
||||
}
|
||||
|
||||
return el.css(css).show().css({opacity : 1}).addClass('open').trigger('opened').trigger('opened.fndtn.reveal');
|
||||
}
|
||||
|
||||
var settings = this.settings;
|
||||
|
||||
// should we animate the background?
|
||||
if (getAnimationData(settings.animation).fade) {
|
||||
return el.fadeIn(settings.animation_speed / 2);
|
||||
}
|
||||
|
||||
this.locked = false;
|
||||
|
||||
return el.show();
|
||||
},
|
||||
|
||||
to_back : function(el) {
|
||||
el.addClass('toback');
|
||||
},
|
||||
|
||||
to_front : function(el) {
|
||||
el.removeClass('toback');
|
||||
},
|
||||
|
||||
hide : function (el, css) {
|
||||
// is modal
|
||||
if (css) {
|
||||
var settings = el.data(this.attr_name(true) + '-init');
|
||||
settings = settings || this.settings;
|
||||
|
||||
var animData = getAnimationData(settings.animation);
|
||||
if (!animData.animate) {
|
||||
this.locked = false;
|
||||
}
|
||||
if (animData.pop) {
|
||||
var end_css = {
|
||||
top: - $(window).scrollTop() - el.data('offset') + 'px',
|
||||
opacity: 0
|
||||
};
|
||||
|
||||
return setTimeout(function () {
|
||||
return el
|
||||
.animate(end_css, settings.animation_speed, 'linear', function () {
|
||||
this.locked = false;
|
||||
el.css(css).trigger('closed').trigger('closed.fndtn.reveal');
|
||||
}.bind(this))
|
||||
.removeClass('open');
|
||||
}.bind(this), settings.animation_speed / 2);
|
||||
}
|
||||
|
||||
if (animData.fade) {
|
||||
var end_css = {opacity : 0};
|
||||
|
||||
return setTimeout(function () {
|
||||
return el
|
||||
.animate(end_css, settings.animation_speed, 'linear', function () {
|
||||
this.locked = false;
|
||||
el.css(css).trigger('closed').trigger('closed.fndtn.reveal');
|
||||
}.bind(this))
|
||||
.removeClass('open');
|
||||
}.bind(this), settings.animation_speed / 2);
|
||||
}
|
||||
|
||||
return el.hide().css(css).removeClass('open').trigger('closed').trigger('closed.fndtn.reveal');
|
||||
}
|
||||
|
||||
var settings = this.settings;
|
||||
|
||||
// should we animate the background?
|
||||
if (getAnimationData(settings.animation).fade) {
|
||||
return el.fadeOut(settings.animation_speed / 2);
|
||||
}
|
||||
|
||||
return el.hide();
|
||||
},
|
||||
|
||||
close_video : function (e) {
|
||||
var video = $('.flex-video', e.target),
|
||||
iframe = $('iframe', video);
|
||||
|
||||
if (iframe.length > 0) {
|
||||
iframe.attr('data-src', iframe[0].src);
|
||||
iframe.attr('src', iframe.attr('src'));
|
||||
video.hide();
|
||||
}
|
||||
},
|
||||
|
||||
open_video : function (e) {
|
||||
var video = $('.flex-video', e.target),
|
||||
iframe = video.find('iframe');
|
||||
|
||||
if (iframe.length > 0) {
|
||||
var data_src = iframe.attr('data-src');
|
||||
if (typeof data_src === 'string') {
|
||||
iframe[0].src = iframe.attr('data-src');
|
||||
} else {
|
||||
var src = iframe[0].src;
|
||||
iframe[0].src = undefined;
|
||||
iframe[0].src = src;
|
||||
}
|
||||
video.show();
|
||||
}
|
||||
},
|
||||
|
||||
data_attr : function (str) {
|
||||
if (this.namespace.length > 0) {
|
||||
return this.namespace + '-' + str;
|
||||
}
|
||||
|
||||
return str;
|
||||
},
|
||||
|
||||
cache_offset : function (modal) {
|
||||
var offset = modal.show().height() + parseInt(modal.css('top'), 10);
|
||||
|
||||
modal.hide();
|
||||
|
||||
return offset;
|
||||
},
|
||||
|
||||
off : function () {
|
||||
$(this.scope).off('.fndtn.reveal');
|
||||
},
|
||||
|
||||
reflow : function () {}
|
||||
};
|
||||
|
||||
/*
|
||||
* getAnimationData('popAndFade') // {animate: true, pop: true, fade: true}
|
||||
* getAnimationData('fade') // {animate: true, pop: false, fade: true}
|
||||
* getAnimationData('pop') // {animate: true, pop: true, fade: false}
|
||||
* getAnimationData('foo') // {animate: false, pop: false, fade: false}
|
||||
* getAnimationData(null) // {animate: false, pop: false, fade: false}
|
||||
*/
|
||||
function getAnimationData(str) {
|
||||
var fade = /fade/i.test(str);
|
||||
var pop = /pop/i.test(str);
|
||||
return {
|
||||
animate : fade || pop,
|
||||
pop : pop,
|
||||
fade : fade
|
||||
};
|
||||
}
|
||||
}(jQuery, window, window.document));
|
||||
263
sites/all/themes/gui/materiobasetheme/bower_components/foundation/js/foundation/foundation.slider.js
vendored
Normal file
263
sites/all/themes/gui/materiobasetheme/bower_components/foundation/js/foundation/foundation.slider.js
vendored
Normal file
@@ -0,0 +1,263 @@
|
||||
;(function ($, window, document, undefined) {
|
||||
'use strict';
|
||||
|
||||
Foundation.libs.slider = {
|
||||
name : 'slider',
|
||||
|
||||
version : '5.5.1',
|
||||
|
||||
settings : {
|
||||
start : 0,
|
||||
end : 100,
|
||||
step : 1,
|
||||
precision : null,
|
||||
initial : null,
|
||||
display_selector : '',
|
||||
vertical : false,
|
||||
trigger_input_change : false,
|
||||
on_change : function () {}
|
||||
},
|
||||
|
||||
cache : {},
|
||||
|
||||
init : function (scope, method, options) {
|
||||
Foundation.inherit(this, 'throttle');
|
||||
this.bindings(method, options);
|
||||
this.reflow();
|
||||
},
|
||||
|
||||
events : function () {
|
||||
var self = this;
|
||||
|
||||
$(this.scope)
|
||||
.off('.slider')
|
||||
.on('mousedown.fndtn.slider touchstart.fndtn.slider pointerdown.fndtn.slider',
|
||||
'[' + self.attr_name() + ']:not(.disabled, [disabled]) .range-slider-handle', function (e) {
|
||||
if (!self.cache.active) {
|
||||
e.preventDefault();
|
||||
self.set_active_slider($(e.target));
|
||||
}
|
||||
})
|
||||
.on('mousemove.fndtn.slider touchmove.fndtn.slider pointermove.fndtn.slider', function (e) {
|
||||
if (!!self.cache.active) {
|
||||
e.preventDefault();
|
||||
if ($.data(self.cache.active[0], 'settings').vertical) {
|
||||
var scroll_offset = 0;
|
||||
if (!e.pageY) {
|
||||
scroll_offset = window.scrollY;
|
||||
}
|
||||
self.calculate_position(self.cache.active, self.get_cursor_position(e, 'y') + scroll_offset);
|
||||
} else {
|
||||
self.calculate_position(self.cache.active, self.get_cursor_position(e, 'x'));
|
||||
}
|
||||
}
|
||||
})
|
||||
.on('mouseup.fndtn.slider touchend.fndtn.slider pointerup.fndtn.slider', function (e) {
|
||||
self.remove_active_slider();
|
||||
})
|
||||
.on('change.fndtn.slider', function (e) {
|
||||
self.settings.on_change();
|
||||
});
|
||||
|
||||
self.S(window)
|
||||
.on('resize.fndtn.slider', self.throttle(function (e) {
|
||||
self.reflow();
|
||||
}, 300));
|
||||
},
|
||||
|
||||
get_cursor_position : function (e, xy) {
|
||||
var pageXY = 'page' + xy.toUpperCase(),
|
||||
clientXY = 'client' + xy.toUpperCase(),
|
||||
position;
|
||||
|
||||
if (typeof e[pageXY] !== 'undefined') {
|
||||
position = e[pageXY];
|
||||
} else if (typeof e.originalEvent[clientXY] !== 'undefined') {
|
||||
position = e.originalEvent[clientXY];
|
||||
} else if (e.originalEvent.touches && e.originalEvent.touches[0] && typeof e.originalEvent.touches[0][clientXY] !== 'undefined') {
|
||||
position = e.originalEvent.touches[0][clientXY];
|
||||
} else if (e.currentPoint && typeof e.currentPoint[xy] !== 'undefined') {
|
||||
position = e.currentPoint[xy];
|
||||
}
|
||||
|
||||
return position;
|
||||
},
|
||||
|
||||
set_active_slider : function ($handle) {
|
||||
this.cache.active = $handle;
|
||||
},
|
||||
|
||||
remove_active_slider : function () {
|
||||
this.cache.active = null;
|
||||
},
|
||||
|
||||
calculate_position : function ($handle, cursor_x) {
|
||||
var self = this,
|
||||
settings = $.data($handle[0], 'settings'),
|
||||
handle_l = $.data($handle[0], 'handle_l'),
|
||||
handle_o = $.data($handle[0], 'handle_o'),
|
||||
bar_l = $.data($handle[0], 'bar_l'),
|
||||
bar_o = $.data($handle[0], 'bar_o');
|
||||
|
||||
requestAnimationFrame(function () {
|
||||
var pct;
|
||||
|
||||
if (Foundation.rtl && !settings.vertical) {
|
||||
pct = self.limit_to(((bar_o + bar_l - cursor_x) / bar_l), 0, 1);
|
||||
} else {
|
||||
pct = self.limit_to(((cursor_x - bar_o) / bar_l), 0, 1);
|
||||
}
|
||||
|
||||
pct = settings.vertical ? 1 - pct : pct;
|
||||
|
||||
var norm = self.normalized_value(pct, settings.start, settings.end, settings.step, settings.precision);
|
||||
|
||||
self.set_ui($handle, norm);
|
||||
});
|
||||
},
|
||||
|
||||
set_ui : function ($handle, value) {
|
||||
var settings = $.data($handle[0], 'settings'),
|
||||
handle_l = $.data($handle[0], 'handle_l'),
|
||||
bar_l = $.data($handle[0], 'bar_l'),
|
||||
norm_pct = this.normalized_percentage(value, settings.start, settings.end),
|
||||
handle_offset = norm_pct * (bar_l - handle_l) - 1,
|
||||
progress_bar_length = norm_pct * 100,
|
||||
$handle_parent = $handle.parent(),
|
||||
$hidden_inputs = $handle.parent().children('input[type=hidden]');
|
||||
|
||||
if (Foundation.rtl && !settings.vertical) {
|
||||
handle_offset = -handle_offset;
|
||||
}
|
||||
|
||||
handle_offset = settings.vertical ? -handle_offset + bar_l - handle_l + 1 : handle_offset;
|
||||
this.set_translate($handle, handle_offset, settings.vertical);
|
||||
|
||||
if (settings.vertical) {
|
||||
$handle.siblings('.range-slider-active-segment').css('height', progress_bar_length + '%');
|
||||
} else {
|
||||
$handle.siblings('.range-slider-active-segment').css('width', progress_bar_length + '%');
|
||||
}
|
||||
|
||||
$handle_parent.attr(this.attr_name(), value).trigger('change').trigger('change.fndtn.slider');
|
||||
|
||||
$hidden_inputs.val(value);
|
||||
if (settings.trigger_input_change) {
|
||||
$hidden_inputs.trigger('change');
|
||||
}
|
||||
|
||||
if (!$handle[0].hasAttribute('aria-valuemin')) {
|
||||
$handle.attr({
|
||||
'aria-valuemin' : settings.start,
|
||||
'aria-valuemax' : settings.end
|
||||
});
|
||||
}
|
||||
$handle.attr('aria-valuenow', value);
|
||||
|
||||
if (settings.display_selector != '') {
|
||||
$(settings.display_selector).each(function () {
|
||||
if (this.hasOwnProperty('value')) {
|
||||
$(this).val(value);
|
||||
} else {
|
||||
$(this).text(value);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
normalized_percentage : function (val, start, end) {
|
||||
return Math.min(1, (val - start) / (end - start));
|
||||
},
|
||||
|
||||
normalized_value : function (val, start, end, step, precision) {
|
||||
var range = end - start,
|
||||
point = val * range,
|
||||
mod = (point - (point % step)) / step,
|
||||
rem = point % step,
|
||||
round = ( rem >= step * 0.5 ? step : 0);
|
||||
return ((mod * step + round) + start).toFixed(precision);
|
||||
},
|
||||
|
||||
set_translate : function (ele, offset, vertical) {
|
||||
if (vertical) {
|
||||
$(ele)
|
||||
.css('-webkit-transform', 'translateY(' + offset + 'px)')
|
||||
.css('-moz-transform', 'translateY(' + offset + 'px)')
|
||||
.css('-ms-transform', 'translateY(' + offset + 'px)')
|
||||
.css('-o-transform', 'translateY(' + offset + 'px)')
|
||||
.css('transform', 'translateY(' + offset + 'px)');
|
||||
} else {
|
||||
$(ele)
|
||||
.css('-webkit-transform', 'translateX(' + offset + 'px)')
|
||||
.css('-moz-transform', 'translateX(' + offset + 'px)')
|
||||
.css('-ms-transform', 'translateX(' + offset + 'px)')
|
||||
.css('-o-transform', 'translateX(' + offset + 'px)')
|
||||
.css('transform', 'translateX(' + offset + 'px)');
|
||||
}
|
||||
},
|
||||
|
||||
limit_to : function (val, min, max) {
|
||||
return Math.min(Math.max(val, min), max);
|
||||
},
|
||||
|
||||
initialize_settings : function (handle) {
|
||||
var settings = $.extend({}, this.settings, this.data_options($(handle).parent())),
|
||||
decimal_places_match_result;
|
||||
|
||||
if (settings.precision === null) {
|
||||
decimal_places_match_result = ('' + settings.step).match(/\.([\d]*)/);
|
||||
settings.precision = decimal_places_match_result && decimal_places_match_result[1] ? decimal_places_match_result[1].length : 0;
|
||||
}
|
||||
|
||||
if (settings.vertical) {
|
||||
$.data(handle, 'bar_o', $(handle).parent().offset().top);
|
||||
$.data(handle, 'bar_l', $(handle).parent().outerHeight());
|
||||
$.data(handle, 'handle_o', $(handle).offset().top);
|
||||
$.data(handle, 'handle_l', $(handle).outerHeight());
|
||||
} else {
|
||||
$.data(handle, 'bar_o', $(handle).parent().offset().left);
|
||||
$.data(handle, 'bar_l', $(handle).parent().outerWidth());
|
||||
$.data(handle, 'handle_o', $(handle).offset().left);
|
||||
$.data(handle, 'handle_l', $(handle).outerWidth());
|
||||
}
|
||||
|
||||
$.data(handle, 'bar', $(handle).parent());
|
||||
$.data(handle, 'settings', settings);
|
||||
},
|
||||
|
||||
set_initial_position : function ($ele) {
|
||||
var settings = $.data($ele.children('.range-slider-handle')[0], 'settings'),
|
||||
initial = ((typeof settings.initial == 'number' && !isNaN(settings.initial)) ? settings.initial : Math.floor((settings.end - settings.start) * 0.5 / settings.step) * settings.step + settings.start),
|
||||
$handle = $ele.children('.range-slider-handle');
|
||||
this.set_ui($handle, initial);
|
||||
},
|
||||
|
||||
set_value : function (value) {
|
||||
var self = this;
|
||||
$('[' + self.attr_name() + ']', this.scope).each(function () {
|
||||
$(this).attr(self.attr_name(), value);
|
||||
});
|
||||
if (!!$(this.scope).attr(self.attr_name())) {
|
||||
$(this.scope).attr(self.attr_name(), value);
|
||||
}
|
||||
self.reflow();
|
||||
},
|
||||
|
||||
reflow : function () {
|
||||
var self = this;
|
||||
self.S('[' + this.attr_name() + ']').each(function () {
|
||||
var handle = $(this).children('.range-slider-handle')[0],
|
||||
val = $(this).attr(self.attr_name());
|
||||
self.initialize_settings(handle);
|
||||
|
||||
if (val) {
|
||||
self.set_ui($(handle), parseFloat(val));
|
||||
} else {
|
||||
self.set_initial_position($(this));
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
}(jQuery, window, window.document));
|
||||
237
sites/all/themes/gui/materiobasetheme/bower_components/foundation/js/foundation/foundation.tab.js
vendored
Normal file
237
sites/all/themes/gui/materiobasetheme/bower_components/foundation/js/foundation/foundation.tab.js
vendored
Normal file
@@ -0,0 +1,237 @@
|
||||
;(function ($, window, document, undefined) {
|
||||
'use strict';
|
||||
|
||||
Foundation.libs.tab = {
|
||||
name : 'tab',
|
||||
|
||||
version : '5.5.1',
|
||||
|
||||
settings : {
|
||||
active_class : 'active',
|
||||
callback : function () {},
|
||||
deep_linking : false,
|
||||
scroll_to_content : true,
|
||||
is_hover : false
|
||||
},
|
||||
|
||||
default_tab_hashes : [],
|
||||
|
||||
init : function (scope, method, options) {
|
||||
var self = this,
|
||||
S = this.S;
|
||||
|
||||
this.bindings(method, options);
|
||||
|
||||
// store the initial href, which is used to allow correct behaviour of the
|
||||
// browser back button when deep linking is turned on.
|
||||
self.entry_location = window.location.href;
|
||||
|
||||
this.handle_location_hash_change();
|
||||
|
||||
// Store the default active tabs which will be referenced when the
|
||||
// location hash is absent, as in the case of navigating the tabs and
|
||||
// returning to the first viewing via the browser Back button.
|
||||
S('[' + this.attr_name() + '] > .active > a', this.scope).each(function () {
|
||||
self.default_tab_hashes.push(this.hash);
|
||||
});
|
||||
},
|
||||
|
||||
events : function () {
|
||||
var self = this,
|
||||
S = this.S;
|
||||
|
||||
var usual_tab_behavior = function (e) {
|
||||
var settings = S(this).closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init');
|
||||
if (!settings.is_hover || Modernizr.touch) {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
self.toggle_active_tab(S(this).parent());
|
||||
}
|
||||
};
|
||||
|
||||
S(this.scope)
|
||||
.off('.tab')
|
||||
// Click event: tab title
|
||||
.on('focus.fndtn.tab', '[' + this.attr_name() + '] > * > a', usual_tab_behavior )
|
||||
.on('click.fndtn.tab', '[' + this.attr_name() + '] > * > a', usual_tab_behavior )
|
||||
// Hover event: tab title
|
||||
.on('mouseenter.fndtn.tab', '[' + this.attr_name() + '] > * > a', function (e) {
|
||||
var settings = S(this).closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init');
|
||||
if (settings.is_hover) {
|
||||
self.toggle_active_tab(S(this).parent());
|
||||
}
|
||||
});
|
||||
|
||||
// Location hash change event
|
||||
S(window).on('hashchange.fndtn.tab', function (e) {
|
||||
e.preventDefault();
|
||||
self.handle_location_hash_change();
|
||||
});
|
||||
},
|
||||
|
||||
handle_location_hash_change : function () {
|
||||
|
||||
var self = this,
|
||||
S = this.S;
|
||||
|
||||
S('[' + this.attr_name() + ']', this.scope).each(function () {
|
||||
var settings = S(this).data(self.attr_name(true) + '-init');
|
||||
if (settings.deep_linking) {
|
||||
// Match the location hash to a label
|
||||
var hash;
|
||||
if (settings.scroll_to_content) {
|
||||
hash = self.scope.location.hash;
|
||||
} else {
|
||||
// prefix the hash to prevent anchor scrolling
|
||||
hash = self.scope.location.hash.replace('fndtn-', '');
|
||||
}
|
||||
if (hash != '') {
|
||||
// Check whether the location hash references a tab content div or
|
||||
// another element on the page (inside or outside the tab content div)
|
||||
var hash_element = S(hash);
|
||||
if (hash_element.hasClass('content') && hash_element.parent().hasClass('tabs-content')) {
|
||||
// Tab content div
|
||||
self.toggle_active_tab($('[' + self.attr_name() + '] > * > a[href=' + hash + ']').parent());
|
||||
} else {
|
||||
// Not the tab content div. If inside the tab content, find the
|
||||
// containing tab and toggle it as active.
|
||||
var hash_tab_container_id = hash_element.closest('.content').attr('id');
|
||||
if (hash_tab_container_id != undefined) {
|
||||
self.toggle_active_tab($('[' + self.attr_name() + '] > * > a[href=#' + hash_tab_container_id + ']').parent(), hash);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Reference the default tab hashes which were initialized in the init function
|
||||
for (var ind = 0; ind < self.default_tab_hashes.length; ind++) {
|
||||
self.toggle_active_tab($('[' + self.attr_name() + '] > * > a[href=' + self.default_tab_hashes[ind] + ']').parent());
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
toggle_active_tab : function (tab, location_hash) {
|
||||
var self = this,
|
||||
S = self.S,
|
||||
tabs = tab.closest('[' + this.attr_name() + ']'),
|
||||
tab_link = tab.find('a'),
|
||||
anchor = tab.children('a').first(),
|
||||
target_hash = '#' + anchor.attr('href').split('#')[1],
|
||||
target = S(target_hash),
|
||||
siblings = tab.siblings(),
|
||||
settings = tabs.data(this.attr_name(true) + '-init'),
|
||||
interpret_keyup_action = function (e) {
|
||||
// Light modification of Heydon Pickering's Practical ARIA Examples: http://heydonworks.com/practical_aria_examples/js/a11y.js
|
||||
|
||||
// define current, previous and next (possible) tabs
|
||||
|
||||
var $original = $(this);
|
||||
var $prev = $(this).parents('li').prev().children('[role="tab"]');
|
||||
var $next = $(this).parents('li').next().children('[role="tab"]');
|
||||
var $target;
|
||||
|
||||
// find the direction (prev or next)
|
||||
|
||||
switch (e.keyCode) {
|
||||
case 37:
|
||||
$target = $prev;
|
||||
break;
|
||||
case 39:
|
||||
$target = $next;
|
||||
break;
|
||||
default:
|
||||
$target = false
|
||||
break;
|
||||
}
|
||||
|
||||
if ($target.length) {
|
||||
$original.attr({
|
||||
'tabindex' : '-1',
|
||||
'aria-selected' : null
|
||||
});
|
||||
$target.attr({
|
||||
'tabindex' : '0',
|
||||
'aria-selected' : true
|
||||
}).focus();
|
||||
}
|
||||
|
||||
// Hide panels
|
||||
|
||||
$('[role="tabpanel"]')
|
||||
.attr('aria-hidden', 'true');
|
||||
|
||||
// Show panel which corresponds to target
|
||||
|
||||
$('#' + $(document.activeElement).attr('href').substring(1))
|
||||
.attr('aria-hidden', null);
|
||||
|
||||
},
|
||||
go_to_hash = function(hash) {
|
||||
// This function allows correct behaviour of the browser's back button when deep linking is enabled. Without it
|
||||
// the user would get continually redirected to the default hash.
|
||||
var is_entry_location = window.location.href === self.entry_location,
|
||||
default_hash = settings.scroll_to_content ? self.default_tab_hashes[0] : is_entry_location ? window.location.hash :'fndtn-' + self.default_tab_hashes[0].replace('#', '')
|
||||
|
||||
if (!(is_entry_location && hash === default_hash)) {
|
||||
window.location.hash = hash;
|
||||
}
|
||||
};
|
||||
|
||||
// allow usage of data-tab-content attribute instead of href
|
||||
if (S(this).data(this.data_attr('tab-content'))) {
|
||||
target_hash = '#' + S(this).data(this.data_attr('tab-content')).split('#')[1];
|
||||
target = S(target_hash);
|
||||
}
|
||||
|
||||
if (settings.deep_linking) {
|
||||
|
||||
if (settings.scroll_to_content) {
|
||||
|
||||
// retain current hash to scroll to content
|
||||
go_to_hash(location_hash || target_hash);
|
||||
|
||||
if (location_hash == undefined || location_hash == target_hash) {
|
||||
tab.parent()[0].scrollIntoView();
|
||||
} else {
|
||||
S(target_hash)[0].scrollIntoView();
|
||||
}
|
||||
} else {
|
||||
// prefix the hashes so that the browser doesn't scroll down
|
||||
if (location_hash != undefined) {
|
||||
go_to_hash('fndtn-' + location_hash.replace('#', ''));
|
||||
} else {
|
||||
go_to_hash('fndtn-' + target_hash.replace('#', ''));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// WARNING: The activation and deactivation of the tab content must
|
||||
// occur after the deep linking in order to properly refresh the browser
|
||||
// window (notably in Chrome).
|
||||
// Clean up multiple attr instances to done once
|
||||
tab.addClass(settings.active_class).triggerHandler('opened');
|
||||
tab_link.attr({'aria-selected' : 'true', tabindex : 0});
|
||||
siblings.removeClass(settings.active_class)
|
||||
siblings.find('a').attr({'aria-selected' : 'false', tabindex : -1});
|
||||
target.siblings().removeClass(settings.active_class).attr({'aria-hidden' : 'true', tabindex : -1});
|
||||
target.addClass(settings.active_class).attr('aria-hidden', 'false').removeAttr('tabindex');
|
||||
settings.callback(tab);
|
||||
target.triggerHandler('toggled', [tab]);
|
||||
tabs.triggerHandler('toggled', [target]);
|
||||
|
||||
tab_link.off('keydown').on('keydown', interpret_keyup_action );
|
||||
},
|
||||
|
||||
data_attr : function (str) {
|
||||
if (this.namespace.length > 0) {
|
||||
return this.namespace + '-' + str;
|
||||
}
|
||||
|
||||
return str;
|
||||
},
|
||||
|
||||
off : function () {},
|
||||
|
||||
reflow : function () {}
|
||||
};
|
||||
}(jQuery, window, window.document));
|
||||
@@ -0,0 +1,307 @@
|
||||
;(function ($, window, document, undefined) {
|
||||
'use strict';
|
||||
|
||||
Foundation.libs.tooltip = {
|
||||
name : 'tooltip',
|
||||
|
||||
version : '5.5.1',
|
||||
|
||||
settings : {
|
||||
additional_inheritable_classes : [],
|
||||
tooltip_class : '.tooltip',
|
||||
append_to : 'body',
|
||||
touch_close_text : 'Tap To Close',
|
||||
disable_for_touch : false,
|
||||
hover_delay : 200,
|
||||
show_on : 'all',
|
||||
tip_template : function (selector, content) {
|
||||
return '<span data-selector="' + selector + '" id="' + selector + '" class="'
|
||||
+ Foundation.libs.tooltip.settings.tooltip_class.substring(1)
|
||||
+ '" role="tooltip">' + content + '<span class="nub"></span></span>';
|
||||
}
|
||||
},
|
||||
|
||||
cache : {},
|
||||
|
||||
init : function (scope, method, options) {
|
||||
Foundation.inherit(this, 'random_str');
|
||||
this.bindings(method, options);
|
||||
},
|
||||
|
||||
should_show : function (target, tip) {
|
||||
var settings = $.extend({}, this.settings, this.data_options(target));
|
||||
|
||||
if (settings.show_on === 'all') {
|
||||
return true;
|
||||
} else if (this.small() && settings.show_on === 'small') {
|
||||
return true;
|
||||
} else if (this.medium() && settings.show_on === 'medium') {
|
||||
return true;
|
||||
} else if (this.large() && settings.show_on === 'large') {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
|
||||
medium : function () {
|
||||
return matchMedia(Foundation.media_queries['medium']).matches;
|
||||
},
|
||||
|
||||
large : function () {
|
||||
return matchMedia(Foundation.media_queries['large']).matches;
|
||||
},
|
||||
|
||||
events : function (instance) {
|
||||
var self = this,
|
||||
S = self.S;
|
||||
|
||||
self.create(this.S(instance));
|
||||
|
||||
$(this.scope)
|
||||
.off('.tooltip')
|
||||
.on('mouseenter.fndtn.tooltip mouseleave.fndtn.tooltip touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip',
|
||||
'[' + this.attr_name() + ']', function (e) {
|
||||
var $this = S(this),
|
||||
settings = $.extend({}, self.settings, self.data_options($this)),
|
||||
is_touch = false;
|
||||
|
||||
if (Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type) && S(e.target).is('a')) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (/mouse/i.test(e.type) && self.ie_touch(e)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($this.hasClass('open')) {
|
||||
if (Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) {
|
||||
e.preventDefault();
|
||||
}
|
||||
self.hide($this);
|
||||
} else {
|
||||
if (settings.disable_for_touch && Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) {
|
||||
return;
|
||||
} else if (!settings.disable_for_touch && Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) {
|
||||
e.preventDefault();
|
||||
S(settings.tooltip_class + '.open').hide();
|
||||
is_touch = true;
|
||||
}
|
||||
|
||||
if (/enter|over/i.test(e.type)) {
|
||||
this.timer = setTimeout(function () {
|
||||
var tip = self.showTip($this);
|
||||
}.bind(this), self.settings.hover_delay);
|
||||
} else if (e.type === 'mouseout' || e.type === 'mouseleave') {
|
||||
clearTimeout(this.timer);
|
||||
self.hide($this);
|
||||
} else {
|
||||
self.showTip($this);
|
||||
}
|
||||
}
|
||||
})
|
||||
.on('mouseleave.fndtn.tooltip touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip', '[' + this.attr_name() + '].open', function (e) {
|
||||
if (/mouse/i.test(e.type) && self.ie_touch(e)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($(this).data('tooltip-open-event-type') == 'touch' && e.type == 'mouseleave') {
|
||||
return;
|
||||
} else if ($(this).data('tooltip-open-event-type') == 'mouse' && /MSPointerDown|touchstart/i.test(e.type)) {
|
||||
self.convert_to_touch($(this));
|
||||
} else {
|
||||
self.hide($(this));
|
||||
}
|
||||
})
|
||||
.on('DOMNodeRemoved DOMAttrModified', '[' + this.attr_name() + ']:not(a)', function (e) {
|
||||
self.hide(S(this));
|
||||
});
|
||||
},
|
||||
|
||||
ie_touch : function (e) {
|
||||
// How do I distinguish between IE11 and Windows Phone 8?????
|
||||
return false;
|
||||
},
|
||||
|
||||
showTip : function ($target) {
|
||||
var $tip = this.getTip($target);
|
||||
if (this.should_show($target, $tip)) {
|
||||
return this.show($target);
|
||||
}
|
||||
return;
|
||||
},
|
||||
|
||||
getTip : function ($target) {
|
||||
var selector = this.selector($target),
|
||||
settings = $.extend({}, this.settings, this.data_options($target)),
|
||||
tip = null;
|
||||
|
||||
if (selector) {
|
||||
tip = this.S('span[data-selector="' + selector + '"]' + settings.tooltip_class);
|
||||
}
|
||||
|
||||
return (typeof tip === 'object') ? tip : false;
|
||||
},
|
||||
|
||||
selector : function ($target) {
|
||||
var id = $target.attr('id'),
|
||||
dataSelector = $target.attr(this.attr_name()) || $target.attr('data-selector');
|
||||
|
||||
if ((id && id.length < 1 || !id) && typeof dataSelector != 'string') {
|
||||
dataSelector = this.random_str(6);
|
||||
$target
|
||||
.attr('data-selector', dataSelector)
|
||||
.attr('aria-describedby', dataSelector);
|
||||
}
|
||||
|
||||
return (id && id.length > 0) ? id : dataSelector;
|
||||
},
|
||||
|
||||
create : function ($target) {
|
||||
var self = this,
|
||||
settings = $.extend({}, this.settings, this.data_options($target)),
|
||||
tip_template = this.settings.tip_template;
|
||||
|
||||
if (typeof settings.tip_template === 'string' && window.hasOwnProperty(settings.tip_template)) {
|
||||
tip_template = window[settings.tip_template];
|
||||
}
|
||||
|
||||
var $tip = $(tip_template(this.selector($target), $('<div></div>').html($target.attr('title')).html())),
|
||||
classes = this.inheritable_classes($target);
|
||||
|
||||
$tip.addClass(classes).appendTo(settings.append_to);
|
||||
|
||||
if (Modernizr.touch) {
|
||||
$tip.append('<span class="tap-to-close">' + settings.touch_close_text + '</span>');
|
||||
$tip.on('touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip', function (e) {
|
||||
self.hide($target);
|
||||
});
|
||||
}
|
||||
|
||||
$target.removeAttr('title').attr('title', '');
|
||||
},
|
||||
|
||||
reposition : function (target, tip, classes) {
|
||||
var width, nub, nubHeight, nubWidth, column, objPos;
|
||||
|
||||
tip.css('visibility', 'hidden').show();
|
||||
|
||||
width = target.data('width');
|
||||
nub = tip.children('.nub');
|
||||
nubHeight = nub.outerHeight();
|
||||
nubWidth = nub.outerHeight();
|
||||
|
||||
if (this.small()) {
|
||||
tip.css({'width' : '100%'});
|
||||
} else {
|
||||
tip.css({'width' : (width) ? width : 'auto'});
|
||||
}
|
||||
|
||||
objPos = function (obj, top, right, bottom, left, width) {
|
||||
return obj.css({
|
||||
'top' : (top) ? top : 'auto',
|
||||
'bottom' : (bottom) ? bottom : 'auto',
|
||||
'left' : (left) ? left : 'auto',
|
||||
'right' : (right) ? right : 'auto'
|
||||
}).end();
|
||||
};
|
||||
|
||||
objPos(tip, (target.offset().top + target.outerHeight() + 10), 'auto', 'auto', target.offset().left);
|
||||
|
||||
if (this.small()) {
|
||||
objPos(tip, (target.offset().top + target.outerHeight() + 10), 'auto', 'auto', 12.5, $(this.scope).width());
|
||||
tip.addClass('tip-override');
|
||||
objPos(nub, -nubHeight, 'auto', 'auto', target.offset().left);
|
||||
} else {
|
||||
var left = target.offset().left;
|
||||
if (Foundation.rtl) {
|
||||
nub.addClass('rtl');
|
||||
left = target.offset().left + target.outerWidth() - tip.outerWidth();
|
||||
}
|
||||
objPos(tip, (target.offset().top + target.outerHeight() + 10), 'auto', 'auto', left);
|
||||
tip.removeClass('tip-override');
|
||||
if (classes && classes.indexOf('tip-top') > -1) {
|
||||
if (Foundation.rtl) {
|
||||
nub.addClass('rtl');
|
||||
}
|
||||
objPos(tip, (target.offset().top - tip.outerHeight()), 'auto', 'auto', left)
|
||||
.removeClass('tip-override');
|
||||
} else if (classes && classes.indexOf('tip-left') > -1) {
|
||||
objPos(tip, (target.offset().top + (target.outerHeight() / 2) - (tip.outerHeight() / 2)), 'auto', 'auto', (target.offset().left - tip.outerWidth() - nubHeight))
|
||||
.removeClass('tip-override');
|
||||
nub.removeClass('rtl');
|
||||
} else if (classes && classes.indexOf('tip-right') > -1) {
|
||||
objPos(tip, (target.offset().top + (target.outerHeight() / 2) - (tip.outerHeight() / 2)), 'auto', 'auto', (target.offset().left + target.outerWidth() + nubHeight))
|
||||
.removeClass('tip-override');
|
||||
nub.removeClass('rtl');
|
||||
}
|
||||
}
|
||||
|
||||
tip.css('visibility', 'visible').hide();
|
||||
},
|
||||
|
||||
small : function () {
|
||||
return matchMedia(Foundation.media_queries.small).matches &&
|
||||
!matchMedia(Foundation.media_queries.medium).matches;
|
||||
},
|
||||
|
||||
inheritable_classes : function ($target) {
|
||||
var settings = $.extend({}, this.settings, this.data_options($target)),
|
||||
inheritables = ['tip-top', 'tip-left', 'tip-bottom', 'tip-right', 'radius', 'round'].concat(settings.additional_inheritable_classes),
|
||||
classes = $target.attr('class'),
|
||||
filtered = classes ? $.map(classes.split(' '), function (el, i) {
|
||||
if ($.inArray(el, inheritables) !== -1) {
|
||||
return el;
|
||||
}
|
||||
}).join(' ') : '';
|
||||
|
||||
return $.trim(filtered);
|
||||
},
|
||||
|
||||
convert_to_touch : function ($target) {
|
||||
var self = this,
|
||||
$tip = self.getTip($target),
|
||||
settings = $.extend({}, self.settings, self.data_options($target));
|
||||
|
||||
if ($tip.find('.tap-to-close').length === 0) {
|
||||
$tip.append('<span class="tap-to-close">' + settings.touch_close_text + '</span>');
|
||||
$tip.on('click.fndtn.tooltip.tapclose touchstart.fndtn.tooltip.tapclose MSPointerDown.fndtn.tooltip.tapclose', function (e) {
|
||||
self.hide($target);
|
||||
});
|
||||
}
|
||||
|
||||
$target.data('tooltip-open-event-type', 'touch');
|
||||
},
|
||||
|
||||
show : function ($target) {
|
||||
var $tip = this.getTip($target);
|
||||
|
||||
if ($target.data('tooltip-open-event-type') == 'touch') {
|
||||
this.convert_to_touch($target);
|
||||
}
|
||||
|
||||
this.reposition($target, $tip, $target.attr('class'));
|
||||
$target.addClass('open');
|
||||
$tip.fadeIn(150);
|
||||
},
|
||||
|
||||
hide : function ($target) {
|
||||
var $tip = this.getTip($target);
|
||||
|
||||
$tip.fadeOut(150, function () {
|
||||
$tip.find('.tap-to-close').remove();
|
||||
$tip.off('click.fndtn.tooltip.tapclose MSPointerDown.fndtn.tapclose');
|
||||
$target.removeClass('open');
|
||||
});
|
||||
},
|
||||
|
||||
off : function () {
|
||||
var self = this;
|
||||
this.S(this.scope).off('.fndtn.tooltip');
|
||||
this.S(this.settings.tooltip_class).each(function (i) {
|
||||
$('[' + self.attr_name() + ']').eq(i).attr('title', $(this).text());
|
||||
}).remove();
|
||||
},
|
||||
|
||||
reflow : function () {}
|
||||
};
|
||||
}(jQuery, window, window.document));
|
||||
452
sites/all/themes/gui/materiobasetheme/bower_components/foundation/js/foundation/foundation.topbar.js
vendored
Normal file
452
sites/all/themes/gui/materiobasetheme/bower_components/foundation/js/foundation/foundation.topbar.js
vendored
Normal file
@@ -0,0 +1,452 @@
|
||||
;(function ($, window, document, undefined) {
|
||||
'use strict';
|
||||
|
||||
Foundation.libs.topbar = {
|
||||
name : 'topbar',
|
||||
|
||||
version : '5.5.1',
|
||||
|
||||
settings : {
|
||||
index : 0,
|
||||
sticky_class : 'sticky',
|
||||
custom_back_text : true,
|
||||
back_text : 'Back',
|
||||
mobile_show_parent_link : true,
|
||||
is_hover : true,
|
||||
scrolltop : true, // jump to top when sticky nav menu toggle is clicked
|
||||
sticky_on : 'all'
|
||||
},
|
||||
|
||||
init : function (section, method, options) {
|
||||
Foundation.inherit(this, 'add_custom_rule register_media throttle');
|
||||
var self = this;
|
||||
|
||||
self.register_media('topbar', 'foundation-mq-topbar');
|
||||
|
||||
this.bindings(method, options);
|
||||
|
||||
self.S('[' + this.attr_name() + ']', this.scope).each(function () {
|
||||
var topbar = $(this),
|
||||
settings = topbar.data(self.attr_name(true) + '-init'),
|
||||
section = self.S('section, .top-bar-section', this);
|
||||
topbar.data('index', 0);
|
||||
var topbarContainer = topbar.parent();
|
||||
if (topbarContainer.hasClass('fixed') || self.is_sticky(topbar, topbarContainer, settings) ) {
|
||||
self.settings.sticky_class = settings.sticky_class;
|
||||
self.settings.sticky_topbar = topbar;
|
||||
topbar.data('height', topbarContainer.outerHeight());
|
||||
topbar.data('stickyoffset', topbarContainer.offset().top);
|
||||
} else {
|
||||
topbar.data('height', topbar.outerHeight());
|
||||
}
|
||||
|
||||
if (!settings.assembled) {
|
||||
self.assemble(topbar);
|
||||
}
|
||||
|
||||
if (settings.is_hover) {
|
||||
self.S('.has-dropdown', topbar).addClass('not-click');
|
||||
} else {
|
||||
self.S('.has-dropdown', topbar).removeClass('not-click');
|
||||
}
|
||||
|
||||
// Pad body when sticky (scrolled) or fixed.
|
||||
self.add_custom_rule('.f-topbar-fixed { padding-top: ' + topbar.data('height') + 'px }');
|
||||
|
||||
if (topbarContainer.hasClass('fixed')) {
|
||||
self.S('body').addClass('f-topbar-fixed');
|
||||
}
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
is_sticky : function (topbar, topbarContainer, settings) {
|
||||
var sticky = topbarContainer.hasClass(settings.sticky_class);
|
||||
var smallMatch = matchMedia(Foundation.media_queries.small).matches;
|
||||
var medMatch = matchMedia(Foundation.media_queries.medium).matches;
|
||||
var lrgMatch = matchMedia(Foundation.media_queries.large).matches;
|
||||
|
||||
if (sticky && settings.sticky_on === 'all') {
|
||||
return true;
|
||||
}
|
||||
if (sticky && this.small() && settings.sticky_on.indexOf('small') !== -1) {
|
||||
if (smallMatch && !medMatch && !lrgMatch) { return true; }
|
||||
}
|
||||
if (sticky && this.medium() && settings.sticky_on.indexOf('medium') !== -1) {
|
||||
if (smallMatch && medMatch && !lrgMatch) { return true; }
|
||||
}
|
||||
if (sticky && this.large() && settings.sticky_on.indexOf('large') !== -1) {
|
||||
if (smallMatch && medMatch && lrgMatch) { return true; }
|
||||
}
|
||||
|
||||
// fix for iOS browsers
|
||||
if (sticky && navigator.userAgent.match(/(iPad|iPhone|iPod)/g)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
|
||||
toggle : function (toggleEl) {
|
||||
var self = this,
|
||||
topbar;
|
||||
|
||||
if (toggleEl) {
|
||||
topbar = self.S(toggleEl).closest('[' + this.attr_name() + ']');
|
||||
} else {
|
||||
topbar = self.S('[' + this.attr_name() + ']');
|
||||
}
|
||||
|
||||
var settings = topbar.data(this.attr_name(true) + '-init');
|
||||
|
||||
var section = self.S('section, .top-bar-section', topbar);
|
||||
|
||||
if (self.breakpoint()) {
|
||||
if (!self.rtl) {
|
||||
section.css({left : '0%'});
|
||||
$('>.name', section).css({left : '100%'});
|
||||
} else {
|
||||
section.css({right : '0%'});
|
||||
$('>.name', section).css({right : '100%'});
|
||||
}
|
||||
|
||||
self.S('li.moved', section).removeClass('moved');
|
||||
topbar.data('index', 0);
|
||||
|
||||
topbar
|
||||
.toggleClass('expanded')
|
||||
.css('height', '');
|
||||
}
|
||||
|
||||
if (settings.scrolltop) {
|
||||
if (!topbar.hasClass('expanded')) {
|
||||
if (topbar.hasClass('fixed')) {
|
||||
topbar.parent().addClass('fixed');
|
||||
topbar.removeClass('fixed');
|
||||
self.S('body').addClass('f-topbar-fixed');
|
||||
}
|
||||
} else if (topbar.parent().hasClass('fixed')) {
|
||||
if (settings.scrolltop) {
|
||||
topbar.parent().removeClass('fixed');
|
||||
topbar.addClass('fixed');
|
||||
self.S('body').removeClass('f-topbar-fixed');
|
||||
|
||||
window.scrollTo(0, 0);
|
||||
} else {
|
||||
topbar.parent().removeClass('expanded');
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (self.is_sticky(topbar, topbar.parent(), settings)) {
|
||||
topbar.parent().addClass('fixed');
|
||||
}
|
||||
|
||||
if (topbar.parent().hasClass('fixed')) {
|
||||
if (!topbar.hasClass('expanded')) {
|
||||
topbar.removeClass('fixed');
|
||||
topbar.parent().removeClass('expanded');
|
||||
self.update_sticky_positioning();
|
||||
} else {
|
||||
topbar.addClass('fixed');
|
||||
topbar.parent().addClass('expanded');
|
||||
self.S('body').addClass('f-topbar-fixed');
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
timer : null,
|
||||
|
||||
events : function (bar) {
|
||||
var self = this,
|
||||
S = this.S;
|
||||
|
||||
S(this.scope)
|
||||
.off('.topbar')
|
||||
.on('click.fndtn.topbar', '[' + this.attr_name() + '] .toggle-topbar', function (e) {
|
||||
e.preventDefault();
|
||||
self.toggle(this);
|
||||
})
|
||||
.on('click.fndtn.topbar', '.top-bar .top-bar-section li a[href^="#"],[' + this.attr_name() + '] .top-bar-section li a[href^="#"]', function (e) {
|
||||
var li = $(this).closest('li');
|
||||
if (self.breakpoint() && !li.hasClass('back') && !li.hasClass('has-dropdown')) {
|
||||
self.toggle();
|
||||
}
|
||||
})
|
||||
.on('click.fndtn.topbar', '[' + this.attr_name() + '] li.has-dropdown', function (e) {
|
||||
var li = S(this),
|
||||
target = S(e.target),
|
||||
topbar = li.closest('[' + self.attr_name() + ']'),
|
||||
settings = topbar.data(self.attr_name(true) + '-init');
|
||||
|
||||
if (target.data('revealId')) {
|
||||
self.toggle();
|
||||
return;
|
||||
}
|
||||
|
||||
if (self.breakpoint()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (settings.is_hover && !Modernizr.touch) {
|
||||
return;
|
||||
}
|
||||
|
||||
e.stopImmediatePropagation();
|
||||
|
||||
if (li.hasClass('hover')) {
|
||||
li
|
||||
.removeClass('hover')
|
||||
.find('li')
|
||||
.removeClass('hover');
|
||||
|
||||
li.parents('li.hover')
|
||||
.removeClass('hover');
|
||||
} else {
|
||||
li.addClass('hover');
|
||||
|
||||
$(li).siblings().removeClass('hover');
|
||||
|
||||
if (target[0].nodeName === 'A' && target.parent().hasClass('has-dropdown')) {
|
||||
e.preventDefault();
|
||||
}
|
||||
}
|
||||
})
|
||||
.on('click.fndtn.topbar', '[' + this.attr_name() + '] .has-dropdown>a', function (e) {
|
||||
if (self.breakpoint()) {
|
||||
|
||||
e.preventDefault();
|
||||
|
||||
var $this = S(this),
|
||||
topbar = $this.closest('[' + self.attr_name() + ']'),
|
||||
section = topbar.find('section, .top-bar-section'),
|
||||
dropdownHeight = $this.next('.dropdown').outerHeight(),
|
||||
$selectedLi = $this.closest('li');
|
||||
|
||||
topbar.data('index', topbar.data('index') + 1);
|
||||
$selectedLi.addClass('moved');
|
||||
|
||||
if (!self.rtl) {
|
||||
section.css({left : -(100 * topbar.data('index')) + '%'});
|
||||
section.find('>.name').css({left : 100 * topbar.data('index') + '%'});
|
||||
} else {
|
||||
section.css({right : -(100 * topbar.data('index')) + '%'});
|
||||
section.find('>.name').css({right : 100 * topbar.data('index') + '%'});
|
||||
}
|
||||
|
||||
topbar.css('height', $this.siblings('ul').outerHeight(true) + topbar.data('height'));
|
||||
}
|
||||
});
|
||||
|
||||
S(window).off('.topbar').on('resize.fndtn.topbar', self.throttle(function () {
|
||||
self.resize.call(self);
|
||||
}, 50)).trigger('resize').trigger('resize.fndtn.topbar').load(function () {
|
||||
// Ensure that the offset is calculated after all of the pages resources have loaded
|
||||
S(this).trigger('resize.fndtn.topbar');
|
||||
});
|
||||
|
||||
S('body').off('.topbar').on('click.fndtn.topbar', function (e) {
|
||||
var parent = S(e.target).closest('li').closest('li.hover');
|
||||
|
||||
if (parent.length > 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
S('[' + self.attr_name() + '] li.hover').removeClass('hover');
|
||||
});
|
||||
|
||||
// Go up a level on Click
|
||||
S(this.scope).on('click.fndtn.topbar', '[' + this.attr_name() + '] .has-dropdown .back', function (e) {
|
||||
e.preventDefault();
|
||||
|
||||
var $this = S(this),
|
||||
topbar = $this.closest('[' + self.attr_name() + ']'),
|
||||
section = topbar.find('section, .top-bar-section'),
|
||||
settings = topbar.data(self.attr_name(true) + '-init'),
|
||||
$movedLi = $this.closest('li.moved'),
|
||||
$previousLevelUl = $movedLi.parent();
|
||||
|
||||
topbar.data('index', topbar.data('index') - 1);
|
||||
|
||||
if (!self.rtl) {
|
||||
section.css({left : -(100 * topbar.data('index')) + '%'});
|
||||
section.find('>.name').css({left : 100 * topbar.data('index') + '%'});
|
||||
} else {
|
||||
section.css({right : -(100 * topbar.data('index')) + '%'});
|
||||
section.find('>.name').css({right : 100 * topbar.data('index') + '%'});
|
||||
}
|
||||
|
||||
if (topbar.data('index') === 0) {
|
||||
topbar.css('height', '');
|
||||
} else {
|
||||
topbar.css('height', $previousLevelUl.outerHeight(true) + topbar.data('height'));
|
||||
}
|
||||
|
||||
setTimeout(function () {
|
||||
$movedLi.removeClass('moved');
|
||||
}, 300);
|
||||
});
|
||||
|
||||
// Show dropdown menus when their items are focused
|
||||
S(this.scope).find('.dropdown a')
|
||||
.focus(function () {
|
||||
$(this).parents('.has-dropdown').addClass('hover');
|
||||
})
|
||||
.blur(function () {
|
||||
$(this).parents('.has-dropdown').removeClass('hover');
|
||||
});
|
||||
},
|
||||
|
||||
resize : function () {
|
||||
var self = this;
|
||||
self.S('[' + this.attr_name() + ']').each(function () {
|
||||
var topbar = self.S(this),
|
||||
settings = topbar.data(self.attr_name(true) + '-init');
|
||||
|
||||
var stickyContainer = topbar.parent('.' + self.settings.sticky_class);
|
||||
var stickyOffset;
|
||||
|
||||
if (!self.breakpoint()) {
|
||||
var doToggle = topbar.hasClass('expanded');
|
||||
topbar
|
||||
.css('height', '')
|
||||
.removeClass('expanded')
|
||||
.find('li')
|
||||
.removeClass('hover');
|
||||
|
||||
if (doToggle) {
|
||||
self.toggle(topbar);
|
||||
}
|
||||
}
|
||||
|
||||
if (self.is_sticky(topbar, stickyContainer, settings)) {
|
||||
if (stickyContainer.hasClass('fixed')) {
|
||||
// Remove the fixed to allow for correct calculation of the offset.
|
||||
stickyContainer.removeClass('fixed');
|
||||
|
||||
stickyOffset = stickyContainer.offset().top;
|
||||
if (self.S(document.body).hasClass('f-topbar-fixed')) {
|
||||
stickyOffset -= topbar.data('height');
|
||||
}
|
||||
|
||||
topbar.data('stickyoffset', stickyOffset);
|
||||
stickyContainer.addClass('fixed');
|
||||
} else {
|
||||
stickyOffset = stickyContainer.offset().top;
|
||||
topbar.data('stickyoffset', stickyOffset);
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
},
|
||||
|
||||
breakpoint : function () {
|
||||
return !matchMedia(Foundation.media_queries['topbar']).matches;
|
||||
},
|
||||
|
||||
small : function () {
|
||||
return matchMedia(Foundation.media_queries['small']).matches;
|
||||
},
|
||||
|
||||
medium : function () {
|
||||
return matchMedia(Foundation.media_queries['medium']).matches;
|
||||
},
|
||||
|
||||
large : function () {
|
||||
return matchMedia(Foundation.media_queries['large']).matches;
|
||||
},
|
||||
|
||||
assemble : function (topbar) {
|
||||
var self = this,
|
||||
settings = topbar.data(this.attr_name(true) + '-init'),
|
||||
section = self.S('section, .top-bar-section', topbar);
|
||||
|
||||
// Pull element out of the DOM for manipulation
|
||||
section.detach();
|
||||
|
||||
self.S('.has-dropdown>a', section).each(function () {
|
||||
var $link = self.S(this),
|
||||
$dropdown = $link.siblings('.dropdown'),
|
||||
url = $link.attr('href'),
|
||||
$titleLi;
|
||||
|
||||
if (!$dropdown.find('.title.back').length) {
|
||||
|
||||
if (settings.mobile_show_parent_link == true && url) {
|
||||
$titleLi = $('<li class="title back js-generated"><h5><a href="javascript:void(0)"></a></h5></li><li class="parent-link hide-for-large-up"><a class="parent-link js-generated" href="' + url + '">' + $link.html() +'</a></li>');
|
||||
} else {
|
||||
$titleLi = $('<li class="title back js-generated"><h5><a href="javascript:void(0)"></a></h5>');
|
||||
}
|
||||
|
||||
// Copy link to subnav
|
||||
if (settings.custom_back_text == true) {
|
||||
$('h5>a', $titleLi).html(settings.back_text);
|
||||
} else {
|
||||
$('h5>a', $titleLi).html('« ' + $link.html());
|
||||
}
|
||||
$dropdown.prepend($titleLi);
|
||||
}
|
||||
});
|
||||
|
||||
// Put element back in the DOM
|
||||
section.appendTo(topbar);
|
||||
|
||||
// check for sticky
|
||||
this.sticky();
|
||||
|
||||
this.assembled(topbar);
|
||||
},
|
||||
|
||||
assembled : function (topbar) {
|
||||
topbar.data(this.attr_name(true), $.extend({}, topbar.data(this.attr_name(true)), {assembled : true}));
|
||||
},
|
||||
|
||||
height : function (ul) {
|
||||
var total = 0,
|
||||
self = this;
|
||||
|
||||
$('> li', ul).each(function () {
|
||||
total += self.S(this).outerHeight(true);
|
||||
});
|
||||
|
||||
return total;
|
||||
},
|
||||
|
||||
sticky : function () {
|
||||
var self = this;
|
||||
|
||||
this.S(window).on('scroll', function () {
|
||||
self.update_sticky_positioning();
|
||||
});
|
||||
},
|
||||
|
||||
update_sticky_positioning : function () {
|
||||
var klass = '.' + this.settings.sticky_class,
|
||||
$window = this.S(window),
|
||||
self = this;
|
||||
|
||||
if (self.settings.sticky_topbar && self.is_sticky(this.settings.sticky_topbar, this.settings.sticky_topbar.parent(), this.settings)) {
|
||||
var distance = this.settings.sticky_topbar.data('stickyoffset');
|
||||
if (!self.S(klass).hasClass('expanded')) {
|
||||
if ($window.scrollTop() > (distance)) {
|
||||
if (!self.S(klass).hasClass('fixed')) {
|
||||
self.S(klass).addClass('fixed');
|
||||
self.S('body').addClass('f-topbar-fixed');
|
||||
}
|
||||
} else if ($window.scrollTop() <= distance) {
|
||||
if (self.S(klass).hasClass('fixed')) {
|
||||
self.S(klass).removeClass('fixed');
|
||||
self.S('body').removeClass('f-topbar-fixed');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
off : function () {
|
||||
this.S(this.scope).off('.fndtn.topbar');
|
||||
this.S(window).off('.fndtn.topbar');
|
||||
},
|
||||
|
||||
reflow : function () {}
|
||||
};
|
||||
}(jQuery, window, window.document));
|
||||
8
sites/all/themes/gui/materiobasetheme/bower_components/foundation/js/vendor/fastclick.js
vendored
Normal file
8
sites/all/themes/gui/materiobasetheme/bower_components/foundation/js/vendor/fastclick.js
vendored
Normal file
File diff suppressed because one or more lines are too long
8
sites/all/themes/gui/materiobasetheme/bower_components/foundation/js/vendor/jquery.cookie.js
vendored
Normal file
8
sites/all/themes/gui/materiobasetheme/bower_components/foundation/js/vendor/jquery.cookie.js
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
/*!
|
||||
* jQuery Cookie Plugin v1.4.1
|
||||
* https://github.com/carhartl/jquery-cookie
|
||||
*
|
||||
* Copyright 2013 Klaus Hartl
|
||||
* Released under the MIT license
|
||||
*/
|
||||
!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){function b(a){return h.raw?a:encodeURIComponent(a)}function c(a){return h.raw?a:decodeURIComponent(a)}function d(a){return b(h.json?JSON.stringify(a):String(a))}function e(a){0===a.indexOf('"')&&(a=a.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\"));try{return a=decodeURIComponent(a.replace(g," ")),h.json?JSON.parse(a):a}catch(b){}}function f(b,c){var d=h.raw?b:e(b);return a.isFunction(c)?c(d):d}var g=/\+/g,h=a.cookie=function(e,g,i){if(void 0!==g&&!a.isFunction(g)){if(i=a.extend({},h.defaults,i),"number"==typeof i.expires){var j=i.expires,k=i.expires=new Date;k.setTime(+k+864e5*j)}return document.cookie=[b(e),"=",d(g),i.expires?"; expires="+i.expires.toUTCString():"",i.path?"; path="+i.path:"",i.domain?"; domain="+i.domain:"",i.secure?"; secure":""].join("")}for(var l=e?void 0:{},m=document.cookie?document.cookie.split("; "):[],n=0,o=m.length;o>n;n++){var p=m[n].split("="),q=c(p.shift()),r=p.join("=");if(e&&e===q){l=f(r,g);break}e||void 0===(r=f(r))||(l[q]=r)}return l};h.defaults={},a.removeCookie=function(b,c){return void 0===a.cookie(b)?!1:(a.cookie(b,"",a.extend({},c,{expires:-1})),!a.cookie(b))}});
|
||||
26
sites/all/themes/gui/materiobasetheme/bower_components/foundation/js/vendor/jquery.js
vendored
Normal file
26
sites/all/themes/gui/materiobasetheme/bower_components/foundation/js/vendor/jquery.js
vendored
Normal file
File diff suppressed because one or more lines are too long
8
sites/all/themes/gui/materiobasetheme/bower_components/foundation/js/vendor/modernizr.js
vendored
Normal file
8
sites/all/themes/gui/materiobasetheme/bower_components/foundation/js/vendor/modernizr.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2
sites/all/themes/gui/materiobasetheme/bower_components/foundation/js/vendor/placeholder.js
vendored
Normal file
2
sites/all/themes/gui/materiobasetheme/bower_components/foundation/js/vendor/placeholder.js
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
/*! http://mths.be/placeholder v2.0.9 by @mathias */
|
||||
!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a(jQuery)}(function(a){function b(b){var c={},d=/^jQuery\d+$/;return a.each(b.attributes,function(a,b){b.specified&&!d.test(b.name)&&(c[b.name]=b.value)}),c}function c(b,c){var d=this,f=a(d);if(d.value==f.attr("placeholder")&&f.hasClass("placeholder"))if(f.data("placeholder-password")){if(f=f.hide().nextAll('input[type="password"]:first').show().attr("id",f.removeAttr("id").data("placeholder-id")),b===!0)return f[0].value=c;f.focus()}else d.value="",f.removeClass("placeholder"),d==e()&&d.select()}function d(){var d,e=this,f=a(e),g=this.id;if(""===e.value){if("password"===e.type){if(!f.data("placeholder-textinput")){try{d=f.clone().attr({type:"text"})}catch(h){d=a("<input>").attr(a.extend(b(this),{type:"text"}))}d.removeAttr("name").data({"placeholder-password":f,"placeholder-id":g}).bind("focus.placeholder",c),f.data({"placeholder-textinput":d,"placeholder-id":g}).before(d)}f=f.removeAttr("id").hide().prevAll('input[type="text"]:first').attr("id",g).show()}f.addClass("placeholder"),f[0].value=f.attr("placeholder")}else f.removeClass("placeholder")}function e(){try{return document.activeElement}catch(a){}}var f,g,h="[object OperaMini]"==Object.prototype.toString.call(window.operamini),i="placeholder"in document.createElement("input")&&!h,j="placeholder"in document.createElement("textarea")&&!h,k=a.valHooks,l=a.propHooks;i&&j?(g=a.fn.placeholder=function(){return this},g.input=g.textarea=!0):(g=a.fn.placeholder=function(){var a=this;return a.filter((i?"textarea":":input")+"[placeholder]").not(".placeholder").bind({"focus.placeholder":c,"blur.placeholder":d}).data("placeholder-enabled",!0).trigger("blur.placeholder"),a},g.input=i,g.textarea=j,f={get:function(b){var c=a(b),d=c.data("placeholder-password");return d?d[0].value:c.data("placeholder-enabled")&&c.hasClass("placeholder")?"":b.value},set:function(b,f){var g=a(b),h=g.data("placeholder-password");return h?h[0].value=f:g.data("placeholder-enabled")?(""===f?(b.value=f,b!=e()&&d.call(b)):g.hasClass("placeholder")?c.call(b,!0,f)||(b.value=f):b.value=f,g):b.value=f}},i||(k.input=f,l.value=f),j||(k.textarea=f,l.value=f),a(function(){a(document).delegate("form","submit.placeholder",function(){var b=a(".placeholder",this).each(c);setTimeout(function(){b.each(d)},10)})}),a(window).bind("beforeunload.placeholder",function(){a(".placeholder").each(function(){this.value=""})}))});
|
||||
45
sites/all/themes/gui/materiobasetheme/bower_components/foundation/scss/foundation.scss
vendored
Normal file
45
sites/all/themes/gui/materiobasetheme/bower_components/foundation/scss/foundation.scss
vendored
Normal file
@@ -0,0 +1,45 @@
|
||||
@charset "UTF-8";
|
||||
// Foundation by ZURB
|
||||
// foundation.zurb.com
|
||||
// Licensed under MIT Open Source
|
||||
|
||||
// Make sure the charset is set appropriately
|
||||
|
||||
// Behold, here are all the Foundation components.
|
||||
@import "foundation/components/grid";
|
||||
@import "foundation/components/accordion";
|
||||
@import "foundation/components/alert-boxes";
|
||||
@import "foundation/components/block-grid";
|
||||
@import "foundation/components/breadcrumbs";
|
||||
@import "foundation/components/button-groups";
|
||||
@import "foundation/components/buttons";
|
||||
@import "foundation/components/clearing";
|
||||
@import "foundation/components/dropdown";
|
||||
@import "foundation/components/dropdown-buttons";
|
||||
@import "foundation/components/flex-video";
|
||||
@import "foundation/components/forms";
|
||||
@import "foundation/components/icon-bar";
|
||||
@import "foundation/components/inline-lists";
|
||||
@import "foundation/components/joyride";
|
||||
@import "foundation/components/keystrokes";
|
||||
@import "foundation/components/labels";
|
||||
@import "foundation/components/magellan";
|
||||
@import "foundation/components/orbit";
|
||||
@import "foundation/components/pagination";
|
||||
@import "foundation/components/panels";
|
||||
@import "foundation/components/pricing-tables";
|
||||
@import "foundation/components/progress-bars";
|
||||
@import "foundation/components/range-slider";
|
||||
@import "foundation/components/reveal";
|
||||
@import "foundation/components/side-nav";
|
||||
@import "foundation/components/split-buttons";
|
||||
@import "foundation/components/sub-nav";
|
||||
@import "foundation/components/switches";
|
||||
@import "foundation/components/tables";
|
||||
@import "foundation/components/tabs";
|
||||
@import "foundation/components/thumbs";
|
||||
@import "foundation/components/tooltips";
|
||||
@import "foundation/components/top-bar";
|
||||
@import "foundation/components/type";
|
||||
@import "foundation/components/offcanvas";
|
||||
@import "foundation/components/visibility";
|
||||
146
sites/all/themes/gui/materiobasetheme/bower_components/foundation/scss/foundation/_functions.scss
vendored
Normal file
146
sites/all/themes/gui/materiobasetheme/bower_components/foundation/scss/foundation/_functions.scss
vendored
Normal file
@@ -0,0 +1,146 @@
|
||||
// Foundation by ZURB
|
||||
// foundation.zurb.com
|
||||
// Licensed under MIT Open Source
|
||||
|
||||
// This is the default html and body font-size for the base rem value.
|
||||
$rem-base: 16px !default;
|
||||
|
||||
// IMPORT ONCE
|
||||
// We use this to prevent styles from being loaded multiple times for components that rely on other components.
|
||||
$modules: () !default;
|
||||
@mixin exports($name) {
|
||||
// Import from global scope
|
||||
$modules: $modules !global;
|
||||
// Check if a module is already on the list
|
||||
$module_index: index($modules, $name);
|
||||
@if (($module_index == null) or ($module_index == false)) {
|
||||
$modules: append($modules, $name) !global;
|
||||
@content;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// @functions
|
||||
//
|
||||
|
||||
|
||||
// RANGES
|
||||
// We use these functions to define ranges for various things, like media queries.
|
||||
@function lower-bound($range){
|
||||
@if length($range) <= 0 {
|
||||
@return 0;
|
||||
}
|
||||
@return nth($range,1);
|
||||
}
|
||||
|
||||
@function upper-bound($range) {
|
||||
@if length($range) < 2 {
|
||||
@return 999999999999;
|
||||
}
|
||||
@return nth($range, 2);
|
||||
}
|
||||
|
||||
// STRIP UNIT
|
||||
// It strips the unit of measure and returns it
|
||||
@function strip-unit($num) {
|
||||
@return $num / ($num * 0 + 1);
|
||||
}
|
||||
|
||||
// TEXT INPUT TYPES
|
||||
|
||||
@function text-inputs( $types: all, $selector: input ) {
|
||||
|
||||
$return: ();
|
||||
|
||||
$all-text-input-types:
|
||||
text
|
||||
password
|
||||
date
|
||||
datetime
|
||||
datetime-local
|
||||
month
|
||||
week
|
||||
email
|
||||
number
|
||||
search
|
||||
tel
|
||||
time
|
||||
url
|
||||
color
|
||||
textarea;
|
||||
|
||||
@if $types == all { $types: $all-text-input-types; }
|
||||
|
||||
@each $type in $types {
|
||||
@if $type == textarea {
|
||||
@if $selector == input {
|
||||
$return: append($return, unquote('#{$type}'), comma)
|
||||
} @else {
|
||||
$return: append($return, unquote('#{$type}#{$selector}'), comma)
|
||||
}
|
||||
} @else {
|
||||
$return: append($return, unquote('#{$selector}[type="#{$type}"]'), comma)
|
||||
}
|
||||
}
|
||||
|
||||
@return $return;
|
||||
|
||||
}
|
||||
|
||||
// CONVERT TO REM
|
||||
@function convert-to-rem($value, $base-value: $rem-base) {
|
||||
$value: strip-unit($value) / strip-unit($base-value) * 1rem;
|
||||
@if ($value == 0rem) { $value: 0; } // Turn 0rem into 0
|
||||
@return $value;
|
||||
}
|
||||
|
||||
@function data($attr) {
|
||||
@if $namespace {
|
||||
@return '[data-' + $namespace + '-' + $attr + ']';
|
||||
}
|
||||
|
||||
@return '[data-' + $attr + ']';
|
||||
}
|
||||
|
||||
// REM CALC
|
||||
|
||||
// New Syntax, allows to optionally calculate on a different base value to counter compounding effect of rem's.
|
||||
// Call with 1, 2, 3 or 4 parameters, 'px' is not required but supported:
|
||||
//
|
||||
// rem-calc(10 20 30px 40);
|
||||
//
|
||||
// Space delimited, if you want to delimit using comma's, wrap it in another pair of brackets
|
||||
//
|
||||
// rem-calc((10, 20, 30, 40px));
|
||||
//
|
||||
// Optionally call with a different base (eg: 8px) to calculate rem.
|
||||
//
|
||||
// rem-calc(16px 32px 48px, 8px);
|
||||
//
|
||||
// If you require to comma separate your list
|
||||
//
|
||||
// rem-calc((16px, 32px, 48), 8px);
|
||||
|
||||
@function rem-calc($values, $base-value: $rem-base) {
|
||||
$max: length($values);
|
||||
|
||||
@if $max == 1 { @return convert-to-rem(nth($values, 1), $base-value); }
|
||||
|
||||
$remValues: ();
|
||||
@for $i from 1 through $max {
|
||||
$remValues: append($remValues, convert-to-rem(nth($values, $i), $base-value));
|
||||
}
|
||||
@return $remValues;
|
||||
}
|
||||
|
||||
// OLD EM CALC
|
||||
// Deprecated: We'll drop support for this in 5.1.0, use rem-calc()
|
||||
@function emCalc($values){
|
||||
@return rem-calc($values);
|
||||
}
|
||||
|
||||
// OLD EM CALC
|
||||
// Deprecated: We'll drop support for this in 5.1.0, use rem-calc()
|
||||
@function em-calc($values){
|
||||
@return rem-calc($values);
|
||||
}
|
||||
1467
sites/all/themes/gui/materiobasetheme/bower_components/foundation/scss/foundation/_settings.scss
vendored
Normal file
1467
sites/all/themes/gui/materiobasetheme/bower_components/foundation/scss/foundation/_settings.scss
vendored
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,157 @@
|
||||
// Foundation by ZURB
|
||||
// foundation.zurb.com
|
||||
// Licensed under MIT Open Source
|
||||
|
||||
@import "global";
|
||||
|
||||
//
|
||||
// @variables
|
||||
//
|
||||
|
||||
$include-html-accordion-classes: $include-html-classes !default;
|
||||
|
||||
$accordion-navigation-padding: rem-calc(16) !default;
|
||||
$accordion-navigation-bg-color: $silver !default;
|
||||
$accordion-navigation-hover-bg-color: scale-color($accordion-navigation-bg-color, $lightness: -5%) !default;
|
||||
$accordion-navigation-active-bg-color: scale-color($accordion-navigation-bg-color, $lightness: -3%) !default;
|
||||
$accordion-navigation-font-color: $jet !default;
|
||||
$accordion-navigation-font-size: rem-calc(16) !default;
|
||||
$accordion-navigation-font-family: $body-font-family !default;
|
||||
|
||||
$accordion-content-padding: ($column-gutter/2) !default;
|
||||
$accordion-content-active-bg-color: $white !default;
|
||||
|
||||
|
||||
// Mixin: accordion-container()
|
||||
// Decription: Responsible for the container component of accordions, generating styles relating to a margin of zero and a clearfix
|
||||
// Explicit Dependencies: a clearfix mixin *is* defined.
|
||||
// Implicit Dependencies: None
|
||||
|
||||
@mixin accordion-container() {
|
||||
@include clearfix;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
// Mixin: accordion-navigation( $bg, $hover-bg, $active-bg, $padding, $active_class, $font-color, $font-size, $font-family){
|
||||
// @params $bg-color: [ color or string ]: Specify the background color for the navigation element
|
||||
// @params $hover-bg-color [ color or string ]: Specify the background color for the navigation element when hovered
|
||||
// @params $active-bg [ color or string ]: Specify the background color for the navigation element when clicked and not released.
|
||||
// @params $active_class [ string ]: Specify the class name used to keep track of which accordion tab should be visible
|
||||
// @params $font-color [ color or string ]: Color of the font for accordion
|
||||
// @params $font-size [ number ]: Specifiy the font-size of the text inside the navigation element
|
||||
// @params $font-family [ string ]: Specify the font family for the text of the navigation of the accorion
|
||||
|
||||
@mixin accordion-navigation( $bg: $accordion-navigation-bg-color, $hover-bg: $accordion-navigation-hover-bg-color, $active-bg: $accordion-navigation-active-bg-color, $padding: $accordion-navigation-padding, $active_class: 'active', $font-color: $accordion-navigation-font-color, $font-size: $accordion-navigation-font-size, $font-family: $accordion-navigation-font-family ){
|
||||
display: block;
|
||||
margin-bottom: 0 !important;
|
||||
@if type-of($active_class) != "string" {
|
||||
@warn "`#{$active_class}` isn't a valid string. A valid string is needed to correctly be interpolated as a CSS class. CSS classes cannot start with a number or consist of only numbers. CSS will not be generated for the active state of this navigation component."
|
||||
}
|
||||
@else {
|
||||
&.#{ $active_class } > a {
|
||||
background: $active-bg;
|
||||
}
|
||||
}
|
||||
> a {
|
||||
background: $bg;
|
||||
color: $font-color;
|
||||
@if type-of($padding) != number {
|
||||
@warn "`#{$padding}` was read as #{type-of($padding)}";
|
||||
@if $accordion-navigation-padding != null {
|
||||
@warn "#{$padding} was read as a #{type-of($padding)}";
|
||||
@warn "`#{$padding}` isn't a valid number. $accordion-navigation-padding (#{$accordion-navigation-padding}) will be used instead.)";
|
||||
padding: $accordion-navigation-padding;
|
||||
}
|
||||
@else {
|
||||
@warn "`#{$padding}` isn't a valid number and $accordion-navigation-padding is missing. A value of `null` is returned to not output an invalid value for padding";
|
||||
padding: null;
|
||||
}
|
||||
}
|
||||
@else {
|
||||
padding: $padding;
|
||||
}
|
||||
display: block;
|
||||
font-family: $font-family;
|
||||
@if type-of($font-size) != number {
|
||||
@warn "`#{$font-size}` was read as a #{type-of($font-size)}";
|
||||
@if $accordion-navigation-font-size != null {
|
||||
@warn "`#{$font-size}` is not a valid number. The value of $accordion-navigation-font-size will be used instead (#{$accordion-navigation-font-size}).";
|
||||
font-size: $accordion-navigation-font-size;
|
||||
}
|
||||
@else{
|
||||
@warn "`#{$font-size}` is not a valid number and the default value of $accordion-navigation-font-size is not defined. A value of `null` will be returned to not generate an invalid value for font-size.";
|
||||
font-size: null;
|
||||
|
||||
}
|
||||
}
|
||||
@else {
|
||||
font-size: $font-size;
|
||||
}
|
||||
&:hover {
|
||||
background: $hover-bg;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Mixin: accordion-content($bg, $padding, $active-class)
|
||||
// @params $padding [ number ]: Padding for the content of the container
|
||||
// @params $bg [ color ]: Background color for the content when it's visible
|
||||
// @params $active_class [ string ]: Class name used to keep track of which accordion tab should be visible.
|
||||
|
||||
@mixin accordion-content($bg: $accordion-content-active-bg-color, $padding: $accordion-content-padding, $active_class: 'active'){
|
||||
display: none;
|
||||
@if type-of($padding) != "number" {
|
||||
@warn "#{$padding} was read as a #{type-of($padding)}";
|
||||
@if $accordion-content-padding != null {
|
||||
@warn "`#{$padding}` isn't a valid number. $accordion-content-padding used instead";
|
||||
padding: $accordion-content-padding;
|
||||
} @else {
|
||||
@warn "`#{$padding}` isn't a valid number and the default value of $accordion-content-padding is not defined. A value of `null` is returned to not output an invalid value for padding.";
|
||||
padding: null;
|
||||
}
|
||||
} @else {
|
||||
padding: $padding;
|
||||
}
|
||||
|
||||
@if type-of($active_class) != "string" {
|
||||
@warn "`#{$active_class}` isn't a valid string. A valid string is needed to correctly be interpolated as a CSS class. CSS classes cannot start with a number or consist of only numbers. CSS will not be generated for the active state of the content. "
|
||||
}
|
||||
@else {
|
||||
&.#{$active_class} {
|
||||
display: block;
|
||||
background: $bg;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@include exports("accordion") {
|
||||
@if $include-html-accordion-classes {
|
||||
.accordion {
|
||||
@include clearfix;
|
||||
margin-bottom: 0;
|
||||
.accordion-navigation, dd {
|
||||
display: block;
|
||||
margin-bottom: 0 !important;
|
||||
&.active > a { background: $accordion-navigation-active-bg-color; }
|
||||
> a {
|
||||
background: $accordion-navigation-bg-color;
|
||||
color: $accordion-navigation-font-color;
|
||||
padding: $accordion-navigation-padding;
|
||||
display: block;
|
||||
font-family: $accordion-navigation-font-family;
|
||||
font-size: $accordion-navigation-font-size;
|
||||
&:hover { background: $accordion-navigation-hover-bg-color; }
|
||||
}
|
||||
|
||||
> .content {
|
||||
display: none;
|
||||
padding: $accordion-content-padding;
|
||||
&.active {
|
||||
display: block;
|
||||
background: $accordion-content-active-bg-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,128 @@
|
||||
// Foundation by ZURB
|
||||
// foundation.zurb.com
|
||||
// Licensed under MIT Open Source
|
||||
|
||||
@import "global";
|
||||
|
||||
//
|
||||
// Alert Box Variables
|
||||
//
|
||||
$include-html-alert-classes: $include-html-classes !default;
|
||||
|
||||
// We use this to control alert padding.
|
||||
$alert-padding-top: rem-calc(14) !default;
|
||||
$alert-padding-default-float: $alert-padding-top !default;
|
||||
$alert-padding-opposite-direction: $alert-padding-top + rem-calc(10) !default;
|
||||
$alert-padding-bottom: $alert-padding-top !default;
|
||||
|
||||
// We use these to control text style.
|
||||
$alert-font-weight: $font-weight-normal !default;
|
||||
$alert-font-size: rem-calc(13) !default;
|
||||
$alert-font-color: $white !default;
|
||||
$alert-font-color-alt: scale-color($secondary-color, $lightness: -66%) !default;
|
||||
|
||||
// We use this for close hover effect.
|
||||
$alert-function-factor: -14% !default;
|
||||
|
||||
// We use these to control border styles.
|
||||
$alert-border-style: solid !default;
|
||||
$alert-border-width: 1px !default;
|
||||
$alert-border-color: scale-color($primary-color, $lightness: $alert-function-factor) !default;
|
||||
$alert-bottom-margin: rem-calc(20) !default;
|
||||
|
||||
// We use these to style the close buttons
|
||||
$alert-close-color: $oil !default;
|
||||
$alert-close-top: 50% !default;
|
||||
$alert-close-position: rem-calc(4) !default;
|
||||
$alert-close-font-size: rem-calc(22) !default;
|
||||
$alert-close-opacity: 0.3 !default;
|
||||
$alert-close-opacity-hover: 0.5 !default;
|
||||
$alert-close-padding: 0 6px 4px !default;
|
||||
$alert-close-background: inherit !default;
|
||||
|
||||
// We use this to control border radius
|
||||
$alert-radius: $global-radius !default;
|
||||
|
||||
$alert-transition-speed: 300ms !default;
|
||||
$alert-transition-ease: ease-out !default;
|
||||
|
||||
//
|
||||
// Alert Mixins
|
||||
//
|
||||
|
||||
// We use this mixin to create a default alert base.
|
||||
@mixin alert-base {
|
||||
border-style: $alert-border-style;
|
||||
border-width: $alert-border-width;
|
||||
display: block;
|
||||
font-weight: $alert-font-weight;
|
||||
margin-bottom: $alert-bottom-margin;
|
||||
position: relative;
|
||||
padding: $alert-padding-top $alert-padding-opposite-direction $alert-padding-bottom $alert-padding-default-float;
|
||||
font-size: $alert-font-size;
|
||||
@include single-transition(opacity, $alert-transition-speed, $alert-transition-ease)
|
||||
}
|
||||
|
||||
// We use this mixin to add alert styles
|
||||
//
|
||||
// $bg - The background of the alert. Default: $primary-color.
|
||||
@mixin alert-style($bg:$primary-color) {
|
||||
|
||||
// This finds the lightness percentage of the background color.
|
||||
$bg-lightness: lightness($bg);
|
||||
|
||||
// We control which background color and border come through.
|
||||
background-color: $bg;
|
||||
border-color: scale-color($bg, $lightness: $alert-function-factor);
|
||||
|
||||
// We control the text color for you based on the background color.
|
||||
@if $bg-lightness > 70% { color: $alert-font-color-alt; }
|
||||
@else { color: $alert-font-color; }
|
||||
|
||||
}
|
||||
|
||||
// We use this to create the close button.
|
||||
@mixin alert-close {
|
||||
font-size: $alert-close-font-size;
|
||||
padding: $alert-close-padding;
|
||||
line-height: .9;
|
||||
position: absolute;
|
||||
top: $alert-close-top;
|
||||
margin-top: -($alert-close-font-size / 2);
|
||||
#{$opposite-direction}: $alert-close-position;
|
||||
color: $alert-close-color;
|
||||
opacity: $alert-close-opacity;
|
||||
background: $alert-close-background;
|
||||
&:hover,
|
||||
&:focus { opacity: $alert-close-opacity-hover; }
|
||||
}
|
||||
|
||||
// We use this to quickly create alerts with a single mixin.
|
||||
//
|
||||
// $bg - Background of alert. Default: $primary-color.
|
||||
// $radius - Radius of alert box. Default: false.
|
||||
@mixin alert($bg:$primary-color, $radius:false) {
|
||||
@include alert-base;
|
||||
@include alert-style($bg);
|
||||
@include radius($radius);
|
||||
}
|
||||
|
||||
@include exports("alert-box") {
|
||||
@if $include-html-alert-classes {
|
||||
.alert-box {
|
||||
@include alert;
|
||||
|
||||
.close { @include alert-close; }
|
||||
|
||||
&.radius { @include radius($alert-radius); }
|
||||
&.round { @include radius($global-rounded); }
|
||||
|
||||
&.success { @include alert-style($success-color); }
|
||||
&.alert { @include alert-style($alert-color); }
|
||||
&.secondary { @include alert-style($secondary-color); }
|
||||
&.warning { @include alert-style($warning-color); }
|
||||
&.info { @include alert-style($info-color); }
|
||||
&.alert-close { opacity: 0}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,133 @@
|
||||
// Foundation by ZURB
|
||||
// foundation.zurb.com
|
||||
// Licensed under MIT Open Source
|
||||
|
||||
@import "global";
|
||||
|
||||
//
|
||||
// Block Grid Variables
|
||||
//
|
||||
$include-html-block-grid-classes: $include-html-classes !default;
|
||||
$include-xl-html-block-grid-classes: false !default;
|
||||
|
||||
// We use this to control the maximum number of block grid elements per row
|
||||
$block-grid-elements: 12 !default;
|
||||
$block-grid-default-spacing: rem-calc(20) !default;
|
||||
|
||||
$align-block-grid-to-grid: false !default;
|
||||
@if $align-block-grid-to-grid {
|
||||
$block-grid-default-spacing: $column-gutter;
|
||||
}
|
||||
|
||||
// Enables media queries for block-grid classes. Set to false if writing semantic HTML.
|
||||
$block-grid-media-queries: true !default;
|
||||
|
||||
//
|
||||
// Block Grid Mixins
|
||||
//
|
||||
|
||||
// Create a custom block grid
|
||||
//
|
||||
// $per-row - # of items to display per row. Default: false.
|
||||
// $spacing - # of ems to use as padding on each block item. Default: rem-calc(20).
|
||||
// $include-spacing - Adds padding to our list item. Default: true.
|
||||
// $base-style - Apply a base style to block grid. Default: true.
|
||||
@mixin block-grid(
|
||||
$per-row:false,
|
||||
$spacing:$block-grid-default-spacing,
|
||||
$include-spacing:true,
|
||||
$base-style:true) {
|
||||
|
||||
@if $base-style {
|
||||
display: block;
|
||||
padding: 0;
|
||||
@if $align-block-grid-to-grid {
|
||||
margin: 0;
|
||||
} @else {
|
||||
margin: 0 (-$spacing/2);
|
||||
}
|
||||
@include clearfix;
|
||||
|
||||
&>li {
|
||||
display: block;
|
||||
height: auto;
|
||||
float: $default-float;
|
||||
@if $include-spacing {
|
||||
padding: 0 ($spacing/2) $spacing;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@if $per-row {
|
||||
&>li {
|
||||
width: 100%/$per-row;
|
||||
@if $include-spacing {
|
||||
padding: 0 ($spacing/2) $spacing;
|
||||
}
|
||||
list-style: none;
|
||||
|
||||
&:nth-of-type(1n) { clear: none; }
|
||||
&:nth-of-type(#{$per-row}n+1) { clear: both; }
|
||||
@if $align-block-grid-to-grid {
|
||||
@include block-grid-aligned($per-row, $spacing);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@mixin block-grid-aligned($per-row, $spacing) {
|
||||
@for $i from 1 through $block-grid-elements {
|
||||
@if $per-row >= $i {
|
||||
$grid-column: '+' + $i;
|
||||
@if $per-row == $i {
|
||||
$grid-column: '';
|
||||
}
|
||||
&:nth-of-type(#{$per-row}n#{unquote($grid-column)}) {
|
||||
padding-left: ($spacing - (($spacing / $per-row) * ($per-row - ($i - 1))));
|
||||
padding-right: ($spacing - (($spacing / $per-row) * $i));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Generate presentational markup for block grid.
|
||||
//
|
||||
// $size - Name of class to use, i.e. "large" will generate .large-block-grid-1, .large-block-grid-2, etc.
|
||||
@mixin block-grid-html-classes($size,$include-spacing) {
|
||||
@for $i from 1 through $block-grid-elements {
|
||||
.#{$size}-block-grid-#{($i)} {
|
||||
@include block-grid($i,$block-grid-default-spacing,$include-spacing,false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@include exports("block-grid") {
|
||||
@if $include-html-block-grid-classes {
|
||||
|
||||
[class*="block-grid-"] { @include block-grid; }
|
||||
|
||||
@if $block-grid-media-queries {
|
||||
@media #{$small-up} {
|
||||
@include block-grid-html-classes($size:small,$include-spacing:false);
|
||||
}
|
||||
|
||||
@media #{$medium-up} {
|
||||
@include block-grid-html-classes($size:medium,$include-spacing:false);
|
||||
}
|
||||
|
||||
@media #{$large-up} {
|
||||
@include block-grid-html-classes($size:large,$include-spacing:false);
|
||||
}
|
||||
|
||||
@if $include-xl-html-block-grid-classes {
|
||||
@media #{$xlarge-up} {
|
||||
@include block-grid-html-classes($size:xlarge,$include-spacing:false);
|
||||
}
|
||||
|
||||
@media #{$xxlarge-up} {
|
||||
@include block-grid-html-classes($size:xxlarge,$include-spacing:false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,132 @@
|
||||
// Foundation by ZURB
|
||||
// foundation.zurb.com
|
||||
// Licensed under MIT Open Source
|
||||
|
||||
@import "global";
|
||||
|
||||
//
|
||||
// Breadcrumb Variables
|
||||
//
|
||||
$include-html-nav-classes: $include-html-classes !default;
|
||||
|
||||
// We use this to set the background color for the breadcrumb container.
|
||||
$crumb-bg: scale-color($secondary-color, $lightness: 55%) !default;
|
||||
|
||||
// We use these to set the padding around the breadcrumbs.
|
||||
$crumb-padding: rem-calc(9 14 9) !default;
|
||||
$crumb-side-padding: rem-calc(12) !default;
|
||||
|
||||
// We use these to control border styles.
|
||||
$crumb-function-factor: -10% !default;
|
||||
$crumb-border-size: 1px !default;
|
||||
$crumb-border-style: solid !default;
|
||||
$crumb-border-color: scale-color($crumb-bg, $lightness: $crumb-function-factor) !default;
|
||||
$crumb-radius: $global-radius !default;
|
||||
|
||||
// We use these to set various text styles for breadcrumbs.
|
||||
$crumb-font-size: rem-calc(11) !default;
|
||||
$crumb-font-color: $primary-color !default;
|
||||
$crumb-font-color-current: $oil !default;
|
||||
$crumb-font-color-unavailable: $aluminum !default;
|
||||
$crumb-font-transform: uppercase !default;
|
||||
$crumb-link-decor: underline !default;
|
||||
|
||||
// We use these to control the slash between breadcrumbs
|
||||
$crumb-slash-color: $base !default;
|
||||
$crumb-slash: "/" !default;
|
||||
|
||||
//
|
||||
// Breadcrumb Mixins
|
||||
//
|
||||
|
||||
// We use this mixin to create a container around our breadcrumbs
|
||||
@mixin crumb-container {
|
||||
display: block;
|
||||
padding: $crumb-padding;
|
||||
overflow: hidden;
|
||||
margin-#{$default-float}: 0;
|
||||
list-style: none;
|
||||
border-style: $crumb-border-style;
|
||||
border-width: $crumb-border-size;
|
||||
|
||||
// We control which background color and border come through.
|
||||
background-color: $crumb-bg;
|
||||
border-color: $crumb-border-color;
|
||||
}
|
||||
|
||||
// We use this mixin to create breadcrumb styles from list items.
|
||||
@mixin crumbs {
|
||||
|
||||
// A normal state will make the links look and act like clickable breadcrumbs.
|
||||
margin: 0;
|
||||
float: $default-float;
|
||||
font-size: $crumb-font-size;
|
||||
line-height: $crumb-font-size;
|
||||
text-transform: $crumb-font-transform;
|
||||
color: $crumb-font-color;
|
||||
|
||||
&:hover a, &:focus a { text-decoration: $crumb-link-decor; }
|
||||
|
||||
a {
|
||||
color: $crumb-font-color;
|
||||
}
|
||||
|
||||
// Current is for the link of the current page
|
||||
&.current {
|
||||
cursor: $cursor-default-value;
|
||||
color: $crumb-font-color-current;
|
||||
a {
|
||||
cursor: $cursor-default-value;
|
||||
color: $crumb-font-color-current;
|
||||
}
|
||||
|
||||
&:hover, &:hover a,
|
||||
&:focus, &:focus a { text-decoration: none; }
|
||||
}
|
||||
|
||||
// Unavailable removed color and link styles so it looks inactive.
|
||||
&.unavailable {
|
||||
color: $crumb-font-color-unavailable;
|
||||
a { color: $crumb-font-color-unavailable; }
|
||||
|
||||
&:hover,
|
||||
&:hover a,
|
||||
&:focus,
|
||||
a:focus {
|
||||
text-decoration: none;
|
||||
color: $crumb-font-color-unavailable;
|
||||
cursor: $cursor-disabled-value;
|
||||
}
|
||||
}
|
||||
|
||||
&:before {
|
||||
content: "#{$crumb-slash}";
|
||||
color: $crumb-slash-color;
|
||||
margin: 0 $crumb-side-padding;
|
||||
position: relative;
|
||||
top: 1px;
|
||||
}
|
||||
|
||||
&:first-child:before {
|
||||
content: " ";
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@include exports("breadcrumbs") {
|
||||
@if $include-html-nav-classes {
|
||||
.breadcrumbs {
|
||||
@include crumb-container;
|
||||
@include radius($crumb-radius);
|
||||
|
||||
&>* {
|
||||
@include crumbs;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Accessibility - hides the forward slash */
|
||||
[aria-label="breadcrumbs"] [aria-hidden="true"]:after {
|
||||
content: "/";
|
||||
}
|
||||
@@ -0,0 +1,200 @@
|
||||
// Foundation by ZURB
|
||||
// foundation.zurb.com
|
||||
// Licensed under MIT Open Source
|
||||
|
||||
@import "global";
|
||||
@import "buttons";
|
||||
|
||||
//
|
||||
// Button Group Variables
|
||||
//
|
||||
$include-html-button-classes: $include-html-classes !default;
|
||||
|
||||
// Sets the margin for the right side by default, and the left margin if right-to-left direction is used
|
||||
$button-bar-margin-opposite: rem-calc(10) !default;
|
||||
$button-group-border-width: 1px !default;
|
||||
|
||||
//
|
||||
// Button Group Mixins
|
||||
//
|
||||
|
||||
// We use this to add styles for a button group container
|
||||
@mixin button-group-container($styles:true, $float:false) {
|
||||
@if $styles {
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
#{$default-float}: 0;
|
||||
@include clearfix();
|
||||
}
|
||||
@if $float {
|
||||
float: #{$default-float};
|
||||
margin-#{$opposite-direction}: $button-bar-margin-opposite;
|
||||
& div { overflow: hidden; }
|
||||
}
|
||||
}
|
||||
|
||||
// We use this to control styles for button groups
|
||||
@mixin button-group-style($radius:false, $even:false, $float:false, $orientation:horizontal) {
|
||||
|
||||
> button, .button {
|
||||
border-#{$default-float}: $button-group-border-width solid;
|
||||
border-color: rgba(255, 255, 255, 0.5);
|
||||
}
|
||||
|
||||
&:first-child {
|
||||
button, .button {
|
||||
border-#{$default-float}: 0;
|
||||
}
|
||||
}
|
||||
|
||||
// We use this to control the flow, or remove those styles completely.
|
||||
@if $float {
|
||||
margin: 0;
|
||||
float: $float;
|
||||
display: list-item;
|
||||
// Make sure the first child doesn't get the negative margin.
|
||||
&:first-child { margin-#{$default-float}: 0; }
|
||||
}
|
||||
@else {
|
||||
margin: 0 -2px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
@if $orientation == vertical {
|
||||
display:block;
|
||||
margin:0;
|
||||
> button, .button {
|
||||
border-top: $button-group-border-width solid;
|
||||
border-color: rgba(255, 255, 255, 0.5);
|
||||
border-left-width: 0;
|
||||
margin:0;
|
||||
display: block;
|
||||
}
|
||||
> button {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
&:first-child {
|
||||
button, .button {
|
||||
border-top: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// We use these to control left and right radius on first/last buttons in the group.
|
||||
@if $radius == true {
|
||||
&,
|
||||
& > a,
|
||||
& > button,
|
||||
& > .button { @include radius(0); }
|
||||
&:first-child,
|
||||
&:first-child > a,
|
||||
&:first-child > button,
|
||||
&:first-child > .button {
|
||||
@if $orientation == vertical {
|
||||
@include side-radius(top, $button-radius);
|
||||
}
|
||||
@else {
|
||||
@include side-radius($default-float, $button-radius);
|
||||
}
|
||||
}
|
||||
&:last-child,
|
||||
&:last-child > a,
|
||||
&:last-child > button,
|
||||
&:last-child > .button {
|
||||
@if $orientation == vertical {
|
||||
@include side-radius(bottom, $button-radius);
|
||||
}
|
||||
@else {
|
||||
@include side-radius($opposite-direction, $button-radius);
|
||||
}
|
||||
}
|
||||
}
|
||||
@else if $radius {
|
||||
&,
|
||||
& > a,
|
||||
& > button,
|
||||
& > .button { @include radius(0); }
|
||||
&:first-child,
|
||||
&:first-child > a,
|
||||
&:first-child > button,
|
||||
&:first-child > .button {
|
||||
@if $orientation == vertical {
|
||||
@include side-radius(top, $radius);
|
||||
}
|
||||
@else {
|
||||
@include side-radius($default-float, $radius);
|
||||
}
|
||||
}
|
||||
&:last-child,
|
||||
&:last-child > a,
|
||||
&:last-child > button,
|
||||
&:last-child > .button {
|
||||
@if $orientation == vertical {
|
||||
@include side-radius(bottom, $radius);
|
||||
}
|
||||
@else {
|
||||
@include side-radius($opposite-direction, $radius);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// We use this to make the buttons even width across their container
|
||||
@if $even {
|
||||
width: percentage((100/$even) / 100);
|
||||
button, .button { width: 100%; }
|
||||
}
|
||||
}
|
||||
|
||||
@include exports("button-group") {
|
||||
@if $include-html-button-classes {
|
||||
.button-group { @include button-group-container;
|
||||
|
||||
@for $i from 2 through 8 {
|
||||
&.even-#{$i} li { @include button-group-style($even:$i, $float:null); }
|
||||
}
|
||||
|
||||
& > li { @include button-group-style(); }
|
||||
|
||||
&.stack {
|
||||
& > li { @include button-group-style($orientation:vertical); float: none; }
|
||||
}
|
||||
|
||||
&.stack-for-small {
|
||||
& > li {
|
||||
@include button-group-style($orientation:horizontal);
|
||||
@media #{$small-only} {
|
||||
@include button-group-style($orientation:vertical);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.radius > * { @include button-group-style($radius:$button-radius, $float:null); }
|
||||
&.radius.stack > * { @include button-group-style($radius:$button-radius, $float:null, $orientation:vertical); }
|
||||
&.radius.stack-for-small > * {
|
||||
@media #{$medium-up} {
|
||||
@include button-group-style($radius:$button-radius, $orientation:horizontal);
|
||||
}
|
||||
@media #{$small-only} {
|
||||
@include button-group-style($radius:$button-radius, $orientation:vertical);
|
||||
}
|
||||
}
|
||||
|
||||
&.round > * { @include button-group-style($radius:$button-round, $float:null); }
|
||||
&.round.stack > * { @include button-group-style($radius:$button-med, $float:null, $orientation:vertical); }
|
||||
&.round.stack-for-small > * {
|
||||
@media #{$medium-up} {
|
||||
@include button-group-style($radius:$button-round, $orientation:horizontal);
|
||||
}
|
||||
@media #{$small-only} {
|
||||
@include button-group-style($radius:$button-med, $orientation:vertical);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.button-bar {
|
||||
@include clearfix;
|
||||
.button-group { @include button-group-container($styles:false, $float:true); }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,260 @@
|
||||
// Foundation by ZURB
|
||||
// foundation.zurb.com
|
||||
// Licensed under MIT Open Source
|
||||
|
||||
@import "global";
|
||||
|
||||
//
|
||||
// @variables
|
||||
//
|
||||
$include-html-button-classes: $include-html-classes !default;
|
||||
|
||||
// We use these to build padding for buttons.
|
||||
$button-tny: rem-calc(10) !default;
|
||||
$button-sml: rem-calc(14) !default;
|
||||
$button-med: rem-calc(16) !default;
|
||||
$button-lrg: rem-calc(18) !default;
|
||||
|
||||
// We use this to control the display property.
|
||||
$button-display: inline-block !default;
|
||||
$button-margin-bottom: rem-calc(20) !default;
|
||||
|
||||
// We use these to control button text styles.
|
||||
$button-font-family: $body-font-family !default;
|
||||
$button-font-color: $white !default;
|
||||
$button-font-color-alt: $oil !default;
|
||||
$button-font-tny: rem-calc(11) !default;
|
||||
$button-font-sml: rem-calc(13) !default;
|
||||
$button-font-med: rem-calc(16) !default;
|
||||
$button-font-lrg: rem-calc(20) !default;
|
||||
$button-font-weight: $font-weight-normal !default;
|
||||
$button-font-align: center !default;
|
||||
|
||||
// We use these to control various hover effects.
|
||||
$button-function-factor: -20% !default;
|
||||
|
||||
// We use these to control button border styles.
|
||||
$button-border-width: 0 !default;
|
||||
$button-border-style: solid !default;
|
||||
$button-bg-color: $primary-color !default;
|
||||
$button-bg-hover: scale-color($button-bg-color, $lightness: $button-function-factor) !default;
|
||||
$button-border-color: $button-bg-hover !default;
|
||||
$secondary-button-bg-hover: scale-color($secondary-color, $lightness: $button-function-factor) !default;
|
||||
$secondary-button-border-color: $secondary-button-bg-hover !default;
|
||||
$success-button-bg-hover: scale-color($success-color, $lightness: $button-function-factor) !default;
|
||||
$success-button-border-color: $success-button-bg-hover !default;
|
||||
$alert-button-bg-hover: scale-color($alert-color, $lightness: $button-function-factor) !default;
|
||||
$alert-button-border-color: $alert-button-bg-hover !default;
|
||||
$warning-button-bg-hover: scale-color($warning-color, $lightness: $button-function-factor) !default;
|
||||
$warning-button-border-color: $warning-button-bg-hover !default;
|
||||
$info-button-bg-hover: scale-color($info-color, $lightness: $button-function-factor) !default;
|
||||
$info-button-border-color: $info-button-bg-hover !default;
|
||||
|
||||
// We use this to set the default radius used throughout the core.
|
||||
$button-radius: $global-radius !default;
|
||||
$button-round: $global-rounded !default;
|
||||
|
||||
// We use this to set default opacity and cursor for disabled buttons.
|
||||
$button-disabled-opacity: 0.7 !default;
|
||||
$button-disabled-cursor: $cursor-default-value !default;
|
||||
|
||||
|
||||
//
|
||||
// @MIXIN
|
||||
//
|
||||
// We use this mixin to create a default button base.
|
||||
//
|
||||
// $style - Sets base styles. Can be set to false. Default: true.
|
||||
// $display - Used to control display property. Default: $button-display || inline-block
|
||||
|
||||
@mixin button-base($style:true, $display:$button-display) {
|
||||
@if $style {
|
||||
border-style: $button-border-style;
|
||||
border-width: $button-border-width;
|
||||
cursor: $cursor-pointer-value;
|
||||
font-family: $button-font-family;
|
||||
font-weight: $button-font-weight;
|
||||
line-height: normal;
|
||||
margin: 0 0 $button-margin-bottom;
|
||||
position: relative;
|
||||
text-decoration: none;
|
||||
text-align: $button-font-align;
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
border-radius:0;
|
||||
}
|
||||
@if $display { display: $display; }
|
||||
}
|
||||
|
||||
// @MIXIN
|
||||
//
|
||||
// We use this mixin to add button size styles
|
||||
//
|
||||
// $padding - Used to build padding for buttons Default: $button-med ||= rem-calc(12)
|
||||
// $full-width - We can set $full-width:true to remove side padding extend width - Default: false
|
||||
|
||||
@mixin button-size($padding:$button-med, $full-width:false) {
|
||||
|
||||
// We control which padding styles come through,
|
||||
// these can be turned off by setting $padding:false
|
||||
@if $padding {
|
||||
padding-top: $padding;
|
||||
padding-#{$opposite-direction}: $padding * 2;
|
||||
padding-bottom: $padding + rem-calc(1);
|
||||
padding-#{$default-float}: $padding * 2;
|
||||
|
||||
// We control the font-size based on mixin input.
|
||||
@if $padding == $button-med { font-size: $button-font-med; }
|
||||
@else if $padding == $button-tny { font-size: $button-font-tny; }
|
||||
@else if $padding == $button-sml { font-size: $button-font-sml; }
|
||||
@else if $padding == $button-lrg { font-size: $button-font-lrg; }
|
||||
}
|
||||
|
||||
// We can set $full-width:true to remove side padding extend width.
|
||||
@if $full-width {
|
||||
// We still need to check if $padding is set.
|
||||
@if $padding {
|
||||
padding-top: $padding;
|
||||
padding-bottom: $padding + rem-calc(1);
|
||||
} @else if $padding == false {
|
||||
padding-top:0;
|
||||
padding-bottom:0;
|
||||
}
|
||||
padding-right: 0;
|
||||
padding-left: 0;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
// @MIXIN
|
||||
//
|
||||
// we use this mixin to create the button hover and border colors
|
||||
|
||||
// @MIXIN
|
||||
//
|
||||
// We use this mixin to add button color styles
|
||||
//
|
||||
// $bg - Background color. We can set $bg:false for a transparent background. Default: $primary-color.
|
||||
// $radius - If true, set to button radius which is $button-radius || explicitly set radius amount in px (ex. $radius:10px). Default: false
|
||||
// $disabled - We can set $disabled:true to create a disabled transparent button. Default: false
|
||||
// $bg-hover - Button Hover Background Color. Default: $button-bg-hover
|
||||
// $border-color - Button Border Color. Default: $button-border-color
|
||||
@mixin button-style($bg:$button-bg-color, $radius:false, $disabled:false, $bg-hover:null, $border-color:null) {
|
||||
|
||||
// We control which background styles are used,
|
||||
// these can be removed by setting $bg:false
|
||||
@if $bg {
|
||||
|
||||
@if $bg-hover == null {
|
||||
$bg-hover: if($bg == $button-bg-color, $button-bg-hover, scale-color($bg, $lightness: $button-function-factor));
|
||||
}
|
||||
|
||||
@if $border-color == null {
|
||||
$border-color: if($bg == $button-bg-color, $button-border-color, scale-color($bg, $lightness: $button-function-factor));
|
||||
}
|
||||
|
||||
// This find the lightness percentage of the background color.
|
||||
$bg-lightness: lightness($bg);
|
||||
$bg-hover-lightness: lightness($bg-hover);
|
||||
|
||||
background-color: $bg;
|
||||
border-color: $border-color;
|
||||
&:hover,
|
||||
&:focus { background-color: $bg-hover; }
|
||||
|
||||
// We control the text color for you based on the background color.
|
||||
color: if($bg-lightness > 70%, $button-font-color-alt, $button-font-color);
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: if($bg-hover-lightness > 70%, $button-font-color-alt, $button-font-color);
|
||||
}
|
||||
}
|
||||
|
||||
// We can set $disabled:true to create a disabled transparent button.
|
||||
@if $disabled {
|
||||
cursor: $button-disabled-cursor;
|
||||
opacity: $button-disabled-opacity;
|
||||
box-shadow: none;
|
||||
&:hover,
|
||||
&:focus { background-color: $bg; }
|
||||
}
|
||||
|
||||
// We can control how much button radius is used.
|
||||
@if $radius == true { @include radius($button-radius); }
|
||||
@else if $radius { @include radius($radius); }
|
||||
|
||||
}
|
||||
|
||||
// @MIXIN
|
||||
//
|
||||
// We use this to quickly create buttons with a single mixin. As @jaredhardy puts it, "the kitchen sink mixin"
|
||||
//
|
||||
// $padding - Used to build padding for buttons Default: $button-med ||= rem-calc(12)
|
||||
// $bg - Primary color set in settings file. Default: $button-bg.
|
||||
// $radius - If true, set to button radius which is $global-radius || explicitly set radius amount in px (ex. $radius:10px). Default:false.
|
||||
// $full-width - We can set $full-width:true to remove side padding extend width. Default:false.
|
||||
// $disabled - We can set $disabled:true to create a disabled transparent button. Default:false.
|
||||
// $is-prefix - Not used? Default:false.
|
||||
// $bg-hover - Button Hover Color - Default null - see button-style mixin
|
||||
// $border-color - Button Border Color - Default null - see button-style mixin
|
||||
// $transition - We can control whether or not to include the background-color transition property - Default:true.
|
||||
@mixin button($padding:$button-med, $bg:$button-bg-color, $radius:false, $full-width:false, $disabled:false, $is-prefix:false, $bg-hover:null, $border-color:null, $transition: true) {
|
||||
@include button-base;
|
||||
@include button-size($padding, $full-width);
|
||||
@include button-style($bg, $radius, $disabled, $bg-hover, $border-color);
|
||||
|
||||
@if $transition {
|
||||
@include single-transition(background-color);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@include exports("button") {
|
||||
@if $include-html-button-classes {
|
||||
|
||||
// Default styles applied outside of media query
|
||||
button, .button {
|
||||
@include button-base;
|
||||
@include button-size;
|
||||
@include button-style;
|
||||
|
||||
@include single-transition(background-color);
|
||||
|
||||
&.secondary { @include button-style($bg:$secondary-color, $bg-hover:$secondary-button-bg-hover, $border-color:$secondary-button-border-color); }
|
||||
&.success { @include button-style($bg:$success-color, $bg-hover:$success-button-bg-hover, $border-color:$success-button-border-color); }
|
||||
&.alert { @include button-style($bg:$alert-color, $bg-hover:$alert-button-bg-hover, $border-color:$alert-button-border-color); }
|
||||
&.warning { @include button-style($bg:$warning-color, $bg-hover:$warning-button-bg-hover, $border-color:$warning-button-border-color); }
|
||||
&.info { @include button-style($bg:$info-color, $bg-hover:$info-button-bg-hover, $border-color:$info-button-border-color); }
|
||||
|
||||
&.large { @include button-size($padding:$button-lrg); }
|
||||
&.small { @include button-size($padding:$button-sml); }
|
||||
&.tiny { @include button-size($padding:$button-tny); }
|
||||
&.expand { @include button-size($padding:null,$full-width:true); }
|
||||
|
||||
&.left-align { text-align: left; text-indent: rem-calc(12); }
|
||||
&.right-align { text-align: right; padding-right: rem-calc(12); }
|
||||
|
||||
&.radius { @include button-style($bg:false, $radius:true); }
|
||||
&.round { @include button-style($bg:false, $radius:$button-round); }
|
||||
|
||||
&.disabled, &[disabled] { @include button-style($bg:$button-bg-color, $disabled:true, $bg-hover:$button-bg-hover, $border-color:$button-border-color);
|
||||
&.secondary { @include button-style($bg:$secondary-color, $disabled:true, $bg-hover:$secondary-button-bg-hover, $border-color:$secondary-button-border-color); }
|
||||
&.success { @include button-style($bg:$success-color, $disabled:true, $bg-hover:$success-button-bg-hover, $border-color:$success-button-border-color); }
|
||||
&.alert { @include button-style($bg:$alert-color, $disabled:true, $bg-hover:$alert-button-bg-hover, $border-color:$alert-button-border-color); }
|
||||
&.warning { @include button-style($bg:$warning-color, $disabled:true, $bg-hover:$warning-button-bg-hover, $border-color:$warning-button-border-color); }
|
||||
&.info { @include button-style($bg:$info-color, $disabled:true, $bg-hover:$info-button-bg-hover, $border-color:$info-button-border-color); }
|
||||
}
|
||||
}
|
||||
|
||||
//firefox 2px fix
|
||||
button::-moz-focus-inner {border:0; padding:0;}
|
||||
|
||||
@media #{$medium-up} {
|
||||
button, .button {
|
||||
@include button-base($style:false, $display:inline-block);
|
||||
@include button-size($padding:false, $full-width:false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,256 @@
|
||||
// Foundation by ZURB
|
||||
// foundation.zurb.com
|
||||
// Licensed under MIT Open Source
|
||||
|
||||
@import "global";
|
||||
|
||||
//
|
||||
// @variables
|
||||
//
|
||||
$include-html-clearing-classes: $include-html-classes !default;
|
||||
|
||||
// We use these to set the background colors for parts of Clearing.
|
||||
$clearing-bg: $oil !default;
|
||||
$clearing-caption-bg: $clearing-bg !default;
|
||||
$clearing-carousel-bg: rgba(51,51,51,0.8) !default;
|
||||
$clearing-img-bg: $clearing-bg !default;
|
||||
|
||||
// We use these to style the close button
|
||||
$clearing-close-color: $iron !default;
|
||||
$clearing-close-size: 30px !default;
|
||||
|
||||
// We use these to style the arrows
|
||||
$clearing-arrow-size: 12px !default;
|
||||
$clearing-arrow-color: $clearing-close-color !default;
|
||||
|
||||
// We use these to style captions
|
||||
$clearing-caption-font-color: $iron !default;
|
||||
$clearing-caption-font-size: 0.875em !default;
|
||||
$clearing-caption-padding: 10px 30px 20px !default;
|
||||
|
||||
// We use these to make the image and carousel height and style
|
||||
$clearing-active-img-height: 85% !default;
|
||||
$clearing-carousel-height: 120px !default;
|
||||
$clearing-carousel-thumb-width: 120px !default;
|
||||
$clearing-carousel-thumb-active-border: 1px solid rgb(255,255,255) !default;
|
||||
|
||||
@include exports("clearing") {
|
||||
@if $include-html-clearing-classes {
|
||||
// We decided to not create a mixin for Clearing because it relies
|
||||
// on predefined classes and structure to work properly.
|
||||
// The variables above should give enough control.
|
||||
|
||||
/* Clearing Styles */
|
||||
.clearing-thumbs, #{data('clearing')} {
|
||||
@include clearfix;
|
||||
margin-bottom: 0;
|
||||
margin-#{$default-float}: 0;
|
||||
list-style: none;
|
||||
|
||||
li {
|
||||
float: $default-float;
|
||||
margin-#{$opposite-direction}: 10px;
|
||||
}
|
||||
|
||||
&[class*="block-grid-"] li {
|
||||
margin-#{$opposite-direction}: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.clearing-blackout {
|
||||
background: $clearing-bg;
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
top: 0;
|
||||
#{$default-float}: 0;
|
||||
z-index: 998;
|
||||
|
||||
.clearing-close { display: block; }
|
||||
}
|
||||
|
||||
.clearing-container {
|
||||
position: relative;
|
||||
z-index: 998;
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.clearing-touch-label {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
color: $base;
|
||||
font-size: 0.6em;
|
||||
}
|
||||
|
||||
.visible-img {
|
||||
height: 95%;
|
||||
position: relative;
|
||||
|
||||
img {
|
||||
position: absolute;
|
||||
#{$default-float}: 50%;
|
||||
top: 50%;
|
||||
@if $default-float == left {
|
||||
transform: translateY(-50%) translateX(-50%);
|
||||
-webkit-transform: translateY(-50%) translateX(-50%);
|
||||
-ms-transform: translateY(-50%) translateX(-50%);
|
||||
}
|
||||
@else {
|
||||
transform: translateY(-50%) translateX(50%);
|
||||
-webkit-transform: translateY(-50%) translateX(50%);
|
||||
-ms-transform: translateY(-50%) translateX(50%);
|
||||
};
|
||||
max-height: 100%;
|
||||
max-width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.clearing-caption {
|
||||
color: $clearing-caption-font-color;
|
||||
font-size: $clearing-caption-font-size;
|
||||
line-height: 1.3;
|
||||
margin-bottom: 0;
|
||||
text-align: center;
|
||||
bottom: 0;
|
||||
background: $clearing-caption-bg;
|
||||
width: 100%;
|
||||
padding: $clearing-caption-padding;
|
||||
position: absolute;
|
||||
#{$default-float}: 0;
|
||||
}
|
||||
|
||||
.clearing-close {
|
||||
z-index: 999;
|
||||
padding-#{$default-float}: 20px;
|
||||
padding-top: 10px;
|
||||
font-size: $clearing-close-size;
|
||||
line-height: 1;
|
||||
color: $clearing-close-color;
|
||||
display: none;
|
||||
|
||||
&:hover,
|
||||
&:focus { color: $iron; }
|
||||
}
|
||||
|
||||
.clearing-assembled .clearing-container { height: 100%;
|
||||
.carousel > ul { display: none; }
|
||||
}
|
||||
|
||||
// If you want to show a lightbox, but only have a single image come through as the thumbnail
|
||||
.clearing-feature li {
|
||||
display: none;
|
||||
&.clearing-featured-img {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
// Large screen overrides
|
||||
@media #{$medium-up} {
|
||||
.clearing-main-prev,
|
||||
.clearing-main-next {
|
||||
position: absolute;
|
||||
height: 100%;
|
||||
width: 40px;
|
||||
top: 0;
|
||||
& > span {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
display: block;
|
||||
width: 0;
|
||||
height: 0;
|
||||
border: solid $clearing-arrow-size;
|
||||
&:hover { opacity: 0.8; }
|
||||
}
|
||||
}
|
||||
.clearing-main-prev {
|
||||
#{$default-float}: 0;
|
||||
& > span {
|
||||
#{$default-float}: 5px;
|
||||
border-color: transparent;
|
||||
border-#{$opposite-direction}-color: $clearing-arrow-color;
|
||||
}
|
||||
}
|
||||
.clearing-main-next {
|
||||
#{$opposite-direction}: 0;
|
||||
& > span {
|
||||
border-color: transparent;
|
||||
border-#{$default-float}-color: $clearing-arrow-color;
|
||||
}
|
||||
}
|
||||
|
||||
.clearing-main-prev.disabled,
|
||||
.clearing-main-next.disabled { opacity: 0.3; }
|
||||
|
||||
.clearing-assembled .clearing-container {
|
||||
|
||||
.carousel {
|
||||
background: $clearing-carousel-bg;
|
||||
height: $clearing-carousel-height;
|
||||
margin-top: 10px;
|
||||
text-align: center;
|
||||
|
||||
& > ul {
|
||||
display: inline-block;
|
||||
z-index: 999;
|
||||
height: 100%;
|
||||
position: relative;
|
||||
float: none;
|
||||
|
||||
li {
|
||||
display: block;
|
||||
width: $clearing-carousel-thumb-width;
|
||||
min-height: inherit;
|
||||
float: $default-float;
|
||||
overflow: hidden;
|
||||
margin-#{$opposite-direction}: 0;
|
||||
padding: 0;
|
||||
position: relative;
|
||||
cursor: $cursor-pointer-value;
|
||||
opacity: 0.4;
|
||||
clear: none;
|
||||
|
||||
&.fix-height {
|
||||
img {
|
||||
height: 100%;
|
||||
max-width: none;
|
||||
}
|
||||
}
|
||||
|
||||
a.th {
|
||||
border: none;
|
||||
box-shadow: none;
|
||||
display: block;
|
||||
}
|
||||
|
||||
img {
|
||||
cursor: $cursor-pointer-value !important;
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
&.visible { opacity: 1; }
|
||||
&:hover { opacity: 0.8; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.visible-img {
|
||||
background: $clearing-img-bg;
|
||||
overflow: hidden;
|
||||
height: $clearing-active-img-height;
|
||||
}
|
||||
}
|
||||
|
||||
.clearing-close {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
#{$opposite-direction}: 20px;
|
||||
padding-#{$default-float}: 0;
|
||||
padding-top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,131 @@
|
||||
// Foundation by ZURB
|
||||
// foundation.zurb.com
|
||||
// Licensed under MIT Open Source
|
||||
|
||||
@import "global";
|
||||
|
||||
//
|
||||
// @variables
|
||||
//
|
||||
$include-html-button-classes: $include-html-classes !default;
|
||||
|
||||
// We use these to set the color of the pip in dropdown buttons
|
||||
$dropdown-button-pip-color: $white !default;
|
||||
$dropdown-button-pip-color-alt: $oil !default;
|
||||
|
||||
// We use these to set the size of the pip in dropdown buttons
|
||||
$button-pip-tny: rem-calc(6) !default;
|
||||
$button-pip-sml: rem-calc(7) !default;
|
||||
$button-pip-med: rem-calc(9) !default;
|
||||
$button-pip-lrg: rem-calc(11) !default;
|
||||
|
||||
// We use these to style tiny dropdown buttons
|
||||
$dropdown-button-padding-tny: $button-pip-tny * 7 !default;
|
||||
$dropdown-button-pip-size-tny: $button-pip-tny !default;
|
||||
$dropdown-button-pip-opposite-tny: $button-pip-tny * 3 !default;
|
||||
$dropdown-button-pip-top-tny: (-$button-pip-tny / 2) + rem-calc(1) !default;
|
||||
|
||||
// We use these to style small dropdown buttons
|
||||
$dropdown-button-padding-sml: $button-pip-sml * 7 !default;
|
||||
$dropdown-button-pip-size-sml: $button-pip-sml !default;
|
||||
$dropdown-button-pip-opposite-sml: $button-pip-sml * 3 !default;
|
||||
$dropdown-button-pip-top-sml: (-$button-pip-sml / 2) + rem-calc(1) !default;
|
||||
|
||||
// We use these to style medium dropdown buttons
|
||||
$dropdown-button-padding-med: $button-pip-med * 6 + rem-calc(3) !default;
|
||||
$dropdown-button-pip-size-med: $button-pip-med - rem-calc(3) !default;
|
||||
$dropdown-button-pip-opposite-med: $button-pip-med * 2.5 !default;
|
||||
$dropdown-button-pip-top-med: (-$button-pip-med / 2) + rem-calc(2) !default;
|
||||
|
||||
// We use these to style large dropdown buttons
|
||||
$dropdown-button-padding-lrg: $button-pip-lrg * 5 + rem-calc(3) !default;
|
||||
$dropdown-button-pip-size-lrg: $button-pip-lrg - rem-calc(6) !default;
|
||||
$dropdown-button-pip-opposite-lrg: $button-pip-lrg * 2.5 !default;
|
||||
$dropdown-button-pip-top-lrg: (-$button-pip-lrg / 2) + rem-calc(3) !default;
|
||||
|
||||
// @mixins
|
||||
//
|
||||
// Dropdown Button Mixin
|
||||
//
|
||||
// We use this mixin to build off of the button mixin and add dropdown button styles
|
||||
//
|
||||
// $padding - Determines the size of button you're working with. Default: medium. Options [tiny, small, medium, large]
|
||||
// $pip-color - Color of the little triangle that points to the dropdown. Default: $white.
|
||||
// $base-style - Add in base-styles. This can be set to false. Default:true
|
||||
|
||||
@mixin dropdown-button($padding:medium, $pip-color:$white, $base-style:true) {
|
||||
|
||||
// We add in base styles, but they can be negated by setting to 'false'.
|
||||
@if $base-style {
|
||||
position: relative;
|
||||
outline: none;
|
||||
|
||||
// This creates the base styles for the triangle pip
|
||||
&::after {
|
||||
position: absolute;
|
||||
content: "";
|
||||
width: 0;
|
||||
height: 0;
|
||||
display: block;
|
||||
border-style: solid;
|
||||
border-color: $dropdown-button-pip-color transparent transparent transparent;
|
||||
top: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
// If we're dealing with tiny buttons, use these styles
|
||||
@if $padding == tiny {
|
||||
padding-#{$opposite-direction}: $dropdown-button-padding-tny;
|
||||
&:after {
|
||||
border-width: $dropdown-button-pip-size-tny;
|
||||
#{$opposite-direction}: $dropdown-button-pip-opposite-tny;
|
||||
margin-top: $dropdown-button-pip-top-tny;
|
||||
}
|
||||
}
|
||||
|
||||
// If we're dealing with small buttons, use these styles
|
||||
@if $padding == small {
|
||||
padding-#{$opposite-direction}: $dropdown-button-padding-sml;
|
||||
&::after {
|
||||
border-width: $dropdown-button-pip-size-sml;
|
||||
#{$opposite-direction}: $dropdown-button-pip-opposite-sml;
|
||||
margin-top: $dropdown-button-pip-top-sml;
|
||||
}
|
||||
}
|
||||
|
||||
// If we're dealing with default (medium) buttons, use these styles
|
||||
@if $padding == medium {
|
||||
padding-#{$opposite-direction}: $dropdown-button-padding-med;
|
||||
&::after {
|
||||
border-width: $dropdown-button-pip-size-med;
|
||||
#{$opposite-direction}: $dropdown-button-pip-opposite-med;
|
||||
margin-top: $dropdown-button-pip-top-med;
|
||||
}
|
||||
}
|
||||
|
||||
// If we're dealing with large buttons, use these styles
|
||||
@if $padding == large {
|
||||
padding-#{$opposite-direction}: $dropdown-button-padding-lrg;
|
||||
&::after {
|
||||
border-width: $dropdown-button-pip-size-lrg;
|
||||
#{$opposite-direction}: $dropdown-button-pip-opposite-lrg;
|
||||
margin-top: $dropdown-button-pip-top-lrg;
|
||||
}
|
||||
}
|
||||
|
||||
// We can control the pip color. We didn't use logic in this case, just set it and forget it.
|
||||
@if $pip-color {
|
||||
&::after { border-color: $pip-color transparent transparent transparent; }
|
||||
}
|
||||
}
|
||||
|
||||
@include exports("dropdown-button") {
|
||||
@if $include-html-button-classes {
|
||||
.dropdown.button, button.dropdown { @include dropdown-button;
|
||||
&.tiny { @include dropdown-button(tiny,$base-style:false); }
|
||||
&.small { @include dropdown-button(small,$base-style:false); }
|
||||
&.large { @include dropdown-button(large,$base-style:false); }
|
||||
&.secondary:after { border-color: $dropdown-button-pip-color-alt transparent transparent transparent; }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,262 @@
|
||||
// Foundation by ZURB
|
||||
// foundation.zurb.com
|
||||
// Licensed under MIT Open Source
|
||||
|
||||
@import "global";
|
||||
|
||||
//
|
||||
// @variables
|
||||
//
|
||||
$include-html-dropdown-classes: $include-html-classes !default;
|
||||
|
||||
// We use these to controls height and width styles.
|
||||
$f-dropdown-max-width: 200px !default;
|
||||
$f-dropdown-height: auto !default;
|
||||
$f-dropdown-max-height: none !default;
|
||||
|
||||
// Used for bottom position
|
||||
$f-dropdown-margin-top: 2px !default;
|
||||
|
||||
// Used for right position
|
||||
$f-dropdown-margin-left: $f-dropdown-margin-top !default;
|
||||
|
||||
// Used for left position
|
||||
$f-dropdown-margin-right: $f-dropdown-margin-top !default;
|
||||
|
||||
// Used for top position
|
||||
$f-dropdown-margin-bottom: $f-dropdown-margin-top !default;
|
||||
|
||||
// We use this to control the background color
|
||||
$f-dropdown-bg: $white !default;
|
||||
|
||||
// We use this to set the border styles for dropdowns.
|
||||
$f-dropdown-border-style: solid !default;
|
||||
$f-dropdown-border-width: 1px !default;
|
||||
$f-dropdown-border-color: scale-color($white, $lightness: -20%) !default;
|
||||
|
||||
// We use these to style the triangle pip.
|
||||
$f-dropdown-triangle-size: 6px !default;
|
||||
$f-dropdown-triangle-color: $white !default;
|
||||
$f-dropdown-triangle-side-offset: 10px !default;
|
||||
|
||||
// We use these to control styles for the list elements.
|
||||
$f-dropdown-list-style: none !default;
|
||||
$f-dropdown-font-color: $charcoal !default;
|
||||
$f-dropdown-font-size: rem-calc(14) !default;
|
||||
$f-dropdown-list-padding: rem-calc(5, 10) !default;
|
||||
$f-dropdown-line-height: rem-calc(18) !default;
|
||||
$f-dropdown-list-hover-bg: $smoke !default;
|
||||
$dropdown-mobile-default-float: 0 !default;
|
||||
|
||||
// We use this to control the styles for when the dropdown has custom content.
|
||||
$f-dropdown-content-padding: rem-calc(20) !default;
|
||||
|
||||
// Default radius for dropdown.
|
||||
$f-dropdown-radius: $global-radius !default;
|
||||
|
||||
//
|
||||
// @mixins
|
||||
//
|
||||
//
|
||||
// NOTE: Make default max-width change between list and content types. Can add more width with classes, maybe .small, .medium, .large, etc.;
|
||||
// We use this to style the dropdown container element.
|
||||
// $content-list - Sets list-style. Default: list. Options: [list, content]
|
||||
// $triangle - Sets if dropdown has triangle. Default:true.
|
||||
// $max-width - Default: $f-dropdown-max-width || 200px.
|
||||
@mixin dropdown-container($content:list, $triangle:true, $max-width:$f-dropdown-max-width) {
|
||||
position: absolute;
|
||||
left: -9999px;
|
||||
list-style: $f-dropdown-list-style;
|
||||
margin-#{$default-float}: 0;
|
||||
outline: none;
|
||||
|
||||
> *:first-child { margin-top: 0; }
|
||||
> *:last-child { margin-bottom: 0; }
|
||||
|
||||
@if $content == list {
|
||||
width: 100%;
|
||||
max-height: $f-dropdown-max-height;
|
||||
height: $f-dropdown-height;
|
||||
background: $f-dropdown-bg;
|
||||
border: $f-dropdown-border-style $f-dropdown-border-width $f-dropdown-border-color;
|
||||
font-size: $f-dropdown-font-size;
|
||||
z-index: 89;
|
||||
}
|
||||
@else if $content == content {
|
||||
padding: $f-dropdown-content-padding;
|
||||
width: 100%;
|
||||
height: $f-dropdown-height;
|
||||
max-height: $f-dropdown-max-height;
|
||||
background: $f-dropdown-bg;
|
||||
border: $f-dropdown-border-style $f-dropdown-border-width $f-dropdown-border-color;
|
||||
font-size: $f-dropdown-font-size;
|
||||
z-index: 89;
|
||||
}
|
||||
|
||||
@if $triangle == bottom {
|
||||
margin-top: $f-dropdown-margin-top;
|
||||
|
||||
&:before {
|
||||
@include css-triangle($f-dropdown-triangle-size, $f-dropdown-triangle-color, bottom);
|
||||
position: absolute;
|
||||
top: -($f-dropdown-triangle-size * 2);
|
||||
#{$default-float}: $f-dropdown-triangle-side-offset;
|
||||
z-index: 89;
|
||||
}
|
||||
&:after {
|
||||
@include css-triangle($f-dropdown-triangle-size + 1, $f-dropdown-border-color, bottom);
|
||||
position: absolute;
|
||||
top: -(($f-dropdown-triangle-size + 1) * 2);
|
||||
#{$default-float}: $f-dropdown-triangle-side-offset - 1;
|
||||
z-index: 88;
|
||||
}
|
||||
|
||||
&.right:before {
|
||||
#{$default-float}: auto;
|
||||
#{$opposite-direction}: $f-dropdown-triangle-side-offset;
|
||||
}
|
||||
&.right:after {
|
||||
#{$default-float}: auto;
|
||||
#{$opposite-direction}: $f-dropdown-triangle-side-offset - 1;
|
||||
}
|
||||
}
|
||||
|
||||
@if $triangle == $default-float {
|
||||
margin-top: 0;
|
||||
margin-#{$default-float}: $f-dropdown-margin-right;
|
||||
|
||||
&:before {
|
||||
@include css-triangle($f-dropdown-triangle-size, $f-dropdown-triangle-color, #{$opposite-direction});
|
||||
position: absolute;
|
||||
top: $f-dropdown-triangle-side-offset;
|
||||
#{$default-float}: -($f-dropdown-triangle-size * 2);
|
||||
z-index: 89;
|
||||
}
|
||||
&:after {
|
||||
@include css-triangle($f-dropdown-triangle-size + 1, $f-dropdown-border-color, #{$opposite-direction});
|
||||
position: absolute;
|
||||
top: $f-dropdown-triangle-side-offset - 1;
|
||||
#{$default-float}: -($f-dropdown-triangle-size * 2) - 2;
|
||||
z-index: 88;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@if $triangle == $opposite-direction {
|
||||
margin-top: 0;
|
||||
margin-#{$default-float}: -$f-dropdown-margin-right;
|
||||
|
||||
&:before {
|
||||
@include css-triangle($f-dropdown-triangle-size, $f-dropdown-triangle-color, #{$default-float});
|
||||
position: absolute;
|
||||
top: $f-dropdown-triangle-side-offset;
|
||||
#{$opposite-direction}: -($f-dropdown-triangle-size * 2);
|
||||
#{$default-float}: auto;
|
||||
z-index: 89;
|
||||
}
|
||||
&:after {
|
||||
@include css-triangle($f-dropdown-triangle-size + 1, $f-dropdown-border-color, #{$default-float});
|
||||
position: absolute;
|
||||
top: $f-dropdown-triangle-side-offset - 1;
|
||||
#{$opposite-direction}: -($f-dropdown-triangle-size * 2) - 2;
|
||||
#{$default-float}: auto;
|
||||
z-index: 88;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@if $triangle == top {
|
||||
margin-top: -$f-dropdown-margin-bottom;
|
||||
margin-left: 0;
|
||||
|
||||
&:before {
|
||||
@include css-triangle($f-dropdown-triangle-size, $f-dropdown-triangle-color, top);
|
||||
position: absolute;
|
||||
top: auto;
|
||||
bottom: -($f-dropdown-triangle-size * 2);
|
||||
#{$default-float}: $f-dropdown-triangle-side-offset;
|
||||
#{$opposite-direction}: auto;
|
||||
z-index: 89;
|
||||
}
|
||||
&:after {
|
||||
@include css-triangle($f-dropdown-triangle-size + 1, $f-dropdown-border-color, top);
|
||||
position: absolute;
|
||||
top: auto;
|
||||
bottom: -($f-dropdown-triangle-size * 2) - 2;
|
||||
#{$default-float}: $f-dropdown-triangle-side-offset - 1;
|
||||
#{$opposite-direction}: auto;
|
||||
z-index: 88;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@if $max-width { max-width: $max-width; }
|
||||
@else { max-width: $f-dropdown-max-width; }
|
||||
|
||||
}
|
||||
|
||||
// @MIXIN
|
||||
//
|
||||
// We use this to style the list elements or content inside the dropdown.
|
||||
|
||||
@mixin dropdown-style {
|
||||
font-size: $f-dropdown-font-size;
|
||||
cursor: $cursor-pointer-value;
|
||||
|
||||
line-height: $f-dropdown-line-height;
|
||||
margin: 0;
|
||||
|
||||
&:hover,
|
||||
&:focus { background: $f-dropdown-list-hover-bg; }
|
||||
|
||||
&.radius { @include radius($f-dropdown-radius); }
|
||||
|
||||
a {
|
||||
display: block;
|
||||
padding: $f-dropdown-list-padding;
|
||||
color: $f-dropdown-font-color;
|
||||
}
|
||||
}
|
||||
|
||||
@include exports("dropdown") {
|
||||
@if $include-html-dropdown-classes {
|
||||
|
||||
/* Foundation Dropdowns */
|
||||
.f-dropdown {
|
||||
@include dropdown-container(list, bottom);
|
||||
|
||||
&.drop-#{$opposite-direction} {
|
||||
@include dropdown-container(list, #{$default-float});
|
||||
}
|
||||
|
||||
&.drop-#{$default-float} {
|
||||
@include dropdown-container(list, #{$opposite-direction});
|
||||
}
|
||||
|
||||
&.drop-top {
|
||||
@include dropdown-container(list, top);
|
||||
}
|
||||
// max-width: none;
|
||||
|
||||
li { @include dropdown-style; }
|
||||
|
||||
// You can also put custom content in these dropdowns
|
||||
&.content { @include dropdown-container(content, $triangle:false); }
|
||||
|
||||
// Sizes
|
||||
&.tiny { max-width: 200px; }
|
||||
&.small { max-width: 300px; }
|
||||
&.medium { max-width: 500px; }
|
||||
&.large { max-width: 800px; }
|
||||
&.mega {
|
||||
width:100%!important;
|
||||
max-width:100%!important;
|
||||
|
||||
&.open{
|
||||
left:0!important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
// Foundation by ZURB
|
||||
// foundation.zurb.com
|
||||
// Licensed under MIT Open Source
|
||||
|
||||
@import "global";
|
||||
|
||||
//
|
||||
// @variables
|
||||
//
|
||||
$include-html-media-classes: $include-html-classes !default;
|
||||
|
||||
// We use these to control video container padding and margins
|
||||
$flex-video-padding-top: rem-calc(25) !default;
|
||||
$flex-video-padding-bottom: 67.5% !default;
|
||||
$flex-video-margin-bottom: rem-calc(16) !default;
|
||||
|
||||
// We use this to control widescreen bottom padding
|
||||
$flex-video-widescreen-padding-bottom: 56.34% !default;
|
||||
|
||||
//
|
||||
// @mixins
|
||||
//
|
||||
|
||||
@mixin flex-video-container {
|
||||
position: relative;
|
||||
padding-top: $flex-video-padding-top;
|
||||
padding-bottom: $flex-video-padding-bottom;
|
||||
height: 0;
|
||||
margin-bottom: $flex-video-margin-bottom;
|
||||
overflow: hidden;
|
||||
|
||||
&.widescreen { padding-bottom: $flex-video-widescreen-padding-bottom; }
|
||||
&.vimeo { padding-top: 0; }
|
||||
|
||||
iframe,
|
||||
object,
|
||||
embed,
|
||||
video {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
#{$default-float}: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
@include exports("flex-video") {
|
||||
@if $include-html-media-classes {
|
||||
.flex-video { @include flex-video-container; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,577 @@
|
||||
// Foundation by ZURB
|
||||
// foundation.zurb.com
|
||||
// Licensed under MIT Open Source
|
||||
|
||||
@import "global";
|
||||
@import "buttons";
|
||||
|
||||
//
|
||||
// @variables
|
||||
//
|
||||
$include-html-form-classes: $include-html-classes !default;
|
||||
|
||||
// We use this to set the base for lots of form spacing and positioning styles
|
||||
$form-spacing: rem-calc(16) !default;
|
||||
|
||||
// We use these to style the labels in different ways
|
||||
$form-label-pointer: pointer !default;
|
||||
$form-label-font-size: rem-calc(14) !default;
|
||||
$form-label-font-weight: $font-weight-normal !default;
|
||||
$form-label-line-height: 1.5 !default;
|
||||
$form-label-font-color: scale-color($black, $lightness: 30%) !default;
|
||||
$form-label-small-transform: capitalize !default;
|
||||
$form-label-bottom-margin: 0 !default;
|
||||
$input-font-family: inherit !default;
|
||||
$input-font-color: rgba(0,0,0,0.75) !default;
|
||||
$input-font-size: rem-calc(14) !default;
|
||||
$input-bg-color: $white !default;
|
||||
$input-focus-bg-color: scale-color($white, $lightness: -2%) !default;
|
||||
$input-border-color: scale-color($white, $lightness: -20%) !default;
|
||||
$input-focus-border-color: scale-color($white, $lightness: -40%) !default;
|
||||
$input-border-style: solid !default;
|
||||
$input-border-width: 1px !default;
|
||||
$input-border-radius: $global-radius !default;
|
||||
$input-disabled-bg: $gainsboro !default;
|
||||
$input-disabled-cursor: $cursor-default-value !default;
|
||||
$input-box-shadow: inset 0 1px 2px rgba(0,0,0,0.1) !default;
|
||||
$input-include-glowing-effect: false !default;
|
||||
|
||||
// We use these to style the fieldset border and spacing.
|
||||
$fieldset-border-style: solid !default;
|
||||
$fieldset-border-width: 1px !default;
|
||||
$fieldset-border-color: $gainsboro !default;
|
||||
$fieldset-padding: rem-calc(20) !default;
|
||||
$fieldset-margin: rem-calc(18 0) !default;
|
||||
|
||||
// We use these to style the legends when you use them
|
||||
$legend-bg: $white !default;
|
||||
$legend-font-weight: $font-weight-bold !default;
|
||||
$legend-padding: rem-calc(0 3) !default;
|
||||
|
||||
// We use these to style the prefix and postfix input elements
|
||||
$input-prefix-bg: scale-color($white, $lightness: -5%) !default;
|
||||
$input-prefix-border-color: scale-color($white, $lightness: -20%) !default;
|
||||
$input-prefix-border-size: 1px !default;
|
||||
$input-prefix-border-type: solid !default;
|
||||
$input-prefix-overflow: visible !default;
|
||||
$input-prefix-font-color: $oil !default;
|
||||
$input-prefix-font-color-alt: $white !default;
|
||||
|
||||
// We use this setting to turn on/off HTML5 number spinners (the up/down arrows)
|
||||
$input-number-spinners: true !default;
|
||||
|
||||
// We use these to style the error states for inputs and labels
|
||||
$input-error-message-padding: rem-calc(6 9 9) !default;
|
||||
$input-error-message-top: -1px !default;
|
||||
$input-error-message-font-size: rem-calc(12) !default;
|
||||
$input-error-message-font-weight: $font-weight-normal !default;
|
||||
$input-error-message-font-style: italic !default;
|
||||
$input-error-message-font-color: $white !default;
|
||||
$input-error-message-bg-color: $alert-color !default;
|
||||
$input-error-message-font-color-alt: $oil !default;
|
||||
|
||||
// We use this to style the glowing effect of inputs when focused
|
||||
$glowing-effect-fade-time: 0.45s !default;
|
||||
$glowing-effect-color: $input-focus-border-color !default;
|
||||
|
||||
// Select variables
|
||||
$select-bg-color: $ghost !default;
|
||||
$select-hover-bg-color: scale-color($select-bg-color, $lightness: -3%) !default;
|
||||
|
||||
//
|
||||
// @MIXINS
|
||||
//
|
||||
|
||||
// We use this mixin to give us form styles for rows inside of forms
|
||||
@mixin form-row-base {
|
||||
.row { margin: 0 ((-$form-spacing) / 2);
|
||||
|
||||
.column,
|
||||
.columns { padding: 0 ($form-spacing / 2); }
|
||||
|
||||
// Use this to collapse the margins of a form row
|
||||
&.collapse { margin: 0;
|
||||
|
||||
.column,
|
||||
.columns { padding: 0; }
|
||||
input {
|
||||
@include side-radius($opposite-direction, 0);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
input.column,
|
||||
input.columns,
|
||||
textarea.column,
|
||||
textarea.columns { padding-#{$default-float}: ($form-spacing / 2); }
|
||||
}
|
||||
|
||||
// @MIXIN
|
||||
//
|
||||
// We use this mixin to give all basic form elements their style
|
||||
@mixin form-element {
|
||||
background-color: $input-bg-color;
|
||||
font-family: $input-font-family;
|
||||
border: {
|
||||
style: $input-border-style;
|
||||
width: $input-border-width;
|
||||
color: $input-border-color;
|
||||
}
|
||||
box-shadow: $input-box-shadow;
|
||||
color: $input-font-color;
|
||||
display: block;
|
||||
font-size: $input-font-size;
|
||||
margin: 0 0 $form-spacing 0;
|
||||
padding: $form-spacing / 2;
|
||||
height: ($input-font-size + ($form-spacing * 1.5) - rem-calc(1));
|
||||
width: 100%;
|
||||
@include box-sizing(border-box);
|
||||
@if $input-include-glowing-effect {
|
||||
@include block-glowing-effect(focus, $glowing-effect-fade-time, $glowing-effect-color);
|
||||
}
|
||||
// Basic focus styles
|
||||
&:focus {
|
||||
background: $input-focus-bg-color;
|
||||
border-color: $input-focus-border-color;
|
||||
outline: none;
|
||||
}
|
||||
// Disbaled Styles
|
||||
&:disabled {
|
||||
background-color: $input-disabled-bg;
|
||||
cursor: $input-disabled-cursor;
|
||||
}
|
||||
|
||||
// Disabled background input background color
|
||||
&[disabled],
|
||||
&[readonly],
|
||||
fieldset[disabled] & {
|
||||
background-color: $input-disabled-bg;
|
||||
cursor: $input-disabled-cursor;
|
||||
}
|
||||
}
|
||||
|
||||
// @MIXIN
|
||||
//
|
||||
// We use this mixin to create form labels
|
||||
//
|
||||
// $alignment - Alignment options. Default: false. Options: [right, inline, false]
|
||||
// $base-style - Control whether or not the base styles come through. Default: true.
|
||||
@mixin form-label($alignment:false, $base-style:true) {
|
||||
|
||||
// Control whether or not the base styles come through.
|
||||
@if $base-style {
|
||||
font-size: $form-label-font-size;
|
||||
color: $form-label-font-color;
|
||||
cursor: $form-label-pointer;
|
||||
display: block;
|
||||
font-weight: $form-label-font-weight;
|
||||
line-height: $form-label-line-height;
|
||||
margin-bottom: $form-label-bottom-margin;
|
||||
}
|
||||
|
||||
// Alignment options
|
||||
@if $alignment == right {
|
||||
float: none !important;
|
||||
text-align: right;
|
||||
}
|
||||
@else if $alignment == inline {
|
||||
margin: 0 0 $form-spacing 0;
|
||||
padding: $form-spacing / 2 + rem-calc($input-border-width) 0;
|
||||
}
|
||||
}
|
||||
|
||||
// We use this mixin to create postfix/prefix form Labels
|
||||
@mixin prefix-postfix-base {
|
||||
display: block;
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
padding-top: 0;
|
||||
padding-bottom: 0;
|
||||
border-style: $input-prefix-border-type;
|
||||
border-width: $input-prefix-border-size;
|
||||
overflow: $input-prefix-overflow;
|
||||
font-size: $form-label-font-size;
|
||||
height: ($input-font-size + ($form-spacing * 1.5) - rem-calc(1));
|
||||
line-height: ($input-font-size + ($form-spacing * 1.5) - rem-calc(1));
|
||||
}
|
||||
|
||||
// @MIXIN
|
||||
//
|
||||
// We use this mixin to create prefix label styles
|
||||
// $bg - Default:$input-prefix-bg || scale-color($white, $lightness: -5%) !default;
|
||||
// $is-button - Toggle position settings if prefix is a button. Default:false
|
||||
//
|
||||
@mixin prefix($bg:$input-prefix-bg, $border:$input-prefix-border-color, $is-button:false) {
|
||||
|
||||
@if $bg {
|
||||
$bg-lightness: lightness($bg);
|
||||
background: $bg;
|
||||
border-#{$opposite-direction}: none;
|
||||
|
||||
// Control the font color based on background brightness
|
||||
@if $bg-lightness > 70% or $bg == yellow { color: $input-prefix-font-color; }
|
||||
@else { color: $input-prefix-font-color-alt; }
|
||||
}
|
||||
|
||||
@if $border {
|
||||
border-color: $border;
|
||||
}
|
||||
|
||||
@if $is-button {
|
||||
padding-#{$default-float}: 0;
|
||||
padding-#{$opposite-direction}: 0;
|
||||
padding-top: 0;
|
||||
padding-bottom: 0;
|
||||
text-align: center;
|
||||
border: none;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// @MIXIN
|
||||
//
|
||||
// We use this mixin to create postfix label styles
|
||||
// $bg - Default:$input-prefix-bg || scale-color($white, $lightness: -5%) !default;
|
||||
// $is-button - Toggle position settings if prefix is a button. Default: false
|
||||
@mixin postfix($bg:$input-prefix-bg, $border:$input-prefix-border-color, $is-button:false) {
|
||||
|
||||
@if $bg {
|
||||
$bg-lightness: lightness($bg);
|
||||
background: $bg;
|
||||
border-#{$default-float}: none;
|
||||
|
||||
// Control the font color based on background brightness
|
||||
@if $bg-lightness > 70% or $bg == yellow { color: $input-prefix-font-color; }
|
||||
@else { color: $input-prefix-font-color-alt; }
|
||||
}
|
||||
|
||||
@if $border {
|
||||
border-color: $border;
|
||||
}
|
||||
|
||||
@if $is-button {
|
||||
padding-#{$default-float}: 0;
|
||||
padding-#{$opposite-direction}: 0;
|
||||
padding-top: 0;
|
||||
padding-bottom: 0;
|
||||
text-align: center;
|
||||
border: none;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// We use this mixin to style fieldsets
|
||||
@mixin fieldset {
|
||||
border: $fieldset-border-width $fieldset-border-style $fieldset-border-color;
|
||||
padding: $fieldset-padding;
|
||||
margin: $fieldset-margin;
|
||||
|
||||
// and legend styles
|
||||
legend {
|
||||
font-weight: $legend-font-weight;
|
||||
background: $legend-bg;
|
||||
padding: $legend-padding;
|
||||
margin: 0;
|
||||
margin-#{$default-float}: rem-calc(-3);
|
||||
}
|
||||
}
|
||||
|
||||
// @MIXIN
|
||||
//
|
||||
// We use this mixin to control border and background color of error inputs
|
||||
// $color - Default: $alert-color (found in settings file)
|
||||
@mixin form-error-color($color:$alert-color) {
|
||||
border-color: $color;
|
||||
background-color: rgba($color, 0.1);
|
||||
|
||||
// Go back to normal on focus
|
||||
&:focus {
|
||||
background: $input-focus-bg-color;
|
||||
border-color: $input-focus-border-color;
|
||||
}
|
||||
}
|
||||
|
||||
// @MIXIN
|
||||
//
|
||||
// We use this simple mixin to style labels for error inputs
|
||||
// $color - Default:$alert-color. Found in settings file
|
||||
@mixin form-label-error-color($color:$alert-color) { color: $color; }
|
||||
|
||||
// @MIXIN
|
||||
//
|
||||
// We use this mixin to create error message styles
|
||||
// $bg - Default: $alert-color (Found in settings file)
|
||||
@mixin form-error-message($bg:$input-error-message-bg-color) {
|
||||
display: block;
|
||||
padding: $input-error-message-padding;
|
||||
margin-top: $input-error-message-top;
|
||||
margin-bottom: $form-spacing;
|
||||
font-size: $input-error-message-font-size;
|
||||
font-weight: $input-error-message-font-weight;
|
||||
font-style: $input-error-message-font-style;
|
||||
|
||||
// We can control the text color based on the brightness of the background.
|
||||
$bg-lightness: lightness($bg);
|
||||
background: $bg;
|
||||
@if $bg-lightness < 70% or $bg == yellow { color: $input-error-message-font-color; }
|
||||
@else { color: $input-error-message-font-color-alt; }
|
||||
}
|
||||
|
||||
// We use this mixin to style select elements
|
||||
@mixin form-select {
|
||||
-webkit-appearance: none !important;
|
||||
border-radius: 0;
|
||||
background-color: $select-bg-color;
|
||||
|
||||
// Hide the dropdown arrow shown in newer IE versions
|
||||
&::-ms-expand {
|
||||
display: none;
|
||||
}
|
||||
|
||||
// The custom arrow has some fake horizontal padding so we can align it
|
||||
// from the right side of the element without relying on CSS3
|
||||
background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMTJweCIgeT0iMHB4IiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIzcHgiIHZpZXdCb3g9IjAgMCA2IDMiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDYgMyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHBvbHlnb24gcG9pbnRzPSI1Ljk5MiwwIDIuOTkyLDMgLTAuMDA4LDAgIi8+PC9zdmc+);
|
||||
|
||||
// We can safely use leftmost and rightmost now
|
||||
background-position: if($text-direction == 'rtl', 0%, 100%) center;
|
||||
|
||||
background-repeat: no-repeat;
|
||||
border: {
|
||||
style: $input-border-style;
|
||||
width: $input-border-width;
|
||||
color: $input-border-color;
|
||||
}
|
||||
padding: ($form-spacing / 2);
|
||||
font-size: $input-font-size;
|
||||
font-family: $body-font-family;
|
||||
color: $input-font-color;
|
||||
line-height: normal;
|
||||
@include radius(0);
|
||||
&.radius { @include radius($global-radius); }
|
||||
&:hover {
|
||||
background-color: $select-hover-bg-color;
|
||||
border-color: $input-focus-border-color;
|
||||
}
|
||||
// Disabled Styles
|
||||
&:disabled {
|
||||
background-color: $input-disabled-bg;
|
||||
cursor: $input-disabled-cursor;
|
||||
}
|
||||
}
|
||||
|
||||
// We use this mixin to turn on/off HTML5 number spinners
|
||||
@mixin html5number($browser, $on:true) {
|
||||
@if $on==false {
|
||||
@if $browser==webkit {
|
||||
-webkit-appearance: none;
|
||||
margin: 0;
|
||||
} @else if $browser==moz {
|
||||
-moz-appearance: textfield;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@include exports("form") {
|
||||
@if $include-html-form-classes {
|
||||
/* Standard Forms */
|
||||
form { margin: 0 0 $form-spacing; }
|
||||
|
||||
/* Using forms within rows, we need to set some defaults */
|
||||
form .row { @include form-row-base; }
|
||||
|
||||
/* Label Styles */
|
||||
label { @include form-label;
|
||||
&.right { @include form-label(right,false); }
|
||||
&.inline { @include form-label(inline,false); }
|
||||
/* Styles for required inputs */
|
||||
small {
|
||||
text-transform: $form-label-small-transform;
|
||||
color: scale-color($form-label-font-color, $lightness: 15%);
|
||||
}
|
||||
}
|
||||
|
||||
/* Attach elements to the beginning or end of an input */
|
||||
.prefix,
|
||||
.postfix { @include prefix-postfix-base; }
|
||||
|
||||
/* Adjust padding, alignment and radius if pre/post element is a button */
|
||||
.postfix.button { @include button-size(false,false); @include postfix(false, false, true); }
|
||||
.prefix.button { @include button-size(false,false); @include prefix(false, false, true); }
|
||||
|
||||
.prefix.button.radius { @include radius(0); @include side-radius($default-float, $button-radius); }
|
||||
.postfix.button.radius { @include radius(0); @include side-radius($opposite-direction, $button-radius); }
|
||||
.prefix.button.round { @include radius(0); @include side-radius($default-float, $button-round); }
|
||||
.postfix.button.round { @include radius(0); @include side-radius($opposite-direction, $button-round); }
|
||||
|
||||
/* Separate prefix and postfix styles when on span or label so buttons keep their own */
|
||||
span.prefix,label.prefix { @include prefix(); }
|
||||
span.postfix,label.postfix { @include postfix(); }
|
||||
|
||||
/* We use this to get basic styling on all basic form elements */
|
||||
#{text-inputs(all, 'input')} {
|
||||
-webkit-appearance: none;
|
||||
border-radius: 0;
|
||||
@include form-element;
|
||||
@if $input-include-glowing-effect == false {
|
||||
@include single-transition(all, 0.15s, linear);
|
||||
}
|
||||
&.radius {
|
||||
@include radius($input-border-radius);
|
||||
}
|
||||
}
|
||||
|
||||
form {
|
||||
.row {
|
||||
.prefix-radius.row.collapse {
|
||||
input,
|
||||
textarea,
|
||||
select,
|
||||
button { @include radius(0); @include side-radius($opposite-direction, $button-radius); }
|
||||
.prefix { @include radius(0); @include side-radius($default-float, $button-radius); }
|
||||
}
|
||||
.postfix-radius.row.collapse {
|
||||
input,
|
||||
textarea,
|
||||
select,
|
||||
button { @include radius(0); @include side-radius($default-float, $button-radius); }
|
||||
.postfix { @include radius(0); @include side-radius($opposite-direction, $button-radius); }
|
||||
}
|
||||
.prefix-round.row.collapse {
|
||||
input,
|
||||
textarea,
|
||||
select,
|
||||
button { @include radius(0); @include side-radius($opposite-direction, $button-round); }
|
||||
.prefix { @include radius(0); @include side-radius($default-float, $button-round); }
|
||||
}
|
||||
.postfix-round.row.collapse {
|
||||
input,
|
||||
textarea,
|
||||
select,
|
||||
button { @include radius(0); @include side-radius($default-float, $button-round); }
|
||||
.postfix { @include radius(0); @include side-radius($opposite-direction, $button-round); }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
input[type="submit"] {
|
||||
-webkit-appearance: none;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
/* Respect enforced amount of rows for textarea */
|
||||
textarea[rows] {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
/* Not allow resize out of parent */
|
||||
textarea {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
/* Add height value for select elements to match text input height */
|
||||
select {
|
||||
@include form-select;
|
||||
height: ($input-font-size + ($form-spacing * 1.5) - rem-calc(1));
|
||||
&[multiple] {
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
|
||||
/* Adjust margin for form elements below */
|
||||
input[type="file"],
|
||||
input[type="checkbox"],
|
||||
input[type="radio"],
|
||||
select {
|
||||
margin: 0 0 $form-spacing 0;
|
||||
}
|
||||
|
||||
input[type="checkbox"] + label,
|
||||
input[type="radio"] + label {
|
||||
display: inline-block;
|
||||
margin-#{$default-float}: $form-spacing * .5;
|
||||
margin-#{$opposite-direction}: $form-spacing;
|
||||
margin-bottom: 0;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
/* Normalize file input width */
|
||||
input[type="file"] {
|
||||
width:100%;
|
||||
}
|
||||
|
||||
/* HTML5 Number spinners settings */
|
||||
input[type=number] {
|
||||
@include html5number(moz, $input-number-spinners)
|
||||
}
|
||||
input[type="number"]::-webkit-inner-spin-button,
|
||||
input[type="number"]::-webkit-outer-spin-button {
|
||||
@include html5number(webkit, $input-number-spinners);
|
||||
}
|
||||
|
||||
/* We add basic fieldset styling */
|
||||
fieldset {
|
||||
@include fieldset;
|
||||
}
|
||||
|
||||
/* Error Handling */
|
||||
|
||||
#{data('abide')} {
|
||||
.error small.error, .error span.error, span.error, small.error {
|
||||
@include form-error-message;
|
||||
}
|
||||
span.error, small.error { display: none; }
|
||||
}
|
||||
|
||||
span.error, small.error {
|
||||
@include form-error-message;
|
||||
}
|
||||
|
||||
.error {
|
||||
input,
|
||||
textarea,
|
||||
select {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
input[type="checkbox"],
|
||||
input[type="radio"] {
|
||||
margin-bottom: $form-spacing
|
||||
}
|
||||
|
||||
label,
|
||||
label.error {
|
||||
@include form-label-error-color;
|
||||
}
|
||||
|
||||
small.error {
|
||||
@include form-error-message;
|
||||
}
|
||||
|
||||
> label {
|
||||
> small {
|
||||
color: scale-color($form-label-font-color, $lightness: 15%);
|
||||
background: transparent;
|
||||
padding: 0;
|
||||
text-transform: $form-label-small-transform;
|
||||
font-style: normal;
|
||||
font-size: 60%;
|
||||
margin: 0;
|
||||
display: inline;
|
||||
}
|
||||
}
|
||||
|
||||
span.error-message {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
input.error,
|
||||
textarea.error,
|
||||
select.error {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
label.error { @include form-label-error-color; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,480 @@
|
||||
// Foundation by ZURB
|
||||
// foundation.zurb.com
|
||||
// Licensed under MIT Open Source
|
||||
|
||||
@import "../functions";
|
||||
//
|
||||
// Foundation Variables
|
||||
//
|
||||
|
||||
// Data attribute namespace
|
||||
// styles get applied to [data-mysite-plugin], etc
|
||||
$namespace: false !default;
|
||||
|
||||
// The default font-size is set to 100% of the browser style sheet (usually 16px)
|
||||
// for compatibility with browser-based text zoom or user-set defaults.
|
||||
|
||||
// Since the typical default browser font-size is 16px, that makes the calculation for grid size.
|
||||
// If you want your base font-size to be different and not have it affect the grid breakpoints,
|
||||
// set $rem-base to $base-font-size and make sure $base-font-size is a px value.
|
||||
$base-font-size: 100% !default;
|
||||
|
||||
// $base-line-height is 24px while $base-font-size is 16px
|
||||
$base-line-height: 1.5 !default;
|
||||
|
||||
//
|
||||
// Global Foundation Mixins
|
||||
//
|
||||
|
||||
// @mixins
|
||||
//
|
||||
// We use this to control border radius.
|
||||
// $radius - Default: $global-radius || 4px
|
||||
@mixin radius($radius:$global-radius) {
|
||||
@if $radius {
|
||||
border-radius: $radius;
|
||||
}
|
||||
}
|
||||
|
||||
// @mixins
|
||||
//
|
||||
// We use this to create equal side border radius on elements.
|
||||
// $side - Options: left, right, top, bottom
|
||||
@mixin side-radius($side, $radius:$global-radius) {
|
||||
@if ($side == left or $side == right) {
|
||||
-webkit-border-bottom-#{$side}-radius: $radius;
|
||||
-webkit-border-top-#{$side}-radius: $radius;
|
||||
border-bottom-#{$side}-radius: $radius;
|
||||
border-top-#{$side}-radius: $radius;
|
||||
} @else {
|
||||
-webkit-#{$side}-left-radius: $radius;
|
||||
-webkit-#{$side}-right-radius: $radius;
|
||||
border-#{$side}-left-radius: $radius;
|
||||
border-#{$side}-right-radius: $radius;
|
||||
}
|
||||
}
|
||||
|
||||
// @mixins
|
||||
//
|
||||
// We can control whether or not we have inset shadows edges.
|
||||
// $active - Default: true, Options: false
|
||||
@mixin inset-shadow($active:true) {
|
||||
box-shadow: $shiny-edge-size $shiny-edge-color inset;
|
||||
|
||||
@if $active { &:active {
|
||||
box-shadow: $shiny-edge-size $shiny-edge-active-color inset; } }
|
||||
}
|
||||
|
||||
// @mixins
|
||||
//
|
||||
// We use this to add transitions to elements
|
||||
// $property - Default: all, Options: http://www.w3.org/TR/css3-transitions/#animatable-properties
|
||||
// $speed - Default: 300ms
|
||||
// $ease - Default:ease-out, Options: http://css-tricks.com/almanac/properties/t/transition-timing-function/
|
||||
@mixin single-transition($property:all, $speed:300ms, $ease:ease-out) {
|
||||
transition: $property $speed $ease;
|
||||
}
|
||||
|
||||
// @mixins
|
||||
//
|
||||
// We use this to add box-sizing across browser prefixes
|
||||
@mixin box-sizing($type:border-box) {
|
||||
-webkit-box-sizing: $type; // Android < 2.3, iOS < 4
|
||||
-moz-box-sizing: $type; // Firefox < 29
|
||||
box-sizing: $type; // Chrome, IE 8+, Opera, Safari 5.1
|
||||
}
|
||||
|
||||
// @mixins
|
||||
//
|
||||
// We use this to create isosceles triangles
|
||||
// $triangle-size - Used to set border-size. No default, set a px or em size.
|
||||
// $triangle-color - Used to set border-color which makes up triangle. No default
|
||||
// $triangle-direction - Used to determine which direction triangle points. Options: top, bottom, left, right
|
||||
@mixin css-triangle($triangle-size, $triangle-color, $triangle-direction) {
|
||||
content: "";
|
||||
display: block;
|
||||
width: 0;
|
||||
height: 0;
|
||||
border: inset $triangle-size;
|
||||
@if ($triangle-direction == top) {
|
||||
border-color: $triangle-color transparent transparent transparent;
|
||||
border-top-style: solid;
|
||||
}
|
||||
@if ($triangle-direction == bottom) {
|
||||
border-color: transparent transparent $triangle-color transparent;
|
||||
border-bottom-style: solid;
|
||||
}
|
||||
@if ($triangle-direction == left) {
|
||||
border-color: transparent transparent transparent $triangle-color;
|
||||
border-left-style: solid;
|
||||
}
|
||||
@if ($triangle-direction == right) {
|
||||
border-color: transparent $triangle-color transparent transparent;
|
||||
border-right-style: solid;
|
||||
}
|
||||
}
|
||||
|
||||
// @mixins
|
||||
//
|
||||
// We use this to create the icon with three lines aka the hamburger icon, the menu-icon or the navicon
|
||||
// $width - Width of hamburger icon in rem
|
||||
// $left - If false, icon will be centered horizontally || explicitly set value in rem
|
||||
// $top - If false, icon will be centered vertically || explicitly set value in rem
|
||||
// $thickness - thickness of lines in hamburger icon, set value in px
|
||||
// $gap - spacing between the lines in hamburger icon, set value in px
|
||||
// $color - icon color
|
||||
// $hover-color - icon color during hover
|
||||
// $offcanvas - Set to true of @include in offcanvas
|
||||
@mixin hamburger($width, $left, $top, $thickness, $gap, $color, $hover-color, $offcanvas) {
|
||||
span::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
display: block;
|
||||
height: 0;
|
||||
|
||||
@if $offcanvas {
|
||||
@if $top {
|
||||
top: $top;
|
||||
}
|
||||
@else {
|
||||
top: 50%;
|
||||
margin-top: (-$width/2);
|
||||
}
|
||||
@if $left {
|
||||
left: $left;
|
||||
}
|
||||
@else {
|
||||
left: ($tabbar-menu-icon-width - $width)/2;
|
||||
}
|
||||
}
|
||||
@else {
|
||||
top: 50%;
|
||||
margin-top: -($width/2);
|
||||
#{$opposite-direction}: $topbar-link-padding;
|
||||
}
|
||||
|
||||
box-shadow:
|
||||
0 0 0 $thickness $color,
|
||||
0 $gap + $thickness 0 $thickness $color,
|
||||
0 (2 * $gap + 2*$thickness) 0 $thickness $color;
|
||||
width: $width;
|
||||
}
|
||||
span:hover:after {
|
||||
box-shadow:
|
||||
0 0 0 $thickness $hover-color,
|
||||
0 $gap + $thickness 0 $thickness $hover-color,
|
||||
0 (2 * $gap + 2*$thickness) 0 $thickness $hover-color;
|
||||
}
|
||||
}
|
||||
|
||||
// We use this to do clear floats
|
||||
@mixin clearfix {
|
||||
&:before, &:after { content: " "; display: table; }
|
||||
&:after { clear: both; }
|
||||
}
|
||||
|
||||
// @mixins
|
||||
//
|
||||
// We use this to add a glowing effect to block elements
|
||||
// $selector - Used for selector state. Default: focus, Options: hover, active, visited
|
||||
// $fade-time - Default: 300ms
|
||||
// $glowing-effect-color - Default: fade-out($primary-color, .25)
|
||||
@mixin block-glowing-effect($selector:focus, $fade-time:300ms, $glowing-effect-color:fade-out($primary-color, .25)) {
|
||||
transition: box-shadow $fade-time, border-color $fade-time ease-in-out;
|
||||
|
||||
&:#{$selector} {
|
||||
box-shadow: 0 0 5px $glowing-effect-color;
|
||||
border-color: $glowing-effect-color;
|
||||
}
|
||||
}
|
||||
|
||||
// @mixins
|
||||
//
|
||||
// We use this to translate elements in 2D
|
||||
// $horizontal: Default: 0
|
||||
// $vertical: Default: 0
|
||||
@mixin translate2d($horizontal:0, $vertical:0) {
|
||||
transform: translate($horizontal,$vertical)
|
||||
}
|
||||
|
||||
// @mixins
|
||||
//
|
||||
// Makes an element visually hidden, but accessible.
|
||||
// @see http://snook.ca/archives/html_and_css/hiding-content-for-accessibility
|
||||
@mixin element-invisible {
|
||||
position: absolute !important;
|
||||
height: 1px;
|
||||
width: 1px;
|
||||
overflow: hidden;
|
||||
clip: rect(1px, 1px, 1px, 1px);
|
||||
}
|
||||
|
||||
// @mixins
|
||||
//
|
||||
// Turns off the element-invisible effect.
|
||||
@mixin element-invisible-off {
|
||||
position: static !important;
|
||||
height: auto;
|
||||
width: auto;
|
||||
overflow: visible;
|
||||
clip: auto;
|
||||
}
|
||||
|
||||
$white : #FFFFFF !default;
|
||||
$ghost : #FAFAFA !default;
|
||||
$snow : #F9F9F9 !default;
|
||||
$vapor : #F6F6F6 !default;
|
||||
$white-smoke : #F5F5F5 !default;
|
||||
$silver : #EFEFEF !default;
|
||||
$smoke : #EEEEEE !default;
|
||||
$gainsboro : #DDDDDD !default;
|
||||
$iron : #CCCCCC !default;
|
||||
$base : #AAAAAA !default;
|
||||
$aluminum : #999999 !default;
|
||||
$jumbo : #888888 !default;
|
||||
$monsoon : #777777 !default;
|
||||
$steel : #666666 !default;
|
||||
$charcoal : #555555 !default;
|
||||
$tuatara : #444444 !default;
|
||||
$oil : #333333 !default;
|
||||
$jet : #222222 !default;
|
||||
$black : #000000 !default;
|
||||
|
||||
// We use these as default colors throughout
|
||||
$primary-color: #008CBA !default; // bondi-blue
|
||||
$secondary-color: #e7e7e7 !default; // white-lilac
|
||||
$alert-color: #f04124 !default; // cinnabar
|
||||
$success-color: #43AC6A !default; // sea-green
|
||||
$warning-color: #f08a24 !default; // carrot
|
||||
$info-color: #a0d3e8 !default; // cornflower
|
||||
|
||||
// We use these to define default font stacks
|
||||
$font-family-sans-serif: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif !default;
|
||||
$font-family-serif: Georgia, Cambria, "Times New Roman", Times, serif !default;
|
||||
$font-family-monospace: Consolas, "Liberation Mono", Courier, monospace !default;
|
||||
|
||||
// We use these to define default font weights
|
||||
$font-weight-normal: normal !default;
|
||||
$font-weight-bold: bold !default;
|
||||
|
||||
// We use these to control various global styles
|
||||
$body-bg: #fff !default;
|
||||
$body-font-color: #222 !default;
|
||||
$body-font-family: $font-family-sans-serif !default;
|
||||
$body-font-weight: $font-weight-normal !default;
|
||||
$body-font-style: normal !default;
|
||||
|
||||
// We use this to control font-smoothing
|
||||
$font-smoothing: antialiased !default;
|
||||
|
||||
// We use these to control text direction settings
|
||||
$text-direction: ltr !default;
|
||||
$default-float: left !default;
|
||||
$opposite-direction: right !default;
|
||||
@if $text-direction == ltr {
|
||||
$default-float: left;
|
||||
$opposite-direction: right;
|
||||
} @else {
|
||||
$default-float: right;
|
||||
$opposite-direction: left;
|
||||
}
|
||||
|
||||
// We use these to make sure border radius matches unless we want it different.
|
||||
$global-radius: 3px !default;
|
||||
$global-rounded: 1000px !default;
|
||||
|
||||
// We use these to control inset shadow shiny edges and depressions.
|
||||
$shiny-edge-size: 0 1px 0 !default;
|
||||
$shiny-edge-color: rgba(#fff, .5) !default;
|
||||
$shiny-edge-active-color: rgba(#000, .2) !default;
|
||||
|
||||
// We use this to control whether or not CSS classes come through in the gem files.
|
||||
$include-html-classes: true !default;
|
||||
$include-print-styles: true !default;
|
||||
$include-html-global-classes: $include-html-classes !default;
|
||||
|
||||
$column-gutter: rem-calc(30) !default;
|
||||
|
||||
// Media Query Ranges
|
||||
$small-range: (0, 40em) !default;
|
||||
$medium-range: (40.063em, 64em) !default;
|
||||
$large-range: (64.063em, 90em) !default;
|
||||
$xlarge-range: (90.063em, 120em) !default;
|
||||
$xxlarge-range: (120.063em, 99999999em) !default;
|
||||
|
||||
|
||||
$screen: "only screen" !default;
|
||||
|
||||
$landscape: "#{$screen} and (orientation: landscape)" !default;
|
||||
$portrait: "#{$screen} and (orientation: portrait)" !default;
|
||||
|
||||
$small-up: $screen !default;
|
||||
$small-only: "#{$screen} and (max-width: #{upper-bound($small-range)})" !default;
|
||||
|
||||
$medium-up: "#{$screen} and (min-width:#{lower-bound($medium-range)})" !default;
|
||||
$medium-only: "#{$screen} and (min-width:#{lower-bound($medium-range)}) and (max-width:#{upper-bound($medium-range)})" !default;
|
||||
|
||||
$large-up: "#{$screen} and (min-width:#{lower-bound($large-range)})" !default;
|
||||
$large-only: "#{$screen} and (min-width:#{lower-bound($large-range)}) and (max-width:#{upper-bound($large-range)})" !default;
|
||||
|
||||
$xlarge-up: "#{$screen} and (min-width:#{lower-bound($xlarge-range)})" !default;
|
||||
$xlarge-only: "#{$screen} and (min-width:#{lower-bound($xlarge-range)}) and (max-width:#{upper-bound($xlarge-range)})" !default;
|
||||
|
||||
$xxlarge-up: "#{$screen} and (min-width:#{lower-bound($xxlarge-range)})" !default;
|
||||
$xxlarge-only: "#{$screen} and (min-width:#{lower-bound($xxlarge-range)}) and (max-width:#{upper-bound($xxlarge-range)})" !default;
|
||||
|
||||
// Legacy
|
||||
$small: $medium-up;
|
||||
$medium: $medium-up;
|
||||
$large: $large-up;
|
||||
|
||||
|
||||
//We use this as cursors values for enabling the option of having custom cursors in the whole site's stylesheet
|
||||
$cursor-auto-value: auto !default;
|
||||
$cursor-crosshair-value: crosshair !default;
|
||||
$cursor-default-value: default !default;
|
||||
$cursor-disabled-value: not-allowed !default;
|
||||
$cursor-pointer-value: pointer !default;
|
||||
$cursor-help-value: help !default;
|
||||
$cursor-text-value: text !default;
|
||||
|
||||
|
||||
@include exports("global") {
|
||||
|
||||
// Meta styles are included in all builds, as they are a dependancy of the Javascript.
|
||||
// Used to provide media query values for javascript components.
|
||||
// Forward slash placed around everything to convince PhantomJS to read the value.
|
||||
|
||||
meta.foundation-version {
|
||||
font-family: "/5.5.1/";
|
||||
}
|
||||
|
||||
meta.foundation-mq-small {
|
||||
font-family: "/" + unquote($small-up) + "/";
|
||||
width: lower-bound($small-range);
|
||||
}
|
||||
|
||||
meta.foundation-mq-small-only {
|
||||
font-family: "/" + unquote($small-only) + "/";
|
||||
width: lower-bound($small-range);
|
||||
}
|
||||
|
||||
meta.foundation-mq-medium {
|
||||
font-family: "/" + unquote($medium-up) + "/";
|
||||
width: lower-bound($medium-range);
|
||||
}
|
||||
|
||||
meta.foundation-mq-medium-only {
|
||||
font-family: "/" + unquote($medium-only) + "/";
|
||||
width: lower-bound($medium-range);
|
||||
}
|
||||
|
||||
meta.foundation-mq-large {
|
||||
font-family: "/" + unquote($large-up) + "/";
|
||||
width: lower-bound($large-range);
|
||||
}
|
||||
|
||||
meta.foundation-mq-large-only {
|
||||
font-family: "/" + unquote($large-only) + "/";
|
||||
width: lower-bound($large-range);
|
||||
}
|
||||
|
||||
meta.foundation-mq-xlarge {
|
||||
font-family: "/" + unquote($xlarge-up) + "/";
|
||||
width: lower-bound($xlarge-range);
|
||||
}
|
||||
|
||||
meta.foundation-mq-xlarge-only {
|
||||
font-family: "/" + unquote($xlarge-only) + "/";
|
||||
width: lower-bound($xlarge-range);
|
||||
}
|
||||
|
||||
meta.foundation-mq-xxlarge {
|
||||
font-family: "/" + unquote($xxlarge-up) + "/";
|
||||
width: lower-bound($xxlarge-range);
|
||||
}
|
||||
|
||||
meta.foundation-data-attribute-namespace {
|
||||
font-family: #{$namespace};
|
||||
}
|
||||
|
||||
@if $include-html-global-classes {
|
||||
|
||||
// Must be 100% for off canvas to work
|
||||
html, body { height: 100%; }
|
||||
|
||||
// Set box-sizing globally to handle padding and border widths
|
||||
*,
|
||||
*:before,
|
||||
*:after {
|
||||
@include box-sizing(border-box);
|
||||
}
|
||||
|
||||
html,
|
||||
body { font-size: $base-font-size; }
|
||||
|
||||
// Default body styles
|
||||
body {
|
||||
background: $body-bg;
|
||||
color: $body-font-color;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
font-family: $body-font-family;
|
||||
font-weight: $body-font-weight;
|
||||
font-style: $body-font-style;
|
||||
line-height: $base-line-height; // Set to $base-line-height to take on browser default of 150%
|
||||
position: relative;
|
||||
cursor: $cursor-auto-value;
|
||||
}
|
||||
|
||||
a:hover { cursor: $cursor-pointer-value; }
|
||||
|
||||
// Grid Defaults to get images and embeds to work properly
|
||||
img { max-width: 100%; height: auto; }
|
||||
|
||||
img { -ms-interpolation-mode: bicubic; }
|
||||
|
||||
#map_canvas,
|
||||
.map_canvas {
|
||||
img,
|
||||
embed,
|
||||
object { max-width: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
// Miscellaneous useful HTML classes
|
||||
.left { float: left !important; }
|
||||
.right { float: right !important; }
|
||||
.clearfix { @include clearfix; }
|
||||
|
||||
// Hide visually and from screen readers
|
||||
.hide {
|
||||
display: none;
|
||||
}
|
||||
|
||||
// Hide visually and from screen readers, but maintain layout
|
||||
.invisible { visibility: hidden; }
|
||||
|
||||
// Font smoothing
|
||||
// Antialiased font smoothing works best for light text on a dark background.
|
||||
// Apply to single elements instead of globally to body.
|
||||
// Note this only applies to webkit-based desktop browsers and Firefox 25 (and later) on the Mac.
|
||||
.antialiased { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
|
||||
|
||||
// Get rid of gap under images by making them display: inline-block; by default
|
||||
img {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
//
|
||||
// Global resets for forms
|
||||
//
|
||||
|
||||
// Make sure textarea takes on height automatically
|
||||
textarea { height: auto; min-height: 50px; }
|
||||
|
||||
// Make select elements 100% width by default
|
||||
select { width: 100%; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,289 @@
|
||||
// Foundation by ZURB
|
||||
// foundation.zurb.com
|
||||
// Licensed under MIT Open Source
|
||||
|
||||
@import "global";
|
||||
|
||||
//
|
||||
// @variables
|
||||
//
|
||||
$include-html-grid-classes: $include-html-classes !default;
|
||||
$include-xl-html-grid-classes: false !default;
|
||||
|
||||
$row-width: rem-calc(1000) !default;
|
||||
$total-columns: 12 !default;
|
||||
|
||||
$last-child-float: $opposite-direction !default;
|
||||
|
||||
//
|
||||
// Grid Functions
|
||||
//
|
||||
|
||||
// Deprecated: We'll drop support for this in 5.1, use grid-calc()
|
||||
@function gridCalc($colNumber, $totalColumns) {
|
||||
@warn "gridCalc() is deprecated, use grid-calc()";
|
||||
@return grid-calc($colNumber, $totalColumns);
|
||||
}
|
||||
|
||||
// @FUNCTION
|
||||
// $colNumber - Found in settings file
|
||||
// $totalColumns - Found in settings file
|
||||
@function grid-calc($colNumber, $totalColumns) {
|
||||
@return percentage(($colNumber / $totalColumns));
|
||||
}
|
||||
|
||||
//
|
||||
// @mixins
|
||||
//
|
||||
|
||||
// For creating container, nested, and collapsed rows.
|
||||
//
|
||||
//
|
||||
// $behavior - Any special behavior for this row? Default: false. Options: nest, collapse, nest-collapse, false.
|
||||
@mixin grid-row($behavior: false) {
|
||||
|
||||
// use @include grid-row(nest); to include a nested row
|
||||
@if $behavior == nest {
|
||||
width: auto;
|
||||
margin-#{$default-float}: -($column-gutter/2);
|
||||
margin-#{$opposite-direction}: -($column-gutter/2);
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
max-width: none;
|
||||
}
|
||||
|
||||
// use @include grid-row(collapse); to collapsed a container row margins
|
||||
@else if $behavior == collapse {
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
max-width: $row-width;
|
||||
}
|
||||
|
||||
// use @include grid-row(nest-collapse); to collapse outer margins on a nested row
|
||||
@else if $behavior == nest-collapse {
|
||||
width: auto;
|
||||
margin: 0;
|
||||
max-width: none;
|
||||
}
|
||||
|
||||
// use @include grid-row; to use a container row
|
||||
@else {
|
||||
width: 100%;
|
||||
margin-#{$default-float}: auto;
|
||||
margin-#{$opposite-direction}: auto;
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
max-width: $row-width;
|
||||
}
|
||||
|
||||
// Clearfix for all rows
|
||||
@include clearfix();
|
||||
}
|
||||
|
||||
// Creates a column, should be used inside of a media query to control layouts
|
||||
//
|
||||
// $columns - The number of columns this should be
|
||||
// $last-column - Is this the last column? Default: false.
|
||||
// $center - Center these columns? Default: false.
|
||||
// $offset - # of columns to offset. Default: false.
|
||||
// $push - # of columns to push. Default: false.
|
||||
// $pull - # of columns to pull. Default: false.
|
||||
// $collapse - Get rid of gutter padding on column? Default: false.
|
||||
// $float - Should this float? Default: true. Options: true, false, left, right.
|
||||
@mixin grid-column(
|
||||
$columns:false,
|
||||
$last-column:false,
|
||||
$center:false,
|
||||
$offset:false,
|
||||
$push:false,
|
||||
$pull:false,
|
||||
$collapse:false,
|
||||
$float:true,
|
||||
$position:false) {
|
||||
|
||||
// If positioned for default .column, include relative position
|
||||
// push and pull require position set
|
||||
@if $position or $push or $pull {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
// If collapsed, get rid of gutter padding
|
||||
@if $collapse {
|
||||
padding-left: 0;
|
||||
padding-right: 0;
|
||||
}
|
||||
|
||||
// Gutter padding whenever a column isn't set to collapse
|
||||
// (use $collapse:null to do nothing)
|
||||
@else if $collapse == false {
|
||||
padding-left: ($column-gutter / 2);
|
||||
padding-right: ($column-gutter / 2);
|
||||
}
|
||||
|
||||
// If a column number is given, calculate width
|
||||
@if $columns {
|
||||
width: grid-calc($columns, $total-columns);
|
||||
|
||||
// If last column, float naturally instead of to the right
|
||||
@if $last-column { float: $opposite-direction; }
|
||||
}
|
||||
|
||||
// Source Ordering, adds left/right depending on which you use.
|
||||
@if $push { #{$default-float}: grid-calc($push, $total-columns); #{$opposite-direction}: auto; }
|
||||
@if $pull { #{$opposite-direction}: grid-calc($pull, $total-columns); #{$default-float}: auto; }
|
||||
|
||||
@if $float {
|
||||
@if $float == left or $float == true { float: $default-float; }
|
||||
@else if $float == right { float: $opposite-direction; }
|
||||
@else { float: none; }
|
||||
}
|
||||
|
||||
// If centered, get rid of float and add appropriate margins
|
||||
@if $center {
|
||||
margin-#{$default-float}: auto;
|
||||
margin-#{$opposite-direction}: auto;
|
||||
float: none;
|
||||
}
|
||||
|
||||
// If offset, calculate appropriate margins
|
||||
@if $offset { margin-#{$default-float}: grid-calc($offset, $total-columns) !important; }
|
||||
|
||||
}
|
||||
|
||||
// Create presentational classes for grid
|
||||
//
|
||||
// $size - Name of class to use, i.e. "large" will generate .large-1, .large-2, etc.
|
||||
@mixin grid-html-classes($size) {
|
||||
|
||||
@for $i from 0 through $total-columns - 1 {
|
||||
.#{$size}-push-#{$i} {
|
||||
@include grid-column($push:$i, $collapse:null, $float:false);
|
||||
}
|
||||
.#{$size}-pull-#{$i} {
|
||||
@include grid-column($pull:$i, $collapse:null, $float:false);
|
||||
}
|
||||
}
|
||||
|
||||
.column,
|
||||
.columns { @include grid-column($columns:false, $position:true); }
|
||||
|
||||
|
||||
@for $i from 1 through $total-columns {
|
||||
.#{$size}-#{$i} { @include grid-column($columns:$i,$collapse:null,$float:false); }
|
||||
}
|
||||
|
||||
@for $i from 0 through $total-columns - 1 {
|
||||
.#{$size}-offset-#{$i} { @include grid-column($offset:$i, $collapse:null,$float:false); }
|
||||
}
|
||||
|
||||
.#{$size}-reset-order {
|
||||
margin-#{$default-float}: 0;
|
||||
margin-#{$opposite-direction}: 0;
|
||||
left: auto;
|
||||
right: auto;
|
||||
float: $default-float;
|
||||
}
|
||||
|
||||
.column.#{$size}-centered,
|
||||
.columns.#{$size}-centered { @include grid-column($center:true, $collapse:null, $float:false); }
|
||||
|
||||
.column.#{$size}-uncentered,
|
||||
.columns.#{$size}-uncentered {
|
||||
margin-#{$default-float}: 0;
|
||||
margin-#{$opposite-direction}: 0;
|
||||
float: $default-float;
|
||||
}
|
||||
|
||||
// Fighting [class*="column"] + [class*="column"]:last-child
|
||||
.column.#{$size}-centered:last-child,
|
||||
.columns.#{$size}-centered:last-child{
|
||||
float: none;
|
||||
}
|
||||
|
||||
// Fighting .column.<previous-size>-centered:last-child
|
||||
.column.#{$size}-uncentered:last-child,
|
||||
.columns.#{$size}-uncentered:last-child {
|
||||
float: $default-float;
|
||||
}
|
||||
|
||||
.column.#{$size}-uncentered.opposite,
|
||||
.columns.#{$size}-uncentered.opposite {
|
||||
float: $opposite-direction;
|
||||
}
|
||||
|
||||
.row {
|
||||
&.#{$size}-collapse {
|
||||
> .column,
|
||||
> .columns { @include grid-column($collapse:true, $float:false); }
|
||||
|
||||
.row {margin-left:0; margin-right:0;}
|
||||
}
|
||||
&.#{$size}-uncollapse {
|
||||
> .column,
|
||||
> .columns {
|
||||
@include grid-column;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@include exports("grid") {
|
||||
@if $include-html-grid-classes {
|
||||
.row {
|
||||
@include grid-row;
|
||||
|
||||
&.collapse {
|
||||
> .column,
|
||||
> .columns { @include grid-column($collapse:true, $float:false); }
|
||||
|
||||
.row {margin-left:0; margin-right:0;}
|
||||
}
|
||||
|
||||
.row { @include grid-row($behavior:nest);
|
||||
&.collapse { @include grid-row($behavior:nest-collapse); }
|
||||
}
|
||||
}
|
||||
|
||||
.column,
|
||||
.columns { @include grid-column($columns:$total-columns); }
|
||||
|
||||
[class*="column"] + [class*="column"]:last-child { float: $last-child-float; }
|
||||
[class*="column"] + [class*="column"].end { float: $default-float; }
|
||||
|
||||
@media #{$small-up} {
|
||||
@include grid-html-classes($size:small);
|
||||
}
|
||||
|
||||
@media #{$medium-up} {
|
||||
@include grid-html-classes($size:medium);
|
||||
// Old push and pull classes
|
||||
@for $i from 0 through $total-columns - 1 {
|
||||
.push-#{$i} {
|
||||
@include grid-column($push:$i, $collapse:null, $float:false);
|
||||
}
|
||||
.pull-#{$i} {
|
||||
@include grid-column($pull:$i, $collapse:null, $float:false);
|
||||
}
|
||||
}
|
||||
}
|
||||
@media #{$large-up} {
|
||||
@include grid-html-classes($size:large);
|
||||
@for $i from 0 through $total-columns - 1 {
|
||||
.push-#{$i} {
|
||||
@include grid-column($push:$i, $collapse:null, $float:false);
|
||||
}
|
||||
.pull-#{$i} {
|
||||
@include grid-column($pull:$i, $collapse:null, $float:false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@if $include-xl-html-grid-classes {
|
||||
@media #{$xlarge-up} {
|
||||
@include grid-html-classes($size:xlarge);
|
||||
}
|
||||
@media #{$xxlarge-up} {
|
||||
@include grid-html-classes($size:xxlarge);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,359 @@
|
||||
// Foundation by ZURB
|
||||
// foundation.zurb.com
|
||||
// Licensed under MIT Open Source
|
||||
|
||||
@import "global";
|
||||
|
||||
|
||||
// @name
|
||||
// @dependencies _global.scss
|
||||
|
||||
$include-html-icon-bar-classes: $include-html-classes !default;
|
||||
|
||||
// @variables
|
||||
|
||||
// We use these to style the icon-bar and items
|
||||
$icon-bar-bg: $oil !default;
|
||||
$icon-bar-font-color: $white !default;
|
||||
$icon-bar-font-color-hover: $icon-bar-font-color !default;
|
||||
$icon-bar-font-size: 1rem !default;
|
||||
$icon-bar-hover-color: $primary-color !default;
|
||||
$icon-bar-icon-color: $white !default;
|
||||
$icon-bar-icon-color-hover: $icon-bar-icon-color !default;
|
||||
$icon-bar-icon-size: 1.875rem !default;
|
||||
$icon-bar-image-width: 1.875rem !default;
|
||||
$icon-bar-image-height: 1.875rem !default;
|
||||
$icon-bar-active-color: $primary-color !default;
|
||||
$icon-bar-item-padding: 1.25rem !default;
|
||||
|
||||
// We use this to set default opacity and cursor for disabled icons.
|
||||
$icon-bar-disabled-opacity: 0.7 !default;
|
||||
$icon-bar-disabled-cursor: $cursor-disabled-value !default;
|
||||
|
||||
|
||||
//
|
||||
// @mixins
|
||||
//
|
||||
|
||||
// We use this mixin to create the base styles for our Icon bar element.
|
||||
//
|
||||
@mixin icon-bar-base() {
|
||||
|
||||
width: 100%;
|
||||
font-size: 0;
|
||||
display: inline-block;
|
||||
|
||||
& > * {
|
||||
text-align: center;
|
||||
font-size: $icon-bar-font-size;
|
||||
width: 25%;
|
||||
margin: 0 auto;
|
||||
display: block;
|
||||
padding: $icon-bar-item-padding;
|
||||
float: left;
|
||||
|
||||
i, img {
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
|
||||
& + label {
|
||||
margin-top: .0625rem;
|
||||
}
|
||||
}
|
||||
|
||||
i {
|
||||
font-size: $icon-bar-icon-size;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
img {
|
||||
width: $icon-bar-image-width;
|
||||
height: $icon-bar-image-height;
|
||||
}
|
||||
}
|
||||
|
||||
&.label-right > * {
|
||||
|
||||
i, img {
|
||||
margin: 0 .0625rem 0 0;
|
||||
display: inline-block;
|
||||
|
||||
& + label {
|
||||
margin-top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
label { display: inline-block; }
|
||||
}
|
||||
|
||||
&.vertical.label-right > * {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
&.vertical, &.small-vertical{
|
||||
height: 100%;
|
||||
width: auto;
|
||||
|
||||
.item {
|
||||
width: auto;
|
||||
margin: auto;
|
||||
float: none;
|
||||
}
|
||||
}
|
||||
|
||||
&.medium-vertical {
|
||||
@media #{$medium-up} {
|
||||
height: 100%;
|
||||
width: auto;
|
||||
|
||||
.item {
|
||||
width: auto;
|
||||
margin: auto;
|
||||
float: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
&.large-vertical {
|
||||
@media #{$large-up} {
|
||||
height: 100%;
|
||||
width: auto;
|
||||
|
||||
.item {
|
||||
width: auto;
|
||||
margin: auto;
|
||||
float: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// We use this mixin to create the size styles for icon bars.
|
||||
@mixin icon-bar-size(
|
||||
$padding: $icon-bar-item-padding,
|
||||
$font-size: $icon-bar-font-size,
|
||||
$icon-size: $icon-bar-icon-size,
|
||||
$image-width: $icon-bar-image-width,
|
||||
$image-height: $icon-bar-image-height) {
|
||||
|
||||
& > * {
|
||||
font-size: $font-size;
|
||||
padding: $padding;
|
||||
|
||||
i, img {
|
||||
|
||||
& + label {
|
||||
margin-top: .0625rem;
|
||||
}
|
||||
}
|
||||
|
||||
i {
|
||||
font-size: $icon-size;
|
||||
}
|
||||
|
||||
img {
|
||||
width: $image-width;
|
||||
height: $image-height;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@mixin icon-bar-style(
|
||||
$bar-bg:$icon-bar-bg,
|
||||
$bar-font-color:$icon-bar-font-color,
|
||||
$bar-font-color-hover:$icon-bar-font-color-hover,
|
||||
$bar-hover-color:$icon-bar-hover-color,
|
||||
$bar-icon-color:$icon-bar-icon-color,
|
||||
$bar-icon-color-hover:$icon-bar-icon-color-hover,
|
||||
$bar-active-color:$icon-bar-active-color,
|
||||
$base-style:true,
|
||||
$disabled:false) {
|
||||
|
||||
@if $base-style {
|
||||
|
||||
background: $bar-bg;
|
||||
|
||||
& > * {
|
||||
label { color: $bar-font-color; }
|
||||
|
||||
i { color: $bar-icon-color; }
|
||||
}
|
||||
|
||||
& > a:hover {
|
||||
|
||||
background: $bar-hover-color;
|
||||
|
||||
label { color: $bar-font-color-hover; }
|
||||
|
||||
i { color: $bar-icon-color-hover; }
|
||||
}
|
||||
|
||||
& > a.active {
|
||||
|
||||
background: $bar-active-color;
|
||||
|
||||
label { color: $bar-font-color-hover; }
|
||||
|
||||
i { color: $bar-icon-color-hover; }
|
||||
}
|
||||
}
|
||||
@if $disabled {
|
||||
.item.disabled {
|
||||
opacity: $icon-bar-disabled-opacity;
|
||||
cursor: $icon-bar-disabled-cursor;
|
||||
pointer-events: none;
|
||||
>* {
|
||||
opacity: $icon-bar-disabled-opacity;
|
||||
cursor: $icon-bar-disabled-cursor;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// We use this to quickly create icon bars with a single mixin
|
||||
// $height - The overall calculated height of the icon bar (horizontal)
|
||||
// $bar-bg - the background color of the bar
|
||||
// $bar-font-color - the font color
|
||||
// $bar-hover-color - okay these are pretty obvious variables
|
||||
// $bar-icon-color - maybe we could skip explaining them all? Okay this one does change icon color if you use an icon font
|
||||
// $bar-active-color - the color of an active / hover state
|
||||
// $base-style - Apply base styles? Default: true.
|
||||
// $disabled - Allow disabled icons? Default: false.
|
||||
|
||||
@mixin icon-bar(
|
||||
$bar-bg:$icon-bar-bg,
|
||||
$bar-font-color:$icon-bar-font-color,
|
||||
$bar-font-color-hover:$icon-bar-font-color-hover,
|
||||
$bar-hover-color:$icon-bar-hover-color,
|
||||
$bar-icon-color:$icon-bar-icon-color,
|
||||
$bar-icon-color-hover:$icon-bar-icon-color-hover,
|
||||
$bar-active-color:$icon-bar-active-color,
|
||||
$padding: $icon-bar-item-padding,
|
||||
$font-size: $icon-bar-font-size,
|
||||
$icon-size: $icon-bar-icon-size,
|
||||
$image-width: $icon-bar-image-width,
|
||||
$image-height: $icon-bar-image-height,
|
||||
$base-style:true,
|
||||
$disabled:true) {
|
||||
@include icon-bar-base();
|
||||
@include icon-bar-size($padding, $font-size, $icon-size, $image-width, $image-height);
|
||||
@include icon-bar-style($bar-bg, $bar-font-color, $bar-font-color-hover, $bar-hover-color, $bar-icon-color, $bar-icon-color-hover, $bar-active-color, $base-style, $disabled);
|
||||
}
|
||||
|
||||
@include exports("icon-bar") {
|
||||
@if $include-html-icon-bar-classes {
|
||||
.icon-bar {
|
||||
@include icon-bar;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@if $include-html-icon-bar-classes {
|
||||
|
||||
// toolbar styles
|
||||
|
||||
.icon-bar {
|
||||
|
||||
// Counts
|
||||
|
||||
&.two-up {
|
||||
.item { width: 50%; }
|
||||
&.vertical .item, &.small-vertical .item { width: auto; }
|
||||
&.medium-vertical .item {
|
||||
@media #{$medium-up} {
|
||||
width: auto;
|
||||
}
|
||||
}
|
||||
&.large-vertical .item {
|
||||
@media #{$large-up} {
|
||||
width: auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
&.three-up {
|
||||
.item { width: 33.3333%; }
|
||||
&.vertical .item, &.small-vertical .item { width: auto; }
|
||||
&.medium-vertical .item {
|
||||
@media #{$medium-up} {
|
||||
width: auto;
|
||||
}
|
||||
}
|
||||
&.large-vertical .item {
|
||||
@media #{$large-up} {
|
||||
width: auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
&.four-up {
|
||||
.item { width: 25%; }
|
||||
&.vertical .item, &.small-vertical .item { width: auto; }
|
||||
&.medium-vertical .item {
|
||||
@media #{$medium-up} {
|
||||
width: auto;
|
||||
}
|
||||
}
|
||||
&.large-vertical .item {
|
||||
@media #{$large-up} {
|
||||
width: auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
&.five-up {
|
||||
.item { width: 20%; }
|
||||
&.vertical .item, &.small-vertical .item { width: auto; }
|
||||
&.medium-vertical .item {
|
||||
@media #{$medium-up} {
|
||||
width: auto;
|
||||
}
|
||||
}
|
||||
&.large-vertical .item {
|
||||
@media #{$large-up} {
|
||||
width: auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
&.six-up {
|
||||
.item { width: 16.66667%; }
|
||||
&.vertical .item, &.small-vertical .item { width: auto; }
|
||||
&.medium-vertical .item {
|
||||
@media #{$medium-up} {
|
||||
width: auto;
|
||||
}
|
||||
}
|
||||
&.large-vertical .item {
|
||||
@media #{$large-up} {
|
||||
width: auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
&.seven-up {
|
||||
.item { width: 14.28571%; }
|
||||
&.vertical .item, &.small-vertical .item { width: auto; }
|
||||
&.medium-vertical .item {
|
||||
@media #{$medium-up} {
|
||||
width: auto;
|
||||
}
|
||||
}
|
||||
&.large-vertical .item {
|
||||
@media #{$large-up} {
|
||||
width: auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
&.eight-up {
|
||||
.item { width: 12.5%; }
|
||||
&.vertical .item, &.small-vertical .item { width: auto; }
|
||||
&.medium-vertical .item {
|
||||
@media #{$medium-up} {
|
||||
width: auto;
|
||||
}
|
||||
}
|
||||
&.large-vertical .item {
|
||||
@media #{$large-up} {
|
||||
width: auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
// Foundation by ZURB
|
||||
// foundation.zurb.com
|
||||
// Licensed under MIT Open Source
|
||||
|
||||
@import "global";
|
||||
|
||||
//
|
||||
// @variables
|
||||
//
|
||||
$include-html-inline-list-classes: $include-html-classes !default;
|
||||
|
||||
// We use this to control the margins and padding of the inline list.
|
||||
$inline-list-top-margin: 0 !default;
|
||||
$inline-list-opposite-margin: 0 !default;
|
||||
$inline-list-bottom-margin: rem-calc(17) !default;
|
||||
$inline-list-default-float-margin: rem-calc(-22) !default;
|
||||
$inline-list-default-float-list-margin: rem-calc(22) !default;
|
||||
|
||||
$inline-list-padding: 0 !default;
|
||||
|
||||
// We use this to control the overflow of the inline list.
|
||||
$inline-list-overflow: hidden !default;
|
||||
|
||||
// We use this to control the list items
|
||||
$inline-list-display: block !default;
|
||||
|
||||
// We use this to control any elements within list items
|
||||
$inline-list-children-display: block !default;
|
||||
|
||||
//
|
||||
// @mixins
|
||||
//
|
||||
// We use this mixin to create inline lists
|
||||
@mixin inline-list {
|
||||
margin: $inline-list-top-margin auto $inline-list-bottom-margin auto;
|
||||
margin-#{$default-float}: $inline-list-default-float-margin;
|
||||
margin-#{$opposite-direction}: $inline-list-opposite-margin;
|
||||
padding: $inline-list-padding;
|
||||
list-style: none;
|
||||
overflow: $inline-list-overflow;
|
||||
|
||||
& > li {
|
||||
list-style: none;
|
||||
float: $default-float;
|
||||
margin-#{$default-float}: $inline-list-default-float-list-margin;
|
||||
display: $inline-list-display;
|
||||
&>* { display: $inline-list-children-display; }
|
||||
}
|
||||
}
|
||||
|
||||
@include exports("inline-list") {
|
||||
@if $include-html-inline-list-classes {
|
||||
.inline-list {
|
||||
@include inline-list();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,222 @@
|
||||
// Foundation by ZURB
|
||||
// foundation.zurb.com
|
||||
// Licensed under MIT Open Source
|
||||
|
||||
@import "global";
|
||||
|
||||
//
|
||||
// @variables
|
||||
//
|
||||
$include-html-joyride-classes: $include-html-classes !default;
|
||||
|
||||
// Controlling default Joyride styles
|
||||
$joyride-tip-bg: $oil !default;
|
||||
$joyride-tip-default-width: 300px !default;
|
||||
$joyride-tip-padding: rem-calc(18 20 24) !default;
|
||||
$joyride-tip-border: solid 1px $charcoal !default;
|
||||
$joyride-tip-radius: 4px !default;
|
||||
$joyride-tip-position-offset: 22px !default;
|
||||
|
||||
// Here, we're setting the tip font styles
|
||||
$joyride-tip-font-color: $white !default;
|
||||
$joyride-tip-font-size: rem-calc(14) !default;
|
||||
$joyride-tip-header-weight: $font-weight-bold !default;
|
||||
|
||||
// This changes the nub size
|
||||
$joyride-tip-nub-size: 10px !default;
|
||||
|
||||
// This adjusts the styles for the timer when its enabled
|
||||
$joyride-tip-timer-width: 50px !default;
|
||||
$joyride-tip-timer-height: 3px !default;
|
||||
$joyride-tip-timer-color: $steel !default;
|
||||
|
||||
// This changes up the styles for the close button
|
||||
$joyride-tip-close-color: $monsoon !default;
|
||||
$joyride-tip-close-size: 24px !default;
|
||||
$joyride-tip-close-weight: $font-weight-normal !default;
|
||||
|
||||
// When Joyride is filling the screen, we use this style for the bg
|
||||
$joyride-screenfill: rgba(0,0,0,0.5) !default;
|
||||
|
||||
|
||||
// We decided not to make a mixin for this because it relies on
|
||||
// predefined classes to work properly.
|
||||
@include exports("joyride") {
|
||||
@if $include-html-joyride-classes {
|
||||
|
||||
/* Foundation Joyride */
|
||||
.joyride-list { display: none; }
|
||||
|
||||
/* Default styles for the container */
|
||||
.joyride-tip-guide {
|
||||
display: none;
|
||||
position: absolute;
|
||||
background: $joyride-tip-bg;
|
||||
color: $joyride-tip-font-color;
|
||||
z-index: 101;
|
||||
top: 0;
|
||||
#{$default-float}: 2.5%;
|
||||
font-family: inherit;
|
||||
font-weight: $font-weight-normal;
|
||||
width: 95%;
|
||||
}
|
||||
|
||||
.lt-ie9 .joyride-tip-guide {
|
||||
max-width:800px;
|
||||
#{$default-float}: 50%;
|
||||
margin-#{$default-float}:-400px;
|
||||
}
|
||||
|
||||
.joyride-content-wrapper {
|
||||
width: 100%;
|
||||
|
||||
padding: $joyride-tip-padding;
|
||||
|
||||
.button { margin-bottom: 0 !important; }
|
||||
|
||||
.joyride-prev-tip { margin-right: 10px; }
|
||||
}
|
||||
|
||||
/* Add a little css triangle pip, older browser just miss out on the fanciness of it */
|
||||
.joyride-tip-guide {
|
||||
.joyride-nub {
|
||||
display: block;
|
||||
position: absolute;
|
||||
#{$default-float}: $joyride-tip-position-offset;
|
||||
width: 0;
|
||||
height: 0;
|
||||
border: $joyride-tip-nub-size solid $joyride-tip-bg;
|
||||
|
||||
&.top {
|
||||
border-top-style: solid;
|
||||
border-color: $joyride-tip-bg;
|
||||
border-top-color: transparent !important;
|
||||
border-#{$default-float}-color: transparent !important;
|
||||
border-#{$opposite-direction}-color: transparent !important;
|
||||
top: -($joyride-tip-nub-size*2);
|
||||
}
|
||||
&.bottom {
|
||||
border-bottom-style: solid;
|
||||
border-color: $joyride-tip-bg !important;
|
||||
border-bottom-color: transparent !important;
|
||||
border-#{$default-float}-color: transparent !important;
|
||||
border-#{$opposite-direction}-color: transparent !important;
|
||||
bottom: -($joyride-tip-nub-size*2);
|
||||
}
|
||||
|
||||
&.right { right: -($joyride-tip-nub-size*2); }
|
||||
&.left { left: -($joyride-tip-nub-size*2); }
|
||||
}
|
||||
}
|
||||
|
||||
/* Typography */
|
||||
.joyride-tip-guide h1,
|
||||
.joyride-tip-guide h2,
|
||||
.joyride-tip-guide h3,
|
||||
.joyride-tip-guide h4,
|
||||
.joyride-tip-guide h5,
|
||||
.joyride-tip-guide h6 {
|
||||
line-height: 1.25;
|
||||
margin: 0;
|
||||
font-weight: $joyride-tip-header-weight;
|
||||
color: $joyride-tip-font-color;
|
||||
}
|
||||
.joyride-tip-guide p {
|
||||
margin: rem-calc(0 0 18 0);
|
||||
font-size: $joyride-tip-font-size;
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
.joyride-timer-indicator-wrap {
|
||||
width: $joyride-tip-timer-width;
|
||||
height: $joyride-tip-timer-height;
|
||||
border: $joyride-tip-border;
|
||||
position: absolute;
|
||||
#{$opposite-direction}: rem-calc(17);
|
||||
bottom: rem-calc(16);
|
||||
}
|
||||
.joyride-timer-indicator {
|
||||
display: block;
|
||||
width: 0;
|
||||
height: inherit;
|
||||
background: $joyride-tip-timer-color;
|
||||
}
|
||||
|
||||
.joyride-close-tip {
|
||||
position: absolute;
|
||||
#{$opposite-direction}: 12px;
|
||||
top: 10px;
|
||||
color: $joyride-tip-close-color !important;
|
||||
text-decoration: none;
|
||||
font-size: $joyride-tip-close-size;
|
||||
font-weight: $joyride-tip-close-weight;
|
||||
line-height: .5 !important;
|
||||
|
||||
&:hover,
|
||||
&:focus { color: $smoke !important; }
|
||||
}
|
||||
|
||||
.joyride-modal-bg {
|
||||
position: fixed;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
background: transparent;
|
||||
background: $joyride-screenfill;
|
||||
z-index: 100;
|
||||
display: none;
|
||||
top: 0;
|
||||
#{$default-float}: 0;
|
||||
cursor: $cursor-pointer-value;
|
||||
}
|
||||
|
||||
.joyride-expose-wrapper {
|
||||
background-color: $white;
|
||||
position: absolute;
|
||||
border-radius: 3px;
|
||||
z-index: 102;
|
||||
box-shadow: 0 0 15px $white;
|
||||
}
|
||||
|
||||
.joyride-expose-cover {
|
||||
background: transparent;
|
||||
border-radius: 3px;
|
||||
position: absolute;
|
||||
z-index: 9999;
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
|
||||
/* Styles for screens that are at least 768px; */
|
||||
@media #{$small} {
|
||||
.joyride-tip-guide { width: $joyride-tip-default-width; #{$default-float}: inherit;
|
||||
.joyride-nub {
|
||||
&.bottom {
|
||||
border-color: $joyride-tip-bg !important;
|
||||
border-bottom-color: transparent !important;
|
||||
border-#{$default-float}-color: transparent !important;
|
||||
border-#{$opposite-direction}-color: transparent !important;
|
||||
bottom: -($joyride-tip-nub-size*2);
|
||||
}
|
||||
&.right {
|
||||
border-color: $joyride-tip-bg !important;
|
||||
border-top-color: transparent !important;
|
||||
border-right-color: transparent !important; border-bottom-color: transparent !important;
|
||||
top: $joyride-tip-position-offset;
|
||||
left: auto;
|
||||
right: -($joyride-tip-nub-size*2);
|
||||
}
|
||||
&.left {
|
||||
border-color: $joyride-tip-bg !important;
|
||||
border-top-color: transparent !important;
|
||||
border-left-color: transparent !important;
|
||||
border-bottom-color: transparent !important;
|
||||
top: $joyride-tip-position-offset;
|
||||
left: -($joyride-tip-nub-size*2);
|
||||
right: auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
// Foundation by ZURB
|
||||
// foundation.zurb.com
|
||||
// Licensed under MIT Open Source
|
||||
|
||||
@import "global";
|
||||
|
||||
//
|
||||
// @variables
|
||||
//
|
||||
$include-html-keystroke-classes: $include-html-classes !default;
|
||||
|
||||
// We use these to control text styles.
|
||||
$keystroke-font: "Consolas", "Menlo", "Courier", monospace !default;
|
||||
$keystroke-font-size: inherit !default;
|
||||
$keystroke-font-color: $jet !default;
|
||||
$keystroke-font-color-alt: $white !default;
|
||||
$keystroke-function-factor: -7% !default;
|
||||
|
||||
// We use this to control keystroke padding.
|
||||
$keystroke-padding: rem-calc(2 4 0) !default;
|
||||
|
||||
// We use these to control background and border styles.
|
||||
$keystroke-bg: scale-color($white, $lightness: $keystroke-function-factor) !default;
|
||||
$keystroke-border-style: solid !default;
|
||||
$keystroke-border-width: 1px !default;
|
||||
$keystroke-border-color: scale-color($keystroke-bg, $lightness: $keystroke-function-factor) !default;
|
||||
$keystroke-radius: $global-radius !default;
|
||||
|
||||
//
|
||||
// @mixins
|
||||
//
|
||||
// We use this mixin to create keystroke styles.
|
||||
// $bg - Default: $keystroke-bg || scale-color($white, $lightness: $keystroke-function-factor) !default;
|
||||
@mixin keystroke($bg:$keystroke-bg) {
|
||||
// This find the lightness percentage of the background color.
|
||||
$bg-lightness: lightness($bg);
|
||||
|
||||
background-color: $bg;
|
||||
border-color: scale-color($bg, $lightness: $keystroke-function-factor);
|
||||
|
||||
// We adjust the font color based on the brightness of the background.
|
||||
@if $bg-lightness > 70% { color: $keystroke-font-color; }
|
||||
@else { color: $keystroke-font-color-alt; }
|
||||
|
||||
border-style: $keystroke-border-style;
|
||||
border-width: $keystroke-border-width;
|
||||
margin: 0;
|
||||
font-family: $keystroke-font;
|
||||
font-size: $keystroke-font-size;
|
||||
padding: $keystroke-padding;
|
||||
}
|
||||
|
||||
@include exports("keystroke") {
|
||||
@if $include-html-keystroke-classes {
|
||||
.keystroke,
|
||||
kbd {
|
||||
@include keystroke;
|
||||
@include radius($keystroke-radius);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,106 @@
|
||||
// Foundation by ZURB
|
||||
// foundation.zurb.com
|
||||
// Licensed under MIT Open Source
|
||||
|
||||
@import "global";
|
||||
|
||||
//
|
||||
// @variables
|
||||
//
|
||||
$include-html-label-classes: $include-html-classes !default;
|
||||
|
||||
// We use these to style the labels
|
||||
$label-padding: rem-calc(4 8 4) !default;
|
||||
$label-radius: $global-radius !default;
|
||||
|
||||
// We use these to style the label text
|
||||
$label-font-sizing: rem-calc(11) !default;
|
||||
$label-font-weight: $font-weight-normal !default;
|
||||
$label-font-color: $oil !default;
|
||||
$label-font-color-alt: $white !default;
|
||||
$label-font-family: $body-font-family !default;
|
||||
|
||||
//
|
||||
// @mixins
|
||||
//
|
||||
// We use this mixin to create a default label base.
|
||||
@mixin label-base {
|
||||
font-weight: $label-font-weight;
|
||||
font-family: $label-font-family;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
line-height: 1;
|
||||
white-space: nowrap;
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
margin-bottom: auto;
|
||||
}
|
||||
|
||||
// @mixins
|
||||
//
|
||||
// We use this mixin to add label size styles.
|
||||
// $padding - Used to determine label padding. Default: $label-padding || rem-calc(4 8 4) !default
|
||||
// $text-size - Used to determine label text-size. Default: $text-size found in settings
|
||||
@mixin label-size($padding:$label-padding, $text-size:$label-font-sizing) {
|
||||
@if $padding { padding: $padding; }
|
||||
@if $text-size { font-size: $text-size; }
|
||||
}
|
||||
|
||||
// @mixins
|
||||
//
|
||||
// We use this mixin to add label styles.
|
||||
// $bg - Default: $primary-color (found in settings file)
|
||||
// $radius - Default: false, Options: true, sets radius to $global-radius (found in settings file)
|
||||
@mixin label-style($bg:$primary-color, $radius:false) {
|
||||
|
||||
// We control which background color comes through
|
||||
@if $bg {
|
||||
|
||||
// This find the lightness percentage of the background color.
|
||||
$bg-lightness: lightness($bg);
|
||||
|
||||
background-color: $bg;
|
||||
|
||||
// We control the text color for you based on the background color.
|
||||
@if $bg-lightness < 70% { color: $label-font-color-alt; }
|
||||
@else { color: $label-font-color; }
|
||||
}
|
||||
|
||||
// We use this to control the radius on labels.
|
||||
@if $radius == true { @include radius($label-radius); }
|
||||
@else if $radius { @include radius($radius); }
|
||||
|
||||
}
|
||||
|
||||
// @mixins
|
||||
//
|
||||
// We use this to add close buttons to alerts
|
||||
// $padding - Default: $label-padding,
|
||||
// $text-size - Default: $label-font-sizing,
|
||||
// $bg - Default: $primary-color(found in settings file)
|
||||
// $radius - Default: false, Options: true which sets radius to $global-radius (found in settings file)
|
||||
@mixin label($padding:$label-padding, $text-size:$label-font-sizing, $bg:$primary-color, $radius:false) {
|
||||
|
||||
@include label-base;
|
||||
@include label-size($padding, $text-size);
|
||||
@include label-style($bg, $radius);
|
||||
}
|
||||
|
||||
@include exports("label") {
|
||||
@if $include-html-label-classes {
|
||||
.label {
|
||||
@include label-base;
|
||||
@include label-size;
|
||||
@include label-style;
|
||||
|
||||
&.radius { @include label-style(false, true); }
|
||||
&.round { @include label-style(false, $radius:1000px); }
|
||||
|
||||
&.alert { @include label-style($alert-color); }
|
||||
&.warning { @include label-style($warning-color); }
|
||||
&.success { @include label-style($success-color); }
|
||||
&.secondary { @include label-style($secondary-color); }
|
||||
&.info { @include label-style($info-color); }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
// Foundation by ZURB
|
||||
// foundation.zurb.com
|
||||
// Licensed under MIT Open Source
|
||||
|
||||
@import "global";
|
||||
|
||||
//
|
||||
// @variables
|
||||
//
|
||||
$include-html-magellan-classes: $include-html-classes !default;
|
||||
|
||||
$magellan-bg: $white !default;
|
||||
$magellan-padding: 10px !default;
|
||||
|
||||
@include exports("magellan") {
|
||||
@if $include-html-magellan-classes {
|
||||
|
||||
#{data('magellan-expedition')}, #{data('magellan-expedition-clone')} {
|
||||
background: $magellan-bg;
|
||||
z-index: 50;
|
||||
min-width: 100%;
|
||||
padding: $magellan-padding;
|
||||
|
||||
.sub-nav {
|
||||
margin-bottom: 0;
|
||||
dd { margin-bottom: 0; }
|
||||
a {
|
||||
line-height: 1.8em;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,515 @@
|
||||
// Foundation by ZURB
|
||||
// foundation.zurb.com
|
||||
// Licensed under MIT Open Source
|
||||
|
||||
@import "global";
|
||||
@import "type";
|
||||
|
||||
// Off Canvas Tab Bar Variables
|
||||
$include-html-off-canvas-classes: $include-html-classes !default;
|
||||
|
||||
$tabbar-bg: $oil !default;
|
||||
$tabbar-height: rem-calc(45) !default;
|
||||
$tabbar-icon-width: $tabbar-height !default;
|
||||
$tabbar-line-height: $tabbar-height !default;
|
||||
$tabbar-color: $white !default;
|
||||
$tabbar-middle-padding: 0 rem-calc(10) !default;
|
||||
|
||||
// Off Canvas Divider Styles
|
||||
$tabbar-left-section-border: solid 1px scale-color($tabbar-bg, $lightness: -50%) !default;
|
||||
$tabbar-right-section-border: $tabbar-left-section-border;
|
||||
|
||||
|
||||
// Off Canvas Tab Bar Headers
|
||||
$tabbar-header-color: $white !default;
|
||||
$tabbar-header-weight: $font-weight-bold !default;
|
||||
$tabbar-header-line-height: $tabbar-height !default;
|
||||
$tabbar-header-margin: 0 !default;
|
||||
|
||||
// Off Canvas Menu Variables
|
||||
$off-canvas-width: rem-calc(250) !default;
|
||||
$off-canvas-bg: $oil !default;
|
||||
$off-canvas-bg-hover: scale-color($tabbar-bg, $lightness: -30%) !default;
|
||||
|
||||
// Off Canvas Menu List Variables
|
||||
$off-canvas-label-padding: 0.3rem rem-calc(15) !default;
|
||||
$off-canvas-label-color: $aluminum !default;
|
||||
$off-canvas-label-text-transform: uppercase !default;
|
||||
$off-canvas-label-font-size: rem-calc(12) !default;
|
||||
$off-canvas-label-font-weight: $font-weight-bold !default;
|
||||
$off-canvas-label-bg: $tuatara !default;
|
||||
$off-canvas-label-border-top: 1px solid scale-color($off-canvas-label-bg, $lightness: 14%) !default;
|
||||
$off-canvas-label-border-bottom: none !default;
|
||||
$off-canvas-label-margin:0 !default;
|
||||
$off-canvas-link-padding: rem-calc(10, 15) !default;
|
||||
$off-canvas-link-color: rgba($white, 0.7) !default;
|
||||
$off-canvas-link-border-bottom: 1px solid scale-color($off-canvas-bg, $lightness: -25%) !default;
|
||||
$off-canvas-back-bg: #444 !default;
|
||||
$off-canvas-back-border-top: $off-canvas-label-border-top !default;
|
||||
$off-canvas-back-border-bottom: $off-canvas-label-border-bottom !default;
|
||||
$off-canvas-back-hover-bg: scale-color($off-canvas-back-bg, $lightness: -30%) !default;
|
||||
$off-canvas-back-hover-border-top: 1px solid scale-color($off-canvas-label-bg, $lightness: 14%) !default;
|
||||
$off-canvas-back-hover-border-bottom: none !default;
|
||||
|
||||
// Off Canvas Menu Icon Variables
|
||||
$tabbar-menu-icon-color: $white !default;
|
||||
$tabbar-menu-icon-hover: scale-color($tabbar-menu-icon-color, $lightness: -30%) !default;
|
||||
|
||||
$tabbar-menu-icon-text-indent: rem-calc(35) !default;
|
||||
$tabbar-menu-icon-width: $tabbar-icon-width !default;
|
||||
$tabbar-menu-icon-height: $tabbar-height !default;
|
||||
$tabbar-menu-icon-padding: 0 !default;
|
||||
|
||||
$tabbar-hamburger-icon-width: rem-calc(16) !default;
|
||||
$tabbar-hamburger-icon-left: false !default;
|
||||
$tabbar-hamburger-icon-top: false !default;
|
||||
$tabbar-hamburger-icon-thickness: 1px !default;
|
||||
$tabbar-hamburger-icon-gap: 6px !default;
|
||||
|
||||
// Off Canvas Back-Link Overlay
|
||||
$off-canvas-overlay-transition: background 300ms ease !default;
|
||||
$off-canvas-overlay-cursor: pointer !default;
|
||||
$off-canvas-overlay-box-shadow: -4px 0 4px rgba($black, 0.5), 4px 0 4px rgba($black, 0.5) !default;
|
||||
$off-canvas-overlay-background: rgba($white, 0.2) !default;
|
||||
$off-canvas-overlay-background-hover: rgba($white, 0.05) !default;
|
||||
|
||||
// Transition Variables
|
||||
$menu-slide: "transform 500ms ease" !default;
|
||||
|
||||
|
||||
// MIXINS
|
||||
// Remove transition flicker on phones
|
||||
@mixin kill-flicker {
|
||||
// -webkit-transform: translateZ(0x);
|
||||
-webkit-backface-visibility: hidden;
|
||||
}
|
||||
|
||||
// Basic properties for the content wraps
|
||||
@mixin wrap-base {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
@mixin translate3d($tx,$ty,$tz) {
|
||||
-ms-transform: translate($tx,$ty);
|
||||
-webkit-transform: translate3d($tx,$ty,$tz);
|
||||
-moz-transform: translate3d($tx,$ty,$tz);
|
||||
-ms-transform: translate3d($tx,$ty,$tz);
|
||||
-o-transform: translate3d($tx,$ty,$tz);
|
||||
transform: translate3d($tx,$ty,$tz)
|
||||
}
|
||||
|
||||
// basic styles for off-canvas menu container
|
||||
@mixin off-canvas-menu($position) {
|
||||
@include kill-flicker;
|
||||
* { @include kill-flicker; }
|
||||
width: $off-canvas-width;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
position: absolute;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
background: $off-canvas-bg;
|
||||
z-index: 1001;
|
||||
box-sizing: content-box;
|
||||
transition: transform 500ms ease 0s;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
-ms-overflow-style: -ms-autohiding-scrollbar;
|
||||
|
||||
@if $position == left {
|
||||
@include translate3d(-100%,0,0);
|
||||
left: 0;
|
||||
}
|
||||
@if $position == right {
|
||||
@include translate3d(100%,0,0);
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
// OFF CANVAS WRAP
|
||||
// Wrap visible content and prevent scroll bars
|
||||
@mixin off-canvas-wrap {
|
||||
@include kill-flicker;
|
||||
@include wrap-base;
|
||||
overflow: hidden;
|
||||
&.move-right,
|
||||
&.move-left { min-height: 100%; -webkit-overflow-scrolling: touch; }
|
||||
}
|
||||
|
||||
// INNER WRAP
|
||||
// Main content area that moves to reveal the off-canvas nav
|
||||
@mixin inner-wrap {
|
||||
// @include kill-flicker;
|
||||
// removed for now till chrome fixes backface issue
|
||||
@include wrap-base;
|
||||
@include clearfix;
|
||||
-webkit-transition: -webkit-#{$menu-slide};
|
||||
-moz-transition: -moz-#{$menu-slide};
|
||||
-ms-transition: -ms-#{$menu-slide};
|
||||
-o-transition: -o-#{$menu-slide};
|
||||
transition: #{$menu-slide};
|
||||
}
|
||||
|
||||
// TAB BAR
|
||||
// This is the tab bar base
|
||||
@mixin tab-bar-base {
|
||||
@include kill-flicker;
|
||||
|
||||
// base styles
|
||||
background: $tabbar-bg;
|
||||
color: $tabbar-color;
|
||||
height: $tabbar-height;
|
||||
line-height: $tabbar-line-height;
|
||||
|
||||
// make sure it's below the .exit-off-canvas link
|
||||
position: relative;
|
||||
// z-index: 999;
|
||||
|
||||
// Typography
|
||||
h1,h2,h3,h4,h5,h6 {
|
||||
color: $tabbar-header-color;
|
||||
font-weight: $tabbar-header-weight;
|
||||
line-height: $tabbar-header-line-height;
|
||||
margin: $tabbar-header-margin;
|
||||
}
|
||||
h1,h2,h3,h4 { font-size: $h5-font-size; }
|
||||
}
|
||||
|
||||
// SMALL SECTIONS
|
||||
// These are small sections on the left and right that contain the off-canvas toggle buttons;
|
||||
@mixin tabbar-small-section($position) {
|
||||
width: $tabbar-icon-width;
|
||||
height: $tabbar-height;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
@if $position == left {
|
||||
border-right: $tabbar-left-section-border;
|
||||
// box-shadow: 1px 0 0 scale-color($tabbar-bg, $lightness: 13%);
|
||||
left: 0;
|
||||
}
|
||||
@if $position == right {
|
||||
border-left: $tabbar-right-section-border;
|
||||
// box-shadow: -1px 0 0 scale-color($tabbar-bg, $lightness: -50%);
|
||||
right:0;
|
||||
}
|
||||
}
|
||||
|
||||
@mixin tab-bar-section {
|
||||
padding: $tabbar-middle-padding;
|
||||
position: absolute;
|
||||
text-align: center;
|
||||
height: $tabbar-height;
|
||||
top: 0;
|
||||
@media #{$medium-up} {
|
||||
&.left { text-align: left; }
|
||||
&.right { text-align: right; }
|
||||
}
|
||||
|
||||
// still need to make these non-presentational
|
||||
&.left {
|
||||
left: 0;
|
||||
right: $tabbar-icon-width;
|
||||
}
|
||||
&.right {
|
||||
left: $tabbar-icon-width;
|
||||
right: 0;
|
||||
}
|
||||
&.middle {
|
||||
left: $tabbar-icon-width;
|
||||
right: $tabbar-icon-width;
|
||||
}
|
||||
}
|
||||
|
||||
// OFF CANVAS LIST
|
||||
// This is the list of links in the off-canvas menu
|
||||
@mixin off-canvas-list {
|
||||
list-style-type: none;
|
||||
padding:0;
|
||||
margin:0;
|
||||
|
||||
li {
|
||||
label {
|
||||
display: block;
|
||||
padding: $off-canvas-label-padding;
|
||||
color: $off-canvas-label-color;
|
||||
text-transform: $off-canvas-label-text-transform;
|
||||
font-size: $off-canvas-label-font-size;
|
||||
font-weight: $off-canvas-label-font-weight;
|
||||
background: $off-canvas-label-bg;
|
||||
border-top: $off-canvas-label-border-top;
|
||||
border-bottom: $off-canvas-label-border-bottom;
|
||||
margin: $off-canvas-label-margin;
|
||||
}
|
||||
a {
|
||||
display: block;
|
||||
padding: $off-canvas-link-padding;
|
||||
color: $off-canvas-link-color;
|
||||
border-bottom: $off-canvas-link-border-bottom;
|
||||
transition: background 300ms ease;
|
||||
&:hover {
|
||||
background: $off-canvas-bg-hover;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// BACK LINK
|
||||
// This is an overlay that, when clicked, will toggle off the off canvas menu
|
||||
@mixin back-link {
|
||||
@include kill-flicker;
|
||||
|
||||
transition: $off-canvas-overlay-transition;
|
||||
cursor: $off-canvas-overlay-cursor;
|
||||
box-shadow: $off-canvas-overlay-box-shadow;
|
||||
|
||||
// fill the screen
|
||||
display: block;
|
||||
position: absolute;
|
||||
background: $off-canvas-overlay-background;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left:0;
|
||||
right:0;
|
||||
z-index: 1002;
|
||||
-webkit-tap-highlight-color: rgba(0,0,0,0);
|
||||
|
||||
@media #{$medium-up} {
|
||||
&:hover {
|
||||
background: $off-canvas-overlay-background-hover;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// DEFAULT CLASSES
|
||||
//
|
||||
@include exports("offcanvas") {
|
||||
@if $include-html-off-canvas-classes {
|
||||
|
||||
.off-canvas-wrap { @include off-canvas-wrap; }
|
||||
.inner-wrap { @include inner-wrap; }
|
||||
|
||||
.tab-bar { @include tab-bar-base; }
|
||||
|
||||
.left-small { @include tabbar-small-section($position: left); }
|
||||
.right-small { @include tabbar-small-section($position: right); }
|
||||
|
||||
.tab-bar-section { @include tab-bar-section; }
|
||||
|
||||
// MENU BUTTON
|
||||
// This is a little bonus. You don't need it for off canvas to work. Mixins to be written in the future.
|
||||
.tab-bar .menu-icon {
|
||||
text-indent: $tabbar-menu-icon-text-indent;
|
||||
width: $tabbar-menu-icon-width;
|
||||
height: $tabbar-menu-icon-height;
|
||||
display: block;
|
||||
padding: $tabbar-menu-icon-padding;
|
||||
color: $tabbar-menu-icon-color;
|
||||
position: relative;
|
||||
transform: translate3d(0,0,0);
|
||||
|
||||
// @include for the hamburger menu-icon
|
||||
//
|
||||
// Arguments as follows: ($width, $left, $top, $thickness, $gap, $color, $hover-color)
|
||||
// $width - Width of hamburger icon in rem Default: $tabbar-hamburger-icon-width.
|
||||
// $left - If false, icon will be centered horizontally || explicitly set value in rem Default: $tabbar-hamburger-icon-left= False
|
||||
// $top - If false, icon will be centered vertically || explicitly set value in rem Default: = False
|
||||
// $thickness - thickness of lines in hamburger icon, set value in px Default: $tabbar-hamburger-icon-thickness = 1px
|
||||
// $gap - spacing between the lines in hamburger icon, set value in px Default: $tabbar-hamburger-icon-gap = 6px
|
||||
// $color - icon color Default: $tabbar-menu-icon-color
|
||||
// $hover-color - icon color when hovered Default: $tabbar-menu-icon-hover
|
||||
// $offcanvas - Set to true
|
||||
@include hamburger($tabbar-hamburger-icon-width, $tabbar-hamburger-icon-left, $tabbar-hamburger-icon-top, $tabbar-hamburger-icon-thickness, $tabbar-hamburger-icon-gap, $tabbar-menu-icon-color, $tabbar-menu-icon-hover, true)
|
||||
}
|
||||
|
||||
.left-off-canvas-menu { @include off-canvas-menu($position: left); }
|
||||
.right-off-canvas-menu { @include off-canvas-menu($position: right); }
|
||||
|
||||
ul.off-canvas-list { @include off-canvas-list; }
|
||||
|
||||
|
||||
// ANIMATION CLASSES
|
||||
// These classes are added with JS and trigger the actual animation.
|
||||
.move-right {
|
||||
> .inner-wrap {
|
||||
@include translate3d($off-canvas-width,0,0);
|
||||
}
|
||||
.exit-off-canvas { @include back-link;}
|
||||
}
|
||||
|
||||
.move-left {
|
||||
> .inner-wrap {
|
||||
@include translate3d(-($off-canvas-width),0,0);
|
||||
|
||||
}
|
||||
.exit-off-canvas { @include back-link; }
|
||||
}
|
||||
.offcanvas-overlap {
|
||||
.left-off-canvas-menu, .right-off-canvas-menu {
|
||||
-ms-transform: none;
|
||||
-webkit-transform: none;
|
||||
-moz-transform: none;
|
||||
-o-transform: none;
|
||||
transform: none;
|
||||
z-index: 1003;
|
||||
}
|
||||
.exit-off-canvas { @include back-link; }
|
||||
}
|
||||
.offcanvas-overlap-left {
|
||||
.right-off-canvas-menu {
|
||||
-ms-transform: none;
|
||||
-webkit-transform: none;
|
||||
-moz-transform: none;
|
||||
-o-transform: none;
|
||||
transform: none;
|
||||
z-index: 1003;
|
||||
}
|
||||
.exit-off-canvas { @include back-link; }
|
||||
}
|
||||
.offcanvas-overlap-right {
|
||||
.left-off-canvas-menu {
|
||||
-ms-transform: none;
|
||||
-webkit-transform: none;
|
||||
-moz-transform: none;
|
||||
-o-transform: none;
|
||||
transform: none;
|
||||
z-index: 1003;
|
||||
}
|
||||
.exit-off-canvas { @include back-link; }
|
||||
}
|
||||
|
||||
// Older browsers
|
||||
.no-csstransforms {
|
||||
.left-off-canvas-menu { left: -($off-canvas-width); }
|
||||
.right-off-canvas-menu { right: -($off-canvas-width); }
|
||||
|
||||
.move-left > .inner-wrap { right: $off-canvas-width; }
|
||||
.move-right > .inner-wrap { left: $off-canvas-width; }
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Off-Canvas Submenu Classes
|
||||
//
|
||||
@mixin off-canvas-submenu($position) {
|
||||
@include kill-flicker;
|
||||
* { @include kill-flicker; }
|
||||
width: $off-canvas-width;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
position: absolute;
|
||||
margin: 0;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
background: $off-canvas-bg;
|
||||
z-index: 1002;
|
||||
box-sizing: content-box;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
@if $position == left {
|
||||
@include translate3d(-100%,0,0);
|
||||
left: 0;
|
||||
}
|
||||
@if $position == right {
|
||||
@include translate3d(100%,0,0);
|
||||
right: 0;
|
||||
}
|
||||
-webkit-transition: -webkit-#{$menu-slide};
|
||||
-moz-transition: -moz-#{$menu-slide};
|
||||
-ms-transition: -ms-#{$menu-slide};
|
||||
-o-transition: -o-#{$menu-slide};
|
||||
transition: #{$menu-slide};
|
||||
|
||||
//back button style like label
|
||||
.back > a {
|
||||
padding: $off-canvas-label-padding;
|
||||
color: $off-canvas-label-color;
|
||||
text-transform: $off-canvas-label-text-transform;
|
||||
font-weight: $off-canvas-label-font-weight;
|
||||
background: $off-canvas-back-bg;
|
||||
border-top: $off-canvas-back-border-top;
|
||||
border-bottom: $off-canvas-back-border-bottom;
|
||||
&:hover {
|
||||
background: $off-canvas-back-hover-bg;
|
||||
border-top: $off-canvas-back-hover-border-top;
|
||||
border-bottom: $off-canvas-back-hover-border-bottom;
|
||||
}
|
||||
margin: $off-canvas-label-margin;
|
||||
@if $position == right {
|
||||
@if $text-direction == rtl {
|
||||
&:before {
|
||||
@include icon-double-arrows($position: left);
|
||||
}
|
||||
} @else {
|
||||
&:after {
|
||||
@include icon-double-arrows($position: right);
|
||||
}
|
||||
}
|
||||
}
|
||||
@if $position == left {
|
||||
@if $text-direction == rtl {
|
||||
&:after {
|
||||
@include icon-double-arrows($position: right);
|
||||
}
|
||||
} @else {
|
||||
&:before {
|
||||
@include icon-double-arrows($position: left);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//Left double angle quote or Right double angle quote chars
|
||||
@mixin icon-double-arrows ($position){
|
||||
@if $position == left {
|
||||
content: "\AB";
|
||||
@if $text-direction == rtl {
|
||||
margin-left: 0.5rem;
|
||||
} @else {
|
||||
margin-right: 0.5rem;
|
||||
}
|
||||
}
|
||||
@if $position == right {
|
||||
content: "\BB";
|
||||
@if $text-direction == rtl {
|
||||
margin-right: 0.5rem;
|
||||
} @else {
|
||||
margin-left: 0.5rem;
|
||||
}
|
||||
}
|
||||
display: inline;
|
||||
}
|
||||
|
||||
@if $include-html-off-canvas-classes {
|
||||
.left-submenu {
|
||||
@include off-canvas-submenu($position: left);
|
||||
&.move-right, &.offcanvas-overlap-right, &.offcanvas-overlap {
|
||||
@include translate3d(0%,0,0);
|
||||
}
|
||||
}
|
||||
|
||||
.right-submenu {
|
||||
@include off-canvas-submenu($position: right);
|
||||
&.move-left, &.offcanvas-overlap-left, &.offcanvas-overlap {
|
||||
@include translate3d(0%,0,0);
|
||||
}
|
||||
}
|
||||
|
||||
@if $text-direction == rtl {
|
||||
.left-off-canvas-menu ul.off-canvas-list li.has-submenu > a:before {
|
||||
@include icon-double-arrows($position: left);
|
||||
}
|
||||
.right-off-canvas-menu ul.off-canvas-list li.has-submenu > a:after {
|
||||
@include icon-double-arrows($position: right);
|
||||
}
|
||||
} @else {
|
||||
.left-off-canvas-menu ul.off-canvas-list li.has-submenu > a:after {
|
||||
@include icon-double-arrows($position: right);
|
||||
}
|
||||
.right-off-canvas-menu ul.off-canvas-list li.has-submenu > a:before {
|
||||
@include icon-double-arrows($position: left);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,368 @@
|
||||
// Foundation by ZURB
|
||||
// foundation.zurb.com
|
||||
// Licensed under MIT Open Source
|
||||
|
||||
@import "global";
|
||||
|
||||
// @variables
|
||||
//
|
||||
$include-html-orbit-classes: $include-html-classes !default;
|
||||
|
||||
// We use these to control the caption styles
|
||||
$orbit-container-bg: none !default;
|
||||
$orbit-caption-bg: rgba(51,51,51, 0.8) !default;
|
||||
$orbit-caption-font-color: $white !default;
|
||||
$orbit-caption-font-size: rem-calc(14) !default;
|
||||
$orbit-caption-position: "bottom" !default; // Supported values: "bottom", "under"
|
||||
$orbit-caption-padding: rem-calc(10 14) !default;
|
||||
$orbit-caption-height: auto !default;
|
||||
|
||||
// We use these to control the left/right nav styles
|
||||
$orbit-nav-bg: transparent !default;
|
||||
$orbit-nav-bg-hover: rgba(0,0,0,0.3) !default;
|
||||
$orbit-nav-arrow-color: $white !default;
|
||||
$orbit-nav-arrow-color-hover: $white !default;
|
||||
|
||||
// We use these to control the timer styles
|
||||
$orbit-timer-bg: rgba(255,255,255,0.3) !default;
|
||||
$orbit-timer-show-progress-bar: true !default;
|
||||
|
||||
// We use these to control the bullet nav styles
|
||||
$orbit-bullet-nav-color: $iron !default;
|
||||
$orbit-bullet-nav-color-active: $aluminum !default;
|
||||
$orbit-bullet-radius: rem-calc(9) !default;
|
||||
|
||||
// We use these to controls the style of slide numbers
|
||||
$orbit-slide-number-bg: rgba(0,0,0,0) !default;
|
||||
$orbit-slide-number-font-color: $white !default;
|
||||
$orbit-slide-number-padding: rem-calc(5) !default;
|
||||
|
||||
// Graceful Loading Wrapper and preloader
|
||||
$wrapper-class: "slideshow-wrapper" !default;
|
||||
$preloader-class: "preloader" !default;
|
||||
|
||||
// Hide controls on small
|
||||
$orbit-nav-hide-for-small: true !default;
|
||||
$orbit-bullet-hide-for-small: true !default;
|
||||
$orbit-timer-hide-for-small: true !default;
|
||||
|
||||
|
||||
@include exports("orbit") {
|
||||
@if $include-html-orbit-classes {
|
||||
|
||||
@-webkit-keyframes rotate {
|
||||
from { -webkit-transform: rotate(0deg); }
|
||||
to { -webkit-transform: rotate(360deg); }
|
||||
}
|
||||
@-moz-keyframes rotate {
|
||||
from { -moz-transform: rotate(0deg); }
|
||||
to { -moz-transform: rotate(360deg); }
|
||||
}
|
||||
@-o-keyframes rotate {
|
||||
from { -o-transform: rotate(0deg); }
|
||||
to { -o-transform: rotate(360deg); }
|
||||
}
|
||||
@keyframes rotate {
|
||||
from { transform: rotate(0deg); }
|
||||
to { transform: rotate(360deg); }
|
||||
}
|
||||
|
||||
/* Orbit Graceful Loading */
|
||||
.#{$wrapper-class} {
|
||||
position: relative;
|
||||
|
||||
ul {
|
||||
// Prevent bullets showing before .orbit-container is loaded
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
|
||||
// Hide all list items
|
||||
li,
|
||||
li .orbit-caption { display: none; }
|
||||
|
||||
// ...except for the first one
|
||||
li:first-child { display: block; }
|
||||
}
|
||||
|
||||
.orbit-container { background-color: transparent;
|
||||
|
||||
// Show images when .orbit-container is loaded
|
||||
li { display: block;
|
||||
|
||||
.orbit-caption { display: block; }
|
||||
}
|
||||
.orbit-bullets li {
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
|
||||
// Orbit preloader
|
||||
.#{$preloader-class} {
|
||||
display: block;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
margin-top: -20px;
|
||||
margin-left: -20px;
|
||||
border: solid 3px;
|
||||
border-color: $charcoal $white;
|
||||
@include radius(1000px);
|
||||
animation-name: rotate;
|
||||
animation-duration: 1.5s;
|
||||
animation-iteration-count: infinite;
|
||||
animation-timing-function: linear;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.orbit-container {
|
||||
overflow: hidden;
|
||||
width: 100%;
|
||||
position: relative;
|
||||
background: $orbit-container-bg;
|
||||
|
||||
.orbit-slides-container {
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
position: relative;
|
||||
|
||||
// Prevents images (and captions) from disappearing after first rotation on Chrome for Android
|
||||
-webkit-transform: translateZ(0);
|
||||
|
||||
img { display: block; max-width: 100%; }
|
||||
|
||||
&>* {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
@if $text-direction == rtl {
|
||||
margin-right: 100%;
|
||||
}
|
||||
@else {
|
||||
margin-left: 100%;
|
||||
}
|
||||
|
||||
&:first-child {
|
||||
@if $text-direction == rtl {
|
||||
margin-right: 0;
|
||||
}
|
||||
@else {
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.orbit-caption {
|
||||
@if $orbit-caption-position == "bottom" {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
} @else if $orbit-caption-position == "under" {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
background-color: $orbit-caption-bg;
|
||||
color: $orbit-caption-font-color;
|
||||
width: 100%;
|
||||
padding: $orbit-caption-padding;
|
||||
font-size: $orbit-caption-font-size;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.orbit-slide-number {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
#{$default-float}: 10px;
|
||||
font-size: 12px;
|
||||
span { font-weight: 700; padding: $orbit-slide-number-padding;}
|
||||
color: $orbit-slide-number-font-color;
|
||||
background: $orbit-slide-number-bg;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.orbit-timer {
|
||||
position: absolute;
|
||||
top: 12px;
|
||||
#{$opposite-direction}: 10px;
|
||||
height: 6px;
|
||||
width: 100px;
|
||||
z-index: 10;
|
||||
.orbit-progress {
|
||||
@if $orbit-timer-show-progress-bar {
|
||||
height: 3px;
|
||||
background-color: $orbit-timer-bg;
|
||||
display: block;
|
||||
width: 0;
|
||||
position: relative;
|
||||
right: 20px;
|
||||
top: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
// Play button
|
||||
& > span {
|
||||
display: none;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
#{$opposite-direction}: 0;
|
||||
width: 11px;
|
||||
height: 14px;
|
||||
border: solid 4px $white;
|
||||
border-top: none;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
// Pause button
|
||||
&.paused {
|
||||
& > span {
|
||||
#{$opposite-direction}: -4px;
|
||||
top: 0;
|
||||
width: 11px;
|
||||
height: 14px;
|
||||
border: inset 8px;
|
||||
border-left-style: solid;
|
||||
border-color: transparent;
|
||||
border-left-color: $white;
|
||||
&.dark {
|
||||
border-left-color: $oil;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
&:hover .orbit-timer > span { display: block; }
|
||||
|
||||
// Let's get those controls to be right in the center on each side
|
||||
.orbit-prev,
|
||||
.orbit-next {
|
||||
position: absolute;
|
||||
top: 45%;
|
||||
margin-top: -25px;
|
||||
width: 36px;
|
||||
height: 60px;
|
||||
line-height: 50px;
|
||||
color: white;
|
||||
background-color: $orbit-nav-bg;
|
||||
text-indent: -9999px !important;
|
||||
z-index: 10;
|
||||
|
||||
&:hover {
|
||||
background-color: $orbit-nav-bg-hover;
|
||||
}
|
||||
|
||||
& > span {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
margin-top: -10px;
|
||||
display: block;
|
||||
width: 0;
|
||||
height: 0;
|
||||
border: inset 10px;
|
||||
}
|
||||
}
|
||||
.orbit-prev { #{$default-float}: 0;
|
||||
& > span {
|
||||
border-#{$opposite-direction}-style: solid;
|
||||
border-color: transparent;
|
||||
border-#{$opposite-direction}-color: $orbit-nav-arrow-color;
|
||||
}
|
||||
&:hover > span {
|
||||
border-#{$opposite-direction}-color: $orbit-nav-arrow-color-hover;
|
||||
}
|
||||
}
|
||||
.orbit-next { #{$opposite-direction}: 0;
|
||||
& > span {
|
||||
border-color: transparent;
|
||||
border-#{$default-float}-style: solid;
|
||||
border-#{$default-float}-color: $orbit-nav-arrow-color;
|
||||
#{$default-float}: 50%;
|
||||
margin-#{$default-float}: -4px;
|
||||
}
|
||||
&:hover > span {
|
||||
border-#{$default-float}-color: $orbit-nav-arrow-color-hover;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.orbit-bullets-container { text-align: center; }
|
||||
.orbit-bullets {
|
||||
margin: 0 auto 30px auto;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
top: 10px;
|
||||
float: none;
|
||||
text-align: center;
|
||||
display: block;
|
||||
|
||||
li {
|
||||
cursor:pointer;
|
||||
display: inline-block;
|
||||
width: $orbit-bullet-radius;
|
||||
height: $orbit-bullet-radius;
|
||||
background: $orbit-bullet-nav-color;
|
||||
// float: $default-float;
|
||||
float: none;
|
||||
margin-#{$opposite-direction}: 6px;
|
||||
@include radius(1000px);
|
||||
|
||||
&.active {
|
||||
background: $orbit-bullet-nav-color-active;
|
||||
}
|
||||
|
||||
&:last-child { margin-#{$opposite-direction}: 0; }
|
||||
}
|
||||
}
|
||||
|
||||
.touch {
|
||||
.orbit-container {
|
||||
.orbit-prev,
|
||||
.orbit-next { display: none; }
|
||||
}
|
||||
|
||||
.orbit-bullets { display: none; }
|
||||
}
|
||||
|
||||
|
||||
@media #{$medium-up} {
|
||||
|
||||
.touch {
|
||||
.orbit-container {
|
||||
.orbit-prev,
|
||||
.orbit-next { display: inherit; }
|
||||
}
|
||||
|
||||
.orbit-bullets { display: block; }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@media #{$small-only} {
|
||||
.orbit-stack-on-small {
|
||||
.orbit-slides-container {height: auto !important;}
|
||||
.orbit-slides-container > * {
|
||||
position: relative;
|
||||
margin:0 !important;
|
||||
opacity:1 !important;
|
||||
}
|
||||
|
||||
.orbit-slide-number {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
@if $orbit-timer-hide-for-small {
|
||||
.orbit-timer{display: none;}
|
||||
}
|
||||
@if $orbit-nav-hide-for-small {
|
||||
.orbit-next,.orbit-prev{display: none;}
|
||||
}
|
||||
@if $orbit-bullet-hide-for-small {
|
||||
.orbit-bullets{display: none;}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,162 @@
|
||||
// Foundation by ZURB
|
||||
// foundation.zurb.com
|
||||
// Licensed under MIT Open Source
|
||||
|
||||
@import "global";
|
||||
|
||||
//
|
||||
// @variables
|
||||
//
|
||||
$include-pagination-classes: $include-html-classes !default;
|
||||
|
||||
// We use these to control the pagination container
|
||||
$pagination-height: rem-calc(24) !default;
|
||||
$pagination-margin: rem-calc(-5) !default;
|
||||
|
||||
// We use these to set the list-item properties
|
||||
$pagination-li-float: $default-float !default;
|
||||
$pagination-li-height: rem-calc(24) !default;
|
||||
$pagination-li-font-color: $jet !default;
|
||||
$pagination-li-font-size: rem-calc(14) !default;
|
||||
$pagination-li-margin: rem-calc(5) !default;
|
||||
|
||||
// We use these for the pagination anchor links
|
||||
$pagination-link-pad: rem-calc(1 10 1) !default;
|
||||
$pagination-link-font-color: $aluminum !default;
|
||||
$pagination-link-active-bg: scale-color($white, $lightness: -10%) !default;
|
||||
|
||||
// We use these for disabled anchor links
|
||||
$pagination-link-unavailable-cursor: default !default;
|
||||
$pagination-link-unavailable-font-color: $aluminum !default;
|
||||
$pagination-link-unavailable-bg-active: transparent !default;
|
||||
|
||||
// We use these for currently selected anchor links
|
||||
$pagination-link-current-background: $primary-color !default;
|
||||
$pagination-link-current-font-color: $white !default;
|
||||
$pagination-link-current-font-weight: $font-weight-bold !default;
|
||||
$pagination-link-current-cursor: default !default;
|
||||
$pagination-link-current-active-bg: $primary-color !default;
|
||||
|
||||
// @mixins
|
||||
//
|
||||
// Style the pagination container. Currently only used when centering elements.
|
||||
// $center - Default: false, Options: true
|
||||
@mixin pagination-container($center:false) {
|
||||
@if $center { text-align: center; }
|
||||
}
|
||||
|
||||
// @mixins
|
||||
// Style unavailable list items
|
||||
@mixin pagination-unavailable-item {
|
||||
a, button {
|
||||
cursor: $pagination-link-unavailable-cursor;
|
||||
color: $pagination-link-unavailable-font-color;
|
||||
}
|
||||
&:hover a,
|
||||
& a:focus,
|
||||
|
||||
&:hover button,
|
||||
& button:focus
|
||||
{ background: $pagination-link-unavailable-bg-active; }
|
||||
}
|
||||
// @mixins
|
||||
// Style the current list item. Do not assume that the current item has
|
||||
// an anchor <a> element.
|
||||
// $has-anchor - Default: true, Options: false
|
||||
@mixin pagination-current-item($has-anchor: true) {
|
||||
@if $has-anchor {
|
||||
a, button {
|
||||
background: $pagination-link-current-background;
|
||||
color: $pagination-link-current-font-color;
|
||||
font-weight: $pagination-link-current-font-weight;
|
||||
cursor: $pagination-link-current-cursor;
|
||||
|
||||
&:hover,
|
||||
&:focus { background: $pagination-link-current-active-bg; }
|
||||
}
|
||||
} @else {
|
||||
height: auto;
|
||||
padding: $pagination-link-pad;
|
||||
background: $pagination-link-current-background;
|
||||
color: $pagination-link-current-font-color;
|
||||
font-weight: $pagination-link-current-font-weight;
|
||||
cursor: $pagination-link-current-cursor;
|
||||
@include radius;
|
||||
|
||||
&:hover,
|
||||
&:focus { background: $pagination-link-current-active-bg; }
|
||||
}
|
||||
}
|
||||
|
||||
// @mixins
|
||||
//
|
||||
// We use this mixin to set the properties for the creating Foundation pagination
|
||||
// $center - Left or center align the li elements. Default: false
|
||||
// $base-style - Sets base styles for pagination. Default: true, Options: false
|
||||
// $use-default-classes - Makes unavailable & current classes available for use. Default: true
|
||||
@mixin pagination($center:false, $base-style:true, $use-default-classes:true) {
|
||||
|
||||
@if $base-style {
|
||||
display: block;
|
||||
min-height: $pagination-height;
|
||||
margin-#{$default-float}: $pagination-margin;
|
||||
|
||||
li {
|
||||
height: $pagination-li-height;
|
||||
color: $pagination-li-font-color;
|
||||
font-size: $pagination-li-font-size;
|
||||
margin-#{$default-float}: $pagination-li-margin;
|
||||
|
||||
a, button {
|
||||
display: block;
|
||||
padding: $pagination-link-pad;
|
||||
color: $pagination-link-font-color;
|
||||
background: none;
|
||||
@include radius;
|
||||
font-weight: normal;
|
||||
font-size: 1em;
|
||||
line-height: inherit;
|
||||
@include single-transition(background-color);
|
||||
}
|
||||
|
||||
&:hover a,
|
||||
a:focus,
|
||||
&:hover button,
|
||||
button:focus
|
||||
{ background: $pagination-link-active-bg; }
|
||||
|
||||
@if $use-default-classes {
|
||||
&.unavailable { @include pagination-unavailable-item(); }
|
||||
&.current { @include pagination-current-item(); }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Left or center align the li elements
|
||||
li {
|
||||
@if $center {
|
||||
float: none;
|
||||
display: inline-block;
|
||||
} @else {
|
||||
float: $pagination-li-float;
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@include exports("pagination") {
|
||||
@if $include-pagination-classes {
|
||||
ul.pagination {
|
||||
@include pagination;
|
||||
}
|
||||
|
||||
/* Pagination centred wrapper */
|
||||
.pagination-centered {
|
||||
@include pagination-container(true);
|
||||
|
||||
ul.pagination {
|
||||
@include pagination(true, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,101 @@
|
||||
// Foundation by ZURB
|
||||
// foundation.zurb.com
|
||||
// Licensed under MIT Open Source
|
||||
|
||||
@import "global";
|
||||
|
||||
//
|
||||
// @variables
|
||||
//
|
||||
$include-html-panel-classes: $include-html-classes !default;
|
||||
|
||||
// We use these to control the background and border styles
|
||||
$panel-bg: scale-color($white, $lightness: -5%) !default;
|
||||
$panel-border-style: solid !default;
|
||||
$panel-border-size: 1px !default;
|
||||
|
||||
// We use this % to control how much we darken things on hover
|
||||
$panel-function-factor: -11% !default;
|
||||
$panel-border-color: scale-color($panel-bg, $lightness: $panel-function-factor) !default;
|
||||
|
||||
// We use these to set default inner padding and bottom margin
|
||||
$panel-margin-bottom: rem-calc(20) !default;
|
||||
$panel-padding: rem-calc(20) !default;
|
||||
|
||||
// We use these to set default font colors
|
||||
$panel-font-color: $oil !default;
|
||||
$panel-font-color-alt: $white !default;
|
||||
|
||||
$panel-header-adjust: true !default;
|
||||
$callout-panel-link-color: $primary-color !default;
|
||||
$callout-panel-link-color-hover: scale-color($callout-panel-link-color, $lightness: -14%) !default;
|
||||
//
|
||||
// @mixins
|
||||
//
|
||||
// We use this mixin to create panels.
|
||||
// $bg - Sets the panel background color. Default: $panel-pg || scale-color($white, $lightness: -5%) !default
|
||||
// $padding - Sets the panel padding amount. Default: $panel-padding || rem-calc(20)
|
||||
// $adjust - Sets the font color based on the darkness of the bg & resets header line-heights for panels. Default: $panel-header-adjust || true
|
||||
@mixin panel($bg:$panel-bg, $padding:$panel-padding, $adjust:$panel-header-adjust) {
|
||||
|
||||
@if $bg {
|
||||
$bg-lightness: lightness($bg);
|
||||
|
||||
border-style: $panel-border-style;
|
||||
border-width: $panel-border-size;
|
||||
border-color: scale-color($bg, $lightness: $panel-function-factor);
|
||||
margin-bottom: $panel-margin-bottom;
|
||||
padding: $padding;
|
||||
|
||||
background: $bg;
|
||||
@if $bg-lightness >= 50% { color: $panel-font-color; }
|
||||
@else { color: $panel-font-color-alt; }
|
||||
|
||||
// Respect the padding, fool.
|
||||
&>:first-child { margin-top: 0; }
|
||||
&>:last-child { margin-bottom: 0; }
|
||||
|
||||
@if $adjust {
|
||||
// We set the font color based on the darkness of the bg.
|
||||
@if $bg-lightness >= 50% {
|
||||
h1,h2,h3,h4,h5,h6,p,li,dl { color: $panel-font-color; }
|
||||
}
|
||||
@else {
|
||||
h1,h2,h3,h4,h5,h6,p,li,dl { color: $panel-font-color-alt; }
|
||||
}
|
||||
|
||||
// reset header line-heights for panels
|
||||
h1,h2,h3,h4,h5,h6 {
|
||||
line-height: 1; margin-bottom: rem-calc(20) / 2;
|
||||
&.subheader { line-height: 1.4; }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@include exports("panel") {
|
||||
@if $include-html-panel-classes {
|
||||
|
||||
/* Panels */
|
||||
.panel { @include panel;
|
||||
|
||||
&.callout {
|
||||
@include panel(scale-color($primary-color, $lightness: 94%));
|
||||
a:not(.button) {
|
||||
color: $callout-panel-link-color;
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: $callout-panel-link-color-hover;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.radius {
|
||||
@include radius;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,150 @@
|
||||
// Foundation by ZURB
|
||||
// foundation.zurb.com
|
||||
// Licensed under MIT Open Source
|
||||
|
||||
@import "global";
|
||||
|
||||
//
|
||||
// @variables
|
||||
//
|
||||
$include-html-pricing-classes: $include-html-classes !default;
|
||||
|
||||
// We use this to control the border color
|
||||
$price-table-border: solid 1px $gainsboro !default;
|
||||
|
||||
// We use this to control the bottom margin of the pricing table
|
||||
$price-table-margin-bottom: rem-calc(20) !default;
|
||||
|
||||
// We use these to control the title styles
|
||||
$price-title-bg: $oil !default;
|
||||
$price-title-padding: rem-calc(15 20) !default;
|
||||
$price-title-align: center !default;
|
||||
$price-title-color: $smoke !default;
|
||||
$price-title-weight: $font-weight-normal !default;
|
||||
$price-title-size: rem-calc(16) !default;
|
||||
$price-title-font-family: $body-font-family !default;
|
||||
|
||||
// We use these to control the price styles
|
||||
$price-money-bg: $vapor !default;
|
||||
$price-money-padding: rem-calc(15 20) !default;
|
||||
$price-money-align: center !default;
|
||||
$price-money-color: $oil !default;
|
||||
$price-money-weight: $font-weight-normal !default;
|
||||
$price-money-size: rem-calc(32) !default;
|
||||
$price-money-font-family: $body-font-family !default;
|
||||
|
||||
|
||||
// We use these to control the description styles
|
||||
$price-bg: $white !default;
|
||||
$price-desc-color: $monsoon !default;
|
||||
$price-desc-padding: rem-calc(15) !default;
|
||||
$price-desc-align: center !default;
|
||||
$price-desc-font-size: rem-calc(12) !default;
|
||||
$price-desc-weight: $font-weight-normal !default;
|
||||
$price-desc-line-height: 1.4 !default;
|
||||
$price-desc-bottom-border: dotted 1px $gainsboro !default;
|
||||
|
||||
// We use these to control the list item styles
|
||||
$price-item-color: $oil !default;
|
||||
$price-item-padding: rem-calc(15) !default;
|
||||
$price-item-align: center !default;
|
||||
$price-item-font-size: rem-calc(14) !default;
|
||||
$price-item-weight: $font-weight-normal !default;
|
||||
$price-item-bottom-border: dotted 1px $gainsboro !default;
|
||||
|
||||
// We use these to control the CTA area styles
|
||||
$price-cta-bg: $white !default;
|
||||
$price-cta-align: center !default;
|
||||
$price-cta-padding: rem-calc(20 20 0) !default;
|
||||
|
||||
// @mixins
|
||||
//
|
||||
// We use this to create the container element for the pricing tables
|
||||
@mixin pricing-table-container {
|
||||
border: $price-table-border;
|
||||
margin-#{$default-float}: 0;
|
||||
margin-bottom: $price-table-margin-bottom;
|
||||
|
||||
& * {
|
||||
list-style: none;
|
||||
line-height: 1;
|
||||
}
|
||||
}
|
||||
// @mixins
|
||||
//
|
||||
// We use this mixin to create the pricing table title styles
|
||||
@mixin pricing-table-title {
|
||||
background-color: $price-title-bg;
|
||||
padding: $price-title-padding;
|
||||
text-align: $price-title-align;
|
||||
color: $price-title-color;
|
||||
font-weight: $price-title-weight;
|
||||
font-size: $price-title-size;
|
||||
font-family: $price-title-font-family;
|
||||
}
|
||||
|
||||
// @mixins
|
||||
//
|
||||
// We use this mixin to control the pricing table price styles
|
||||
@mixin pricing-table-price {
|
||||
background-color: $price-money-bg;
|
||||
padding: $price-money-padding;
|
||||
text-align: $price-money-align;
|
||||
color: $price-money-color;
|
||||
font-weight: $price-money-weight;
|
||||
font-size: $price-money-size;
|
||||
font-family: $price-money-font-family;
|
||||
}
|
||||
|
||||
// @mixins
|
||||
//
|
||||
// We use this mixin to create the description styles for the pricing table
|
||||
@mixin pricing-table-description {
|
||||
background-color: $price-bg;
|
||||
padding: $price-desc-padding;
|
||||
text-align: $price-desc-align;
|
||||
color: $price-desc-color;
|
||||
font-size: $price-desc-font-size;
|
||||
font-weight: $price-desc-weight;
|
||||
line-height: $price-desc-line-height;
|
||||
border-bottom: $price-desc-bottom-border;
|
||||
}
|
||||
|
||||
// @mixins
|
||||
//
|
||||
// We use this mixin to style the bullet items in the pricing table
|
||||
@mixin pricing-table-bullet {
|
||||
background-color: $price-bg;
|
||||
padding: $price-item-padding;
|
||||
text-align: $price-item-align;
|
||||
color: $price-item-color;
|
||||
font-size: $price-item-font-size;
|
||||
font-weight: $price-item-weight;
|
||||
border-bottom: $price-item-bottom-border;
|
||||
}
|
||||
|
||||
// @mixins
|
||||
//
|
||||
// We use this mixin to style the CTA area of the pricing tables
|
||||
@mixin pricing-table-cta {
|
||||
background-color: $price-cta-bg;
|
||||
text-align: $price-cta-align;
|
||||
padding: $price-cta-padding;
|
||||
}
|
||||
|
||||
@include exports("pricing-table") {
|
||||
@if $include-html-pricing-classes {
|
||||
|
||||
/* Pricing Tables */
|
||||
.pricing-table {
|
||||
@include pricing-table-container;
|
||||
|
||||
.title { @include pricing-table-title; }
|
||||
.price { @include pricing-table-price; }
|
||||
.description { @include pricing-table-description; }
|
||||
.bullet-item { @include pricing-table-bullet; }
|
||||
.cta-button { @include pricing-table-cta; }
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
// Foundation by ZURB
|
||||
// foundation.zurb.com
|
||||
// Licensed under MIT Open Source
|
||||
|
||||
@import "global";
|
||||
|
||||
//
|
||||
// @variables
|
||||
//
|
||||
$include-html-media-classes: $include-html-classes !default;
|
||||
|
||||
// We use this to set the progress bar height
|
||||
$progress-bar-height: rem-calc(25) !default;
|
||||
$progress-bar-color: $vapor !default;
|
||||
|
||||
// We use these to control the border styles
|
||||
$progress-bar-border-color: scale-color($white, $lightness: 20%) !default;
|
||||
$progress-bar-border-size: 1px !default;
|
||||
$progress-bar-border-style: solid !default;
|
||||
$progress-bar-border-radius: $global-radius !default;
|
||||
|
||||
// We use these to control the margin & padding
|
||||
$progress-bar-pad: rem-calc(2) !default;
|
||||
$progress-bar-margin-bottom: rem-calc(10) !default;
|
||||
|
||||
// We use these to set the meter colors
|
||||
$progress-meter-color: $primary-color !default;
|
||||
$progress-meter-secondary-color: $secondary-color !default;
|
||||
$progress-meter-success-color: $success-color !default;
|
||||
$progress-meter-alert-color: $alert-color !default;
|
||||
|
||||
// @mixins
|
||||
//
|
||||
// We use this to set up the progress bar container
|
||||
@mixin progress-container {
|
||||
background-color: $progress-bar-color;
|
||||
height: $progress-bar-height;
|
||||
border: $progress-bar-border-size $progress-bar-border-style $progress-bar-border-color;
|
||||
padding: $progress-bar-pad;
|
||||
margin-bottom: $progress-bar-margin-bottom;
|
||||
}
|
||||
|
||||
// @mixins
|
||||
//
|
||||
// $bg - Default: $progress-meter-color || $primary-color
|
||||
@mixin progress-meter($bg:$progress-meter-color) {
|
||||
background: $bg;
|
||||
height: 100%;
|
||||
display: block;
|
||||
}
|
||||
|
||||
|
||||
@include exports("progress-bar") {
|
||||
@if $include-html-media-classes {
|
||||
|
||||
/* Progress Bar */
|
||||
.progress {
|
||||
@include progress-container;
|
||||
|
||||
// Meter
|
||||
.meter {
|
||||
@include progress-meter;
|
||||
}
|
||||
&.secondary .meter { @include progress-meter($bg:$progress-meter-secondary-color); }
|
||||
&.success .meter { @include progress-meter($bg:$progress-meter-success-color); }
|
||||
&.alert .meter { @include progress-meter($bg:$progress-meter-alert-color); }
|
||||
|
||||
&.radius { @include radius($progress-bar-border-radius);
|
||||
.meter { @include radius($progress-bar-border-radius - 1); }
|
||||
}
|
||||
|
||||
&.round { @include radius(1000px);
|
||||
.meter { @include radius(999px); }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,170 @@
|
||||
// Foundation by ZURB
|
||||
// foundation.zurb.com
|
||||
// Licensed under MIT Open Source
|
||||
|
||||
@import "global";
|
||||
|
||||
//
|
||||
// @name _range-slider.scss
|
||||
// @dependencies _global.scss
|
||||
//
|
||||
|
||||
//
|
||||
// @variables
|
||||
//
|
||||
|
||||
$include-html-range-slider-classes: $include-html-classes !default;
|
||||
|
||||
// These variabels define the slider bar styles
|
||||
$range-slider-bar-width: 100% !default;
|
||||
$range-slider-bar-height: rem-calc(16) !default;
|
||||
|
||||
$range-slider-bar-border-width: 1px !default;
|
||||
$range-slider-bar-border-style: solid !default;
|
||||
$range-slider-bar-border-color: $gainsboro !default;
|
||||
$range-slider-radius: $global-radius !default;
|
||||
$range-slider-round: $global-rounded !default;
|
||||
$range-slider-bar-bg-color: $ghost !default;
|
||||
$range-slider-active-segment-bg-color: scale-color($secondary-color, $lightness: -1%) !default;
|
||||
|
||||
// Vertical bar styles
|
||||
$range-slider-vertical-bar-width: rem-calc(16) !default;
|
||||
$range-slider-vertical-bar-height: rem-calc(200) !default;
|
||||
|
||||
// These variabels define the slider handle styles
|
||||
$range-slider-handle-width: rem-calc(32) !default;
|
||||
$range-slider-handle-height: rem-calc(22) !default;
|
||||
$range-slider-handle-position-top: rem-calc(-5) !default;
|
||||
$range-slider-handle-bg-color: $primary-color !default;
|
||||
$range-slider-handle-border-width: 1px !default;
|
||||
$range-slider-handle-border-style: solid !default;
|
||||
$range-slider-handle-border-color: none !default;
|
||||
$range-slider-handle-radius: $global-radius !default;
|
||||
$range-slider-handle-round: $global-rounded !default;
|
||||
$range-slider-handle-bg-hover-color: scale-color($primary-color, $lightness: -12%) !default;
|
||||
$range-slider-handle-cursor: pointer !default;
|
||||
|
||||
$range-slider-disabled-opacity: 0.7 !default;
|
||||
$range-slider-disabled-cursor: $cursor-disabled-value !default;
|
||||
|
||||
//
|
||||
// @mixins
|
||||
//
|
||||
|
||||
@mixin range-slider-bar-base($vertical: false) {
|
||||
position: relative;
|
||||
border: $range-slider-bar-border-width $range-slider-bar-border-style $range-slider-bar-border-color;
|
||||
margin: rem-calc(20 0);
|
||||
-ms-touch-action: none;
|
||||
touch-action: none;
|
||||
@if $vertical == true {
|
||||
display: inline-block;
|
||||
width: $range-slider-vertical-bar-width;
|
||||
height: $range-slider-vertical-bar-height;
|
||||
} @else {
|
||||
display: block;
|
||||
width: $range-slider-bar-width;
|
||||
height: $range-slider-bar-height;
|
||||
}
|
||||
}
|
||||
@mixin range-slider-bar-style(
|
||||
$bg: true,
|
||||
$radius: false,
|
||||
$round: false,
|
||||
$disabled: false) {
|
||||
@if $bg == true { background: $range-slider-bar-bg-color; }
|
||||
@if $radius == true { @include radius($range-slider-radius); }
|
||||
@if $round == true { @include radius($range-slider-round); }
|
||||
@if $disabled == true {
|
||||
cursor: $range-slider-disabled-cursor;
|
||||
opacity: $range-slider-disabled-opacity;
|
||||
}
|
||||
}
|
||||
|
||||
@mixin range-slider-bar(
|
||||
$bg: $range-slider-bar-bg-color,
|
||||
$radius:false) {
|
||||
@include range-slider-bar-base;
|
||||
@include range-slider-bar-style;
|
||||
}
|
||||
|
||||
@mixin range-slider-handle-base() {
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
top: $range-slider-handle-position-top;
|
||||
width: $range-slider-handle-width;
|
||||
height: $range-slider-handle-height;
|
||||
border: $range-slider-handle-border-width $range-slider-handle-border-style $range-slider-handle-border-color;
|
||||
cursor: $range-slider-handle-cursor;
|
||||
|
||||
// This removes the 300ms touch delay on Windows 8
|
||||
-ms-touch-action: manipulation;
|
||||
touch-action: manipulation;
|
||||
}
|
||||
@mixin range-slider-handle-style(
|
||||
$bg: true,
|
||||
$radius: false,
|
||||
$round: false,
|
||||
$disabled: false) {
|
||||
@if $bg == true { background: $range-slider-handle-bg-color; }
|
||||
@if $radius == true { @include radius($range-slider-radius); }
|
||||
@if $round == true { @include radius($range-slider-round); }
|
||||
@if $disabled == true {
|
||||
cursor: $cursor-default-value;
|
||||
opacity: $range-slider-disabled-opacity;
|
||||
}
|
||||
&:hover {
|
||||
background: $range-slider-handle-bg-hover-color;
|
||||
}
|
||||
}
|
||||
@mixin range-slider-handle() {
|
||||
@include range-slider-handle-base;
|
||||
@include range-slider-handle-style;
|
||||
}
|
||||
|
||||
// CSS Generation
|
||||
@include exports("range-slider-bar") {
|
||||
@if $include-html-range-slider-classes {
|
||||
.range-slider {
|
||||
@include range-slider-bar-base;
|
||||
@include range-slider-bar-style($bg:true, $radius:false);
|
||||
&.vertical-range {
|
||||
@include range-slider-bar-base($vertical: true);
|
||||
.range-slider-handle {
|
||||
margin-top: 0;
|
||||
margin-#{$default-float}: -($range-slider-handle-width / 4);
|
||||
position: absolute;
|
||||
bottom: -($range-slider-vertical-bar-height - $range-slider-handle-width);
|
||||
}
|
||||
.range-slider-active-segment {
|
||||
width: $range-slider-bar-height - rem-calc((strip-unit($range-slider-bar-border-width) * 2));
|
||||
height: auto;
|
||||
bottom: 0;
|
||||
}
|
||||
}
|
||||
&.radius {
|
||||
@include range-slider-bar-style($radius:true);
|
||||
.range-slider-handle { @include range-slider-handle-style($radius: true); }
|
||||
}
|
||||
&.round {
|
||||
@include range-slider-bar-style($round:true);
|
||||
.range-slider-handle { @include range-slider-handle-style($round: true); }
|
||||
}
|
||||
&.disabled, &[disabled] {
|
||||
@include range-slider-bar-style($disabled:true);
|
||||
.range-slider-handle { @include range-slider-handle-style($disabled: true); }
|
||||
}
|
||||
}
|
||||
.range-slider-active-segment {
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
height: $range-slider-bar-height - rem-calc((strip-unit($range-slider-bar-border-width) * 2));
|
||||
background: $range-slider-active-segment-bg-color;
|
||||
}
|
||||
.range-slider-handle {
|
||||
@include range-slider-handle-base;
|
||||
@include range-slider-handle-style($bg:true, $radius: false);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,209 @@
|
||||
// Foundation by ZURB
|
||||
// foundation.zurb.com
|
||||
// Licensed under MIT Open Source
|
||||
|
||||
@import "global";
|
||||
@import "grid";
|
||||
|
||||
//
|
||||
// @name _reveal.scss
|
||||
// @dependencies _global.scss
|
||||
//
|
||||
|
||||
$include-html-reveal-classes: $include-html-classes !default;
|
||||
|
||||
// We use these to control the style of the reveal overlay.
|
||||
$reveal-overlay-bg: rgba($black, .45) !default;
|
||||
$reveal-overlay-bg-old: $black !default;
|
||||
|
||||
// We use these to control the style of the modal itself.
|
||||
$reveal-modal-bg: $white !default;
|
||||
$reveal-position-top: rem-calc(100) !default;
|
||||
$reveal-default-width: 80% !default;
|
||||
$reveal-max-width: $row-width !default;
|
||||
$reveal-modal-padding: rem-calc(20) !default;
|
||||
$reveal-box-shadow: 0 0 10px rgba($black,.4) !default;
|
||||
|
||||
// We use these to style the reveal close button
|
||||
$reveal-close-font-size: rem-calc(40) !default;
|
||||
$reveal-close-top: rem-calc(10) !default;
|
||||
$reveal-close-side: rem-calc(22) !default;
|
||||
$reveal-close-color: $base !default;
|
||||
$reveal-close-weight: $font-weight-bold !default;
|
||||
|
||||
// We use this to set the default radius used throughout the core.
|
||||
$reveal-radius: $global-radius !default;
|
||||
$reveal-round: $global-rounded !default;
|
||||
|
||||
// We use these to control the modal border
|
||||
$reveal-border-style: solid !default;
|
||||
$reveal-border-width: 1px !default;
|
||||
$reveal-border-color: $steel !default;
|
||||
|
||||
$reveal-modal-class: "reveal-modal" !default;
|
||||
$close-reveal-modal-class: "close-reveal-modal" !default;
|
||||
|
||||
// Set base z-index
|
||||
$z-index-base: 1005;
|
||||
|
||||
//
|
||||
// @mixins
|
||||
//
|
||||
|
||||
// We use this to create the reveal background overlay styles
|
||||
@mixin reveal-bg( $include-z-index-value: true ) {
|
||||
position: fixed;
|
||||
// position: absolute; // allows modal background to extend beyond window position
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
background: $reveal-overlay-bg-old; // Autoprefixer should be used to avoid such variables needed when Foundation for Sites can do so in the near future.
|
||||
background: $reveal-overlay-bg;
|
||||
z-index: if( $include-z-index-value, $z-index-base - 1, auto );
|
||||
display: none;
|
||||
#{$default-float}: 0;
|
||||
}
|
||||
|
||||
// We use this mixin to create the structure of a reveal modal
|
||||
//
|
||||
// $base-style - Provides reveal base styles, can be set to false to override. Default: true, Options: false
|
||||
// $width - Sets reveal width Default: $reveal-default-width || 80%
|
||||
//
|
||||
@mixin reveal-modal-base( $base-style: true, $width:$reveal-default-width, $max-width:$reveal-max-width, $border-radius: $reveal-radius) {
|
||||
@if $base-style {
|
||||
visibility: hidden;
|
||||
display: none;
|
||||
position: absolute;
|
||||
z-index: $z-index-base;
|
||||
width: 100%;
|
||||
top:0;
|
||||
border-radius: $border-radius;
|
||||
#{$default-float}: 0;
|
||||
|
||||
@media #{$small-only} {
|
||||
min-height:100vh;
|
||||
}
|
||||
|
||||
// Make sure rows don't have a min-width on them
|
||||
.column, .columns { min-width: 0; }
|
||||
|
||||
// Get rid of margin from first and last element inside modal
|
||||
& > :first-child { margin-top: 0; }
|
||||
|
||||
& > :last-child { margin-bottom: 0; }
|
||||
}
|
||||
|
||||
@if $width {
|
||||
@media #{$medium-up} {
|
||||
width: $width;
|
||||
max-width: $max-width;
|
||||
left: 0;
|
||||
right: 0;
|
||||
margin: 0 auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// We use this to style the reveal modal defaults
|
||||
//
|
||||
// $bg - Sets background color of reveal modal. Default: $reveal-modal-bg || $white
|
||||
// $padding - Padding to apply to reveal modal. Default: $reveal-modal-padding.
|
||||
// $border - Choose whether reveal uses a border. Default: true, Options: false
|
||||
// $border-style - Set reveal border style. Default: $reveal-border-style || solid
|
||||
// $border-width - Width of border (i.e. 1px). Default: $reveal-border-width.
|
||||
// $border-color - Color of border. Default: $reveal-border-color.
|
||||
// $box-shadow - Choose whether or not to include the default box-shadow. Default: true, Options: false
|
||||
// $radius - If true, set to modal radius which is $global-radius || explicitly set radius amount in px (ex. $radius:10px). Default: false
|
||||
// $top-offset - Default: $reveal-position-top || 50px
|
||||
@mixin reveal-modal-style(
|
||||
$bg:false,
|
||||
$padding:false,
|
||||
$border:false,
|
||||
$border-style:$reveal-border-style,
|
||||
$border-width:$reveal-border-width,
|
||||
$border-color:$reveal-border-color,
|
||||
$box-shadow:false,
|
||||
$radius:false,
|
||||
$top-offset:false) {
|
||||
|
||||
@if $bg { background-color: $bg; }
|
||||
@if $padding != false { padding: $padding; }
|
||||
|
||||
@if $border { border: $border-style $border-width $border-color; }
|
||||
|
||||
// We can choose whether or not to include the default box-shadow.
|
||||
@if $box-shadow {
|
||||
box-shadow: $reveal-box-shadow;
|
||||
}
|
||||
|
||||
// We can control how much radius is used on the modal
|
||||
@if $radius == true { @include radius($reveal-radius); }
|
||||
@else if $radius { @include radius($radius); }
|
||||
|
||||
@if $top-offset {
|
||||
@media #{$medium-up} {
|
||||
top: $top-offset;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// We use this to create a close button for the reveal modal
|
||||
//
|
||||
// $color - Default: $reveal-close-color || $base
|
||||
@mixin reveal-close($color:$reveal-close-color) {
|
||||
font-size: $reveal-close-font-size;
|
||||
line-height: 1;
|
||||
position: absolute;
|
||||
top: $reveal-close-top;
|
||||
#{$opposite-direction}: $reveal-close-side;
|
||||
color: $color;
|
||||
font-weight: $reveal-close-weight;
|
||||
cursor: $cursor-pointer-value;
|
||||
}
|
||||
|
||||
@include exports("reveal") {
|
||||
@if $include-html-reveal-classes {
|
||||
|
||||
// Reveal Modals
|
||||
.reveal-modal-bg { @include reveal-bg; }
|
||||
|
||||
.#{$reveal-modal-class} {
|
||||
@include reveal-modal-base;
|
||||
@include reveal-modal-style(
|
||||
$bg:$reveal-modal-bg,
|
||||
$padding:$reveal-modal-padding * 1.5,
|
||||
$border:true,
|
||||
$box-shadow:true,
|
||||
$radius:false,
|
||||
$top-offset:$reveal-position-top
|
||||
);
|
||||
|
||||
&.radius { @include reveal-modal-style($radius:true); }
|
||||
&.round { @include reveal-modal-style($radius:$reveal-round); }
|
||||
&.collapse { @include reveal-modal-style($padding:0); }
|
||||
&.tiny { @include reveal-modal-base(false, 30%); }
|
||||
&.small { @include reveal-modal-base(false, 40%); }
|
||||
&.medium { @include reveal-modal-base(false, 60%); }
|
||||
&.large { @include reveal-modal-base(false, 70%); }
|
||||
&.xlarge { @include reveal-modal-base(false, 95%); }
|
||||
&.full {
|
||||
@include reveal-modal-base(false, 100%);
|
||||
top:0;
|
||||
left:0;
|
||||
height:100%;
|
||||
height: 100vh;
|
||||
min-height:100vh;
|
||||
max-width: none !important;
|
||||
margin-left: 0 !important;
|
||||
}
|
||||
|
||||
// Modals pushed to back
|
||||
&.toback {
|
||||
z-index: $z-index-base - 2;
|
||||
}
|
||||
|
||||
.#{$close-reveal-modal-class} { @include reveal-close; }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,116 @@
|
||||
// Foundation by ZURB
|
||||
// foundation.zurb.com
|
||||
// Licensed under MIT Open Source
|
||||
|
||||
@import "global";
|
||||
|
||||
//
|
||||
// @variables
|
||||
//
|
||||
|
||||
$include-html-nav-classes: $include-html-classes !default;
|
||||
|
||||
// We use this to control padding.
|
||||
$side-nav-padding: rem-calc(14 0) !default;
|
||||
|
||||
// We use these to control list styles.
|
||||
$side-nav-list-type: none !default;
|
||||
$side-nav-list-position: outside !default;
|
||||
$side-nav-list-margin: rem-calc(0 0 7 0) !default;
|
||||
|
||||
// We use these to control link styles.
|
||||
$side-nav-link-color: $primary-color !default;
|
||||
$side-nav-link-color-active: scale-color($side-nav-link-color, $lightness: 30%) !default;
|
||||
$side-nav-link-color-hover: scale-color($side-nav-link-color, $lightness: 30%) !default;
|
||||
$side-nav-link-bg-hover: hsla(0, 0, 0, 0.025) !default;
|
||||
$side-nav-link-margin: 0 !default;
|
||||
$side-nav-link-padding: rem-calc(7 14) !default;
|
||||
$side-nav-font-size: rem-calc(14) !default;
|
||||
$side-nav-font-weight: $font-weight-normal !default;
|
||||
$side-nav-font-weight-active: $side-nav-font-weight !default;
|
||||
$side-nav-font-family: $body-font-family !default;
|
||||
$side-nav-font-family-active: $side-nav-font-family !default;
|
||||
|
||||
// We use these to control heading styles.
|
||||
$side-nav-heading-color: $side-nav-link-color !default;
|
||||
$side-nav-heading-font-size: $side-nav-font-size !default;
|
||||
$side-nav-heading-font-weight: bold !default;
|
||||
$side-nav-heading-text-transform: uppercase !default;
|
||||
|
||||
// We use these to control border styles
|
||||
$side-nav-divider-size: 1px !default;
|
||||
$side-nav-divider-style: solid !default;
|
||||
$side-nav-divider-color: scale-color($white, $lightness: 10%) !default;
|
||||
|
||||
|
||||
//
|
||||
// @mixins
|
||||
//
|
||||
|
||||
|
||||
// We use this to style the side-nav
|
||||
//
|
||||
// $divider-color - Border color of divider. Default: $side-nav-divider-color.
|
||||
// $font-size - Font size of nav items. Default: $side-nav-font-size.
|
||||
// $link-color - Color of navigation links. Default: $side-nav-link-color.
|
||||
// $link-color-hover - Color of navigation links when hovered. Default: $side-nav-link-color-hover.
|
||||
@mixin side-nav(
|
||||
$divider-color:$side-nav-divider-color,
|
||||
$font-size:$side-nav-font-size,
|
||||
$link-color:$side-nav-link-color,
|
||||
$link-color-hover:$side-nav-link-color-hover,
|
||||
$link-bg-hover:$side-nav-link-bg-hover) {
|
||||
display: block;
|
||||
margin: 0;
|
||||
padding: $side-nav-padding;
|
||||
list-style-type: $side-nav-list-type;
|
||||
list-style-position: $side-nav-list-position;
|
||||
font-family: $side-nav-font-family;
|
||||
|
||||
li {
|
||||
margin: $side-nav-list-margin;
|
||||
font-size: $font-size;
|
||||
font-weight: $side-nav-font-weight;
|
||||
|
||||
a:not(.button) {
|
||||
display: block;
|
||||
color: $link-color;
|
||||
margin: $side-nav-link-margin;
|
||||
padding: $side-nav-link-padding;
|
||||
&:hover,
|
||||
&:focus {
|
||||
background: $link-bg-hover;
|
||||
color: $link-color-hover;
|
||||
}
|
||||
}
|
||||
|
||||
&.active > a:first-child:not(.button) {
|
||||
color: $side-nav-link-color-active;
|
||||
font-weight: $side-nav-font-weight-active;
|
||||
font-family: $side-nav-font-family-active;
|
||||
}
|
||||
|
||||
&.divider {
|
||||
border-top: $side-nav-divider-size $side-nav-divider-style;
|
||||
height: 0;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
border-top-color: $divider-color;
|
||||
}
|
||||
|
||||
&.heading {
|
||||
color: $side-nav-heading-color;
|
||||
font: {
|
||||
size: $side-nav-heading-font-size;
|
||||
weight: $side-nav-heading-font-weight;
|
||||
}
|
||||
text-transform: $side-nav-heading-text-transform;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@include exports("side-nav") {
|
||||
@if $include-html-nav-classes {
|
||||
.side-nav { @include side-nav; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,203 @@
|
||||
// Foundation by ZURB
|
||||
// foundation.zurb.com
|
||||
// Licensed under MIT Open Source
|
||||
|
||||
@import "global";
|
||||
@import "buttons";
|
||||
@import "dropdown-buttons";
|
||||
|
||||
//
|
||||
// @name _split-buttons.scss
|
||||
// @dependencies _buttons.scss, _global.scss
|
||||
//
|
||||
|
||||
//
|
||||
// @variables
|
||||
//
|
||||
|
||||
$include-html-button-classes: $include-html-classes !default;
|
||||
|
||||
// We use these to control different shared styles for Split Buttons
|
||||
$split-button-function-factor: 10% !default;
|
||||
$split-button-pip-color: $white !default;
|
||||
$split-button-pip-color-alt: $oil !default;
|
||||
$split-button-active-bg-tint: rgba(0,0,0,0.1) !default;
|
||||
|
||||
// We use these to control tiny split buttons
|
||||
$split-button-padding-tny: $button-pip-tny * 10 !default;
|
||||
$split-button-span-width-tny: $button-pip-tny * 6 !default;
|
||||
$split-button-pip-size-tny: $button-pip-tny !default;
|
||||
$split-button-pip-top-tny: $button-pip-tny * 2 !default;
|
||||
$split-button-pip-default-float-tny: rem-calc(-6) !default;
|
||||
|
||||
// We use these to control small split buttons
|
||||
$split-button-padding-sml: $button-pip-sml * 10 !default;
|
||||
$split-button-span-width-sml: $button-pip-sml * 6 !default;
|
||||
$split-button-pip-size-sml: $button-pip-sml !default;
|
||||
$split-button-pip-top-sml: $button-pip-sml * 1.5 !default;
|
||||
$split-button-pip-default-float-sml: rem-calc(-6) !default;
|
||||
|
||||
// We use these to control medium split buttons
|
||||
$split-button-padding-med: $button-pip-med * 9 !default;
|
||||
$split-button-span-width-med: $button-pip-med * 5.5 !default;
|
||||
$split-button-pip-size-med: $button-pip-med - rem-calc(3) !default;
|
||||
$split-button-pip-top-med: $button-pip-med * 1.5 !default;
|
||||
$split-button-pip-default-float-med: rem-calc(-6) !default;
|
||||
|
||||
// We use these to control large split buttons
|
||||
$split-button-padding-lrg: $button-pip-lrg * 8 !default;
|
||||
$split-button-span-width-lrg: $button-pip-lrg * 5 !default;
|
||||
$split-button-pip-size-lrg: $button-pip-lrg - rem-calc(6) !default;
|
||||
$split-button-pip-top-lrg: $button-pip-lrg + rem-calc(5) !default;
|
||||
$split-button-pip-default-float-lrg: rem-calc(-6) !default;
|
||||
|
||||
|
||||
//
|
||||
// @mixins
|
||||
//
|
||||
|
||||
// We use this mixin to create split buttons that build upon the button mixins
|
||||
//
|
||||
// $padding - Type of padding to apply. Default: medium. Options: tiny, small, medium, large.
|
||||
// $pip-color - Color of the triangle. Default: $split-button-pip-color.
|
||||
// $span-border - Border color of button divider. Default: $primary-color.
|
||||
// $base-style - Apply base style to split button. Default: true.
|
||||
@mixin split-button(
|
||||
$padding:medium,
|
||||
$pip-color:$split-button-pip-color,
|
||||
$span-border:$primary-color,
|
||||
$base-style:true) {
|
||||
|
||||
// With this, we can control whether or not the base styles come through.
|
||||
@if $base-style {
|
||||
position: relative;
|
||||
|
||||
// Styling for the split arrow clickable area
|
||||
span {
|
||||
display: block;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
#{$opposite-direction}: 0;
|
||||
top: 0;
|
||||
border-#{$default-float}: solid 1px;
|
||||
|
||||
// Building the triangle pip indicator
|
||||
&:after {
|
||||
position: absolute;
|
||||
content: "";
|
||||
width: 0;
|
||||
height: 0;
|
||||
display: block;
|
||||
border-style: inset;
|
||||
top: 50%;
|
||||
|
||||
#{$default-float}: 50%;
|
||||
}
|
||||
|
||||
&:active { background-color: $split-button-active-bg-tint; }
|
||||
}
|
||||
}
|
||||
|
||||
// Control the border color for the span area of the split button
|
||||
@if $span-border {
|
||||
span {
|
||||
border-#{$default-float}-color: rgba(255,255,255,0.5);
|
||||
}
|
||||
}
|
||||
|
||||
// Style of the button and clickable area for tiny sizes
|
||||
@if $padding == tiny {
|
||||
padding-#{$opposite-direction}: $split-button-padding-tny;
|
||||
|
||||
span { width: $split-button-span-width-tny;
|
||||
&:after {
|
||||
border-top-style: solid;
|
||||
border-width: $split-button-pip-size-tny;
|
||||
top: 48%;
|
||||
margin-#{$default-float}: $split-button-pip-default-float-tny;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Style of the button and clickable area for small sizes
|
||||
@else if $padding == small {
|
||||
padding-#{$opposite-direction}: $split-button-padding-sml;
|
||||
|
||||
span { width: $split-button-span-width-sml;
|
||||
&:after {
|
||||
border-top-style: solid;
|
||||
border-width: $split-button-pip-size-sml;
|
||||
top: 48%;
|
||||
margin-#{$default-float}: $split-button-pip-default-float-sml;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Style of the button and clickable area for default (medium) sizes
|
||||
@else if $padding == medium {
|
||||
padding-#{$opposite-direction}: $split-button-padding-med;
|
||||
|
||||
span { width: $split-button-span-width-med;
|
||||
&:after {
|
||||
border-top-style: solid;
|
||||
border-width: $split-button-pip-size-med;
|
||||
top: 48%;
|
||||
margin-#{$default-float}: $split-button-pip-default-float-med;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Style of the button and clickable area for large sizes
|
||||
@else if $padding == large {
|
||||
padding-#{$opposite-direction}: $split-button-padding-lrg;
|
||||
|
||||
span { width: $split-button-span-width-lrg;
|
||||
&:after {
|
||||
border-top-style: solid;
|
||||
border-width: $split-button-pip-size-lrg;
|
||||
top: 48%;
|
||||
margin-#{$default-float}: $split-button-pip-default-float-lrg;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Control the color of the triangle pip
|
||||
@if $pip-color {
|
||||
span:after { border-color: $pip-color transparent transparent transparent; }
|
||||
}
|
||||
}
|
||||
|
||||
@include exports("split-button") {
|
||||
@if $include-html-button-classes {
|
||||
|
||||
.split.button { @include split-button;
|
||||
|
||||
&.secondary { @include split-button(false, $split-button-pip-color, $secondary-color, false); }
|
||||
&.alert { @include split-button(false, false, $alert-color, false); }
|
||||
&.success { @include split-button(false, false, $success-color, false); }
|
||||
|
||||
&.tiny { @include split-button(tiny, false, false, false); }
|
||||
&.small { @include split-button(small, false, false, false); }
|
||||
&.large { @include split-button(large, false, false, false); }
|
||||
&.expand { padding-left: 2rem; }
|
||||
|
||||
&.secondary { @include split-button(false, $split-button-pip-color-alt, false, false); }
|
||||
|
||||
&.radius span { @include side-radius($opposite-direction, $global-radius); }
|
||||
&.round span { @include side-radius($opposite-direction, 1000px); }
|
||||
&.no-pip{
|
||||
span:before{ border-style:none; }
|
||||
span:after{ border-style:none; }
|
||||
span>i{
|
||||
top: 50%;
|
||||
display: block;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
margin-left: -0.28889em;
|
||||
margin-top: -0.48889em;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,122 @@
|
||||
// Foundation by ZURB
|
||||
// foundation.zurb.com
|
||||
// Licensed under MIT Open Source
|
||||
|
||||
@import "global";
|
||||
|
||||
//
|
||||
// @name _sub-nav.scss
|
||||
// @dependencies _global.scss
|
||||
//
|
||||
|
||||
//
|
||||
// @variables
|
||||
//
|
||||
|
||||
$include-html-nav-classes: $include-html-classes !default;
|
||||
|
||||
// We use these to control margin and padding
|
||||
$sub-nav-list-margin: rem-calc(-4 0 18) !default;
|
||||
$sub-nav-list-padding-top: rem-calc(4) !default;
|
||||
|
||||
// We use this to control the definition
|
||||
$sub-nav-font-family: $body-font-family !default;
|
||||
$sub-nav-font-size: rem-calc(14) !default;
|
||||
$sub-nav-font-color: $aluminum !default;
|
||||
$sub-nav-font-weight: $font-weight-normal !default;
|
||||
$sub-nav-text-decoration: none !default;
|
||||
$sub-nav-padding: rem-calc(3 16) !default;
|
||||
$sub-nav-border-radius: 3px !default;
|
||||
$sub-nav-font-color-hover: scale-color($sub-nav-font-color, $lightness: -25%) !default;
|
||||
|
||||
|
||||
// We use these to control the active item styles
|
||||
|
||||
$sub-nav-active-font-weight: $font-weight-normal !default;
|
||||
$sub-nav-active-bg: $primary-color !default;
|
||||
$sub-nav-active-bg-hover: scale-color($sub-nav-active-bg, $lightness: -14%) !default;
|
||||
$sub-nav-active-color: $white !default;
|
||||
$sub-nav-active-padding: $sub-nav-padding !default;
|
||||
$sub-nav-active-cursor: default !default;
|
||||
|
||||
$sub-nav-item-divider: "" !default;
|
||||
$sub-nav-item-divider-margin: rem-calc(12) !default;
|
||||
|
||||
//
|
||||
// @mixins
|
||||
//
|
||||
|
||||
|
||||
// Create a sub-nav item
|
||||
//
|
||||
// $font-color - Font color. Default: $sub-nav-font-color.
|
||||
// $font-size - Font size. Default: $sub-nav-font-size.
|
||||
// $active-bg - Background of active nav item. Default: $sub-nav-active-bg.
|
||||
// $active-bg-hover - Background of active nav item, when hovered. Default: $sub-nav-active-bg-hover.
|
||||
@mixin sub-nav(
|
||||
$font-color: $sub-nav-font-color,
|
||||
$font-size: $sub-nav-font-size,
|
||||
$active-bg: $sub-nav-active-bg,
|
||||
$active-bg-hover: $sub-nav-active-bg-hover) {
|
||||
display: block;
|
||||
width: auto;
|
||||
overflow: hidden;
|
||||
margin-bottom: $sub-nav-list-margin;
|
||||
padding-top: $sub-nav-list-padding-top;
|
||||
|
||||
dt {
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
dt,
|
||||
dd,
|
||||
li {
|
||||
float: $default-float;
|
||||
margin-#{$default-float}: rem-calc(16);
|
||||
margin-bottom: 0;
|
||||
font-family: $sub-nav-font-family;
|
||||
font-weight: $sub-nav-font-weight;
|
||||
font-size: $font-size;
|
||||
color: $font-color;
|
||||
|
||||
a {
|
||||
text-decoration: $sub-nav-text-decoration;
|
||||
color: $sub-nav-font-color;
|
||||
padding: $sub-nav-padding;
|
||||
&:hover {
|
||||
color: $sub-nav-font-color-hover;
|
||||
}
|
||||
}
|
||||
|
||||
&.active a {
|
||||
@include radius($sub-nav-border-radius);
|
||||
font-weight: $sub-nav-active-font-weight;
|
||||
background: $active-bg;
|
||||
padding: $sub-nav-active-padding;
|
||||
cursor: $sub-nav-active-cursor;
|
||||
color: $sub-nav-active-color;
|
||||
&:hover {
|
||||
background: $active-bg-hover;
|
||||
}
|
||||
}
|
||||
@if $sub-nav-item-divider != "" {
|
||||
margin-#{$default-float}: 0;
|
||||
|
||||
&:before {
|
||||
content: "#{$sub-nav-item-divider}";
|
||||
margin: 0 $sub-nav-item-divider-margin;
|
||||
}
|
||||
|
||||
&:first-child:before {
|
||||
content: "";
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@include exports("sub-nav") {
|
||||
@if $include-html-nav-classes {
|
||||
.sub-nav { @include sub-nav; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,238 @@
|
||||
// Foundation by ZURB
|
||||
// foundation.zurb.com
|
||||
// Licensed under MIT Open Source
|
||||
|
||||
@import "global";
|
||||
|
||||
//
|
||||
// @name
|
||||
// @dependencies _global.scss
|
||||
//
|
||||
|
||||
//
|
||||
// @variables
|
||||
//
|
||||
|
||||
$include-html-form-classes: $include-html-classes !default;
|
||||
|
||||
// Controlling background color for the switch container
|
||||
$switch-bg: $gainsboro !default;
|
||||
|
||||
// We use these to control the switch heights for our default classes
|
||||
$switch-height-tny: 1.5rem !default;
|
||||
$switch-height-sml: 1.75rem !default;
|
||||
$switch-height-med: 2rem !default;
|
||||
$switch-height-lrg: 2.5rem !default;
|
||||
$switch-bottom-margin: 1.5rem !default;
|
||||
|
||||
// We use these to style the switch-paddle
|
||||
$switch-paddle-bg: $white !default;
|
||||
$switch-paddle-transition-speed: .15s !default;
|
||||
$switch-paddle-transition-ease: ease-out !default;
|
||||
$switch-active-color: $primary-color !default;
|
||||
|
||||
|
||||
//
|
||||
// @mixins
|
||||
//
|
||||
|
||||
// We use this mixin to create the base styles for our switch element.
|
||||
//
|
||||
// $transition-speed - Time in ms for switch to toggle. Default: $switch-paddle-transition-speed.
|
||||
// $transition-ease - Easing function to use for animation (i.e. ease-out). Default: $switch-paddle-transition-ease.
|
||||
@mixin switch-base(
|
||||
$transition-speed:$switch-paddle-transition-speed,
|
||||
$transition-ease:$switch-paddle-transition-ease) {
|
||||
|
||||
padding: 0;
|
||||
border: none;
|
||||
position: relative;
|
||||
outline: 0;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
|
||||
// Default label styles for type and transition
|
||||
label {
|
||||
display: block;
|
||||
margin-bottom: ($switch-height-med / 2);
|
||||
position: relative;
|
||||
color: transparent;
|
||||
background: $switch-bg;
|
||||
text-indent: 100%;
|
||||
width: $switch-height-med * 2; height: $switch-height-med;
|
||||
cursor: pointer;
|
||||
|
||||
// Transition for the switch label to follow paddle
|
||||
@include single-transition(left, $transition-speed, $transition-ease);
|
||||
}
|
||||
|
||||
// So that we don't need to recreate the form with any JS, we use the
|
||||
// existing checkbox or radio button, but we cleverly position and hide it.
|
||||
input {
|
||||
opacity: 0;
|
||||
position: absolute;
|
||||
top: 9px;
|
||||
left: 10px;
|
||||
padding:0;
|
||||
|
||||
& + label { margin-left: 0; margin-right: 0; }
|
||||
}
|
||||
|
||||
// The paddle for the switch is created from an after psuedoclass
|
||||
// content element. This is sized and positioned, and reacts to
|
||||
// the state of the input.
|
||||
|
||||
label:after {
|
||||
content: "";
|
||||
display: block;
|
||||
background: $switch-paddle-bg;
|
||||
position: absolute;
|
||||
top: .25rem;
|
||||
left: .25rem;
|
||||
width: $switch-height-med - 0.5rem;
|
||||
height: $switch-height-med - 0.5rem;
|
||||
|
||||
-webkit-transition: left $transition-speed $transition-ease;
|
||||
-moz-transition: left $transition-speed $transition-ease;
|
||||
-o-transition: translate3d(0,0,0);
|
||||
transition: left $transition-speed $transition-ease;
|
||||
|
||||
-webkit-transform: translate3d(0,0,0);
|
||||
-moz-transform: translate3d(0,0,0);
|
||||
-o-transform: translate3d(0,0,0);
|
||||
transform: translate3d(0,0,0);
|
||||
}
|
||||
|
||||
input:checked + label {
|
||||
background: $switch-active-color;
|
||||
}
|
||||
|
||||
input:checked + label:after {
|
||||
left: $switch-height-med + 0.25rem;
|
||||
}
|
||||
}
|
||||
|
||||
// We use this mixin to create the size styles for switches.
|
||||
//
|
||||
// $height - Height (in px) of the switch. Default: $switch-height-med.
|
||||
// $font-size - Font size of text in switch. Default: $switch-font-size-med.
|
||||
// $line-height - Line height of switch. Default: 2.3rem.
|
||||
@mixin switch-size($height: $switch-height-med) {
|
||||
|
||||
label {
|
||||
width: $height * 2;
|
||||
height: $height;
|
||||
}
|
||||
|
||||
label:after {
|
||||
width: $height - 0.5rem;
|
||||
height: $height - 0.5rem;
|
||||
}
|
||||
|
||||
input:checked + label:after {
|
||||
left: $height + 0.25rem;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// We use this mixin to add color and other fanciness to the switches.
|
||||
//
|
||||
// $paddle-bg - Background of switch paddle. Default: $switch-paddle-bg.
|
||||
// $active-color - Background color of positive side of switch. Default: $switch-positive-color.
|
||||
// $negative-color - Background color of negative side of switch. Default: $switch-negative-color.
|
||||
// $radius - Radius to apply to switch. Default: false.
|
||||
// $base-style - Apply base styles? Default: true.
|
||||
@mixin switch-style(
|
||||
$paddle-bg:$switch-paddle-bg,
|
||||
$active-color:$switch-active-color,
|
||||
$radius:false,
|
||||
$base-style:true) {
|
||||
|
||||
@if $base-style {
|
||||
|
||||
label {
|
||||
color: transparent;
|
||||
background: $switch-bg;
|
||||
}
|
||||
|
||||
label:after {
|
||||
background: $paddle-bg;
|
||||
}
|
||||
|
||||
input:checked + label {
|
||||
background: $active-color;
|
||||
}
|
||||
}
|
||||
|
||||
// Setting up the radius for switches
|
||||
@if $radius == true {
|
||||
label {
|
||||
border-radius: 2rem;
|
||||
}
|
||||
label:after {
|
||||
border-radius: 2rem;
|
||||
}
|
||||
}
|
||||
@else if $radius {
|
||||
label {
|
||||
border-radius: $radius;
|
||||
}
|
||||
label:after {
|
||||
border-radius: $radius;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// We use this to quickly create switches with a single mixin
|
||||
//
|
||||
// $transition-speed - Time in ms for switch to toggle. Default: $switch-paddle-transition-speed.
|
||||
// $transition-ease - Easing function to use for animation (i.e. ease-out). Default: $switch-paddle-transition-ease.
|
||||
// $height - Height (in px) of the switch. Default: $switch-height-med.
|
||||
// $paddle-bg - Background of switch paddle. Default: $switch-paddle-bg.
|
||||
// $active-color - Background color of an active switch. Default: $switch-active-color.
|
||||
// $radius - Radius to apply to switch. Default: false.
|
||||
// $base-style - Apply base styles? Default: true.
|
||||
@mixin switch(
|
||||
$transition-speed: $switch-paddle-transition-speed,
|
||||
$transition-ease: $switch-paddle-transition-ease,
|
||||
$height: $switch-height-med,
|
||||
$paddle-bg: $switch-paddle-bg,
|
||||
$active-color: $switch-active-color,
|
||||
$radius:false,
|
||||
$base-style:true) {
|
||||
@include switch-base($transition-speed, $transition-ease);
|
||||
@include switch-size($height);
|
||||
@include switch-style($paddle-bg, $active-color, $radius, $base-style);
|
||||
}
|
||||
|
||||
@include exports("switch") {
|
||||
@if $include-html-form-classes {
|
||||
.switch {
|
||||
@include switch;
|
||||
|
||||
// Large radio switches
|
||||
&.large { @include switch-size($switch-height-lrg); }
|
||||
|
||||
// Small radio switches
|
||||
&.small { @include switch-size($switch-height-sml); }
|
||||
|
||||
// Tiny radio switches
|
||||
&.tiny { @include switch-size($switch-height-tny); }
|
||||
|
||||
// Add a radius to the switch
|
||||
&.radius {
|
||||
label { @include radius(4px); }
|
||||
label:after { @include radius(3px); }
|
||||
}
|
||||
|
||||
// Make the switch completely round, like a pill
|
||||
&.round { @include radius(1000px);
|
||||
label { @include radius(2rem); }
|
||||
label:after { @include radius(2rem); }
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,135 @@
|
||||
// Foundation by ZURB
|
||||
// foundation.zurb.com
|
||||
// Licensed under MIT Open Source
|
||||
|
||||
@import "global";
|
||||
|
||||
//
|
||||
// @name _tables.scss
|
||||
// @dependencies _global.scss
|
||||
//
|
||||
|
||||
//
|
||||
// @variables
|
||||
//
|
||||
|
||||
$include-html-table-classes: $include-html-classes !default;
|
||||
|
||||
// These control the background color for the table and even rows
|
||||
$table-bg: $white !default;
|
||||
$table-even-row-bg: $snow !default;
|
||||
|
||||
// These control the table cell border style
|
||||
$table-border-style: solid !default;
|
||||
$table-border-size: 1px !default;
|
||||
$table-border-color: $gainsboro !default;
|
||||
|
||||
// These control the table head styles
|
||||
$table-head-bg: $white-smoke !default;
|
||||
$table-head-font-size: rem-calc(14) !default;
|
||||
$table-head-font-color: $jet !default;
|
||||
$table-head-font-weight: $font-weight-bold !default;
|
||||
$table-head-padding: rem-calc(8 10 10) !default;
|
||||
|
||||
// These control the table foot styles
|
||||
$table-foot-bg: $table-head-bg !default;
|
||||
$table-foot-font-size: $table-head-font-size !default;
|
||||
$table-foot-font-color: $table-head-font-color !default;
|
||||
$table-foot-font-weight: $table-head-font-weight !default;
|
||||
$table-foot-padding: $table-head-padding !default;
|
||||
|
||||
// These control the caption
|
||||
$table-caption-bg: transparent !default;
|
||||
$table-caption-font-color: $table-head-font-color !default;
|
||||
$table-caption-font-size: rem-calc(16) !default;
|
||||
$table-caption-font-weight: bold !default;
|
||||
|
||||
// These control the row padding and font styles
|
||||
$table-row-padding: rem-calc(9 10) !default;
|
||||
$table-row-font-size: rem-calc(14) !default;
|
||||
$table-row-font-color: $jet !default;
|
||||
$table-line-height: rem-calc(18) !default;
|
||||
|
||||
// These are for controlling the layout, display and margin of tables
|
||||
$table-layout: auto !default;
|
||||
$table-display: table-cell !default;
|
||||
$table-margin-bottom: rem-calc(20) !default;
|
||||
|
||||
|
||||
//
|
||||
// @mixins
|
||||
//
|
||||
|
||||
@mixin table {
|
||||
background: $table-bg;
|
||||
margin-bottom: $table-margin-bottom;
|
||||
border: $table-border-style $table-border-size $table-border-color;
|
||||
table-layout: $table-layout;
|
||||
|
||||
caption {
|
||||
background: $table-caption-bg;
|
||||
color: $table-caption-font-color;
|
||||
font: {
|
||||
size: $table-caption-font-size;
|
||||
weight: $table-caption-font-weight;
|
||||
}
|
||||
}
|
||||
|
||||
thead {
|
||||
background: $table-head-bg;
|
||||
|
||||
tr {
|
||||
th,
|
||||
td {
|
||||
padding: $table-head-padding;
|
||||
font-size: $table-head-font-size;
|
||||
font-weight: $table-head-font-weight;
|
||||
color: $table-head-font-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tfoot {
|
||||
background: $table-foot-bg;
|
||||
|
||||
tr {
|
||||
th,
|
||||
td {
|
||||
padding: $table-foot-padding;
|
||||
font-size: $table-foot-font-size;
|
||||
font-weight: $table-foot-font-weight;
|
||||
color: $table-foot-font-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tr {
|
||||
th,
|
||||
td {
|
||||
padding: $table-row-padding;
|
||||
font-size: $table-row-font-size;
|
||||
color: $table-row-font-color;
|
||||
text-align: $default-float;
|
||||
}
|
||||
|
||||
&.even,
|
||||
&.alt,
|
||||
&:nth-of-type(even) { background: $table-even-row-bg; }
|
||||
}
|
||||
|
||||
thead tr th,
|
||||
tfoot tr th,
|
||||
tfoot tr td,
|
||||
tbody tr th,
|
||||
tbody tr td,
|
||||
tr td { display: $table-display; line-height: $table-line-height; }
|
||||
}
|
||||
|
||||
|
||||
@include exports("table") {
|
||||
@if $include-html-table-classes {
|
||||
table {
|
||||
@include table;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,125 @@
|
||||
// Foundation by ZURB
|
||||
// foundation.zurb.com
|
||||
// Licensed under MIT Open Source
|
||||
|
||||
@import "global";
|
||||
@import "grid";
|
||||
|
||||
//
|
||||
// @variables
|
||||
//
|
||||
|
||||
$include-html-tabs-classes: $include-html-classes !default;
|
||||
|
||||
$tabs-navigation-padding: rem-calc(16) !default;
|
||||
$tabs-navigation-bg-color: $silver !default;
|
||||
$tabs-navigation-active-bg-color: $white !default;
|
||||
$tabs-navigation-hover-bg-color: scale-color($tabs-navigation-bg-color, $lightness: -6%) !default;
|
||||
$tabs-navigation-font-color: $jet !default;
|
||||
$tabs-navigation-active-font-color: $tabs-navigation-font-color !default;
|
||||
$tabs-navigation-font-size: rem-calc(16) !default;
|
||||
$tabs-navigation-font-family: $body-font-family !default;
|
||||
|
||||
$tabs-content-margin-bottom: rem-calc(24) !default;
|
||||
$tabs-content-padding: ($column-gutter/2) !default;
|
||||
|
||||
$tabs-vertical-navigation-margin-bottom: 1.25rem !default;
|
||||
|
||||
@include exports("tab") {
|
||||
@if $include-html-tabs-classes {
|
||||
.tabs {
|
||||
@include clearfix;
|
||||
margin-bottom: 0 !important;
|
||||
margin-left: 0;
|
||||
dd, .tab-title {
|
||||
position: relative;
|
||||
margin-bottom: 0 !important;
|
||||
list-style: none;
|
||||
float: $default-float;
|
||||
> a {
|
||||
display: block;
|
||||
background: {
|
||||
color: $tabs-navigation-bg-color;
|
||||
}
|
||||
color: $tabs-navigation-font-color;
|
||||
padding: $tabs-navigation-padding $tabs-navigation-padding * 2;
|
||||
font-family: $tabs-navigation-font-family;
|
||||
font-size: $tabs-navigation-font-size;
|
||||
&:hover {
|
||||
background: {
|
||||
color: $tabs-navigation-hover-bg-color;
|
||||
}
|
||||
}
|
||||
&:focus{
|
||||
outline: none;
|
||||
}
|
||||
}
|
||||
&.active a {
|
||||
background: {
|
||||
color: $tabs-navigation-active-bg-color;
|
||||
}
|
||||
color:$tabs-navigation-active-font-color;
|
||||
}
|
||||
}
|
||||
&.radius {
|
||||
dd:first-child, .tab:first-child {
|
||||
a { @include side-radius($default-float, $global-radius); }
|
||||
}
|
||||
dd:last-child, .tab:last-child {
|
||||
a { @include side-radius($opposite-direction, $global-radius); }
|
||||
}
|
||||
}
|
||||
&.vertical {
|
||||
dd, .tab-title {
|
||||
position: inherit;
|
||||
float: none;
|
||||
display: block;
|
||||
top: auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.tabs-content {
|
||||
@include clearfix;
|
||||
margin-bottom: $tabs-content-margin-bottom;
|
||||
width: 100%;
|
||||
> .content {
|
||||
display: none;
|
||||
float: $default-float;
|
||||
padding: $tabs-content-padding 0;
|
||||
width: 100%;
|
||||
&.active { display: block; float: none; }
|
||||
&.contained { padding: $tabs-content-padding; }
|
||||
}
|
||||
&.vertical {
|
||||
display: block;
|
||||
> .content { padding: 0 $tabs-content-padding; }
|
||||
}
|
||||
}
|
||||
@media #{$medium-up} {
|
||||
.tabs {
|
||||
&.vertical {
|
||||
width: 20%;
|
||||
max-width: 20%;
|
||||
float: $default-float;
|
||||
margin: 0 0 $tabs-vertical-navigation-margin-bottom;
|
||||
}
|
||||
}
|
||||
.tabs-content {
|
||||
&.vertical {
|
||||
width: 80%;
|
||||
max-width: 80%;
|
||||
float: $default-float;
|
||||
margin-#{$default-float}: -1px;
|
||||
padding-#{$default-float}: 1rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
.no-js {
|
||||
.tabs-content > .content {
|
||||
display: block;
|
||||
float: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
// Foundation by ZURB
|
||||
// foundation.zurb.com
|
||||
// Licensed under MIT Open Source
|
||||
|
||||
@import "global";
|
||||
|
||||
//
|
||||
// @name _thumbs.scss
|
||||
// @dependencies _globals.scss
|
||||
//
|
||||
|
||||
//
|
||||
// @variables
|
||||
//
|
||||
|
||||
$include-html-media-classes: $include-html-classes !default;
|
||||
|
||||
// We use these to control border styles
|
||||
$thumb-border-style: solid !default;
|
||||
$thumb-border-width: 4px !default;
|
||||
$thumb-border-color: $white !default;
|
||||
$thumb-box-shadow: 0 0 0 1px rgba($black,.2) !default;
|
||||
$thumb-box-shadow-hover: 0 0 6px 1px rgba($primary-color,0.5) !default;
|
||||
|
||||
// Radius and transition speed for thumbs
|
||||
$thumb-radius: $global-radius !default;
|
||||
$thumb-transition-speed: 200ms !default;
|
||||
|
||||
//
|
||||
// @mixins
|
||||
//
|
||||
|
||||
// We use this to create image thumbnail styles.
|
||||
//
|
||||
// $border-width - Width of border around thumbnail. Default: $thumb-border-width.
|
||||
// $box-shadow - Box shadow to apply to thumbnail. Default: $thumb-box-shadow.
|
||||
// $box-shadow-hover - Box shadow to apply on hover. Default: $thumb-box-shadow-hover.
|
||||
@mixin thumb(
|
||||
$border-width:$thumb-border-width,
|
||||
$box-shadow:$thumb-box-shadow,
|
||||
$box-shadow-hover:$thumb-box-shadow-hover) {
|
||||
line-height: 0;
|
||||
display: inline-block;
|
||||
border: $thumb-border-style $border-width $thumb-border-color;
|
||||
max-width: 100%;
|
||||
box-shadow: $box-shadow;
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
box-shadow: $box-shadow-hover;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@include exports("thumb") {
|
||||
@if $include-html-media-classes {
|
||||
|
||||
/* Image Thumbnails */
|
||||
.th {
|
||||
@include thumb;
|
||||
@include single-transition(all,$thumb-transition-speed,ease-out);
|
||||
|
||||
&.radius { @include radius($thumb-radius); }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
// Foundation by ZURB
|
||||
// foundation.zurb.com
|
||||
// Licensed under MIT Open Source
|
||||
// toolbar styles
|
||||
|
||||
@import "global";
|
||||
|
||||
.toolbar {
|
||||
background: $oil;
|
||||
width: 100%;
|
||||
font-size: 0;
|
||||
display: inline-block;
|
||||
|
||||
&.label-bottom .tab .tab-content {
|
||||
i, img { margin-bottom: 10px; }
|
||||
}
|
||||
|
||||
&.label-right .tab .tab-content {
|
||||
i, img { margin-right: 10px; display: inline-block;}
|
||||
label { display: inline-block; }
|
||||
}
|
||||
|
||||
&.vertical.label-right .tab .tab-content {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
&.vertical {
|
||||
height: 100%;
|
||||
width: auto;
|
||||
|
||||
.tab {
|
||||
width: auto;
|
||||
margin: auto;
|
||||
float: none;
|
||||
}
|
||||
}
|
||||
|
||||
.tab {
|
||||
text-align: center;
|
||||
width: 25%;
|
||||
margin: 0 auto;
|
||||
display: block;
|
||||
padding: 20px;
|
||||
float: left;
|
||||
|
||||
&:hover {
|
||||
background: rgba($white, 0.1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.toolbar .tab-content {
|
||||
font-size: 16px;
|
||||
text-align: center;
|
||||
|
||||
label { color: $iron; }
|
||||
|
||||
i {
|
||||
font-size: 30px;
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
color: $iron;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
img {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,142 @@
|
||||
// Foundation by ZURB
|
||||
// foundation.zurb.com
|
||||
// Licensed under MIT Open Source
|
||||
|
||||
@import "global";
|
||||
|
||||
//
|
||||
// Tooltip Variables
|
||||
//
|
||||
$include-html-tooltip-classes: $include-html-classes !default;
|
||||
|
||||
$has-tip-border-bottom: dotted 1px $iron !default;
|
||||
$has-tip-font-weight: $font-weight-bold !default;
|
||||
$has-tip-font-color: $oil !default;
|
||||
$has-tip-border-bottom-hover: dotted 1px scale-color($primary-color, $lightness: -55%) !default;
|
||||
$has-tip-font-color-hover: $primary-color !default;
|
||||
$has-tip-cursor-type: help !default;
|
||||
|
||||
$tooltip-padding: rem-calc(12) !default;
|
||||
$tooltip-bg: $oil !default;
|
||||
$tooltip-font-size: rem-calc(14) !default;
|
||||
$tooltip-font-weight: $font-weight-normal !default;
|
||||
$tooltip-font-color: $white !default;
|
||||
$tooltip-line-height: 1.3 !default;
|
||||
$tooltip-close-font-size: rem-calc(10) !default;
|
||||
$tooltip-close-font-weight: $font-weight-normal !default;
|
||||
$tooltip-close-font-color: $monsoon !default;
|
||||
$tooltip-font-size-sml: rem-calc(14) !default;
|
||||
$tooltip-radius: $global-radius !default;
|
||||
$tooltip-rounded: $global-rounded !default;
|
||||
$tooltip-pip-size: 5px !default;
|
||||
$tooltip-max-width: 300px !default;
|
||||
|
||||
@include exports("tooltip") {
|
||||
@if $include-html-tooltip-classes {
|
||||
|
||||
/* Tooltips */
|
||||
.has-tip {
|
||||
border-bottom: $has-tip-border-bottom;
|
||||
cursor: $has-tip-cursor-type;
|
||||
font-weight: $has-tip-font-weight;
|
||||
color: $has-tip-font-color;
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
border-bottom: $has-tip-border-bottom-hover;
|
||||
color: $has-tip-font-color-hover;
|
||||
}
|
||||
|
||||
&.tip-left,
|
||||
&.tip-right { float: none !important; }
|
||||
}
|
||||
|
||||
.tooltip {
|
||||
display: none;
|
||||
position: absolute;
|
||||
z-index: 1006;
|
||||
font-weight: $tooltip-font-weight;
|
||||
font-size: $tooltip-font-size;
|
||||
line-height: $tooltip-line-height;
|
||||
padding: $tooltip-padding;
|
||||
max-width: $tooltip-max-width;
|
||||
#{$default-float}: 50%;
|
||||
width: 100%;
|
||||
color: $tooltip-font-color;
|
||||
background: $tooltip-bg;
|
||||
|
||||
&>.nub {
|
||||
display: block;
|
||||
#{$default-float}: $tooltip-pip-size;
|
||||
position: absolute;
|
||||
width: 0;
|
||||
height: 0;
|
||||
border: solid $tooltip-pip-size;
|
||||
border-color: transparent transparent $tooltip-bg transparent;
|
||||
top: -($tooltip-pip-size * 2);
|
||||
pointer-events: none;
|
||||
|
||||
&.rtl {
|
||||
left: auto;
|
||||
#{$opposite-direction}: $tooltip-pip-size;
|
||||
}
|
||||
}
|
||||
|
||||
&.radius {
|
||||
@include radius($tooltip-radius);
|
||||
}
|
||||
&.round {
|
||||
@include radius($tooltip-rounded);
|
||||
&>.nub {
|
||||
left: 2rem;
|
||||
}
|
||||
}
|
||||
|
||||
&.opened {
|
||||
color: $has-tip-font-color-hover !important;
|
||||
border-bottom: $has-tip-border-bottom-hover !important;
|
||||
}
|
||||
}
|
||||
|
||||
.tap-to-close {
|
||||
display: block;
|
||||
font-size: $tooltip-close-font-size;
|
||||
color: $tooltip-close-font-color;
|
||||
font-weight: $tooltip-close-font-weight;
|
||||
}
|
||||
|
||||
@media #{$small} {
|
||||
.tooltip {
|
||||
&>.nub {
|
||||
border-color: transparent transparent $tooltip-bg transparent;
|
||||
top: -($tooltip-pip-size * 2);
|
||||
}
|
||||
&.tip-top>.nub {
|
||||
border-color: $tooltip-bg transparent transparent transparent;
|
||||
top: auto;
|
||||
bottom: -($tooltip-pip-size * 2);
|
||||
}
|
||||
|
||||
&.tip-left,
|
||||
&.tip-right { float: none !important; }
|
||||
|
||||
&.tip-left>.nub {
|
||||
border-color: transparent transparent transparent $tooltip-bg;
|
||||
right: -($tooltip-pip-size * 2);
|
||||
left: auto;
|
||||
top: 50%;
|
||||
margin-top: -$tooltip-pip-size;
|
||||
}
|
||||
&.tip-right>.nub {
|
||||
border-color: transparent $tooltip-bg transparent transparent;
|
||||
right: auto;
|
||||
left: -($tooltip-pip-size * 2);
|
||||
top: 50%;
|
||||
margin-top: -$tooltip-pip-size;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,696 @@
|
||||
// Foundation by ZURB
|
||||
// foundation.zurb.com
|
||||
// Licensed under MIT Open Source
|
||||
|
||||
@import "global";
|
||||
@import "grid";
|
||||
@import "buttons";
|
||||
@import "forms";
|
||||
|
||||
//
|
||||
// Top Bar Variables
|
||||
//
|
||||
$include-html-top-bar-classes: $include-html-classes !default;
|
||||
|
||||
// Background color for the top bar
|
||||
$topbar-bg-color: $oil !default;
|
||||
$topbar-bg: $topbar-bg-color !default;
|
||||
|
||||
// Height and margin
|
||||
$topbar-height: rem-calc(45) !default;
|
||||
$topbar-margin-bottom: 0 !default;
|
||||
|
||||
// Controlling the styles for the title in the top bar
|
||||
$topbar-title-weight: $font-weight-normal !default;
|
||||
$topbar-title-font-size: rem-calc(17) !default;
|
||||
|
||||
// Set the link colors and styles for top-level nav
|
||||
$topbar-link-color: $white !default;
|
||||
$topbar-link-color-hover: $white !default;
|
||||
$topbar-link-color-active: $white !default;
|
||||
$topbar-link-color-active-hover: $white !default;
|
||||
$topbar-link-weight: $font-weight-normal !default;
|
||||
$topbar-link-font-size: rem-calc(13) !default;
|
||||
$topbar-link-hover-lightness: -10% !default; // Darken by 10%
|
||||
$topbar-link-bg: $topbar-bg !default;
|
||||
$topbar-link-bg-hover: $oil !default;
|
||||
$topbar-link-bg-color-hover: $charcoal !default;
|
||||
$topbar-link-bg-active: $primary-color !default;
|
||||
$topbar-link-bg-active-hover: scale-color($primary-color, $lightness: -14%) !default;
|
||||
$topbar-link-font-family: $body-font-family !default;
|
||||
$topbar-link-text-transform: none !default;
|
||||
$topbar-link-padding: ($topbar-height / 3) !default;
|
||||
$topbar-back-link-size: rem-calc(18) !default;
|
||||
$topbar-link-dropdown-padding: rem-calc(20) !default;
|
||||
$topbar-button-font-size: 0.75rem !default;
|
||||
$topbar-button-top: 7px !default;
|
||||
|
||||
// Style the top bar dropdown elements
|
||||
$topbar-dropdown-bg: $oil !default;
|
||||
$topbar-dropdown-link-color: $white !default;
|
||||
$topbar-dropdown-link-color-hover: $topbar-link-color-hover !default;
|
||||
$topbar-dropdown-link-bg: $oil !default;
|
||||
$topbar-dropdown-link-bg-hover: $oil !default;
|
||||
$topbar-dropdown-link-weight: $font-weight-normal !default;
|
||||
$topbar-dropdown-toggle-size: 5px !default;
|
||||
$topbar-dropdown-toggle-color: $white !default;
|
||||
$topbar-dropdown-toggle-alpha: 0.4 !default;
|
||||
|
||||
$topbar-dropdown-label-color: $monsoon !default;
|
||||
$topbar-dropdown-label-text-transform: uppercase !default;
|
||||
$topbar-dropdown-label-font-weight: $font-weight-bold !default;
|
||||
$topbar-dropdown-label-font-size: rem-calc(10) !default;
|
||||
$topbar-dropdown-label-bg: $oil !default;
|
||||
|
||||
// Top menu icon styles
|
||||
$topbar-menu-link-transform: uppercase !default;
|
||||
$topbar-menu-link-font-size: rem-calc(13) !default;
|
||||
$topbar-menu-link-weight: $font-weight-bold !default;
|
||||
$topbar-menu-link-color: $white !default;
|
||||
$topbar-menu-icon-color: $white !default;
|
||||
$topbar-menu-link-color-toggled: $jumbo !default;
|
||||
$topbar-menu-icon-color-toggled: $jumbo !default;
|
||||
$topbar-menu-icon-position: $opposite-direction !default; // Change to $default-float for a left menu icon
|
||||
|
||||
// Transitions and breakpoint styles
|
||||
$topbar-transition-speed: 300ms !default;
|
||||
// Using rem-calc for the below breakpoint causes issues with top bar
|
||||
$topbar-breakpoint: #{lower-bound($medium-range)} !default; // Change to 9999px for always mobile layout
|
||||
$topbar-media-query: $medium-up !default;
|
||||
|
||||
// Top-bar input styles
|
||||
$topbar-input-height: rem-calc(28) !default;
|
||||
|
||||
// Divider Styles
|
||||
$topbar-divider-border-bottom: solid 1px scale-color($topbar-bg-color, $lightness: 13%) !default;
|
||||
$topbar-divider-border-top: solid 1px scale-color($topbar-bg-color, $lightness: -50%) !default;
|
||||
|
||||
// Sticky Class
|
||||
$topbar-sticky-class: ".sticky" !default;
|
||||
$topbar-arrows: true !default; //Set false to remove the triangle icon from the menu item
|
||||
$topbar-dropdown-arrows: true !default; //Set false to remove the \00bb >> text from dropdown subnavigation li
|
||||
|
||||
// Accessibility mixins for hiding and showing the menu dropdown items
|
||||
@mixin topbar-hide-dropdown {
|
||||
// Makes an element visually hidden by default, but visible when focused.
|
||||
display: block;
|
||||
@include element-invisible();
|
||||
}
|
||||
|
||||
@mixin topbar-show-dropdown {
|
||||
display: block;
|
||||
@include element-invisible-off();
|
||||
position: absolute !important; // Reset the position from static to absolute
|
||||
}
|
||||
|
||||
@include exports("top-bar") {
|
||||
|
||||
@if $include-html-top-bar-classes {
|
||||
|
||||
// Used to provide media query values for javascript components.
|
||||
// This class is generated despite the value of $include-html-top-bar-classes
|
||||
// to ensure width calculations work correctly.
|
||||
meta.foundation-mq-topbar {
|
||||
font-family: "/" + unquote($topbar-media-query) + "/";
|
||||
width: $topbar-breakpoint;
|
||||
}
|
||||
|
||||
/* Wrapped around .top-bar to contain to grid width */
|
||||
.contain-to-grid {
|
||||
width: 100%;
|
||||
background: $topbar-bg;
|
||||
|
||||
.top-bar { margin-bottom: $topbar-margin-bottom; }
|
||||
}
|
||||
|
||||
// Wrapped around .top-bar to make it stick to the top
|
||||
.fixed {
|
||||
width: 100%;
|
||||
#{$default-float}: 0;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
z-index: 99;
|
||||
|
||||
&.expanded:not(.top-bar) {
|
||||
overflow-y: auto;
|
||||
height: auto;
|
||||
width: 100%;
|
||||
max-height: 100%;
|
||||
|
||||
.title-area {
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
z-index: 99;
|
||||
}
|
||||
// Ensure you can scroll the menu on small screens
|
||||
.top-bar-section {
|
||||
z-index: 98;
|
||||
margin-top: $topbar-height;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.top-bar {
|
||||
overflow: hidden;
|
||||
height: $topbar-height;
|
||||
line-height: $topbar-height;
|
||||
position: relative;
|
||||
background: $topbar-bg;
|
||||
margin-bottom: $topbar-margin-bottom;
|
||||
|
||||
// Topbar Global list Styles
|
||||
ul {
|
||||
margin-bottom: 0;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.row { max-width: none; }
|
||||
|
||||
form,
|
||||
input { margin-bottom: 0; }
|
||||
|
||||
input {
|
||||
height: $topbar-input-height;
|
||||
padding-top: .35rem;
|
||||
padding-bottom: .35rem;
|
||||
font-size: $topbar-button-font-size;
|
||||
}
|
||||
|
||||
.button, button {
|
||||
padding-top: .35rem + rem-calc(1);
|
||||
padding-bottom: .35rem + rem-calc(1);
|
||||
margin-bottom: 0;
|
||||
font-size: $topbar-button-font-size;
|
||||
// position: relative;
|
||||
// top: -1px;
|
||||
|
||||
// Corrects a slight misalignment when put next to an input field
|
||||
@media #{$small-only} {
|
||||
position: relative;
|
||||
top: -1px;
|
||||
}
|
||||
}
|
||||
|
||||
// Title Area
|
||||
.title-area {
|
||||
position: relative;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.name {
|
||||
height: $topbar-height;
|
||||
margin: 0;
|
||||
font-size: $rem-base;
|
||||
// @if $topbar-menu-icon-position == $default-float {float: $opposite-direction;}
|
||||
|
||||
h1, h2, h3, h4, p, span {
|
||||
line-height: $topbar-height;
|
||||
font-size: $topbar-title-font-size;
|
||||
margin: 0;
|
||||
a {
|
||||
font-weight: $topbar-title-weight;
|
||||
color: $topbar-link-color;
|
||||
width: 75%;
|
||||
display: block;
|
||||
padding: 0 $topbar-link-padding;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Menu toggle button on small devices
|
||||
.toggle-topbar {
|
||||
position: absolute;
|
||||
#{$topbar-menu-icon-position}: 0;
|
||||
top: 0;
|
||||
|
||||
a {
|
||||
color: $topbar-link-color;
|
||||
text-transform: $topbar-menu-link-transform;
|
||||
font-size: $topbar-menu-link-font-size;
|
||||
font-weight: $topbar-menu-link-weight;
|
||||
position: relative;
|
||||
display: block;
|
||||
padding: 0 $topbar-link-padding;
|
||||
height: $topbar-height;
|
||||
line-height: $topbar-height;
|
||||
}
|
||||
|
||||
// Adding the class "menu-icon" will add the 3-line icon people love and adore.
|
||||
&.menu-icon {
|
||||
top: 50%;
|
||||
margin-top: -16px;
|
||||
|
||||
a {
|
||||
@if $text-direction == rtl {
|
||||
text-indent: -58px;
|
||||
}
|
||||
height: 34px;
|
||||
line-height: 33px;
|
||||
padding: 0 $topbar-link-padding+rem-calc(25) 0 $topbar-link-padding;
|
||||
color: $topbar-menu-link-color;
|
||||
position: relative;
|
||||
|
||||
& {
|
||||
// @include hamburger icon
|
||||
//
|
||||
// We use this to create the icon with three lines aka the hamburger icon, the menu-icon or the navicon
|
||||
// $width - Width of hamburger icon
|
||||
// $left - If false, icon will be centered horizontally || explicitly set value in rem
|
||||
// $top - If false, icon will be centered vertically || explicitly set value in rem
|
||||
// $thickness - thickness of lines in hamburger icon, set value in px
|
||||
// $gap - spacing between the lines in hamburger icon, set value in px
|
||||
// $color - icon color
|
||||
// $hover-color - icon color during hover, here it isn't set b/c it would override $topbar-menu-icon-color-toggled
|
||||
// $offcanvas - Set to false of @include in topbar
|
||||
@include hamburger(16px, false, 0, 1px, 6px, $topbar-menu-icon-color, "", false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Change things up when the top-bar is expanded
|
||||
&.expanded {
|
||||
height: auto;
|
||||
background: transparent;
|
||||
|
||||
.title-area { background: $topbar-bg; }
|
||||
|
||||
.toggle-topbar {
|
||||
a { color: $topbar-menu-link-color-toggled;
|
||||
span::after {
|
||||
// Shh, don't tell, but box-shadows create the menu icon :)
|
||||
// Change the color of the bars when the menu is expanded, using given thickness from hamburger() above
|
||||
box-shadow: 0 0 0 1px $topbar-menu-icon-color-toggled,
|
||||
0 7px 0 1px $topbar-menu-icon-color-toggled,
|
||||
0 14px 0 1px $topbar-menu-icon-color-toggled;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Right and Left Navigation that stacked by default
|
||||
.top-bar-section {
|
||||
#{$default-float}: 0;
|
||||
position: relative;
|
||||
width: auto;
|
||||
@include single-transition($default-float, $topbar-transition-speed);
|
||||
|
||||
ul {
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
height: auto;
|
||||
display: block;
|
||||
font-size: $rem-base;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.divider,
|
||||
[role="separator"] {
|
||||
border-top: $topbar-divider-border-top;
|
||||
clear: both;
|
||||
height: 1px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
ul li {
|
||||
background: $topbar-dropdown-bg;
|
||||
& > a {
|
||||
display: block;
|
||||
width: 100%;
|
||||
color: $topbar-link-color;
|
||||
padding: 12px 0 12px 0;
|
||||
padding-#{$default-float}: $topbar-link-padding;
|
||||
font-family: $topbar-link-font-family;
|
||||
font-size: $topbar-link-font-size;
|
||||
font-weight: $topbar-link-weight;
|
||||
text-transform: $topbar-link-text-transform;
|
||||
|
||||
&.button {
|
||||
font-size: $topbar-link-font-size;
|
||||
padding-#{$opposite-direction}: $topbar-link-padding;
|
||||
padding-#{$default-float}: $topbar-link-padding;
|
||||
@include button-style($bg:$primary-color);
|
||||
}
|
||||
&.button.secondary { @include button-style($bg:$secondary-color); }
|
||||
&.button.success { @include button-style($bg:$success-color); }
|
||||
&.button.alert { @include button-style($bg:$alert-color); }
|
||||
&.button.warning { @include button-style($bg:$warning-color); }
|
||||
}
|
||||
|
||||
> button {
|
||||
font-size: $topbar-link-font-size;
|
||||
padding-#{$opposite-direction}: $topbar-link-padding;
|
||||
padding-#{$default-float}: $topbar-link-padding;
|
||||
@include button-style($bg:$primary-color);
|
||||
|
||||
&.secondary { @include button-style($bg:$secondary-color); }
|
||||
&.success { @include button-style($bg:$success-color); }
|
||||
&.alert { @include button-style($bg:$alert-color); }
|
||||
&.warning { @include button-style($bg:$warning-color); }
|
||||
}
|
||||
|
||||
// Apply the hover link color when it has that class
|
||||
&:hover:not(.has-form) > a {
|
||||
background-color: $topbar-link-bg-color-hover;
|
||||
@if ($topbar-link-bg-hover) {
|
||||
background: $topbar-link-bg-hover;
|
||||
}
|
||||
color: $topbar-link-color-hover;
|
||||
}
|
||||
|
||||
// Apply the active link color when it has that class
|
||||
&.active > a {
|
||||
background: $topbar-link-bg-active;
|
||||
color: $topbar-link-color-active;
|
||||
&:hover {
|
||||
background: $topbar-link-bg-active-hover;
|
||||
color: $topbar-link-color-active-hover;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Add some extra padding for list items contains buttons
|
||||
.has-form { padding: $topbar-link-padding; }
|
||||
|
||||
// Styling for list items that have a dropdown within them.
|
||||
.has-dropdown {
|
||||
position: relative;
|
||||
|
||||
& > a {
|
||||
&:after {
|
||||
@if ($topbar-arrows){
|
||||
@include css-triangle($topbar-dropdown-toggle-size, rgba($topbar-dropdown-toggle-color, $topbar-dropdown-toggle-alpha), $default-float);
|
||||
}
|
||||
margin-#{$opposite-direction}: $topbar-link-padding;
|
||||
margin-top: -($topbar-dropdown-toggle-size / 2) - 2;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
#{$opposite-direction}: 0;
|
||||
}
|
||||
}
|
||||
|
||||
&.moved { position: static;
|
||||
& > .dropdown {
|
||||
@include topbar-show-dropdown();
|
||||
width: 100%;
|
||||
}
|
||||
& > a:after {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Styling elements inside of dropdowns
|
||||
.dropdown {
|
||||
padding: 0;
|
||||
position: absolute;
|
||||
#{$default-float}: 100%;
|
||||
top: 0;
|
||||
z-index: 99;
|
||||
@include topbar-hide-dropdown();
|
||||
|
||||
li {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
|
||||
a {
|
||||
font-weight: $topbar-dropdown-link-weight;
|
||||
padding: 8px $topbar-link-padding;
|
||||
&.parent-link {
|
||||
font-weight: $topbar-link-weight;
|
||||
}
|
||||
}
|
||||
|
||||
&.title h5, &.parent-link {
|
||||
// Back Button
|
||||
margin-bottom: 0;
|
||||
margin-top: 0;
|
||||
font-size: $topbar-back-link-size;
|
||||
a {
|
||||
color: $topbar-link-color;
|
||||
// line-height: ($topbar-height / 2);
|
||||
display: block;
|
||||
&:hover { background:none; }
|
||||
}
|
||||
}
|
||||
&.has-form { padding: 8px $topbar-link-padding; }
|
||||
.button, button { top: auto; }
|
||||
}
|
||||
|
||||
label {
|
||||
padding: 8px $topbar-link-padding 2px;
|
||||
margin-bottom: 0;
|
||||
text-transform: $topbar-dropdown-label-text-transform;
|
||||
color: $topbar-dropdown-label-color;
|
||||
font-weight: $topbar-dropdown-label-font-weight;
|
||||
font-size: $topbar-dropdown-label-font-size;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.js-generated { display: block; }
|
||||
|
||||
|
||||
// Top Bar styles intended for screen sizes above the breakpoint.
|
||||
@media #{$topbar-media-query} {
|
||||
.top-bar {
|
||||
background: $topbar-bg;
|
||||
@include clearfix;
|
||||
overflow: visible;
|
||||
|
||||
.toggle-topbar { display: none; }
|
||||
|
||||
.title-area { float: $default-float; }
|
||||
.name h1 a,
|
||||
.name h2 a,
|
||||
.name h3 a,
|
||||
.name h4 a,
|
||||
.name h5 a,
|
||||
.name h6 a { width: auto; }
|
||||
|
||||
input,
|
||||
.button,
|
||||
button {
|
||||
font-size: rem-calc(14);
|
||||
position: relative;
|
||||
height: $topbar-input-height;
|
||||
top: (($topbar-height - $topbar-input-height) / 2);
|
||||
}
|
||||
|
||||
&.expanded { background: $topbar-bg; }
|
||||
}
|
||||
|
||||
.contain-to-grid .top-bar {
|
||||
max-width: $row-width;
|
||||
margin: 0 auto;
|
||||
margin-bottom: $topbar-margin-bottom;
|
||||
}
|
||||
|
||||
.top-bar-section {
|
||||
@include single-transition(none,0,0);
|
||||
#{$default-float}: 0 !important;
|
||||
|
||||
ul {
|
||||
width: auto;
|
||||
height: auto !important;
|
||||
display: inline;
|
||||
|
||||
li {
|
||||
float: $default-float;
|
||||
.js-generated { display: none; }
|
||||
}
|
||||
}
|
||||
|
||||
li {
|
||||
&.hover {
|
||||
> a:not(.button) {
|
||||
background-color: $topbar-link-bg-color-hover;
|
||||
@if ($topbar-link-bg-hover) {
|
||||
background: $topbar-link-bg-hover;
|
||||
}
|
||||
color: $topbar-link-color-hover;
|
||||
}
|
||||
}
|
||||
&:not(.has-form) {
|
||||
a:not(.button) {
|
||||
padding: 0 $topbar-link-padding;
|
||||
line-height: $topbar-height;
|
||||
background: $topbar-link-bg;
|
||||
&:hover {
|
||||
background-color: $topbar-link-bg-color-hover;
|
||||
@if ($topbar-link-bg-hover) {
|
||||
background: $topbar-link-bg-hover;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
&.active:not(.has-form) {
|
||||
a:not(.button) {
|
||||
padding: 0 $topbar-link-padding;
|
||||
line-height: $topbar-height;
|
||||
color: $topbar-link-color-active;
|
||||
background: $topbar-link-bg-active;
|
||||
&:hover {
|
||||
background: $topbar-link-bg-active-hover;
|
||||
color: $topbar-link-color-active-hover;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.has-dropdown {
|
||||
@if($topbar-arrows){
|
||||
& > a {
|
||||
padding-#{$opposite-direction}: $topbar-link-padding + $topbar-link-dropdown-padding !important;
|
||||
&:after {
|
||||
@include css-triangle($topbar-dropdown-toggle-size, rgba($topbar-dropdown-toggle-color, $topbar-dropdown-toggle-alpha), top);
|
||||
margin-top: -($topbar-dropdown-toggle-size / 2);
|
||||
top: ($topbar-height / 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.moved { position: relative;
|
||||
& > .dropdown {
|
||||
@include topbar-hide-dropdown();
|
||||
}
|
||||
}
|
||||
|
||||
&.hover, &.not-click:hover {
|
||||
& > .dropdown {
|
||||
@include topbar-show-dropdown();
|
||||
}
|
||||
}
|
||||
> a:focus + .dropdown {
|
||||
@include topbar-show-dropdown();
|
||||
}
|
||||
|
||||
.dropdown li.has-dropdown {
|
||||
& > a {
|
||||
@if ($topbar-dropdown-arrows){
|
||||
&:after {
|
||||
border: none;
|
||||
content: "\00bb";
|
||||
top: 1rem;
|
||||
margin-top: -1px;
|
||||
#{$opposite-direction}: 5px;
|
||||
line-height: 1.2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.dropdown {
|
||||
#{$default-float}: 0;
|
||||
top: auto;
|
||||
background: transparent;
|
||||
min-width: 100%;
|
||||
|
||||
li {
|
||||
a {
|
||||
color: $topbar-dropdown-link-color;
|
||||
line-height: $topbar-height;
|
||||
white-space: nowrap;
|
||||
padding: 12px $topbar-link-padding;
|
||||
background: $topbar-dropdown-link-bg;
|
||||
}
|
||||
|
||||
&:not(.has-form):not(.active) {
|
||||
& > a:not(.button) {
|
||||
color: $topbar-dropdown-link-color;
|
||||
background: $topbar-dropdown-link-bg;
|
||||
}
|
||||
|
||||
&:hover > a:not(.button) {
|
||||
color: $topbar-dropdown-link-color-hover;
|
||||
background-color: $topbar-link-bg-color-hover;
|
||||
@if ($topbar-dropdown-link-bg-hover) {
|
||||
background: $topbar-dropdown-link-bg-hover;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
label {
|
||||
white-space: nowrap;
|
||||
background: $topbar-dropdown-label-bg;
|
||||
}
|
||||
|
||||
// Second Level Dropdowns
|
||||
.dropdown {
|
||||
#{$default-float}: 100%;
|
||||
top: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
& > ul > .divider,
|
||||
& > ul > [role="separator"] {
|
||||
border-bottom: none;
|
||||
border-top: none;
|
||||
border-#{$opposite-direction}: $topbar-divider-border-bottom;
|
||||
clear: none;
|
||||
height: $topbar-height;
|
||||
width: 0;
|
||||
}
|
||||
|
||||
.has-form {
|
||||
background: $topbar-link-bg;
|
||||
padding: 0 $topbar-link-padding;
|
||||
height: $topbar-height;
|
||||
}
|
||||
|
||||
// Position overrides for ul.right and ul.left
|
||||
.#{$opposite-direction} {
|
||||
li .dropdown {
|
||||
#{$default-float}: auto;
|
||||
#{$opposite-direction}: 0;
|
||||
|
||||
li .dropdown { #{$opposite-direction}: 100%; }
|
||||
}
|
||||
}
|
||||
.#{$default-float} {
|
||||
li .dropdown {
|
||||
#{$opposite-direction}: auto;
|
||||
#{$default-float}: 0;
|
||||
|
||||
li .dropdown { #{$default-float}: 100%; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Degrade gracefully when Javascript is disabled. Displays dropdown and changes
|
||||
// background & text color on hover.
|
||||
.no-js .top-bar-section {
|
||||
ul li {
|
||||
// Apply the hover link color when it has that class
|
||||
&:hover > a {
|
||||
background-color: $topbar-link-bg-color-hover;
|
||||
@if ($topbar-link-bg-hover) {
|
||||
background: $topbar-link-bg-hover;
|
||||
}
|
||||
color: $topbar-link-color-hover;
|
||||
}
|
||||
|
||||
// Apply the active link color when it has that class
|
||||
&:active > a {
|
||||
background: $topbar-link-bg-active;
|
||||
color: $topbar-link-color-active;
|
||||
}
|
||||
}
|
||||
|
||||
.has-dropdown {
|
||||
&:hover {
|
||||
& > .dropdown {
|
||||
@include topbar-show-dropdown();
|
||||
}
|
||||
}
|
||||
> a:focus + .dropdown {
|
||||
@include topbar-show-dropdown();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,464 @@
|
||||
// Foundation by ZURB
|
||||
// foundation.zurb.com
|
||||
// Licensed under MIT Open Source
|
||||
|
||||
@import "global";
|
||||
|
||||
$include-html-type-classes: $include-html-classes !default;
|
||||
|
||||
// We use these to control header font styles
|
||||
$header-font-family: $body-font-family !default;
|
||||
$header-font-weight: $font-weight-normal !default;
|
||||
$header-font-style: normal !default;
|
||||
$header-font-color: $jet !default;
|
||||
$header-line-height: 1.4 !default;
|
||||
$header-top-margin: .2rem !default;
|
||||
$header-bottom-margin: .5rem !default;
|
||||
$header-text-rendering: optimizeLegibility !default;
|
||||
|
||||
// We use these to control header font sizes
|
||||
$h1-font-size: rem-calc(44) !default;
|
||||
$h2-font-size: rem-calc(37) !default;
|
||||
$h3-font-size: rem-calc(27) !default;
|
||||
$h4-font-size: rem-calc(23) !default;
|
||||
$h5-font-size: rem-calc(18) !default;
|
||||
$h6-font-size: 1rem !default;
|
||||
|
||||
// We use these to control header size reduction on small screens
|
||||
$h1-font-reduction: rem-calc(10) !default;
|
||||
$h2-font-reduction: rem-calc(10) !default;
|
||||
$h3-font-reduction: rem-calc(5) !default;
|
||||
$h4-font-reduction: rem-calc(5) !default;
|
||||
$h5-font-reduction: 0 !default;
|
||||
$h6-font-reduction: 0 !default;
|
||||
|
||||
// These control how subheaders are styled.
|
||||
$subheader-line-height: 1.4 !default;
|
||||
$subheader-font-color: scale-color($header-font-color, $lightness: 35%) !default;
|
||||
$subheader-font-weight: $font-weight-normal !default;
|
||||
$subheader-top-margin: .2rem !default;
|
||||
$subheader-bottom-margin: .5rem !default;
|
||||
|
||||
// A general <small> styling
|
||||
$small-font-size: 60% !default;
|
||||
$small-font-color: scale-color($header-font-color, $lightness: 35%) !default;
|
||||
|
||||
// We use these to style paragraphs
|
||||
$paragraph-font-family: inherit !default;
|
||||
$paragraph-font-weight: $font-weight-normal !default;
|
||||
$paragraph-font-size: 1rem !default;
|
||||
$paragraph-line-height: 1.6 !default;
|
||||
$paragraph-margin-bottom: rem-calc(20) !default;
|
||||
$paragraph-aside-font-size: rem-calc(14) !default;
|
||||
$paragraph-aside-line-height: 1.35 !default;
|
||||
$paragraph-aside-font-style: italic !default;
|
||||
$paragraph-text-rendering: optimizeLegibility !default;
|
||||
|
||||
// We use these to style <code> tags
|
||||
$code-color: $oil !default;
|
||||
$code-font-family: $font-family-monospace !default;
|
||||
$code-font-weight: $font-weight-normal !default;
|
||||
$code-background-color: scale-color($secondary-color, $lightness: 70%) !default;
|
||||
$code-border-size: 1px !default;
|
||||
$code-border-style: solid !default;
|
||||
$code-border-color: scale-color($code-background-color, $lightness: -10%) !default;
|
||||
$code-padding: rem-calc(2) rem-calc(5) rem-calc(1) !default;
|
||||
|
||||
// We use these to style anchors
|
||||
$anchor-text-decoration: none !default;
|
||||
$anchor-text-decoration-hover: none !default;
|
||||
$anchor-font-color: $primary-color !default;
|
||||
$anchor-font-color-hover: scale-color($anchor-font-color, $lightness: -14%) !default;
|
||||
|
||||
// We use these to style the <hr> element
|
||||
$hr-border-width: 1px !default;
|
||||
$hr-border-style: solid !default;
|
||||
$hr-border-color: $gainsboro !default;
|
||||
$hr-margin: rem-calc(20) !default;
|
||||
|
||||
// We use these to style lists
|
||||
$list-font-family: $paragraph-font-family !default;
|
||||
$list-font-size: $paragraph-font-size !default;
|
||||
$list-line-height: $paragraph-line-height !default;
|
||||
$list-margin-bottom: $paragraph-margin-bottom !default;
|
||||
$list-style-position: outside !default;
|
||||
$list-side-margin: 1.1rem !default;
|
||||
$list-ordered-side-margin: 1.4rem !default;
|
||||
$list-side-margin-no-bullet: 0 !default;
|
||||
$list-nested-margin: rem-calc(20) !default;
|
||||
$definition-list-header-weight: $font-weight-bold !default;
|
||||
$definition-list-header-margin-bottom: .3rem !default;
|
||||
$definition-list-margin-bottom: rem-calc(12) !default;
|
||||
|
||||
// We use these to style blockquotes
|
||||
$blockquote-font-color: scale-color($header-font-color, $lightness: 35%) !default;
|
||||
$blockquote-padding: rem-calc(9 20 0 19) !default;
|
||||
$blockquote-border: 1px solid $gainsboro !default;
|
||||
$blockquote-cite-font-size: rem-calc(13) !default;
|
||||
$blockquote-cite-font-color: scale-color($header-font-color, $lightness: 23%) !default;
|
||||
$blockquote-cite-link-color: $blockquote-cite-font-color !default;
|
||||
|
||||
// Acronym styles
|
||||
$acronym-underline: 1px dotted $gainsboro !default;
|
||||
|
||||
// We use these to control padding and margin
|
||||
$microformat-padding: rem-calc(10 12) !default;
|
||||
$microformat-margin: rem-calc(0 0 20 0) !default;
|
||||
|
||||
// We use these to control the border styles
|
||||
$microformat-border-width: 1px !default;
|
||||
$microformat-border-style: solid !default;
|
||||
$microformat-border-color: $gainsboro !default;
|
||||
|
||||
// We use these to control full name font styles
|
||||
$microformat-fullname-font-weight: $font-weight-bold !default;
|
||||
$microformat-fullname-font-size: rem-calc(15) !default;
|
||||
|
||||
// We use this to control the summary font styles
|
||||
$microformat-summary-font-weight: $font-weight-bold !default;
|
||||
|
||||
// We use this to control abbr padding
|
||||
$microformat-abbr-padding: rem-calc(0 1) !default;
|
||||
|
||||
// We use this to control abbr font styles
|
||||
$microformat-abbr-font-weight: $font-weight-bold !default;
|
||||
$microformat-abbr-font-decoration: none !default;
|
||||
|
||||
// Text alignment class names
|
||||
$align-class-names:
|
||||
small-only,
|
||||
small,
|
||||
medium-only,
|
||||
medium,
|
||||
large-only,
|
||||
large,
|
||||
xlarge-only,
|
||||
xlarge,
|
||||
xxlarge-only,
|
||||
xxlarge;
|
||||
|
||||
// Text alignment breakpoints
|
||||
$align-class-breakpoints:
|
||||
$small-only,
|
||||
$small-up,
|
||||
$medium-only,
|
||||
$medium-up,
|
||||
$large-only,
|
||||
$large-up,
|
||||
$xlarge-only,
|
||||
$xlarge-up,
|
||||
$xxlarge-only,
|
||||
$xxlarge-up;
|
||||
|
||||
// Generates text align and justify classes
|
||||
@mixin align-classes{
|
||||
.text-left { text-align: left !important; }
|
||||
.text-right { text-align: right !important; }
|
||||
.text-center { text-align: center !important; }
|
||||
.text-justify { text-align: justify !important; }
|
||||
|
||||
@for $i from 1 through length($align-class-names) {
|
||||
@media #{(nth($align-class-breakpoints, $i))} {
|
||||
.#{(nth($align-class-names, $i))}-text-left { text-align: left !important; }
|
||||
.#{(nth($align-class-names, $i))}-text-right { text-align: right !important; }
|
||||
.#{(nth($align-class-names, $i))}-text-center { text-align: center !important; }
|
||||
.#{(nth($align-class-names, $i))}-text-justify { text-align: justify !important; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Typography Placeholders
|
||||
//
|
||||
|
||||
// These will throw a deprecation warning if used within a media query.
|
||||
@mixin lead {
|
||||
font-size: $paragraph-font-size + rem-calc(3.5);
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
@mixin subheader {
|
||||
line-height: $subheader-line-height;
|
||||
color: $subheader-font-color;
|
||||
font-weight: $subheader-font-weight;
|
||||
margin-top: $subheader-top-margin;
|
||||
margin-bottom: $subheader-bottom-margin;
|
||||
}
|
||||
@include exports("type") {
|
||||
@if $include-html-type-classes {
|
||||
// Responsive Text alignment
|
||||
@include align-classes;
|
||||
|
||||
/* Typography resets */
|
||||
div,
|
||||
dl,
|
||||
dt,
|
||||
dd,
|
||||
ul,
|
||||
ol,
|
||||
li,
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6,
|
||||
pre,
|
||||
form,
|
||||
p,
|
||||
blockquote,
|
||||
th,
|
||||
td {
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
|
||||
/* Default Link Styles */
|
||||
a {
|
||||
color: $anchor-font-color;
|
||||
text-decoration: $anchor-text-decoration;
|
||||
line-height: inherit;
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: $anchor-font-color-hover;
|
||||
@if $anchor-text-decoration-hover != $anchor-text-decoration {
|
||||
text-decoration: $anchor-text-decoration-hover;
|
||||
}
|
||||
}
|
||||
|
||||
img { border:none; }
|
||||
}
|
||||
|
||||
/* Default paragraph styles */
|
||||
p {
|
||||
font-family: $paragraph-font-family;
|
||||
font-weight: $paragraph-font-weight;
|
||||
font-size: $paragraph-font-size;
|
||||
line-height: $paragraph-line-height;
|
||||
margin-bottom: $paragraph-margin-bottom;
|
||||
text-rendering: $paragraph-text-rendering;
|
||||
|
||||
&.lead { @include lead; }
|
||||
|
||||
& aside {
|
||||
font-size: $paragraph-aside-font-size;
|
||||
line-height: $paragraph-aside-line-height;
|
||||
font-style: $paragraph-aside-font-style;
|
||||
}
|
||||
}
|
||||
|
||||
/* Default header styles */
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
font-family: $header-font-family;
|
||||
font-weight: $header-font-weight;
|
||||
font-style: $header-font-style;
|
||||
color: $header-font-color;
|
||||
text-rendering: $header-text-rendering;
|
||||
margin-top: $header-top-margin;
|
||||
margin-bottom: $header-bottom-margin;
|
||||
line-height: $header-line-height;
|
||||
|
||||
small {
|
||||
font-size: $small-font-size;
|
||||
color: $small-font-color;
|
||||
line-height: 0;
|
||||
}
|
||||
}
|
||||
|
||||
h1 { font-size: $h1-font-size - $h1-font-reduction; }
|
||||
h2 { font-size: $h2-font-size - $h2-font-reduction; }
|
||||
h3 { font-size: $h3-font-size - $h3-font-reduction; }
|
||||
h4 { font-size: $h4-font-size - $h4-font-reduction; }
|
||||
h5 { font-size: $h5-font-size - $h5-font-reduction; }
|
||||
h6 { font-size: $h6-font-size - $h6-font-reduction; }
|
||||
|
||||
.subheader { @include subheader; }
|
||||
|
||||
hr {
|
||||
border: $hr-border-style $hr-border-color;
|
||||
border-width: $hr-border-width 0 0;
|
||||
clear: both;
|
||||
margin: $hr-margin 0 ($hr-margin - rem-calc($hr-border-width));
|
||||
height: 0;
|
||||
}
|
||||
|
||||
/* Helpful Typography Defaults */
|
||||
em,
|
||||
i {
|
||||
font-style: italic;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
strong,
|
||||
b {
|
||||
font-weight: $font-weight-bold;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
small {
|
||||
font-size: $small-font-size;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
code {
|
||||
font-family: $code-font-family;
|
||||
font-weight: $code-font-weight;
|
||||
color: $code-color;
|
||||
background-color: $code-background-color;
|
||||
border-width: $code-border-size;
|
||||
border-style: $code-border-style;
|
||||
border-color: $code-border-color;
|
||||
padding: $code-padding;
|
||||
}
|
||||
|
||||
/* Lists */
|
||||
ul,
|
||||
ol,
|
||||
dl {
|
||||
font-size: $list-font-size;
|
||||
line-height: $list-line-height;
|
||||
margin-bottom: $list-margin-bottom;
|
||||
list-style-position: $list-style-position;
|
||||
font-family: $list-font-family;
|
||||
}
|
||||
|
||||
ul {
|
||||
margin-#{$default-float}: $list-side-margin;
|
||||
&.no-bullet {
|
||||
margin-#{$default-float}: $list-side-margin-no-bullet;
|
||||
li {
|
||||
ul,
|
||||
ol {
|
||||
margin-#{$default-float}: $list-nested-margin;
|
||||
margin-bottom: 0;
|
||||
list-style: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Unordered Lists */
|
||||
ul {
|
||||
li {
|
||||
ul,
|
||||
ol {
|
||||
margin-#{$default-float}: $list-nested-margin;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
&.square,
|
||||
&.circle,
|
||||
&.disc {
|
||||
li ul { list-style: inherit; }
|
||||
}
|
||||
|
||||
&.square { list-style-type: square; margin-#{$default-float}: $list-side-margin;}
|
||||
&.circle { list-style-type: circle; margin-#{$default-float}: $list-side-margin;}
|
||||
&.disc { list-style-type: disc; margin-#{$default-float}: $list-side-margin;}
|
||||
&.no-bullet { list-style: none; }
|
||||
}
|
||||
|
||||
/* Ordered Lists */
|
||||
ol {
|
||||
margin-#{$default-float}: $list-ordered-side-margin;
|
||||
li {
|
||||
ul,
|
||||
ol {
|
||||
margin-#{$default-float}: $list-nested-margin;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Definition Lists */
|
||||
dl {
|
||||
dt {
|
||||
margin-bottom: $definition-list-header-margin-bottom;
|
||||
font-weight: $definition-list-header-weight;
|
||||
}
|
||||
dd { margin-bottom: $definition-list-margin-bottom; }
|
||||
}
|
||||
|
||||
/* Abbreviations */
|
||||
abbr,
|
||||
acronym {
|
||||
text-transform: uppercase;
|
||||
font-size: 90%;
|
||||
color: $body-font-color;
|
||||
cursor: $cursor-help-value;
|
||||
}
|
||||
abbr {
|
||||
text-transform: none;
|
||||
&[title] {
|
||||
border-bottom: $acronym-underline;
|
||||
}
|
||||
}
|
||||
|
||||
/* Blockquotes */
|
||||
blockquote {
|
||||
margin: 0 0 $paragraph-margin-bottom;
|
||||
padding: $blockquote-padding;
|
||||
border-#{$default-float}: $blockquote-border;
|
||||
|
||||
cite {
|
||||
display: block;
|
||||
font-size: $blockquote-cite-font-size;
|
||||
color: $blockquote-cite-font-color;
|
||||
&:before {
|
||||
content: "\2014 \0020";
|
||||
}
|
||||
|
||||
a,
|
||||
a:visited {
|
||||
color: $blockquote-cite-link-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
blockquote,
|
||||
blockquote p {
|
||||
line-height: $paragraph-line-height;
|
||||
color: $blockquote-font-color;
|
||||
}
|
||||
|
||||
/* Microformats */
|
||||
.vcard {
|
||||
display: inline-block;
|
||||
margin: $microformat-margin;
|
||||
border: $microformat-border-width $microformat-border-style $microformat-border-color;
|
||||
padding: $microformat-padding;
|
||||
|
||||
li {
|
||||
margin: 0;
|
||||
display: block;
|
||||
}
|
||||
.fn {
|
||||
font-weight: $microformat-fullname-font-weight;
|
||||
font-size: $microformat-fullname-font-size;
|
||||
}
|
||||
}
|
||||
|
||||
.vevent {
|
||||
.summary { font-weight: $microformat-summary-font-weight; }
|
||||
|
||||
abbr {
|
||||
cursor: $cursor-default-value;
|
||||
text-decoration: $microformat-abbr-font-decoration;
|
||||
font-weight: $microformat-abbr-font-weight;
|
||||
border: none;
|
||||
padding: $microformat-abbr-padding;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@media #{$medium-up} {
|
||||
h1,h2,h3,h4,h5,h6 { line-height: $header-line-height; }
|
||||
h1 { font-size: $h1-font-size; }
|
||||
h2 { font-size: $h2-font-size; }
|
||||
h3 { font-size: $h3-font-size; }
|
||||
h4 { font-size: $h4-font-size; }
|
||||
h5 { font-size: $h5-font-size; }
|
||||
h6 { font-size: $h6-font-size; }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,474 @@
|
||||
// Foundation by ZURB
|
||||
// foundation.zurb.com
|
||||
// Licensed under MIT Open Source
|
||||
|
||||
@import "global";
|
||||
|
||||
//
|
||||
// Foundation Visibility Classes
|
||||
//
|
||||
$include-html-visibility-classes: $include-html-classes !default;
|
||||
$include-accessibility-classes: true !default;
|
||||
$include-table-visibility-classes: true !default;
|
||||
$include-legacy-visibility-classes: true !default;
|
||||
|
||||
//
|
||||
// Media Class Names
|
||||
//
|
||||
// Visibility Breakpoints
|
||||
$visibility-breakpoint-sizes:
|
||||
small,
|
||||
medium,
|
||||
large,
|
||||
xlarge,
|
||||
xxlarge;
|
||||
|
||||
$visibility-breakpoint-queries:
|
||||
unquote($small-up),
|
||||
unquote($medium-up),
|
||||
unquote($large-up),
|
||||
unquote($xlarge-up),
|
||||
unquote($xxlarge-up);
|
||||
|
||||
@mixin visibility-loop {
|
||||
@each $current-visibility-breakpoint in $visibility-breakpoint-sizes {
|
||||
$visibility-inherit-list: ();
|
||||
$visibility-none-list: ();
|
||||
|
||||
$visibility-visible-list: ();
|
||||
$visibility-hidden-list: ();
|
||||
|
||||
$visibility-table-list: ();
|
||||
$visibility-table-header-group-list: ();
|
||||
$visibility-table-row-group-list: ();
|
||||
$visibility-table-row-list: ();
|
||||
$visibility-table-cell-list: ();
|
||||
|
||||
@each $visibility-comparison-breakpoint in $visibility-breakpoint-sizes {
|
||||
@if index($visibility-breakpoint-sizes, $visibility-comparison-breakpoint) < index($visibility-breakpoint-sizes, $current-visibility-breakpoint) {
|
||||
// Smaller than current breakpoint
|
||||
|
||||
$visibility-inherit-list: append($visibility-inherit-list, unquote(
|
||||
'.hide-for-#{$visibility-comparison-breakpoint}-only, .show-for-#{$visibility-comparison-breakpoint}-up'
|
||||
), comma);
|
||||
$visibility-none-list: append($visibility-none-list, unquote(
|
||||
'.show-for-#{$visibility-comparison-breakpoint}-only, .hide-for-#{$visibility-comparison-breakpoint}-up'
|
||||
), comma);
|
||||
$visibility-visible-list: append($visibility-visible-list, unquote(
|
||||
'.hidden-for-#{$visibility-comparison-breakpoint}-only, .visible-for-#{$visibility-comparison-breakpoint}-up'
|
||||
), comma);
|
||||
$visibility-hidden-list: append($visibility-hidden-list, unquote(
|
||||
'.visible-for-#{$visibility-comparison-breakpoint}-only, .hidden-for-#{$visibility-comparison-breakpoint}-up'
|
||||
), comma);
|
||||
$visibility-table-list: append($visibility-table-list, unquote(
|
||||
'table.hide-for-#{$visibility-comparison-breakpoint}-only, table.show-for-#{$visibility-comparison-breakpoint}-up'
|
||||
), comma);
|
||||
$visibility-table-header-group-list: append($visibility-table-header-group-list, unquote(
|
||||
'thead.hide-for-#{$visibility-comparison-breakpoint}-only, thead.show-for-#{$visibility-comparison-breakpoint}-up'
|
||||
), comma);
|
||||
$visibility-table-row-group-list: append($visibility-table-row-group-list, unquote(
|
||||
'tbody.hide-for-#{$visibility-comparison-breakpoint}-only, tbody.show-for-#{$visibility-comparison-breakpoint}-up'
|
||||
), comma);
|
||||
$visibility-table-row-list: append($visibility-table-row-list, unquote(
|
||||
'tr.hide-for-#{$visibility-comparison-breakpoint}-only, tr.show-for-#{$visibility-comparison-breakpoint}-up'
|
||||
), comma);
|
||||
$visibility-table-cell-list: append($visibility-table-cell-list, unquote(
|
||||
'th.hide-for-#{$visibility-comparison-breakpoint}-only, td.hide-for-#{$visibility-comparison-breakpoint}-only, th.show-for-#{$visibility-comparison-breakpoint}-up, td.show-for-#{$visibility-comparison-breakpoint}-up'
|
||||
), comma);
|
||||
|
||||
// Foundation 4 compatibility:
|
||||
// Include .show/hide-for-[size] and .show/hide-for-[size]-down classes
|
||||
// for small, medium, and large breakpoints only
|
||||
@if $include-legacy-visibility-classes and index((small, medium, large), $visibility-comparison-breakpoint) != false {
|
||||
$visibility-inherit-list: append($visibility-inherit-list, unquote(
|
||||
'.hide-for-#{$visibility-comparison-breakpoint}, .hide-for-#{$visibility-comparison-breakpoint}-down'
|
||||
), comma);
|
||||
$visibility-none-list: append($visibility-none-list, unquote(
|
||||
'.show-for-#{$visibility-comparison-breakpoint}, .show-for-#{$visibility-comparison-breakpoint}-down'
|
||||
), comma);
|
||||
$visibility-visible-list: append($visibility-visible-list, unquote(
|
||||
'.hidden-for-#{$visibility-comparison-breakpoint}, .hidden-for-#{$visibility-comparison-breakpoint}-down'
|
||||
), comma);
|
||||
$visibility-hidden-list: append($visibility-hidden-list, unquote(
|
||||
'.visible-for-#{$visibility-comparison-breakpoint}, .visible-for-#{$visibility-comparison-breakpoint}-down'
|
||||
), comma);
|
||||
$visibility-table-list: append($visibility-table-list, unquote(
|
||||
'table.hide-for-#{$visibility-comparison-breakpoint}, table.hide-for-#{$visibility-comparison-breakpoint}-down'
|
||||
), comma);
|
||||
$visibility-table-header-group-list: append($visibility-table-header-group-list, unquote(
|
||||
'thead.hide-for-#{$visibility-comparison-breakpoint}, thead.hide-for-#{$visibility-comparison-breakpoint}-down'
|
||||
), comma);
|
||||
$visibility-table-row-group-list: append($visibility-table-row-group-list, unquote(
|
||||
'tbody.hide-for-#{$visibility-comparison-breakpoint}, tbody.hide-for-#{$visibility-comparison-breakpoint}-down'
|
||||
), comma);
|
||||
$visibility-table-row-list: append($visibility-table-row-list, unquote(
|
||||
'tr.hide-for-#{$visibility-comparison-breakpoint}, tr.hide-for-#{$visibility-comparison-breakpoint}-down'
|
||||
), comma);
|
||||
$visibility-table-cell-list: append($visibility-table-cell-list, unquote(
|
||||
'th.hide-for-#{$visibility-comparison-breakpoint}, td.hide-for-#{$visibility-comparison-breakpoint}, th.hide-for-#{$visibility-comparison-breakpoint}-down, td.hide-for-#{$visibility-comparison-breakpoint}-down'
|
||||
), comma);
|
||||
}
|
||||
|
||||
} @else if index($visibility-breakpoint-sizes, $visibility-comparison-breakpoint) > index($visibility-breakpoint-sizes, $current-visibility-breakpoint) {
|
||||
// Larger than current breakpoint
|
||||
|
||||
$visibility-inherit-list: append($visibility-inherit-list, unquote(
|
||||
'.hide-for-#{$visibility-comparison-breakpoint}-only, .hide-for-#{$visibility-comparison-breakpoint}-up'
|
||||
), comma);
|
||||
$visibility-none-list: append($visibility-none-list, unquote(
|
||||
'.show-for-#{$visibility-comparison-breakpoint}-only, .show-for-#{$visibility-comparison-breakpoint}-up'
|
||||
), comma);
|
||||
$visibility-visible-list: append($visibility-visible-list, unquote(
|
||||
'.hidden-for-#{$visibility-comparison-breakpoint}-only, .hidden-for-#{$visibility-comparison-breakpoint}-up'
|
||||
), comma);
|
||||
$visibility-hidden-list: append($visibility-hidden-list, unquote(
|
||||
'.visible-for-#{$visibility-comparison-breakpoint}-only, .visible-for-#{$visibility-comparison-breakpoint}-up'
|
||||
), comma);
|
||||
$visibility-table-list: append($visibility-table-list, unquote(
|
||||
'table.hide-for-#{$visibility-comparison-breakpoint}-only, table.hide-for-#{$visibility-comparison-breakpoint}-up'
|
||||
), comma);
|
||||
$visibility-table-header-group-list: append($visibility-table-header-group-list, unquote(
|
||||
'thead.hide-for-#{$visibility-comparison-breakpoint}-only, thead.hide-for-#{$visibility-comparison-breakpoint}-up'
|
||||
), comma);
|
||||
$visibility-table-row-group-list: append($visibility-table-row-group-list, unquote(
|
||||
'tbody.hide-for-#{$visibility-comparison-breakpoint}-only, tbody.hide-for-#{$visibility-comparison-breakpoint}-up'
|
||||
), comma);
|
||||
$visibility-table-row-list: append($visibility-table-row-list, unquote(
|
||||
'tr.hide-for-#{$visibility-comparison-breakpoint}-only, tr.hide-for-#{$visibility-comparison-breakpoint}-up'
|
||||
), comma);
|
||||
$visibility-table-cell-list: append($visibility-table-cell-list, unquote(
|
||||
'th.hide-for-#{$visibility-comparison-breakpoint}-only, td.hide-for-#{$visibility-comparison-breakpoint}-only, th.hide-for-#{$visibility-comparison-breakpoint}-up, td.hide-for-#{$visibility-comparison-breakpoint}-up'
|
||||
), comma);
|
||||
|
||||
// Foundation 4 compatibility:
|
||||
// Include .show/hide-for-[size] and .show/hide-for-[size]-down classes
|
||||
// for small, medium, and large breakpoints only
|
||||
@if $include-legacy-visibility-classes and index((small, medium, large), $visibility-comparison-breakpoint) != false {
|
||||
$visibility-inherit-list: append($visibility-inherit-list, unquote(
|
||||
'.hide-for-#{$visibility-comparison-breakpoint}, .show-for-#{$visibility-comparison-breakpoint}-down'
|
||||
), comma);
|
||||
$visibility-none-list: append($visibility-none-list, unquote(
|
||||
'.show-for-#{$visibility-comparison-breakpoint}, .hide-for-#{$visibility-comparison-breakpoint}-down'
|
||||
), comma);
|
||||
$visibility-visible-list: append($visibility-visible-list, unquote(
|
||||
'.hidden-for-#{$visibility-comparison-breakpoint}, .visible-for-#{$visibility-comparison-breakpoint}-down'
|
||||
), comma);
|
||||
$visibility-hidden-list: append($visibility-hidden-list, unquote(
|
||||
'.visible-for-#{$visibility-comparison-breakpoint}, .hidden-for-#{$visibility-comparison-breakpoint}-down'
|
||||
), comma);
|
||||
$visibility-table-list: append($visibility-table-list, unquote(
|
||||
'table.hide-for-#{$visibility-comparison-breakpoint}, table.show-for-#{$visibility-comparison-breakpoint}-down'
|
||||
), comma);
|
||||
$visibility-table-header-group-list: append($visibility-table-header-group-list, unquote(
|
||||
'thead.hide-for-#{$visibility-comparison-breakpoint}, thead.show-for-#{$visibility-comparison-breakpoint}-down'
|
||||
), comma);
|
||||
$visibility-table-row-group-list: append($visibility-table-row-group-list, unquote(
|
||||
'tbody.hide-for-#{$visibility-comparison-breakpoint}, tbody.show-for-#{$visibility-comparison-breakpoint}-down'
|
||||
), comma);
|
||||
$visibility-table-row-list: append($visibility-table-row-list, unquote(
|
||||
'tr.hide-for-#{$visibility-comparison-breakpoint}, tr.show-for-#{$visibility-comparison-breakpoint}-down'
|
||||
), comma);
|
||||
$visibility-table-cell-list: append($visibility-table-cell-list, unquote(
|
||||
'th.hide-for-#{$visibility-comparison-breakpoint}, td.hide-for-#{$visibility-comparison-breakpoint}, th.show-for-#{$visibility-comparison-breakpoint}-down, td.show-for-#{$visibility-comparison-breakpoint}-down'
|
||||
), comma);
|
||||
}
|
||||
|
||||
} @else {
|
||||
// Current breakpoint
|
||||
|
||||
$visibility-inherit-list: append($visibility-inherit-list, unquote(
|
||||
'.show-for-#{$visibility-comparison-breakpoint}-only, .show-for-#{$visibility-comparison-breakpoint}-up'
|
||||
), comma);
|
||||
$visibility-none-list: append($visibility-none-list, unquote(
|
||||
'.hide-for-#{$visibility-comparison-breakpoint}-only, .hide-for-#{$visibility-comparison-breakpoint}-up'
|
||||
), comma);
|
||||
$visibility-visible-list: append($visibility-visible-list, unquote(
|
||||
'.visible-for-#{$visibility-comparison-breakpoint}-only, .visible-for-#{$visibility-comparison-breakpoint}-up'
|
||||
), comma);
|
||||
$visibility-hidden-list: append($visibility-hidden-list, unquote(
|
||||
'.hidden-for-#{$visibility-comparison-breakpoint}-only, .hidden-for-#{$visibility-comparison-breakpoint}-up'
|
||||
), comma);
|
||||
$visibility-table-list: append($visibility-table-list, unquote(
|
||||
'table.show-for-#{$visibility-comparison-breakpoint}-only, table.show-for-#{$visibility-comparison-breakpoint}-up'
|
||||
), comma);
|
||||
$visibility-table-header-group-list: append($visibility-table-header-group-list, unquote(
|
||||
'thead.show-for-#{$visibility-comparison-breakpoint}-only, thead.show-for-#{$visibility-comparison-breakpoint}-up'
|
||||
), comma);
|
||||
$visibility-table-row-group-list: append($visibility-table-row-group-list, unquote(
|
||||
'tbody.show-for-#{$visibility-comparison-breakpoint}-only, tbody.show-for-#{$visibility-comparison-breakpoint}-up'
|
||||
), comma);
|
||||
$visibility-table-row-list: append($visibility-table-row-list, unquote(
|
||||
'tr.show-for-#{$visibility-comparison-breakpoint}-only, tr.show-for-#{$visibility-comparison-breakpoint}-up'
|
||||
), comma);
|
||||
$visibility-table-cell-list: append($visibility-table-cell-list, unquote(
|
||||
'th.show-for-#{$visibility-comparison-breakpoint}-only, td.show-for-#{$visibility-comparison-breakpoint}-only, th.show-for-#{$visibility-comparison-breakpoint}-up, td.show-for-#{$visibility-comparison-breakpoint}-up'
|
||||
), comma);
|
||||
|
||||
// Foundation 4 compatibility:
|
||||
// Include .show/hide-for-[size] and .show/hide-for-[size]-down classes
|
||||
// for small, medium, and large breakpoints only
|
||||
@if $include-legacy-visibility-classes and index((small, medium, large), $visibility-comparison-breakpoint) != false {
|
||||
$visibility-inherit-list: append($visibility-inherit-list, unquote(
|
||||
'.show-for-#{$visibility-comparison-breakpoint}, .show-for-#{$visibility-comparison-breakpoint}-down'
|
||||
), comma);
|
||||
$visibility-none-list: append($visibility-none-list, unquote(
|
||||
'.hide-for-#{$visibility-comparison-breakpoint}, .hide-for-#{$visibility-comparison-breakpoint}-down'
|
||||
), comma);
|
||||
$visibility-visible-list: append($visibility-visible-list, unquote(
|
||||
'.visible-for-#{$visibility-comparison-breakpoint}, .visible-for-#{$visibility-comparison-breakpoint}-down'
|
||||
), comma);
|
||||
$visibility-hidden-list: append($visibility-hidden-list, unquote(
|
||||
'.hidden-for-#{$visibility-comparison-breakpoint}, .hidden-for-#{$visibility-comparison-breakpoint}-down'
|
||||
), comma);
|
||||
$visibility-table-list: append($visibility-table-list, unquote(
|
||||
'table.show-for-#{$visibility-comparison-breakpoint}, table.show-for-#{$visibility-comparison-breakpoint}-down'
|
||||
), comma);
|
||||
$visibility-table-header-group-list: append($visibility-table-header-group-list, unquote(
|
||||
'thead.show-for-#{$visibility-comparison-breakpoint}, thead.show-for-#{$visibility-comparison-breakpoint}-down'
|
||||
), comma);
|
||||
$visibility-table-row-group-list: append($visibility-table-row-group-list, unquote(
|
||||
'tbody.show-for-#{$visibility-comparison-breakpoint}, tbody.show-for-#{$visibility-comparison-breakpoint}-down'
|
||||
), comma);
|
||||
$visibility-table-row-list: append($visibility-table-row-list, unquote(
|
||||
'tr.show-for-#{$visibility-comparison-breakpoint}, tr.show-for-#{$visibility-comparison-breakpoint}-down'
|
||||
), comma);
|
||||
$visibility-table-cell-list: append($visibility-table-cell-list, unquote(
|
||||
'th.show-for-#{$visibility-comparison-breakpoint}, td.show-for-#{$visibility-comparison-breakpoint}, th.show-for-#{$visibility-comparison-breakpoint}-down, td.show-for-#{$visibility-comparison-breakpoint}-down'
|
||||
), comma);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* #{$current-visibility-breakpoint} displays */
|
||||
@media #{nth($visibility-breakpoint-queries, index($visibility-breakpoint-sizes, $current-visibility-breakpoint))} {
|
||||
#{$visibility-inherit-list} {
|
||||
display: inherit !important;
|
||||
}
|
||||
#{$visibility-none-list} {
|
||||
display: none !important;
|
||||
}
|
||||
@if $include-accessibility-classes != false {
|
||||
#{$visibility-visible-list} {
|
||||
@include element-invisible-off;
|
||||
}
|
||||
#{$visibility-hidden-list} {
|
||||
@include element-invisible;
|
||||
}
|
||||
}
|
||||
@if $include-table-visibility-classes != false {
|
||||
#{$visibility-table-list} {
|
||||
display: table !important;
|
||||
}
|
||||
#{$visibility-table-header-group-list} {
|
||||
display: table-header-group !important;
|
||||
}
|
||||
#{$visibility-table-row-group-list} {
|
||||
display: table-row-group !important;
|
||||
}
|
||||
#{$visibility-table-row-list} {
|
||||
display: table-row;
|
||||
}
|
||||
#{$visibility-table-cell-list} {
|
||||
display: table-cell !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@if $include-html-visibility-classes != false {
|
||||
|
||||
@include visibility-loop;
|
||||
|
||||
/* Orientation targeting */
|
||||
.show-for-landscape,
|
||||
.hide-for-portrait { display: inherit !important; }
|
||||
.hide-for-landscape,
|
||||
.show-for-portrait { display: none !important; }
|
||||
|
||||
/* Specific visibility for tables */
|
||||
table {
|
||||
&.hide-for-landscape,
|
||||
&.show-for-portrait { display: table !important; }
|
||||
}
|
||||
thead {
|
||||
&.hide-for-landscape,
|
||||
&.show-for-portrait { display: table-header-group !important; }
|
||||
}
|
||||
tbody {
|
||||
&.hide-for-landscape,
|
||||
&.show-for-portrait { display: table-row-group !important; }
|
||||
}
|
||||
tr {
|
||||
&.hide-for-landscape,
|
||||
&.show-for-portrait { display: table-row !important; }
|
||||
}
|
||||
td,
|
||||
th {
|
||||
&.hide-for-landscape,
|
||||
&.show-for-portrait { display: table-cell !important; }
|
||||
}
|
||||
|
||||
@media #{$landscape} {
|
||||
.show-for-landscape,
|
||||
.hide-for-portrait { display: inherit !important; }
|
||||
.hide-for-landscape,
|
||||
.show-for-portrait { display: none !important; }
|
||||
|
||||
/* Specific visibility for tables */
|
||||
table {
|
||||
&.show-for-landscape,
|
||||
&.hide-for-portrait { display: table !important; }
|
||||
}
|
||||
thead {
|
||||
&.show-for-landscape,
|
||||
&.hide-for-portrait { display: table-header-group !important; }
|
||||
}
|
||||
tbody {
|
||||
&.show-for-landscape,
|
||||
&.hide-for-portrait { display: table-row-group !important; }
|
||||
}
|
||||
tr {
|
||||
&.show-for-landscape,
|
||||
&.hide-for-portrait { display: table-row !important; }
|
||||
}
|
||||
td,
|
||||
th {
|
||||
&.show-for-landscape,
|
||||
&.hide-for-portrait { display: table-cell !important; }
|
||||
}
|
||||
}
|
||||
|
||||
@media #{$portrait} {
|
||||
.show-for-portrait,
|
||||
.hide-for-landscape { display: inherit !important; }
|
||||
.hide-for-portrait,
|
||||
.show-for-landscape { display: none !important; }
|
||||
|
||||
/* Specific visibility for tables */
|
||||
table {
|
||||
&.show-for-portrait,
|
||||
&.hide-for-landscape { display: table !important; }
|
||||
}
|
||||
thead {
|
||||
&.show-for-portrait,
|
||||
&.hide-for-landscape { display: table-header-group !important; }
|
||||
}
|
||||
tbody {
|
||||
&.show-for-portrait,
|
||||
&.hide-for-landscape { display: table-row-group !important; }
|
||||
}
|
||||
tr {
|
||||
&.show-for-portrait,
|
||||
&.hide-for-landscape { display: table-row !important; }
|
||||
}
|
||||
td,
|
||||
th {
|
||||
&.show-for-portrait,
|
||||
&.hide-for-landscape { display: table-cell !important; }
|
||||
}
|
||||
}
|
||||
|
||||
/* Touch-enabled device targeting */
|
||||
.show-for-touch { display: none !important; }
|
||||
.hide-for-touch { display: inherit !important; }
|
||||
.touch .show-for-touch { display: inherit !important; }
|
||||
.touch .hide-for-touch { display: none !important; }
|
||||
|
||||
/* Specific visibility for tables */
|
||||
table.hide-for-touch { display: table !important; }
|
||||
.touch table.show-for-touch { display: table !important; }
|
||||
thead.hide-for-touch { display: table-header-group !important; }
|
||||
.touch thead.show-for-touch { display: table-header-group !important; }
|
||||
tbody.hide-for-touch { display: table-row-group !important; }
|
||||
.touch tbody.show-for-touch { display: table-row-group !important; }
|
||||
tr.hide-for-touch { display: table-row !important; }
|
||||
.touch tr.show-for-touch { display: table-row !important; }
|
||||
td.hide-for-touch { display: table-cell !important; }
|
||||
.touch td.show-for-touch { display: table-cell !important; }
|
||||
th.hide-for-touch { display: table-cell !important; }
|
||||
.touch th.show-for-touch { display: table-cell !important; }
|
||||
|
||||
// Only include these styles if you want them.
|
||||
@if $include-print-styles {
|
||||
/*
|
||||
* Print styles.
|
||||
*
|
||||
* Inlined to avoid required HTTP connection: www.phpied.com/delay-loading-your-print-css/
|
||||
* Credit to Paul Irish and HTML5 Boilerplate (html5boilerplate.com)
|
||||
*/
|
||||
.print-only { display: none !important; }
|
||||
@media print {
|
||||
* {
|
||||
background: transparent !important;
|
||||
color: $black !important; /* Black prints faster: h5bp.com/s */
|
||||
box-shadow: none !important;
|
||||
text-shadow: none !important;
|
||||
}
|
||||
.show-for-print { display: block; }
|
||||
.hide-for-print { display: none; }
|
||||
|
||||
table.show-for-print { display: table !important; }
|
||||
thead.show-for-print { display: table-header-group !important; }
|
||||
tbody.show-for-print { display: table-row-group !important; }
|
||||
tr.show-for-print { display: table-row !important; }
|
||||
td.show-for-print { display: table-cell !important; }
|
||||
th.show-for-print { display: table-cell !important; }
|
||||
|
||||
a,
|
||||
a:visited { text-decoration: underline;}
|
||||
a[href]:after { content: " (" attr(href) ")"; }
|
||||
|
||||
abbr[title]:after { content: " (" attr(title) ")"; }
|
||||
|
||||
// Don't show links for images, or javascript/internal links
|
||||
.ir a:after,
|
||||
a[href^="javascript:"]:after,
|
||||
a[href^="#"]:after { content: ""; }
|
||||
|
||||
pre,
|
||||
blockquote {
|
||||
border: 1px solid $aluminum;
|
||||
page-break-inside: avoid;
|
||||
}
|
||||
|
||||
thead { display: table-header-group; /* h5bp.com/t */ }
|
||||
|
||||
tr,
|
||||
img { page-break-inside: avoid; }
|
||||
|
||||
img { max-width: 100% !important; }
|
||||
|
||||
@page { margin: 0.5cm; }
|
||||
|
||||
p,
|
||||
h2,
|
||||
h3 {
|
||||
orphans: 3;
|
||||
widows: 3;
|
||||
}
|
||||
|
||||
h2,
|
||||
h3 { page-break-after: avoid; }
|
||||
|
||||
.hide-on-print { display: none !important; }
|
||||
.print-only { display: block !important; }
|
||||
.hide-for-print { display: none !important; }
|
||||
.show-for-print { display: inherit !important; }
|
||||
}
|
||||
}
|
||||
|
||||
/* Print visibility */
|
||||
@media print {
|
||||
.show-for-print { display: block; }
|
||||
.hide-for-print { display: none; }
|
||||
|
||||
table.show-for-print { display: table !important; }
|
||||
thead.show-for-print { display: table-header-group !important; }
|
||||
tbody.show-for-print { display: table-row-group !important; }
|
||||
tr.show-for-print { display: table-row !important; }
|
||||
td.show-for-print { display: table-cell !important; }
|
||||
th.show-for-print { display: table-cell !important; }
|
||||
}
|
||||
}
|
||||
427
sites/all/themes/gui/materiobasetheme/bower_components/foundation/scss/normalize.scss
vendored
Normal file
427
sites/all/themes/gui/materiobasetheme/bower_components/foundation/scss/normalize.scss
vendored
Normal file
@@ -0,0 +1,427 @@
|
||||
/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
|
||||
|
||||
/**
|
||||
* 1. Set default font family to sans-serif.
|
||||
* 2. Prevent iOS text size adjust after orientation change, without disabling
|
||||
* user zoom.
|
||||
*/
|
||||
|
||||
html {
|
||||
font-family: sans-serif; /* 1 */
|
||||
-ms-text-size-adjust: 100%; /* 2 */
|
||||
-webkit-text-size-adjust: 100%; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove default margin.
|
||||
*/
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* HTML5 display definitions
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Correct `block` display not defined for any HTML5 element in IE 8/9.
|
||||
* Correct `block` display not defined for `details` or `summary` in IE 10/11
|
||||
* and Firefox.
|
||||
* Correct `block` display not defined for `main` in IE 11.
|
||||
*/
|
||||
|
||||
article,
|
||||
aside,
|
||||
details,
|
||||
figcaption,
|
||||
figure,
|
||||
footer,
|
||||
header,
|
||||
hgroup,
|
||||
main,
|
||||
menu,
|
||||
nav,
|
||||
section,
|
||||
summary {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct `inline-block` display not defined in IE 8/9.
|
||||
* 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
|
||||
*/
|
||||
|
||||
audio,
|
||||
canvas,
|
||||
progress,
|
||||
video {
|
||||
display: inline-block; /* 1 */
|
||||
vertical-align: baseline; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Prevent modern browsers from displaying `audio` without controls.
|
||||
* Remove excess height in iOS 5 devices.
|
||||
*/
|
||||
|
||||
audio:not([controls]) {
|
||||
display: none;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address `[hidden]` styling not present in IE 8/9/10.
|
||||
* Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
|
||||
*/
|
||||
|
||||
[hidden],
|
||||
template {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Links
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Remove the gray background color from active links in IE 10.
|
||||
*/
|
||||
|
||||
a {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
/**
|
||||
* Improve readability when focused and also mouse hovered in all browsers.
|
||||
*/
|
||||
|
||||
a:active,
|
||||
a:hover {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
/* Text-level semantics
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Address styling not present in IE 8/9/10/11, Safari, and Chrome.
|
||||
*/
|
||||
|
||||
abbr[title] {
|
||||
border-bottom: 1px dotted;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
|
||||
*/
|
||||
|
||||
b,
|
||||
strong {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address styling not present in Safari and Chrome.
|
||||
*/
|
||||
|
||||
dfn {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address variable `h1` font-size and margin within `section` and `article`
|
||||
* contexts in Firefox 4+, Safari, and Chrome.
|
||||
*/
|
||||
|
||||
h1 {
|
||||
font-size: 2em;
|
||||
margin: 0.67em 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address styling not present in IE 8/9.
|
||||
*/
|
||||
|
||||
mark {
|
||||
background: #ff0;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address inconsistent and variable font size in all browsers.
|
||||
*/
|
||||
|
||||
small {
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prevent `sub` and `sup` affecting `line-height` in all browsers.
|
||||
*/
|
||||
|
||||
sub,
|
||||
sup {
|
||||
font-size: 75%;
|
||||
line-height: 0;
|
||||
position: relative;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
sup {
|
||||
top: -0.5em;
|
||||
}
|
||||
|
||||
sub {
|
||||
bottom: -0.25em;
|
||||
}
|
||||
|
||||
/* Embedded content
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Remove border when inside `a` element in IE 8/9/10.
|
||||
*/
|
||||
|
||||
img {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Correct overflow not hidden in IE 9/10/11.
|
||||
*/
|
||||
|
||||
svg:not(:root) {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* Grouping content
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Address margin not present in IE 8/9 and Safari.
|
||||
*/
|
||||
|
||||
figure {
|
||||
margin: 1em 40px;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address differences between Firefox and other browsers.
|
||||
*/
|
||||
|
||||
hr {
|
||||
-moz-box-sizing: content-box;
|
||||
box-sizing: content-box;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Contain overflow in all browsers.
|
||||
*/
|
||||
|
||||
pre {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address odd `em`-unit font size rendering in all browsers.
|
||||
*/
|
||||
|
||||
code,
|
||||
kbd,
|
||||
pre,
|
||||
samp {
|
||||
font-family: monospace, monospace;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
/* Forms
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Known limitation: by default, Chrome and Safari on OS X allow very limited
|
||||
* styling of `select`, unless a `border` property is set.
|
||||
*/
|
||||
|
||||
/**
|
||||
* 1. Correct color not being inherited.
|
||||
* Known issue: affects color of disabled elements.
|
||||
* 2. Correct font properties not being inherited.
|
||||
* 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
|
||||
*/
|
||||
|
||||
button,
|
||||
input,
|
||||
optgroup,
|
||||
select,
|
||||
textarea {
|
||||
color: inherit; /* 1 */
|
||||
font: inherit; /* 2 */
|
||||
margin: 0; /* 3 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Address `overflow` set to `hidden` in IE 8/9/10/11.
|
||||
*/
|
||||
|
||||
button {
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address inconsistent `text-transform` inheritance for `button` and `select`.
|
||||
* All other form control elements do not inherit `text-transform` values.
|
||||
* Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
|
||||
* Correct `select` style inheritance in Firefox.
|
||||
*/
|
||||
|
||||
button,
|
||||
select {
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
|
||||
* and `video` controls.
|
||||
* 2. Correct inability to style clickable `input` types in iOS.
|
||||
* 3. Improve usability and consistency of cursor style between image-type
|
||||
* `input` and others.
|
||||
*/
|
||||
|
||||
button,
|
||||
html input[type="button"], /* 1 */
|
||||
input[type="reset"],
|
||||
input[type="submit"] {
|
||||
-webkit-appearance: button; /* 2 */
|
||||
cursor: pointer; /* 3 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Re-set default cursor for disabled elements.
|
||||
*/
|
||||
|
||||
button[disabled],
|
||||
html input[disabled] {
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove inner padding and border in Firefox 4+.
|
||||
*/
|
||||
|
||||
button::-moz-focus-inner,
|
||||
input::-moz-focus-inner {
|
||||
border: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address Firefox 4+ setting `line-height` on `input` using `!important` in
|
||||
* the UA stylesheet.
|
||||
*/
|
||||
|
||||
input {
|
||||
line-height: normal;
|
||||
}
|
||||
|
||||
/**
|
||||
* It's recommended that you don't attempt to style these elements.
|
||||
* Firefox's implementation doesn't respect box-sizing, padding, or width.
|
||||
*
|
||||
* 1. Address box sizing set to `content-box` in IE 8/9/10.
|
||||
* 2. Remove excess padding in IE 8/9/10.
|
||||
*/
|
||||
|
||||
input[type="checkbox"],
|
||||
input[type="radio"] {
|
||||
box-sizing: border-box; /* 1 */
|
||||
padding: 0; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Fix the cursor style for Chrome's increment/decrement buttons. For certain
|
||||
* `font-size` values of the `input`, it causes the cursor style of the
|
||||
* decrement button to change from `default` to `text`.
|
||||
*/
|
||||
|
||||
input[type="number"]::-webkit-inner-spin-button,
|
||||
input[type="number"]::-webkit-outer-spin-button {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Address `appearance` set to `searchfield` in Safari and Chrome.
|
||||
* 2. Address `box-sizing` set to `border-box` in Safari and Chrome
|
||||
* (include `-moz` to future-proof).
|
||||
*/
|
||||
|
||||
input[type="search"] {
|
||||
-webkit-appearance: textfield; /* 1 */
|
||||
-moz-box-sizing: content-box;
|
||||
-webkit-box-sizing: content-box; /* 2 */
|
||||
box-sizing: content-box;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove inner padding and search cancel button in Safari and Chrome on OS X.
|
||||
* Safari (but not Chrome) clips the cancel button when the search input has
|
||||
* padding (and `textfield` appearance).
|
||||
*/
|
||||
|
||||
input[type="search"]::-webkit-search-cancel-button,
|
||||
input[type="search"]::-webkit-search-decoration {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* Define consistent border, margin, and padding.
|
||||
*/
|
||||
|
||||
fieldset {
|
||||
border: 1px solid #c0c0c0;
|
||||
margin: 0 2px;
|
||||
padding: 0.35em 0.625em 0.75em;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct `color` not being inherited in IE 8/9/10/11.
|
||||
* 2. Remove padding so people aren't caught out if they zero out fieldsets.
|
||||
*/
|
||||
|
||||
legend {
|
||||
border: 0; /* 1 */
|
||||
padding: 0; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove default vertical scrollbar in IE 8/9/10/11.
|
||||
*/
|
||||
|
||||
textarea {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
/**
|
||||
* Don't inherit the `font-weight` (applied by a rule above).
|
||||
* NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
|
||||
*/
|
||||
|
||||
optgroup {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* Tables
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Remove most spacing between table cells.
|
||||
*/
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
|
||||
td,
|
||||
th {
|
||||
padding: 0;
|
||||
}
|
||||
Reference in New Issue
Block a user