Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
N
node-slate
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Nguyễn Hải Sơn
node-slate
Commits
324da17b
Commit
324da17b
authored
Jul 03, 2014
by
Robert Lord
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix bugs with toc not highlighting, begin search overhaul
parent
719061a6
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
168 additions
and
217 deletions
+168
-217
search.js
source/javascripts/app/search.js
+15
-67
toc.js
source/javascripts/app/toc.js
+1
-1
layout.erb
source/layouts/layout.erb
+1
-1
screen.css.scss
source/stylesheets/screen.css.scss
+151
-148
No files found.
source/javascripts/app/search.js
View file @
324da17b
(
function
(
global
)
{
var
$global
=
$
(
global
);
var
content
,
darkBox
,
search
Info
;
var
content
,
darkBox
,
search
Results
;
var
highlightOpts
=
{
element
:
'span'
,
className
:
'search-highlight'
};
var
index
=
new
lunr
.
Index
();
...
...
@@ -18,11 +18,6 @@
$
(
'h1'
).
each
(
function
()
{
var
title
=
$
(
this
);
var
body
=
title
.
nextUntil
(
'h1'
);
var
wrapper
=
$
(
'<section id="section-'
+
title
.
prop
(
'id'
)
+
'"></section>'
);
title
.
after
(
wrapper
.
append
(
body
));
wrapper
.
prepend
(
title
);
index
.
add
({
id
:
title
.
prop
(
'id'
),
title
:
title
.
text
(),
...
...
@@ -34,89 +29,42 @@
function
bind
()
{
content
=
$
(
'.content'
);
darkBox
=
$
(
'.dark-box'
);
search
Info
=
$
(
'.search-info
'
);
search
Results
=
$
(
'.search-results
'
);
$
(
'#input-search'
)
.
on
(
'keyup'
,
search
)
.
on
(
'focus'
,
active
)
.
on
(
'blur'
,
inactive
);
}
function
refToHeader
(
itemRef
)
{
return
$
(
'.tocify-item[data-unique='
+
itemRef
+
']'
).
closest
(
'.tocify-header'
);
}
function
sortDescending
(
obj2
,
obj1
)
{
var
s1
=
parseInt
(
obj1
.
id
.
replace
(
/
[^\d]
/g
,
''
),
10
);
var
s2
=
parseInt
(
obj2
.
id
.
replace
(
/
[^\d]
/g
,
''
),
10
);
return
s1
===
s2
?
0
:
s1
<
s2
?
-
1
:
1
;
}
function
resetHeaderLocations
()
{
var
headers
=
$
(
".tocify-header"
).
sort
(
sortDescending
);
$
.
each
(
headers
,
function
(
index
,
item
)
{
$
(
item
).
insertBefore
(
$
(
"#toc ul:first-child"
));
$
(
'#input-search'
).
on
(
'keyup'
,
function
(
e
)
{
if
(
$
(
this
).
val
()
===
""
)
{
inactive
(
e
);
}
else
{
search
(
e
);
}
});
}
function
search
(
event
)
{
var
sections
=
$
(
'section, #toc .tocify-header'
);
searchInfo
.
hide
();
unhighlight
();
searchResults
.
addClass
(
'visible'
);
// ESC clears the field
if
(
event
.
keyCode
===
27
)
this
.
value
=
''
;
if
(
this
.
value
)
{
sections
.
hide
();
// results are sorted by score in descending order
var
results
=
index
.
search
(
this
.
value
);
if
(
results
.
length
)
{
resetHeaderLocations
();
var
lastRef
;
$
.
each
(
results
,
function
(
index
,
item
)
{
if
(
item
.
score
<=
0.0001
)
return
;
// remove low-score results
var
itemRef
=
item
.
ref
;
$
(
'#section-'
+
itemRef
).
show
();
// headers must be repositioned in the DOM
var
closestHeader
=
refToHeader
(
itemRef
);
if
(
lastRef
)
{
refToHeader
(
lastRef
).
insertBefore
(
closestHeader
);
}
closestHeader
.
show
();
lastRef
=
itemRef
;
$
.
each
(
results
,
function
(
index
,
result
)
{
var
header
=
$
(
'.tocify-item[data-unique='
+
result
.
ref
+
']'
).
closest
(
'.tocify-header'
);
if
(
header
.
length
>
0
)
header
=
header
[
0
];
if
(
header
)
$
(
"#"
+
header
.
id
+
" li a"
).
append
(
"<span>"
+
result
.
score
+
"</span>"
);
});
// position first element. it wasn't positioned above if len > 1
if
(
results
.
length
>
1
)
{
var
firstRef
=
results
[
0
].
ref
;
var
secondRef
=
results
[
1
].
ref
;
refToHeader
(
firstRef
).
insertBefore
(
refToHeader
(
secondRef
));
}
highlight
.
call
(
this
);
}
else
{
sections
.
show
();
searchInfo
.
text
(
'No Results Found for "'
+
this
.
value
+
'"'
).
show
();
searchResults
.
text
(
'No Results Found for "'
+
this
.
value
+
'"'
).
show
();
}
}
else
{
sections
.
show
();
}
// HACK trigger tocify height recalculation
$global
.
triggerHandler
(
'scroll.tocify'
);
$global
.
triggerHandler
(
'resize'
);
}
function
active
()
{
search
.
call
(
this
,
{});
}
function
inactive
()
{
unhighlight
();
search
Info
.
hide
(
);
search
Results
.
removeClass
(
'visible'
);
}
function
highlight
()
{
...
...
source/javascripts/app/toc.js
View file @
324da17b
...
...
@@ -15,7 +15,7 @@
hideEffectSpeed
:
180
,
ignoreSelector
:
'.toc-ignore'
,
highlightOffset
:
60
,
scrollTo
:
-
2
,
scrollTo
:
-
1
,
scrollHistory
:
true
,
hashGenerator
:
function
(
text
,
element
)
{
return
element
.
prop
(
'id'
);
...
...
source/layouts/layout.erb
View file @
324da17b
...
...
@@ -64,7 +64,7 @@ under the License.
<div
class=
"search"
>
<input
type=
"text"
class=
"search"
id=
"input-search"
>
</div>
<div
class=
"search-
info
"
></div>
<div
class=
"search-
results
"
></div>
<%
end
%>
<div
id=
"toc"
>
</div>
...
...
source/stylesheets/screen.css.scss
View file @
324da17b
...
...
@@ -41,6 +41,13 @@ html, body {
// TABLE OF CONTENTS
////////////////////////////////////////////////////////////////////////////////
#toc
>
ul
>
li
>
a
>
span
{
float
:
right
;
background-color
:
#2484FF
;
border-radius
:
40px
;
width
:
20px
;
}
.tocify-wrapper
{
@include
transition
(
left
ease-in-out
0
.3s
);
overflow-y
:
auto
;
...
...
@@ -98,7 +105,7 @@ html, body {
margin-top
:
$logo-margin
;
}
.search-
info
{
.search-
results
{
margin-top
:
0
;
padding
:
1em
$nav-padding
;
font-size
:
0
.9em
;
...
...
@@ -303,187 +310,183 @@ html, body {
position
:
relative
;
z-index
:
30
;
&
,
section
{
padding-bottom
:
6em
;
&
:after
{
content
:
''
;
display
:
block
;
clear
:
both
;
}
&
:after
{
content
:
''
;
display
:
block
;
clear
:
both
;
}
&
>
h1
,
&
>
h2
,
&
>
h3
,
&
>
h4
,
&
>
h5
,
&
>
h6
,
&
>
p
,
&
>
table
,
&
>
ul
,
&
>
ol
,
&
>
aside
,
&
>
dl
{
margin-right
:
$examples-width
;
padding
:
0
$main-padding
;
@include
box-sizing
(
border-box
);
display
:
block
;
@include
text-shadow
(
$main-embossed-text-shadow
);
&
>
h1
,
&
>
h2
,
&
>
h3
,
&
>
h4
,
&
>
h5
,
&
>
h6
,
&
>
p
,
&
>
table
,
&
>
ul
,
&
>
ol
,
&
>
aside
,
&
>
dl
{
margin-right
:
$examples-width
;
padding
:
0
$main-padding
;
@include
box-sizing
(
border-box
);
display
:
block
;
@include
text-shadow
(
$main-embossed-text-shadow
);
@extend
%left-col
;
}
@extend
%left-col
;
}
&
>
ul
,
&
>
ol
{
padding-left
:
$main-padding
+
15px
;
}
&
>
ul
,
&
>
ol
{
padding-left
:
$main-padding
+
15px
;
}
// the div is the tocify hidden div for placeholding stuff
&
>
h1
,
&
>
h2
,
&
>
div
{
clear
:both
;
}
// the div is the tocify hidden div for placeholding stuff
&
>
h1
,
&
>
h2
,
&
>
div
{
clear
:both
;
}
h1
{
@extend
%header-font
;
font-size
:
30px
;
padding-top
:
0
.5em
;
padding-bottom
:
0
.5em
;
border-bottom
:
1px
solid
#ccc
;
margin-bottom
:
$h1-margin-bottom
;
margin-top
:
0
;
border-top
:
1px
solid
#ddd
;
@include
background-image
(
linear-gradient
(
top
,
#fff
,
#f9f9f9
)
);
}
h1
{
@extend
%header-font
;
font-size
:
30px
;
padding-top
:
0
.5em
;
padding-bottom
:
0
.5em
;
border-bottom
:
1px
solid
#ccc
;
margin-bottom
:
$h1-margin-bottom
;
margin-top
:
2em
;
border-top
:
1px
solid
#ddd
;
@include
background-image
(
linear-gradient
(
top
,
#fff
,
#f9f9f9
)
);
}
&
:first-child
{
h1
:first-child
,
div
:first-child
+
h1
{
border-top-width
:
0
;
}
}
h1
:first-child
,
div
:first-child
+
h1
{
border-top-width
:
0
;
margin-top
:
0
;
}
h2
{
@extend
%header-font
;
font-size
:
20px
;
margin-top
:
4em
;
margin-bottom
:
0
;
border-top
:
1px
solid
#ccc
;
padding-top
:
1
.2em
;
padding-bottom
:
1
.2em
;
@include
background-image
(
linear-gradient
(
top
,
rgba
(
#fff
,
0
.4
)
,
rgba
(
#fff
,
0
))
);
}
h2
{
@extend
%header-font
;
font-size
:
20px
;
margin-top
:
4em
;
margin-bottom
:
0
;
border-top
:
1px
solid
#ccc
;
padding-top
:
1
.2em
;
padding-bottom
:
1
.2em
;
@include
background-image
(
linear-gradient
(
top
,
rgba
(
#fff
,
0
.4
)
,
rgba
(
#fff
,
0
))
);
}
// h2s right after h1s should bump right up
// against the h1s.
h1
+
h2
,
h1
+
div
+
h2
{
margin-top
:
$h1-margin-bottom
*
-1
;
border-top
:
none
;
}
// h2s right after h1s should bump right up
// against the h1s.
h1
+
h2
,
h1
+
div
+
h2
{
margin-top
:
$h1-margin-bottom
*
-1
;
border-top
:
none
;
}
h3
,
h4
,
h5
,
h6
{
@extend
%header-font
;
font-size
:
12px
;
margin-top
:
2
.5em
;
margin-bottom
:
0
.8em
;
text-transform
:
uppercase
;
}
h3
,
h4
,
h5
,
h6
{
@extend
%header-font
;
font-size
:
12px
;
margin-top
:
2
.5em
;
margin-bottom
:
0
.8em
;
text-transform
:
uppercase
;
}
h4
,
h5
,
h6
{
font-size
:
10px
;
}
h4
,
h5
,
h6
{
font-size
:
10px
;
}
hr
{
margin
:
2em
0
;
border-top
:
2px
solid
$examples-bg
;
border-bottom
:
2px
solid
$main-bg
;
}
hr
{
margin
:
2em
0
;
border-top
:
2px
solid
$examples-bg
;
border-bottom
:
2px
solid
$main-bg
;
}
table
{
margin-bottom
:
1em
;
overflow
:
auto
;
th
,
td
{
text-align
:
left
;
vertical-align
:
top
;
line-height
:
1
.6
;
}
th
{
padding
:
5px
10px
;
border-bottom
:
1px
solid
#ccc
;
vertical-align
:
bottom
;
}
td
{
padding
:
10px
;
}
tr
:last-child
{
border-bottom
:
1px
solid
#ccc
;
}
tr
:nth-child
(
odd
)>
td
{
background-color
:
lighten
(
$main-bg
,
4
.2%
);
}
tr
:nth-child
(
even
)>
td
{
background-color
:
lighten
(
$main-bg
,
2
.4%
);
}
table
{
margin-bottom
:
1em
;
overflow
:
auto
;
th
,
td
{
text-align
:
left
;
vertical-align
:
top
;
line-height
:
1
.6
;
}
dt
{
font-weight
:
bold
;
th
{
padding
:
5px
10px
;
border-bottom
:
1px
solid
#ccc
;
vertical-align
:
bottom
;
}
d
d
{
margin-left
:
15
px
;
t
d
{
padding
:
10
px
;
}
p
,
li
,
dt
,
dd
{
line-height
:
1
.6
;
margin-top
:
0
;
tr
:last-child
{
border-bottom
:
1px
solid
#ccc
;
}
img
{
max-width
:
100%
;
tr
:nth-child
(
odd
)>
td
{
background-color
:
lighten
(
$main-bg
,
4
.2%
)
;
}
code
{
background-color
:
rgba
(
0
,
0
,
0
,
0
.05
);
padding
:
3px
;
border-radius
:
3px
;
@extend
%break-words
;
@extend
%code-font
;
tr
:nth-child
(
even
)>
td
{
background-color
:
lighten
(
$main-bg
,
2
.4%
);
}
}
aside
{
padding-top
:
1em
;
padding-bottom
:
1em
;
text-shadow
:
0
1px
0
lighten
(
$aside-notice-bg
,
15%
);
margin-top
:
1
.5em
;
margin-bottom
:
1
.5em
;
background
:
$aside-notice-bg
;
line-height
:
1
.6
;
dt
{
font-weight
:
bold
;
}
&
.warning
{
background-color
:
$aside-warning-bg
;
text-shadow
:
0
1px
0
lighten
(
$aside-warning-bg
,
15%
);
}
dd
{
margin-left
:
15px
;
}
&
.success
{
background-color
:
$aside-success-bg
;
text-shadow
:
0
1px
0
lighten
(
$aside-success-bg
,
15%
);
}
}
p
,
li
,
dt
,
dd
{
line-height
:
1
.6
;
margin-top
:
0
;
}
aside
:before
{
vertical-align
:
middle
;
padding-right
:
0
.5em
;
font-size
:
14px
;
}
img
{
max-width
:
100%
;
}
aside
.notice
:before
{
@extend
%icon-info-sign
;
}
code
{
background-color
:
rgba
(
0
,
0
,
0
,
0
.05
);
padding
:
3px
;
border-radius
:
3px
;
@extend
%break-words
;
@extend
%code-font
;
}
aside
{
padding-top
:
1em
;
padding-bottom
:
1em
;
text-shadow
:
0
1px
0
lighten
(
$aside-notice-bg
,
15%
);
margin-top
:
1
.5em
;
margin-bottom
:
1
.5em
;
background
:
$aside-notice-bg
;
line-height
:
1
.6
;
aside
.warning
:before
{
@extend
%icon-exclamation-sign
;
&
.warning
{
background-color
:
$aside-warning-bg
;
text-shadow
:
0
1px
0
lighten
(
$aside-warning-bg
,
15%
);
}
aside
.success
:before
{
@extend
%icon-ok-sign
;
&
.success
{
background-color
:
$aside-success-bg
;
text-shadow
:
0
1px
0
lighten
(
$aside-success-bg
,
15%
);
}
}
aside
:before
{
vertical-align
:
middle
;
padding-right
:
0
.5em
;
font-size
:
14px
;
}
aside
.notice
:before
{
@extend
%icon-info-sign
;
}
aside
.warning
:before
{
@extend
%icon-exclamation-sign
;
}
aside
.success
:before
{
@extend
%icon-ok-sign
;
}
.search-highlight
{
padding
:
2px
;
margin
:
-2px
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment