@internetstiftelsen/styleguide 2.20.4 → 2.21.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.
@@ -141,6 +141,8 @@ function getHTML(editor) {
141
141
  }
142
142
 
143
143
  function setupTextArea(el) {
144
+ var onChange = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};
145
+
144
146
  var editorEl = document.createElement('div');
145
147
  var editor = new _core.Editor({
146
148
  element: editorEl,
@@ -155,7 +157,9 @@ function setupTextArea(el) {
155
157
  toogleButtonState(props.editor, editorEl);
156
158
  },
157
159
  onUpdate: function onUpdate(props) {
158
- el.value = getHTML(props.editor);
160
+ var html = getHTML(props.editor);
161
+ el.value = html;
162
+ onChange(html);
159
163
  }
160
164
  });
161
165
 
@@ -48,4 +48,6 @@ require('./molecules/glider/glider-single');
48
48
 
49
49
  require('./atoms/timeline/anchorScroll');
50
50
 
51
- require('./molecules/timeline-navigation/timeline-navigation');
51
+ require('./molecules/timeline-navigation/timeline-navigation');
52
+
53
+ require('./molecules/context-menu/context-menu');
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+
3
+ var elements = document.querySelectorAll('[data-close-on-outside-click]');
4
+
5
+ function closeElement(element) {
6
+ document.addEventListener('mouseup', function (e) {
7
+ var childElement = element.nextElementSibling;
8
+
9
+ /* Close menu on all clicks except the trigger button,
10
+ the menu and it's child elements and if the menu is actually open. */
11
+ if (!element.contains(e.target) && !childElement.contains(e.target) && element.getAttribute('aria-expanded') === 'true') {
12
+ element.click();
13
+ }
14
+ });
15
+ }
16
+
17
+ if (elements) {
18
+ [].forEach.call(elements, closeElement);
19
+ }
@@ -9,6 +9,9 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < argument
9
9
 
10
10
  var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
11
11
 
12
+ exports.onOpen = onOpen;
13
+ exports.onClose = onClose;
14
+
12
15
  var _focusTrap = require('../../focusTrap');
13
16
 
14
17
  var _focusTrap2 = _interopRequireDefault(_focusTrap);
@@ -51,6 +54,8 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
51
54
  */
52
55
 
53
56
  var queue = [];
57
+ var globalOnCloseCallbacks = [];
58
+ var globalOnOpenCallbacks = [];
54
59
  var active = null;
55
60
  var incrementId = 0;
56
61
  var modal = null;
@@ -138,6 +143,26 @@ function handleKeyUp(e) {
138
143
  });
139
144
  }
140
145
 
146
+ /**
147
+ * Global onOpen handler
148
+ *
149
+ * @param {Function} cb
150
+ * @returns {number}
151
+ */
152
+ function onOpen(cb) {
153
+ var index = globalOnOpenCallbacks.push(cb) - 1;
154
+
155
+ return function () {
156
+ globalOnOpenCallbacks.splice(index, 1);
157
+ };
158
+ }
159
+
160
+ function dispatchOnOpenHandlers(el, id) {
161
+ globalOnOpenCallbacks.forEach(function (cb) {
162
+ return cb(el, id);
163
+ });
164
+ }
165
+
141
166
  /**
142
167
  * Display the active modal.
143
168
  */
@@ -167,6 +192,8 @@ function display() {
167
192
  active.settings.onOpen(active.id, active.el);
168
193
  }
169
194
 
