UNPKG

3.15 kBJavaScriptView Raw
1import mustache from "mustache";
2
3const html = `
4<style>
5 dt-byline {
6 font-size: 12px;
7 line-height: 18px;
8 display: block;
9 border-top: 1px solid rgba(0, 0, 0, 0.1);
10 border-bottom: 1px solid rgba(0, 0, 0, 0.1);
11 color: rgba(0, 0, 0, 0.5);
12 padding-top: 12px;
13 padding-bottom: 12px;
14 }
15 dt-article.centered dt-byline {
16 text-align: center;
17
18 }
19 dt-byline a,
20 dt-article dt-byline a {
21 text-decoration: none;
22 border-bottom: none;
23 }
24 dt-article dt-byline a:hover {
25 text-decoration: underline;
26 border-bottom: none;
27 }
28 dt-byline .authors {
29 text-align: left;
30 }
31 dt-byline .name {
32 display: inline;
33 text-transform: uppercase;
34 }
35 dt-byline .affiliation {
36 display: inline;
37 }
38 dt-byline .date {
39 display: block;
40 text-align: left;
41 }
42 dt-byline .year, dt-byline .month {
43 display: inline;
44 }
45 dt-byline .citation {
46 display: block;
47 text-align: left;
48 }
49 dt-byline .citation div {
50 display: inline;
51 }
52
53 @media(min-width: 768px) {
54 dt-byline {
55 }
56 }
57
58 @media(min-width: 1080px) {
59 dt-byline {
60 border-bottom: none;
61 margin-bottom: 70px;
62 }
63
64 dt-byline a:hover {
65 color: rgba(0, 0, 0, 0.9);
66 }
67
68 dt-byline .authors {
69 display: inline-block;
70 }
71
72 dt-byline .author {
73 display: inline-block;
74 margin-right: 12px;
75 /*padding-left: 20px;*/
76 /*border-left: 1px solid #ddd;*/
77 }
78
79 dt-byline .affiliation {
80 display: block;
81 }
82
83 dt-byline .author:last-child {
84 margin-right: 0;
85 }
86
87 dt-byline .name {
88 display: block;
89 }
90
91 dt-byline .date {
92 border-left: 1px solid rgba(0, 0, 0, 0.1);
93 padding-left: 15px;
94 margin-left: 15px;
95 display: inline-block;
96 }
97 dt-byline .year, dt-byline .month {
98 display: block;
99 }
100
101 dt-byline .citation {
102 border-left: 1px solid rgba(0, 0, 0, 0.15);
103 padding-left: 15px;
104 margin-left: 15px;
105 display: inline-block;
106 }
107 dt-byline .citation div {
108 display: block;
109 }
110 }
111</style>
112
113`;
114
115const template = `
116<div class="byline">
117 <div class="authors">
118 {{#authors}}
119 <div class="author">
120 {{#personalURL}}
121 <a class="name" href="{{personalURL}}">{{name}}</a>
122 {{/personalURL}}
123 {{^personalURL}}
124 <div class="name">{{name}}</div>
125 {{/personalURL}}
126 {{#affiliation}}
127 {{#affiliationURL}}
128 <a class="affiliation" href="{{affiliationURL}}">{{affiliation}}</a>
129 {{/affiliationURL}}
130 {{^affiliationURL}}
131 <div class="affiliation">{{affiliation}}</div>
132 {{/affiliationURL}}
133 {{/affiliation}}
134 </div>
135 {{/authors}}
136 </div>
137 <div class="date">
138 <div class="month">{{publishedMonth}}. {{publishedDay}}</div>
139 <div class="year">{{publishedYear}}</div>
140 </div>
141 <a class="citation" href="#citation">
142 <div>Citation:</div>
143 <div>{{concatenatedAuthors}}, {{publishedYear}}</div>
144 </a>
145</div>
146`
147
148export default function(dom, data) {
149 let el = dom.querySelector('dt-byline');
150 if (el) {
151 el.innerHTML = html + mustache.render(template, data);
152 }
153}