mirror of
https://github.com/readthedocs/sphinx_rtd_theme.git
synced 2025-02-25 18:55:21 -06:00
Merge branch 'master' into fix-273
This commit is contained in:
commit
83c64a5df8
16
Gemfile.lock
16
Gemfile.lock
@ -1,16 +0,0 @@
|
|||||||
GEM
|
|
||||||
remote: https://rubygems.org/
|
|
||||||
specs:
|
|
||||||
chunky_png (1.2.9)
|
|
||||||
compass (0.12.2)
|
|
||||||
chunky_png (~> 1.2)
|
|
||||||
fssm (>= 0.2.7)
|
|
||||||
sass (~> 3.1)
|
|
||||||
fssm (0.2.10)
|
|
||||||
sass (3.2.12)
|
|
||||||
|
|
||||||
PLATFORMS
|
|
||||||
ruby
|
|
||||||
|
|
||||||
DEPENDENCIES
|
|
||||||
compass
|
|
23
Gruntfile.js
23
Gruntfile.js
@ -111,7 +111,26 @@ module.exports = function(grunt) {
|
|||||||
dest: 'sphinx_rtd_theme/static/js/theme.js'
|
dest: 'sphinx_rtd_theme/static/js/theme.js'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
uglify: {
|
||||||
|
dist: {
|
||||||
|
options: {
|
||||||
|
sourceMap: false,
|
||||||
|
mangle: {
|
||||||
|
reserved: ['jQuery'] // Leave 'jQuery' identifier unchanged
|
||||||
|
},
|
||||||
|
ie8: true // compliance with IE 6-8 quirks
|
||||||
|
},
|
||||||
|
files: [{
|
||||||
|
expand: true,
|
||||||
|
src: ['sphinx_rtd_theme/static/js/*.js', '!sphinx_rtd_theme/static/js/*.min.js'],
|
||||||
|
dest: 'sphinx_rtd_theme/static/js/',
|
||||||
|
rename: function (dst, src) {
|
||||||
|
// Use unminified file name for minified file
|
||||||
|
return src;
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
},
|
||||||
exec: {
|
exec: {
|
||||||
bower_update: {
|
bower_update: {
|
||||||
cmd: 'bower update'
|
cmd: 'bower update'
|
||||||
@ -162,5 +181,5 @@ module.exports = function(grunt) {
|
|||||||
grunt.loadNpmTasks('grunt-browserify');
|
grunt.loadNpmTasks('grunt-browserify');
|
||||||
|
|
||||||
grunt.registerTask('default', ['exec:bower_update','clean','copy:fonts','sass:dev','browserify:dev','exec:build_sphinx','connect','open','watch']);
|
grunt.registerTask('default', ['exec:bower_update','clean','copy:fonts','sass:dev','browserify:dev','exec:build_sphinx','connect','open','watch']);
|
||||||
grunt.registerTask('build', ['exec:bower_update','clean','copy:fonts','sass:build','browserify:build','exec:build_sphinx']);
|
grunt.registerTask('build', ['exec:bower_update','clean','copy:fonts','sass:build','browserify:build','uglify','exec:build_sphinx']);
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
.. _readthedocs.org: http://www.readthedocs.org
|
.. _readthedocs.org: http://www.readthedocs.org
|
||||||
.. _bower: http://www.bower.io
|
.. _bower: http://www.bower.io
|
||||||
.. _sphinx: http://www.sphinx-doc.org
|
.. _sphinx: http://www.sphinx-doc.org
|
||||||
.. _compass: http://www.compass-style.org
|
|
||||||
.. _sass: http://www.sass-lang.com
|
.. _sass: http://www.sass-lang.com
|
||||||
.. _wyrm: http://www.github.com/snide/wyrm/
|
.. _wyrm: http://www.github.com/snide/wyrm/
|
||||||
.. _grunt: http://www.gruntjs.com
|
.. _grunt: http://www.gruntjs.com
|
||||||
|
58
js/theme.js
58
js/theme.js
@ -114,36 +114,40 @@ function ThemeNav () {
|
|||||||
|
|
||||||
nav.reset = function () {
|
nav.reset = function () {
|
||||||
// Get anchor from URL and open up nested nav
|
// Get anchor from URL and open up nested nav
|
||||||
var anchor = encodeURI(window.location.hash);
|
var anchor = encodeURI(window.location.hash) || '#';
|
||||||
if (anchor) {
|
|
||||||
try {
|
try {
|
||||||
var link = $('.wy-menu-vertical')
|
var link = $('.wy-menu-vertical')
|
||||||
.find('[href="' + anchor + '"]');
|
.find('[href="' + anchor + '"]');
|
||||||
// If we didn't find a link, it may be because we clicked on
|
// If we didn't find a link, it may be because we clicked on
|
||||||
// something that is not in the sidebar (eg: when using
|
// something that is not in the sidebar (eg: when using
|
||||||
// sphinxcontrib.httpdomain it generates headerlinks but those
|
// sphinxcontrib.httpdomain it generates headerlinks but those
|
||||||
// aren't picked up and placed in the toctree). So let's find
|
// aren't picked up and placed in the toctree). So let's find
|
||||||
// the closest header in the document and try with that one.
|
// the closest header in the document and try with that one.
|
||||||
if (link.length === 0) {
|
if (link.length === 0) {
|
||||||
var doc_link = $('.document a[href="' + anchor + '"]');
|
var doc_link = $('.document a[href="' + anchor + '"]');
|
||||||
var closest_section = doc_link.closest('div.section');
|
var closest_section = doc_link.closest('div.section');
|
||||||
// Try again with the closest section entry.
|
// Try again with the closest section entry.
|
||||||
link = $('.wy-menu-vertical')
|
link = $('.wy-menu-vertical')
|
||||||
.find('[href="#' + closest_section.attr("id") + '"]');
|
.find('[href="#' + closest_section.attr("id") + '"]');
|
||||||
}
|
|
||||||
// If we found a matching link then reset current and re-apply
|
|
||||||
// otherwise retain the existing match
|
|
||||||
if (link.length > 0) {
|
|
||||||
$('.wy-menu-vertical li.toctree-l1 li.current').removeClass('current');
|
|
||||||
link.closest('li.toctree-l2').addClass('current');
|
|
||||||
link.closest('li.toctree-l3').addClass('current');
|
|
||||||
link.closest('li.toctree-l4').addClass('current');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch (err) {
|
// If we found a matching link then reset current and re-apply
|
||||||
console.log("Error expanding nav for anchor", err);
|
// otherwise retain the existing match
|
||||||
|
if (link.length > 0) {
|
||||||
|
$('.wy-menu-vertical .current').removeClass('current');
|
||||||
|
link.addClass('current');
|
||||||
|
link.closest('li.toctree-l1').addClass('current');
|
||||||
|
link.closest('li.toctree-l1').parent().addClass('current');
|
||||||
|
link.closest('li.toctree-l1').addClass('current');
|
||||||
|
link.closest('li.toctree-l2').addClass('current');
|
||||||
|
link.closest('li.toctree-l3').addClass('current');
|
||||||
|
link.closest('li.toctree-l4').addClass('current');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
catch (err) {
|
||||||
|
console.log("Error expanding nav for anchor", err);
|
||||||
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
nav.onScroll = function () {
|
nav.onScroll = function () {
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
"grunt-contrib-connect": "^1.0.2",
|
"grunt-contrib-connect": "^1.0.2",
|
||||||
"grunt-contrib-copy": "~1.0.0",
|
"grunt-contrib-copy": "~1.0.0",
|
||||||
"grunt-contrib-sass": "~1.0.0",
|
"grunt-contrib-sass": "~1.0.0",
|
||||||
|
"grunt-contrib-uglify": "~3.3.0",
|
||||||
"grunt-contrib-watch": "~1.0.0",
|
"grunt-contrib-watch": "~1.0.0",
|
||||||
"grunt-exec": "~1.0.1",
|
"grunt-exec": "~1.0.1",
|
||||||
"grunt-open": "0.2.3",
|
"grunt-open": "0.2.3",
|
||||||
|
@ -78,8 +78,6 @@
|
|||||||
position: relative
|
position: relative
|
||||||
background: $menu-vertical-background-color
|
background: $menu-vertical-background-color
|
||||||
border: none
|
border: none
|
||||||
border-bottom: solid 1px darken($menu-vertical-background-color, 20%)
|
|
||||||
border-top: solid 1px darken($menu-vertical-background-color, 20%)
|
|
||||||
padding-left: $gutter -4px
|
padding-left: $gutter -4px
|
||||||
+font-smooth
|
+font-smooth
|
||||||
&:hover
|
&:hover
|
||||||
@ -94,6 +92,10 @@
|
|||||||
line-height: 1.6em
|
line-height: 1.6em
|
||||||
color: darken($menu-link-medium, 30%)
|
color: darken($menu-link-medium, 30%)
|
||||||
|
|
||||||
|
li.toctree-l1.current > a
|
||||||
|
border-bottom: solid 1px darken($menu-vertical-background-color, 20%)
|
||||||
|
border-top: solid 1px darken($menu-vertical-background-color, 20%)
|
||||||
|
|
||||||
// This is the on state for pages beyond second level
|
// This is the on state for pages beyond second level
|
||||||
li.toctree-l1.current li.toctree-l2, li.toctree-l2.current li.toctree-l3
|
li.toctree-l1.current li.toctree-l2, li.toctree-l2.current li.toctree-l3
|
||||||
> ul
|
> ul
|
||||||
@ -123,8 +125,6 @@
|
|||||||
display: block
|
display: block
|
||||||
background: darken($menu-vertical-background-color, 25%)
|
background: darken($menu-vertical-background-color, 25%)
|
||||||
padding: $gutter / 4 $gutter * 3.5
|
padding: $gutter / 4 $gutter * 3.5
|
||||||
border-top: none
|
|
||||||
border-bottom: none
|
|
||||||
a:hover span.toctree-expand
|
a:hover span.toctree-expand
|
||||||
color: $menu-link-medium
|
color: $menu-link-medium
|
||||||
span.toctree-expand
|
span.toctree-expand
|
||||||
@ -247,9 +247,7 @@
|
|||||||
|
|
||||||
|
|
||||||
.wy-body-for-nav
|
.wy-body-for-nav
|
||||||
background: left repeat-y $section-background-color
|
background: $section-background-color
|
||||||
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxOERBMTRGRDBFMUUxMUUzODUwMkJCOThDMEVFNURFMCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxOERBMTRGRTBFMUUxMUUzODUwMkJCOThDMEVFNURFMCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjE4REExNEZCMEUxRTExRTM4NTAyQkI5OEMwRUU1REUwIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjE4REExNEZDMEUxRTExRTM4NTAyQkI5OEMwRUU1REUwIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+EwrlwAAAAA5JREFUeNpiMDU0BAgwAAE2AJgB9BnaAAAAAElFTkSuQmCC)
|
|
||||||
background-size: $nav-desktop-width 1px
|
|
||||||
|
|
||||||
.wy-grid-for-nav
|
.wy-grid-for-nav
|
||||||
position: absolute
|
position: absolute
|
||||||
|
@ -23,6 +23,8 @@
|
|||||||
margin-bottom: $base-line-height
|
margin-bottom: $base-line-height
|
||||||
p.caption
|
p.caption
|
||||||
font-style: italic
|
font-style: italic
|
||||||
|
p:last-child.caption
|
||||||
|
margin-bottom: 0px
|
||||||
|
|
||||||
div.figure.align-center
|
div.figure.align-center
|
||||||
text-align: center
|
text-align: center
|
||||||
|
@ -33,50 +33,47 @@
|
|||||||
{# OPENSEARCH #}
|
{# OPENSEARCH #}
|
||||||
{% if not embedded %}
|
{% if not embedded %}
|
||||||
{% if use_opensearch %}
|
{% if use_opensearch %}
|
||||||
<link rel="search" type="application/opensearchdescription+xml" title="{% trans docstitle=docstitle|e %}Search within {{ docstitle }}{% endtrans %}" href="{{ pathto('_static/opensearch.xml', 1) }}"/>
|
<link rel="search" type="application/opensearchdescription+xml"
|
||||||
|
title="{% trans docstitle=docstitle|e %}Search within {{ docstitle }}{% endtrans %}"
|
||||||
|
href="{{ pathto('_static/opensearch.xml', 1) }}"/>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{# RTD hosts this file, so just load on non RTD builds #}
|
{# RTD hosts this file, so just load on non RTD builds #}
|
||||||
{% if not READTHEDOCS %}
|
{%- if not READTHEDOCS %}
|
||||||
<link rel="stylesheet" href="{{ pathto('_static/' + style, 1) }}" type="text/css" />
|
<link rel="stylesheet" href="{{ pathto('_static/' + style, 1) }}" type="text/css" />
|
||||||
{% endif %}
|
{%- endif %}
|
||||||
|
|
||||||
<link rel="stylesheet" href="{{ pathto('_static/pygments.css', 1) }}" type="text/css" />
|
<link rel="stylesheet" href="{{ pathto('_static/pygments.css', 1) }}" type="text/css" />
|
||||||
|
{%- for css in css_files %}
|
||||||
{% for cssfile in css_files %}
|
{%- if css|attr("rel") %}
|
||||||
|
<link rel="{{ css.rel }}" href="{{ pathto(css.filename, 1) }}" type="text/css"{% if css.title is not none %} title="{{ css.title }}"{% endif %} />
|
||||||
|
{%- else %}
|
||||||
|
<link rel="stylesheet" href="{{ pathto(css, 1) }}" type="text/css" />
|
||||||
|
{%- endif %}
|
||||||
|
{%- endfor %}
|
||||||
|
{%- for cssfile in extra_css_files %}
|
||||||
<link rel="stylesheet" href="{{ pathto(cssfile, 1) }}" type="text/css" />
|
<link rel="stylesheet" href="{{ pathto(cssfile, 1) }}" type="text/css" />
|
||||||
{% endfor %}
|
{%- endfor %}
|
||||||
|
|
||||||
{% for cssfile in extra_css_files %}
|
|
||||||
<link rel="stylesheet" href="{{ pathto(cssfile, 1) }}" type="text/css" />
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
{%- block linktags %}
|
{%- block linktags %}
|
||||||
{%- if hasdoc('about') %}
|
{%- if hasdoc('about') %}
|
||||||
<link rel="author" title="{{ _('About these documents') }}"
|
<link rel="author" title="{{ _('About these documents') }}" href="{{ pathto('about') }}" />
|
||||||
href="{{ pathto('about') }}"/>
|
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
{%- if hasdoc('genindex') %}
|
{%- if hasdoc('genindex') %}
|
||||||
<link rel="index" title="{{ _('Index') }}"
|
<link rel="index" title="{{ _('Index') }}" href="{{ pathto('genindex') }}" />
|
||||||
href="{{ pathto('genindex') }}"/>
|
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
{%- if hasdoc('search') %}
|
{%- if hasdoc('search') %}
|
||||||
<link rel="search" title="{{ _('Search') }}" href="{{ pathto('search') }}"/>
|
<link rel="search" title="{{ _('Search') }}" href="{{ pathto('search') }}" />
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
{%- if hasdoc('copyright') %}
|
{%- if hasdoc('copyright') %}
|
||||||
<link rel="copyright" title="{{ _('Copyright') }}" href="{{ pathto('copyright') }}"/>
|
<link rel="copyright" title="{{ _('Copyright') }}" href="{{ pathto('copyright') }}" />
|
||||||
{%- endif %}
|
|
||||||
<link rel="top" title="{{ docstitle|e }}" href="{{ pathto('index') }}"/>
|
|
||||||
{%- if parents %}
|
|
||||||
<link rel="up" title="{{ parents[-1].title|striptags|e }}" href="{{ parents[-1].link|e }}"/>
|
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
{%- if next %}
|
{%- if next %}
|
||||||
<link rel="next" title="{{ next.title|striptags|e }}" href="{{ next.link|e }}"/>
|
<link rel="next" title="{{ next.title|striptags|e }}" href="{{ next.link|e }}" />
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
{%- if prev %}
|
{%- if prev %}
|
||||||
<link rel="prev" title="{{ prev.title|striptags|e }}" href="{{ prev.link|e }}"/>
|
<link rel="prev" title="{{ prev.title|striptags|e }}" href="{{ prev.link|e }}" />
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
{%- endblock %}
|
{%- endblock %}
|
||||||
{%- block extrahead %} {% endblock %}
|
{%- block extrahead %} {% endblock %}
|
||||||
@ -86,7 +83,7 @@
|
|||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="wy-body-for-nav" role="document">
|
<body class="wy-body-for-nav">
|
||||||
|
|
||||||
{% block extrabody %} {% endblock %}
|
{% block extrabody %} {% endblock %}
|
||||||
<div class="wy-grid-for-nav">
|
<div class="wy-grid-for-nav">
|
||||||
@ -104,8 +101,10 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if logo %}
|
{% if logo %}
|
||||||
{# Not strictly valid HTML, but it's the only way to display/scale it properly, without weird scripting or heaps of work #}
|
{# Not strictly valid HTML, but it's the only way to display/scale
|
||||||
<img src="{{ pathto('_static/' + logo, 1) }}" class="logo" />
|
it properly, without weird scripting or heaps of work
|
||||||
|
#}
|
||||||
|
<img src="{{ pathto('_static/' + logo, 1) }}" class="logo" alt="Logo"/>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
@ -152,7 +151,7 @@
|
|||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||||
|
|
||||||
{# MOBILE NAV, TRIGGLES SIDE NAV ON TOGGLE #}
|
{# MOBILE NAV, TRIGGLES SIDE NAV ON TOGGLE #}
|
||||||
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
|
<nav class="wy-nav-top" aria-label="top navigation">
|
||||||
{% block mobile_nav %}
|
{% block mobile_nav %}
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||||
<a href="{{ pathto(master_doc) }}">{{ project }}</a>
|
<a href="{{ pathto(master_doc) }}">{{ project }}</a>
|
||||||
|
Loading…
Reference in New Issue
Block a user