@internetstiftelsen/styleguide 5.0.19 → 5.1.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 (92) hide show
  1. package/dist/app.js +71 -0
  2. package/dist/assets/js/Events.js +43 -77
  3. package/dist/assets/js/RequestError.js +16 -31
  4. package/dist/assets/js/anchorScroll.js +22 -15
  5. package/dist/assets/js/charCounter.js +100 -142
  6. package/dist/assets/js/className.js +19 -20
  7. package/dist/assets/js/conditional.js +96 -152
  8. package/dist/assets/js/debounce.js +15 -22
  9. package/dist/assets/js/el.js +108 -159
  10. package/dist/assets/js/getCookieByName.js +13 -11
  11. package/dist/assets/js/hasCookieConsent.js +30 -40
  12. package/dist/assets/js/htmlTextLength.js +12 -10
  13. package/dist/assets/js/iconToggle.js +16 -20
  14. package/dist/assets/js/nodeAdded.js +40 -53
  15. package/dist/assets/js/objToQuery.js +25 -41
  16. package/dist/assets/js/offset.js +29 -25
  17. package/dist/assets/js/ot.js +10 -13
  18. package/dist/assets/js/parallax.js +23 -23
  19. package/dist/assets/js/queryToObj.js +16 -22
  20. package/dist/assets/js/readSpeakerHandling.js +26 -28
  21. package/dist/assets/js/request.js +43 -52
  22. package/dist/assets/js/responsivePosition.js +46 -74
  23. package/dist/assets/js/stringToNode.js +11 -10
  24. package/dist/assets/js/template.js +15 -21
  25. package/dist/assets/js/textToggle.js +19 -24
  26. package/dist/assets/js/track.js +14 -12
  27. package/dist/assets/js/uid.js +10 -6
  28. package/dist/assets/js/utmGenerator.js +27 -33
  29. package/dist/assets/js/validationMessage.js +18 -25
  30. package/dist/assets/js/youtube.js +134 -170
  31. package/dist/atoms/button/Button.js +42 -55
  32. package/dist/atoms/file/file.js +25 -29
  33. package/dist/atoms/file/filePreview.js +27 -31
  34. package/dist/atoms/grid-toggle/grid-toggle.js +6 -9
  35. package/dist/atoms/height-limiter/height-limiter.js +37 -50
  36. package/dist/atoms/password-toggle/password-toggle.js +9 -11
  37. package/dist/atoms/range/range.js +32 -39
  38. package/dist/atoms/textarea/rich-text.js +221 -251
  39. package/dist/atoms/tooltip/tooltip.js +13 -17
  40. package/dist/components.js +42 -77
  41. package/dist/focusTrap.js +66 -77
  42. package/dist/molecules/alert/alert.js +15 -20
  43. package/dist/molecules/context-menu/context-menu.js +11 -16
  44. package/dist/molecules/continue-video-guide/continue-video-guide.js +90 -101
  45. package/dist/molecules/cookie-disclaimer/cookie-disclaimer.js +24 -33
  46. package/dist/molecules/form/Form.js +242 -352
  47. package/dist/molecules/form/index.js +15 -14
  48. package/dist/molecules/glider/glider-course.js +62 -75
  49. package/dist/molecules/glider/glider-hero.js +88 -101
  50. package/dist/molecules/glider/glider.js +49 -45
  51. package/dist/molecules/modal/modal.js +256 -325
  52. package/dist/molecules/multi-select/multi-select.js +198 -304
  53. package/dist/molecules/natural-language-form/natural-language-form.js +32 -46
  54. package/dist/molecules/overview-navigation/overview-navigation.js +90 -141
  55. package/dist/molecules/share/share.js +15 -20
  56. package/dist/molecules/system-error/system-error.js +6 -9
  57. package/dist/organisms/accordion/accordion.js +44 -50
  58. package/dist/organisms/footer/footer.js +1 -1
  59. package/dist/organisms/haveibeenpwned/haveibeenpwned.js +17 -16
  60. package/dist/organisms/mailchimp/mailchimp.js +72 -89
  61. package/dist/organisms/map-box/map-box.js +3 -4
  62. package/dist/organisms/mega-menu/mega-menu.js +177 -212
  63. package/dist/organisms/podcast/podcast.js +192 -215
  64. package/dist/organisms/schedule/schedule-filter.js +9 -15
  65. package/dist/organisms/tabs/tabs.js +194 -253
  66. package/dist/organisms/timeline/openTimelineItem.js +38 -51
  67. package/dist/organisms/timeline/timeline.js +111 -128
  68. package/dist/organisms/video-guide/VideoGuidePlayback.js +210 -286
  69. package/dist/organisms/video-guide/VideoGuideSubtitles.js +57 -80
  70. package/dist/organisms/video-guide/VideoGuideTimeline.js +74 -108
  71. package/dist/organisms/video-guide/getCurrentCueIndex.js +11 -9
  72. package/dist/organisms/video-guide/video-guide.js +66 -103
  73. package/dist/utilities/tab-highlighting/tab-highlighting.js +14 -22
  74. package/dist/vendor/toggle/a11y.toggle-switcher.js +10 -16
  75. package/package.json +78 -99
  76. package/src/app.js +5 -5
  77. package/src/assets/js/anchorScroll.js +1 -1
  78. package/src/assets/js/offset.js +1 -1
  79. package/src/atoms/button/Button.js +1 -1
  80. package/src/atoms/icon/richtext-ordered-list.svg +1 -1
  81. package/src/atoms/icon/sprite.svg +6 -5
  82. package/src/molecules/glider/glider-course.js +0 -2
  83. package/src/molecules/glider/glider.js +2 -2
  84. package/src/organisms/accordion/accordion.js +1 -2
  85. package/src/organisms/timeline/timeline.js +2 -3
  86. package/dist/atoms/timeline/anchorScroll.js +0 -13
  87. package/dist/atoms/toggle-high-contrast/toggle-high-contrast.js +0 -12
  88. package/dist/molecules/glider/glider-single.js +0 -68
  89. package/dist/molecules/modal/modal-graph.js +0 -40
  90. package/dist/molecules/timeline-navigation/timeline-navigation.js +0 -34
  91. /package/src/atoms/icon/{heading-3.svg → richtext-heading-3.svg} +0 -0
  92. /package/src/molecules/alert/{_alert.scss → alert.scss} +0 -0
@@ -1,274 +1,244 @@
1
- 'use strict';
2
-
1
+ "use strict";
3
2
  Object.defineProperty(exports, "__esModule", {
4
- value: true
3
+ value: true
5
4
  });
6
- exports.setupTextArea = setupTextArea;
7
- exports.init = init;
8
-
9
- var _core = require('@tiptap/core');
10
-
11
- var _extensionDocument = require('@tiptap/extension-document');
12
-
13
- var _extensionDocument2 = _interopRequireDefault(_extensionDocument);
14
-
15
- var _extensionParagraph = require('@tiptap/extension-paragraph');
16
-
17
- var _extensionParagraph2 = _interopRequireDefault(_extensionParagraph);
18
-
19
- var _extensionText = require('@tiptap/extension-text');
20
-
21
- var _extensionText2 = _interopRequireDefault(_extensionText);
22
-
23
- var _extensionBulletList = require('@tiptap/extension-bullet-list');
24
-
25
- var _extensionBulletList2 = _interopRequireDefault(_extensionBulletList);
26
-
27
- var _extensionOrderedList = require('@tiptap/extension-ordered-list');
28
-
29
- var _extensionOrderedList2 = _interopRequireDefault(_extensionOrderedList);
30
-
31
- var _extensionHeading = require('@tiptap/extension-heading');
32
-
33
- var _extensionHeading2 = _interopRequireDefault(_extensionHeading);
34
-
35
- var _extensionListItem = require('@tiptap/extension-list-item');
36
-
37
- var _extensionListItem2 = _interopRequireDefault(_extensionListItem);
38
-
39
- var _extensionBold = require('@tiptap/extension-bold');
40
-
41
- var _extensionBold2 = _interopRequireDefault(_extensionBold);
42
-
43
- var _extensionItalic = require('@tiptap/extension-italic');
44
-
45
- var _extensionItalic2 = _interopRequireDefault(_extensionItalic);
46
-
47
- var _extensionLink = require('@tiptap/extension-link');
48
-
49
- var _extensionHistory = require('@tiptap/extension-history');
50
-
51
- var _extensionHistory2 = _interopRequireDefault(_extensionHistory);
52
-
53
- var _className = require('../../assets/js/className');
54
-
55
- var _className2 = _interopRequireDefault(_className);
56
-
57
- var _modal = require('../../molecules/modal/modal');
58
-
59
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
60
-
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ init: function() {
13
+ return init;
14
+ },
15
+ setupTextArea: function() {
16
+ return setupTextArea;
17
+ }
18
+ });
19
+ const _core = require("@tiptap/core");
20
+ const _extensiondocument = /*#__PURE__*/ _interop_require_default(require("@tiptap/extension-document"));
21
+ const _extensionparagraph = /*#__PURE__*/ _interop_require_default(require("@tiptap/extension-paragraph"));
22
+ const _extensiontext = /*#__PURE__*/ _interop_require_default(require("@tiptap/extension-text"));
23
+ const _extensionbulletlist = /*#__PURE__*/ _interop_require_default(require("@tiptap/extension-bullet-list"));
24
+ const _extensionorderedlist = /*#__PURE__*/ _interop_require_default(require("@tiptap/extension-ordered-list"));
25
+ const _extensionheading = /*#__PURE__*/ _interop_require_default(require("@tiptap/extension-heading"));
26
+ const _extensionlistitem = /*#__PURE__*/ _interop_require_default(require("@tiptap/extension-list-item"));
27
+ const _extensionbold = /*#__PURE__*/ _interop_require_default(require("@tiptap/extension-bold"));
28
+ const _extensionitalic = /*#__PURE__*/ _interop_require_default(require("@tiptap/extension-italic"));
29
+ const _extensionlink = require("@tiptap/extension-link");
30
+ const _extensionhistory = /*#__PURE__*/ _interop_require_default(require("@tiptap/extension-history"));
31
+ const _className = /*#__PURE__*/ _interop_require_default(require("../../assets/js/className"));
32
+ const _modal = require("../../molecules/modal/modal");
33
+ function _interop_require_default(obj) {
34
+ return obj && obj.__esModule ? obj : {
35
+ default: obj
36
+ };
37
+ }
61
38
  function clearAndCapitalize(str) {
62
- return str.replace(/-/, '').toUpperCase();
39
+ return str.replace(/-/, '').toUpperCase();
63
40
  }
