Skip to content

Commit 8e776c9

Browse files
committed
tweak script
1 parent d41ac0b commit 8e776c9

File tree

1 file changed

+63
-44
lines changed

1 file changed

+63
-44
lines changed

themes/vue/source/js/common.js

Lines changed: 63 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,76 @@
11
(function () {
22

3+
initSearch()
4+
initMobileMenu()
35
if (PAGE_TYPE) {
4-
initSubHeaders()
56
initVersionSelect()
7+
initSubHeaders()
68
}
7-
initSearch()
89

9-
function initSubHeaders () {
10-
var each = [].forEach
11-
var main = document.getElementById('main')
12-
var doc = document.documentElement
13-
var body = document.body
14-
var header = document.getElementById('header')
15-
var menu = document.querySelector('.sidebar')
16-
var content = document.querySelector('.content')
17-
var mobileBar = document.getElementById('mobile-bar')
10+
/**
11+
* Swiftype search box
12+
*/
13+
14+
function initSearch () {
15+
(function(w,d,t,u,n,s,e){w['SwiftypeObject']=n;w[n]=w[n]||function(){
16+
(w[n].q=w[n].q||[]).push(arguments);};s=d.createElement(t);
17+
e=d.getElementsByTagName(t)[0];s.async=1;s.src=u;e.parentNode.insertBefore(s,e);
18+
})(window,document,'script','//s.swiftypecdn.com/install/v2/st.js','_st');
19+
20+
_st('install','HgpxvBc7pUaPUWmG9sgv','2.0.0');
21+
}
22+
23+
/**
24+
* Mobile burger menu button for toggling sidebar
25+
*/
1826

27+
function initMobileMenu () {
28+
var mobileBar = document.getElementById('mobile-bar')
29+
var sidebar = document.querySelector('.sidebar')
1930
var menuButton = mobileBar.querySelector('.menu-button')
31+
2032
menuButton.addEventListener('click', function () {
21-
menu.classList.toggle('open')
33+
sidebar.classList.toggle('open')
2234
})
2335

24-
body.addEventListener('click', function (e) {
25-
if (e.target !== menuButton && !menu.contains(e.target)) {
26-
menu.classList.remove('open')
36+
document.body.addEventListener('click', function (e) {
37+
if (e.target !== menuButton && !sidebar.contains(e.target)) {
38+
sidebar.classList.remove('open')
39+
}
40+
})
41+
}
42+
43+
/**
44+
* Doc version select
45+
*/
46+
47+
function initVersionSelect () {
48+
// version select
49+
document.querySelector('.version-select').addEventListener('change', function (e) {
50+
var version = e.target.value
51+
if (version.indexOf('1.') !== 0) {
52+
version = version.replace('.', '')
53+
var section = window.location.pathname.match(/\/(\w+?)\//)[1]
54+
window.location.assign('http://' + version + '.vuejs.org/' + section + '/')
55+
} else {
56+
// TODO when 1.x is out
2757
}
2858
})
59+
}
60+
61+
/**
62+
* Sub headers in sidebar
63+
*/
64+
65+
function initSubHeaders () {
66+
var each = [].forEach
67+
var main = document.getElementById('main')
68+
var header = document.getElementById('header')
69+
var sidebar = document.querySelector('.sidebar')
70+
var content = document.querySelector('.content')
2971

3072
// build sidebar
31-
var currentPageAnchor = menu.querySelector('.sidebar-link.current')
73+
var currentPageAnchor = sidebar.querySelector('.sidebar-link.current')
3274
var isAPI = document.querySelector('.content').classList.contains('api')
3375
if (currentPageAnchor || isAPI) {
3476
var allHeaders = []
@@ -63,7 +105,7 @@
63105
sectionContainer.addEventListener('click', function (e) {
64106
e.preventDefault()
65107
if (e.target.classList.contains('section-link')) {
66-
menu.classList.remove('open')
108+
sidebar.classList.remove('open')
67109
setActive(e.target)
68110
animating = true
69111
setTimeout(function () {
@@ -89,7 +131,8 @@
89131
window.addEventListener('resize', updateSidebar)
90132

91133
function updateSidebar () {
92-
var top = doc && doc.scrollTop || body.scrollTop
134+
var doc = document.documentElement
135+
var top = doc && doc.scrollTop || document.body.scrollTop
93136
var headerHeight = header.offsetHeight
94137
if (top > headerHeight) {
95138
main.className = 'fix-sidebar'
@@ -149,9 +192,9 @@
149192
}
150193

151194
function setActive (id) {
152-
var previousActive = menu.querySelector('.section-link.active')
195+
var previousActive = sidebar.querySelector('.section-link.active')
153196
var currentActive = typeof id === 'string'
154-
? menu.querySelector('.section-link[href="#' + id + '"]')
197+
? sidebar.querySelector('.section-link[href="#' + id + '"]')
155198
: id
156199
if (currentActive !== previousActive) {
157200
if (previousActive) previousActive.classList.remove('active')
@@ -167,28 +210,4 @@
167210
wrapper.appendChild(link)
168211
}
169212
}
170-
171-
function initVersionSelect () {
172-
// version select
173-
document.querySelector('.version-select').addEventListener('change', function (e) {
174-
var version = e.target.value
175-
if (version.indexOf('1.') !== 0) {
176-
version = version.replace('.', '')
177-
var section = window.location.pathname.match(/\/(\w+?)\//)[1]
178-
window.location.assign('http://' + version + '.vuejs.org/' + section + '/')
179-
} else {
180-
// TODO when 1.x is out
181-
}
182-
})
183-
}
184-
185-
function initSearch () {
186-
// Search with SwiftType
187-
(function(w,d,t,u,n,s,e){w['SwiftypeObject']=n;w[n]=w[n]||function(){
188-
(w[n].q=w[n].q||[]).push(arguments);};s=d.createElement(t);
189-
e=d.getElementsByTagName(t)[0];s.async=1;s.src=u;e.parentNode.insertBefore(s,e);
190-
})(window,document,'script','//s.swiftypecdn.com/install/v2/st.js','_st');
191-
192-
_st('install','HgpxvBc7pUaPUWmG9sgv','2.0.0');
193-
}
194213
})()

0 commit comments

Comments
 (0)