@vaadin/rich-text-editor
Version:
vaadin-rich-text-editor
129 lines (115 loc) • 3.73 kB
TypeScript
/**
* @license
* Copyright (c) 2000 - 2026 Vaadin Ltd.
*
* This program is available under Vaadin Commercial License and Service Terms.
*
*
* See https://vaadin.com/commercial-license-and-service-terms for the full
* license.
*/
import type { Constructor } from '@open-wc/dedupe-mixin';
import type { I18nMixinClass } from '@vaadin/component-base/src/i18n-mixin.js';
export interface RichTextEditorI18n {
undo?: string;
redo?: string;
bold?: string;
italic?: string;
underline?: string;
strike?: string;
color?: string;
background?: string;
h1?: string;
h2?: string;
h3?: string;
subscript?: string;
superscript?: string;
listOrdered?: string;
listBullet?: string;
outdent?: string;
indent?: string;
alignLeft?: string;
alignCenter?: string;
alignRight?: string;
image?: string;
link?: string;
blockquote?: string;
codeBlock?: string;
clean?: string;
linkDialogTitle?: string;
ok?: string;
cancel?: string;
remove?: string;
}
/**
* Fired when the `htmlValue` property changes.
*/
export type RichTextEditorHtmlValueChangedEvent = CustomEvent<{ value: string }>;
/**
* Fired when the `value` property changes.
*/
export type RichTextEditorValueChangedEvent = CustomEvent<{ value: string }>;
export interface RichTextEditorCustomEventMap {
'html-value-changed': RichTextEditorHtmlValueChangedEvent;
'value-changed': RichTextEditorValueChangedEvent;
}
export declare function RichTextEditorMixin<T extends Constructor<HTMLElement>>(
base: T,
): Constructor<RichTextEditorMixinClass> & I18nMixinClass<RichTextEditorI18n> & T;
export declare class RichTextEditorMixinClass {
/**
* Value is a list of the operations which describe change to the document.
* Each of those operations describe the change at the current index.
* They can be an `insert`, `delete` or `retain`. The format is as follows:
*
* ```js
* [
* { insert: 'Hello World' },
* { insert: '!', attributes: { bold: true }}
* ]
* ```
*
* See also https://github.com/quilljs/delta for detailed documentation.
*/
value: string;
/**
* HTML representation of the rich text editor content.
*/
readonly htmlValue: string | null | undefined;
/**
* When true, the user can not modify, nor copy the editor content.
*/
disabled: boolean;
/**
* When true, the user can not modify the editor content, but can copy it.
*/
readonly: boolean;
/**
* The object used to localize this component. To change the default
* localization, replace this with an object that provides all properties, or
* just the individual properties you want to change.
*
* The properties are used e.g. as the tooltips for the editor toolbar
* buttons.
*/
i18n: RichTextEditorI18n;
/**
* The list of colors used by the background and text color
* selection controls. Should contain an array of HEX strings.
*
* When user selects `#000000` (black) as a text color,
* or `#ffffff` (white) as a background color, it resets
* the corresponding format for the selected text.
*/
colorOptions: string[];
/**
* Sets content represented by HTML snippet into the editor.
* The snippet is interpreted by [Quill's Clipboard matchers](https://quilljs.com/docs/modules/clipboard/#matchers),
* which may not produce the exactly input HTML.
*
* **NOTE:** Improper handling of HTML can lead to cross site scripting (XSS) and failure to sanitize
* properly is both notoriously error-prone and a leading cause of web vulnerabilities.
* This method is aptly named to ensure the developer has taken the necessary precautions.
*/
dangerouslySetHtmlValue(htmlValue: string): void;
}