Skip to content

Commit e16b91e

Browse files
michallepickijosevalim
authored andcommitted
Add a versions dropdown to the html sidebar (elixir-lang#970)
1 parent 860a231 commit e16b91e

File tree

14 files changed

+143
-15
lines changed

14 files changed

+143
-15
lines changed

assets/js/app.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import showSummary from './template-helpers/showSummary'
2525

2626
import {initialize as initEvents} from './events'
2727
import {initialize as initSidebar} from './sidebar'
28+
import {initialize as initVersions} from './versions'
2829
import {initialize as initNightMode} from './night'
2930
import {initialize as initMakeup} from './makeup'
3031

@@ -57,6 +58,7 @@ $(() => {
5758

5859
initNightMode()
5960
initSidebar()
61+
initVersions()
6062
initEvents()
6163
initMakeup()
6264
hljs.initHighlighting()
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<form autocomplete="off">
2+
<select class="sidebar-projectVersionsDropdown">
3+
{{#each nodes}}
4+
<option value="{{url}}"{{#if isCurrentVersion}} selected disabled{{/if}}>
5+
{{version}}
6+
</option>
7+
{{/each}}
8+
</select>
9+
</form>

assets/js/versions.js

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
// sidebar versions dropdown
2+
/* globals versionNodes */
3+
4+
// Dependencies
5+
// ------------
6+
import $ from 'jquery'
7+
import find from 'lodash.find'
8+
import versionsTemplate from './templates/versions-dropdown.handlebars'
9+
10+
// Local Variables
11+
// ---------------
12+
13+
const sidebarProjectVersion = $('.sidebar-projectVersion')
14+
const currentVersion = sidebarProjectVersion.text().trim()
15+
16+
// Local Methods
17+
// -------------
18+
19+
function addCurrentVersionIfNotPresent () {
20+
if (!find(versionNodes, function (element) { return element.version === currentVersion })) {
21+
versionNodes.unshift({ version: currentVersion, url: '#' })
22+
}
23+
}
24+
25+
function addIsCurrentVersion (element) {
26+
element.isCurrentVersion = element.version === currentVersion
27+
return element
28+
}
29+
30+
// Public Methods
31+
// --------------
32+
33+
export function initialize () {
34+
if (typeof versionNodes !== 'undefined') {
35+
addCurrentVersionIfNotPresent()
36+
37+
let versionsDropdown = versionsTemplate({nodes: versionNodes.map(addIsCurrentVersion)})
38+
sidebarProjectVersion.text('')
39+
sidebarProjectVersion.append(versionsDropdown)
40+
41+
$('.sidebar-projectVersionsDropdown').change(function () {
42+
window.location.href = $(this).val()
43+
})
44+
}
45+
}

assets/less/sidebar.less

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
}
3636
}
3737

38-
.sidebar-projectLink {
38+
.sidebar-header {
3939
margin: 18px 30px 0;
4040
}
4141

@@ -66,6 +66,7 @@
6666
}
6767

6868
.sidebar-projectVersion {
69+
position: relative;
6970
margin: 0;
7071
padding: 0;
7172
font-weight: 300;
@@ -74,6 +75,34 @@
7475
color: @white;
7576
}
7677

78+
.sidebar-projectVersionsDropdown {
79+
cursor: pointer;
80+
margin: 0;
81+
padding: 0 8px 0 0;
82+
border: none;
83+
-moz-appearance: none;
84+
-webkit-appearance: none;
85+
appearance: none;
86+
background-color: transparent;
87+
color: @white;
88+
option {
89+
color: initial;
90+
}
91+
}
92+
93+
.sidebar-projectVersion form::after {
94+
position: absolute;
95+
right: 0;
96+
top: 0;
97+
content: '\25BC';
98+
z-index: -1;
99+
font-size: 9px;
100+
}
101+
102+
.sidebar-projectVersionsDropdown::-ms-expand {
103+
display: none;
104+
}
105+
77106
.sidebar-listNav {
78107
padding: 10px 30px 20px 30px;
79108
margin: 0;

formatters/epub/dist/epub-a84049b89018916e0043.js renamed to formatters/epub/dist/epub-7b73f2ed8c1683aa4f8b.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

formatters/html/dist/html-17f11fce3c17ca7c2e4e.css

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

formatters/html/dist/html-fe10831fd0480024873d.js renamed to formatters/html/dist/html-17f11fce3c17ca7c2e4e.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

formatters/html/dist/html-fe10831fd0480024873d.css

Lines changed: 0 additions & 3 deletions
This file was deleted.

lib/ex_doc/config.ex

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ defmodule ExDoc.Config do
3030
groups_for_modules: [],
3131
groups_for_functions: [],
3232
homepage_url: nil,
33+
javascript_config_path: "config.js",
3334
language: "en",
3435
logo: nil,
3536
main: nil,
@@ -59,6 +60,7 @@ defmodule ExDoc.Config do
5960
filter_prefix: nil | String.t(),
6061
formatter: nil | String.t(),
6162
homepage_url: nil | String.t(),
63+
javascript_config_path: nil | String.t(),
6264
language: String.t(),
6365
logo: nil | Path.t(),
6466
main: nil | String.t(),

0 commit comments

Comments
 (0)