64
-
65
41
  function kebabToCamel(str) {
66
- return str.replace(/-\w/g, clearAndCapitalize);
42
+ return str.replace(/-\w/g, clearAndCapitalize);
67
43
  }
68
-
69
44
  function kebabToPascal(str) {
70
- return str.replace(/(^\w|-\w)/g, clearAndCapitalize);
45
+ return str.replace(/(^\w|-\w)/g, clearAndCapitalize);
71
46
  }
72
-
73
47
  function insertHeading(button, editor) {
74
-
75
- var levelAttr = button.dataset.richTextControl;
76
-
77
- var level = parseInt(levelAttr.replace('heading-', ''), 10);
78
-
79
- editor.commands.toggleHeading({ level: level });
80
-
81
- var toolbar = button.parentElement; // The toolbar div
82
- var headingButtons = toolbar.querySelectorAll('button[data-rich-text-control^="heading-"]');
83
-
84
- headingButtons.forEach(function (btn) {
85
- btn.classList.remove('is-active');
86
- });
87
-
88
- if (editor.isActive('heading', { level: level })) {
89
- button.classList.add('is-active');
90
- }
48
+ const levelAttr = button.dataset.richTextControl;
49
+ const level = parseInt(levelAttr.replace('heading-', ''), 10);
50
+ editor.commands.toggleHeading({
51
+ level
52
+ });
53
+ const toolbar = button.parentElement; // The toolbar div
54
+ const headingButtons = toolbar.querySelectorAll('button[data-rich-text-control^="heading-"]');
55
+ headingButtons.forEach((btn)=>{
56
+ btn.classList.remove('is-active');
57
+ });
58
+ if (editor.isActive('heading', {
59
+ level
60
+ })) {
61
+ button.classList.add('is-active');
62
+ }
91
63
  }
