@ni/nimble-components 20.1.18 → 20.1.20
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/all-components-bundle.js +452 -76
- package/dist/all-components-bundle.js.map +1 -1
- package/dist/all-components-bundle.min.js +1033 -954
- package/dist/all-components-bundle.min.js.map +1 -1
- package/dist/esm/rich-text-editor/index.d.ts +98 -6
- package/dist/esm/rich-text-editor/index.js +214 -30
- package/dist/esm/rich-text-editor/index.js.map +1 -1
- package/dist/esm/rich-text-editor/styles.js +74 -16
- package/dist/esm/rich-text-editor/styles.js.map +1 -1
- package/dist/esm/rich-text-editor/template.js +13 -1
- package/dist/esm/rich-text-editor/template.js.map +1 -1
- package/dist/esm/rich-text-editor/testing/rich-text-editor.pageobject.d.ts +8 -20
- package/dist/esm/rich-text-editor/testing/rich-text-editor.pageobject.js +43 -22
- package/dist/esm/rich-text-editor/testing/rich-text-editor.pageobject.js.map +1 -1
- package/dist/esm/src/rich-text-editor/index.d.ts +98 -6
- package/dist/esm/src/rich-text-editor/testing/rich-text-editor.pageobject.d.ts +8 -20
- package/package.json +12 -11
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import { FoundationElement } from '@microsoft/fast-foundation';
|
|
1
|
+
import { ARIAGlobalStatesAndProperties, FoundationElement } from '@microsoft/fast-foundation';
|
|
2
|
+
import { Editor } from '@tiptap/core';
|
|
2
3
|
import type { ToggleButton } from '../toggle-button';
|
|
4
|
+
import type { ErrorPattern } from '../patterns/error/types';
|
|
3
5
|
declare global {
|
|
4
6
|
interface HTMLElementTagNameMap {
|
|
5
7
|
'nimble-rich-text-editor': RichTextEditor;
|
|
@@ -8,7 +10,54 @@ declare global {
|
|
|
8
10
|
/**
|
|
9
11
|
* A nimble styled rich text editor
|
|
10
12
|
*/
|
|
11
|
-
export declare class RichTextEditor extends FoundationElement {
|
|
13
|
+
export declare class RichTextEditor extends FoundationElement implements ErrorPattern {
|
|
14
|
+
/**
|
|
15
|
+
* @internal
|
|
16
|
+
*/
|
|
17
|
+
editor: HTMLDivElement;
|
|
18
|
+
/**
|
|
19
|
+
* @internal
|
|
20
|
+
*/
|
|
21
|
+
tiptapEditor: Editor;
|
|
22
|
+
/**
|
|
23
|
+
* Whether to disable user from editing and interacting with toolbar buttons
|
|
24
|
+
*
|
|
25
|
+
* @public
|
|
26
|
+
* HTML Attribute: disabled
|
|
27
|
+
*/
|
|
28
|
+
disabled: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Whether to hide the footer of the rich text editor
|
|
31
|
+
*
|
|
32
|
+
* @public
|
|
33
|
+
* HTML Attribute: footer-hidden
|
|
34
|
+
*/
|
|
35
|
+
footerHidden: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Whether to display the error state.
|
|
38
|
+
*
|
|
39
|
+
* @public
|
|
40
|
+
* HTML Attribute: error-visible
|
|
41
|
+
*/
|
|
42
|
+
errorVisible: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* A message explaining why the value is invalid.
|
|
45
|
+
*
|
|
46
|
+
* @public
|
|
47
|
+
* HTML Attribute: error-text
|
|
48
|
+
*/
|
|
49
|
+
errorText?: string;
|
|
50
|
+
/**
|
|
51
|
+
* @public
|
|
52
|
+
* HTML Attribute: placeholder
|
|
53
|
+
*/
|
|
54
|
+
placeholder?: string;
|
|
55
|
+
/**
|
|
56
|
+
* True if the editor is empty or contains only whitespace, false otherwise.
|
|
57
|
+
*
|
|
58
|
+
* @public
|
|
59
|
+
*/
|
|
60
|
+
get empty(): boolean;
|
|
12
61
|
/**
|
|
13
62
|
* @internal
|
|
14
63
|
*/
|
|
@@ -25,17 +74,21 @@ export declare class RichTextEditor extends FoundationElement {
|
|
|
25
74
|
* @internal
|
|
26
75
|
*/
|
|
27
76
|
numberedListButton: ToggleButton;
|
|
77
|
+
/**
|
|
78
|
+
* The width of the vertical scrollbar, if displayed.
|
|
79
|
+
* @internal
|
|
80
|
+
*/
|
|
81
|
+
scrollbarWidth: number;
|
|
28
82
|
/**
|
|
29
83
|
* @internal
|
|
30
84
|
*/
|
|
31
85
|
editorContainer: HTMLDivElement;
|
|
32
|
-
private
|
|
33
|
-
private
|
|
86
|
+
private resizeObserver?;
|
|
87
|
+
private updateScrollbarWidthQueued;
|
|
34
88
|
private readonly markdownParser;
|
|
35
89
|
private readonly markdownSerializer;
|
|
36
90
|
private readonly domSerializer;
|
|
37
91
|
private readonly xmlSerializer;
|
|
38
|
-
constructor();
|
|
39
92
|
/**
|
|
40
93
|
* @internal
|
|
41
94
|
*/
|
|
@@ -44,6 +97,19 @@ export declare class RichTextEditor extends FoundationElement {
|
|
|
44
97
|
* @internal
|
|
45
98
|
*/
|
|
46
99
|
disconnectedCallback(): void;
|
|
100
|
+
/**
|
|
101
|
+
* @internal
|
|
102
|
+
*/
|
|
103
|
+
disabledChanged(): void;
|
|
104
|
+
/**
|
|
105
|
+
* Update the placeholder text and view of the editor.
|
|
106
|
+
* @internal
|
|
107
|
+
*/
|
|
108
|
+
placeholderChanged(): void;
|
|
109
|
+
/**
|
|
110
|
+
* @internal
|
|
111
|
+
*/
|
|
112
|
+
ariaLabelChanged(): void;
|
|
47
113
|
/**
|
|
48
114
|
* Toggle the bold mark and focus back to the editor
|
|
49
115
|
* @internal
|
|
@@ -98,6 +164,8 @@ export declare class RichTextEditor extends FoundationElement {
|
|
|
98
164
|
* @internal
|
|
99
165
|
*/
|
|
100
166
|
stopEventPropagation(event: Event): boolean;
|
|
167
|
+
private createEditor;
|
|
168
|
+
private createTiptapEditor;
|
|
101
169
|
/**
|
|
102
170
|
* This function takes the Fragment from parseMarkdownToDOM function and return the serialized string using XMLSerializer
|
|
103
171
|
*/
|
|
@@ -105,7 +173,6 @@ export declare class RichTextEditor extends FoundationElement {
|
|
|
105
173
|
private initializeMarkdownParser;
|
|
106
174
|
private initializeMarkdownSerializer;
|
|
107
175
|
private parseMarkdownToDOM;
|
|
108
|
-
private initializeEditor;
|
|
109
176
|
/**
|
|
110
177
|
* Binding the "transaction" event to the editor allows continuous monitoring the events and updating the button state in response to
|
|
111
178
|
* various actions such as mouse events, keyboard events, changes in the editor content etc,.
|
|
@@ -115,5 +182,30 @@ export declare class RichTextEditor extends FoundationElement {
|
|
|
115
182
|
private unbindEditorTransactionEvent;
|
|
116
183
|
private updateEditorButtonsState;
|
|
117
184
|
private keyActivatesButton;
|
|
185
|
+
private unbindEditorUpdateEvent;
|
|
186
|
+
/**
|
|
187
|
+
* input event is fired when there is a change in the content of the editor.
|
|
188
|
+
*
|
|
189
|
+
* https://tiptap.dev/api/events#update
|
|
190
|
+
*/
|
|
191
|
+
private bindEditorUpdateEvent;
|
|
192
|
+
/**
|
|
193
|
+
* Stopping the native input event propagation emitted by the contenteditable element in the Tiptap
|
|
194
|
+
* since there is an issue (linked below) in ProseMirror where selecting the text and removing it
|
|
195
|
+
* does not trigger the native HTMLElement input event. So using the "update" event emitted by the
|
|
196
|
+
* Tiptap to capture it as an "input" customEvent in the rich text editor.
|
|
197
|
+
*
|
|
198
|
+
* Prose Mirror issue: https://discuss.prosemirror.net/t/how-to-handle-select-backspace-delete-cut-type-kind-of-events-handletextinput-or-handledomevents-input-doesnt-help/4844
|
|
199
|
+
*/
|
|
200
|
+
private stopNativeInputEventPropagation;
|
|
201
|
+
private unbindNativeInputEvent;
|
|
202
|
+
private queueUpdateScrollbarWidth;
|
|
203
|
+
private updateScrollbarWidth;
|
|
204
|
+
private onResize;
|
|
205
|
+
private getTipTapExtension;
|
|
206
|
+
private setEditorTabIndex;
|
|
207
|
+
private forceFocusEditor;
|
|
208
|
+
}
|
|
209
|
+
export interface RichTextEditor extends ARIAGlobalStatesAndProperties {
|
|
118
210
|
}
|
|
119
211
|
export declare const richTextEditorTag: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
|
-
import { observable } from '@microsoft/fast-element';
|
|
3
|
-
import { DesignSystem, FoundationElement } from '@microsoft/fast-foundation';
|
|
2
|
+
import { observable, attr, DOM } from '@microsoft/fast-element';
|
|
3
|
+
import { applyMixins, ARIAGlobalStatesAndProperties, DesignSystem, FoundationElement } from '@microsoft/fast-foundation';
|
|
4
4
|
import { keyEnter, keySpace } from '@microsoft/fast-web-utilities';
|
|
5
5
|
import { Editor } from '@tiptap/core';
|
|
6
6
|
import { schema, defaultMarkdownParser, MarkdownParser, MarkdownSerializer, defaultMarkdownSerializer } from 'prosemirror-markdown';
|
|
@@ -13,6 +13,7 @@ import Italic from '@tiptap/extension-italic';
|
|
|
13
13
|
import ListItem from '@tiptap/extension-list-item';
|
|
14
14
|
import OrderedList from '@tiptap/extension-ordered-list';
|
|
15
15
|
import Paragraph from '@tiptap/extension-paragraph';
|
|
16
|
+
import Placeholder from '@tiptap/extension-placeholder';
|
|
16
17
|
import Text from '@tiptap/extension-text';
|
|
17
18
|
import { template } from './template';
|
|
18
19
|
import { styles } from './styles';
|
|
@@ -21,12 +22,57 @@ import { styles } from './styles';
|
|
|
21
22
|
*/
|
|
22
23
|
export class RichTextEditor extends FoundationElement {
|
|
23
24
|
constructor() {
|
|
24
|
-
super();
|
|
25
|
+
super(...arguments);
|
|
26
|
+
/**
|
|
27
|
+
* @internal
|
|
28
|
+
*/
|
|
29
|
+
this.editor = this.createEditor();
|
|
30
|
+
/**
|
|
31
|
+
* @internal
|
|
32
|
+
*/
|
|
33
|
+
this.tiptapEditor = this.createTiptapEditor();
|
|
34
|
+
/**
|
|
35
|
+
* Whether to disable user from editing and interacting with toolbar buttons
|
|
36
|
+
*
|
|
37
|
+
* @public
|
|
38
|
+
* HTML Attribute: disabled
|
|
39
|
+
*/
|
|
40
|
+
this.disabled = false;
|
|
41
|
+
/**
|
|
42
|
+
* Whether to hide the footer of the rich text editor
|
|
43
|
+
*
|
|
44
|
+
* @public
|
|
45
|
+
* HTML Attribute: footer-hidden
|
|
46
|
+
*/
|
|
47
|
+
this.footerHidden = false;
|
|
48
|
+
/**
|
|
49
|
+
* Whether to display the error state.
|
|
50
|
+
*
|
|
51
|
+
* @public
|
|
52
|
+
* HTML Attribute: error-visible
|
|
53
|
+
*/
|
|
54
|
+
this.errorVisible = false;
|
|
55
|
+
/**
|
|
56
|
+
* The width of the vertical scrollbar, if displayed.
|
|
57
|
+
* @internal
|
|
58
|
+
*/
|
|
59
|
+
this.scrollbarWidth = -1;
|
|
60
|
+
this.updateScrollbarWidthQueued = false;
|
|
25
61
|
this.markdownParser = this.initializeMarkdownParser();
|
|
26
62
|
this.markdownSerializer = this.initializeMarkdownSerializer();
|
|
27
63
|
this.domSerializer = DOMSerializer.fromSchema(schema);
|
|
28
64
|
this.xmlSerializer = new XMLSerializer();
|
|
29
|
-
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* True if the editor is empty or contains only whitespace, false otherwise.
|
|
68
|
+
*
|
|
69
|
+
* @public
|
|
70
|
+
*/
|
|
71
|
+
get empty() {
|
|
72
|
+
// Tiptap [isEmpty](https://tiptap.dev/api/editor#is-empty) returns false even if the editor has only whitespace.
|
|
73
|
+
// However, the expectation is to return true if the editor is empty or contains only whitespace.
|
|
74
|
+
// Hence, by retrieving the current text content using Tiptap state docs and then trimming the string to determine whether it is empty or not.
|
|
75
|
+
return this.tiptapEditor.state.doc.textContent.trim().length === 0;
|
|
30
76
|
}
|
|
31
77
|
/**
|
|
32
78
|
* @internal
|
|
@@ -37,6 +83,10 @@ export class RichTextEditor extends FoundationElement {
|
|
|
37
83
|
this.editorContainer.append(this.editor);
|
|
38
84
|
}
|
|
39
85
|
this.bindEditorTransactionEvent();
|
|
86
|
+
this.bindEditorUpdateEvent();
|
|
87
|
+
this.stopNativeInputEventPropagation();
|
|
88
|
+
this.resizeObserver = new ResizeObserver(() => this.onResize());
|
|
89
|
+
this.resizeObserver.observe(this);
|
|
40
90
|
}
|
|
41
91
|
/**
|
|
42
92
|
* @internal
|
|
@@ -44,6 +94,38 @@ export class RichTextEditor extends FoundationElement {
|
|
|
44
94
|
disconnectedCallback() {
|
|
45
95
|
super.disconnectedCallback();
|
|
46
96
|
this.unbindEditorTransactionEvent();
|
|
97
|
+
this.unbindEditorUpdateEvent();
|
|
98
|
+
this.unbindNativeInputEvent();
|
|
99
|
+
this.resizeObserver?.disconnect();
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* @internal
|
|
103
|
+
*/
|
|
104
|
+
disabledChanged() {
|
|
105
|
+
this.tiptapEditor.setEditable(!this.disabled);
|
|
106
|
+
this.setEditorTabIndex();
|
|
107
|
+
this.editor.setAttribute('aria-disabled', this.disabled ? 'true' : 'false');
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Update the placeholder text and view of the editor.
|
|
111
|
+
* @internal
|
|
112
|
+
*/
|
|
113
|
+
placeholderChanged() {
|
|
114
|
+
const placeholderExtension = this.getTipTapExtension('placeholder');
|
|
115
|
+
placeholderExtension.options.placeholder = this.placeholder ?? '';
|
|
116
|
+
this.tiptapEditor.view.dispatch(this.tiptapEditor.state.tr);
|
|
117
|
+
this.queueUpdateScrollbarWidth();
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* @internal
|
|
121
|
+
*/
|
|
122
|
+
ariaLabelChanged() {
|
|
123
|
+
if (this.ariaLabel !== null && this.ariaLabel !== undefined) {
|
|
124
|
+
this.editor.setAttribute('aria-label', this.ariaLabel);
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
this.editor.removeAttribute('aria-label');
|
|
128
|
+
}
|
|
47
129
|
}
|
|
48
130
|
/**
|
|
49
131
|
* Toggle the bold mark and focus back to the editor
|
|
@@ -51,6 +133,7 @@ export class RichTextEditor extends FoundationElement {
|
|
|
51
133
|
*/
|
|
52
134
|
boldButtonClick() {
|
|
53
135
|
this.tiptapEditor.chain().focus().toggleBold().run();
|
|
136
|
+
this.forceFocusEditor();
|
|
54
137
|
}
|
|
55
138
|
/**
|
|
56
139
|
* Toggle the bold mark and focus back to the editor
|
|
@@ -59,6 +142,7 @@ export class RichTextEditor extends FoundationElement {
|
|
|
59
142
|
boldButtonKeyDown(event) {
|
|
60
143
|
if (this.keyActivatesButton(event)) {
|
|
61
144
|
this.tiptapEditor.chain().focus().toggleBold().run();
|
|
145
|
+
this.forceFocusEditor();
|
|
62
146
|
return false;
|
|
63
147
|
}
|
|
64
148
|
return true;
|
|
@@ -69,6 +153,7 @@ export class RichTextEditor extends FoundationElement {
|
|
|
69
153
|
*/
|
|
70
154
|
italicsButtonClick() {
|
|
71
155
|
this.tiptapEditor.chain().focus().toggleItalic().run();
|
|
156
|
+
this.forceFocusEditor();
|
|
72
157
|
}
|
|
73
158
|
/**
|
|
74
159
|
* Toggle the italics mark and focus back to the editor
|
|
@@ -77,6 +162,7 @@ export class RichTextEditor extends FoundationElement {
|
|
|
77
162
|
italicsButtonKeyDown(event) {
|
|
78
163
|
if (this.keyActivatesButton(event)) {
|
|
79
164
|
this.tiptapEditor.chain().focus().toggleItalic().run();
|
|
165
|
+
this.forceFocusEditor();
|
|
80
166
|
return false;
|
|
81
167
|
}
|
|
82
168
|
return true;
|
|
@@ -87,6 +173,7 @@ export class RichTextEditor extends FoundationElement {
|
|
|
87
173
|
*/
|
|
88
174
|
bulletListButtonClick() {
|
|
89
175
|
this.tiptapEditor.chain().focus().toggleBulletList().run();
|
|
176
|
+
this.forceFocusEditor();
|
|
90
177
|
}
|
|
91
178
|
/**
|
|
92
179
|
* Toggle the unordered list node and focus back to the editor
|
|
@@ -95,6 +182,7 @@ export class RichTextEditor extends FoundationElement {
|
|
|
95
182
|
bulletListButtonKeyDown(event) {
|
|
96
183
|
if (this.keyActivatesButton(event)) {
|
|
97
184
|
this.tiptapEditor.chain().focus().toggleBulletList().run();
|
|
185
|
+
this.forceFocusEditor();
|
|
98
186
|
return false;
|
|
99
187
|
}
|
|
100
188
|
return true;
|
|
@@ -105,6 +193,7 @@ export class RichTextEditor extends FoundationElement {
|
|
|
105
193
|
*/
|
|
106
194
|
numberedListButtonClick() {
|
|
107
195
|
this.tiptapEditor.chain().focus().toggleOrderedList().run();
|
|
196
|
+
this.forceFocusEditor();
|
|
108
197
|
}
|
|
109
198
|
/**
|
|
110
199
|
* Toggle the ordered list node and focus back to the editor
|
|
@@ -113,6 +202,7 @@ export class RichTextEditor extends FoundationElement {
|
|
|
113
202
|
numberedListButtonKeyDown(event) {
|
|
114
203
|
if (this.keyActivatesButton(event)) {
|
|
115
204
|
this.tiptapEditor.chain().focus().toggleOrderedList().run();
|
|
205
|
+
this.forceFocusEditor();
|
|
116
206
|
return false;
|
|
117
207
|
}
|
|
118
208
|
return true;
|
|
@@ -142,6 +232,39 @@ export class RichTextEditor extends FoundationElement {
|
|
|
142
232
|
event.stopPropagation();
|
|
143
233
|
return false;
|
|
144
234
|
}
|
|
235
|
+
createEditor() {
|
|
236
|
+
const editor = document.createElement('div');
|
|
237
|
+
editor.className = 'editor';
|
|
238
|
+
editor.setAttribute('aria-multiline', 'true');
|
|
239
|
+
editor.setAttribute('role', 'textbox');
|
|
240
|
+
editor.setAttribute('aria-disabled', 'false');
|
|
241
|
+
return editor;
|
|
242
|
+
}
|
|
243
|
+
createTiptapEditor() {
|
|
244
|
+
/**
|
|
245
|
+
* For more information on the extensions for the supported formatting options, refer to the links below.
|
|
246
|
+
* Tiptap marks: https://tiptap.dev/api/marks
|
|
247
|
+
* Tiptap nodes: https://tiptap.dev/api/nodes
|
|
248
|
+
*/
|
|
249
|
+
return new Editor({
|
|
250
|
+
element: this.editor,
|
|
251
|
+
extensions: [
|
|
252
|
+
Document,
|
|
253
|
+
Paragraph,
|
|
254
|
+
Text,
|
|
255
|
+
BulletList,
|
|
256
|
+
OrderedList,
|
|
257
|
+
ListItem,
|
|
258
|
+
Bold,
|
|
259
|
+
Italic,
|
|
260
|
+
History,
|
|
261
|
+
Placeholder.configure({
|
|
262
|
+
placeholder: '',
|
|
263
|
+
showOnlyWhenEditable: false
|
|
264
|
+
})
|
|
265
|
+
]
|
|
266
|
+
});
|
|
267
|
+
}
|
|
145
268
|
/**
|
|
146
269
|
* This function takes the Fragment from parseMarkdownToDOM function and return the serialized string using XMLSerializer
|
|
147
270
|
*/
|
|
@@ -208,32 +331,6 @@ export class RichTextEditor extends FoundationElement {
|
|
|
208
331
|
}
|
|
209
332
|
return this.domSerializer.serializeFragment(parsedMarkdownContent.content);
|
|
210
333
|
}
|
|
211
|
-
initializeEditor() {
|
|
212
|
-
// Create div from the constructor because the TipTap editor requires its host element before the template is instantiated.
|
|
213
|
-
this.editor = document.createElement('div');
|
|
214
|
-
this.editor.className = 'editor';
|
|
215
|
-
this.editor.setAttribute('aria-multiline', 'true');
|
|
216
|
-
this.editor.setAttribute('role', 'textbox');
|
|
217
|
-
/**
|
|
218
|
-
* For more information on the extensions for the supported formatting options, refer to the links below.
|
|
219
|
-
* Tiptap marks: https://tiptap.dev/api/marks
|
|
220
|
-
* Tiptap nodes: https://tiptap.dev/api/nodes
|
|
221
|
-
*/
|
|
222
|
-
this.tiptapEditor = new Editor({
|
|
223
|
-
element: this.editor,
|
|
224
|
-
extensions: [
|
|
225
|
-
Document,
|
|
226
|
-
Paragraph,
|
|
227
|
-
Text,
|
|
228
|
-
BulletList,
|
|
229
|
-
OrderedList,
|
|
230
|
-
ListItem,
|
|
231
|
-
Bold,
|
|
232
|
-
Italic,
|
|
233
|
-
History
|
|
234
|
-
]
|
|
235
|
-
});
|
|
236
|
-
}
|
|
237
334
|
/**
|
|
238
335
|
* Binding the "transaction" event to the editor allows continuous monitoring the events and updating the button state in response to
|
|
239
336
|
* various actions such as mouse events, keyboard events, changes in the editor content etc,.
|
|
@@ -262,7 +359,90 @@ export class RichTextEditor extends FoundationElement {
|
|
|
262
359
|
return false;
|
|
263
360
|
}
|
|
264
361
|
}
|
|
362
|
+
unbindEditorUpdateEvent() {
|
|
363
|
+
this.tiptapEditor.off('update');
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* input event is fired when there is a change in the content of the editor.
|
|
367
|
+
*
|
|
368
|
+
* https://tiptap.dev/api/events#update
|
|
369
|
+
*/
|
|
370
|
+
bindEditorUpdateEvent() {
|
|
371
|
+
this.tiptapEditor.on('update', () => {
|
|
372
|
+
this.$emit('input');
|
|
373
|
+
this.queueUpdateScrollbarWidth();
|
|
374
|
+
});
|
|
375
|
+
}
|
|
376
|
+
/**
|
|
377
|
+
* Stopping the native input event propagation emitted by the contenteditable element in the Tiptap
|
|
378
|
+
* since there is an issue (linked below) in ProseMirror where selecting the text and removing it
|
|
379
|
+
* does not trigger the native HTMLElement input event. So using the "update" event emitted by the
|
|
380
|
+
* Tiptap to capture it as an "input" customEvent in the rich text editor.
|
|
381
|
+
*
|
|
382
|
+
* Prose Mirror issue: https://discuss.prosemirror.net/t/how-to-handle-select-backspace-delete-cut-type-kind-of-events-handletextinput-or-handledomevents-input-doesnt-help/4844
|
|
383
|
+
*/
|
|
384
|
+
stopNativeInputEventPropagation() {
|
|
385
|
+
this.tiptapEditor.view.dom.addEventListener('input', event => {
|
|
386
|
+
event.stopPropagation();
|
|
387
|
+
});
|
|
388
|
+
}
|
|
389
|
+
unbindNativeInputEvent() {
|
|
390
|
+
this.tiptapEditor.view.dom.removeEventListener('input', () => { });
|
|
391
|
+
}
|
|
392
|
+
queueUpdateScrollbarWidth() {
|
|
393
|
+
if (!this.$fastController.isConnected) {
|
|
394
|
+
return;
|
|
395
|
+
}
|
|
396
|
+
if (!this.updateScrollbarWidthQueued) {
|
|
397
|
+
this.updateScrollbarWidthQueued = true;
|
|
398
|
+
DOM.queueUpdate(() => this.updateScrollbarWidth());
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
updateScrollbarWidth() {
|
|
402
|
+
this.updateScrollbarWidthQueued = false;
|
|
403
|
+
this.scrollbarWidth = this.tiptapEditor.view.dom.offsetWidth
|
|
404
|
+
- this.tiptapEditor.view.dom.clientWidth;
|
|
405
|
+
}
|
|
406
|
+
onResize() {
|
|
407
|
+
this.scrollbarWidth = this.tiptapEditor.view.dom.offsetWidth
|
|
408
|
+
- this.tiptapEditor.view.dom.clientWidth;
|
|
409
|
+
}
|
|
410
|
+
getTipTapExtension(extensionName) {
|
|
411
|
+
return this.tiptapEditor.extensionManager.extensions.find(extension => extension.name === extensionName);
|
|
412
|
+
}
|
|
413
|
+
setEditorTabIndex() {
|
|
414
|
+
this.tiptapEditor.setOptions({
|
|
415
|
+
editorProps: {
|
|
416
|
+
attributes: {
|
|
417
|
+
tabindex: this.disabled ? '-1' : '0'
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
});
|
|
421
|
+
}
|
|
422
|
+
// In Firefox browser, once the editor gets focused, the blinking caret will be visible until we click format buttons (Bold, Italic ...) in the Firefox browser (changing focus).
|
|
423
|
+
// But once any of the toolbar button is clicked, editor internally has its focus but the blinking caret disappears.
|
|
424
|
+
// As a workaround, manually triggering blur and setting focus on editor makes the blinking caret to re-appear.
|
|
425
|
+
// Mozilla issue https://bugzilla.mozilla.org/show_bug.cgi?id=1496769 tracks removal of this workaround.
|
|
426
|
+
forceFocusEditor() {
|
|
427
|
+
this.tiptapEditor.commands.blur();
|
|
428
|
+
this.tiptapEditor.commands.focus();
|
|
429
|
+
}
|
|
265
430
|
}
|
|
431
|
+
__decorate([
|
|
432
|
+
attr({ mode: 'boolean' })
|
|
433
|
+
], RichTextEditor.prototype, "disabled", void 0);
|
|
434
|
+
__decorate([
|
|
435
|
+
attr({ attribute: 'footer-hidden', mode: 'boolean' })
|
|
436
|
+
], RichTextEditor.prototype, "footerHidden", void 0);
|
|
437
|
+
__decorate([
|
|
438
|
+
attr({ attribute: 'error-visible', mode: 'boolean' })
|
|
439
|
+
], RichTextEditor.prototype, "errorVisible", void 0);
|
|
440
|
+
__decorate([
|
|
441
|
+
attr({ attribute: 'error-text' })
|
|
442
|
+
], RichTextEditor.prototype, "errorText", void 0);
|
|
443
|
+
__decorate([
|
|
444
|
+
attr
|
|
445
|
+
], RichTextEditor.prototype, "placeholder", void 0);
|
|
266
446
|
__decorate([
|
|
267
447
|
observable
|
|
268
448
|
], RichTextEditor.prototype, "boldButton", void 0);
|
|
@@ -275,6 +455,10 @@ __decorate([
|
|
|
275
455
|
__decorate([
|
|
276
456
|
observable
|
|
277
457
|
], RichTextEditor.prototype, "numberedListButton", void 0);
|
|
458
|
+
__decorate([
|
|
459
|
+
observable
|
|
460
|
+
], RichTextEditor.prototype, "scrollbarWidth", void 0);
|
|
461
|
+
applyMixins(RichTextEditor, ARIAGlobalStatesAndProperties);
|
|
278
462
|
const nimbleRichTextEditor = RichTextEditor.compose({
|
|
279
463
|
baseName: 'rich-text-editor',
|
|
280
464
|
template,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rich-text-editor/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rich-text-editor/index.ts"],"names":[],"mappings":"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"}
|