@ni/nimble-components 32.3.0 → 32.3.2
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 +163 -165
- package/dist/all-components-bundle.js.map +1 -1
- package/dist/all-components-bundle.min.js +145 -155
- package/dist/all-components-bundle.min.js.map +1 -1
- package/dist/esm/rich-text/editor/testing/rich-text-editor.pageobject.d.ts +4 -3
- package/dist/esm/rich-text/editor/testing/rich-text-editor.pageobject.js +17 -10
- package/dist/esm/rich-text/editor/testing/rich-text-editor.pageobject.js.map +1 -1
- package/dist/esm/table/index.d.ts +2 -2
- package/dist/esm/table/index.js +6 -6
- package/dist/esm/table/index.js.map +1 -1
- package/dist/esm/table/models/table-layout-manager.d.ts +7 -4
- package/dist/esm/table/models/table-layout-manager.js +17 -10
- package/dist/esm/table/models/table-layout-manager.js.map +1 -1
- package/dist/esm/table/styles.js +1 -7
- package/dist/esm/table/styles.js.map +1 -1
- package/dist/esm/table/template.js +139 -142
- package/dist/esm/table/template.js.map +1 -1
- package/dist/esm/table/testing/table.pageobject.d.ts +17 -3
- package/dist/esm/table/testing/table.pageobject.js +65 -55
- package/dist/esm/table/testing/table.pageobject.js.map +1 -1
- package/package.json +1 -1
|
@@ -30,14 +30,14 @@ export declare class RichTextEditorPageObject {
|
|
|
30
30
|
getButtonTabIndex(button: ToolbarButton): number;
|
|
31
31
|
spaceKeyActivatesButton(button: ToolbarButton): void;
|
|
32
32
|
enterKeyActivatesButton(button: ToolbarButton): void;
|
|
33
|
-
pasteToEditor(text: string): void
|
|
34
|
-
pasteHTMLToEditor(htmlString: string): void
|
|
33
|
+
pasteToEditor(text: string): Promise<void>;
|
|
34
|
+
pasteHTMLToEditor(htmlString: string): Promise<void>;
|
|
35
35
|
setEditorTextContent(value: string): Promise<void>;
|
|
36
36
|
setCursorPosition(position: number): Promise<void>;
|
|
37
37
|
replaceEditorContent(value: string): Promise<void>;
|
|
38
38
|
sliceEditorContent(from: number, to: number): Promise<void>;
|
|
39
39
|
getEditorLastChildAttribute(attribute: string): string;
|
|
40
|
-
isMentionListboxOpened(): boolean
|
|
40
|
+
isMentionListboxOpened(): Promise<boolean>;
|
|
41
41
|
getEditorMentionViewAttributeValues(attribute: string): string[];
|
|
42
42
|
getEditorFirstChildTagName(): string;
|
|
43
43
|
getEditorFirstChildTextContent(): string;
|
|
@@ -72,4 +72,5 @@ export declare class RichTextEditorPageObject {
|
|
|
72
72
|
private getAllListItemsInMentionBox;
|
|
73
73
|
private getEditorLastChildElement;
|
|
74
74
|
private getParserMentionConfigForUser;
|
|
75
|
+
private focusEditorIfMentionListboxOpened;
|
|
75
76
|
}
|
|
@@ -167,24 +167,26 @@ export class RichTextEditorPageObject {
|
|
|
167
167
|
});
|
|
168
168
|
toggleButton.control.dispatchEvent(event);
|
|
169
169
|
}
|
|
170
|
-
pasteToEditor(text) {
|
|
170
|
+
async pasteToEditor(text) {
|
|
171
171
|
const editor = this.getTiptapEditor();
|
|
172
172
|
const pasteEvent = new ClipboardEvent('paste', {
|
|
173
173
|
clipboardData: new DataTransfer()
|
|
174
174
|
});
|
|
175
175
|
pasteEvent.clipboardData?.setData('text/plain', text);
|
|
176
176
|
editor.dispatchEvent(pasteEvent);
|
|
177
|
+
await this.focusEditorIfMentionListboxOpened();
|
|
177
178
|
}
|
|
178
179
|
// Simulate the actual pasting of content by passing the extracted HTML string as an argument and setting the format to 'text/html',
|
|
179
180
|
// as in the [DataFormat](https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer) object.
|
|
180
181
|
// For example, when copying a link, the clipboard stores information that includes the anchor tag, href attribute value etc, and paste it as an HTML string
|
|
181
|
-
pasteHTMLToEditor(htmlString) {
|
|
182
|
+
async pasteHTMLToEditor(htmlString) {
|
|
182
183
|
const editor = this.getTiptapEditor();
|
|
183
184
|
const pasteEvent = new ClipboardEvent('paste', {
|
|
184
185
|
clipboardData: new DataTransfer()
|
|
185
186
|
});
|
|
186
187
|
pasteEvent.clipboardData?.setData('text/html', htmlString);
|
|
187
188
|
editor.dispatchEvent(pasteEvent);
|
|
189
|
+
await this.focusEditorIfMentionListboxOpened();
|
|
188
190
|
}
|
|
189
191
|
async setEditorTextContent(value) {
|
|
190
192
|
this.richTextEditorElement.tiptapEditor
|
|
@@ -196,10 +198,7 @@ export class RichTextEditorPageObject {
|
|
|
196
198
|
})
|
|
197
199
|
.run();
|
|
198
200
|
await waitForUpdatesAsync();
|
|
199
|
-
|
|
200
|
-
this.richTextEditorElement.tiptapEditor.commands.focus();
|
|
201
|
-
await waitForUpdatesAsync();
|
|
202
|
-
}
|
|
201
|
+
await this.focusEditorIfMentionListboxOpened();
|
|
203
202
|
}
|
|
204
203
|
async setCursorPosition(position) {
|
|
205
204
|
this.richTextEditorElement.tiptapEditor.commands.setTextSelection(position);
|
|
@@ -209,6 +208,7 @@ export class RichTextEditorPageObject {
|
|
|
209
208
|
const lastElement = this.getEditorLastChildElement();
|
|
210
209
|
lastElement.parentElement.textContent = value;
|
|
211
210
|
await waitForUpdatesAsync();
|
|
211
|
+
await this.focusEditorIfMentionListboxOpened();
|
|
212
212
|
}
|
|
213
213
|
async sliceEditorContent(from, to) {
|
|
214
214
|
this.richTextEditorElement.tiptapEditor
|
|
@@ -217,14 +217,14 @@ export class RichTextEditorPageObject {
|
|
|
217
217
|
.deleteRange({ from, to })
|
|
218
218
|
.run();
|
|
219
219
|
await waitForUpdatesAsync();
|
|
220
|
+
await this.focusEditorIfMentionListboxOpened();
|
|
220
221
|
}
|
|
221
222
|
getEditorLastChildAttribute(attribute) {
|
|
222
223
|
return getLastChildElementAttribute(attribute, this.getTiptapEditor());
|
|
223
224
|
}
|
|
224
|
-
isMentionListboxOpened() {
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
?.hasAttribute('hidden') ?? false);
|
|
225
|
+
async isMentionListboxOpened() {
|
|
226
|
+
await waitForUpdatesAsync();
|
|
227
|
+
return !this.getMentionListbox()?.shadowRoot?.querySelector(anchoredRegionTag)?.hidden;
|
|
228
228
|
}
|
|
229
229
|
getEditorMentionViewAttributeValues(attribute) {
|
|
230
230
|
return Array.from(this.getTiptapEditor().querySelectorAll(richTextMentionUsersViewTag)).map(el => el.getAttribute(attribute) || '');
|
|
@@ -331,6 +331,7 @@ export class RichTextEditorPageObject {
|
|
|
331
331
|
return (Array.from(nodeList).find(item => item.selected && !item.hasAttribute('hidden'))?.textContent ?? '');
|
|
332
332
|
}
|
|
333
333
|
async clickMentionListboxOption(index) {
|
|
334
|
+
await this.focusEditorIfMentionListboxOpened();
|
|
334
335
|
const listOption = this.getAllListItemsInMentionBox()[index];
|
|
335
336
|
listOption?.click();
|
|
336
337
|
await waitForUpdatesAsync();
|
|
@@ -385,5 +386,11 @@ export class RichTextEditorPageObject {
|
|
|
385
386
|
const parserMentionConfig = new MarkdownParserMentionConfiguration(mentionInternals);
|
|
386
387
|
return parserMentionConfig;
|
|
387
388
|
}
|
|
389
|
+
async focusEditorIfMentionListboxOpened() {
|
|
390
|
+
if (await this.isMentionListboxOpened()) {
|
|
391
|
+
this.richTextEditorElement.tiptapEditor.commands.focus();
|
|
392
|
+
await waitForUpdatesAsync();
|
|
393
|
+
}
|
|
394
|
+
}
|
|
388
395
|
}
|
|
389
396
|
//# sourceMappingURL=rich-text-editor.pageobject.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rich-text-editor.pageobject.js","sourceRoot":"","sources":["../../../../../src/rich-text/editor/testing/rich-text-editor.pageobject.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n keySpace,\n keyEnter,\n keyTab,\n keyEscape\n} from '@microsoft/fast-web-utilities';\nimport type { RichTextEditor } from '..';\nimport { waitForUpdatesAsync } from '../../../testing/async-helpers';\nimport type { ToggleButton } from '../../../toggle-button';\nimport {\n ArrowKeyButton,\n MappingConfiguration,\n ToolbarButton,\n ToolbarButtonKey\n} from './types';\nimport {\n getTagsFromElement,\n getLeafContentsFromElement,\n getLastChildElement,\n getLastChildElementAttribute\n} from '../../models/testing/markdown-parser-utils';\nimport { richTextMentionUsersViewTag } from '../../../rich-text-mention/users/view';\nimport { RichTextMarkdownParser } from '../../models/markdown-parser';\nimport { buttonTag, type Button } from '../../../button';\nimport { richTextMentionListboxTag } from '../../mention-listbox';\nimport { listOptionTag, type ListOption } from '../../../list-option';\nimport { anchoredRegionTag } from '../../../anchored-region';\nimport { iconAtTag } from '../../../icons/at';\nimport { MarkdownParserMentionConfiguration } from '../../models/markdown-parser-mention-configuration';\nimport { MentionInternals } from '../../../rich-text-mention/base/models/mention-internals';\nimport { MappingUserConfig } from '../../../rich-text-mention/users/models/mapping-user-config';\nimport { RichTextMentionUsersValidator } from '../../../rich-text-mention/users/models/rich-text-mention-users-validator';\n\n/**\n * Page object for the `nimble-rich-text-editor` component.\n */\nexport class RichTextEditorPageObject {\n public constructor(\n private readonly richTextEditorElement: RichTextEditor\n ) {}\n\n public editorSectionHasChildNodes(): boolean {\n const editorSection = this.getEditorSection();\n return editorSection!.hasChildNodes();\n }\n\n public getEditorSectionFirstElementChildClassName(): string {\n const editorSection = this.getEditorSection();\n return editorSection!.firstElementChild!.className;\n }\n\n public async clickEditorShortcutKeys(\n shortcutKey: string,\n isShiftKey: boolean\n ): Promise<void> {\n const editor = this.getTiptapEditor();\n const event = new KeyboardEvent('keydown', {\n key: shortcutKey,\n ctrlKey: true,\n shiftKey: isShiftKey,\n bubbles: true,\n cancelable: true\n });\n editor.dispatchEvent(event);\n await waitForUpdatesAsync();\n }\n\n public async pressEnterKeyInEditor(): Promise<void> {\n const editor = this.getTiptapEditor();\n const event = new KeyboardEvent('keydown', {\n key: keyEnter,\n bubbles: true,\n cancelable: true\n });\n editor.dispatchEvent(event);\n await waitForUpdatesAsync();\n }\n\n public async pressEscapeKeyInEditor(): Promise<void> {\n const editor = this.getTiptapEditor();\n const event = new KeyboardEvent('keydown', {\n key: keyEscape,\n bubbles: true,\n cancelable: true\n });\n editor.dispatchEvent(event);\n await waitForUpdatesAsync();\n }\n\n public async pressArrowKeyInEditor(\n arrowButton: ArrowKeyButton\n ): Promise<void> {\n const editor = this.getTiptapEditor();\n const event = new KeyboardEvent('keydown', {\n key: arrowButton,\n bubbles: true,\n cancelable: true\n });\n editor.dispatchEvent(event);\n await waitForUpdatesAsync();\n }\n\n public async pressShiftEnterKeysInEditor(): Promise<void> {\n const editor = this.getTiptapEditor();\n const shiftEnterEvent = new KeyboardEvent('keydown', {\n key: keyEnter,\n shiftKey: true,\n bubbles: true,\n cancelable: true\n });\n editor.dispatchEvent(shiftEnterEvent);\n await waitForUpdatesAsync();\n }\n\n public async pressTabKeyInEditor(): Promise<void> {\n const editor = this.getTiptapEditor();\n const event = new KeyboardEvent('keydown', {\n key: keyTab,\n bubbles: true,\n cancelable: true\n });\n editor.dispatchEvent(event);\n await waitForUpdatesAsync();\n }\n\n public async pressShiftTabKeysInEditor(): Promise<void> {\n const editor = this.getTiptapEditor();\n const shiftTabEvent = new KeyboardEvent('keydown', {\n key: keyTab,\n shiftKey: true,\n bubbles: true,\n cancelable: true\n });\n editor.dispatchEvent(shiftTabEvent);\n await waitForUpdatesAsync();\n }\n\n /**\n * In testing environment, when clicking on the footer button, it may not persist in the same state if any editor transaction occurs in between.\n * This behavior is likely due to dynamic modifications of formatting button states based on cursor positions during editor transactions.\n * Setting the \"force\" parameter to true activates the formatting button state; when set to false, it deactivates the state.\n * If unset, the state toggles by interacting with it once.\n */\n public async toggleFooterButton(\n button: ToolbarButton,\n force?: boolean\n ): Promise<void> {\n const toggleButton = this.getFormattingButton(button);\n const event = new Event('mousedown', { bubbles: true });\n toggleButton!.dispatchEvent(event);\n toggleButton!.click();\n let format = Object.keys(ToolbarButton).find(\n key => ToolbarButton[key as ToolbarButtonKey] === button\n );\n // In the editor, the isActive() method expects the format name to be 'italic' instead of 'italics.'\n // As it was consistently represent it as 'italics' elsewhere just updated it here\n if (format === 'italics') {\n format = 'italic';\n }\n if (force === true || force === false) {\n if (\n this.richTextEditorElement.tiptapEditor.isActive(format!)\n !== force\n ) {\n toggleButton!.dispatchEvent(event);\n toggleButton!.click();\n }\n }\n await waitForUpdatesAsync();\n }\n\n public async clickUserMentionButton(): Promise<void> {\n const userMentionButton = this.getUserMentionButton();\n userMentionButton!.click();\n await waitForUpdatesAsync();\n }\n\n public getMentionButtonIcon(buttonIndex: number): string | undefined {\n const buttons: Button[] = this.getMentionButtons()!;\n return buttons[buttonIndex]?.firstElementChild?.tagName;\n }\n\n public getMentionButtonTitle(buttonIndex: number): string {\n const buttons: Button[] = this.getMentionButtons()!;\n return buttons[buttonIndex]?.getAttribute('title') ?? '';\n }\n\n public getMentionButtonLabel(buttonIndex: number): string {\n const buttons: Button[] = this.getMentionButtons()!;\n return buttons[buttonIndex]?.innerText ?? '';\n }\n\n public getButtonCheckedState(button: ToolbarButton): boolean {\n const toggleButton = this.getFormattingButton(button);\n return toggleButton!.checked;\n }\n\n public getButtonTabIndex(button: ToolbarButton): number {\n const toggleButton = this.getFormattingButton(button);\n return toggleButton!.tabIndex;\n }\n\n public spaceKeyActivatesButton(button: ToolbarButton): void {\n const toggleButton = this.getFormattingButton(button)!;\n const event = new KeyboardEvent('keypress', {\n key: keySpace\n } as KeyboardEventInit);\n toggleButton.control.dispatchEvent(event);\n }\n\n public enterKeyActivatesButton(button: ToolbarButton): void {\n const toggleButton = this.getFormattingButton(button)!;\n const event = new KeyboardEvent('keypress', {\n key: keyEnter\n } as KeyboardEventInit);\n toggleButton.control.dispatchEvent(event);\n }\n\n public pasteToEditor(text: string): void {\n const editor = this.getTiptapEditor();\n const pasteEvent = new ClipboardEvent('paste', {\n clipboardData: new DataTransfer()\n });\n pasteEvent.clipboardData?.setData('text/plain', text);\n editor.dispatchEvent(pasteEvent);\n }\n\n // Simulate the actual pasting of content by passing the extracted HTML string as an argument and setting the format to 'text/html',\n // as in the [DataFormat](https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer) object.\n // For example, when copying a link, the clipboard stores information that includes the anchor tag, href attribute value etc, and paste it as an HTML string\n public pasteHTMLToEditor(htmlString: string): void {\n const editor = this.getTiptapEditor();\n const pasteEvent = new ClipboardEvent('paste', {\n clipboardData: new DataTransfer()\n });\n pasteEvent.clipboardData?.setData('text/html', htmlString);\n editor.dispatchEvent(pasteEvent);\n }\n\n public async setEditorTextContent(value: string): Promise<void> {\n this.richTextEditorElement.tiptapEditor\n .chain()\n .focus()\n .insertContent({\n type: 'text',\n text: value\n })\n .run();\n await waitForUpdatesAsync();\n\n if (this.isMentionListboxOpened()) {\n this.richTextEditorElement.tiptapEditor.commands.focus();\n await waitForUpdatesAsync();\n }\n }\n\n public async setCursorPosition(position: number): Promise<void> {\n this.richTextEditorElement.tiptapEditor.commands.setTextSelection(\n position\n );\n await waitForUpdatesAsync();\n }\n\n public async replaceEditorContent(value: string): Promise<void> {\n const lastElement = this.getEditorLastChildElement();\n lastElement.parentElement!.textContent = value;\n await waitForUpdatesAsync();\n }\n\n public async sliceEditorContent(from: number, to: number): Promise<void> {\n this.richTextEditorElement.tiptapEditor\n .chain()\n .focus()\n .deleteRange({ from, to })\n .run();\n await waitForUpdatesAsync();\n }\n\n public getEditorLastChildAttribute(attribute: string): string {\n return getLastChildElementAttribute(attribute, this.getTiptapEditor());\n }\n\n public isMentionListboxOpened(): boolean {\n return (\n !this.getMentionListbox()\n ?.shadowRoot?.querySelector(anchoredRegionTag)\n ?.hasAttribute('hidden') ?? false\n );\n }\n\n public getEditorMentionViewAttributeValues(attribute: string): string[] {\n return Array.from(\n this.getTiptapEditor().querySelectorAll(richTextMentionUsersViewTag)\n ).map(el => el.getAttribute(attribute) || '');\n }\n\n public getEditorFirstChildTagName(): string {\n return this.getTiptapEditor().firstElementChild?.tagName ?? '';\n }\n\n public getEditorFirstChildTextContent(): string {\n return this.getTiptapEditor().firstElementChild?.textContent ?? '';\n }\n\n public getEditorTextContents(): string[] {\n return Array.from(this.getTiptapEditor().querySelectorAll('*')).map(\n el => el.textContent || ''\n );\n }\n\n public getEditorTagNames(): string[] {\n return getTagsFromElement(this.getTiptapEditor());\n }\n\n // Return list of tags, excluding those such as 'IMG' (prosemirror-separator) that do not affect the UI or markdown output.\n // These tags are considered extraneous and are added by prosemirror.\n public getMarkdownRenderedTagNames(): string[] {\n return getTagsFromElement(this.getTiptapEditor()).filter(\n tag => tag !== 'IMG'\n );\n }\n\n public getEditorLeafContents(): string[] {\n return getLeafContentsFromElement(this.getTiptapEditor());\n }\n\n public getEditorTagNamesWithClosingTags(): string[] {\n const tagNames: string[] = [];\n const tiptapEditor = this.getTiptapEditor();\n\n const processNode = (node: Node): void => {\n if (node.nodeType === Node.ELEMENT_NODE) {\n const el = node as Element;\n tagNames.push(el.tagName);\n\n el.childNodes.forEach(processNode);\n\n tagNames.push(`/${el.tagName}`);\n }\n };\n\n if (tiptapEditor) {\n processNode(tiptapEditor);\n }\n\n return tagNames.slice(1, -1);\n }\n\n public getFormattingButtonTextContent(\n toolbarButton: ToolbarButton\n ): string {\n const button = this.getFormattingButton(toolbarButton);\n return button!.textContent!.trim();\n }\n\n public getFormattingButtonTitle(toolbarButton: ToolbarButton): string {\n const button = this.getFormattingButton(toolbarButton);\n return button!.title;\n }\n\n public isRichTextEditorActiveElement(): boolean {\n return (\n document.activeElement === this.richTextEditorElement\n && document.activeElement?.shadowRoot?.activeElement\n === this.getTiptapEditor()\n );\n }\n\n public getEditorTabIndex(): string {\n return this.getTiptapEditor().getAttribute('tabindex') ?? '';\n }\n\n public async setFooterHidden(footerHidden: boolean): Promise<void> {\n if (footerHidden) {\n this.richTextEditorElement.setAttribute('footer-hidden', '');\n } else {\n this.richTextEditorElement.removeAttribute('footer-hidden');\n }\n await waitForUpdatesAsync();\n }\n\n public isFooterHidden(): boolean {\n const footerSection = this.getFooter()!;\n return window.getComputedStyle(footerSection).display === 'none';\n }\n\n public async setDisabled(disabled: boolean): Promise<void> {\n if (disabled) {\n this.richTextEditorElement.setAttribute('disabled', '');\n } else {\n this.richTextEditorElement.removeAttribute('disabled');\n }\n await waitForUpdatesAsync();\n }\n\n public isButtonDisabled(button: ToolbarButton): boolean {\n const toggleButton = this.getFormattingButton(button)!;\n return toggleButton.hasAttribute('disabled');\n }\n\n public getPlaceholderValue(): string {\n const editor = this.getTiptapEditor();\n return editor.firstElementChild?.getAttribute('data-placeholder') ?? '';\n }\n\n public getParsedHtmlFromMarkdown(\n markdown: string,\n mappings?: MappingConfiguration[]\n ): string {\n const parserMentionConfigForUser = this.getParserMentionConfigForUser(mappings);\n const parseResult = RichTextMarkdownParser.parseMarkdownToDOM(\n markdown,\n [parserMentionConfigForUser]\n );\n return this.richTextEditorElement.xmlSerializer.serializeToString(\n parseResult.fragment\n );\n }\n\n public async focusOutEditor(): Promise<void> {\n const focusout = new FocusEvent('focusout');\n this.richTextEditorElement.dispatchEvent(focusout);\n await waitForUpdatesAsync();\n }\n\n public getMentionListboxItemsName(): string[] {\n const listItemsName: string[] = [];\n this.getAllListItemsInMentionBox().forEach(item => (item.hidden ? null : listItemsName.push(item.textContent!)));\n return listItemsName;\n }\n\n public getSelectedOption(): string {\n const nodeList = this.getAllListItemsInMentionBox();\n return (\n Array.from(nodeList).find(\n item => item.selected && !item.hasAttribute('hidden')\n )?.textContent ?? ''\n );\n }\n\n public async clickMentionListboxOption(index: number): Promise<void> {\n const listOption = this.getAllListItemsInMentionBox()[index];\n listOption?.click();\n await waitForUpdatesAsync();\n }\n\n public moveCursorToStart(): void {\n this.richTextEditorElement.tiptapEditor.commands.focus('start');\n }\n\n public getCursorPosition(): number {\n return this.richTextEditorElement.tiptapEditor.state.selection.anchor;\n }\n\n private getEditorSection(): Element | null | undefined {\n return this.richTextEditorElement.shadowRoot?.querySelector('.editor');\n }\n\n private getFooter(): Element | null | undefined {\n return this.richTextEditorElement.shadowRoot!.querySelector(\n '.footer-section'\n );\n }\n\n private getTiptapEditor(): HTMLDivElement {\n return this.richTextEditorElement.shadowRoot!.querySelector<HTMLDivElement>(\n '.ProseMirror'\n )!;\n }\n\n private getFormattingButton(\n button: ToolbarButton\n ): ToggleButton | null | undefined {\n const buttons: NodeListOf<ToggleButton> = this.richTextEditorElement.shadowRoot!.querySelectorAll(\n 'nimble-toggle-button'\n );\n return buttons[button];\n }\n\n private getUserMentionButton(): Button | null | undefined {\n const buttons: Button[] = this.getMentionButtons()!;\n return buttons.find(button => button.querySelector(iconAtTag));\n }\n\n private getMentionButtons(): Button[] | null | undefined {\n return Array.from(\n this.richTextEditorElement.shadowRoot!.querySelectorAll(buttonTag)\n );\n }\n\n private getMentionListbox(): Element | null {\n return this.richTextEditorElement.shadowRoot!.querySelector(\n richTextMentionListboxTag\n );\n }\n\n private getAllListItemsInMentionBox(): NodeListOf<ListOption> {\n return this.getMentionListbox()!.querySelectorAll(listOptionTag);\n }\n\n private getEditorLastChildElement(): Element {\n return getLastChildElement(this.getTiptapEditor())!;\n }\n\n private getParserMentionConfigForUser(\n mappings: MappingConfiguration[] = []\n ): MarkdownParserMentionConfiguration {\n const mentionInternals = new MentionInternals(\n {\n character: '',\n icon: '',\n viewElement: richTextMentionUsersViewTag,\n validator: new RichTextMentionUsersValidator()\n },\n () => {}\n );\n mentionInternals.pattern = '^user:(.*)';\n mappings.forEach(mapping => {\n const mappingConfig = new MappingUserConfig(\n mapping.key,\n mapping.displayName\n );\n mentionInternals.mappingConfigs = new Map().set(\n mapping.key,\n mappingConfig\n );\n });\n const parserMentionConfig = new MarkdownParserMentionConfiguration(\n mentionInternals\n );\n return parserMentionConfig;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"rich-text-editor.pageobject.js","sourceRoot":"","sources":["../../../../../src/rich-text/editor/testing/rich-text-editor.pageobject.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n keySpace,\n keyEnter,\n keyTab,\n keyEscape\n} from '@microsoft/fast-web-utilities';\nimport type { RichTextEditor } from '..';\nimport { waitForUpdatesAsync } from '../../../testing/async-helpers';\nimport type { ToggleButton } from '../../../toggle-button';\nimport {\n ArrowKeyButton,\n MappingConfiguration,\n ToolbarButton,\n ToolbarButtonKey\n} from './types';\nimport {\n getTagsFromElement,\n getLeafContentsFromElement,\n getLastChildElement,\n getLastChildElementAttribute\n} from '../../models/testing/markdown-parser-utils';\nimport { richTextMentionUsersViewTag } from '../../../rich-text-mention/users/view';\nimport { RichTextMarkdownParser } from '../../models/markdown-parser';\nimport { buttonTag, type Button } from '../../../button';\nimport { richTextMentionListboxTag } from '../../mention-listbox';\nimport { listOptionTag, type ListOption } from '../../../list-option';\nimport { anchoredRegionTag } from '../../../anchored-region';\nimport { iconAtTag } from '../../../icons/at';\nimport { MarkdownParserMentionConfiguration } from '../../models/markdown-parser-mention-configuration';\nimport { MentionInternals } from '../../../rich-text-mention/base/models/mention-internals';\nimport { MappingUserConfig } from '../../../rich-text-mention/users/models/mapping-user-config';\nimport { RichTextMentionUsersValidator } from '../../../rich-text-mention/users/models/rich-text-mention-users-validator';\n\n/**\n * Page object for the `nimble-rich-text-editor` component.\n */\nexport class RichTextEditorPageObject {\n public constructor(\n private readonly richTextEditorElement: RichTextEditor\n ) {}\n\n public editorSectionHasChildNodes(): boolean {\n const editorSection = this.getEditorSection();\n return editorSection!.hasChildNodes();\n }\n\n public getEditorSectionFirstElementChildClassName(): string {\n const editorSection = this.getEditorSection();\n return editorSection!.firstElementChild!.className;\n }\n\n public async clickEditorShortcutKeys(\n shortcutKey: string,\n isShiftKey: boolean\n ): Promise<void> {\n const editor = this.getTiptapEditor();\n const event = new KeyboardEvent('keydown', {\n key: shortcutKey,\n ctrlKey: true,\n shiftKey: isShiftKey,\n bubbles: true,\n cancelable: true\n });\n editor.dispatchEvent(event);\n await waitForUpdatesAsync();\n }\n\n public async pressEnterKeyInEditor(): Promise<void> {\n const editor = this.getTiptapEditor();\n const event = new KeyboardEvent('keydown', {\n key: keyEnter,\n bubbles: true,\n cancelable: true\n });\n editor.dispatchEvent(event);\n await waitForUpdatesAsync();\n }\n\n public async pressEscapeKeyInEditor(): Promise<void> {\n const editor = this.getTiptapEditor();\n const event = new KeyboardEvent('keydown', {\n key: keyEscape,\n bubbles: true,\n cancelable: true\n });\n editor.dispatchEvent(event);\n await waitForUpdatesAsync();\n }\n\n public async pressArrowKeyInEditor(\n arrowButton: ArrowKeyButton\n ): Promise<void> {\n const editor = this.getTiptapEditor();\n const event = new KeyboardEvent('keydown', {\n key: arrowButton,\n bubbles: true,\n cancelable: true\n });\n editor.dispatchEvent(event);\n await waitForUpdatesAsync();\n }\n\n public async pressShiftEnterKeysInEditor(): Promise<void> {\n const editor = this.getTiptapEditor();\n const shiftEnterEvent = new KeyboardEvent('keydown', {\n key: keyEnter,\n shiftKey: true,\n bubbles: true,\n cancelable: true\n });\n editor.dispatchEvent(shiftEnterEvent);\n await waitForUpdatesAsync();\n }\n\n public async pressTabKeyInEditor(): Promise<void> {\n const editor = this.getTiptapEditor();\n const event = new KeyboardEvent('keydown', {\n key: keyTab,\n bubbles: true,\n cancelable: true\n });\n editor.dispatchEvent(event);\n await waitForUpdatesAsync();\n }\n\n public async pressShiftTabKeysInEditor(): Promise<void> {\n const editor = this.getTiptapEditor();\n const shiftTabEvent = new KeyboardEvent('keydown', {\n key: keyTab,\n shiftKey: true,\n bubbles: true,\n cancelable: true\n });\n editor.dispatchEvent(shiftTabEvent);\n await waitForUpdatesAsync();\n }\n\n /**\n * In testing environment, when clicking on the footer button, it may not persist in the same state if any editor transaction occurs in between.\n * This behavior is likely due to dynamic modifications of formatting button states based on cursor positions during editor transactions.\n * Setting the \"force\" parameter to true activates the formatting button state; when set to false, it deactivates the state.\n * If unset, the state toggles by interacting with it once.\n */\n public async toggleFooterButton(\n button: ToolbarButton,\n force?: boolean\n ): Promise<void> {\n const toggleButton = this.getFormattingButton(button);\n const event = new Event('mousedown', { bubbles: true });\n toggleButton!.dispatchEvent(event);\n toggleButton!.click();\n let format = Object.keys(ToolbarButton).find(\n key => ToolbarButton[key as ToolbarButtonKey] === button\n );\n // In the editor, the isActive() method expects the format name to be 'italic' instead of 'italics.'\n // As it was consistently represent it as 'italics' elsewhere just updated it here\n if (format === 'italics') {\n format = 'italic';\n }\n if (force === true || force === false) {\n if (\n this.richTextEditorElement.tiptapEditor.isActive(format!)\n !== force\n ) {\n toggleButton!.dispatchEvent(event);\n toggleButton!.click();\n }\n }\n await waitForUpdatesAsync();\n }\n\n public async clickUserMentionButton(): Promise<void> {\n const userMentionButton = this.getUserMentionButton();\n userMentionButton!.click();\n await waitForUpdatesAsync();\n }\n\n public getMentionButtonIcon(buttonIndex: number): string | undefined {\n const buttons: Button[] = this.getMentionButtons()!;\n return buttons[buttonIndex]?.firstElementChild?.tagName;\n }\n\n public getMentionButtonTitle(buttonIndex: number): string {\n const buttons: Button[] = this.getMentionButtons()!;\n return buttons[buttonIndex]?.getAttribute('title') ?? '';\n }\n\n public getMentionButtonLabel(buttonIndex: number): string {\n const buttons: Button[] = this.getMentionButtons()!;\n return buttons[buttonIndex]?.innerText ?? '';\n }\n\n public getButtonCheckedState(button: ToolbarButton): boolean {\n const toggleButton = this.getFormattingButton(button);\n return toggleButton!.checked;\n }\n\n public getButtonTabIndex(button: ToolbarButton): number {\n const toggleButton = this.getFormattingButton(button);\n return toggleButton!.tabIndex;\n }\n\n public spaceKeyActivatesButton(button: ToolbarButton): void {\n const toggleButton = this.getFormattingButton(button)!;\n const event = new KeyboardEvent('keypress', {\n key: keySpace\n } as KeyboardEventInit);\n toggleButton.control.dispatchEvent(event);\n }\n\n public enterKeyActivatesButton(button: ToolbarButton): void {\n const toggleButton = this.getFormattingButton(button)!;\n const event = new KeyboardEvent('keypress', {\n key: keyEnter\n } as KeyboardEventInit);\n toggleButton.control.dispatchEvent(event);\n }\n\n public async pasteToEditor(text: string): Promise<void> {\n const editor = this.getTiptapEditor();\n const pasteEvent = new ClipboardEvent('paste', {\n clipboardData: new DataTransfer()\n });\n pasteEvent.clipboardData?.setData('text/plain', text);\n editor.dispatchEvent(pasteEvent);\n\n await this.focusEditorIfMentionListboxOpened();\n }\n\n // Simulate the actual pasting of content by passing the extracted HTML string as an argument and setting the format to 'text/html',\n // as in the [DataFormat](https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer) object.\n // For example, when copying a link, the clipboard stores information that includes the anchor tag, href attribute value etc, and paste it as an HTML string\n public async pasteHTMLToEditor(htmlString: string): Promise<void> {\n const editor = this.getTiptapEditor();\n const pasteEvent = new ClipboardEvent('paste', {\n clipboardData: new DataTransfer()\n });\n pasteEvent.clipboardData?.setData('text/html', htmlString);\n editor.dispatchEvent(pasteEvent);\n\n await this.focusEditorIfMentionListboxOpened();\n }\n\n public async setEditorTextContent(value: string): Promise<void> {\n this.richTextEditorElement.tiptapEditor\n .chain()\n .focus()\n .insertContent({\n type: 'text',\n text: value\n })\n .run();\n await waitForUpdatesAsync();\n\n await this.focusEditorIfMentionListboxOpened();\n }\n\n public async setCursorPosition(position: number): Promise<void> {\n this.richTextEditorElement.tiptapEditor.commands.setTextSelection(\n position\n );\n await waitForUpdatesAsync();\n }\n\n public async replaceEditorContent(value: string): Promise<void> {\n const lastElement = this.getEditorLastChildElement();\n lastElement.parentElement!.textContent = value;\n await waitForUpdatesAsync();\n\n await this.focusEditorIfMentionListboxOpened();\n }\n\n public async sliceEditorContent(from: number, to: number): Promise<void> {\n this.richTextEditorElement.tiptapEditor\n .chain()\n .focus()\n .deleteRange({ from, to })\n .run();\n await waitForUpdatesAsync();\n\n await this.focusEditorIfMentionListboxOpened();\n }\n\n public getEditorLastChildAttribute(attribute: string): string {\n return getLastChildElementAttribute(attribute, this.getTiptapEditor());\n }\n\n public async isMentionListboxOpened(): Promise<boolean> {\n await waitForUpdatesAsync();\n\n return !this.getMentionListbox()?.shadowRoot?.querySelector(\n anchoredRegionTag\n )?.hidden;\n }\n\n public getEditorMentionViewAttributeValues(attribute: string): string[] {\n return Array.from(\n this.getTiptapEditor().querySelectorAll(richTextMentionUsersViewTag)\n ).map(el => el.getAttribute(attribute) || '');\n }\n\n public getEditorFirstChildTagName(): string {\n return this.getTiptapEditor().firstElementChild?.tagName ?? '';\n }\n\n public getEditorFirstChildTextContent(): string {\n return this.getTiptapEditor().firstElementChild?.textContent ?? '';\n }\n\n public getEditorTextContents(): string[] {\n return Array.from(this.getTiptapEditor().querySelectorAll('*')).map(\n el => el.textContent || ''\n );\n }\n\n public getEditorTagNames(): string[] {\n return getTagsFromElement(this.getTiptapEditor());\n }\n\n // Return list of tags, excluding those such as 'IMG' (prosemirror-separator) that do not affect the UI or markdown output.\n // These tags are considered extraneous and are added by prosemirror.\n public getMarkdownRenderedTagNames(): string[] {\n return getTagsFromElement(this.getTiptapEditor()).filter(\n tag => tag !== 'IMG'\n );\n }\n\n public getEditorLeafContents(): string[] {\n return getLeafContentsFromElement(this.getTiptapEditor());\n }\n\n public getEditorTagNamesWithClosingTags(): string[] {\n const tagNames: string[] = [];\n const tiptapEditor = this.getTiptapEditor();\n\n const processNode = (node: Node): void => {\n if (node.nodeType === Node.ELEMENT_NODE) {\n const el = node as Element;\n tagNames.push(el.tagName);\n\n el.childNodes.forEach(processNode);\n\n tagNames.push(`/${el.tagName}`);\n }\n };\n\n if (tiptapEditor) {\n processNode(tiptapEditor);\n }\n\n return tagNames.slice(1, -1);\n }\n\n public getFormattingButtonTextContent(\n toolbarButton: ToolbarButton\n ): string {\n const button = this.getFormattingButton(toolbarButton);\n return button!.textContent!.trim();\n }\n\n public getFormattingButtonTitle(toolbarButton: ToolbarButton): string {\n const button = this.getFormattingButton(toolbarButton);\n return button!.title;\n }\n\n public isRichTextEditorActiveElement(): boolean {\n return (\n document.activeElement === this.richTextEditorElement\n && document.activeElement?.shadowRoot?.activeElement\n === this.getTiptapEditor()\n );\n }\n\n public getEditorTabIndex(): string {\n return this.getTiptapEditor().getAttribute('tabindex') ?? '';\n }\n\n public async setFooterHidden(footerHidden: boolean): Promise<void> {\n if (footerHidden) {\n this.richTextEditorElement.setAttribute('footer-hidden', '');\n } else {\n this.richTextEditorElement.removeAttribute('footer-hidden');\n }\n await waitForUpdatesAsync();\n }\n\n public isFooterHidden(): boolean {\n const footerSection = this.getFooter()!;\n return window.getComputedStyle(footerSection).display === 'none';\n }\n\n public async setDisabled(disabled: boolean): Promise<void> {\n if (disabled) {\n this.richTextEditorElement.setAttribute('disabled', '');\n } else {\n this.richTextEditorElement.removeAttribute('disabled');\n }\n await waitForUpdatesAsync();\n }\n\n public isButtonDisabled(button: ToolbarButton): boolean {\n const toggleButton = this.getFormattingButton(button)!;\n return toggleButton.hasAttribute('disabled');\n }\n\n public getPlaceholderValue(): string {\n const editor = this.getTiptapEditor();\n return editor.firstElementChild?.getAttribute('data-placeholder') ?? '';\n }\n\n public getParsedHtmlFromMarkdown(\n markdown: string,\n mappings?: MappingConfiguration[]\n ): string {\n const parserMentionConfigForUser = this.getParserMentionConfigForUser(mappings);\n const parseResult = RichTextMarkdownParser.parseMarkdownToDOM(\n markdown,\n [parserMentionConfigForUser]\n );\n return this.richTextEditorElement.xmlSerializer.serializeToString(\n parseResult.fragment\n );\n }\n\n public async focusOutEditor(): Promise<void> {\n const focusout = new FocusEvent('focusout');\n this.richTextEditorElement.dispatchEvent(focusout);\n await waitForUpdatesAsync();\n }\n\n public getMentionListboxItemsName(): string[] {\n const listItemsName: string[] = [];\n this.getAllListItemsInMentionBox().forEach(item => (item.hidden ? null : listItemsName.push(item.textContent!)));\n return listItemsName;\n }\n\n public getSelectedOption(): string {\n const nodeList = this.getAllListItemsInMentionBox();\n return (\n Array.from(nodeList).find(\n item => item.selected && !item.hasAttribute('hidden')\n )?.textContent ?? ''\n );\n }\n\n public async clickMentionListboxOption(index: number): Promise<void> {\n await this.focusEditorIfMentionListboxOpened();\n\n const listOption = this.getAllListItemsInMentionBox()[index];\n listOption?.click();\n await waitForUpdatesAsync();\n }\n\n public moveCursorToStart(): void {\n this.richTextEditorElement.tiptapEditor.commands.focus('start');\n }\n\n public getCursorPosition(): number {\n return this.richTextEditorElement.tiptapEditor.state.selection.anchor;\n }\n\n private getEditorSection(): Element | null | undefined {\n return this.richTextEditorElement.shadowRoot?.querySelector('.editor');\n }\n\n private getFooter(): Element | null | undefined {\n return this.richTextEditorElement.shadowRoot!.querySelector(\n '.footer-section'\n );\n }\n\n private getTiptapEditor(): HTMLDivElement {\n return this.richTextEditorElement.shadowRoot!.querySelector<HTMLDivElement>(\n '.ProseMirror'\n )!;\n }\n\n private getFormattingButton(\n button: ToolbarButton\n ): ToggleButton | null | undefined {\n const buttons: NodeListOf<ToggleButton> = this.richTextEditorElement.shadowRoot!.querySelectorAll(\n 'nimble-toggle-button'\n );\n return buttons[button];\n }\n\n private getUserMentionButton(): Button | null | undefined {\n const buttons: Button[] = this.getMentionButtons()!;\n return buttons.find(button => button.querySelector(iconAtTag));\n }\n\n private getMentionButtons(): Button[] | null | undefined {\n return Array.from(\n this.richTextEditorElement.shadowRoot!.querySelectorAll(buttonTag)\n );\n }\n\n private getMentionListbox(): Element | null {\n return this.richTextEditorElement.shadowRoot!.querySelector(\n richTextMentionListboxTag\n );\n }\n\n private getAllListItemsInMentionBox(): NodeListOf<ListOption> {\n return this.getMentionListbox()!.querySelectorAll(listOptionTag);\n }\n\n private getEditorLastChildElement(): Element {\n return getLastChildElement(this.getTiptapEditor())!;\n }\n\n private getParserMentionConfigForUser(\n mappings: MappingConfiguration[] = []\n ): MarkdownParserMentionConfiguration {\n const mentionInternals = new MentionInternals(\n {\n character: '',\n icon: '',\n viewElement: richTextMentionUsersViewTag,\n validator: new RichTextMentionUsersValidator()\n },\n () => {}\n );\n mentionInternals.pattern = '^user:(.*)';\n mappings.forEach(mapping => {\n const mappingConfig = new MappingUserConfig(\n mapping.key,\n mapping.displayName\n );\n mentionInternals.mappingConfigs = new Map().set(\n mapping.key,\n mappingConfig\n );\n });\n const parserMentionConfig = new MarkdownParserMentionConfiguration(\n mentionInternals\n );\n return parserMentionConfig;\n }\n\n private async focusEditorIfMentionListboxOpened(): Promise<void> {\n if (await this.isMentionListboxOpened()) {\n this.richTextEditorElement.tiptapEditor.commands.focus();\n await waitForUpdatesAsync();\n }\n }\n}\n"]}
|
|
@@ -178,9 +178,9 @@ export declare class Table<TData extends TableRecord = TableRecord> extends Foun
|
|
|
178
178
|
/** @internal */
|
|
179
179
|
handleCollapseAllRows(): void;
|
|
180
180
|
/** @internal */
|
|
181
|
-
|
|
181
|
+
onRightDividerPointerDown(event: PointerEvent, columnIndex: number): void;
|
|
182
182
|
/** @internal */
|
|
183
|
-
|
|
183
|
+
onLeftDividerPointerDown(event: PointerEvent, columnIndex: number): void;
|
|
184
184
|
/** @internal */
|
|
185
185
|
getLeftDividerIndex(columnIndex: number): number;
|
|
186
186
|
/** @internal */
|
package/dist/esm/table/index.js
CHANGED
|
@@ -344,15 +344,15 @@ export class Table extends FoundationElement {
|
|
|
344
344
|
this.expansionManager.collapseAll();
|
|
345
345
|
}
|
|
346
346
|
/** @internal */
|
|
347
|
-
|
|
348
|
-
if (event.button === 0) {
|
|
349
|
-
this.layoutManager.beginColumnInteractiveSize(event.clientX, this.getRightDividerIndex(columnIndex));
|
|
347
|
+
onRightDividerPointerDown(event, columnIndex) {
|
|
348
|
+
if (event.pointerType !== 'mouse' || event.button === 0) {
|
|
349
|
+
this.layoutManager.beginColumnInteractiveSize(event.target, event.pointerId, event.clientX, this.getRightDividerIndex(columnIndex));
|
|
350
350
|
}
|
|
351
351
|
}
|
|
352
352
|
/** @internal */
|
|
353
|
-
|
|
354
|
-
if (event.button === 0) {
|
|
355
|
-
this.layoutManager.beginColumnInteractiveSize(event.clientX, this.getLeftDividerIndex(columnIndex));
|
|
353
|
+
onLeftDividerPointerDown(event, columnIndex) {
|
|
354
|
+
if (event.pointerType !== 'mouse' || event.button === 0) {
|
|
355
|
+
this.layoutManager.beginColumnInteractiveSize(event.target, event.pointerId, event.clientX, this.getLeftDividerIndex(columnIndex));
|
|
356
356
|
}
|
|
357
357
|
}
|
|
358
358
|
/** @internal */
|