92
-
93
64
  function insertLink(el, editor) {
94
- var addLink = function addLink(e, modal, close) {
95
- e.preventDefault();
96
-
97
- var value = modal.querySelector('input').value.trim();
98
-
99
- if (!value.length) {
100
- editor.commands.unsetLink();
101
- } else {
102
- var isAbsolute = new RegExp('(?:^[a-z][a-z0-9+.-]*:|//)', 'i');
103
-
104
- if (!isAbsolute.test(value)) {
105
- value = 'https://' + value;
106
- }
107
-
108
- editor.commands.toggleLink({ href: value });
109
- }
110
-
111
- close();
112
- };
113
-
114
- if (editor.view.state.selection.empty) {
115
- return;
116
- }
117
-
118
- var currentValue = editor.getAttributes('link').href ? editor.getAttributes('link').href : '';
119
-
120
- (0, _modal.open)({
121
- title: 'Lägg till länk',
122
- content: '\n\t\t\t<p class="u-m-b-0 u-m-t-default"><input type="url" value="' + currentValue + '" class="' + (0, _className2.default)('a-input') + '"></p>\n\t\t',
123
- actions: [{
124
- text: 'Avbryt',
125
- color: 'transparent',
126
- attrs: {
127
- 'data-modal-close': null
128
- }
129
- }, {
130
- text: 'Spara',
131
- modifier: 'primary',
132
- key: 'enter',
133
- onClick: addLink
134
- }]
135
- }, {
136
- onOpen: function onOpen(id, modal) {
137
- modal.querySelector('input').focus();
138
- }
139
- });
65
+ const addLink = (e, modal, close)=>{
66
+ e.preventDefault();
67
+ let value = modal.querySelector('input').value.trim();
68
+ if (!value.length) {
69
+ editor.commands.unsetLink();
70
+ } else {
71
+ const isAbsolute = new RegExp('(?:^[a-z][a-z0-9+.-]*:|//)', 'i');
72
+ if (!isAbsolute.test(value)) {
73
+ value = `https://${value}`;
74
+ }
75
+ editor.commands.toggleLink({
76
+ href: value
77
+ });
78
+ }
79
+ close();
80
+ };
81
+ if (editor.view.state.selection.empty) {
82
+ return;
83
+ }
84
+ const currentValue = editor.getAttributes('link').href ? editor.getAttributes('link').href : '';
85
+ (0, _modal.open)({
86
+ title: 'Lägg till länk',
87
+ content: `
88
+ <p class="u-m-b-0 u-m-t-default"><input type="url" value="${currentValue}" class="${(0, _className.default)('a-input')}"></p>
89
+ `,
90
+ actions: [
91
+ {
92
+ text: 'Avbryt',
93
+ color: 'transparent',
94
+ attrs: {
95
+ 'data-modal-close': null
96
+ }
97
+ },
98
+ {
99
+ text: 'Spara',
100
+ modifier: 'primary',
101
+ key: 'enter',
102
+ onClick: addLink
103
+ }
104
+ ]
105
+ }, {
106
+ onOpen (id, modal) {
107
+ modal.querySelector('input').focus();
108
+ }
109
+ });
140
110
  }
141
-
142
111
  function createToolbarButton(el, control, editor) {
143
- var button = document.createElement('button');
144
- var iconId = ['link'].includes(control) ? control : 'richtext-' + control;
145
-
146
- button.setAttribute('data-rich-text-control', control);
147
- button.value = kebabToCamel(control);
148
- button.innerHTML = '\n\t\t<span class="u-visuallyhidden">' + control.replace('-', ' ') + '</span>\n\t\t<svg class="icon">\n\t\t\t<use xlink:href="#icon-' + iconId + '"></use>\n\t\t</svg>\n\t';
149
-
150
- el.appendChild(button);
151
-
152
- button.addEventListener('click', function (e) {
153
- e.preventDefault();
154
-
155
- if (control === 'link') {
156
- insertLink(el, editor);
157
- } else if (control === 'heading-2' || control === 'heading-3') {
158
- insertHeading(button, editor);
159
- } else {
160
- var method = 'toggle' + kebabToPascal(control);
161
-
162
- editor.chain().focus()[method]().run();
163
- }
164
- });
112
+ const button = document.createElement('button');
113
+ const iconId = [
114
+ 'link'
115
+ ].includes(control) ? control : `richtext-${control}`;
116
+ button.setAttribute('data-rich-text-control', control);
117
+ button.value = kebabToCamel(control);
118
+ button.innerHTML = `
119
+ <span class="u-visuallyhidden">${control.replace('-', ' ')}</span>
120
+ <svg class="icon">
121
+ <use xlink:href="#icon-${iconId}"></use>
122
+ </svg>
123
+ `;
124
+ el.appendChild(button);
125
+ button.addEventListener('click', (e)=>{
126
+ e.preventDefault();
127
+ if (control === 'link') {
128
+ insertLink(el, editor);
129
+ } else if (control === 'heading-2' || control === 'heading-3') {
130
+ insertHeading(button, editor);
131
+ } else {
132
+ const method = `toggle${kebabToPascal(control)}`;
133
+ editor.chain().focus()[method]().run();
134
+ }
135
+ });
165
136
  }
