@internetstiftelsen/styleguide 5.0.18 → 5.0.19
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/atoms/textarea/rich-text.js +58 -10
- package/package.json +1 -1
|
@@ -24,6 +24,14 @@ var _extensionBulletList = require('@tiptap/extension-bullet-list');
|
|
|
24
24
|
|
|
25
25
|
var _extensionBulletList2 = _interopRequireDefault(_extensionBulletList);
|
|
26
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
|
+
|
|
27
35
|
var _extensionListItem = require('@tiptap/extension-list-item');
|
|
28
36
|
|
|
29
37
|
var _extensionListItem2 = _interopRequireDefault(_extensionListItem);
|
|
@@ -62,6 +70,26 @@ function kebabToPascal(str) {
|
|
|
62
70
|
return str.replace(/(^\w|-\w)/g, clearAndCapitalize);
|
|
63
71
|
}
|
|
64
72
|
|
|
73
|
+
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
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
65
93
|
function insertLink(el, editor) {
|
|
66
94
|
var addLink = function addLink(e, modal, close) {
|
|
67
95
|
e.preventDefault();
|
|
@@ -126,6 +154,8 @@ function createToolbarButton(el, control, editor) {
|
|
|
126
154
|
|
|
127
155
|
if (control === 'link') {
|
|
128
156
|
insertLink(el, editor);
|
|
157
|
+
} else if (control === 'heading-2' || control === 'heading-3') {
|
|
158
|
+
insertHeading(button, editor);
|
|
129
159
|
} else {
|
|
130
160
|
var method = 'toggle' + kebabToPascal(control);
|
|
131
161
|
|
|
@@ -135,17 +165,33 @@ function createToolbarButton(el, control, editor) {
|
|
|
135
165
|
}
|
|
136
166
|
|
|
137
167
|
function toogleButtonState(editor, el) {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
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');
|
|
141
188
|
} else {
|
|
142
|
-
|
|
189
|
+
button.classList.remove('is-active');
|
|
143
190
|
}
|
|
144
191
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
control.disabled = false;
|
|
192
|
+
// 🔗 Special logic for link
|
|
193
|
+
if (value === 'link') {
|
|
194
|
+
button.disabled = editor.view.state.selection.empty;
|
|
149
195
|
}
|
|
150
196
|
});
|
|
151
197
|
}
|
|
@@ -157,7 +203,7 @@ function createToolbar(el, editor) {
|
|
|
157
203
|
|
|
158
204
|
el.parentNode.insertBefore(toolbar, el);
|
|
159
205
|
|
|
160
|
-
['bold', 'italic', 'link', 'bullet-list'].forEach(function (control) {
|
|
206
|
+
['heading-2', 'heading-3', 'bold', 'italic', 'link', 'bullet-list', 'ordered-list'].forEach(function (control) {
|
|
161
207
|
createToolbarButton(toolbar, control, editor);
|
|
162
208
|
});
|
|
163
209
|
}
|
|
@@ -174,7 +220,9 @@ function setupTextArea(el) {
|
|
|
174
220
|
var editorEl = document.createElement('div');
|
|
175
221
|
var editor = new _core.Editor({
|
|
176
222
|
element: editorEl,
|
|
177
|
-
extensions: [_extensionDocument2.default, _extensionParagraph2.default, _extensionText2.default, _extensionListItem2.default, _extensionBulletList2.default,
|
|
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({
|
|
178
226
|
openOnClick: false,
|
|
179
227
|
HTMLAttributes: {
|
|
180
228
|
class: 'u-link'
|