195
+ dispatchOnOpenHandlers(active.el, active.id);
196
+
170
197
  setTimeout(function () {
171
198
  if (active.el.focusTrap) {
172
199
  active.el.focusTrap.activate();
@@ -200,6 +227,26 @@ function dispatch() {
200
227
  display();
201
228
  }
202
229
 
230
+ /**
231
+ * Global onClose handler
232
+ *
233
+ * @param {Function} cb
234
+ * @returns {number}
235
+ */
236
+ function onClose(cb) {
237
+ var index = globalOnCloseCallbacks.push(cb) - 1;
238
+
239
+ return function () {
240
+ globalOnCloseCallbacks.splice(index, 1);
241
+ };
242
+ }
243
+
244
+ function dispatchOnCloseHandlers(el, id) {
245
+ globalOnCloseCallbacks.forEach(function (cb) {
246
+ return cb(el, id);
247
+ });
248
+ }
249
+
203
250
  /**
204
251
  * Close currently active modal
205
252
  * and dispatch next in queue.
@@ -212,6 +259,8 @@ function close() {
212
259
  active.settings.onClose(active.id);
213
260
  }
214
261
 
262
+ dispatchOnCloseHandlers(active.el, active.id);
263
+
215
264
  document.removeEventListener('keyup', handleKeyUp);
216
265
 
217
266
  if (active.el.focusTrap) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@internetstiftelsen/styleguide",
3
- "version": "2.20.4",
3
+ "version": "2.21.1",
4
4
  "main": "dist/components.js",
5
5
  "ports": {
6
6
  "fractal": "3000"
package/src/.DS_Store ADDED
Binary file
package/src/app.js CHANGED
@@ -5,7 +5,7 @@ require('./atoms/grid-toggle/grid-toggle');
5
5
  require('./components');
6
6
 
7
7
  const Button = require('./atoms/button/Button');
8
- const { open } = require('./molecules/modal/modal');
8
+ const { open, onClose, onOpen } = require('./molecules/modal/modal');
9
9
 
10
10
  const demoButtons = document.querySelectorAll('button.a-button.has-loader');
11
11
 
@@ -59,3 +59,17 @@ if (demoModal) {
59
59
  });
60
60
  });
61
61
  }
62
+
63
+ // eslint-disable-next-line no-unused-vars
64
+ const unsubscribe = onClose((el, id) => {
65
+ console.log('Global onClose', el, id);
66
+ });
67
+
68
+ // Call unsubscribe to remove callback
69
+
70
+ // eslint-disable-next-line no-unused-vars
71
+ const unsubscribeOpen = onOpen((el, id) => {
72
+ console.log('Global onOpen', el, id);
73
+ });
74
+
75
+ // Call unsubscribe to remove callback
Binary file
Binary file
@@ -136,7 +136,7 @@ function getHTML(editor) {
136
136
  .replace(/<\/p><\/li>/g, '</li>');
137
137
  }
138
138
 
139
- export function setupTextArea(el) {
139
+ export function setupTextArea(el, onChange = () => {}) {
140
140
  const editorEl = document.createElement('div');
141
141
  const editor = new Editor({
142
142
  element: editorEl,
@@ -154,7 +154,9 @@ export function setupTextArea(el) {
154
154
  toogleButtonState(props.editor, editorEl);
155
155
  },
156
156
  onUpdate(props) {
157
- el.value = getHTML(props.editor);
157
+ const html = getHTML(props.editor);
158
+ el.value = html;
159
+ onChange(html);
158
160
  },
159
161
  });
160
162
 
package/src/components.js CHANGED
@@ -23,3 +23,4 @@ import './molecules/glider/glider';
23
23
  import './molecules/glider/glider-single';
24
24
  import './atoms/timeline/anchorScroll';
25
25
  import './molecules/timeline-navigation/timeline-navigation';
26
+ import './molecules/context-menu/context-menu';
Binary file
@@ -4,14 +4,24 @@ module.exports = {
4
4
  context: {
5
5
  name: 'Context menu',
6
6
  controls: 'contextMenu',
7
- focusTrap: true
7
+ focusTrap: true,
8
+ outsideClick: false
8
9
  },
9
10
  variants: [
10
11
  {
11
12
  name: 'No focus trap',
12
13
  context: {
13
14
  controls: 'contextMenu2',
14
- focusTrap: false
15
+ focusTrap: false,
16
+ outsideClick: false
17
+ }
18
+ },
19
+ {
20
+ name: 'Close on outside click',
21
+ context: {
22
+ controls: 'contextMenu3',
23
+ focusTrap: false,
24
+ outsideClick: true
15
25
  }
16
26
  }
17
27
  ]
@@ -1,5 +1,5 @@
1
1
  <nav class="m-context-menu js-context-menu">
2
- <button type="button" class="a-button a-button--icon a-button--transparent a-button--icon js-context-menu-btn" aria-expanded="false" data-a11y-toggle="{{controls}}" aria-controls="{{controls}}">
2
+ <button type="button" class="a-button a-button--icon a-button--transparent a-button--icon js-context-menu-btn" aria-expanded="false" data-a11y-toggle="{{controls}}" aria-controls="{{controls}}" {{#if outsideClick}}data-close-on-outside-click="true"{{/if}}>
3
3
  <span class="a-button__text">Exportera</span>
4
4
  <svg class="icon a-button__icon">
5
5
  <use xlink:href="#icon-download"></use>
@@ -0,0 +1,17 @@
1
+ const elements = document.querySelectorAll('[data-close-on-outside-click]');
2
+
3
+ function closeElement(element) {
4
+ document.addEventListener('mouseup', (e) => {
5
+ const childElement = element.nextElementSibling;
6
+
7
+ /* Close menu on all clicks except the trigger button,
8
+ the menu and it's child elements and if the menu is actually open. */
9
+ if (!element.contains(e.target) && !childElement.contains(e.target) && element.getAttribute('aria-expanded') === 'true') {
10
+ element.click();
11
+ }
12
+ });
13
+ }
14
+
15
+ if (elements) {
16
+ [].forEach.call(elements, closeElement);
17
+ }
@@ -33,6 +33,8 @@ import className from '../../assets/js/className';
33
33
  */