166
-
167
137
  function toogleButtonState(editor, el) {
168
- var buttons = el.parentNode.querySelectorAll('[data-rich-text-control]');
169
-
170
- buttons.forEach(function (button) {
171
- var control = button.getAttribute('data-rich-text-control');
172
- var value = kebabToCamel(control);
173
-
174
- // 🧠 Handle heading separately
175
- if (control === 'heading-2' || control === 'heading-3') {
176
- var level = parseInt(control.replace('heading-', ''), 10);
177
- if (editor.isActive('heading', { level: level })) {
178
- button.classList.add('is-active');
179
- } else {
180
- button.classList.remove('is-active');
181
- }
182
- return;
183
- }
184
-
185
- // 🔠 Handle all others like bold, italic, bullet-list, etc.
186
- if (editor.isActive(value)) {
187
- button.classList.add('is-active');
188
- } else {
189
- button.classList.remove('is-active');
190
- }
191
-
192
- // 🔗 Special logic for link
193
- if (value === 'link') {
194
- button.disabled = editor.view.state.selection.empty;
195
- }
196
- });
138
+ const buttons = el.parentNode.querySelectorAll('[data-rich-text-control]');
139
+ buttons.forEach((button)=>{
140
+ const control = button.getAttribute('data-rich-text-control');
141
+ const value = kebabToCamel(control);
142
+ // 🧠 Handle heading separately
143
+ if (control === 'heading-2' || control === 'heading-3') {
144
+ const level = parseInt(control.replace('heading-', ''), 10);
145
+ if (editor.isActive('heading', {
146
+ level
147
+ })) {
148
+ button.classList.add('is-active');
149
+ } else {
150
+ button.classList.remove('is-active');
151
+ }
152
+ return;
153
+ }
154
+ // 🔠 Handle all others like bold, italic, bullet-list, etc.
155
+ if (editor.isActive(value)) {
156
+ button.classList.add('is-active');
157
+ } else {
158
+ button.classList.remove('is-active');
159
+ }
160
+ // 🔗 Special logic for link
161
+ if (value === 'link') {
162
+ button.disabled = editor.view.state.selection.empty;
163
+ }
164
+ });
197
165
  }
198
-
199
166
  function createToolbar(el, editor) {
200
- var toolbar = document.createElement('div');
201
-
202
- toolbar.className = (0, _className2.default)('a-textarea__toolbar');
203
-
204
- el.parentNode.insertBefore(toolbar, el);
205
-
206
- ['heading-2', 'heading-3', 'bold', 'italic', 'link', 'bullet-list', 'ordered-list'].forEach(function (control) {
207
- createToolbarButton(toolbar, control, editor);
208
- });
167
+ const toolbar = document.createElement('div');
168
+ toolbar.className = (0, _className.default)('a-textarea__toolbar');
169
+ el.parentNode.insertBefore(toolbar, el);
170
+ [
171
+ 'heading-2',
172
+ 'heading-3',
173
+ 'bold',
174
+ 'italic',
175
+ 'link',
176
+ 'bullet-list',
177
+ 'ordered-list'
178
+ ].forEach((control)=>{
179
+ createToolbarButton(toolbar, control, editor);
180
+ });
209
181
  }
210
-
211
182
  function getHTML(editor) {
212
- var html = editor.getHTML();
213
-
214
- return html.replace(/<li><p>/g, '<li>').replace(/<\/p><\/li>/g, '</li>');
183
+ const html = editor.getHTML();
184
+ return html.replace(/<li><p>/g, '<li>').replace(/<\/p><\/li>/g, '</li>');
215
185
  }
