@internetstiftelsen/styleguide 2.22.1 → 2.22.3-beta.0.2

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 (137) 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/archive-link/archive-link.config.js +9 -0
  27. package/src/atoms/button/_button.scss +6 -9
  28. package/src/atoms/button/button.config.js +202 -0
  29. package/src/atoms/checkbox/checkbox.config.js +48 -0
  30. package/src/atoms/file/file.config.js +36 -0
  31. package/src/atoms/grid-toggle/grid-toggle.config.js +8 -0
  32. package/src/atoms/height-limiter/height-limiter.config.js +8 -0
  33. package/src/atoms/icon/_all-icons.zip +0 -0
  34. package/src/atoms/icon/icon.config.js +43 -0
  35. package/src/atoms/icon/spinner-white.svg +1 -9
  36. package/src/atoms/icon/spinner.svg +1 -9
  37. package/src/atoms/icon/sprite.svg +17 -0
  38. package/src/atoms/icon/step-backwards.svg +1 -0
  39. package/src/atoms/icon/step-forwards.svg +1 -0
  40. package/src/atoms/icon/subtitles.svg +1 -0
  41. package/src/atoms/input/input.config.js +56 -0
  42. package/src/atoms/label/label.config.js +9 -0
  43. package/src/atoms/logotype/logotype.config.js +39 -0
  44. package/src/atoms/main-menu/main-menu.config.js +75 -0
  45. package/src/atoms/meta/meta.config.js +42 -0
  46. package/src/atoms/paging/paging.config.js +30 -0
  47. package/src/atoms/password-toggle/password-toggle.config.js +14 -0
  48. package/src/atoms/quote/quote.config.js +9 -0
  49. package/src/atoms/radiobutton/radiobutton.config.js +48 -0
  50. package/src/atoms/rating/rating.config.js +7 -0
  51. package/src/atoms/ribbon/ribbon.config.js +9 -0
  52. package/src/atoms/select/select.config.js +78 -0
  53. package/src/atoms/skip/skip.config.js +19 -0
  54. package/src/atoms/spinner/spinner.config.js +5 -0
  55. package/src/atoms/tag/tag.config.js +36 -0
  56. package/src/atoms/textarea/textarea.config.js +56 -0
  57. package/src/atoms/toggle-high-contrast/toggle-high-contrast.config.js +8 -0
  58. package/src/atoms/tooltip/tooltip.config.js +8 -0
  59. package/src/base/_normalize.scss +1 -1
  60. package/src/base/fonts/_fonts.scss +8 -8
  61. package/src/brandbook/goto10/goto10.config.js +187 -0
  62. package/src/brandbook/internetstiftelsen/identitet/identitet.config.js +5 -0
  63. package/src/components.js +4 -2
  64. package/src/configurations/_extends.scss +5 -1
  65. package/src/configurations/_variables.scss +3 -3
  66. package/src/configurations/colors/colors.config.js +225 -0
  67. package/src/configurations/favicon/favicon.config.js +7 -0
  68. package/src/configurations/grid/_grid.scss +17 -2
  69. package/src/configurations/grid/grid.config.js +8 -0
  70. package/src/configurations/icons.json +1 -1
  71. package/src/configurations/typography/_typography.scss +57 -4
  72. package/src/configurations/typography/typography.config.js +17 -0
  73. package/src/molecules/.DS_Store +0 -0
  74. package/src/molecules/alert/alert.config.js +50 -0
  75. package/src/molecules/breadcrumb/breadcrumb.config.js +28 -0
  76. package/src/molecules/byline/byline.config.js +25 -0
  77. package/src/molecules/card/card.config.js +111 -0
  78. package/src/molecules/context-menu/context-menu.config.js +28 -0
  79. package/src/molecules/continue-video-guide/continue-video-guide.config.js +7 -0
  80. package/src/molecules/continue-video-guide/continue-video-guide.js +84 -0
  81. package/src/molecules/continue-video-guide/continue-video-guide.scss +104 -0
  82. package/src/molecules/continue-video-guide/readme.md +3 -0
  83. package/src/molecules/cookie-disclaimer/cookie-disclaimer.config.js +12 -0
  84. package/src/molecules/download/download.config.js +12 -0
  85. package/src/molecules/form/form.config.js +15 -0
  86. package/src/molecules/form-control/form-control.config.js +78 -0
  87. package/src/molecules/glider/_glider-course.scss +121 -0
  88. package/src/molecules/glider/_glider-hero.scss +325 -0
  89. package/src/molecules/glider/_glider.scss +3 -116
  90. package/src/molecules/glider/glider-course.js +7 -7
  91. package/src/molecules/glider/glider-hero.js +17 -0
  92. package/src/molecules/glider/glider.config.js +29 -0
  93. package/src/molecules/icon-overlay/icon-overlay.config.js +11 -0
  94. package/src/molecules/info-box/info-box.config.js +33 -0
  95. package/src/molecules/modal/modal.config.js +44 -0
  96. package/src/molecules/natural-language-form/natural-language-form.config.js +43 -0
  97. package/src/molecules/share/share.config.js +8 -0
  98. package/src/molecules/submenu/submenu.config.js +27 -0
  99. package/src/molecules/system-error/system-error.config.js +10 -0
  100. package/src/molecules/table/table.config.js +55 -0
  101. package/src/molecules/teaser-news-list/teaser-news-list.config.js +47 -0
  102. package/src/organisms/accordion/accordion.config.js +163 -0
  103. package/src/organisms/domain-search/domain-search.config.js +10 -0
  104. package/src/organisms/event-listing-item/event-listing-item.config.js +15 -0
  105. package/src/organisms/features-box/features-box.config.js +227 -0
  106. package/src/organisms/filter/filter.config.js +165 -0
  107. package/src/organisms/footer/footer.config.js +30 -0
  108. package/src/organisms/header/header.config.js +10 -0
  109. package/src/organisms/hero/_hero--dynamic-headline.scss +157 -0
  110. package/src/organisms/hero/_hero.scss +16 -0
  111. package/src/organisms/hero/hero.config.js +126 -0
  112. package/src/organisms/mailchimp/mailchimp.config.js +38 -0
  113. package/src/organisms/mega-menu/mega-menu.config.js +22 -0
  114. package/src/organisms/podcast/podcast.config.js +76 -0
  115. package/src/organisms/search-result/search-result.config.js +12 -0
  116. package/src/organisms/sections/sections.config.js +68 -0
  117. package/src/organisms/tabs/tabs.config.js +28 -0
  118. package/src/organisms/timeline/_timeline.scss +292 -0
  119. package/src/organisms/timeline/timeline.config.js +7 -0
  120. package/src/organisms/timeline/timeline.js +146 -0
  121. package/src/organisms/video-guide/_video-guide.scss +337 -0
  122. package/src/organisms/video-guide/video-guide.config.js +17 -0
  123. package/src/organisms/video-guide/video-guide.js +293 -0
  124. package/src/pages/animate-footer/animate-footer.config.js +10 -0
  125. package/src/pages/conditional/conditional.config.js +4 -0
  126. package/src/pages/internetguider/internetguider.config.js +7 -0
  127. package/src/pages/magazine/magazine.config.js +19 -0
  128. package/src/pages/mailchimp-newsletter/mailchimp-newsletter.config.js +7 -0
  129. package/src/pages/responsive-position/responsive-position.config.js +4 -0
  130. package/src/pages/search/search.config.js +7 -0
  131. package/src/pages/wordpress-blocks/wordpress-blocks.config.js +19 -0
  132. package/src/assets/css/footer/isolated-footer.css +0 -7367
  133. package/src/assets/css/footer/isolated-footer.css.map +0 -1
  134. package/src/assets/css/footer/isolated-footer.min.css +0 -2
  135. package/src/atoms/timeline/_timeline.scss +0 -159
  136. package/src/molecules/timeline-navigation/timeline-navigation.js +0 -32
  137. package/src/molecules/timeline-navigation/timeline-navigation.scss +0 -165
