jekyll-theme-open-project 1.3.4 → 2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/README.md +67 -46
- data/_config.yml +8 -0
- data/_includes/_nav-item.html +9 -7
- data/_includes/external-link.html +59 -0
- data/_includes/featured_posts.html +11 -0
- data/_includes/featured_software.html +55 -0
- data/_includes/featured_specs.html +31 -0
- data/_includes/home-hero.html +12 -11
- data/_includes/home-hub.html +38 -44
- data/_includes/home-project.html +15 -113
- data/_includes/index-page-hero.html +0 -1
- data/_includes/item-doc-page.html +16 -14
- data/_includes/item-external-links.html +5 -81
- data/_includes/nav-links.html +7 -3
- data/_includes/nav-page-link.html +3 -2
- data/_layouts/default.html +6 -1
- data/_layouts/docs-base.html +0 -6
- data/_layouts/home.html +4 -0
- data/_sass/jekyll-theme-open-project.scss +167 -93
- data/_sass/open-project-base.scss +27 -3
- data/_sass/open-project-header-footer.scss +66 -97
- data/_sass/open-project-mixins.scss +111 -97
- data/assets/css/style.scss +1 -4
- data/assets/js/adoc-toc.js +52 -1
- metadata +11 -7
@@ -16,11 +16,11 @@
|
|
16
16
|
|
17
17
|
@mixin wide-container() {
|
18
18
|
@media screen and (min-width: $bigscreen-breakpoint) {
|
19
|
-
padding: 0;
|
20
|
-
width: $bigscreen-breakpoint - $gutter *
|
19
|
+
padding: 0 2em;
|
20
|
+
width: $bigscreen-breakpoint - $gutter * 8;
|
21
21
|
}
|
22
22
|
@media screen and (min-width: $widescreen-breakpoint) {
|
23
|
-
width: $widescreen-breakpoint - $gutter *
|
23
|
+
width: $widescreen-breakpoint - $gutter * 8;
|
24
24
|
}
|
25
25
|
}
|
26
26
|
|
@@ -319,6 +319,93 @@
|
|
319
319
|
}
|
320
320
|
}
|
321
321
|
|
322
|
+
@mixin item-external-links($onDark: false) {
|
323
|
+
ul.nav-items {
|
324
|
+
@include reset-list();
|
325
|
+
}
|
326
|
+
|
327
|
+
> .nav-items > li {
|
328
|
+
flex-basis: 50%;
|
329
|
+
width: 50%;
|
330
|
+
max-width: 200px;
|
331
|
+
|
332
|
+
&:first-child {
|
333
|
+
a {
|
334
|
+
margin-left: 1px;
|
335
|
+
}
|
336
|
+
}
|
337
|
+
|
338
|
+
> a {
|
339
|
+
@if $onDark == true {
|
340
|
+
@include static-link-color(white);
|
341
|
+
background-color: rgba(black, 0.7);
|
342
|
+
} @else {
|
343
|
+
@include static-link-color(#444);
|
344
|
+
background-color: rgba(black, 0.08);
|
345
|
+
}
|
346
|
+
|
347
|
+
display: block;
|
348
|
+
font-weight: bold;
|
349
|
+
padding: .5em 1em .5em 1.5em;
|
350
|
+
|
351
|
+
margin: 1px 1px 1px 0;
|
352
|
+
|
353
|
+
display: flex;
|
354
|
+
flex-flow: row nowrap;
|
355
|
+
|
356
|
+
.lbl {
|
357
|
+
white-space: nowrap;
|
358
|
+
text-overflow: ellipsis;
|
359
|
+
overflow: hidden;
|
360
|
+
flex: 1;
|
361
|
+
}
|
362
|
+
.ico {
|
363
|
+
flex-shrink: 0;
|
364
|
+
width: 32px;
|
365
|
+
}
|
366
|
+
.ico-ext {
|
367
|
+
flex-shrink: 0;
|
368
|
+
text-align: right;
|
369
|
+
width: 32px;
|
370
|
+
}
|
371
|
+
}
|
372
|
+
|
373
|
+
&.featured {
|
374
|
+
> a {
|
375
|
+
@if $onDark == true {
|
376
|
+
@include static-link-color($primary-color);
|
377
|
+
background-color: white;
|
378
|
+
} @else {
|
379
|
+
@include static-link-color(white);
|
380
|
+
background-color: $primary-dark-color;
|
381
|
+
}
|
382
|
+
}
|
383
|
+
}
|
384
|
+
}
|
385
|
+
}
|
386
|
+
|
387
|
+
@mixin item-nav-toc() {
|
388
|
+
// Used for ToC on software item’s landing and elsewhere,
|
389
|
+
// (though not in docs sidebar)
|
390
|
+
|
391
|
+
ul.nav-items {
|
392
|
+
@include reset-list;
|
393
|
+
font-size: 15px;
|
394
|
+
}
|
395
|
+
|
396
|
+
> ul.nav-items > li {
|
397
|
+
> .item-title {
|
398
|
+
font-size: 18px;
|
399
|
+
font-weight: bold;
|
400
|
+
margin: 0;
|
401
|
+
line-height: 1.8;
|
402
|
+
}
|
403
|
+
ul {
|
404
|
+
line-height: 2;
|
405
|
+
}
|
406
|
+
}
|
407
|
+
}
|
408
|
+
|
322
409
|
@mixin docs-page($primary-dark-color) {
|
323
410
|
> header.documentation-header,
|
324
411
|
> section.documentation {
|
@@ -332,25 +419,11 @@
|
|
332
419
|
align-items: center;
|
333
420
|
padding: 0 0 0 2em;
|
334
421
|
position: fixed;
|
335
|
-
left: 0;
|
336
422
|
right: 0;
|
337
423
|
z-index: 4;
|
338
424
|
|
339
425
|
transition: background .1s linear, border-bottom .1s linear, transform .1s linear;
|
340
426
|
|
341
|
-
.section-title {
|
342
|
-
flex: 1;
|
343
|
-
flex-grow: 0;
|
344
|
-
|
345
|
-
flex-grow: 1;
|
346
|
-
transition: transform .2s ease-out;
|
347
|
-
opacity: 1;
|
348
|
-
overflow: hidden;
|
349
|
-
|
350
|
-
text-overflow: ellipsis;
|
351
|
-
font-weight: bold;
|
352
|
-
}
|
353
|
-
|
354
427
|
.nav-header {
|
355
428
|
padding: 10px 2em 10px 2em;
|
356
429
|
display: flex;
|
@@ -416,13 +489,6 @@
|
|
416
489
|
box-shadow: rbga(white, 0.9) 0 20px 30px;
|
417
490
|
}
|
418
491
|
|
419
|
-
&.headroom--top {
|
420
|
-
.section-title {
|
421
|
-
transform: translateY(-5em);
|
422
|
-
transition: none; // To avoid flashing on initial page open
|
423
|
-
}
|
424
|
-
}
|
425
|
-
|
426
492
|
&.unpinned {
|
427
493
|
.item-type, .subsection {
|
428
494
|
display: inline-block;
|
@@ -431,8 +497,6 @@
|
|
431
497
|
}
|
432
498
|
|
433
499
|
> section.documentation {
|
434
|
-
$external-links-side-margin: 16px; // for external links
|
435
|
-
|
436
500
|
flex: 1;
|
437
501
|
|
438
502
|
@media screen and (min-width: $bigscreen-breakpoint) {
|
@@ -483,7 +547,7 @@
|
|
483
547
|
max-width: calc(#{$navFlexShare} - #{$sidePadding});
|
484
548
|
}
|
485
549
|
|
486
|
-
li
|
550
|
+
li {
|
487
551
|
font-size: 15px;
|
488
552
|
font-weight: normal;
|
489
553
|
|
@@ -507,7 +571,7 @@
|
|
507
571
|
a { @include static-link-color(#444); }
|
508
572
|
}
|
509
573
|
|
510
|
-
> li
|
574
|
+
> li {
|
511
575
|
> .item-title {
|
512
576
|
font-size: 20px;
|
513
577
|
margin: 0;
|
@@ -537,7 +601,7 @@
|
|
537
601
|
ul {
|
538
602
|
padding: 0;
|
539
603
|
}
|
540
|
-
li
|
604
|
+
li {
|
541
605
|
font-size: 13px;
|
542
606
|
line-height: 1.5;
|
543
607
|
|
@@ -607,9 +671,7 @@
|
|
607
671
|
flex-flow: row nowrap;
|
608
672
|
}
|
609
673
|
|
610
|
-
border-bottom: 2px solid $primary-dark-color;
|
611
674
|
padding-top: 70px;
|
612
|
-
padding-bottom: 20px;
|
613
675
|
|
614
676
|
> .logo-container {
|
615
677
|
margin-right: 22px;
|
@@ -642,67 +704,34 @@
|
|
642
704
|
.docs-nav,
|
643
705
|
&.docs-landing > article > header {
|
644
706
|
.external-links {
|
645
|
-
|
646
|
-
|
647
|
-
ul.nav-items {
|
648
|
-
@include reset-list();
|
649
|
-
}
|
650
|
-
|
651
|
-
> .nav-items > .item {
|
652
|
-
margin-bottom: 10px;
|
653
|
-
margin-right: 16px;
|
654
|
-
|
655
|
-
> a {
|
656
|
-
@include static-link-color(#444);
|
657
|
-
background-color: #F7F7F7;
|
658
|
-
|
659
|
-
display: block;
|
660
|
-
font-weight: bold;
|
661
|
-
padding: 4px 0 4px 0;
|
662
|
-
border-radius: 10px;
|
663
|
-
|
664
|
-
display: flex;
|
665
|
-
flex-flow: row wrap;
|
666
|
-
|
667
|
-
.lbl {
|
668
|
-
white-space: nowrap;
|
669
|
-
text-overflow: ellipsis;
|
670
|
-
overflow: hidden;
|
671
|
-
}
|
672
|
-
.lbl:first-child {
|
673
|
-
// First child means no icon present
|
674
|
-
margin-left: 16px;
|
675
|
-
}
|
676
|
-
.ico {
|
677
|
-
flex-shrink: 0;
|
678
|
-
text-align: right;
|
679
|
-
width: 32px;
|
680
|
-
padding-right: 10px;
|
681
|
-
}
|
682
|
-
.ico-ext {
|
683
|
-
flex-shrink: 0;
|
684
|
-
text-align: right;
|
685
|
-
width: 32px;
|
686
|
-
padding-left: 10px;
|
687
|
-
padding-right: 10px;
|
688
|
-
}
|
689
|
-
}
|
690
|
-
}
|
707
|
+
@include item-external-links();
|
691
708
|
}
|
692
709
|
}
|
693
710
|
|
694
711
|
.docs-nav {
|
695
712
|
.external-links {
|
696
|
-
|
697
|
-
|
698
|
-
|
713
|
+
margin-bottom: .5em;
|
714
|
+
|
715
|
+
> .nav-items > li {
|
716
|
+
flex-basis: unset;
|
717
|
+
width: 100%;
|
718
|
+
a {
|
719
|
+
padding: 0;
|
720
|
+
background: none;
|
721
|
+
}
|
722
|
+
&.featured {
|
723
|
+
a {
|
724
|
+
background: none;
|
725
|
+
@include static-link-color($main-font-color);
|
726
|
+
}
|
727
|
+
}
|
699
728
|
}
|
700
729
|
}
|
701
730
|
}
|
702
731
|
|
703
732
|
&.docs-landing > article {
|
704
733
|
> header {
|
705
|
-
.external-links > .nav-items >
|
734
|
+
.external-links > .nav-items > li > a {
|
706
735
|
@include static-link-color(#fff);
|
707
736
|
background-color: $primary-dark-color;
|
708
737
|
}
|
@@ -713,22 +742,7 @@
|
|
713
742
|
}
|
714
743
|
}
|
715
744
|
|
716
|
-
|
717
|
-
@include reset-list;
|
718
|
-
font-size: 15px;
|
719
|
-
}
|
720
|
-
|
721
|
-
> ul.nav-items > li {
|
722
|
-
> .item-title {
|
723
|
-
font-size: 20px;
|
724
|
-
font-weight: bold;
|
725
|
-
margin: 0;
|
726
|
-
line-height: 1.8;
|
727
|
-
}
|
728
|
-
ul {
|
729
|
-
line-height: 2;
|
730
|
-
}
|
731
|
-
}
|
745
|
+
@include item-nav-toc();
|
732
746
|
}
|
733
747
|
|
734
748
|
@media screen and (min-width: $bigscreen-breakpoint) {
|
data/assets/css/style.scss
CHANGED
@@ -2,12 +2,9 @@
|
|
2
2
|
---
|
3
3
|
|
4
4
|
$primary-color: #05C7DF;
|
5
|
-
$primary-dark-color: #0446CC;
|
6
5
|
$accent-color: #FF6357;
|
7
6
|
|
8
|
-
$
|
9
|
-
$hero-background: linear-gradient(135deg, #0446CC 0%, #2864DD 100%);
|
10
|
-
$superhero-background: linear-gradient(135deg, #0446CC 0%, #2864DD 100%);
|
7
|
+
$main-background: linear-gradient(135deg, #0446CC 0%, #2864DD 100%);
|
11
8
|
|
12
9
|
@import 'jekyll-theme-open-project';
|
13
10
|
|
data/assets/js/adoc-toc.js
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
const HEADER_TAGS = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'];
|
4
4
|
const IN_PAGE_NAV_HTML_CLASS = 'in-page-toc';
|
5
|
+
const SCROLLABLE_NAV_CONTAINER_SELECTOR = 'ul.nav-items';
|
5
6
|
|
6
7
|
/* Given a container of AsciiDoc .sectN elementss,
|
7
8
|
* returns an object containing navigation structure like this:
|
@@ -47,10 +48,13 @@
|
|
47
48
|
}
|
48
49
|
|
49
50
|
function highlightSelected(headerId, itemPath) {
|
51
|
+
let selectedItemEl;
|
52
|
+
|
50
53
|
for (const itemEl of document.querySelectorAll(`.${IN_PAGE_NAV_HTML_CLASS} li`)) {
|
51
54
|
const link = (itemEl.firstChild || {}).firstChild;
|
52
55
|
if (link && link.getAttribute('href') == itemPath) {
|
53
56
|
itemEl.classList.add('highlighted');
|
57
|
+
selectedItemEl = itemEl;
|
54
58
|
} else {
|
55
59
|
itemEl.classList.remove('highlighted');
|
56
60
|
}
|
@@ -62,6 +66,8 @@
|
|
62
66
|
}
|
63
67
|
const selectedHeaderEl = document.getElementById(headerId);
|
64
68
|
selectedHeaderEl.classList.add('highlighted');
|
69
|
+
|
70
|
+
return selectedItemEl;
|
65
71
|
}
|
66
72
|
|
67
73
|
/* Given a list of navigation items, returns an <ul> containing items recursively
|
@@ -103,7 +109,7 @@
|
|
103
109
|
}
|
104
110
|
|
105
111
|
const articleBody = document.querySelector('main section article .body');
|
106
|
-
const selectedItem = document.querySelector('main .docs-nav .nav-items .
|
112
|
+
const selectedItem = document.querySelector('main .docs-nav .nav-items li.selected');
|
107
113
|
|
108
114
|
if (articleBody && selectedItem) {
|
109
115
|
const items = getAdocTocItems(articleBody);
|
@@ -121,4 +127,49 @@
|
|
121
127
|
}
|
122
128
|
}
|
123
129
|
|
130
|
+
if (articleBody && window.location.hash) {
|
131
|
+
// Do things that need to be done if the page was opened
|
132
|
+
// with hash component in address bar.
|
133
|
+
// - After initial scroll to anchor, scroll up a bit
|
134
|
+
// to ensure header is in view accounting for top bar.
|
135
|
+
// - Select in-page doc nav item corresponding to the hash.
|
136
|
+
|
137
|
+
const SCROLL_COMPENSATION_AMOUNT_PX = 0 - document.querySelector('body > .underlay.header > header').offsetHeight - 10;
|
138
|
+
|
139
|
+
function _scrollUp(evt) {
|
140
|
+
window.scrollBy(0, SCROLL_COMPENSATION_AMOUNT_PX);
|
141
|
+
window.removeEventListener('scroll', _scrollUp);
|
142
|
+
};
|
143
|
+
|
144
|
+
function _selectInitialItem() {
|
145
|
+
const hash = window.location.hash.substring(1);
|
146
|
+
const anchorEl = document.getElementById(hash);
|
147
|
+
|
148
|
+
var selectedLinkId;
|
149
|
+
|
150
|
+
if (anchorEl.tagName === 'A') {
|
151
|
+
// We were selected by <a> anchor, not by <hX[id]>.
|
152
|
+
// We want to highlight selected item in the nav
|
153
|
+
// according to the nearest header upwards from anchor.
|
154
|
+
var curEl = anchorEl;
|
155
|
+
while (true) {
|
156
|
+
var curEl = curEl.parentNode;
|
157
|
+
var nearestHeaderEl = curEl.querySelector('h2');
|
158
|
+
if (nearestHeaderEl && nearestHeaderEl.hasAttribute('id')) {
|
159
|
+
selectedLinkId = nearestHeaderEl.getAttribute('id');
|
160
|
+
break;
|
161
|
+
}
|
162
|
+
}
|
163
|
+
} else {
|
164
|
+
selectedLinkId = hash;
|
165
|
+
}
|
166
|
+
|
167
|
+
const selectedItemEl = highlightSelected(selectedLinkId, `./#${selectedLinkId}`);
|
168
|
+
window.setTimeout(function () { selectedItemEl.scrollIntoView(); }, 200);
|
169
|
+
};
|
170
|
+
|
171
|
+
_selectInitialItem();
|
172
|
+
window.addEventListener('scroll', _scrollUp);
|
173
|
+
}
|
174
|
+
|
124
175
|
}());
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-theme-open-project
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: '2.0'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-03-
|
11
|
+
date: 2019-03-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
@@ -72,28 +72,28 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - '='
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
75
|
+
version: '2.0'
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - '='
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
82
|
+
version: '2.0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: bundler
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
89
|
+
version: '2.0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
96
|
+
version: '2.0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: rake
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -161,6 +161,10 @@ files:
|
|
161
161
|
- README.md
|
162
162
|
- _config.yml
|
163
163
|
- _includes/_nav-item.html
|
164
|
+
- _includes/external-link.html
|
165
|
+
- _includes/featured_posts.html
|
166
|
+
- _includes/featured_software.html
|
167
|
+
- _includes/featured_specs.html
|
164
168
|
- _includes/home-hero.html
|
165
169
|
- _includes/home-hub.html
|
166
170
|
- _includes/home-project.html
|
@@ -232,7 +236,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
232
236
|
version: '0'
|
233
237
|
requirements: []
|
234
238
|
rubyforge_project:
|
235
|
-
rubygems_version: 2.
|
239
|
+
rubygems_version: 2.5.2.3
|
236
240
|
signing_key:
|
237
241
|
specification_version: 4
|
238
242
|
summary: Open Project Jekyll theme
|