@vaadin/rich-text-editor 24.8.0-alpha9 → 25.0.0-alpha2

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/README.md CHANGED
@@ -28,29 +28,6 @@ Once installed, import the component in your application:
28
28
  import '@vaadin/rich-text-editor';
29
29
  ```
30
30
 
31
- ## Themes
32
-
33
- Vaadin components come with two built-in [themes](https://vaadin.com/docs/latest/styling), Lumo and Material.
34
- The [main entrypoint](https://github.com/vaadin/web-components/blob/main/packages/rich-text-editor/vaadin-rich-text-editor.js) of the package uses the Lumo theme.
35
-
36
- To use the Material theme, import the component from the `theme/material` folder:
37
-
38
- ```js
39
- import '@vaadin/rich-text-editor/theme/material/vaadin-rich-text-editor.js';
40
- ```
41
-
42
- You can also import the Lumo version of the component explicitly:
43
-
44
- ```js
45
- import '@vaadin/rich-text-editor/theme/lumo/vaadin-rich-text-editor.js';
46
- ```
47
-
48
- Finally, you can import the un-themed component from the `src` folder to get a minimal starting point:
49
-
50
- ```js
51
- import '@vaadin/rich-text-editor/src/vaadin-rich-text-editor.js';
52
- ```
53
-
54
31
  ## Contributing
55
32
 
56
33
  Read the [contributing guide](https://vaadin.com/docs/latest/contributing) to learn about our development process, how to propose bugfixes and improvements, and how to test your changes to Vaadin components.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vaadin/rich-text-editor",
3
- "version": "24.8.0-alpha9",
3
+ "version": "25.0.0-alpha2",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -35,30 +35,27 @@
35
35
  "Vaadin",
36
36
  "vaadin-rich-text-editor",
37
37
  "web-components",
38
- "web-component",
39
- "polymer"
38
+ "web-component"
40
39
  ],
41
40
  "dependencies": {
42
41
  "@open-wc/dedupe-mixin": "^1.3.0",
43
- "@polymer/polymer": "^3.0.0",
44
- "@vaadin/button": "24.8.0-alpha9",
45
- "@vaadin/component-base": "24.8.0-alpha9",
46
- "@vaadin/confirm-dialog": "24.8.0-alpha9",
47
- "@vaadin/overlay": "24.8.0-alpha9",
48
- "@vaadin/text-field": "24.8.0-alpha9",
49
- "@vaadin/tooltip": "24.8.0-alpha9",
50
- "@vaadin/vaadin-lumo-styles": "24.8.0-alpha9",
51
- "@vaadin/vaadin-material-styles": "24.8.0-alpha9",
52
- "@vaadin/vaadin-themable-mixin": "24.8.0-alpha9",
42
+ "@vaadin/button": "25.0.0-alpha2",
43
+ "@vaadin/component-base": "25.0.0-alpha2",
44
+ "@vaadin/confirm-dialog": "25.0.0-alpha2",
45
+ "@vaadin/overlay": "25.0.0-alpha2",
46
+ "@vaadin/text-field": "25.0.0-alpha2",
47
+ "@vaadin/tooltip": "25.0.0-alpha2",
48
+ "@vaadin/vaadin-lumo-styles": "25.0.0-alpha2",
49
+ "@vaadin/vaadin-themable-mixin": "25.0.0-alpha2",
53
50
  "lit": "^3.0.0"
54
51
  },
55
52
  "devDependencies": {
56
- "@vaadin/a11y-base": "24.8.0-alpha9",
57
- "@vaadin/chai-plugins": "24.8.0-alpha9",
58
- "@vaadin/test-runner-commands": "24.8.0-alpha9",
59
- "@vaadin/testing-helpers": "^1.1.0",
60
- "gulp": "^4.0.2",
61
- "gulp-cli": "^2.3.0",
53
+ "@vaadin/a11y-base": "25.0.0-alpha2",
54
+ "@vaadin/chai-plugins": "25.0.0-alpha2",
55
+ "@vaadin/test-runner-commands": "25.0.0-alpha2",
56
+ "@vaadin/testing-helpers": "^2.0.0",
57
+ "gulp": "^5.0.0",
58
+ "gulp-cli": "^3.0.0",
62
59
  "gulp-iconfont": "^11.0.0",
63
60
  "sinon": "^18.0.0"
64
61
  },
@@ -67,5 +64,5 @@
67
64
  "web-types.json",
68
65
  "web-types.lit.json"
69
66
  ],
70
- "gitHead": "4de3809275ddfd733b0d13fd02af8faf73eb6770"
67
+ "gitHead": "67ffcd5355cf21ce1b5039c598525109fc4c164b"
71
68
  }
@@ -8,7 +8,7 @@
8
8
  * See https://vaadin.com/commercial-license-and-service-terms for the full
9
9
  * license.
10
10
  */
11
- import { css, registerStyles } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
11
+ import { css } from 'lit';
12
12
 
13
13
  export const contentStyles = css`