216
-
217
- function setupTextArea(el) {
218
- var onChange = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};
219
-
220
- var editorEl = document.createElement('div');
221
- var editor = new _core.Editor({
222
- element: editorEl,
223
- extensions: [_extensionDocument2.default, _extensionParagraph2.default, _extensionText2.default, _extensionListItem2.default, _extensionBulletList2.default, _extensionOrderedList2.default, _extensionHeading2.default.configure({
224
- levels: [2, 3]
225
- }), _extensionBold2.default, _extensionItalic2.default, _extensionLink.Link.configure({
226
- openOnClick: false,
227
- HTMLAttributes: {
228
- class: 'u-link'
229
- }
230
- }), _extensionHistory2.default.configure({
231
- depth: 10
232
- })],
233
- content: el.value,
234
- onTransaction: function onTransaction(props) {
235
- toogleButtonState(props.editor, editorEl);
236
- },
237
- onUpdate: function onUpdate(props) {
238
- var html = getHTML(props.editor);
239
-
240
- el.value = html;
241
- onChange(html);
242
- }
243
- });
244
-
245
- editorEl.className = el.className;
246
- editorEl.classList.add((0, _className2.default)('a-textarea--rich-text'));
247
-
248
- el.classList.add((0, _className2.default)('a-textarea--hidden'));
249
- el.editor = editor;
250
-
251
- el.parentNode.insertBefore(editorEl, el);
252
-
253
- createToolbar(editorEl, editor);
254
-
255
- var event = new CustomEvent('editor-ready', {
256
- detail: {
257
- editor: editor
258
- }
259
- });
260
-
261
- el.dispatchEvent(event);
186
+ function setupTextArea(el, onChange = ()=>{}) {
187
+ const editorEl = document.createElement('div');
188
+ const editor = new _core.Editor({
189
+ element: editorEl,
190
+ extensions: [
191
+ _extensiondocument.default,
192
+ _extensionparagraph.default,
193
+ _extensiontext.default,
194
+ _extensionlistitem.default,
195
+ _extensionbulletlist.default,
196
+ _extensionorderedlist.default,
197
+ _extensionheading.default.configure({
198
+ levels: [
199
+ 2,
200
+ 3
201
+ ]
202
+ }),
203
+ _extensionbold.default,
204
+ _extensionitalic.default,
205
+ _extensionlink.Link.configure({
206
+ openOnClick: false,
207
+ HTMLAttributes: {
208
+ class: 'u-link'
209
+ }
210
+ }),
211
+ _extensionhistory.default.configure({
212
+ depth: 10
213
+ })
214
+ ],
215
+ content: el.value,
216
+ onTransaction (props) {
217
+ toogleButtonState(props.editor, editorEl);
218
+ },
219
+ onUpdate (props) {
220
+ const html = getHTML(props.editor);
221
+ el.value = html;
222
+ onChange(html);
223
+ }
224
+ });
225
+ editorEl.className = el.className;
226
+ editorEl.classList.add((0, _className.default)('a-textarea--rich-text'));
227
+ el.classList.add((0, _className.default)('a-textarea--hidden'));
228
+ el.editor = editor;
229
+ el.parentNode.insertBefore(editorEl, el);
230
+ createToolbar(editorEl, editor);
231
+ const event = new CustomEvent('editor-ready', {
232
+ detail: {
233
+ editor
234
+ }
235
+ });
236
+ el.dispatchEvent(event);
262
237
  }
263
-
264
238
  function init() {
265
- var els = document.querySelectorAll('textarea[data-rich-text]');
266
-
267
- if (els.length) {
268
- [].forEach.call(els, function (el) {
269
- return setupTextArea(el);
270
- });
271
- }
239
+ const els = document.querySelectorAll('textarea[data-rich-text]');
240
+ if (els.length) {
241
+ [].forEach.call(els, (el)=>setupTextArea(el));
242
+ }
272
243
  }
273
-
274
- init();
244
+ init();
@@ -1,22 +1,18 @@
1
- 'use strict';
2
-
3
- var toolTip = document.querySelector('[role="tooltip"]');
4
- var toolTipText = document.querySelector('[data-tooltip]');
5
-
1
+ "use strict";
2
+ const toolTip = document.querySelector('[role="tooltip"]');
3
+ const toolTipText = document.querySelector('[data-tooltip]');
6
4
  function isInViewport(elem) {
7
- var distance = elem.getBoundingClientRect();
8
- return distance.top >= 30 && distance.left >= 30 && distance.bottom <= (window.innerHeight || document.documentElement.clientHeight) && distance.right <= (window.innerWidth || document.documentElement.clientWidth);
5
+ const distance = elem.getBoundingClientRect();
6
+ return distance.top >= 30 && distance.left >= 30 && distance.bottom <= (window.innerHeight || document.documentElement.clientHeight) && distance.right <= (window.innerWidth || document.documentElement.clientWidth);
9
7
  }
10
-
11
8
  function positionToolTip() {
12
- if (isInViewport(toolTip)) {
13
- toolTipText.classList.remove('down');
14
- } else {
15
- toolTipText.classList.add('down');
16
- }
9
+ if (isInViewport(toolTip)) {
10
+ toolTipText.classList.remove('down');
11
+ } else {
12
+ toolTipText.classList.add('down');
13
+ }
17
14
  }
18
-
19
15
  if (toolTip) {
20
- positionToolTip();
21
- window.addEventListener('scroll', positionToolTip);
22
- }
16
+ positionToolTip();
17
+ window.addEventListener('scroll', positionToolTip);
18
+ }