mirror of
https://github.com/wahyd4/cdnjs.git
synced 2026-08-09 04:46:00 +10:00
add foundation-essential v5.4.7
This commit is contained in:
+2707
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@@ -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;
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
/*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,326 @@
|
||||
;(function ($, window, document, undefined) {
|
||||
'use strict';
|
||||
|
||||
Foundation.libs.dropdown = {
|
||||
name : 'dropdown',
|
||||
|
||||
version : '5.4.7',
|
||||
|
||||
settings : {
|
||||
active_class: 'open',
|
||||
disabled_class: 'disabled',
|
||||
mega_class: 'mega',
|
||||
align: 'bottom',
|
||||
is_hover: false,
|
||||
opened: function(){},
|
||||
closed: function(){}
|
||||
},
|
||||
|
||||
init : function (scope, method, options) {
|
||||
Foundation.inherit(this, 'throttle');
|
||||
|
||||
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();
|
||||
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.target).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);
|
||||
self.timeout = setTimeout(function () {
|
||||
if ($this.data(self.data_attr())) {
|
||||
var settings = $this.data(self.data_attr(true) + '-init') || self.settings;
|
||||
if (settings.is_hover) self.close.call(self, S('#' + $this.data(self.data_attr())));
|
||||
} else {
|
||||
var target = S('[' + self.attr_name() + '="' + S(this).attr('id') + '"]'),
|
||||
settings = target.data(self.attr_name(true) + '-init') || self.settings;
|
||||
if (settings.is_hover) self.close.call(self, $this);
|
||||
}
|
||||
}.bind(this), 150);
|
||||
})
|
||||
.on('click.fndtn.dropdown', function (e) {
|
||||
var parent = S(e.target).closest('[' + self.attr_name() + '-content]');
|
||||
|
||||
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]);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
closeall: function() {
|
||||
var self = this;
|
||||
$.each(self.S('[' + this.attr_name() + '-content]'), 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();
|
||||
},
|
||||
|
||||
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'),
|
||||
target = this.S("[" + this.attr_name() + "='" + dropdown.attr('id') + "']");
|
||||
|
||||
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;
|
||||
|
||||
return p;
|
||||
},
|
||||
top: function (t, s) {
|
||||
var self = Foundation.libs.dropdown,
|
||||
p = self.dirs._base.call(this, t);
|
||||
|
||||
this.addClass('drop-top');
|
||||
|
||||
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 (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');
|
||||
|
||||
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');
|
||||
|
||||
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;
|
||||
|
||||
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 (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));
|
||||
File diff suppressed because one or more lines are too long
+344
@@ -0,0 +1,344 @@
|
||||
;(function ($, window, document, undefined) {
|
||||
'use strict';
|
||||
|
||||
Foundation.libs.interchange = {
|
||||
name : 'interchange',
|
||||
|
||||
version : '5.4.7',
|
||||
|
||||
cache : {},
|
||||
|
||||
images_loaded : false,
|
||||
nodes_loaded : false,
|
||||
|
||||
settings : {
|
||||
load_attr : 'interchange',
|
||||
|
||||
named_queries : {
|
||||
'default' : 'only screen',
|
||||
small : Foundation.media_queries.small,
|
||||
medium : Foundation.media_queries.medium,
|
||||
large : Foundation.media_queries.large,
|
||||
xlarge : Foundation.media_queries.xlarge,
|
||||
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 () {
|
||||
if (arguments[0] instanceof Array) {
|
||||
var args = arguments[0];
|
||||
} else {
|
||||
var args = Array.prototype.slice.call(arguments, 0);
|
||||
}
|
||||
|
||||
passed.el.trigger(passed.scenario[1], args);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
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));
|
||||
+1
@@ -0,0 +1 @@
|
||||
!function(t,e){"use strict";Foundation.libs.interchange={name:"interchange",version:"5.4.7",cache:{},images_loaded:!1,nodes_loaded:!1,settings:{load_attr:"interchange",named_queries:{"default":"only screen",small:Foundation.media_queries.small,medium:Foundation.media_queries.medium,large:Foundation.media_queries.large,xlarge:Foundation.media_queries.xlarge,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(e,i,a){if(/IMG/.test(e[0].nodeName)){var n=e[0].src;if(new RegExp(i,"i").test(n))return;return e[0].src=i,a(e[0].src)}var s=e.data(this.data_attr+"-last-path"),r=this;if(s!=i)return/\.(gif|jpg|jpeg|tiff|png)([?#].*)?/i.test(i)?(t(e).css("background-image","url("+i+")"),e.data("interchange-last-path",i),a(i)):t.get(i,function(t){e.html(t),e.data(r.data_attr+"-last-path",i),a()})}}},init:function(e,i,a){Foundation.inherit(this,"throttle random_str"),this.data_attr=this.set_data_attr(),t.extend(!0,this.settings,i,a),this.bindings(i,a),this.load("images"),this.load("nodes")},get_media_hash:function(){var t="";for(var e in this.settings.named_queries)t+=matchMedia(this.settings.named_queries[e]).matches.toString();return t},events:function(){var i,a=this;return t(e).off(".interchange").on("resize.fndtn.interchange",a.throttle(function(){var t=a.get_media_hash();t!==i&&a.resize(),i=t},50)),this},resize:function(){var e=this.cache;if(!this.images_loaded||!this.nodes_loaded)return void setTimeout(t.proxy(this.resize,this),50);for(var i in e)if(e.hasOwnProperty(i)){var a=this.results(i,e[i]);a&&this.settings.directives[a.scenario[1]].call(this,a.el,a.scenario[0],function(){if(arguments[0]instanceof Array)var t=arguments[0];else var t=Array.prototype.slice.call(arguments,0);a.el.trigger(a.scenario[1],t)})}},results:function(t,e){var i=e.length;if(i>0)for(var a=this.S("["+this.add_namespace("data-uuid")+'="'+t+'"]');i--;){var n,s=e[i][2];if(n=matchMedia(this.settings.named_queries.hasOwnProperty(s)?this.settings.named_queries[s]:s),n.matches)return{el:a,scenario:e[i]}}return!1},load:function(t,e){return("undefined"==typeof this["cached_"+t]||e)&&this["update_"+t](),this["cached_"+t]},update_images:function(){var t=this.S("img["+this.data_attr+"]"),e=t.length,i=e,a=0,n=this.data_attr;for(this.cache={},this.cached_images=[],this.images_loaded=0===e;i--;){if(a++,t[i]){var s=t[i].getAttribute(n)||"";s.length>0&&this.cached_images.push(t[i])}a===e&&(this.images_loaded=!0,this.enhance("images"))}return this},update_nodes:function(){var t=this.S("["+this.data_attr+"]").not("img"),e=t.length,i=e,a=0,n=this.data_attr;for(this.cached_nodes=[],this.nodes_loaded=0===e;i--;){a++;var s=t[i].getAttribute(n)||"";s.length>0&&this.cached_nodes.push(t[i]),a===e&&(this.nodes_loaded=!0,this.enhance("nodes"))}return this},enhance:function(i){for(var a=this["cached_"+i].length;a--;)this.object(t(this["cached_"+i][a]));return t(e).trigger("resize").trigger("resize.fndtn.interchange")},convert_directive:function(t){var e=this.trim(t);return e.length>0?e:"replace"},parse_scenario:function(t){var e=t[0].match(/(.+),\s*(\w+)\s*$/),i=t[1];if(e)var a=e[1],n=e[2];else var s=t[0].split(/,\s*$/),a=s[0],n="";return[this.trim(a),this.convert_directive(n),this.trim(i)]},object:function(t){var e=this.parse_data_attr(t),i=[],a=e.length;if(a>0)for(;a--;){var n=e[a].split(/\((.*?)(\))$/);if(n.length>1){var s=this.parse_scenario(n);i.push(s)}}return this.store(t,i)},store:function(t,e){var i=this.random_str(),a=t.data(this.add_namespace("uuid",!0));return this.cache[a]?this.cache[a]:(t.attr(this.add_namespace("data-uuid"),i),this.cache[i]=e)},trim:function(e){return"string"==typeof e?t.trim(e):e},set_data_attr:function(t){return t?this.namespace.length>0?this.namespace+"-"+this.settings.load_attr:this.settings.load_attr:this.namespace.length>0?"data-"+this.namespace+"-"+this.settings.load_attr:"data-"+this.settings.load_attr},parse_data_attr:function(t){for(var e=t.attr(this.attr_name()).split(/\[(.*?)\]/),i=e.length,a=[];i--;)e[i].replace(/[\W\d]+/,"").length>4&&a.push(e[i]);return a},reflow:function(){this.load("images",!0),this.load("nodes",!0)}}}(jQuery,window,window.document);
|
||||
@@ -0,0 +1,625 @@
|
||||
/*
|
||||
* 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-medium',
|
||||
'foundation-mq-large',
|
||||
'foundation-mq-xlarge',
|
||||
'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,
|
||||
should_bind_events = !S(this).data(this.attr_name(true));
|
||||
|
||||
|
||||
if (S(this.scope).is('[' + this.attr_name() +']')) {
|
||||
S(this.scope).data(this.attr_name(true) + '-init', $.extend({}, this.settings, (options || method), this.data_options(S(this.scope))));
|
||||
|
||||
if (should_bind_events) {
|
||||
this.events(this.scope);
|
||||
}
|
||||
|
||||
} else {
|
||||
S('[' + this.attr_name() +']', this.scope).each(function () {
|
||||
var should_bind_events = !S(this).data(self.attr_name(true) + '-init');
|
||||
S(this).data(self.attr_name(true) + '-init', $.extend({}, self.settings, (options || method), self.data_options(S(this))));
|
||||
|
||||
if (should_bind_events) {
|
||||
self.events(this);
|
||||
}
|
||||
});
|
||||
}
|
||||
// # 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($) {
|
||||
|
||||
// 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);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
}( jQuery ));
|
||||
|
||||
|
||||
function removeQuotes (string) {
|
||||
if (typeof string === 'string' || string instanceof String) {
|
||||
string = string.replace(/^['\\/"]+|(;\s?})+|['\\/"]+$/g, '');
|
||||
}
|
||||
|
||||
return string;
|
||||
}
|
||||
|
||||
window.Foundation = {
|
||||
name : 'Foundation',
|
||||
|
||||
version : '5.4.7',
|
||||
|
||||
media_queries : {
|
||||
small : S('.foundation-mq-small').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
|
||||
medium : S('.foundation-mq-medium').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
|
||||
large : S('.foundation-mq-large').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
|
||||
xlarge: S('.foundation-mq-xlarge').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); // PATCH: added this line
|
||||
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);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
$.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));
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,444 @@
|
||||
;(function ($, window, document, undefined) {
|
||||
'use strict';
|
||||
|
||||
Foundation.libs.reveal = {
|
||||
name : 'reveal',
|
||||
|
||||
version : '5.4.7',
|
||||
|
||||
locked : false,
|
||||
|
||||
settings : {
|
||||
animation: 'fadeAndPop',
|
||||
animation_speed: 250,
|
||||
close_on_background_click: true,
|
||||
close_on_esc: true,
|
||||
dismiss_modal_class: 'close-reveal-modal',
|
||||
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.trigger('open').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) {
|
||||
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) ) {
|
||||
old_success(data, textStatus, jqXHR);
|
||||
}
|
||||
|
||||
modal.html(data);
|
||||
self.S(modal).foundation('section', 'reflow');
|
||||
self.S(modal).children().foundation();
|
||||
|
||||
if (open_modal.length > 0) {
|
||||
self.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');
|
||||
this.toggle_bg(modal, false);
|
||||
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();
|
||||
},
|
||||
|
||||
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));
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -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))}});
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,2 @@
|
||||
/*! http://mths.be/placeholder v2.0.8 by @mathias */
|
||||
!function(a,b,c){function d(a){var b={},d=/^jQuery\d+$/;return c.each(a.attributes,function(a,c){c.specified&&!d.test(c.name)&&(b[c.name]=c.value)}),b}function e(a,b){var d=this,e=c(d);if(d.value==e.attr("placeholder")&&e.hasClass("placeholder"))if(e.data("placeholder-password")){if(e=e.hide().next().show().attr("id",e.removeAttr("id").data("placeholder-id")),a===!0)return e[0].value=b;e.focus()}else d.value="",e.removeClass("placeholder"),d==g()&&d.select()}function f(){var a,b=this,f=c(b),g=this.id;if(""==b.value){if("password"==b.type){if(!f.data("placeholder-textinput")){try{a=f.clone().attr({type:"text"})}catch(h){a=c("<input>").attr(c.extend(d(this),{type:"text"}))}a.removeAttr("name").data({"placeholder-password":f,"placeholder-id":g}).bind("focus.placeholder",e),f.data({"placeholder-textinput":a,"placeholder-id":g}).before(a)}f=f.removeAttr("id").hide().prev().attr("id",g).show()}f.addClass("placeholder"),f[0].value=f.attr("placeholder")}else f.removeClass("placeholder")}function g(){try{return b.activeElement}catch(a){}}var h,i,j="[object OperaMini]"==Object.prototype.toString.call(a.operamini),k="placeholder"in b.createElement("input")&&!j,l="placeholder"in b.createElement("textarea")&&!j,m=c.fn,n=c.valHooks,o=c.propHooks;k&&l?(i=m.placeholder=function(){return this},i.input=i.textarea=!0):(i=m.placeholder=function(){var a=this;return a.filter((k?"textarea":":input")+"[placeholder]").not(".placeholder").bind({"focus.placeholder":e,"blur.placeholder":f}).data("placeholder-enabled",!0).trigger("blur.placeholder"),a},i.input=k,i.textarea=l,h={get:function(a){var b=c(a),d=b.data("placeholder-password");return d?d[0].value:b.data("placeholder-enabled")&&b.hasClass("placeholder")?"":a.value},set:function(a,b){var d=c(a),h=d.data("placeholder-password");return h?h[0].value=b:d.data("placeholder-enabled")?(""==b?(a.value=b,a!=g()&&f.call(a)):d.hasClass("placeholder")?e.call(a,!0,b)||(a.value=b):a.value=b,d):a.value=b}},k||(n.input=h,o.value=h),l||(n.textarea=h,o.value=h),c(function(){c(b).delegate("form","submit.placeholder",function(){var a=c(".placeholder",this).each(e);setTimeout(function(){a.each(f)},10)})}),c(a).bind("beforeunload.placeholder",function(){c(".placeholder").each(function(){this.value=""})}))}(this,document,jQuery);
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "foundation-essential",
|
||||
"filename": "js/foundation.min.js",
|
||||
"version": "5.4.6",
|
||||
"version": "5.4.7",
|
||||
"description": "Slimmed-down build of ZURB Foundation.",
|
||||
"homepage": "http://foundation.zurb.com",
|
||||
"keywords": [
|
||||
|
||||
Reference in New Issue
Block a user