14
14
  [part='content'] {
@@ -113,6 +113,3 @@ export const contentStyles = css`
113
113
  text-align: right;
114
114
  }
115
115
  `;
116
-
117
- // Register a module with ID for backwards compatibility.
118
- registerStyles('', contentStyles, { moduleId: 'vaadin-rich-text-editor-content-styles' });
@@ -8,7 +8,7 @@
8
8
  * See https://vaadin.com/commercial-license-and-service-terms for the full
9
9
  * license.
10
10
  */
11
- import { css, registerStyles } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
11
+ import { css } from 'lit';
12
12
 
13
13
  const template = document.createElement('template');
14
14
 
@@ -88,6 +88,3 @@ export const iconsStyles = css`
88
88
  content: var(--vaadin-rte-icons-redo);
89
89
  }
90
90
  `;
91
-
92
- // Register a module with ID for backwards compatibility.
93
- registerStyles('', iconsStyles, { moduleId: 'vaadin-rich-text-editor-icons' });
@@ -8,19 +8,16 @@
8
8
  * See https://vaadin.com/commercial-license-and-service-terms for the full
9
9
  * license.
10
10
  */
11
- import { html, PolymerElement } from '@polymer/polymer/polymer-element.js';
11
+ import { css, html, LitElement } from 'lit';
12
12
  import { defineCustomElement } from '@vaadin/component-base/src/define.js';
13
13
  import { DirMixin } from '@vaadin/component-base/src/dir-mixin.js';
14
+ import { PolylitMixin } from '@vaadin/component-base/src/polylit-mixin.js';
14
15
  import { OverlayMixin } from '@vaadin/overlay/src/vaadin-overlay-mixin.js';
15
16
  import { PositionMixin } from '@vaadin/overlay/src/vaadin-overlay-position-mixin.js';
16
17
  import { overlayStyles } from '@vaadin/overlay/src/vaadin-overlay-styles.js';
17
- import { registerStyles, ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
18
+ import { ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
18
19
  import { RichTextEditorPopupMixin } from './vaadin-rich-text-editor-popup-mixin.js';
19
20
 
20
- registerStyles('vaadin-rich-text-editor-popup-overlay', [overlayStyles], {
21
- moduleId: 'vaadin-rich-text-editor-popup-overlay-styles',
22
- });
23
-
24
21
  /**
25
22
  * An element used internally by `<vaadin-rich-text-editor>`. Not intended to be used separately.
26
23
  *
@@ -29,30 +26,40 @@ registerStyles('vaadin-rich-text-editor-popup-overlay', [overlayStyles], {
29
26
  * @mixes RichTextEditorPopupMixin
30
27
  * @private
31
28
  */
32
- class RichTextEditorPopup extends RichTextEditorPopupMixin(PolymerElement) {
29
+ class RichTextEditorPopup extends RichTextEditorPopupMixin(PolylitMixin(LitElement)) {
33
30
  static get is() {
34
31
  return 'vaadin-rich-text-editor-popup';
35
32
  }
36
33
 
37
- static get template() {
34
+ static get styles() {
35
+ return css`
36
+ :host {
37
+ display: none;
38
+ }
39
+ `;
40
+ }
41
+
42
+ /** @protected */
43
+ render() {
38
44
  return html`
39
- <style>
40
- :host {
41
- display: none;
42
- }
43
- </style>
44
45
  <vaadin-rich-text-editor-popup-overlay
45
- renderer="[[renderer]]"
46
- opened="{{opened}}"
47
- position-target="[[target]]"
46
+ .renderer="${this.renderer}"
47
+ .opened="${this.opened}"
48
+ .positionTarget="${this.target}"
48
49
  no-vertical-overlap
49
50
  horizontal-align="start"
50
51
  vertical-align="top"
51
- on-vaadin-overlay-escape-press="_onOverlayEscapePress"
52
52
  focus-trap
53
+ @opened-changed="${this._onOpenedChanged}"
54
+ @vaadin-overlay-escape-press="${this._onOverlayEscapePress}"
53
55
  ></vaadin-rich-text-editor-popup-overlay>
54
56
  `;
55
57
  }
58
+
59
+ /** @private */
60
+ _onOpenedChanged(event) {
61
+ this.opened = event.detail.value;
62
+ }
56
63
  }
57
64
 
58
65
  defineCustomElement(RichTextEditorPopup);
@@ -70,12 +77,19 @@ export { RichTextEditorPopup };
70
77
  * @mixes PositionMixin
71
78
  * @private
72
79
  */
73
- class RichTextEditorPopupOverlay extends PositionMixin(OverlayMixin(DirMixin(ThemableMixin(PolymerElement)))) {
80
+ class RichTextEditorPopupOverlay extends PositionMixin(
81
+ OverlayMixin(DirMixin(ThemableMixin(PolylitMixin(LitElement)))),
82
+ ) {
74
83
  static get is() {
75
84
  return 'vaadin-rich-text-editor-popup-overlay';
76
85
  }
77
86
 
78
- static get template() {
87
+ static get styles() {
88
+ return overlayStyles;
89
+ }
90
+
91
+ /** @protected */
92
+ render() {
79
93
  return html`
80
94
  <div id="backdrop" part="backdrop" hidden></div>
81
95
  <div part="overlay" id="overlay">
@@ -8,7 +8,7 @@
8
8
  * See https://vaadin.com/commercial-license-and-service-terms for the full
9
9
  * license.
10
10
  */
11
- import { css, registerStyles } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
11
+ import { css } from 'lit';
12
12
  import { iconsStyles } from './vaadin-rich-text-editor-icons.js';
13
13
 
14
14
  export const buttonsStyles = css`
@@ -178,6 +178,3 @@ export const buttonsStyles = css`
178
178
  `;
179
179
 
180
180
  export const toolbarStyles = [iconsStyles, buttonsStyles];
181
-
182
- // Register a module with ID for backwards compatibility.
183
- registerStyles('', toolbarStyles, { moduleId: 'vaadin-rich-text-editor-toolbar-styles' });
@@ -13,16 +13,14 @@ import '@vaadin/confirm-dialog/src/vaadin-confirm-dialog.js';
13
13
  import '@vaadin/text-field/src/vaadin-text-field.js';
14
14
  import '@vaadin/tooltip/src/vaadin-tooltip.js';
15
15
  import './vaadin-rich-text-editor-popup.js';
16
- import './vaadin-rich-text-editor-toolbar-styles.js';
17
- import { html, PolymerElement } from '@polymer/polymer/polymer-element.js';
16
+ import { html, LitElement } from 'lit';
18
17
  import { defineCustomElement } from '@vaadin/component-base/src/define.js';
19
18
  import { ElementMixin } from '@vaadin/component-base/src/element-mixin.js';
20
- import { registerStyles, ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
19
+ import { PolylitMixin } from '@vaadin/component-base/src/polylit-mixin.js';
20
+ import { ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
21
21
  import { RichTextEditorMixin } from './vaadin-rich-text-editor-mixin.js';
22
22
  import { richTextEditorStyles } from './vaadin-rich-text-editor-styles.js';
23
23
 
24
- registerStyles('vaadin-rich-text-editor', richTextEditorStyles, { moduleId: 'vaadin-rich-text-editor-styles' });
25
-
26
24
  /**
27
25
  * `<vaadin-rich-text-editor>` is a Web Component for rich text editing.
28
26
  * It provides a set of toolbar controls to apply formatting on the content,
@@ -101,37 +99,60 @@ registerStyles('vaadin-rich-text-editor', richTextEditorStyles, { moduleId: 'vaa
101
99
  * @mixes RichTextEditorMixin
102
100
  * @mixes ThemableMixin
103
101
  */
104
- class RichTextEditor extends RichTextEditorMixin(ElementMixin(ThemableMixin(PolymerElement))) {
105
- static get template() {
102
+ class RichTextEditor extends RichTextEditorMixin(ElementMixin(ThemableMixin(PolylitMixin(LitElement)))) {
103
+ static get is() {
104
+ return 'vaadin-rich-text-editor';
105
+ }
106
+
107
+ static get cvdlName() {
108
+ return 'vaadin-rich-text-editor';
109
+ }
110
+
111
+ static get styles() {
112
+ return richTextEditorStyles;
113
+ }
114
+
115
+ /** @protected */
116
+ render() {
106
117
  return html`
107
118
  <div class="vaadin-rich-text-editor-container">
108
119
  <!-- Create toolbar container -->
109
120
  <div part="toolbar" role="toolbar">
110
121
  <span part="toolbar-group toolbar-group-history">
111
122
  <!-- Undo and Redo -->
112
- <button id="btn-undo" type="button" part="toolbar-button toolbar-button-undo" on-click="_undo"></button>
113
- <vaadin-tooltip for="btn-undo" text="[[__effectiveI18n.undo]]"></vaadin-tooltip>
123
+ <button
124
+ id="btn-undo"
125
+ type="button"
126
+ part="toolbar-button toolbar-button-undo"
127
+ @click="${this._undo}"
128
+ ></button>
129
+ <vaadin-tooltip for="btn-undo" .text="${this.__effectiveI18n.undo}"></vaadin-tooltip>
114
130
 
115
- <button id="btn-redo" type="button" part="toolbar-button toolbar-button-redo" on-click="_redo"></button>
116
- <vaadin-tooltip for="btn-redo" text="[[__effectiveI18n.redo]]"></vaadin-tooltip>
131
+ <button
132
+ id="btn-redo"
133
+ type="button"
134
+ part="toolbar-button toolbar-button-redo"
135
+ @click="${this._redo}"
136
+ ></button>
137
+ <vaadin-tooltip for="btn-redo" .text="${this.__effectiveI18n.redo}"></vaadin-tooltip>
117
138
  </span>
118
139
 
119
140
  <span part="toolbar-group toolbar-group-emphasis">
120
141
  <!-- Bold -->
121
142
  <button id="btn-bold" class="ql-bold" part="toolbar-button toolbar-button-bold"></button>
122
- <vaadin-tooltip for="btn-bold" text="[[__effectiveI18n.bold]]"></vaadin-tooltip>
143
+ <vaadin-tooltip for="btn-bold" .text="${this.__effectiveI18n.bold}"></vaadin-tooltip>
123
144
 
124
145
  <!-- Italic -->
125
146
  <button id="btn-italic" class="ql-italic" part="toolbar-button toolbar-button-italic"></button>
126
- <vaadin-tooltip for="btn-italic" text="[[__effectiveI18n.italic]]"></vaadin-tooltip>
147
+ <vaadin-tooltip for="btn-italic" .text="${this.__effectiveI18n.italic}"></vaadin-tooltip>
127
148
 
128
149
  <!-- Underline -->
129
150
  <button id="btn-underline" class="ql-underline" part="toolbar-button toolbar-button-underline"></button>
130
- <vaadin-tooltip for="btn-underline" text="[[__effectiveI18n.underline]]"></vaadin-tooltip>
151
+ <vaadin-tooltip for="btn-underline" .text="${this.__effectiveI18n.underline}"></vaadin-tooltip>
131
152
 
132
153
  <!-- Strike -->
133
154
  <button id="btn-strike" class="ql-strike" part="toolbar-button toolbar-button-strike"></button>
134
- <vaadin-tooltip for="btn-strike" text="[[__effectiveI18n.strike]]"></vaadin-tooltip>
155
+ <vaadin-tooltip for="btn-strike" .text="${this.__effectiveI18n.strike}"></vaadin-tooltip>
135
156
  </span>
136
157
 
137
158
  <span part="toolbar-group toolbar-group-style">
@@ -140,17 +161,17 @@ class RichTextEditor extends RichTextEditorMixin(ElementMixin(ThemableMixin(Poly
140
161
  id="btn-color"
141
162
  type="button"
142
163
  part="toolbar-button toolbar-button-color"
143
- on-click="__onColorClick"
164
+ @click="${this.__onColorClick}"
144
165
  ></button>
145
- <vaadin-tooltip for="btn-color" text="[[__effectiveI18n.color]]"></vaadin-tooltip>
166
+ <vaadin-tooltip for="btn-color" .text="${this.__effectiveI18n.color}"></vaadin-tooltip>
146
167
  <!-- Background -->
147
168
  <button
148
169
  id="btn-background"
149
170
  type="button"
150
171
  part="toolbar-button toolbar-button-background"
151
- on-click="__onBackgroundClick"
172
+ @click="${this.__onBackgroundClick}"
152
173
  ></button>
153
- <vaadin-tooltip for="btn-background" text="[[__effectiveI18n.background]]"></vaadin-tooltip>
174
+ <vaadin-tooltip for="btn-background" .text="${this.__effectiveI18n.background}"></vaadin-tooltip>
154
175
  </span>
155
176
 
156
177
  <span part="toolbar-group toolbar-group-heading">
@@ -162,7 +183,7 @@ class RichTextEditor extends RichTextEditorMixin(ElementMixin(ThemableMixin(Poly
162
183
  value="1"
163
184
  part="toolbar-button toolbar-button-h1"
164
185
  ></button>
165
- <vaadin-tooltip for="btn-h1" text="[[__effectiveI18n.h1]]"></vaadin-tooltip>
186
+ <vaadin-tooltip for="btn-h1" .text="${this.__effectiveI18n.h1}"></vaadin-tooltip>
166
187
  <button
167
188
  id="btn-h2"
168
189
  type="button"
@@ -170,7 +191,7 @@ class RichTextEditor extends RichTextEditorMixin(ElementMixin(ThemableMixin(Poly
170
191
  value="2"
171
192
  part="toolbar-button toolbar-button-h2"
172
193
  ></button>
173
- <vaadin-tooltip for="btn-h2" text="[[__effectiveI18n.h2]]"></vaadin-tooltip>
194
+ <vaadin-tooltip for="btn-h2" .text="${this.__effectiveI18n.h2}"></vaadin-tooltip>
174
195
  <button
175
196
  id="btn-h3"
176
197
  type="button"
@@ -178,7 +199,7 @@ class RichTextEditor extends RichTextEditorMixin(ElementMixin(ThemableMixin(Poly
178
199
  value="3"
179
200
  part="toolbar-button toolbar-button-h3"
180
201
  ></button>
181
- <vaadin-tooltip for="btn-h3" text="[[__effectiveI18n.h3]]"></vaadin-tooltip>
202
+ <vaadin-tooltip for="btn-h3" .text="${this.__effectiveI18n.h3}"></vaadin-tooltip>
182
203
  </span>
183
204
 
184
205
  <span part="toolbar-group toolbar-group-glyph-transformation">
@@ -189,14 +210,14 @@ class RichTextEditor extends RichTextEditorMixin(ElementMixin(ThemableMixin(Poly
189
210
  value="sub"
190
211
  part="toolbar-button toolbar-button-subscript"
191
212
  ></button>
192
- <vaadin-tooltip for="btn-subscript" text="[[__effectiveI18n.subscript]]"></vaadin-tooltip>
213
+ <vaadin-tooltip for="btn-subscript" .text="${this.__effectiveI18n.subscript}"></vaadin-tooltip>
193
214
  <button
194
215
  id="btn-superscript"
195
216
  class="ql-script"
196
217
  value="super"
197
218
  part="toolbar-button toolbar-button-superscript"
198
219
  ></button>
199
- <vaadin-tooltip for="btn-superscript" text="[[__effectiveI18n.superscript]]"></vaadin-tooltip>
220
+ <vaadin-tooltip for="btn-superscript" text="${this.__effectiveI18n.superscript}"></vaadin-tooltip>
200
221
  </span>
201
222
 
202
223
  <span part="toolbar-group toolbar-group-list">
@@ -208,7 +229,7 @@ class RichTextEditor extends RichTextEditorMixin(ElementMixin(ThemableMixin(Poly
208
229
  value="ordered"
209
230
  part="toolbar-button toolbar-button-list-ordered"
210
231
  ></button>
211
- <vaadin-tooltip for="btn-ol" text="[[__effectiveI18n.listOrdered]]"></vaadin-tooltip>
232
+ <vaadin-tooltip for="btn-ol" text="${this.__effectiveI18n.listOrdered}"></vaadin-tooltip>
212
233
  <button
213
234
  id="btn-ul"
214
235
  type="button"
@@ -216,7 +237,7 @@ class RichTextEditor extends RichTextEditorMixin(ElementMixin(ThemableMixin(Poly
216
237
  value="bullet"
217
238
  part="toolbar-button toolbar-button-list-bullet"
218
239
  ></button>
219
- <vaadin-tooltip for="btn-ul" text="[[__effectiveI18n.listBullet]]"></vaadin-tooltip>
240
+ <vaadin-tooltip for="btn-ul" text="${this.__effectiveI18n.listBullet}"></vaadin-tooltip>
220
241
  </span>
221
242
 
222
243
  <span part="toolbar-group toolbar-group-alignment">
@@ -228,7 +249,7 @@ class RichTextEditor extends RichTextEditorMixin(ElementMixin(ThemableMixin(Poly
228
249
  value=""
229
250
  part="toolbar-button toolbar-button-align-left"
230
251
  ></button>
231
- <vaadin-tooltip for="btn-left" text="[[__effectiveI18n.alignLeft]]"></vaadin-tooltip>
252
+ <vaadin-tooltip for="btn-left" .text="${this.__effectiveI18n.alignLeft}"></vaadin-tooltip>
232
253
  <button
233
254
  id="btn-center"
234
255
  type="button"
@@ -236,7 +257,7 @@ class RichTextEditor extends RichTextEditorMixin(ElementMixin(ThemableMixin(Poly
236
257
  value="center"
237
258
  part="toolbar-button toolbar-button-align-center"
238
259
  ></button>
239
- <vaadin-tooltip for="btn-center" text="[[__effectiveI18n.alignCenter]]"></vaadin-tooltip>
260
+ <vaadin-tooltip for="btn-center" .text="${this.__effectiveI18n.alignCenter}"></vaadin-tooltip>
240
261
  <button
241
262
  id="btn-right"
242
263
  type="button"
@@ -244,7 +265,7 @@ class RichTextEditor extends RichTextEditorMixin(ElementMixin(ThemableMixin(Poly
244
265
  value="right"
245
266
  part="toolbar-button toolbar-button-align-right"
246
267
  ></button>
247
- <vaadin-tooltip for="btn-right" text="[[__effectiveI18n.alignRight]]"></vaadin-tooltip>
268
+ <vaadin-tooltip for="btn-right" .text="${this.__effectiveI18n.alignRight}"></vaadin-tooltip>
248
269
  </span>
249
270
 
250
271
  <span part="toolbar-group toolbar-group-rich-text">
@@ -253,18 +274,18 @@ class RichTextEditor extends RichTextEditorMixin(ElementMixin(ThemableMixin(Poly
253
274
  id="btn-image"
254
275
  type="button"
255
276
  part="toolbar-button toolbar-button-image"
256
- on-touchend="_onImageTouchEnd"
257
- on-click="_onImageClick"
277
+ @touchend="${this._onImageTouchEnd}"
278
+ @click="${this._onImageClick}"
258
279
  ></button>
259
- <vaadin-tooltip for="btn-image" text="[[__effectiveI18n.image]]"></vaadin-tooltip>
280
+ <vaadin-tooltip for="btn-image" .text="${this.__effectiveI18n.image}"></vaadin-tooltip>
260
281
  <!-- Link -->
261
282
  <button
262
283
  id="btn-link"
263
284
  type="button"
264
285
  part="toolbar-button toolbar-button-link"
265
- on-click="_onLinkClick"
286
+ @click="${this._onLinkClick}"
266
287
  ></button>
267
- <vaadin-tooltip for="btn-link" text="[[__effectiveI18n.link]]"></vaadin-tooltip>
288
+ <vaadin-tooltip for="btn-link" .text="${this.__effectiveI18n.link}"></vaadin-tooltip>
268
289
  </span>
269
290
 
270
291
  <span part="toolbar-group toolbar-group-block">
@@ -275,7 +296,7 @@ class RichTextEditor extends RichTextEditorMixin(ElementMixin(ThemableMixin(Poly
275
296
  class="ql-blockquote"
276
297
  part="toolbar-button toolbar-button-blockquote"
277
298
  ></button>
278
- <vaadin-tooltip for="btn-blockquote" text="[[__effectiveI18n.blockquote]]"></vaadin-tooltip>
299
+ <vaadin-tooltip for="btn-blockquote" .text="${this.__effectiveI18n.blockquote}"></vaadin-tooltip>
279
300
  <!-- Code block -->
280
301
  <button
281
302
  id="btn-code"
@@ -283,20 +304,20 @@ class RichTextEditor extends RichTextEditorMixin(ElementMixin(ThemableMixin(Poly
283
304
  class="ql-code-block"
284
305
  part="toolbar-button toolbar-button-code-block"
285
306
  ></button>
286
- <vaadin-tooltip for="btn-code" text="[[__effectiveI18n.codeBlock]]"></vaadin-tooltip>
307
+ <vaadin-tooltip for="btn-code" .text="${this.__effectiveI18n.codeBlock}"></vaadin-tooltip>
287
308
  </span>
288
309
 
289
310
  <span part="toolbar-group toolbar-group-format">
290
311
  <!-- Clean -->
291
312
  <button id="btn-clean" type="button" class="ql-clean" part="toolbar-button toolbar-button-clean"></button>
292
- <vaadin-tooltip for="btn-clean" text="[[__effectiveI18n.clean]]"></vaadin-tooltip>
313
+ <vaadin-tooltip for="btn-clean" .text="${this.__effectiveI18n.clean}"></vaadin-tooltip>
293
314
  </span>
294
315
 
295
316
  <input
296
317
  id="fileInput"
297
318
  type="file"
298
319
  accept="image/png, image/gif, image/jpeg, image/bmp, image/x-icon"
299
- on-change="_uploadImage"
320
+ @change="${this._uploadImage}"
300
321
  />
301
322
  </div>
302
323
 
@@ -305,59 +326,73 @@ class RichTextEditor extends RichTextEditorMixin(ElementMixin(ThemableMixin(Poly
305
326
  <div class="announcer" aria-live="polite"></div>
306
327
  </div>
307
328
 
308
- <vaadin-confirm-dialog id="linkDialog" opened="{{_linkEditing}}" header="[[__effectiveI18n.linkDialogTitle]]">
329
+ <vaadin-confirm-dialog
330
+ id="linkDialog"
331
+ .opened="${this._linkEditing}"
332
+ .header="${this.__effectiveI18n.linkDialogTitle}"
333
+ @opened-changed="${this._onLinkEditingChanged}"
334
+ >
309
335
  <vaadin-text-field
310
336
  id="linkUrl"
311
- value="{{_linkUrl}}"
337
+ .value="${this._linkUrl}"
312
338
  style="width: 100%;"
313
- on-keydown="_onLinkKeydown"
339
+ @keydown="${this._onLinkKeydown}"
340
+ @value-changed="${this._onLinkUrlChanged}"
314
341
  ></vaadin-text-field>
315
- <vaadin-button id="confirmLink" slot="confirm-button" theme="primary" on-click="_onLinkEditConfirm">
316
- [[__effectiveI18n.ok]]
342
+ <vaadin-button id="confirmLink" slot="confirm-button" theme="primary" @click="${this._onLinkEditConfirm}">
343
+ ${this.__effectiveI18n.ok}
317
344
  </vaadin-button>
318
345
  <vaadin-button
319
346
  id="removeLink"
320
347
  slot="reject-button"
321
348
  theme="error"
322
- on-click="_onLinkEditRemove"
323
- hidden$="[[!_linkRange]]"
349
+ @click="${this._onLinkEditRemove}"
350
+ ?hidden="${!this._linkRange}"
324
351
  >
325
- [[__effectiveI18n.remove]]
352
+ ${this.__effectiveI18n.remove}
326
353
  </vaadin-button>
327
- <vaadin-button id="cancelLink" slot="cancel-button" on-click="_onLinkEditCancel">
328
- [[__effectiveI18n.cancel]]
354
+ <vaadin-button id="cancelLink" slot="cancel-button" @click="${this._onLinkEditCancel}">
355
+ ${this.__effectiveI18n.cancel}
329
356
  </vaadin-button>
330
357
  </vaadin-confirm-dialog>
331
358
 
332
359
  <vaadin-rich-text-editor-popup
333
360
  id="colorPopup"
334
- colors="[[colorOptions]]"
335
- opened="{{_colorEditing}}"
336
- on-color-selected="__onColorSelected"
361
+ .colors="${this.colorOptions}"
362
+ .opened="${this._colorEditing}"
363
+ @color-selected="${this.__onColorSelected}"
364
+ @opened-changed="${this.__onColorEditingChanged}"
337
365
  ></vaadin-rich-text-editor-popup>
338
366
 
339
367
  <vaadin-rich-text-editor-popup
340
368
  id="backgroundPopup"
341
- colors="[[colorOptions]]"
342
- opened="{{_backgroundEditing}}"
343
- on-color-selected="__onBackgroundSelected"
369
+ .colors="${this.colorOptions}"
370
+ .opened="${this._backgroundEditing}"
371
+ @color-selected="${this.__onBackgroundSelected}"
372
+ @opened-changed="${this.__onBackgroundEditingChanged}"
344
373
  ></vaadin-rich-text-editor-popup>
345
374
  `;
346
375
  }
347
376
 
348
- static get is() {
349
- return 'vaadin-rich-text-editor';
377
+ /** @private */
378
+ __onBackgroundEditingChanged(event) {
379
+ this._backgroundEditing = event.detail.value;
350
380
  }
351
381
 
352
- static get cvdlName() {
353
- return 'vaadin-rich-text-editor';
382
+ /** @private */
383
+ __onColorEditingChanged(event) {
384
+ this._colorEditing = event.detail.value;
354
385
  }
355
386
 
356
- /**
357
- * Fired when the user commits a value change.
358
- *
359
- * @event change
360
- */
387
+ /** @private */
388
+ _onLinkEditingChanged(event) {
389
+ this._linkEditing = event.detail.value;
390
+ }
391
+
392
+ /** @private */
393
+ _onLinkUrlChanged(event) {
394
+ this._linkUrl = event.detail.value;
395
+ }
361
396
  }
362
397
 
363
398
  defineCustomElement(RichTextEditor);
package/web-types.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/web-types",
3
3
  "name": "@vaadin/rich-text-editor",
4
- "version": "24.8.0-alpha9",
4
+ "version": "25.0.0-alpha2",
5
5
  "description-markup": "markdown",
6
6
  "contributions": {
7
7
  "html": {
@@ -100,10 +100,6 @@
100
100
  }
101
101
  ],
102
102
  "events": [
103
- {
104
- "name": "change",
105
- "description": "Fired when the user commits a value change."
106
- },
107
103
  {
108
104
  "name": "value-changed",
109
105
  "description": "Fired when the `value` property changes."
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/web-types",
3
3
  "name": "@vaadin/rich-text-editor",
4
- "version": "24.8.0-alpha9",
4
+ "version": "25.0.0-alpha2",
5
5
  "description-markup": "markdown",
6
6
  "framework": "lit",
7
7
  "framework-config": {
@@ -54,13 +54,6 @@
54
54
  "kind": "expression"
55
55
  }
56
56
  },
57
- {
58
- "name": "@change",
59
- "description": "Fired when the user commits a value change.",
60
- "value": {
61
- "kind": "expression"
62
- }
63
- },
64
57
  {
65
58
  "name": "@value-changed",
66
59
  "description": "Fired when the `value` property changes.",
@@ -1,91 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright (c) 2000 - 2025 Vaadin Ltd.
4
- *
5
- * This program is available under Vaadin Commercial License and Service Terms.
6
- *
7
- *
8
- * See https://vaadin.com/commercial-license-and-service-terms for the full
9
- * license.
10
- */
11
- import { css, html, LitElement } from 'lit';
12
- import { defineCustomElement } from '@vaadin/component-base/src/define.js';
13
- import { DirMixin } from '@vaadin/component-base/src/dir-mixin.js';
14
- import { PolylitMixin } from '@vaadin/component-base/src/polylit-mixin.js';
15
- import { OverlayMixin } from '@vaadin/overlay/src/vaadin-overlay-mixin.js';
16
- import { PositionMixin } from '@vaadin/overlay/src/vaadin-overlay-position-mixin.js';
17
- import { overlayStyles } from '@vaadin/overlay/src/vaadin-overlay-styles.js';
18
- import { ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
19
- import { RichTextEditorPopupMixin } from './vaadin-rich-text-editor-popup-mixin.js';
20
-
21
- /**
22
- * An element used internally by `<vaadin-rich-text-editor>`. Not intended to be used separately.
23
- * @private
24
- */
25
- class RichTextEditorPopup extends RichTextEditorPopupMixin(PolylitMixin(LitElement)) {
26
- static get is() {
27
- return 'vaadin-rich-text-editor-popup';
28
- }
29
-
30
- static get styles() {
31
- return css`
32
- :host {
33
- display: none;
34
- }
35
- `;
36
- }
37
-
38
- /** @protected */
39
- render() {
40
- return html`
41
- <vaadin-rich-text-editor-popup-overlay
42
- .renderer="${this.renderer}"
43
- .opened="${this.opened}"
44
- .positionTarget="${this.target}"
45
- no-vertical-overlap
46
- horizontal-align="start"
47
- vertical-align="top"
48
- focus-trap
49
- @opened-changed="${this._onOpenedChanged}"
50
- @vaadin-overlay-escape-press="${this._onOverlayEscapePress}"
51
- ></vaadin-rich-text-editor-popup-overlay>
52
- `;
53
- }
54
-
55
- /** @private */
56
- _onOpenedChanged(event) {
57
- this.opened = event.detail.value;
58
- }
59
- }
60
-
61
- defineCustomElement(RichTextEditorPopup);
62
-
63
- export { RichTextEditorPopup };
64
-
65
- /**
66
- * An element used internally by `<vaadin-rich-text-editor>`. Not intended to be used separately.
67
- * @private
68
- */
69
- class RichTextEditorPopupOverlay extends PositionMixin(
70
- OverlayMixin(DirMixin(ThemableMixin(PolylitMixin(LitElement)))),
71
- ) {
72
- static get is() {
73
- return 'vaadin-rich-text-editor-popup-overlay';
74
- }
75
-
76
- static get styles() {
77
- return overlayStyles;
78
- }
79
-
80
- /** @protected */
81
- render() {
82
- return html`
83
- <div id="backdrop" part="backdrop" hidden></div>
84
- <div part="overlay" id="overlay">
85
- <div part="content" id="content"><slot></slot></div>
86
- </div>
87
- `;
88
- }
89
- }
90
-
91
- defineCustomElement(RichTextEditorPopupOverlay);
@@ -1,11 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright (c) 2000 - 2025 Vaadin Ltd.
4
- *
5
- * This program is available under Vaadin Commercial License and Service Terms.
6
- *
7
- *
8
- * See https://vaadin.com/commercial-license-and-service-terms for the full
9
- * license.
10
- */
11
- export * from './vaadin-rich-text-editor.js';
@@ -1,330 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright (c) 2000 - 2025 Vaadin Ltd.
4
- *
5
- * This program is available under Vaadin Commercial License and Service Terms.
6
- *
7
- *
8
- * See https://vaadin.com/commercial-license-and-service-terms for the full
9
- * license.
10
- */
11
- import '@vaadin/button/src/vaadin-lit-button.js';
12
- import '@vaadin/confirm-dialog/src/vaadin-lit-confirm-dialog.js';
13
- import '@vaadin/text-field/src/vaadin-lit-text-field.js';
14
- import '@vaadin/tooltip/src/vaadin-lit-tooltip.js';
15
- import './vaadin-lit-rich-text-editor-popup.js';
16
- import { html, LitElement } from 'lit';
17
- import { defineCustomElement } from '@vaadin/component-base/src/define.js';
18
- import { ElementMixin } from '@vaadin/component-base/src/element-mixin.js';
19
- import { PolylitMixin } from '@vaadin/component-base/src/polylit-mixin.js';
20
- import { ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
21
- import { RichTextEditorMixin } from './vaadin-rich-text-editor-mixin.js';
22
- import { richTextEditorStyles } from './vaadin-rich-text-editor-styles.js';
23
-
24
- /**
25
- * LitElement based version of `<vaadin-rich-text-editor>` web component.
26
- *
27
- * ## Disclaimer
28
- *
29
- * This component is an experiment and not yet a part of Vaadin platform.
30
- * There is no ETA regarding specific Vaadin version where it'll land.
31
- */
32
- class RichTextEditor extends RichTextEditorMixin(ElementMixin(ThemableMixin(PolylitMixin(LitElement)))) {
33
- static get is() {
34
- return 'vaadin-rich-text-editor';
35
- }
36
-
37
- static get cvdlName() {
38
- return 'vaadin-rich-text-editor';
39
- }
40
-
41
- static get styles() {
42
- return richTextEditorStyles;
43
- }
44
-
45
- /** @protected */
46
- render() {
47
- return html`
48
- <div class="vaadin-rich-text-editor-container">
49
- <!-- Create toolbar container -->
50
- <div part="toolbar" role="toolbar">
51
- <span part="toolbar-group toolbar-group-history">
52
- <!-- Undo and Redo -->
53
- <button
54
- id="btn-undo"
55
- type="button"
56
- part="toolbar-button toolbar-button-undo"
57
- @click="${this._undo}"
58
- ></button>
59
- <vaadin-tooltip for="btn-undo" .text="${this.__effectiveI18n.undo}"></vaadin-tooltip>
60
-
61
- <button
62
- id="btn-redo"
63
- type="button"
64
- part="toolbar-button toolbar-button-redo"
65
- @click="${this._redo}"
66
- ></button>
67
- <vaadin-tooltip for="btn-redo" .text="${this.__effectiveI18n.redo}"></vaadin-tooltip>
68
- </span>
69
-
70
- <span part="toolbar-group toolbar-group-emphasis">
71
- <!-- Bold -->
72
- <button id="btn-bold" class="ql-bold" part="toolbar-button toolbar-button-bold"></button>
73
- <vaadin-tooltip for="btn-bold" .text="${this.__effectiveI18n.bold}"></vaadin-tooltip>
74
-
75
- <!-- Italic -->
76
- <button id="btn-italic" class="ql-italic" part="toolbar-button toolbar-button-italic"></button>
77
- <vaadin-tooltip for="btn-italic" .text="${this.__effectiveI18n.italic}"></vaadin-tooltip>
78
-
79
- <!-- Underline -->
80
- <button id="btn-underline" class="ql-underline" part="toolbar-button toolbar-button-underline"></button>
81
- <vaadin-tooltip for="btn-underline" .text="${this.__effectiveI18n.underline}"></vaadin-tooltip>
82
-
83
- <!-- Strike -->
84
- <button id="btn-strike" class="ql-strike" part="toolbar-button toolbar-button-strike"></button>
85
- <vaadin-tooltip for="btn-strike" .text="${this.__effectiveI18n.strike}"></vaadin-tooltip>
86
- </span>
87
-
88
- <span part="toolbar-group toolbar-group-style">
89
- <!-- Color -->
90
- <button
91
- id="btn-color"
92
- type="button"
93
- part="toolbar-button toolbar-button-color"
94
- @click="${this.__onColorClick}"
95
- ></button>
96
- <vaadin-tooltip for="btn-color" .text="${this.__effectiveI18n.color}"></vaadin-tooltip>
97
- <!-- Background -->
98
- <button
99
- id="btn-background"
100
- type="button"
101
- part="toolbar-button toolbar-button-background"
102
- @click="${this.__onBackgroundClick}"
103
- ></button>
104
- <vaadin-tooltip for="btn-background" .text="${this.__effectiveI18n.background}"></vaadin-tooltip>
105
- </span>
106
-
107
- <span part="toolbar-group toolbar-group-heading">
108
- <!-- Header buttons -->
109
- <button
110
- id="btn-h1"
111
- type="button"
112
- class="ql-header"
113
- value="1"
114
- part="toolbar-button toolbar-button-h1"
115
- ></button>
116
- <vaadin-tooltip for="btn-h1" .text="${this.__effectiveI18n.h1}"></vaadin-tooltip>
117
- <button
118
- id="btn-h2"
119
- type="button"
120
- class="ql-header"
121
- value="2"
122
- part="toolbar-button toolbar-button-h2"
123
- ></button>
124
- <vaadin-tooltip for="btn-h2" .text="${this.__effectiveI18n.h2}"></vaadin-tooltip>
125
- <button
126
- id="btn-h3"
127
- type="button"
128
- class="ql-header"
129
- value="3"
130
- part="toolbar-button toolbar-button-h3"
131
- ></button>
132
- <vaadin-tooltip for="btn-h3" .text="${this.__effectiveI18n.h3}"></vaadin-tooltip>
133
- </span>
134
-
135
- <span part="toolbar-group toolbar-group-glyph-transformation">
136
- <!-- Subscript and superscript -->
137
- <button
138
- id="btn-subscript"
139
- class="ql-script"
140
- value="sub"
141
- part="toolbar-button toolbar-button-subscript"
142
- ></button>
143
- <vaadin-tooltip for="btn-subscript" .text="${this.__effectiveI18n.subscript}"></vaadin-tooltip>
144
- <button
145
- id="btn-superscript"
146
- class="ql-script"
147
- value="super"
148
- part="toolbar-button toolbar-button-superscript"
149
- ></button>
150
- <vaadin-tooltip for="btn-superscript" text="${this.__effectiveI18n.superscript}"></vaadin-tooltip>
151
- </span>
152
-
153
- <span part="toolbar-group toolbar-group-list">
154
- <!-- List buttons -->
155
- <button
156
- id="btn-ol"
157
- type="button"
158
- class="ql-list"
159
- value="ordered"
160
- part="toolbar-button toolbar-button-list-ordered"
161
- ></button>
162
- <vaadin-tooltip for="btn-ol" text="${this.__effectiveI18n.listOrdered}"></vaadin-tooltip>
163
- <button
164
- id="btn-ul"
165
- type="button"
166
- class="ql-list"
167
- value="bullet"
168
- part="toolbar-button toolbar-button-list-bullet"
169
- ></button>
170
- <vaadin-tooltip for="btn-ul" text="${this.__effectiveI18n.listBullet}"></vaadin-tooltip>
171
- </span>
172
-
173
- <span part="toolbar-group toolbar-group-alignment">
174
- <!-- Align buttons -->
175
- <button
176
- id="btn-left"
177
- type="button"
178
- class="ql-align"
179
- value=""
180
- part="toolbar-button toolbar-button-align-left"
181
- ></button>
182
- <vaadin-tooltip for="btn-left" .text="${this.__effectiveI18n.alignLeft}"></vaadin-tooltip>
183
- <button
184
- id="btn-center"
185
- type="button"
186
- class="ql-align"
187
- value="center"
188
- part="toolbar-button toolbar-button-align-center"
189
- ></button>
190
- <vaadin-tooltip for="btn-center" .text="${this.__effectiveI18n.alignCenter}"></vaadin-tooltip>
191
- <button
192
- id="btn-right"
193
- type="button"
194
- class="ql-align"
195
- value="right"
196
- part="toolbar-button toolbar-button-align-right"
197
- ></button>
198
- <vaadin-tooltip for="btn-right" .text="${this.__effectiveI18n.alignRight}"></vaadin-tooltip>
199
- </span>
200
-
201
- <span part="toolbar-group toolbar-group-rich-text">
202
- <!-- Image -->
203
- <button
204
- id="btn-image"
205
- type="button"
206
- part="toolbar-button toolbar-button-image"
207
- @touchend="${this._onImageTouchEnd}"
208
- @click="${this._onImageClick}"
209
- ></button>
210
- <vaadin-tooltip for="btn-image" .text="${this.__effectiveI18n.image}"></vaadin-tooltip>
211
- <!-- Link -->
212
- <button
213
- id="btn-link"
214
- type="button"
215
- part="toolbar-button toolbar-button-link"
216
- @click="${this._onLinkClick}"
217
- ></button>
218
- <vaadin-tooltip for="btn-link" .text="${this.__effectiveI18n.link}"></vaadin-tooltip>
219
- </span>
220
-
221
- <span part="toolbar-group toolbar-group-block">
222
- <!-- Blockquote -->
223
- <button
224
- id="btn-blockquote"
225
- type="button"
226
- class="ql-blockquote"
227
- part="toolbar-button toolbar-button-blockquote"
228
- ></button>
229
- <vaadin-tooltip for="btn-blockquote" .text="${this.__effectiveI18n.blockquote}"></vaadin-tooltip>
230
- <!-- Code block -->
231
- <button
232
- id="btn-code"
233
- type="button"
234
- class="ql-code-block"
235
- part="toolbar-button toolbar-button-code-block"
236
- ></button>
237
- <vaadin-tooltip for="btn-code" .text="${this.__effectiveI18n.codeBlock}"></vaadin-tooltip>
238
- </span>
239
-
240
- <span part="toolbar-group toolbar-group-format">
241
- <!-- Clean -->
242
- <button id="btn-clean" type="button" class="ql-clean" part="toolbar-button toolbar-button-clean"></button>
243
- <vaadin-tooltip for="btn-clean" .text="${this.__effectiveI18n.clean}"></vaadin-tooltip>
244
- </span>
245
-
246
- <input
247
- id="fileInput"
248
- type="file"
249
- accept="image/png, image/gif, image/jpeg, image/bmp, image/x-icon"
250
- @change="${this._uploadImage}"
251
- />
252
- </div>
253
-
254
- <div part="content"></div>
255
-
256
- <div class="announcer" aria-live="polite"></div>
257
- </div>
258
-
259
- <vaadin-confirm-dialog
260
- id="linkDialog"
261
- .opened="${this._linkEditing}"
262
- .header="${this.__effectiveI18n.linkDialogTitle}"
263
- @opened-changed="${this._onLinkEditingChanged}"
264
- >
265
- <vaadin-text-field
266
- id="linkUrl"
267
- .value="${this._linkUrl}"
268
- style="width: 100%;"
269
- @keydown="${this._onLinkKeydown}"
270
- @value-changed="${this._onLinkUrlChanged}"
271
- ></vaadin-text-field>
272
- <vaadin-button id="confirmLink" slot="confirm-button" theme="primary" @click="${this._onLinkEditConfirm}">
273
- ${this.__effectiveI18n.ok}
274
- </vaadin-button>
275
- <vaadin-button
276
- id="removeLink"
277
- slot="reject-button"
278
- theme="error"
279
- @click="${this._onLinkEditRemove}"
280
- ?hidden="${!this._linkRange}"
281
- >
282
- ${this.__effectiveI18n.remove}
283
- </vaadin-button>
284
- <vaadin-button id="cancelLink" slot="cancel-button" @click="${this._onLinkEditCancel}">
285
- ${this.__effectiveI18n.cancel}
286
- </vaadin-button>
287
- </vaadin-confirm-dialog>
288
-
289
- <vaadin-rich-text-editor-popup
290
- id="colorPopup"
291
- .colors="${this.colorOptions}"
292
- .opened="${this._colorEditing}"
293
- @color-selected="${this.__onColorSelected}"
294
- @opened-changed="${this.__onColorEditingChanged}"
295
- ></vaadin-rich-text-editor-popup>
296
-
297
- <vaadin-rich-text-editor-popup
298
- id="backgroundPopup"
299
- .colors="${this.colorOptions}"
300
- .opened="${this._backgroundEditing}"
301
- @color-selected="${this.__onBackgroundSelected}"
302
- @opened-changed="${this.__onBackgroundEditingChanged}"
303
- ></vaadin-rich-text-editor-popup>
304
- `;
305
- }
306
-
307
- /** @private */
308
- __onBackgroundEditingChanged(event) {
309
- this._backgroundEditing = event.detail.value;
310
- }
311
-
312
- /** @private */
313
- __onColorEditingChanged(event) {
314
- this._colorEditing = event.detail.value;
315
- }
316
-
317
- /** @private */
318
- _onLinkEditingChanged(event) {
319
- this._linkEditing = event.detail.value;
320
- }
321
-
322
- /** @private */
323
- _onLinkUrlChanged(event) {
324
- this._linkUrl = event.detail.value;
325
- }
326
- }
327
-
328
- defineCustomElement(RichTextEditor);
329
-
330
- export { RichTextEditor };
@@ -1,6 +0,0 @@
1
- import '@vaadin/button/theme/lumo/vaadin-button-styles.js';
2
- import '@vaadin/confirm-dialog/theme/lumo/vaadin-confirm-dialog-styles.js';
3
- import '@vaadin/text-field/theme/lumo/vaadin-text-field-styles.js';
4
- import '@vaadin/tooltip/theme/lumo/vaadin-tooltip-styles.js';
5
- import './vaadin-rich-text-editor-styles.js';
6
- import '../../src/vaadin-lit-rich-text-editor.js';
@@ -1,6 +0,0 @@
1
- import '@vaadin/button/theme/lumo/vaadin-button-styles.js';
2
- import '@vaadin/confirm-dialog/theme/lumo/vaadin-confirm-dialog-styles.js';
3
- import '@vaadin/text-field/theme/lumo/vaadin-text-field-styles.js';
4
- import '@vaadin/tooltip/theme/lumo/vaadin-tooltip-styles.js';
5
- import './vaadin-rich-text-editor-styles.js';
6
- import '../../src/vaadin-lit-rich-text-editor.js';
@@ -1,6 +0,0 @@
1
- import '@vaadin/button/theme/material/vaadin-button-styles.js';
2
- import '@vaadin/confirm-dialog/theme/material/vaadin-confirm-dialog-styles.js';
3
- import '@vaadin/text-field/theme/material/vaadin-text-field-styles.js';
4
- import '@vaadin/tooltip/theme/material/vaadin-tooltip-styles.js';
5
- import './vaadin-rich-text-editor-styles.js';
6
- import '../../src/vaadin-lit-rich-text-editor.js';
@@ -1,6 +0,0 @@
1
- import '@vaadin/button/theme/material/vaadin-button-styles.js';
2
- import '@vaadin/confirm-dialog/theme/material/vaadin-confirm-dialog-styles.js';
3
- import '@vaadin/text-field/theme/material/vaadin-text-field-styles.js';
4
- import '@vaadin/tooltip/theme/material/vaadin-tooltip-styles.js';
5
- import './vaadin-rich-text-editor-styles.js';
6
- import '../../src/vaadin-lit-rich-text-editor.js';
@@ -1 +0,0 @@
1
- import '@vaadin/vaadin-material-styles/color.js';
@@ -1,143 +0,0 @@
1
- import '@vaadin/vaadin-material-styles/color.js';
2
- import { overlay } from '@vaadin/vaadin-material-styles/mixins/overlay.js';
3
- import { typography } from '@vaadin/vaadin-material-styles/typography.js';
4
- import { css, registerStyles } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
5
-
6
- const popupOverlay = css`
7
- [part='overlay'] {
8
- margin: 0.25rem 0;
9
- }
10
-
11
- [part='content'] {
12
- padding: 0.25rem;
13
- max-width: calc(7 * (var(--_button-size) + var(--_button-margin) * 2));
14
- display: flex;
15
- flex-wrap: wrap;
16
- justify-content: center;
17
- --_button-size: 1.25rem;
18
- --_button-margin: 3px;
19
- }
20
-
21
- [part='content'] ::slotted(button) {
22
- border: none;
23
- width: var(--_button-size);
24
- height: var(--_button-size);
25
- margin: var(--_button-margin);
26
- }
27
- `;
28
-
29
- registerStyles('vaadin-rich-text-editor-popup-overlay', [overlay, popupOverlay], {
30
- moduleId: 'material-rich-text-editor-popup-overlay',
31
- });
32
-
33
- const richTextEditor = css`
34
- :host {
35
- background-color: var(--material-background-color);
36
- min-height: 288px;
37
- }
38
-
39
- [part='toolbar'] {
40
- background-color: var(--material-secondary-background-color);
41
- padding: 0;
42
- border: 0;
43
- overflow: hidden;
44
- }
45
-
46
- [part~='toolbar-group'] {
47
- margin: 8px 0;
48
- padding: 0 8px;
49
- }
50
-
51
- [part~='toolbar-group'] + [part~='toolbar-group'] {
52
- box-shadow: -1px 0 0 0 rgba(0, 0, 0, 0.1);
53
- }
54
-
55
- [part~='toolbar-button'] {
56
- border-radius: 3px;
57
- color: var(--material-secondary-text-color);
58
- font-family: 'vaadin-rte-icons', var(--material-font-family);
59
- font-weight: 600;
60
- margin: -4px 2px;
61
- }
62
-
63
- [part~='toolbar-button']:hover {
64
- background-color: transparent;
65
- color: inherit;
66
- }
67
-
68
- [part~='toolbar-button'][aria-expanded='true'] {
69
- outline: -webkit-focus-ring-color auto 1px;
70
- }
71
-
72
- [part~='toolbar-button'][on] {
73
- background-color: rgba(0, 0, 0, 0.1);
74
- color: inherit;
75
- }
76
-
77
- @media (hover: none) {
78
- [part~='toolbar-button']:hover {
79
- color: var(--material-secondary-text-color);
80
- }
81
- }
82
-
83
- /* SVG icons */
84
- [part~='toolbar-button-undo']::before,
85
- [part~='toolbar-button-redo']::before,
86
- [part~='toolbar-button-list-ordered']::before,
87
- [part~='toolbar-button-list-bullet']::before,
88
- [part~='toolbar-button-align-left']::before,
89
- [part~='toolbar-button-align-center']::before,
90
- [part~='toolbar-button-align-right']::before,
91
- [part~='toolbar-button-image']::before,
92
- [part~='toolbar-button-link']::before,
93
- [part~='toolbar-button-clean']::before {
94
- font-size: 24px;
95
- font-weight: 400;
96
- }
97
-
98
- /* Text icons */
99
- [part~='toolbar-button-bold']::before,
100
- [part~='toolbar-button-italic']::before,
101
- [part~='toolbar-button-underline']::before,
102
- [part~='toolbar-button-strike']::before {
103
- font-size: 20px;
104
- }
105
-
106
- [part~='toolbar-button-background']::before {
107
- background-color: var(--material-secondary-background-color);
108
- }
109
-
110
- [part~='toolbar-button-background']::after {
111
- inset: 0.25rem;
112
- }
113
-
114
- /* TODO unsupported selector */
115
- [part='content'] > .ql-editor {
116
- padding: 0 16px;
117
- line-height: inherit;
118
- }
119
-
120
- /* Theme variants */
121
- :host(:not([theme~='no-border'])) {
122
- border: 1px solid rgba(0, 0, 0, 0.12);
123
- }
124
-
125
- :host(:not([theme~='no-border']):not([readonly])) [part='content'] {
126
- border-top: 1px solid rgba(0, 0, 0, 0.12);
127
- }
128
-
129
- /* Content */
130
- b,
131
- strong {
132
- font-weight: 600;
133
- }
134
-
135
- code,
136
- pre {
137
- background-color: var(--material-secondary-background-color);
138
- }
139
- `;
140
-
141
- registerStyles('vaadin-rich-text-editor', [typography, richTextEditor], {
142
- moduleId: 'material-rich-text-editor',
143
- });
@@ -1,6 +0,0 @@
1
- import '@vaadin/button/theme/material/vaadin-button.js';
2
- import '@vaadin/confirm-dialog/theme/material/vaadin-confirm-dialog.js';
3
- import '@vaadin/text-field/theme/material/vaadin-text-field.js';
4
- import '@vaadin/tooltip/theme/material/vaadin-tooltip.js';
5
- import './vaadin-rich-text-editor-styles.js';
6
- import '../../src/vaadin-rich-text-editor.js';
@@ -1,6 +0,0 @@
1
- import '@vaadin/button/theme/material/vaadin-button.js';
2
- import '@vaadin/confirm-dialog/theme/material/vaadin-confirm-dialog.js';
3
- import '@vaadin/text-field/theme/material/vaadin-text-field.js';
4
- import '@vaadin/tooltip/theme/material/vaadin-tooltip.js';
5
- import './vaadin-rich-text-editor-styles.js';
6
- import '../../src/vaadin-rich-text-editor.js';
@@ -1 +0,0 @@
1
- export * from './src/vaadin-rich-text-editor.js';
@@ -1,2 +0,0 @@
1
- import './theme/lumo/vaadin-lit-rich-text-editor.js';
2
- export * from './src/vaadin-lit-rich-text-editor.js';