summaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
Diffstat (limited to 'js')
-rw-r--r--js/functions.js90
-rw-r--r--js/html5.js8
-rw-r--r--js/theme-customizer.js40
3 files changed, 138 insertions, 0 deletions
diff --git a/js/functions.js b/js/functions.js
new file mode 100644
index 0000000..78c8c84
--- /dev/null
+++ b/js/functions.js
@@ -0,0 +1,90 @@
+/**
+ * Functionality specific to Twenty Thirteen.
+ *
+ * Provides helper functions to enhance the theme experience.
+ */
+
+( function( $ ) {
+ var body = $( 'body' ),
+ _window = $( window );
+
+ /**
+ * Adds a top margin to the footer if the sidebar widget area is higher
+ * than the rest of the page, to help the footer always visually clear
+ * the sidebar.
+ */
+ $( function() {
+ if ( body.is( '.sidebar' ) ) {
+ var sidebar = $( '#secondary .widget-area' ),
+ secondary = ( 0 === sidebar.length ) ? -40 : sidebar.height(),
+ margin = $( '#tertiary .widget-area' ).height() - $( '#content' ).height() - secondary;
+
+ if ( margin > 0 && _window.innerWidth() > 999 ) {
+ $( '#colophon' ).css( 'margin-top', margin + 'px' );
+ }
+ }
+ } );
+
+ /**
+ * Enables menu toggle for small screens.
+ */
+ ( function() {
+ var nav = $( '#site-navigation' ), button, menu;
+ if ( ! nav ) {
+ return;
+ }
+
+ button = nav.find( '.menu-toggle' );
+ if ( ! button ) {
+ return;
+ }
+
+ // Hide button if menu is missing or empty.
+ menu = nav.find( '.nav-menu' );
+ if ( ! menu || ! menu.children().length ) {
+ button.hide();
+ return;
+ }
+
+ button.on( 'click.twentythirteen', function() {
+ nav.toggleClass( 'toggled-on' );
+ } );
+
+ // Better focus for hidden submenu items for accessibility.
+ menu.find( 'a' ).on( 'focus.twentythirteen blur.twentythirteen', function() {
+ $( this ).parents( '.menu-item, .page_item' ).toggleClass( 'focus' );
+ } );
+ } )();
+
+ /**
+ * Makes "skip to content" link work correctly in IE9 and Chrome for better
+ * accessibility.
+ *
+ * @link http://www.nczonline.net/blog/2013/01/15/fixing-skip-to-content-links/
+ */
+ _window.on( 'hashchange.twentythirteen', function() {
+ var element = document.getElementById( location.hash.substring( 1 ) );
+
+ if ( element ) {
+ if ( ! /^(?:a|select|input|button|textarea)$/i.test( element.tagName ) ) {
+ element.tabIndex = -1;
+ }
+
+ element.focus();
+ }
+ } );
+
+ /**
+ * Arranges footer widgets vertically.
+ */
+ if ( $.isFunction( $.fn.masonry ) ) {
+ var columnWidth = body.is( '.sidebar' ) ? 228 : 245;
+
+ $( '#secondary .widget-area' ).masonry( {
+ itemSelector: '.widget',
+ columnWidth: columnWidth,
+ gutterWidth: 20,
+ isRTL: body.is( '.rtl' )
+ } );
+ }
+} )( jQuery ); \ No newline at end of file
diff --git a/js/html5.js b/js/html5.js
new file mode 100644
index 0000000..6168aac
--- /dev/null
+++ b/js/html5.js
@@ -0,0 +1,8 @@
+/*
+ HTML5 Shiv v3.7.0 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
+*/
+(function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag();
+a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/[\w\-]+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x<style>article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}</style>";
+c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="<xyz></xyz>";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode||
+"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:"3.7.0",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f);
+if(g)return a.createDocumentFragment();for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d<h;d++)c.createElement(e[d]);return c}};l.html5=e;q(f)})(this,document); \ No newline at end of file
diff --git a/js/theme-customizer.js b/js/theme-customizer.js
new file mode 100644
index 0000000..640db0f
--- /dev/null
+++ b/js/theme-customizer.js
@@ -0,0 +1,40 @@
+/**
+ * Theme Customizer enhancements for a better user experience.
+ *
+ * Contains handlers to make Theme Customizer preview reload changes asynchronously.
+ * Things like site title and description changes.
+ */
+
+( function( $ ) {
+ // Site title and description.
+ wp.customize( 'blogname', function( value ) {
+ value.bind( function( to ) {
+ $( '.site-title' ).text( to );
+ } );
+ } );
+ wp.customize( 'blogdescription', function( value ) {
+ value.bind( function( to ) {
+ $( '.site-description' ).text( to );
+ } );
+ } );
+ // Header text color.
+ wp.customize( 'header_textcolor', function( value ) {
+ value.bind( function( to ) {
+ if ( 'blank' == to ) {
+ if ( 'remove-header' == _wpCustomizeSettings.values.header_image )
+ $( '.home-link' ).css( 'min-height', '0' );
+ $( '.site-title, .site-description' ).css( {
+ 'clip': 'rect(1px, 1px, 1px, 1px)',
+ 'position': 'absolute'
+ } );
+ } else {
+ $( '.home-link' ).css( 'min-height', '230px' );
+ $( '.site-title, .site-description' ).css( {
+ 'clip': 'auto',
+ 'color': to,
+ 'position': 'relative'
+ } );
+ }
+ } );
+ } );
+} )( jQuery );