@@ -0,0 +1,68 @@
1
+ module.exports = {
2
+ status: 'ready',
3
+
4
+ context: {
5
+ sections: [
6
+ {
7
+ type: false,
8
+ modifier: false,
9
+ heading: 'Section grey',
10
+ heading_class: false,
11
+ text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus interdum enim ac facilisis vehicula. Ut consequat consequat velit vel tempus. Sed non massa purus. Donec iaculis justo tristique ultrices tempus. Sed erat lectus, malesuada non lectus a, accumsan aliquam libero. Nunc sed dolor turpis. Nunc efficitur malesuada enim non viverra. Vestibulum in mi suscipit, laoreet purus eu, elementum nunc. Aliquam mattis leo sit amet erat posuere fermentum. Nunc mollis tortor quis enim facilisis, nec porttitor metus volutpat. Ut eu augue porttitor, placerat quam in, molestie nunc. Nam lacinia dignissim justo, ac mollis lorem vulputate sit amet. Maecenas feugiat eget erat nec suscipit. Phasellus pretium tellus ut pellentesque fringilla. In sodales maximus lorem eget vulputate. Donec viverra massa vel urna efficitur rutrum.'
12
+ },
13
+ {
14
+ type: 'white',
15
+ modifier: 'rectangle-left',
16
+ heading: 'Section white',
17
+ text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus interdum enim ac facilisis vehicula. Ut consequat consequat velit vel tempus. Sed non massa purus. Donec iaculis justo tristique ultrices tempus. Sed erat lectus, malesuada non lectus a, accumsan aliquam libero. Nunc sed dolor turpis. Nunc efficitur malesuada enim non viverra. Vestibulum in mi suscipit, laoreet purus eu, elementum nunc. Aliquam mattis leo sit amet erat posuere fermentum. Nunc mollis tortor quis enim facilisis, nec porttitor metus volutpat. Ut eu augue porttitor, placerat quam in, molestie nunc. Nam lacinia dignissim justo, ac mollis lorem vulputate sit amet. Maecenas feugiat eget erat nec suscipit. Phasellus pretium tellus ut pellentesque fringilla. In sodales maximus lorem eget vulputate. Donec viverra massa vel urna efficitur rutrum.'
18
+ },
19
+ {
20
+ type: false,
21
+ modifier: false,
22
+ heading: 'Section grey',
23
+ text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus interdum enim ac facilisis vehicula. Ut consequat consequat velit vel tempus. Sed non massa purus. Donec iaculis justo tristique ultrices tempus. Sed erat lectus, malesuada non lectus a, accumsan aliquam libero. Nunc sed dolor turpis. Nunc efficitur malesuada enim non viverra. Vestibulum in mi suscipit, laoreet purus eu, elementum nunc. Aliquam mattis leo sit amet erat posuere fermentum. Nunc mollis tortor quis enim facilisis, nec porttitor metus volutpat. Ut eu augue porttitor, placerat quam in, molestie nunc. Nam lacinia dignissim justo, ac mollis lorem vulputate sit amet. Maecenas feugiat eget erat nec suscipit. Phasellus pretium tellus ut pellentesque fringilla. In sodales maximus lorem eget vulputate. Donec viverra massa vel urna efficitur rutrum.'
24
+ },
25
+ {
26
+ type: 'white',
27
+ modifier: 'rectangle-right',
28
+ heading: 'Section white',
29
+ text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus interdum enim ac facilisis vehicula. Ut consequat consequat velit vel tempus. Sed non massa purus. Donec iaculis justo tristique ultrices tempus. Sed erat lectus, malesuada non lectus a, accumsan aliquam libero. Nunc sed dolor turpis. Nunc efficitur malesuada enim non viverra. Vestibulum in mi suscipit, laoreet purus eu, elementum nunc. Aliquam mattis leo sit amet erat posuere fermentum. Nunc mollis tortor quis enim facilisis, nec porttitor metus volutpat. Ut eu augue porttitor, placerat quam in, molestie nunc. Nam lacinia dignissim justo, ac mollis lorem vulputate sit amet. Maecenas feugiat eget erat nec suscipit. Phasellus pretium tellus ut pellentesque fringilla. In sodales maximus lorem eget vulputate. Donec viverra massa vel urna efficitur rutrum.'
30
+ }
31
+ ]
32
+ },
33
+ variants: [
34
+ {
35
+ name: 'Header and assymetric grid',
36
+ context: {
37
+ sections: [
38
+ {
39
+ type: false,
40
+ modifier: false,
41
+ heading: 'With header and assymetric grid',
42
+ heading_class: 'supersize',
43
+ has_header: true,
44
+ text: 'Internetstiftelsens vision är att alla vill, vågar och kan använda internet. Här har vi samlat våra utbildningssatsningar som gör att du enklare kan förstå och använda internets tjänster, och som bidrar till ökad digital kompetens.',
45
+ },
46
+ {
47
+ type: 'white',
48
+ modifier: 'rectangle-left o-section__content--peacock',
49
+ heading: 'Section white',
50
+ has_header: true,
51
+ has_grid: true,
52
+ meta: true,
53
+ text: 'Vi tycker om och tror på internet och brinner för att dela med oss av vår kunskap. Vår vision är att alla i Sverige vill, vågar och kan använda internet. För att det ska bli verklighet krävs kunskap om hur internet och digital teknik fungerar, både vad gäller tekniska aspekter och saker som källkritik och riskmedvetenhet.'
54
+ },
55
+ {
56
+ type: false,
57
+ modifier: 'rectangle-right o-section__content--jade',
58
+ heading: 'Section grey',
59
+ has_header: true,
60
+ has_grid: true,
61
+ meta: true,
62
+ text: 'Vi verkar för ett internet som bidrar positivt till människan och samhället. Därför är vi intresserade av hur internet i Sverige används och hur vi kan hjälpa medborgarna att använda det bättre och försäkra sig om att de får vad de betalar för.'
63
+ },
64
+ ]
65
+ }
66
+ }
67
+ ]
68
+ }
@@ -0,0 +1,28 @@
1
+ module.exports = {
2
+ status: 'ready',
3
+
4
+ context: {
5
+ tab_item: [
6
+ {
7
+ id: 'tab-1',
8
+ heading: 'De här',
9
+ content: '<p>Klinisk och min drink. Reserverad potten var nu en kund, men inte bara protein. Renare TV, uppvärmning för någon, chips start. Antioxidanter eller om barnen orienterade, fotboll framför datorn. Medlemmar i dörren var intakt protein. Läxor fotbollstips lejon kartong bananer. Smartphones och bananer temperatur.</p>'
10
+ },
11
+ {
12
+ id: 'tab-2',
13
+ heading: 'Tabbarna',
14
+ content: '<p>Ta färdväg åker rot häst se precis det blev därmed se, söka smultron för ingalunda brunsås fram se vi miljoner jäst olika, groda sällan dunge när tiden fram helt sig dock. För sax blivit redan av där vid upprätthållande omfångsrik det på bra, icke dunge på mjuka groda ser del kan stora. År denna gör erfarenheter häst bland tre ta söka redan år, dimma om händer rot dimma att om själv av sjö, sig stig genom och sorgliga själv verkligen nya där.</p>'
15
+ },
16
+ {
17
+ id: 'tab-3',
18
+ heading: ' Går till elva',
19
+ content: '<p>Gamla det som mjuka gamla hans gamla bra sista fram gamla, tiden trevnadens se hwila när själv nu har kanske hwila, helt i när groda göras rännil verkligen tid så. Dock upprätthållande ta faktor sällan dimmhöljd ingalunda mjuka, vidsträckt bra tidigare vemod samma att lax redan, bra oss strand dimma redan är. Räv att dimmhöljd söka kunde tiden söka vid när, gör del dag söka vad icke se, göras tidigare vid nu dunge kunde tiden.</p>'
20
+ },
21
+ {
22
+ id: 'tab-4',
23
+ heading: '<svg width="20" height="20" viewbox="0 0 32 32"><path d="M31.5 18.2v-4.4h-4.7c-.3-1.4-.8-2.6-1.5-3.7l3.3-3.3-3.1-3.1L22.2 7c-1.2-.8-2.6-1.4-4-1.7V.5h-4.4v4.7c-1.4.2-2.7.8-3.9 1.6L6.7 3.6 3.6 6.7l3.2 3.2c-.8 1.2-1.3 2.5-1.6 3.9H.5v4.4h4.7c.3 1.5.9 2.8 1.7 4l-3.3 3.3 3.1 3.1 3.3-3.3c1.1.7 2.4 1.3 3.7 1.5v4.7h4.4v-4.7c1.4-.3 2.7-.8 3.9-1.6l3.4 3.4 3.1-3.1-3.4-3.4c.8-1.2 1.3-2.5 1.6-3.9h4.8zM16 23.5c-4.1 0-7.5-3.4-7.5-7.5s3.4-7.5 7.5-7.5 7.5 3.4 7.5 7.5-3.4 7.5-7.5 7.5z"></path></svg>',
24
+ content: '<p>Dock upprätthållande ta faktor sällan dimmhöljd ingalunda mjuka, vidsträckt bra tidigare vemod samma att lax redan, bra oss strand dimma redan är. Räv att dimmhöljd söka kunde tiden söka vid när, gör del dag söka vad icke se, göras tidigare vid nu dunge kunde tiden. Gamla det som mjuka gamla hans gamla bra sista fram gamla, tiden trevnadens se hwila när själv nu har kanske hwila, helt i när groda göras rännil verkligen tid så. </p>'
25
+ }
26
+ ]
27
+ }
28
+ }
@@ -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
+ });