@internetstiftelsen/styleguide 2.22.0 → 2.22.3-beta.0.1

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.
Files changed (209) hide show
  1. package/dist/.DS_Store +0 -0
  2. package/dist/assets/js/anchorScroll.js +16 -0
  3. package/dist/assets/js/offset.js +26 -0
  4. package/dist/assets/js/parallax.js +17 -0
  5. package/dist/components.js +8 -4
  6. package/dist/molecules/continue-video-guide/continue-video-guide.js +91 -0
  7. package/dist/molecules/glider/glider-course.js +7 -7
  8. package/dist/molecules/glider/glider-hero.js +23 -0
  9. package/dist/organisms/timeline/timeline.js +154 -0
  10. package/dist/organisms/video-guide/video-guide.js +298 -0
  11. package/package.json +7 -3
  12. package/src/.DS_Store +0 -0
  13. package/src/app.scss +6 -2
  14. package/src/assets/.DS_Store +0 -0
  15. package/src/{atoms/timeline → assets/js}/anchorScroll.js +3 -0
  16. package/src/assets/js/offset.js +22 -0
  17. package/src/assets/js/parallax.js +15 -0
  18. package/src/assets/video/.DS_Store +0 -0
  19. package/src/assets/video/Internets-Historia-HEVC-h265-HEVC-h265.mov +0 -0
  20. package/src/assets/video/Internets-Historia-HEVC-h265-vp9-chrome.webm +0 -0
  21. package/src/assets/video/chapters.vtt +25 -0
  22. package/src/assets/video/metadata.vtt +25 -0
  23. package/src/assets/video/movie-webm.webm +0 -0
  24. package/src/assets/video/videoplayer.vtt +25 -0
  25. package/src/atoms/.DS_Store +0 -0
  26. package/src/atoms/button/_button.scss +6 -9
  27. package/src/atoms/icon/_all-icons.zip +0 -0
  28. package/src/atoms/icon/spinner-white.svg +1 -9
  29. package/src/atoms/icon/spinner.svg +1 -9
  30. package/src/atoms/icon/sprite.svg +17 -0
  31. package/src/atoms/icon/step-backwards.svg +1 -0
  32. package/src/atoms/icon/step-forwards.svg +1 -0
  33. package/src/atoms/icon/subtitles.svg +1 -0
  34. package/src/atoms/meta/meta.config.js +1 -1
  35. package/src/base/_normalize.scss +1 -1
  36. package/src/base/fonts/_fonts.scss +8 -8
  37. package/src/components.js +4 -2
  38. package/src/configurations/_extends.scss +5 -1
  39. package/src/configurations/_variables.scss +3 -3
  40. package/src/configurations/grid/_grid.scss +17 -2
  41. package/src/configurations/icons.json +1 -1
  42. package/src/configurations/typography/_typography.scss +57 -4
  43. package/src/molecules/.DS_Store +0 -0
  44. package/src/molecules/continue-video-guide/continue-video-guide.config.js +7 -0
  45. package/src/molecules/continue-video-guide/continue-video-guide.js +84 -0
  46. package/src/molecules/continue-video-guide/continue-video-guide.scss +104 -0
  47. package/src/molecules/continue-video-guide/readme.md +3 -0
  48. package/src/molecules/glider/_glider-course.scss +121 -0
  49. package/src/molecules/glider/_glider-hero.scss +325 -0
  50. package/src/molecules/glider/_glider.scss +3 -116
  51. package/src/molecules/glider/glider-course.js +7 -7
  52. package/src/molecules/glider/glider-hero.js +17 -0
  53. package/src/molecules/glider/glider.config.js +7 -0
  54. package/src/organisms/hero/_hero.scss +16 -0
  55. package/src/organisms/hero/hero--dynamic-headline.scss +156 -0
  56. package/src/organisms/hero/hero.config.js +10 -1
  57. package/src/organisms/timeline/_timeline.scss +292 -0
  58. package/src/organisms/timeline/timeline.config.js +7 -0
  59. package/src/organisms/timeline/timeline.js +146 -0
  60. package/src/organisms/video-guide/_video-guide.scss +337 -0
  61. package/src/organisms/video-guide/video-guide.config.js +17 -0
  62. package/src/organisms/video-guide/video-guide.js +293 -0
  63. package/src/_head.hbs +0 -12
  64. package/src/_icon-sprite.hbs +0 -334
  65. package/src/_layout-icons.hbs +0 -58
  66. package/src/_layout-logotypes.hbs +0 -54
  67. package/src/_logotype-sprite.hbs +0 -42
  68. package/src/_preview.hbs +0 -12
  69. package/src/_scripts.hbs +0 -1
  70. package/src/assets/css/footer/isolated-footer.css +0 -7367
  71. package/src/assets/css/footer/isolated-footer.css.map +0 -1
  72. package/src/assets/css/footer/isolated-footer.min.css +0 -2
  73. package/src/assets/images/ALX_0876.jpg +0 -0
  74. package/src/assets/images/ALX_2024.jpg +0 -0
  75. package/src/assets/images/ALX_2242.jpg +0 -0
  76. package/src/assets/images/ALX_2629.jpg +0 -0
  77. package/src/assets/images/ALX_7251.jpg +0 -0
  78. package/src/assets/images/ALX_7427_1.jpg +0 -0
  79. package/src/assets/images/Friutrymme-logotyp.png +0 -0
  80. package/src/assets/images/ISO_27001_2013_black_TM.svg +0 -1
  81. package/src/assets/images/KPA_0996.jpg +0 -0
  82. package/src/assets/images/KPA_3810.jpg +0 -0
  83. package/src/assets/images/KPA_4156.jpg +0 -0
  84. package/src/assets/images/KPA_4198.jpg +0 -0
  85. package/src/assets/images/KPA_4516.jpg +0 -0
  86. package/src/assets/images/KPA_5081.jpg +0 -0
  87. package/src/assets/images/KPA_5090-5-4.jpg +0 -0
  88. package/src/assets/images/KPA_5090.jpg +0 -0
  89. package/src/assets/images/author.png +0 -0
  90. package/src/assets/images/bildmaner.jpg +0 -0
  91. package/src/assets/images/bluffmejl.png +0 -0
  92. package/src/assets/images/bredbandskollen.svg +0 -63
  93. package/src/assets/images/card.png +0 -0
  94. package/src/assets/images/digitala-lektioner.svg +0 -90
  95. package/src/assets/images/goto-10.svg +0 -62
  96. package/src/assets/images/goto10_exempel1-1024x580.jpg +0 -0
  97. package/src/assets/images/goto10_exempel2-1024x580.jpg +0 -0
  98. package/src/assets/images/goto10_exempel3-1024x580.jpg +0 -0
  99. package/src/assets/images/goto10_grid-1024x580.jpg +0 -0
  100. package/src/assets/images/goto10_monster-1024x580.jpg +0 -0
  101. package/src/assets/images/hero.jpg +0 -0
  102. package/src/assets/images/icon-arrow-down.svg +0 -3
  103. package/src/assets/images/icon-checkbox-checked.svg +0 -10
  104. package/src/assets/images/icon-checkbox.svg +0 -8
  105. package/src/assets/images/icon-radiobutton-checked.svg +0 -13
  106. package/src/assets/images/icon-radiobutton.svg +0 -10
  107. package/src/assets/images/internetdagarna.svg +0 -91
  108. package/src/assets/images/internetkunskap.svg +0 -80
  109. package/src/assets/images/internetmuseum.svg +0 -85
  110. package/src/assets/images/internetstiftelsen.svg +0 -36
  111. package/src/assets/images/placeringsriktlinjer.png +0 -0
  112. package/src/assets/images/punktse.svg +0 -96
  113. package/src/assets/images/search-hit.png +0 -0
  114. package/src/assets/images/svenskarna-och-internet.svg +0 -69
  115. package/src/assets/images/tiny-hero.png +0 -0
  116. package/src/assets/zip/Goto_10_monster.zip +0 -0
  117. package/src/assets/zip/Internetstiftelsen-logotyp.zip +0 -0
  118. package/src/assets/zip/goto10-logo.zip +0 -0
  119. package/src/assets/zip/undervarumarken.zip +0 -0
  120. package/src/atoms/archive-link/archive-link.hbs +0 -8
  121. package/src/atoms/button/button.hbs +0 -13
  122. package/src/atoms/checkbox/checkbox.hbs +0 -24
  123. package/src/atoms/file/file.hbs +0 -16
  124. package/src/atoms/grid-toggle/grid-toggle.hbs +0 -3
  125. package/src/atoms/height-limiter/height-limiter.hbs +0 -13
  126. package/src/atoms/icon/icon.hbs +0 -7
  127. package/src/atoms/input/input.hbs +0 -18
  128. package/src/atoms/label/label.hbs +0 -1
  129. package/src/atoms/logotype/logotype.hbs +0 -7
  130. package/src/atoms/main-menu/main-menu.hbs +0 -75
  131. package/src/atoms/meta/meta.hbs +0 -1
  132. package/src/atoms/paging/paging.hbs +0 -7
  133. package/src/atoms/password-toggle/password-toggle.hbs +0 -19
  134. package/src/atoms/quote/quote.hbs +0 -9
  135. package/src/atoms/radiobutton/radiobutton.hbs +0 -13
  136. package/src/atoms/rating/rating.hbs +0 -15
  137. package/src/atoms/ribbon/ribbon.hbs +0 -65
  138. package/src/atoms/select/select.hbs +0 -17
  139. package/src/atoms/skip/skip.hbs +0 -5
  140. package/src/atoms/spinner/spinner.hbs +0 -3
  141. package/src/atoms/tag/tag.hbs +0 -1
  142. package/src/atoms/textarea/textarea.hbs +0 -32
  143. package/src/atoms/timeline/_timeline.scss +0 -159
  144. package/src/atoms/toggle-high-contrast/toggle-high-contrast.hbs +0 -6
  145. package/src/atoms/tooltip/tooltip.hbs +0 -13
  146. package/src/brandbook/goto10/goto10.hbs +0 -225
  147. package/src/brandbook/internetstiftelsen/bildman/303/251r/bildman/303/251r.config.js +0 -5
  148. package/src/brandbook/internetstiftelsen/bildman/303/251r/bildman/303/251r.hbs +0 -74
  149. package/src/brandbook/internetstiftelsen/identitet/identitet.hbs +0 -426
  150. package/src/brandbook/internetstiftelsen/tonalitet och spr/303/245kbruk/tonalitet och spr/303/245kbruk.config.js" +0 -5
  151. package/src/brandbook/internetstiftelsen/tonalitet och spr/303/245kbruk/tonalitet och spr/303/245kbruk.hbs" +0 -79
  152. package/src/configurations/colors/colors.hbs +0 -85
  153. package/src/configurations/css-utility-classes.hbs +0 -47
  154. package/src/configurations/favicon/favicon.hbs +0 -9
  155. package/src/configurations/grid/grid.hbs +0 -785
  156. package/src/configurations/typography/typography.hbs +0 -186
  157. package/src/molecules/alert/alert.hbs +0 -12
  158. package/src/molecules/breadcrumb/breadcrumb.hbs +0 -12
  159. package/src/molecules/byline/byline.hbs +0 -20
  160. package/src/molecules/card/card.hbs +0 -55
  161. package/src/molecules/context-menu/context-menu.hbs +0 -14
  162. package/src/molecules/cookie-disclaimer/cookie-disclaimer.hbs +0 -14
  163. package/src/molecules/download/download.hbs +0 -27
  164. package/src/molecules/form/form.hbs +0 -60
  165. package/src/molecules/form-control/form-control.hbs +0 -75
  166. package/src/molecules/glider/glider--course.hbs +0 -127
  167. package/src/molecules/glider/glider.hbs +0 -39
  168. package/src/molecules/icon-overlay/icon-overlay.hbs +0 -4
  169. package/src/molecules/info-box/info-box.hbs +0 -8
  170. package/src/molecules/modal/modal.hbs +0 -101
  171. package/src/molecules/natural-language-form/natural-language-form.hbs +0 -19
  172. package/src/molecules/share/share.hbs +0 -28
  173. package/src/molecules/submenu/submenu.hbs +0 -68
  174. package/src/molecules/system-error/system-error.hbs +0 -9
  175. package/src/molecules/table/table.hbs +0 -72
  176. package/src/molecules/teaser-news-list/teaser-news-list.hbs +0 -16
  177. package/src/molecules/timeline-navigation/timeline-navigation.config.js +0 -15
  178. package/src/molecules/timeline-navigation/timeline-navigation.hbs +0 -83
  179. package/src/molecules/timeline-navigation/timeline-navigation.js +0 -32
  180. package/src/molecules/timeline-navigation/timeline-navigation.scss +0 -165
  181. package/src/organisms/accordion/accordion.hbs +0 -38
  182. package/src/organisms/domain-search/domain-search.hbs +0 -50
  183. package/src/organisms/event-listing-item/event-listing-item.hbs +0 -27
  184. package/src/organisms/features-box/features-box.hbs +0 -24
  185. package/src/organisms/filter/filter.hbs +0 -100
  186. package/src/organisms/footer/footer.hbs +0 -157
  187. package/src/organisms/header/header.hbs +0 -15
  188. package/src/organisms/hero/hero.hbs +0 -57
  189. package/src/organisms/mailchimp/mailchimp.hbs +0 -146
  190. package/src/organisms/map-box/map-box.hbs +0 -8
  191. package/src/organisms/mega-menu/mega-menu.hbs +0 -95
  192. package/src/organisms/podcast/podcast--episode-list.hbs +0 -8
  193. package/src/organisms/podcast/podcast--hero.hbs +0 -5
  194. package/src/organisms/podcast/podcast--single-episode.hbs +0 -48
  195. package/src/organisms/podcast/podcast.hbs +0 -43
  196. package/src/organisms/search-result/search-result.hbs +0 -95
  197. package/src/organisms/sections/sections.hbs +0 -52
  198. package/src/organisms/tabs/tabs.hbs +0 -15
  199. package/src/pages/animate-footer/animate-footer.hbs +0 -78
  200. package/src/pages/conditional/conditional.hbs +0 -37
  201. package/src/pages/grid-block/grid-block.hbs +0 -185
  202. package/src/pages/internetguider/internetguider.hbs +0 -98
  203. package/src/pages/magazine/magazine.hbs +0 -60
  204. package/src/pages/mailchimp-newsletter/mailchimp-newsletter.hbs +0 -4
  205. package/src/pages/responsive-position/responsive-position.hbs +0 -7
  206. package/src/pages/search/search.hbs +0 -40
  207. package/src/pages/timeline/timeline.config.js +0 -19
  208. package/src/pages/timeline/timeline.hbs +0 -53
  209. package/src/pages/wordpress-blocks/wordpress-blocks.hbs +0 -99
