@ckeditor/ckeditor5-ui 39.0.1 → 40.0.0

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.
Files changed (229) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/LICENSE.md +1 -1
  3. package/README.md +4 -4
  4. package/lang/contexts.json +5 -1
  5. package/lang/translations/ar.po +17 -0
  6. package/lang/translations/ast.po +17 -0
  7. package/lang/translations/az.po +17 -0
  8. package/lang/translations/bg.po +17 -0
  9. package/lang/translations/bn.po +17 -0
  10. package/lang/translations/ca.po +17 -0
  11. package/lang/translations/cs.po +17 -0
  12. package/lang/translations/da.po +17 -0
  13. package/lang/translations/de-ch.po +17 -0
  14. package/lang/translations/de.po +17 -0
  15. package/lang/translations/el.po +17 -0
  16. package/lang/translations/en-au.po +17 -0
  17. package/lang/translations/en-gb.po +17 -0
  18. package/lang/translations/en.po +17 -0
  19. package/lang/translations/eo.po +17 -0
  20. package/lang/translations/es.po +17 -0
  21. package/lang/translations/et.po +17 -0
  22. package/lang/translations/eu.po +17 -0
  23. package/lang/translations/fa.po +17 -0
  24. package/lang/translations/fi.po +17 -0
  25. package/lang/translations/fr.po +17 -0
  26. package/lang/translations/gl.po +17 -0
  27. package/lang/translations/he.po +17 -0
  28. package/lang/translations/hi.po +17 -0
  29. package/lang/translations/hr.po +17 -0
  30. package/lang/translations/hu.po +17 -0
  31. package/lang/translations/id.po +17 -0
  32. package/lang/translations/it.po +17 -0
  33. package/lang/translations/ja.po +17 -0
  34. package/lang/translations/km.po +17 -0
  35. package/lang/translations/kn.po +17 -0
  36. package/lang/translations/ko.po +17 -0
  37. package/lang/translations/ku.po +17 -0
  38. package/lang/translations/lt.po +17 -0
  39. package/lang/translations/lv.po +17 -0
  40. package/lang/translations/ms.po +17 -0
  41. package/lang/translations/nb.po +17 -0
  42. package/lang/translations/ne.po +17 -0
  43. package/lang/translations/nl.po +17 -0
  44. package/lang/translations/no.po +17 -0
  45. package/lang/translations/pl.po +17 -0
  46. package/lang/translations/pt-br.po +17 -0
  47. package/lang/translations/pt.po +17 -0
  48. package/lang/translations/ro.po +17 -0
  49. package/lang/translations/ru.po +17 -0
  50. package/lang/translations/sk.po +17 -0
  51. package/lang/translations/sl.po +17 -0
  52. package/lang/translations/sq.po +17 -0
  53. package/lang/translations/sr-latn.po +17 -0
  54. package/lang/translations/sr.po +17 -0
  55. package/lang/translations/sv.po +17 -0
  56. package/lang/translations/th.po +17 -0
  57. package/lang/translations/tk.po +17 -0
  58. package/lang/translations/tr.po +17 -0
  59. package/lang/translations/tt.po +17 -0
  60. package/lang/translations/ug.po +17 -0
  61. package/lang/translations/uk.po +17 -0
  62. package/lang/translations/ur.po +17 -0
  63. package/lang/translations/uz.po +17 -0
  64. package/lang/translations/vi.po +17 -0
  65. package/lang/translations/zh-cn.po +17 -0
  66. package/lang/translations/zh.po +17 -0
  67. package/package.json +3 -7
  68. package/src/augmentation.d.ts +86 -86
  69. package/src/augmentation.js +5 -5
  70. package/src/autocomplete/autocompleteview.d.ts +81 -0
  71. package/src/autocomplete/autocompleteview.js +146 -0
  72. package/src/bindings/addkeyboardhandlingforgrid.d.ts +27 -27
  73. package/src/bindings/addkeyboardhandlingforgrid.js +107 -107
  74. package/src/bindings/clickoutsidehandler.d.ts +28 -28
  75. package/src/bindings/clickoutsidehandler.js +36 -36
  76. package/src/bindings/csstransitiondisablermixin.d.ts +40 -40
  77. package/src/bindings/csstransitiondisablermixin.js +55 -55
  78. package/src/bindings/injectcsstransitiondisabler.d.ts +59 -59
  79. package/src/bindings/injectcsstransitiondisabler.js +71 -71
  80. package/src/bindings/preventdefault.d.ts +33 -33
  81. package/src/bindings/preventdefault.js +34 -34
  82. package/src/bindings/submithandler.d.ts +57 -57
  83. package/src/bindings/submithandler.js +47 -47
  84. package/src/button/button.d.ts +178 -178
  85. package/src/button/button.js +5 -5
  86. package/src/button/buttonlabel.d.ts +34 -0
  87. package/src/button/buttonlabel.js +5 -0
  88. package/src/button/buttonlabelview.d.ts +31 -0
  89. package/src/button/buttonlabelview.js +42 -0
  90. package/src/button/buttonview.d.ts +185 -177
  91. package/src/button/buttonview.js +219 -231
  92. package/src/button/switchbuttonview.d.ts +45 -45
  93. package/src/button/switchbuttonview.js +75 -75
  94. package/src/colorgrid/colorgridview.d.ts +132 -132
  95. package/src/colorgrid/colorgridview.js +124 -124
  96. package/src/colorgrid/colortileview.d.ts +28 -28
  97. package/src/colorgrid/colortileview.js +40 -40
  98. package/src/colorgrid/utils.d.ts +47 -47
  99. package/src/colorgrid/utils.js +84 -84
  100. package/src/colorpicker/colorpickerview.d.ts +137 -137
  101. package/src/colorpicker/colorpickerview.js +270 -270
  102. package/src/colorpicker/utils.d.ts +43 -43
  103. package/src/colorpicker/utils.js +99 -99
  104. package/src/colorselector/colorgridsfragmentview.d.ts +194 -194
  105. package/src/colorselector/colorgridsfragmentview.js +289 -289
  106. package/src/colorselector/colorpickerfragmentview.d.ts +128 -128
  107. package/src/colorselector/colorpickerfragmentview.js +205 -205
  108. package/src/colorselector/colorselectorview.d.ts +242 -242
  109. package/src/colorselector/colorselectorview.js +256 -256
  110. package/src/colorselector/documentcolorcollection.d.ts +70 -70
  111. package/src/colorselector/documentcolorcollection.js +42 -42
  112. package/src/componentfactory.d.ts +81 -81
  113. package/src/componentfactory.js +104 -104
  114. package/src/dropdown/button/dropdownbutton.d.ts +25 -25
  115. package/src/dropdown/button/dropdownbutton.js +5 -5
  116. package/src/dropdown/button/dropdownbuttonview.d.ts +48 -48
  117. package/src/dropdown/button/dropdownbuttonview.js +66 -66
  118. package/src/dropdown/button/splitbuttonview.d.ts +161 -161
  119. package/src/dropdown/button/splitbuttonview.js +152 -152
  120. package/src/dropdown/dropdownpanelfocusable.d.ts +21 -21
  121. package/src/dropdown/dropdownpanelfocusable.js +5 -5
  122. package/src/dropdown/dropdownpanelview.d.ts +62 -62
  123. package/src/dropdown/dropdownpanelview.js +97 -97
  124. package/src/dropdown/dropdownview.d.ts +315 -315
  125. package/src/dropdown/dropdownview.js +379 -378
  126. package/src/dropdown/utils.d.ts +235 -221
  127. package/src/dropdown/utils.js +458 -437
  128. package/src/editableui/editableuiview.d.ts +72 -72
  129. package/src/editableui/editableuiview.js +112 -112
  130. package/src/editableui/inline/inlineeditableuiview.d.ts +40 -40
  131. package/src/editableui/inline/inlineeditableuiview.js +48 -48
  132. package/src/editorui/bodycollection.d.ts +55 -55
  133. package/src/editorui/bodycollection.js +84 -84
  134. package/src/editorui/boxed/boxededitoruiview.d.ts +40 -40
  135. package/src/editorui/boxed/boxededitoruiview.js +81 -81
  136. package/src/editorui/editorui.d.ts +282 -282
  137. package/src/editorui/editorui.js +410 -410
  138. package/src/editorui/editoruiview.d.ts +39 -39
  139. package/src/editorui/editoruiview.js +38 -38
  140. package/src/editorui/poweredby.d.ts +71 -71
  141. package/src/editorui/poweredby.js +276 -299
  142. package/src/focuscycler.d.ts +226 -183
  143. package/src/focuscycler.js +245 -220
  144. package/src/formheader/formheaderview.d.ts +59 -53
  145. package/src/formheader/formheaderview.js +69 -63
  146. package/src/highlightedtext/highlightedtextview.d.ts +38 -0
  147. package/src/highlightedtext/highlightedtextview.js +102 -0
  148. package/src/icon/iconview.d.ts +85 -78
  149. package/src/icon/iconview.js +114 -112
  150. package/src/iframe/iframeview.d.ts +50 -50
  151. package/src/iframe/iframeview.js +63 -63
  152. package/src/index.d.ts +73 -63
  153. package/src/index.js +70 -62
  154. package/src/input/inputbase.d.ts +107 -0
  155. package/src/input/inputbase.js +110 -0
  156. package/src/input/inputview.d.ts +36 -121
  157. package/src/input/inputview.js +24 -106
  158. package/src/inputnumber/inputnumberview.d.ts +49 -49
  159. package/src/inputnumber/inputnumberview.js +40 -40
  160. package/src/inputtext/inputtextview.d.ts +18 -18
  161. package/src/inputtext/inputtextview.js +27 -27
  162. package/src/label/labelview.d.ts +36 -36
  163. package/src/label/labelview.js +41 -41
  164. package/src/labeledfield/labeledfieldview.d.ts +187 -182
  165. package/src/labeledfield/labeledfieldview.js +157 -157
  166. package/src/labeledfield/utils.d.ts +123 -93
  167. package/src/labeledfield/utils.js +176 -131
  168. package/src/labeledinput/labeledinputview.d.ts +125 -125
  169. package/src/labeledinput/labeledinputview.js +125 -125
  170. package/src/list/listitemgroupview.d.ts +51 -0
  171. package/src/list/listitemgroupview.js +75 -0
  172. package/src/list/listitemview.d.ts +36 -35
  173. package/src/list/listitemview.js +42 -40
  174. package/src/list/listseparatorview.d.ts +18 -18
  175. package/src/list/listseparatorview.js +28 -28
  176. package/src/list/listview.d.ts +122 -65
  177. package/src/list/listview.js +187 -90
  178. package/src/model.d.ts +22 -22
  179. package/src/model.js +31 -31
  180. package/src/notification/notification.d.ts +211 -211
  181. package/src/notification/notification.js +187 -187
  182. package/src/panel/balloon/balloonpanelview.d.ts +685 -685
  183. package/src/panel/balloon/balloonpanelview.js +1010 -988
  184. package/src/panel/balloon/contextualballoon.d.ts +299 -299
  185. package/src/panel/balloon/contextualballoon.js +572 -572
  186. package/src/panel/sticky/stickypanelview.d.ts +156 -158
  187. package/src/panel/sticky/stickypanelview.js +234 -231
  188. package/src/search/filteredview.d.ts +31 -0
  189. package/src/search/filteredview.js +5 -0
  190. package/src/search/searchinfoview.d.ts +45 -0
  191. package/src/search/searchinfoview.js +59 -0
  192. package/src/search/searchresultsview.d.ts +54 -0
  193. package/src/search/searchresultsview.js +65 -0
  194. package/src/search/text/searchtextqueryview.d.ts +76 -0
  195. package/src/search/text/searchtextqueryview.js +75 -0
  196. package/src/search/text/searchtextview.d.ts +219 -0
  197. package/src/search/text/searchtextview.js +201 -0
  198. package/src/spinner/spinnerview.d.ts +25 -0
  199. package/src/spinner/spinnerview.js +38 -0
  200. package/src/template.d.ts +942 -942
  201. package/src/template.js +1294 -1294
  202. package/src/textarea/textareaview.d.ts +88 -0
  203. package/src/textarea/textareaview.js +140 -0
  204. package/src/toolbar/balloon/balloontoolbar.d.ts +122 -122
  205. package/src/toolbar/balloon/balloontoolbar.js +300 -300
  206. package/src/toolbar/block/blockbuttonview.d.ts +35 -35
  207. package/src/toolbar/block/blockbuttonview.js +41 -41
  208. package/src/toolbar/block/blocktoolbar.d.ts +161 -161
  209. package/src/toolbar/block/blocktoolbar.js +395 -391
  210. package/src/toolbar/normalizetoolbarconfig.d.ts +40 -39
  211. package/src/toolbar/normalizetoolbarconfig.js +51 -51
  212. package/src/toolbar/toolbarlinebreakview.d.ts +18 -18
  213. package/src/toolbar/toolbarlinebreakview.js +28 -28
  214. package/src/toolbar/toolbarseparatorview.d.ts +18 -18
  215. package/src/toolbar/toolbarseparatorview.js +28 -28
  216. package/src/toolbar/toolbarview.d.ts +266 -265
  217. package/src/toolbar/toolbarview.js +719 -717
  218. package/src/tooltipmanager.d.ts +180 -180
  219. package/src/tooltipmanager.js +353 -353
  220. package/src/view.d.ts +422 -422
  221. package/src/view.js +396 -396
  222. package/src/viewcollection.d.ts +139 -139
  223. package/src/viewcollection.js +206 -206
  224. package/theme/components/autocomplete/autocomplete.css +22 -0
  225. package/theme/components/formheader/formheader.css +8 -0
  226. package/theme/components/highlightedtext/highlightedtext.css +12 -0
  227. package/theme/components/search/search.css +43 -0
  228. package/theme/components/spinner/spinner.css +23 -0
  229. package/theme/components/textarea/textarea.css +10 -0
