@ckeditor/ckeditor5-ui 39.0.2 → 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 (226) hide show
  1. package/lang/contexts.json +5 -1
  2. package/lang/translations/ar.po +16 -0
  3. package/lang/translations/ast.po +16 -0
  4. package/lang/translations/az.po +16 -0
  5. package/lang/translations/bg.po +16 -0
  6. package/lang/translations/bn.po +16 -0
  7. package/lang/translations/ca.po +16 -0
  8. package/lang/translations/cs.po +16 -0
  9. package/lang/translations/da.po +16 -0
  10. package/lang/translations/de-ch.po +16 -0
  11. package/lang/translations/de.po +16 -0
  12. package/lang/translations/el.po +16 -0
  13. package/lang/translations/en-au.po +16 -0
  14. package/lang/translations/en-gb.po +16 -0
  15. package/lang/translations/en.po +16 -0
  16. package/lang/translations/eo.po +16 -0
  17. package/lang/translations/es.po +16 -0
  18. package/lang/translations/et.po +16 -0
  19. package/lang/translations/eu.po +16 -0
  20. package/lang/translations/fa.po +16 -0
  21. package/lang/translations/fi.po +16 -0
  22. package/lang/translations/fr.po +16 -0
  23. package/lang/translations/gl.po +16 -0
  24. package/lang/translations/he.po +16 -0
  25. package/lang/translations/hi.po +16 -0
  26. package/lang/translations/hr.po +16 -0
  27. package/lang/translations/hu.po +16 -0
  28. package/lang/translations/id.po +16 -0
  29. package/lang/translations/it.po +16 -0
  30. package/lang/translations/ja.po +16 -0
  31. package/lang/translations/km.po +16 -0
  32. package/lang/translations/kn.po +16 -0
  33. package/lang/translations/ko.po +16 -0
  34. package/lang/translations/ku.po +16 -0
  35. package/lang/translations/lt.po +16 -0
  36. package/lang/translations/lv.po +16 -0
  37. package/lang/translations/ms.po +16 -0
  38. package/lang/translations/nb.po +16 -0
  39. package/lang/translations/ne.po +16 -0
  40. package/lang/translations/nl.po +16 -0
  41. package/lang/translations/no.po +16 -0
  42. package/lang/translations/pl.po +16 -0
  43. package/lang/translations/pt-br.po +16 -0
  44. package/lang/translations/pt.po +16 -0
  45. package/lang/translations/ro.po +16 -0
  46. package/lang/translations/ru.po +16 -0
  47. package/lang/translations/sk.po +16 -0
  48. package/lang/translations/sl.po +16 -0
  49. package/lang/translations/sq.po +16 -0
  50. package/lang/translations/sr-latn.po +16 -0
  51. package/lang/translations/sr.po +16 -0
  52. package/lang/translations/sv.po +16 -0
  53. package/lang/translations/th.po +16 -0
  54. package/lang/translations/tk.po +16 -0
  55. package/lang/translations/tr.po +16 -0
  56. package/lang/translations/tt.po +16 -0
  57. package/lang/translations/ug.po +16 -0
  58. package/lang/translations/uk.po +16 -0
  59. package/lang/translations/ur.po +16 -0
  60. package/lang/translations/uz.po +16 -0
  61. package/lang/translations/vi.po +16 -0
  62. package/lang/translations/zh-cn.po +16 -0
  63. package/lang/translations/zh.po +16 -0
  64. package/package.json +3 -3
  65. package/src/augmentation.d.ts +86 -86
  66. package/src/augmentation.js +5 -5
  67. package/src/autocomplete/autocompleteview.d.ts +81 -0
  68. package/src/autocomplete/autocompleteview.js +146 -0
  69. package/src/bindings/addkeyboardhandlingforgrid.d.ts +27 -27
  70. package/src/bindings/addkeyboardhandlingforgrid.js +107 -107
  71. package/src/bindings/clickoutsidehandler.d.ts +28 -28
  72. package/src/bindings/clickoutsidehandler.js +36 -36
  73. package/src/bindings/csstransitiondisablermixin.d.ts +40 -40
  74. package/src/bindings/csstransitiondisablermixin.js +55 -55
  75. package/src/bindings/injectcsstransitiondisabler.d.ts +59 -59
  76. package/src/bindings/injectcsstransitiondisabler.js +71 -71
  77. package/src/bindings/preventdefault.d.ts +33 -33
  78. package/src/bindings/preventdefault.js +34 -34
  79. package/src/bindings/submithandler.d.ts +57 -57
  80. package/src/bindings/submithandler.js +47 -47
  81. package/src/button/button.d.ts +178 -178
  82. package/src/button/button.js +5 -5
  83. package/src/button/buttonlabel.d.ts +34 -0
  84. package/src/button/buttonlabel.js +5 -0
  85. package/src/button/buttonlabelview.d.ts +31 -0
  86. package/src/button/buttonlabelview.js +42 -0
  87. package/src/button/buttonview.d.ts +185 -177
  88. package/src/button/buttonview.js +219 -231
  89. package/src/button/switchbuttonview.d.ts +45 -45
  90. package/src/button/switchbuttonview.js +75 -75
  91. package/src/colorgrid/colorgridview.d.ts +132 -132
  92. package/src/colorgrid/colorgridview.js +124 -124
  93. package/src/colorgrid/colortileview.d.ts +28 -28
  94. package/src/colorgrid/colortileview.js +40 -40
  95. package/src/colorgrid/utils.d.ts +47 -47
  96. package/src/colorgrid/utils.js +84 -84
  97. package/src/colorpicker/colorpickerview.d.ts +137 -137
  98. package/src/colorpicker/colorpickerview.js +270 -270
  99. package/src/colorpicker/utils.d.ts +43 -43
  100. package/src/colorpicker/utils.js +99 -99
  101. package/src/colorselector/colorgridsfragmentview.d.ts +194 -194
  102. package/src/colorselector/colorgridsfragmentview.js +289 -289
  103. package/src/colorselector/colorpickerfragmentview.d.ts +128 -128
  104. package/src/colorselector/colorpickerfragmentview.js +205 -205
  105. package/src/colorselector/colorselectorview.d.ts +242 -242
  106. package/src/colorselector/colorselectorview.js +256 -256
  107. package/src/colorselector/documentcolorcollection.d.ts +70 -70
  108. package/src/colorselector/documentcolorcollection.js +42 -42
  109. package/src/componentfactory.d.ts +81 -81
  110. package/src/componentfactory.js +104 -104
  111. package/src/dropdown/button/dropdownbutton.d.ts +25 -25
  112. package/src/dropdown/button/dropdownbutton.js +5 -5
  113. package/src/dropdown/button/dropdownbuttonview.d.ts +48 -48
  114. package/src/dropdown/button/dropdownbuttonview.js +66 -66
  115. package/src/dropdown/button/splitbuttonview.d.ts +161 -161
  116. package/src/dropdown/button/splitbuttonview.js +152 -152
  117. package/src/dropdown/dropdownpanelfocusable.d.ts +21 -21
  118. package/src/dropdown/dropdownpanelfocusable.js +5 -5
  119. package/src/dropdown/dropdownpanelview.d.ts +62 -62
  120. package/src/dropdown/dropdownpanelview.js +97 -97
  121. package/src/dropdown/dropdownview.d.ts +315 -315
  122. package/src/dropdown/dropdownview.js +379 -378
  123. package/src/dropdown/utils.d.ts +235 -221
  124. package/src/dropdown/utils.js +458 -437
  125. package/src/editableui/editableuiview.d.ts +72 -72
  126. package/src/editableui/editableuiview.js +112 -112
  127. package/src/editableui/inline/inlineeditableuiview.d.ts +40 -40
  128. package/src/editableui/inline/inlineeditableuiview.js +48 -48
  129. package/src/editorui/bodycollection.d.ts +55 -55
  130. package/src/editorui/bodycollection.js +84 -84
  131. package/src/editorui/boxed/boxededitoruiview.d.ts +40 -40
  132. package/src/editorui/boxed/boxededitoruiview.js +81 -81
  133. package/src/editorui/editorui.d.ts +282 -282
  134. package/src/editorui/editorui.js +410 -410
  135. package/src/editorui/editoruiview.d.ts +39 -39
  136. package/src/editorui/editoruiview.js +38 -38
  137. package/src/editorui/poweredby.d.ts +71 -71
  138. package/src/editorui/poweredby.js +276 -299
  139. package/src/focuscycler.d.ts +226 -183
  140. package/src/focuscycler.js +245 -220
  141. package/src/formheader/formheaderview.d.ts +59 -53
  142. package/src/formheader/formheaderview.js +69 -63
  143. package/src/highlightedtext/highlightedtextview.d.ts +38 -0
  144. package/src/highlightedtext/highlightedtextview.js +102 -0
  145. package/src/icon/iconview.d.ts +85 -78
  146. package/src/icon/iconview.js +114 -112
  147. package/src/iframe/iframeview.d.ts +50 -50
  148. package/src/iframe/iframeview.js +63 -63
  149. package/src/index.d.ts +73 -63
  150. package/src/index.js +70 -62
  151. package/src/input/inputbase.d.ts +107 -0
  152. package/src/input/inputbase.js +110 -0
  153. package/src/input/inputview.d.ts +36 -121
  154. package/src/input/inputview.js +24 -106
  155. package/src/inputnumber/inputnumberview.d.ts +49 -49
  156. package/src/inputnumber/inputnumberview.js +40 -40
  157. package/src/inputtext/inputtextview.d.ts +18 -18
  158. package/src/inputtext/inputtextview.js +27 -27
  159. package/src/label/labelview.d.ts +36 -36
  160. package/src/label/labelview.js +41 -41
  161. package/src/labeledfield/labeledfieldview.d.ts +187 -182
  162. package/src/labeledfield/labeledfieldview.js +157 -157
  163. package/src/labeledfield/utils.d.ts +123 -93
  164. package/src/labeledfield/utils.js +176 -131
  165. package/src/labeledinput/labeledinputview.d.ts +125 -125
  166. package/src/labeledinput/labeledinputview.js +125 -125
  167. package/src/list/listitemgroupview.d.ts +51 -0
  168. package/src/list/listitemgroupview.js +75 -0
  169. package/src/list/listitemview.d.ts +36 -35
  170. package/src/list/listitemview.js +42 -40
  171. package/src/list/listseparatorview.d.ts +18 -18
  172. package/src/list/listseparatorview.js +28 -28
  173. package/src/list/listview.d.ts +122 -65
  174. package/src/list/listview.js +187 -90
  175. package/src/model.d.ts +22 -22
  176. package/src/model.js +31 -31
  177. package/src/notification/notification.d.ts +211 -211
  178. package/src/notification/notification.js +187 -187
  179. package/src/panel/balloon/balloonpanelview.d.ts +685 -685
  180. package/src/panel/balloon/balloonpanelview.js +1010 -988
  181. package/src/panel/balloon/contextualballoon.d.ts +299 -299
  182. package/src/panel/balloon/contextualballoon.js +572 -572
  183. package/src/panel/sticky/stickypanelview.d.ts +156 -158
  184. package/src/panel/sticky/stickypanelview.js +234 -231
  185. package/src/search/filteredview.d.ts +31 -0
  186. package/src/search/filteredview.js +5 -0
  187. package/src/search/searchinfoview.d.ts +45 -0
  188. package/src/search/searchinfoview.js +59 -0
  189. package/src/search/searchresultsview.d.ts +54 -0
  190. package/src/search/searchresultsview.js +65 -0
  191. package/src/search/text/searchtextqueryview.d.ts +76 -0
  192. package/src/search/text/searchtextqueryview.js +75 -0
  193. package/src/search/text/searchtextview.d.ts +219 -0
  194. package/src/search/text/searchtextview.js +201 -0
  195. package/src/spinner/spinnerview.d.ts +25 -0
  196. package/src/spinner/spinnerview.js +38 -0
  197. package/src/template.d.ts +942 -942
  198. package/src/template.js +1294 -1294
  199. package/src/textarea/textareaview.d.ts +88 -0
  200. package/src/textarea/textareaview.js +140 -0
  201. package/src/toolbar/balloon/balloontoolbar.d.ts +122 -122
  202. package/src/toolbar/balloon/balloontoolbar.js +300 -300
  203. package/src/toolbar/block/blockbuttonview.d.ts +35 -35
  204. package/src/toolbar/block/blockbuttonview.js +41 -41
  205. package/src/toolbar/block/blocktoolbar.d.ts +161 -161
  206. package/src/toolbar/block/blocktoolbar.js +395 -391
  207. package/src/toolbar/normalizetoolbarconfig.d.ts +40 -39
  208. package/src/toolbar/normalizetoolbarconfig.js +51 -51
  209. package/src/toolbar/toolbarlinebreakview.d.ts +18 -18
  210. package/src/toolbar/toolbarlinebreakview.js +28 -28
  211. package/src/toolbar/toolbarseparatorview.d.ts +18 -18
  212. package/src/toolbar/toolbarseparatorview.js +28 -28
  213. package/src/toolbar/toolbarview.d.ts +266 -265
  214. package/src/toolbar/toolbarview.js +719 -717
  215. package/src/tooltipmanager.d.ts +180 -180
  216. package/src/tooltipmanager.js +353 -353
  217. package/src/view.d.ts +422 -422
  218. package/src/view.js +396 -396
  219. package/src/viewcollection.d.ts +139 -139
  220. package/src/viewcollection.js +206 -206
  221. package/theme/components/autocomplete/autocomplete.css +22 -0
  222. package/theme/components/formheader/formheader.css +8 -0
  223. package/theme/components/highlightedtext/highlightedtext.css +12 -0
  224. package/theme/components/search/search.css +43 -0
  225. package/theme/components/spinner/spinner.css +23 -0
  226. 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
+ }