@@ -77,7 +77,7 @@ module.exports = {
77
77
  },
78
78
  {
79
79
  name: 'Event hero with button',
80
- status: 'wip',
80
+ status: 'ready',
81
81
  context: {
82
82
  event_title: 'Framtidsoptimism och problemlösning i en uppkopplad värld',
83
83
  organizer: 'Heja framtiden',
@@ -113,5 +113,14 @@ module.exports = {
113
113
  has_buttons: false,
114
114
  }
115
115
  },
116
+ {
117
+ name: 'Dynamic headline',
118
+ status: 'wip',
119
+ context: {
120
+ has_image: true,
121
+ hero_image: '/assets/images/Reprogramming_ENIAC2.png',
122
+ heading: 'Kvinnorna som digitaliserade världen',
123
+ }
124
+ },
116
125
  ]
117
126
  }
@@ -0,0 +1,292 @@
1
+ @charset "UTF-8";
2
+
3
+ html {
4
+ scroll-behavior: smooth;
5
+ }
6
+
7
+ @include organism(timeline) {
8
+ position: sticky;
9
+ top: -1px;
10
+ left: 0;
11
+ right: 0;
12
+ z-index: z_index(middlegroundImportant);
13
+ background: $color-ash;
14
+
15
+ @include card-shadow($color-cyberspace, 0.2);
16
+
17
+ &::after {
18
+ background-color: $color-concrete;
19
+ content: '';
20
+ display: block;
21
+ height: rhythm(1);
22
+ position: absolute;
23
+ top: 0;
24
+ left: 0;
25
+ right: 0;
26
+ z-index: -1;
27
+ }
28
+
29
+
30
+ @include e(progress-bar) {
31
+ display:flex;
32
+ height: rhythm(1);
33
+ background-image: linear-gradient(90deg, #55c7b4 0vw, #55c7b4 14.285vw, #c27fec 14.285vw, #c27fec 28.57vw, #ffa94d 28.57vw, #ffa94d 42.855vw, #ffce2e 42.855vw, #ffce2e 57.14vw, #50b2fc 57.14vw, #50b2fc 71.425vw, #ff4069 71.425vw, #ff4069 85.71vw, #8E9297 85.71vw, #8E9297 100%);
34
+ width: 0;
35
+ }
36
+
37
+ @include e(decades-container) {
38
+ display: flex;
39
+ justify-content: space-around;
40
+ align-items: stretch;
41
+
42
+ > a {
43
+ display: block;
44
+ flex: 1;
45
+ text-decoration: none;
46
+ color: $color-cyberspace;
47
+ text-align: center;
48
+ padding-top: rhythm(1);
49
+ padding-bottom: rhythm(1);
50
+ font-family: $font-family-headings;
51
+ font-size: $size-medium;
52
+
53
+ &.is-reading {
54
+ &:nth-child(1) {
55
+ color: $color-jade;
56
+ }
57
+
58
+ &:nth-child(2) {
59
+ color: $color-peacock;
60
+ }
61
+
62
+ &:nth-child(3) {
63
+ color: $color-sandstone;
64
+ }
65
+
66
+ &:nth-child(4) {
67
+ color: $color-lemon;
68
+ }
69
+
70
+ &:nth-child(5) {
71
+ color: $color-ocean;
72
+ }
73
+
74
+ &:nth-child(6) {
75
+ color: $color-ruby;
76
+ }
77
+
78
+ &:nth-child(7) {
79
+ color: $color-granit;
80
+ }
81
+ }
82
+
83
+ @include bp-up(lg) {
84
+ font-size: $size-base;
85
+ padding-top: rhythm(2);
86
+ padding-bottom: rhythm(2);
87
+ }
88
+ }
89
+ }
90
+
91
+ @include e(decade) {
92
+ @include e(intro) {
93
+ padding-top: rhythm(4);
94
+ margin-bottom: rhythm(8);
95
+
96
+ @include bp-up(sm) {
97
+ margin-bottom: rhythm(10);
98
+ }
99
+
100
+ @include bp-up(md) {
101
+ margin-bottom: rhythm(12);
102
+ }
103
+
104
+ @include bp-up(lg) {
105
+ margin-bottom: rhythm(14);
106
+ }
107
+
108
+ @include bp-up(xl) {
109
+ margin-bottom: rhythm(18);
110
+ }
111
+ }
112
+ }
113
+
114
+
115
+ // "Parallax" scroll items
116
+ @include e(parallax) {
117
+ opacity: 0;
118
+ transition: opacity 1s ease-out, transform 5s cubic-bezier(0, 1, 0, 1);
119
+ transform: translateY(200px);
120
+ will-change: opacity, transform;
121
+ transition-delay: 0.5s;
122
+ flex: 100%;
123
+
124
+ &.animate {
125
+ transform: translateY(0);
126
+ opacity: 1;
127
+ z-index: z_index(middleGround);
128
+
129
+
130
+ }
131
+ }
132
+
133
+ @include e(item) {
134
+ @include e(content) {
135
+ display: none;
136
+ padding-bottom: 0;
137
+ margin-top: 0;
138
+
139
+ @include e(meta) {
140
+ @include e(related) {
141
+ margin-top: rhythm(4);
142
+ border-top: 1px solid $color-granit;
143
+ padding-top: rhythm(4);
144
+
145
+ img {
146
+ max-height: 100px;
147
+ width: 100%;
148
+ object-fit: cover;
149
+ object-position: 50% 25%;
150
+ border-radius: $border-radius;
151
+ }
152
+ }
153
+ }
154
+ }
155
+
156
+ &.is-open {
157
+ flex: 0 0 100%;
158
+ background-color: $color-cyberspace;
159
+ width: 100vw;
160
+ max-width: 100vw;
161
+ min-width: 100vw;
162
+ margin-left: calc(50% - 50vw);
163
+ margin-right: calc(50% - 50vw);
164
+ transform: translateY(0) !important;
165
+ z-index: z_index(middlegroundImportant);
166
+ padding-top: rhythm(6);
167
+ padding-bottom: rhythm(4);
168
+
169
+ @include bp-up(md) {
170
+ padding-top: rhythm(8);
171
+ padding-bottom: rhythm(8);
172
+ }
173
+
174
+ h1,
175
+ h2,
176
+ h3,
177
+ h4,
178
+ p,
179
+ a,
180
+ li {
181
+ color: $color-snow;
182
+ }
183
+
184
+ a[data-scroll-ignore] {
185
+ pointer-events: none;
186
+
187
+ &:hover,
188
+ &:focus {
189
+ text-decoration: none;
190
+ cursor: default;
191
+ }
192
+
193
+ &::after {
194
+ display: none;
195
+ }
196
+
197
+ h1 {
198
+ @extend %alpha;
199
+ }
200
+ }
201
+
202
+ p[class*='card__text'] {
203
+ @extend %preamble;
204
+ }
205
+
206
+ .wp-block-iis-card {
207
+ margin-left: auto;
208
+ margin-right: auto;
209
+
210
+ @include bp-up(sm) {
211
+ width: make_col(16);
212
+ }
213
+
214
+ @include bp-up(md) {
215
+ width: make_col(12);
216
+ }
217
+
218
+ @include bp-up(lg) {
219
+ width: make_col(12);
220
+ }
221
+
222
+ @include bp-up(xl) {
223
+ width: make_col(9);
224
+ }
225
+ }
226
+
227
+ & + .grid-18 {
228
+ transform: translateY(0) !important;
229
+ }
230
+
231
+ button {
232
+ display: inline-block;
233
+ position: absolute;
234
+ right: rhythm(1);
235
+ transform: translateY(-#{rhythm(1)});
236
+
237
+ &:first-child {
238
+ top: rhythm(1);
239
+ transform: none;
240
+ }
241
+
242
+ @include bp-up(md) {
243
+ right: rhythm(2);
244
+ transform: translateY(rhythm(2));
245
+
246
+ &:first-child {
247
+ top: rhythm(2);
248
+ }
249
+ }
250
+ }
251
+
252
+ [class*='content'] {
253
+ display: block;
254
+ }
255
+ }
256
+ }
257
+
258
+ @include e(item-close) {
259
+ display: none;
260
+ }
261
+
262
+ @include e(heading) {
263
+ @include plumber(
264
+ $font-size: 2,
265
+ $line-height: 3,
266
+ $leading-top: 0,
267
+ $leading-bottom: 0,
268
+ $baseline: $body-baseline
269
+ );
270
+
271
+ @include bp-up(sm) {
272
+ @include plumber(
273
+ $font-size: 2.2,
274
+ $line-height: 3,
275
+ $leading-top: 0,
276
+ $leading-bottom: 0,
277
+ );
278
+ }
279
+ }
280
+
281
+ @include e(card-text) {
282
+ display: none;
283
+
284
+ @include bp-up(lg) {
285
+ display: block;
286
+ }
287
+ }
288
+ }
289
+
290
+ .row-has-open-child {
291
+ margin-bottom: 0 !important;
292
+ }
@@ -0,0 +1,7 @@
1
+ module.exports = {
2
+ status: 'wip',
3
+
4
+ context: {
5
+
6
+ }
7
+ }
@@ -0,0 +1,146 @@
1
+ import '../../assets/js/parallax';
2
+
3
+ const { offsetTop, offsetBottom, offsetLeft } = require('../../assets/js/offset');
4
+
5
+ const progressBar = document.querySelector('.js-progress-bar');
6
+ const decadeContainer = document.querySelector('.js-decade-container');
7
+ const decadeSections = document.querySelectorAll('.js-timeline-decade');
8
+ const firstDecade = document.querySelector('h2.godzilla');
9
+ const decades = document.querySelectorAll('h2.godzilla');
10
+ let triggerPoint = 0;
11
+
12
+ // Create decade links in timeline
13
+ function buildTimelineNavigation() {
14
+ [].forEach.call(decades, (decade) => {
15
+ const decadeLink = document.createElement('a');
16
+ const { textContent } = decade;
17
+ decadeLink.setAttribute('href', `#${textContent}`);
18
+ decadeLink.innerText = textContent;
19
+ decadeContainer.appendChild(decadeLink);
20
+ });
21
+ }
22
+
23
+ /* Set trigger point (vertical position in viewport)
24
+ for when a new decade should start being "active" */
25
+ function setTriggerPoint() {
26
+ triggerPoint = window.innerHeight * 0.5;
27
+ }
28
+
29
+ // Animate progress bar when user is scolling within the timeline
30
+ function animateProgressBar() {
31
+ let currentSection = 0;
32
+ let sectionIndex = 0;
33
+ const currentPosition = document.documentElement.scrollTop + triggerPoint;
34
+ const decadeLinks = document.querySelectorAll('.js-decade-container a');
35
+ let progressBarWidth = 0;
36
+
37
+ // Check if we are above the first section
38
+ if (currentPosition < offsetTop(firstDecade)) {
39
+ currentSection = 0;
40
+ progressBarWidth = 0;
41
+ progressBar.style.width = '0';
42
+
43
+ [].forEach.call(decadeLinks, (decadeLink) => {
44
+ decadeLink.classList.remove('is-reading');
45
+ });
46
+ } else {
47
+ // Otherwise add 1 to sectionIndex while scrolling;
48
+ [].forEach.call(decades, (decade) => {
49
+ const sectionTop = offsetTop(decade);
50
+
51
+ if (currentPosition >= sectionTop) {
52
+ currentSection = sectionIndex;
53
+
54
+ [].forEach.call(decadeLinks, (decadeLink) => {
55
+ decadeLink.classList.remove('is-reading');
56
+ });
57
+
58
+ decadeLinks[sectionIndex].classList.add('is-reading');
59
+ }
60
+
61
+ sectionIndex += 1;
62
+ });
63
+ }
64
+
65
+ // Calculate speed of the progressBar width while scrolling based on section height
66
+ const startPoint = decadeLinks[currentSection];
67
+ const startPointX = offsetLeft(startPoint);
68
+ const startPointWidth = startPoint.offsetWidth;
69
+ const startSection = decadeSections[currentSection];
70
+ const startSectionY = offsetTop(startSection);
71
+ const endSectionY = offsetBottom(startSection);
72
+ const sectionLength = endSectionY - startSectionY;
73
+ const scrollY = currentPosition - startSectionY;
74
+ const sectionProgress = scrollY / sectionLength;
75
+ progressBarWidth = startPointX + (startPointWidth * sectionProgress);
76
+
77
+ // Use result to animate progressbar
78
+ progressBar.style.width = `${progressBarWidth}px`;
79
+ }
80
+
81
+ // Run functions on page load
82
+ if (progressBar) {
83
+ buildTimelineNavigation();
84
+ setTriggerPoint();
85
+ animateProgressBar();
86
+
87
+ // Re-run functions on window events
88
+ window.addEventListener('resize', () => {
89
+ setTriggerPoint();
90
+ animateProgressBar();
91
+ });
92
+ window.addEventListener('scroll', () => {
93
+ animateProgressBar();
94
+ });
95
+ }
96
+
97
+ // DUMMY TIMELINE ITEM OPEN/CLOSE
98
+ function wrap(el, wrapper) {
99
+ el.parentNode.insertBefore(wrapper, el);
100
+ wrapper.classList.add('wrapper');
101
+ wrapper.appendChild(el);
102
+ }
103
+
104
+ const timeLineItems = document.querySelectorAll('.js-timeline-item');
105
+ let timeLineItemScrollPosition = 0;
106
+
107
+ [].forEach.call(timeLineItems, (timeLineItem) => {
108
+ const timeLineItemLink = timeLineItem.querySelector('a');
109
+ const timeLineItemClose = timeLineItem.querySelector('.js-timeline-item-close');
110
+ const timeLineItemBottomClose = timeLineItem.querySelector('.js-timeline-item-bottom-close');
111
+
112
+ timeLineItemLink.addEventListener('click', () => {
113
+ timeLineItemScrollPosition = window.pageYOffset;
114
+ sessionStorage.setItem('scroll-position', timeLineItemScrollPosition);
115
+
116
+ if (!timeLineItem.classList.contains('is-open')) {
117
+ timeLineItem.classList.add('is-open');
118
+ timeLineItem.closest('.row').classList.add('row-has-open-child');
119
+
120
+ // Wrap open timeline item
121
+ wrap(timeLineItem.querySelector('.wp-block-iis-card'), document.createElement('div'));
122
+ }
123
+ });
124
+
125
+ timeLineItemClose.addEventListener('click', () => {
126
+ timeLineItem.classList.remove('is-open');
127
+ timeLineItem.closest('.row').classList.remove('row-has-open-child');
128
+
129
+ // Destroy generated wrapper
130
+ const wrapper = timeLineItemClose.nextElementSibling;
131
+ wrapper.replaceWith(...wrapper.childNodes);
132
+
133
+ const top = sessionStorage.getItem('scroll-position');
134
+ if (top !== null) {
135
+ window.scrollTo(0, parseInt(top, 10));
136
+ }
137
+ sessionStorage.removeItem('scroll-position');
138
+
139
+ // Trigger scroll event to reveal timeline items not yet parallaxed into view
140
+ window.dispatchEvent(new CustomEvent('scroll'));
141
+ });
142
+
143
+ timeLineItemBottomClose.addEventListener('click', () => {
144
+ timeLineItemClose.click();
145
+ });
146
+ });