@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.
@@ -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
- [].forEach.call(el.parentNode.querySelectorAll('[data-rich-text-control]'), function (control) {
139
- if (editor.isActive(control.value)) {
140
- control.classList.add('is-active');
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
- control.classList.remove('is-active');
189
+ button.classList.remove('is-active');
143
190
  }
144
191
 
145
- if (control.value === 'link' && editor.view.state.selection.empty) {
146
- control.disabled = true;
147
- } else if (control.value === 'link') {
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, _extensionBold2.default, _extensionItalic2.default, _extensionLink.Link.configure({
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'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@internetstiftelsen/styleguide",
3
- "version": "5.0.18",
3
+ "version": "5.0.19",
4
4
  "main": "dist/components.js",
5
5
  "ports": {
6
6
  "fractal": "3000"