34
34
 
35
35
  const queue = [];
36
+ const globalOnCloseCallbacks = [];
37
+ const globalOnOpenCallbacks = [];
36
38
  let active = null;
37
39
  let incrementId = 0;
38
40
  let modal = null;
@@ -117,6 +119,24 @@ function handleKeyUp(e) {
117
119
  });
118
120
  }
119
121
 
122
+ /**
123
+ * Global onOpen handler
124
+ *
125
+ * @param {Function} cb
126
+ * @returns {number}
127
+ */
128
+ export function onOpen(cb) {
129
+ const index = globalOnOpenCallbacks.push(cb) - 1;
130
+
131
+ return () => {
132
+ globalOnOpenCallbacks.splice(index, 1);
133
+ };
134
+ }
135
+
136
+ function dispatchOnOpenHandlers(el, id) {
137
+ globalOnOpenCallbacks.forEach((cb) => cb(el, id));
138
+ }
139
+
120
140
  /**
121
141
  * Display the active modal.
122
142
  */
@@ -149,6 +169,8 @@ function display() {
149
169
  active.settings.onOpen(active.id, active.el);
150
170
  }
151
171
 
172
+ dispatchOnOpenHandlers(active.el, active.id);
173
+
152
174
  setTimeout(() => {
153
175
  if (active.el.focusTrap) {
154
176
  active.el.focusTrap.activate();
@@ -182,6 +204,24 @@ function dispatch() {
182
204
  display();
183
205
  }
184
206
 
207
+ /**
208
+ * Global onClose handler
209
+ *
210
+ * @param {Function} cb
211
+ * @returns {number}
212
+ */
213
+ export function onClose(cb) {
214
+ const index = globalOnCloseCallbacks.push(cb) - 1;
215
+
216
+ return () => {
217
+ globalOnCloseCallbacks.splice(index, 1);
218
+ };
219
+ }
220
+
221
+ function dispatchOnCloseHandlers(el, id) {
222
+ globalOnCloseCallbacks.forEach((cb) => cb(el, id));
223
+ }
224
+
185
225
  /**
186
226
  * Close currently active modal
187
227
  * and dispatch next in queue.
@@ -194,6 +234,8 @@ function close() {
194
234
  active.settings.onClose(active.id);
195
235
  }
196
236
 
237
+ dispatchOnCloseHandlers(active.el, active.id);
238
+
197
239
  document.removeEventListener('keyup', handleKeyUp);
198
240
 
199
241
  if (active.el.focusTrap) {
@@ -19,6 +19,14 @@ $footer-font-size: 18px; // To ensure all footers on all sites have the same fon
19
19
  z-index: z_index(foreground);
20
20
  }
21
21
 
22
+ @include m(row) {
23
+ display: flex;
24
+ flex-wrap: wrap;
25
+ max-width: none !important;
26
+ margin-right: math.div($grid-gutter-width, -2);
27
+ margin-left: math.div($grid-gutter-width, -2);
28
+ }
29
+
22
30
  @include e(logotype) {
23
31
  width: 100%;
24
32
  max-width: 250px;
@@ -45,98 +53,17 @@ $footer-font-size: 18px; // To ensure all footers on all sites have the same fon
45
53
  }
46
54
 
47
55
  @include e(info) {
56
+ min-height: 445px;
48
57
  background-color: $color-cyberspace;
49
58
  color: $color-snow;
50
59
  -webkit-font-smoothing: antialiased;
51
60
  -moz-osx-font-smoothing: grayscale;
52
61
 
53
- @include e(freetext) {
54
- padding: rhythm(4) rhythm(3);
55
- border-bottom: 1px solid $color-black;
56
-
57
- @include bp-up(xl) {
58
- padding: rhythm(4) rhythm(6);
59
- border-bottom: 0;
60
- }
61
- }
62
-
63
- @include e(contact) {
64
- border-left: 1px solid $color-black;
65
- font-size: 80%;
66
-
67
- @include e(address) {
68
- font-size: inherit;
69
-
70
- @include e(li) {
71
- font-size: #{($footer-font-size) - 3px};
72
- line-height: 1.3;
73
- }
74
- }
75
-
76
- @include bp-up(xxl) {
77
- padding-right: rhythm(1);
78
-
79
- & + & {
80
- padding-right: 0;
81
- padding-left: rhythm(1);
82
- }
83
- }
84
-
85
- @include e(row-first) {
86
- border-bottom: 1px solid $color-black;
87
- }
88
-
89
- @include e(row-second) {
90
- }
91
- }
92
-
93
- @include e(address1) {
94
- padding: rhythm(3);
95
- border-bottom: 1px solid $color-black;
96
-
97
- @include bp-only(md) {
98
- border-bottom: 0;
99
- border-right: 1px solid $color-black;
100
- }
101
-
102
- @include bp-up(xl) {
103
- border-right: 1px solid $color-black;
104
- border-bottom: 0;
105
- padding: rhythm(3) rhythm(3) rhythm(3) rhythm(6);
106
- }
107
- }
108
-
109
- @include e(address2) {
110
- padding: rhythm(3) 0 rhythm(3) rhythm(3);
111
-
112
- @include bp-up(xl) {
113
- padding-left: rhythm(6);
114
- }
115
- }
116
-
117
- @include e(ISO) {
118
- border-right: 1px solid $color-black;
119
- border-bottom: 1px solid $color-black;
62
+ @include e(inner) {
120
63
  padding: rhythm(3);
121
- display: flex;
122
- align-items: center;
123
64
 
124
65
  @include bp-up(md) {
125
- border-bottom: 0;
126
- }
127
-
128
- @include bp-up(xl) {
129
- padding: rhythm(3) rhythm(3) rhythm(3) rhythm(6);
130
- }
131
- }
132
-
133
- @include e(CC) {
134
- padding: rhythm(3);
135
- display: flex;
136
- align-items: center;
137
-
138
- @include bp-up(xl) {
139
- padding-left: rhythm(6);
66
+ padding: rhythm(4) rhythm(5);
140
67
  }
141
68
  }
142
69
  }
@@ -149,8 +76,6 @@ $footer-font-size: 18px; // To ensure all footers on all sites have the same fon
149
76
  font-size: $footer-font-size;
150
77
 
151
78
  a {
152
- @extend %normalize-links;
153
-
154
79
  color: $color-jade;
155
80
  text-decoration: none;
156
81
 
@@ -160,10 +85,17 @@ $footer-font-size: 18px; // To ensure all footers on all sites have the same fon
160
85
  text-decoration: underline;
161
86
  }
162
87
  }
88
+ }
163
89
 
164
- @include bp-up(xxl) {
165
- @include make-col(14);
166
- max-width: rem(612px);
90
+ @include bp-down(md) {
91
+ @include e(paragraph) {
92
+ max-width: 70%;
93
+ }
94
+ }
95
+
96
+ @include bp-down(sm) {
97
+ @include e(paragraph) {
98
+ max-width: none;
167
99
  }
168
100
  }
169
101
 
@@ -171,6 +103,11 @@ $footer-font-size: 18px; // To ensure all footers on all sites have the same fon
171
103
  max-width: 100%;
172
104
  height: auto;
173
105
  background-color: $color-snow;
106
+ }
107
+
108
+ @include e(grid-row) {
109
+ height: 100%;
110
+ overflow: hidden;
174
111
 
175
112
  @include e(item) {
176
113
  display: flex;
@@ -190,15 +127,15 @@ $footer-font-size: 18px; // To ensure all footers on all sites have the same fon
190
127
  }
191
128
 
192
129
  @include bp-up(md) {
193
- flex-basis: 50%;
130
+ flex-basis: 33.333333%;
194
131
  }
195
132
 
196
133
  @include bp-up(lg) {
197
- flex-basis: 33.333333%;
134
+ flex-basis: 50%;
198
135
  }
199
136
 
200
137
  @include bp-up(xl) {
201
- flex-basis: 16.666666%;
138
+ flex-basis: 33.333333%;
202
139
  }
203
140
 
204
141
  @include e(link) {
@@ -263,15 +200,40 @@ $footer-font-size: 18px; // To ensure all footers on all sites have the same fon
263
200
  display: inline-block;
264
201
  max-width: 300px;
265
202
 
266
- @include plumber(
267
- $font-size: 1.7,
268
- $line-height: 2
269
- );
203
+ @include bp-down(lg) {
204
+ @include plumber(
205
+ $font-size: 1.7,
206
+ $line-height: 2
207
+ );
208
+ }
270
209
  }
271
210
  }
272
211
  }
273
212
  }
274
213
 
214
+ @include e(contact) {
215
+ font-size: 80%;
216
+
217
+ @include e(address) {
218
+ margin-bottom: rhythm(2);
219
+ font-size: inherit;
220
+
221
+ @include e(li) {
222
+ font-size: #{($footer-font-size) - 3px};
223
+ line-height: 1.3;
224
+ }
225
+ }
226
+
227
+ @include bp-up(xxl) {
228
+ padding-right: rhythm(1);
229
+
230
+ & + & {
231
+ padding-right: 0;
232
+ padding-left: rhythm(1);
233
+ }
234
+ }
235
+ }
236
+
275
237
  @include e(logo-link) {
276
238
  display: flex;
277
239
  justify-content: center;
@@ -1,11 +1,11 @@
1
1
  module.exports = {
2
- status: 'wip',
2
+ status: 'ready',
3
3
 
4
4
  context: {
5
5
  id: '',
6
6
  footer_text: '<p class="o-footer__paragraph"><a class="o-footer__link" href="https://internetstiftelsen.se">Internetstiftelsen</a> verkar för ett internet som bidrar positivt till människan och samhället. Vi är en oberoende organisation som säkerställer en stark och säker infrastruktur för internet i Sverige. Vårt mål är att alla ska våga och kunna använda internet. Vi finns i Sverige och ansvarar för den svenska toppdomänen .se och driften av toppdomänen .nu.</p>',
7
- contact_1: '<ul class="u-list-clean o-footer__info__contact__address"><li class="o-footer__info__contact__address__li">Internetstiftelsen</li><li class="o-footer__info__contact__address__li">Hammarby Kaj 10D</li><li class="o-footer__info__contact__address__li">Box 92073</li><li class="o-footer__info__contact__address__li">120 07 Stockholm</li></ul>',
8
- contact_2: '<ul class="u-list-clean o-footer__info__contact__address"><li class="o-footer__info__contact__address__li">E-post: <a class="o-footer__link" href="mailto:info@internetstiftelsen.se">info@internetstiftelsen.se</a></li><li class="o-footer__info__contact__address__li">Telefon: <a class="o-footer__link" href="tel:084523500">08-452 35 00</a></li><li class="o-footer__info__contact__address__li">Organisationsnummer: 802405-0190</li></ul>',
7
+ contact_1: '<ul class="u-list-clean o-footer__contact__address"><li class="o-footer__contact__address__li">Internetstiftelsen</li><li class="o-footer__contact__address__li">Hammarby Kaj 10D</li><li class="o-footer__contact__address__li">Box 92073</li><li class="o-footer__contact__address__li">120 07 Stockholm</li></ul>',
8
+ contact_2: '<ul class="u-list-clean o-footer__contact__address"><li class="o-footer__contact__address__li">E-post: <a class="o-footer__link" href="mailto:info@internetstiftelsen.se">info@internetstiftelsen.se</a></li><li class="o-footer__contact__address__li">Telefon: <a class="o-footer__link" href="tel:084523500">08-452 35 00</a></li><li class="o-footer__contact__address__li">Organisationsnummer: 802405-0190</li></ul>',
9
9
  ISO_link: 'https://internetstiftelsen.se/docs/Certifikat_27001_UKAS_sv.pdf',
10
10
  ISO_image: 'https://internetstiftelsen.se/app/themes/internetstiftelsen/images/ISO_27001_2013_black_TM.svg',
11
11
  ISO_text: 'Certifierade enligt ISO/IEC<br>27001:2013',
@@ -21,6 +21,6 @@ module.exports = {
21
21
  site_heading_5: 'Internetmuseum',
22
22
  site_description_5: 'Internetmuseum är ett digitalt museum som byggts, och kureras av Internetstiftelsen',
23
23
  site_heading_6: 'Digitala lektioner',
24
- site_description_6: 'Digitala lektioner är en öppen digital lärresurs från Internetstiftelsen med färdiga lektioner för alla stadier i grundskolan.',
24
+ site_description_6: 'Digitala lektioner är en öppen digital lärresurs från Internetstiftelsen. Du hittar färdiga lektioner inom olika ämnesområden för alla stadier i grundskolan',
25
25
  }
26
26
  }
@@ -1,131 +1,121 @@
1
1
  <div class="wrapper-fluid">
2
- <div class="o-footer" id="siteFooter">
3
- <div class="row">
4
- <div class="grid-18 o-footer__info">
5
- <div class="row">
6
- <div class="grid-18 grid-lg-9 o-footer__info__freetext">
7
- {{{footer_text}}}
2
+ <div class="o-footer--row o-footer" id="siteFooter">
3
+ <div class="grid-xl-7 grid-lg-9 grid-18 o-footer__info">
4
+ <div class="o-footer__info__inner">
5
+ {{{footer_text}}}
6
+ <div class="o-footer--row">
7
+ <div class="grid-xxl-9 grid-18 o-footer__contact">
8
+ {{{contact_1}}}
8
9
  </div>
9
- <div class="grid-18 grid-lg-9 o-footer__info__contact">
10
- <div class="row o-footer__info__contact__row-first">
11
- <div class="grid-md-9 grid-lg-18 grid-xl-9 grid-18 o-footer__info__address1">
12
- {{{contact_1}}}
10
+ <div class="grid-xxl-9 grid-18 o-footer__contact">
11
+ {{{contact_2}}}
12
+ </div>
13
+ </div>
14
+ <div class="o-footer--row u-m-t-2 align-items-center">
15
+ <div class="o-footer-grid">
16
+ <a href="{{ISO_link}}" class="o-footer__link o-footer__external-link">
17
+ <img src="{{ISO_image}}" class="o-footer__external-logo" alt="Certifierade enligt ISO/IEC 27001:2013">
18
+ <span>{{{ISO_text}}}</span>
19
+ </a>
20
+ </div>
21
+ <div class="o-footer-grid">
22
+ <a href="https://creativecommons.org/licenses/by/4.0/legalcode.sv" class="o-footer__link o-footer__external-link">
23
+ <img class="o-footer__external-logo" src="https://svenskarnaochinternet.se/app/uploads/2019/10/ccby.png" alt="{{CC_license}}">
24
+ <span>{{{CC_license}}}</span>
25
+ </a>
26
+ </div>
27
+ </div>
28
+ </div>
29
+ </div>
30
+ <div class="grid-xl-11 grid-lg-9 grid-18 o-footer__logotypes">
31
+ <div class="o-footer--row o-footer__grid-row">
32
+ <div class="o-footer__grid-row__item">
33
+ <a href="https://svenskarnaochinternet.se" class="o-footer__grid-row__item__link">
34
+ <div class="o-footer__grid-row__item__inner">
35
+ <div class="o-footer__grid-row__item__front">
36
+ <img class="o-footer__logotype" alt="Svenskarna och internet" src="https://static.iis.se/images/logotypes/svenskarna-och-internet.svg">
13
37
  </div>
14
- <div class="grid-md-9 grid-lg-18 grid-xl-9 grid-18 o-footer__info__address2">
15
- {{{contact_2}}}
38
+ <div class="o-footer__grid-row__item__back">
39
+ <h2>{{site_heading_1}}</h2>
40
+ <span>{{site_description_1}}</span>
16
41
  </div>
17
42
  </div>
18
- <div class="row o-footer__info__contact__row-second">
19
- <div class="grid-19 grid-md-9 o-footer__info__ISO">
20
- <a href="{{ISO_link}}" class="o-footer__link o-footer__external-link">
21
- <img src="{{ISO_image}}" class="o-footer__external-logo" alt="Certifierade enligt ISO/IEC 27001:2013">
22
- <span>{{{ISO_text}}}</span>
23
- </a>
43
+ </a>
44
+ </div>
45
+ <div class="o-footer__grid-row__item">
46
+ <a href="https://internetdagarna.se" class="o-footer__grid-row__item__link">
47
+ <div class="o-footer__grid-row__item__inner">
48
+ <div class="o-footer__grid-row__item__front">
49
+ <img class="o-footer__logotype" alt="Internetdagarna" src="https://static.iis.se/images/logotypes/internetdagarna.svg">
24
50
  </div>
25
- <div class="grid-19 grid-md-9 o-footer__info__CC">
26
- <a href="https://creativecommons.org/licenses/by/4.0/legalcode.sv" class="o-footer__link o-footer__external-link">
27
- <img class="o-footer__external-logo" src="https://svenskarnaochinternet.se/app/uploads/2019/10/ccby.png" alt="{{CC_license}}">
28
- <span>{{{CC_license}}}</span>
29
- </a>
51
+ <div class="o-footer__grid-row__item__back">
52
+ <h2>{{site_heading_2}}</h2>
53
+ <span>{{site_description_2}}</span>
30
54
  </div>
31
55
  </div>
32
- </div>
56
+ </a>
33
57
  </div>
34
- </div>
35
- </div>
36
- <div class="row">
37
- <div class="grid-18 o-footer__logotypes">
38
- <div class="row">
39
- <div class="o-footer__logotypes__item">
40
- <a href="https://svenskarnaochinternet.se" class="o-footer__logotypes__item__link">
41
- <div class="o-footer__logotypes__item__inner">
42
- <div class="o-footer__logotypes__item__front">
43
- <img class="o-footer__logotype" alt="Svenskarna och internet" src="https://static.iis.se/images/logotypes/svenskarna-och-internet.svg">
44
- </div>
45
- <div class="o-footer__logotypes__item__back">
46
- <h2>{{site_heading_1}}</h2>
47
- <span>{{site_description_1}}</span>
48
- </div>
58
+ <div class="o-footer__grid-row__item">
59
+ <a href="https://goto10.se" class="o-footer__grid-row__item__link">
60
+ <div class="o-footer__grid-row__item__inner">
61
+ <div class="o-footer__grid-row__item__front">
62
+ <img class="o-footer__logotype" alt="Goto10" src="https://static.iis.se/images/logotypes/goto-10.svg">
49
63
  </div>
50
- </a>
51
- </div>
52
- <div class="o-footer__logotypes__item">
53
- <a href="https://internetdagarna.se" class="o-footer__logotypes__item__link">
54
- <div class="o-footer__logotypes__item__inner">
55
- <div class="o-footer__logotypes__item__front">
56
- <img class="o-footer__logotype" alt="Internetdagarna" src="https://static.iis.se/images/logotypes/internetdagarna.svg">
57
- </div>
58
- <div class="o-footer__logotypes__item__back">
59
- <h2>{{site_heading_2}}</h2>
60
- <span>{{site_description_2}}</span>
61
- </div>
64
+ <div class="o-footer__grid-row__item__back">
65
+ <h2>{{site_heading_3}}</h2>
66
+ <span>{{site_description_3}}</span>
62
67
  </div>
63
- </a>
64
- </div>
65
- <div class="o-footer__logotypes__item">
66
- <a href="https://goto10.se" class="o-footer__logotypes__item__link">
67
- <div class="o-footer__logotypes__item__inner">
68
- <div class="o-footer__logotypes__item__front">
69
- <img class="o-footer__logotype" alt="Goto10" src="https://static.iis.se/images/logotypes/goto-10.svg">
70
- </div>
71
- <div class="o-footer__logotypes__item__back">
72
- <h2>{{site_heading_3}}</h2>
73
- <span>{{site_description_3}}</span>
74
- </div>
68
+ </div>
69
+ </a>
70
+ </div>
71
+ <div class="o-footer__grid-row__item">
72
+ <a href="https://bredbandskollen.se" class="o-footer__grid-row__item__link">
73
+ <div class="o-footer__grid-row__item__inner">
74
+ <div class="o-footer__grid-row__item__front">
75
+ <img class="o-footer__logotype" alt="Bredbandskollen" src="https://static.iis.se/images/logotypes/bredbandskollen.svg">
75
76
  </div>
76
- </a>
77
- </div>
78
- <div class="o-footer__logotypes__item">
79
- <a href="https://bredbandskollen.se" class="o-footer__logotypes__item__link">
80
- <div class="o-footer__logotypes__item__inner">
81
- <div class="o-footer__logotypes__item__front">
82
- <img class="o-footer__logotype" alt="Bredbandskollen" src="https://static.iis.se/images/logotypes/bredbandskollen.svg">
83
- </div>
84
- <div class="o-footer__logotypes__item__back">
85
- <h2>{{site_heading_4}}</h2>
86
- <span>{{site_description_4}}</span>
87
- </div>
77
+ <div class="o-footer__grid-row__item__back">
78
+ <h2>{{site_heading_4}}</h2>
79
+ <span>{{site_description_4}}</span>
88
80
  </div>
89
- </a>
90
- </div>
91
- <div class="o-footer__logotypes__item">
92
- <a href="https://internetmuseum.se" class="o-footer__logotypes__item__link">
93
- <div class="o-footer__logotypes__item__inner">
94
- <div class="o-footer__logotypes__item__front">
95
- <img class="o-footer__logotype" alt="Internetmuseum" src="https://static.iis.se/images/logotypes/internetmuseum.svg">
96
- </div>
97
- <div class="o-footer__logotypes__item__back">
98
- <h2>{{site_heading_5}}</h2>
99
- <span>{{site_description_5}}</span>
100
- </div>
81
+ </div>
82
+ </a>
83
+ </div>
84
+ <div class="o-footer__grid-row__item">
85
+ <a href="https://internetmuseum.se" class="o-footer__grid-row__item__link">
86
+ <div class="o-footer__grid-row__item__inner">
87
+ <div class="o-footer__grid-row__item__front">
88
+ <img class="o-footer__logotype" alt="Internetmuseum" src="https://static.iis.se/images/logotypes/internetmuseum.svg">
101
89
  </div>
102
- </a>
103
- </div>
104
- <div class="o-footer__logotypes__item">
105
- <a href="https://digitalalektioner.se" class="o-footer__logotypes__item__link">
106
- <div class="o-footer__logotypes__item__inner">
107
- <div class="o-footer__logotypes__item__front">
108
- <img class="o-footer__logotype" alt="Digitala lektioner" src="https://static.iis.se/images/logotypes/digitala-lektioner.svg">
109
- </div>
110
- <div class="o-footer__logotypes__item__back">
111
- <h2>{{site_heading_6}}</h2>
112
- <span>{{site_description_6}}</span>
113
- </div>
90
+ <div class="o-footer__grid-row__item__back">
91
+ <h2>{{site_heading_5}}</h2>
92
+ <span>{{site_description_5}}</span>
114
93
  </div>
115
- </a>
116
- </div>
94
+ </div>
95
+ </a>
96
+ </div>
97
+ <div class="o-footer__grid-row__item">
98
+ <a href="https://digitalalektioner.se" class="o-footer__grid-row__item__link">
99
+ <div class="o-footer__grid-row__item__inner">
100
+ <div class="o-footer__grid-row__item__front">
101
+ <img class="o-footer__logotype" alt="Digitala lektioner" src="https://static.iis.se/images/logotypes/digitala-lektioner.svg">
102
+ </div>
103
+ <div class="o-footer__grid-row__item__back">
104
+ <h2>{{site_heading_6}}</h2>
105
+ <span>{{site_description_6}}</span>
106
+ </div>
107
+ </div>
108
+ </a>
117
109
  </div>
118
110
  </div>
119
111
  </div>
120
- <div class="row">
121
- <div class="u-p-y-1 o-footer__bottom-links">
122
- <nav>
123
- <ul class="u-list-clean display-flex">
124
- <li class="u-p-x-1"><a href="https://internetstiftelsen.se/om-webbplatsen/" class="o-footer__link o-footer__about-link">Om webbplatsen</a></li>
125
- <li class="u-p-x-1"><a href="https://internetstiftelsen.se/om-webbplatsen/cookies/" class="o-footer__link o-footer__about-link">Om cookies</a></li>
126
- </ul>
127
- </nav>
128
- </div>
112
+ <div class="u-p-y-1 o-footer__bottom-links">
113
+ <nav>
114
+ <ul class="u-list-clean display-flex">
115
+ <li class="u-p-x-1"><a href="https://internetstiftelsen.se/om-webbplatsen/" class="o-footer__link o-footer__about-link">Om webbplatsen</a></li>
116
+ <li class="u-p-x-1"><a href="https://internetstiftelsen.se/om-webbplatsen/cookies/" class="o-footer__link o-footer__about-link">Om cookies</a></li>
117
+ </ul>
118
+ </nav>
129
119
  </div>
130
120
  </div>
131
121
  </div>
@@ -11,6 +11,11 @@ $fill-color: $color-black;
11
11
  background-position: center center !important;
12
12
 
13
13
  // Sizes
14
+ @include m(smallest) {
15
+ width: $icon-size-smallest !important;
16
+ height: $icon-size-smallest !important;
17
+ }
18
+
14
19
  @include m(small) {
15
20
  width: $icon-size-small !important;
16
21
  height: $icon-size-small !important;