@@ -1,72 +1,72 @@
1
- /**
2
- * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
3
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
- */
5
- /**
6
- * @module ui/editableui/editableuiview
7
- */
8
- import View from '../view';
9
- import type { View as EditingView } from '@ckeditor/ckeditor5-engine';
10
- import type { Locale } from '@ckeditor/ckeditor5-utils';
11
- /**
12
- * The editable UI view class.
13
- */
14
- export default class EditableUIView extends View {
15
- /**
16
- * The name of the editable UI view.
17
- */
18
- name: string | null;
19
- /**
20
- * Controls whether the editable is focused, i.e. the user is typing in it.
21
- *
22
- * @observable
23
- */
24
- isFocused: boolean;
25
- /**
26
- * The editing view instance the editable is related to. Editable uses the editing
27
- * view to dynamically modify its certain DOM attributes after {@link #render rendering}.
28
- *
29
- * **Note**: The DOM attributes are performed by the editing view and not UI
30
- * {@link module:ui/view~View#bindTemplate template bindings} because once rendered,
31
- * the editable DOM element must remain under the full control of the engine to work properly.
32
- */
33
- protected _editingView: EditingView;
34
- /**
35
- * The element which is the main editable element (usually the one with `contentEditable="true"`).
36
- */
37
- private _editableElement;
38
- /**
39
- * Whether an external {@link #_editableElement} was passed into the constructor, which also means
40
- * the view will not render its {@link #template}.
41
- */
42
- private _hasExternalElement;
43
- /**
44
- * Creates an instance of EditableUIView class.
45
- *
46
- * @param locale The locale instance.
47
- * @param editingView The editing view instance the editable is related to.
48
- * @param editableElement The editable element. If not specified, this view
49
- * should create it. Otherwise, the existing element should be used.
50
- */
51
- constructor(locale: Locale, editingView: EditingView, editableElement?: HTMLElement);
52
- /**
53
- * Renders the view by either applying the {@link #template} to the existing
54
- * {@link module:ui/editableui/editableuiview~EditableUIView#_editableElement} or assigning {@link #element}
55
- * as {@link module:ui/editableui/editableuiview~EditableUIView#_editableElement}.
56
- */
57
- render(): void;
58
- /**
59
- * @inheritDoc
60
- */
61
- destroy(): void;
62
- /**
63
- * Whether an external {@link #_editableElement} was passed into the constructor, which also means
64
- * the view will not render its {@link #template}.
65
- */
66
- get hasExternalElement(): boolean;
67
- /**
68
- * Updates the `ck-focused` and `ck-blurred` CSS classes on the {@link #element} according to
69
- * the {@link #isFocused} property value using the {@link #_editingView editing view} API.
70
- */
71
- private _updateIsFocusedClasses;
72
- }
1
+ /**
2
+ * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
+ */
5
+ /**
6
+ * @module ui/editableui/editableuiview
7
+ */
8
+ import View from '../view';
9
+ import type { View as EditingView } from '@ckeditor/ckeditor5-engine';
10
+ import type { Locale } from '@ckeditor/ckeditor5-utils';
11
+ /**
12
+ * The editable UI view class.
13
+ */
14
+ export default class EditableUIView extends View {
15
+ /**
16
+ * The name of the editable UI view.
17
+ */
18
+ name: string | null;
19
+ /**
20
+ * Controls whether the editable is focused, i.e. the user is typing in it.
21
+ *
22
+ * @observable
23
+ */
24
+ isFocused: boolean;
25
+ /**
26
+ * The editing view instance the editable is related to. Editable uses the editing
27
+ * view to dynamically modify its certain DOM attributes after {@link #render rendering}.
28
+ *
29
+ * **Note**: The DOM attributes are performed by the editing view and not UI
30
+ * {@link module:ui/view~View#bindTemplate template bindings} because once rendered,
31
+ * the editable DOM element must remain under the full control of the engine to work properly.
32
+ */
33
+ protected _editingView: EditingView;
34
+ /**
35
+ * The element which is the main editable element (usually the one with `contentEditable="true"`).
36
+ */
37
+ private _editableElement;
38
+ /**
39
+ * Whether an external {@link #_editableElement} was passed into the constructor, which also means
40
+ * the view will not render its {@link #template}.
41
+ */
42
+ private _hasExternalElement;
43
+ /**
44
+ * Creates an instance of EditableUIView class.
45
+ *
46
+ * @param locale The locale instance.
47
+ * @param editingView The editing view instance the editable is related to.
48
+ * @param editableElement The editable element. If not specified, this view
49
+ * should create it. Otherwise, the existing element should be used.
50
+ */
51
+ constructor(locale: Locale, editingView: EditingView, editableElement?: HTMLElement);
52
+ /**
53
+ * Renders the view by either applying the {@link #template} to the existing
54
+ * {@link module:ui/editableui/editableuiview~EditableUIView#_editableElement} or assigning {@link #element}
55
+ * as {@link module:ui/editableui/editableuiview~EditableUIView#_editableElement}.
56
+ */
57
+ render(): void;
58
+ /**
59
+ * @inheritDoc
60
+ */
61
+ destroy(): void;
62
+ /**
63
+ * Whether an external {@link #_editableElement} was passed into the constructor, which also means
64
+ * the view will not render its {@link #template}.
65
+ */
66
+ get hasExternalElement(): boolean;
67
+ /**
68
+ * Updates the `ck-focused` and `ck-blurred` CSS classes on the {@link #element} according to
69
+ * the {@link #isFocused} property value using the {@link #_editingView editing view} API.
70
+ */
71
+ private _updateIsFocusedClasses;
72
+ }
@@ -1,112 +1,112 @@
1
- /**
2
- * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
3
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
- */
5
- /**
6
- * @module ui/editableui/editableuiview
7
- */
8
- import View from '../view';
9
- /**
10
- * The editable UI view class.
11
- */
12
- export default class EditableUIView extends View {
13
- /**
14
- * Creates an instance of EditableUIView class.
15
- *
16
- * @param locale The locale instance.
17
- * @param editingView The editing view instance the editable is related to.
18
- * @param editableElement The editable element. If not specified, this view
19
- * should create it. Otherwise, the existing element should be used.
20
- */
21
- constructor(locale, editingView, editableElement) {
22
- super(locale);
23
- /**
24
- * The name of the editable UI view.
25
- */
26
- this.name = null;
27
- this.setTemplate({
28
- tag: 'div',
29
- attributes: {
30
- class: [
31
- 'ck',
32
- 'ck-content',
33
- 'ck-editor__editable',
34
- 'ck-rounded-corners'
35
- ],
36
- lang: locale.contentLanguage,
37
- dir: locale.contentLanguageDirection
38
- }
39
- });
40
- this.set('isFocused', false);
41
- this._editableElement = editableElement;
42
- this._hasExternalElement = !!this._editableElement;
43
- this._editingView = editingView;
44
- }
45
- /**
46
- * Renders the view by either applying the {@link #template} to the existing
47
- * {@link module:ui/editableui/editableuiview~EditableUIView#_editableElement} or assigning {@link #element}
48
- * as {@link module:ui/editableui/editableuiview~EditableUIView#_editableElement}.
49
- */
50
- render() {
51
- super.render();
52
- if (this._hasExternalElement) {
53
- this.template.apply(this.element = this._editableElement);
54
- }
55
- else {
56
- this._editableElement = this.element;
57
- }
58
- this.on('change:isFocused', () => this._updateIsFocusedClasses());
59
- this._updateIsFocusedClasses();
60
- }
61
- /**
62
- * @inheritDoc
63
- */
64
- destroy() {
65
- if (this._hasExternalElement) {
66
- this.template.revert(this._editableElement);
67
- }
68
- super.destroy();
69
- }
70
- /**
71
- * Whether an external {@link #_editableElement} was passed into the constructor, which also means
72
- * the view will not render its {@link #template}.
73
- */
74
- get hasExternalElement() {
75
- return this._hasExternalElement;
76
- }
77
- /**
78
- * Updates the `ck-focused` and `ck-blurred` CSS classes on the {@link #element} according to
79
- * the {@link #isFocused} property value using the {@link #_editingView editing view} API.
80
- */
81
- _updateIsFocusedClasses() {
82
- const editingView = this._editingView;
83
- if (editingView.isRenderingInProgress) {
84
- updateAfterRender(this);
85
- }
86
- else {
87
- update(this);
88
- }
89
- function update(view) {
90
- editingView.change(writer => {
91
- const viewRoot = editingView.document.getRoot(view.name);
92
- writer.addClass(view.isFocused ? 'ck-focused' : 'ck-blurred', viewRoot);
93
- writer.removeClass(view.isFocused ? 'ck-blurred' : 'ck-focused', viewRoot);
94
- });
95
- }
96
- // In a case of a multi-root editor, a callback will be attached more than once (one callback for each root).
97
- // While executing one callback the `isRenderingInProgress` observable is changing what causes executing another
98
- // callback and render is called inside the already pending render.
99
- // We need to be sure that callback is executed only when the value has changed from `true` to `false`.
100
- // See https://github.com/ckeditor/ckeditor5/issues/1676.
101
- function updateAfterRender(view) {
102
- editingView.once('change:isRenderingInProgress', (evt, name, value) => {
103
- if (!value) {
104
- update(view);
105
- }
106
- else {
107
- updateAfterRender(view);
108
- }
109
- });
110
- }
111
- }
112
- }
1
+ /**
2
+ * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
+ */
5
+ /**
6
+ * @module ui/editableui/editableuiview
7
+ */
8
+ import View from '../view';
9
+ /**
10
+ * The editable UI view class.
11
+ */
12
+ export default class EditableUIView extends View {
13
+ /**
14
+ * Creates an instance of EditableUIView class.
15
+ *
16
+ * @param locale The locale instance.
17
+ * @param editingView The editing view instance the editable is related to.
18
+ * @param editableElement The editable element. If not specified, this view
19
+ * should create it. Otherwise, the existing element should be used.
20
+ */
21
+ constructor(locale, editingView, editableElement) {
22
+ super(locale);
23
+ /**
24
+ * The name of the editable UI view.
25
+ */
26
+ this.name = null;
27
+ this.setTemplate({
28
+ tag: 'div',
29
+ attributes: {
30
+ class: [
31
+ 'ck',
32
+ 'ck-content',
33
+ 'ck-editor__editable',
34
+ 'ck-rounded-corners'
35
+ ],
36
+ lang: locale.contentLanguage,
37
+ dir: locale.contentLanguageDirection
38
+ }
39
+ });
40
+ this.set('isFocused', false);
41
+ this._editableElement = editableElement;
42
+ this._hasExternalElement = !!this._editableElement;
43
+ this._editingView = editingView;
44
+ }
45
+ /**
46
+ * Renders the view by either applying the {@link #template} to the existing
47
+ * {@link module:ui/editableui/editableuiview~EditableUIView#_editableElement} or assigning {@link #element}
48
+ * as {@link module:ui/editableui/editableuiview~EditableUIView#_editableElement}.
49
+ */
50
+ render() {
51
+ super.render();
52
+ if (this._hasExternalElement) {
53
+ this.template.apply(this.element = this._editableElement);
54
+ }
55
+ else {
56
+ this._editableElement = this.element;
57
+ }
58
+ this.on('change:isFocused', () => this._updateIsFocusedClasses());
59
+ this._updateIsFocusedClasses();
60
+ }
61
+ /**
62
+ * @inheritDoc
63
+ */
64
+ destroy() {
65
+ if (this._hasExternalElement) {
66
+ this.template.revert(this._editableElement);
67
+ }
68
+ super.destroy();
69
+ }
70
+ /**
71
+ * Whether an external {@link #_editableElement} was passed into the constructor, which also means
72
+ * the view will not render its {@link #template}.
73
+ */
74
+ get hasExternalElement() {
75
+ return this._hasExternalElement;
76
+ }
77
+ /**
78
+ * Updates the `ck-focused` and `ck-blurred` CSS classes on the {@link #element} according to
79
+ * the {@link #isFocused} property value using the {@link #_editingView editing view} API.
80
+ */
81
+ _updateIsFocusedClasses() {
82
+ const editingView = this._editingView;
83
+ if (editingView.isRenderingInProgress) {
84
+ updateAfterRender(this);
85
+ }
86
+ else {
87
+ update(this);
88
+ }
89
+ function update(view) {
90
+ editingView.change(writer => {
91
+ const viewRoot = editingView.document.getRoot(view.name);
92
+ writer.addClass(view.isFocused ? 'ck-focused' : 'ck-blurred', viewRoot);
93
+ writer.removeClass(view.isFocused ? 'ck-blurred' : 'ck-focused', viewRoot);
94
+ });
95
+ }
96
+ // In a case of a multi-root editor, a callback will be attached more than once (one callback for each root).
97
+ // While executing one callback the `isRenderingInProgress` observable is changing what causes executing another
98
+ // callback and render is called inside the already pending render.
99
+ // We need to be sure that callback is executed only when the value has changed from `true` to `false`.
100
+ // See https://github.com/ckeditor/ckeditor5/issues/1676.
101
+ function updateAfterRender(view) {
102
+ editingView.once('change:isRenderingInProgress', (evt, name, value) => {
103
+ if (!value) {
104
+ update(view);
105
+ }
106
+ else {
107
+ updateAfterRender(view);
108
+ }
109
+ });
110
+ }
111
+ }
112
+ }
@@ -1,40 +1,40 @@
1
- /**
2
- * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
3
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
- */
5
- /**
6
- * @module ui/editableui/inline/inlineeditableuiview
7
- */
8
- import EditableUIView from '../editableuiview';
9
- import type { View } from '@ckeditor/ckeditor5-engine';
10
- import type { Locale } from '@ckeditor/ckeditor5-utils';
11
- /**
12
- * The inline editable UI class implementing an inline {@link module:ui/editableui/editableuiview~EditableUIView}.
13
- */
14
- export default class InlineEditableUIView extends EditableUIView {
15
- /**
16
- * A function that gets called with the instance of this view as an argument and should return a string that
17
- * represents the label of the editable for assistive technologies.
18
- */
19
- private readonly _generateLabel;
20
- /**
21
- * Creates an instance of the InlineEditableUIView class.
22
- *
23
- * @param locale The locale instance.
24
- * @param editingView The editing view instance the editable is related to.
25
- * @param editableElement The editable element. If not specified, the
26
- * {@link module:ui/editableui/editableuiview~EditableUIView}
27
- * will create it. Otherwise, the existing element will be used.
28
- * @param options Additional configuration of the view.
29
- * @param options.label A function that gets called with the instance of this view as an argument
30
- * and should return a string that represents the label of the editable for assistive technologies. If not provided,
31
- * a default label generator is used.
32
- */
33
- constructor(locale: Locale, editingView: View, editableElement?: HTMLElement, options?: {
34
- label?: (view: InlineEditableUIView) => string;
35
- });
36
- /**
37
- * @inheritDoc
38
- */
39
- render(): void;
40
- }
1
+ /**
2
+ * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
+ */
5
+ /**
6
+ * @module ui/editableui/inline/inlineeditableuiview
7
+ */
8
+ import EditableUIView from '../editableuiview';
9
+ import type { View } from '@ckeditor/ckeditor5-engine';
10
+ import type { Locale } from '@ckeditor/ckeditor5-utils';
11
+ /**
12
+ * The inline editable UI class implementing an inline {@link module:ui/editableui/editableuiview~EditableUIView}.
13
+ */
14
+ export default class InlineEditableUIView extends EditableUIView {
15
+ /**
16
+ * A function that gets called with the instance of this view as an argument and should return a string that
17
+ * represents the label of the editable for assistive technologies.
18
+ */
19
+ private readonly _generateLabel;
20
+ /**
21
+ * Creates an instance of the InlineEditableUIView class.
22
+ *
23
+ * @param locale The locale instance.
24
+ * @param editingView The editing view instance the editable is related to.
25
+ * @param editableElement The editable element. If not specified, the
26
+ * {@link module:ui/editableui/editableuiview~EditableUIView}
27
+ * will create it. Otherwise, the existing element will be used.
28
+ * @param options Additional configuration of the view.
29
+ * @param options.label A function that gets called with the instance of this view as an argument
30
+ * and should return a string that represents the label of the editable for assistive technologies. If not provided,
31
+ * a default label generator is used.
32
+ */
33
+ constructor(locale: Locale, editingView: View, editableElement?: HTMLElement, options?: {
34
+ label?: (view: InlineEditableUIView) => string;
35
+ });
36
+ /**
37
+ * @inheritDoc
38
+ */
39
+ render(): void;
40
+ }
@@ -1,48 +1,48 @@
1
- /**
2
- * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
3
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
- */
5
- /**
6
- * @module ui/editableui/inline/inlineeditableuiview
7
- */
8
- import EditableUIView from '../editableuiview';
9
- /**
10
- * The inline editable UI class implementing an inline {@link module:ui/editableui/editableuiview~EditableUIView}.
11
- */
12
- export default class InlineEditableUIView extends EditableUIView {
13
- /**
14
- * Creates an instance of the InlineEditableUIView class.
15
- *
16
- * @param locale The locale instance.
17
- * @param editingView The editing view instance the editable is related to.
18
- * @param editableElement The editable element. If not specified, the
19
- * {@link module:ui/editableui/editableuiview~EditableUIView}
20
- * will create it. Otherwise, the existing element will be used.
21
- * @param options Additional configuration of the view.
22
- * @param options.label A function that gets called with the instance of this view as an argument
23
- * and should return a string that represents the label of the editable for assistive technologies. If not provided,
24
- * a default label generator is used.
25
- */
26
- constructor(locale, editingView, editableElement, options = {}) {
27
- super(locale, editingView, editableElement);
28
- const t = locale.t;
29
- this.extendTemplate({
30
- attributes: {
31
- role: 'textbox',
32
- class: 'ck-editor__editable_inline'
33
- }
34
- });
35
- this._generateLabel = options.label || (() => t('Editor editing area: %0', this.name));
36
- }
37
- /**
38
- * @inheritDoc
39
- */
40
- render() {
41
- super.render();
42
- const editingView = this._editingView;
43
- editingView.change(writer => {
44
- const viewRoot = editingView.document.getRoot(this.name);
45
- writer.setAttribute('aria-label', this._generateLabel(this), viewRoot);
46
- });
47
- }
48
- }
1
+ /**
2
+ * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
+ */
5
+ /**
6
+ * @module ui/editableui/inline/inlineeditableuiview
7
+ */
8
+ import EditableUIView from '../editableuiview';
9
+ /**
10
+ * The inline editable UI class implementing an inline {@link module:ui/editableui/editableuiview~EditableUIView}.
11
+ */
12
+ export default class InlineEditableUIView extends EditableUIView {
13
+ /**
14
+ * Creates an instance of the InlineEditableUIView class.
15
+ *
16
+ * @param locale The locale instance.
17
+ * @param editingView The editing view instance the editable is related to.
18
+ * @param editableElement The editable element. If not specified, the
19
+ * {@link module:ui/editableui/editableuiview~EditableUIView}
20
+ * will create it. Otherwise, the existing element will be used.
21
+ * @param options Additional configuration of the view.
22
+ * @param options.label A function that gets called with the instance of this view as an argument
23
+ * and should return a string that represents the label of the editable for assistive technologies. If not provided,
24
+ * a default label generator is used.
25
+ */
26
+ constructor(locale, editingView, editableElement, options = {}) {
27
+ super(locale, editingView, editableElement);
28
+ const t = locale.t;
29
+ this.extendTemplate({
30
+ attributes: {
31
+ role: 'textbox',
32
+ class: 'ck-editor__editable_inline'
33
+ }
34
+ });
35
+ this._generateLabel = options.label || (() => t('Editor editing area: %0', this.name));
36
+ }
37
+ /**
38
+ * @inheritDoc
39
+ */
40
+ render() {
41
+ super.render();
42
+ const editingView = this._editingView;
43
+ editingView.change(writer => {
44
+ const viewRoot = editingView.document.getRoot(this.name);
45
+ writer.setAttribute('aria-label', this._generateLabel(this), viewRoot);
46
+ });
47
+ }
48
+ }