@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.
- package/dist/app.js +71 -0
- package/dist/assets/js/Events.js +43 -77
- package/dist/assets/js/RequestError.js +16 -31
- package/dist/assets/js/anchorScroll.js +22 -15
- package/dist/assets/js/charCounter.js +100 -142
- package/dist/assets/js/className.js +19 -20
- package/dist/assets/js/conditional.js +96 -152
- package/dist/assets/js/debounce.js +15 -22
- package/dist/assets/js/el.js +108 -159
- package/dist/assets/js/getCookieByName.js +13 -11
- package/dist/assets/js/hasCookieConsent.js +30 -40
- package/dist/assets/js/htmlTextLength.js +12 -10
- package/dist/assets/js/iconToggle.js +16 -20
- package/dist/assets/js/nodeAdded.js +40 -53
- package/dist/assets/js/objToQuery.js +25 -41
- package/dist/assets/js/offset.js +29 -25
- package/dist/assets/js/ot.js +10 -13
- package/dist/assets/js/parallax.js +23 -23
- package/dist/assets/js/queryToObj.js +16 -22
- package/dist/assets/js/readSpeakerHandling.js +26 -28
- package/dist/assets/js/request.js +43 -52
- package/dist/assets/js/responsivePosition.js +46 -74
- package/dist/assets/js/stringToNode.js +11 -10
- package/dist/assets/js/template.js +15 -21
- package/dist/assets/js/textToggle.js +19 -24
- package/dist/assets/js/track.js +14 -12
- package/dist/assets/js/uid.js +10 -6
- package/dist/assets/js/utmGenerator.js +27 -33
- package/dist/assets/js/validationMessage.js +18 -25
- package/dist/assets/js/youtube.js +134 -170
- package/dist/atoms/button/Button.js +42 -55
- package/dist/atoms/file/file.js +25 -29
- package/dist/atoms/file/filePreview.js +27 -31
- package/dist/atoms/grid-toggle/grid-toggle.js +6 -9
- package/dist/atoms/height-limiter/height-limiter.js +37 -50
- package/dist/atoms/password-toggle/password-toggle.js +9 -11
- package/dist/atoms/range/range.js +32 -39
- package/dist/atoms/textarea/rich-text.js +221 -251
- package/dist/atoms/tooltip/tooltip.js +13 -17
- package/dist/components.js +42 -77
- package/dist/focusTrap.js +66 -77
- package/dist/molecules/alert/alert.js +15 -20
- package/dist/molecules/context-menu/context-menu.js +11 -16
- package/dist/molecules/continue-video-guide/continue-video-guide.js +90 -101
- package/dist/molecules/cookie-disclaimer/cookie-disclaimer.js +24 -33
- package/dist/molecules/form/Form.js +242 -352
- package/dist/molecules/form/index.js +15 -14
- package/dist/molecules/glider/glider-course.js +62 -75
- package/dist/molecules/glider/glider-hero.js +88 -101
- package/dist/molecules/glider/glider.js +49 -45
- package/dist/molecules/modal/modal.js +256 -325
- package/dist/molecules/multi-select/multi-select.js +198 -304
- package/dist/molecules/natural-language-form/natural-language-form.js +32 -46
- package/dist/molecules/overview-navigation/overview-navigation.js +90 -141
- package/dist/molecules/share/share.js +15 -20
- package/dist/molecules/system-error/system-error.js +6 -9
- package/dist/organisms/accordion/accordion.js +44 -50
- package/dist/organisms/footer/footer.js +1 -1
- package/dist/organisms/haveibeenpwned/haveibeenpwned.js +17 -16
- package/dist/organisms/mailchimp/mailchimp.js +72 -89
- package/dist/organisms/map-box/map-box.js +3 -4
- package/dist/organisms/mega-menu/mega-menu.js +177 -212
- package/dist/organisms/podcast/podcast.js +192 -215
- package/dist/organisms/schedule/schedule-filter.js +9 -15
- package/dist/organisms/tabs/tabs.js +194 -253
- package/dist/organisms/timeline/openTimelineItem.js +38 -51
- package/dist/organisms/timeline/timeline.js +111 -128
- package/dist/organisms/video-guide/VideoGuidePlayback.js +210 -286
- package/dist/organisms/video-guide/VideoGuideSubtitles.js +57 -80
- package/dist/organisms/video-guide/VideoGuideTimeline.js +74 -108
- package/dist/organisms/video-guide/getCurrentCueIndex.js +11 -9
- package/dist/organisms/video-guide/video-guide.js +66 -103
- package/dist/utilities/tab-highlighting/tab-highlighting.js +14 -22
- package/dist/vendor/toggle/a11y.toggle-switcher.js +10 -16
- package/package.json +78 -99
- package/src/app.js +5 -5
- package/src/assets/js/anchorScroll.js +1 -1
- package/src/assets/js/offset.js +1 -1
- package/src/atoms/button/Button.js +1 -1
- package/src/atoms/icon/richtext-ordered-list.svg +1 -1
- package/src/atoms/icon/sprite.svg +6 -5
- package/src/molecules/glider/glider-course.js +0 -2
- package/src/molecules/glider/glider.js +2 -2
- package/src/organisms/accordion/accordion.js +1 -2
- package/src/organisms/timeline/timeline.js +2 -3
- package/dist/atoms/timeline/anchorScroll.js +0 -13
- package/dist/atoms/toggle-high-contrast/toggle-high-contrast.js +0 -12
- package/dist/molecules/glider/glider-single.js +0 -68
- package/dist/molecules/modal/modal-graph.js +0 -40
- package/dist/molecules/timeline-navigation/timeline-navigation.js +0 -34
- /package/src/atoms/icon/{heading-3.svg → richtext-heading-3.svg} +0 -0
- /package/src/molecules/alert/{_alert.scss → alert.scss} +0 -0
|
@@ -1,274 +1,244 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
3
2
|
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
|
|
3
|
+
value: true
|
|
5
4
|
});
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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
|
-
|
|
39
|
+
return str.replace(/-/, '').toUpperCase();
|
|
63
40
|
}
|
|
64
|
-
|
|
65
41
|
function kebabToCamel(str) {
|
|
66
|
-
|
|
42
|
+
return str.replace(/-\w/g, clearAndCapitalize);
|
|
67
43
|
}
|
|
68
|
-
|
|
69
44
|
function kebabToPascal(str) {
|
|
70
|
-
|
|
45
|
+
return str.replace(/(^\w|-\w)/g, clearAndCapitalize);
|
|
71
46
|
}
|
|
72
|
-
|
|
73
47
|
function insertHeading(button, editor) {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
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
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
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
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
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
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
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
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
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
|
-
|
|
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
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
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
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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
|
-
|
|
8
|
-
|
|
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
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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
|
-
|
|
21
|
-
|
|
22
|
-
}
|
|
16
|
+
positionToolTip();
|
|
17
|
+
window.addEventListener('scroll', positionToolTip);
|
|
18
|
+
}
|