@ckeditor/ckeditor5-ui 40.0.0 → 40.2.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 (171) hide show
  1. package/CHANGELOG.md +26 -26
  2. package/LICENSE.md +3 -3
  3. package/lang/translations/gl.po +4 -4
  4. package/lang/translations/pt-br.po +1 -1
  5. package/lang/translations/sr-latn.po +6 -6
  6. package/lang/translations/ug.po +26 -26
  7. package/package.json +3 -3
  8. package/src/arialiveannouncer.d.ts +94 -0
  9. package/src/arialiveannouncer.js +113 -0
  10. package/src/augmentation.d.ts +86 -86
  11. package/src/augmentation.js +5 -5
  12. package/src/autocomplete/autocompleteview.d.ts +81 -81
  13. package/src/autocomplete/autocompleteview.js +153 -146
  14. package/src/bindings/addkeyboardhandlingforgrid.d.ts +27 -27
  15. package/src/bindings/addkeyboardhandlingforgrid.js +107 -107
  16. package/src/bindings/clickoutsidehandler.d.ts +28 -28
  17. package/src/bindings/clickoutsidehandler.js +36 -36
  18. package/src/bindings/csstransitiondisablermixin.d.ts +40 -40
  19. package/src/bindings/csstransitiondisablermixin.js +55 -55
  20. package/src/bindings/injectcsstransitiondisabler.d.ts +59 -59
  21. package/src/bindings/injectcsstransitiondisabler.js +71 -71
  22. package/src/bindings/preventdefault.d.ts +33 -33
  23. package/src/bindings/preventdefault.js +34 -34
  24. package/src/bindings/submithandler.d.ts +57 -57
  25. package/src/bindings/submithandler.js +47 -47
  26. package/src/button/button.d.ts +172 -178
  27. package/src/button/button.js +5 -5
  28. package/src/button/buttonlabel.d.ts +34 -34
  29. package/src/button/buttonlabel.js +5 -5
  30. package/src/button/buttonlabelview.d.ts +31 -31
  31. package/src/button/buttonlabelview.js +42 -42
  32. package/src/button/buttonview.d.ts +181 -185
  33. package/src/button/buttonview.js +217 -219
  34. package/src/button/switchbuttonview.d.ts +45 -45
  35. package/src/button/switchbuttonview.js +75 -75
  36. package/src/collapsible/collapsibleview.d.ts +69 -0
  37. package/src/collapsible/collapsibleview.js +95 -0
  38. package/src/colorgrid/colorgridview.d.ts +132 -132
  39. package/src/colorgrid/colorgridview.js +124 -124
  40. package/src/colorgrid/colortileview.d.ts +28 -28
  41. package/src/colorgrid/colortileview.js +40 -40
  42. package/src/colorgrid/utils.d.ts +47 -47
  43. package/src/colorgrid/utils.js +84 -84
  44. package/src/colorpicker/colorpickerview.d.ts +137 -137
  45. package/src/colorpicker/colorpickerview.js +270 -270
  46. package/src/colorpicker/utils.d.ts +43 -43
  47. package/src/colorpicker/utils.js +99 -99
  48. package/src/colorselector/colorgridsfragmentview.d.ts +194 -194
  49. package/src/colorselector/colorgridsfragmentview.js +289 -289
  50. package/src/colorselector/colorpickerfragmentview.d.ts +128 -128
  51. package/src/colorselector/colorpickerfragmentview.js +205 -205
  52. package/src/colorselector/colorselectorview.d.ts +242 -242
  53. package/src/colorselector/colorselectorview.js +256 -256
  54. package/src/colorselector/documentcolorcollection.d.ts +70 -70
  55. package/src/colorselector/documentcolorcollection.js +42 -42
  56. package/src/componentfactory.d.ts +81 -81
  57. package/src/componentfactory.js +104 -104
  58. package/src/dropdown/button/dropdownbutton.d.ts +25 -25
  59. package/src/dropdown/button/dropdownbutton.js +5 -5
  60. package/src/dropdown/button/dropdownbuttonview.d.ts +48 -48
  61. package/src/dropdown/button/dropdownbuttonview.js +66 -66
  62. package/src/dropdown/button/splitbuttonview.d.ts +162 -161
  63. package/src/dropdown/button/splitbuttonview.js +154 -152
  64. package/src/dropdown/dropdownpanelfocusable.d.ts +21 -21
  65. package/src/dropdown/dropdownpanelfocusable.js +5 -5
  66. package/src/dropdown/dropdownpanelview.d.ts +62 -62
  67. package/src/dropdown/dropdownpanelview.js +97 -97
  68. package/src/dropdown/dropdownview.d.ts +315 -315
  69. package/src/dropdown/dropdownview.js +379 -379
  70. package/src/dropdown/utils.d.ts +235 -235
  71. package/src/dropdown/utils.js +463 -458
  72. package/src/editableui/editableuiview.d.ts +72 -72
  73. package/src/editableui/editableuiview.js +112 -112
  74. package/src/editableui/inline/inlineeditableuiview.d.ts +40 -40
  75. package/src/editableui/inline/inlineeditableuiview.js +48 -48
  76. package/src/editorui/bodycollection.d.ts +55 -55
  77. package/src/editorui/bodycollection.js +84 -84
  78. package/src/editorui/boxed/boxededitoruiview.d.ts +40 -40
  79. package/src/editorui/boxed/boxededitoruiview.js +81 -81
  80. package/src/editorui/editorui.d.ts +288 -282
  81. package/src/editorui/editorui.js +412 -410
  82. package/src/editorui/editoruiview.d.ts +39 -39
  83. package/src/editorui/editoruiview.js +38 -38
  84. package/src/editorui/poweredby.d.ts +71 -71
  85. package/src/editorui/poweredby.js +276 -276
  86. package/src/focuscycler.d.ts +226 -226
  87. package/src/focuscycler.js +245 -245
  88. package/src/formheader/formheaderview.d.ts +59 -59
  89. package/src/formheader/formheaderview.js +69 -69
  90. package/src/highlightedtext/highlightedtextview.d.ts +38 -38
  91. package/src/highlightedtext/highlightedtextview.js +102 -102
  92. package/src/icon/iconview.d.ts +85 -85
  93. package/src/icon/iconview.js +114 -114
  94. package/src/iframe/iframeview.d.ts +50 -50
  95. package/src/iframe/iframeview.js +63 -63
  96. package/src/index.d.ts +74 -73
  97. package/src/index.js +71 -70
  98. package/src/input/inputbase.d.ts +107 -107
  99. package/src/input/inputbase.js +110 -110
  100. package/src/input/inputview.d.ts +36 -36
  101. package/src/input/inputview.js +24 -24
  102. package/src/inputnumber/inputnumberview.d.ts +49 -49
  103. package/src/inputnumber/inputnumberview.js +40 -40
  104. package/src/inputtext/inputtextview.d.ts +18 -18
  105. package/src/inputtext/inputtextview.js +27 -27
  106. package/src/label/labelview.d.ts +36 -36
  107. package/src/label/labelview.js +41 -41
  108. package/src/labeledfield/labeledfieldview.d.ts +187 -187
  109. package/src/labeledfield/labeledfieldview.js +157 -157
  110. package/src/labeledfield/utils.d.ts +123 -123
  111. package/src/labeledfield/utils.js +176 -176
  112. package/src/labeledinput/labeledinputview.d.ts +125 -125
  113. package/src/labeledinput/labeledinputview.js +125 -125
  114. package/src/list/listitemgroupview.d.ts +59 -51
  115. package/src/list/listitemgroupview.js +67 -75
  116. package/src/list/listitemview.d.ts +36 -36
  117. package/src/list/listitemview.js +42 -42
  118. package/src/list/listseparatorview.d.ts +18 -18
  119. package/src/list/listseparatorview.js +28 -28
  120. package/src/list/listview.d.ts +123 -122
  121. package/src/list/listview.js +188 -187
  122. package/src/model.d.ts +22 -22
  123. package/src/model.js +31 -31
  124. package/src/notification/notification.d.ts +211 -211
  125. package/src/notification/notification.js +187 -187
  126. package/src/panel/balloon/balloonpanelview.d.ts +685 -685
  127. package/src/panel/balloon/balloonpanelview.js +1010 -1010
  128. package/src/panel/balloon/contextualballoon.d.ts +299 -299
  129. package/src/panel/balloon/contextualballoon.js +572 -572
  130. package/src/panel/sticky/stickypanelview.d.ts +156 -156
  131. package/src/panel/sticky/stickypanelview.js +234 -234
  132. package/src/search/filteredview.d.ts +31 -31
  133. package/src/search/filteredview.js +5 -5
  134. package/src/search/searchinfoview.d.ts +45 -45
  135. package/src/search/searchinfoview.js +59 -59
  136. package/src/search/searchresultsview.d.ts +54 -54
  137. package/src/search/searchresultsview.js +65 -65
  138. package/src/search/text/searchtextqueryview.d.ts +76 -76
  139. package/src/search/text/searchtextqueryview.js +75 -75
  140. package/src/search/text/searchtextview.d.ts +219 -219
  141. package/src/search/text/searchtextview.js +201 -201
  142. package/src/spinner/spinnerview.d.ts +25 -25
  143. package/src/spinner/spinnerview.js +38 -38
  144. package/src/template.d.ts +942 -942
  145. package/src/template.js +1294 -1294
  146. package/src/textarea/textareaview.d.ts +88 -88
  147. package/src/textarea/textareaview.js +142 -140
  148. package/src/toolbar/balloon/balloontoolbar.d.ts +122 -122
  149. package/src/toolbar/balloon/balloontoolbar.js +300 -300
  150. package/src/toolbar/block/blockbuttonview.d.ts +35 -35
  151. package/src/toolbar/block/blockbuttonview.js +41 -41
  152. package/src/toolbar/block/blocktoolbar.d.ts +161 -161
  153. package/src/toolbar/block/blocktoolbar.js +395 -395
  154. package/src/toolbar/normalizetoolbarconfig.d.ts +40 -40
  155. package/src/toolbar/normalizetoolbarconfig.js +52 -51
  156. package/src/toolbar/toolbarlinebreakview.d.ts +18 -18
  157. package/src/toolbar/toolbarlinebreakview.js +28 -28
  158. package/src/toolbar/toolbarseparatorview.d.ts +18 -18
  159. package/src/toolbar/toolbarseparatorview.js +28 -28
  160. package/src/toolbar/toolbarview.d.ts +266 -266
  161. package/src/toolbar/toolbarview.js +719 -719
  162. package/src/tooltipmanager.d.ts +180 -180
  163. package/src/tooltipmanager.js +353 -353
  164. package/src/view.d.ts +422 -422
  165. package/src/view.js +396 -396
  166. package/src/viewcollection.d.ts +139 -139
  167. package/src/viewcollection.js +206 -206
  168. package/theme/components/arialiveannouncer/arialiveannouncer.css +10 -0
  169. package/theme/components/button/button.css +9 -1
  170. package/theme/components/collapsible/collapsible.css +10 -0
  171. package/theme/components/formheader/formheader.css +0 -4
@@ -1,125 +1,125 @@
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/labeledinput/labeledinputview
7
- */
8
- import View from '../view';
9
- import LabelView from '../label/labelview';
10
- import { uid } from '@ckeditor/ckeditor5-utils';
11
- import '../../theme/components/labeledinput/labeledinput.css';
12
- /**
13
- * The labeled input view class.
14
- */
15
- export default class LabeledInputView extends View {
16
- /**
17
- * Creates an instance of the labeled input view class.
18
- *
19
- * @param locale The locale instance.
20
- * @param InputView Constructor of the input view.
21
- */
22
- constructor(locale, InputView) {
23
- super(locale);
24
- const inputUid = `ck-input-${uid()}`;
25
- const statusUid = `ck-status-${uid()}`;
26
- this.set('label', undefined);
27
- this.set('value', undefined);
28
- this.set('isReadOnly', false);
29
- this.set('errorText', null);
30
- this.set('infoText', null);
31
- this.labelView = this._createLabelView(inputUid);
32
- this.inputView = this._createInputView(InputView, inputUid, statusUid);
33
- this.statusView = this._createStatusView(statusUid);
34
- this.bind('_statusText').to(this, 'errorText', this, 'infoText', (errorText, infoText) => errorText || infoText);
35
- const bind = this.bindTemplate;
36
- this.setTemplate({
37
- tag: 'div',
38
- attributes: {
39
- class: [
40
- 'ck',
41
- 'ck-labeled-input',
42
- bind.if('isReadOnly', 'ck-disabled')
43
- ]
44
- },
45
- children: [
46
- this.labelView,
47
- this.inputView,
48
- this.statusView
49
- ]
50
- });
51
- }
52
- /**
53
- * Creates label view class instance and bind with view.
54
- *
55
- * @param id Unique id to set as labelView#for attribute.
56
- */
57
- _createLabelView(id) {
58
- const labelView = new LabelView(this.locale);
59
- labelView.for = id;
60
- labelView.bind('text').to(this, 'label');
61
- return labelView;
62
- }
63
- /**
64
- * Creates input view class instance and bind with view.
65
- *
66
- * @param InputView Input view constructor.
67
- * @param inputUid Unique id to set as inputView#id attribute.
68
- * @param statusUid Unique id of the status for the input's `aria-describedby` attribute.
69
- */
70
- _createInputView(InputView, inputUid, statusUid) {
71
- const inputView = new InputView(this.locale, statusUid);
72
- inputView.id = inputUid;
73
- inputView.ariaDescribedById = statusUid;
74
- inputView.bind('value').to(this);
75
- inputView.bind('isReadOnly').to(this);
76
- inputView.bind('hasError').to(this, 'errorText', value => !!value);
77
- inputView.on('input', () => {
78
- // UX: Make the error text disappear and disable the error indicator as the user
79
- // starts fixing the errors.
80
- this.errorText = null;
81
- });
82
- return inputView;
83
- }
84
- /**
85
- * Creates the status view instance. It displays {@link #errorText} and {@link #infoText}
86
- * next to the {@link #inputView}. See {@link #_statusText}.
87
- *
88
- * @param statusUid Unique id of the status, shared with the input's `aria-describedby` attribute.
89
- */
90
- _createStatusView(statusUid) {
91
- const statusView = new View(this.locale);
92
- const bind = this.bindTemplate;
93
- statusView.setTemplate({
94
- tag: 'div',
95
- attributes: {
96
- class: [
97
- 'ck',
98
- 'ck-labeled-input__status',
99
- bind.if('errorText', 'ck-labeled-input__status_error'),
100
- bind.if('_statusText', 'ck-hidden', value => !value)
101
- ],
102
- id: statusUid,
103
- role: bind.if('errorText', 'alert')
104
- },
105
- children: [
106
- {
107
- text: bind.to('_statusText')
108
- }
109
- ]
110
- });
111
- return statusView;
112
- }
113
- /**
114
- * Moves the focus to the input and selects the value.
115
- */
116
- select() {
117
- this.inputView.select();
118
- }
119
- /**
120
- * Focuses the input.
121
- */
122
- focus() {
123
- this.inputView.focus();
124
- }
125
- }
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/labeledinput/labeledinputview
7
+ */
8
+ import View from '../view';
9
+ import LabelView from '../label/labelview';
10
+ import { uid } from '@ckeditor/ckeditor5-utils';
11
+ import '../../theme/components/labeledinput/labeledinput.css';
12
+ /**
13
+ * The labeled input view class.
14
+ */
15
+ export default class LabeledInputView extends View {
16
+ /**
17
+ * Creates an instance of the labeled input view class.
18
+ *
19
+ * @param locale The locale instance.
20
+ * @param InputView Constructor of the input view.
21
+ */
22
+ constructor(locale, InputView) {
23
+ super(locale);
24
+ const inputUid = `ck-input-${uid()}`;
25
+ const statusUid = `ck-status-${uid()}`;
26
+ this.set('label', undefined);
27
+ this.set('value', undefined);
28
+ this.set('isReadOnly', false);
29
+ this.set('errorText', null);
30
+ this.set('infoText', null);
31
+ this.labelView = this._createLabelView(inputUid);
32
+ this.inputView = this._createInputView(InputView, inputUid, statusUid);
33
+ this.statusView = this._createStatusView(statusUid);
34
+ this.bind('_statusText').to(this, 'errorText', this, 'infoText', (errorText, infoText) => errorText || infoText);
35
+ const bind = this.bindTemplate;
36
+ this.setTemplate({
37
+ tag: 'div',
38
+ attributes: {
39
+ class: [
40
+ 'ck',
41
+ 'ck-labeled-input',
42
+ bind.if('isReadOnly', 'ck-disabled')
43
+ ]
44
+ },
45
+ children: [
46
+ this.labelView,
47
+ this.inputView,
48
+ this.statusView
49
+ ]
50
+ });
51
+ }
52
+ /**
53
+ * Creates label view class instance and bind with view.
54
+ *
55
+ * @param id Unique id to set as labelView#for attribute.
56
+ */
57
+ _createLabelView(id) {
58
+ const labelView = new LabelView(this.locale);
59
+ labelView.for = id;
60
+ labelView.bind('text').to(this, 'label');
61
+ return labelView;
62
+ }
63
+ /**
64
+ * Creates input view class instance and bind with view.
65
+ *
66
+ * @param InputView Input view constructor.
67
+ * @param inputUid Unique id to set as inputView#id attribute.
68
+ * @param statusUid Unique id of the status for the input's `aria-describedby` attribute.
69
+ */
70
+ _createInputView(InputView, inputUid, statusUid) {
71
+ const inputView = new InputView(this.locale, statusUid);
72
+ inputView.id = inputUid;
73
+ inputView.ariaDescribedById = statusUid;
74
+ inputView.bind('value').to(this);
75
+ inputView.bind('isReadOnly').to(this);
76
+ inputView.bind('hasError').to(this, 'errorText', value => !!value);
77
+ inputView.on('input', () => {
78
+ // UX: Make the error text disappear and disable the error indicator as the user
79
+ // starts fixing the errors.
80
+ this.errorText = null;
81
+ });
82
+ return inputView;
83
+ }
84
+ /**
85
+ * Creates the status view instance. It displays {@link #errorText} and {@link #infoText}
86
+ * next to the {@link #inputView}. See {@link #_statusText}.
87
+ *
88
+ * @param statusUid Unique id of the status, shared with the input's `aria-describedby` attribute.
89
+ */
90
+ _createStatusView(statusUid) {
91
+ const statusView = new View(this.locale);
92
+ const bind = this.bindTemplate;
93
+ statusView.setTemplate({
94
+ tag: 'div',
95
+ attributes: {
96
+ class: [
97
+ 'ck',
98
+ 'ck-labeled-input__status',
99
+ bind.if('errorText', 'ck-labeled-input__status_error'),
100
+ bind.if('_statusText', 'ck-hidden', value => !value)
101
+ ],
102
+ id: statusUid,
103
+ role: bind.if('errorText', 'alert')
104
+ },
105
+ children: [
106
+ {
107
+ text: bind.to('_statusText')
108
+ }
109
+ ]
110
+ });
111
+ return statusView;
112
+ }
113
+ /**
114
+ * Moves the focus to the input and selects the value.
115
+ */
116
+ select() {
117
+ this.inputView.select();
118
+ }
119
+ /**
120
+ * Focuses the input.
121
+ */
122
+ focus() {
123
+ this.inputView.focus();
124
+ }
125
+ }
@@ -1,51 +1,59 @@
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/list/listitemgroupview
7
- */
8
- import View from '../view';
9
- import type ViewCollection from '../viewcollection';
10
- import ListView from './listview';
11
- import { type Locale } from '@ckeditor/ckeditor5-utils';
12
- /**
13
- * The list item group view class.
14
- */
15
- export default class ListItemGroupView extends View {
16
- /**
17
- * The visible label of the group.
18
- *
19
- * @observable
20
- * @default ''
21
- */
22
- label: string;
23
- /**
24
- * Collection of the child list items inside this group.
25
- */
26
- readonly items: ListView['items'];
27
- /**
28
- * Collection of the child elements of the group.
29
- */
30
- readonly children: ViewCollection;
31
- /**
32
- * Controls whether the item view is visible. Visible by default, list items are hidden
33
- * using a CSS class.
34
- *
35
- * @observable
36
- * @default true
37
- */
38
- isVisible: boolean;
39
- /**
40
- * @inheritDoc
41
- */
42
- constructor(locale?: Locale);
43
- /**
44
- * Creates a label for the group.
45
- */
46
- private _createLabel;
47
- /**
48
- * Focuses the list item.
49
- */
50
- focus(): void;
51
- }
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/list/listitemgroupview
7
+ */
8
+ import View from '../view';
9
+ import type ViewCollection from '../viewcollection';
10
+ import ListView from './listview';
11
+ import LabelView from '../label/labelview';
12
+ import { type Locale } from '@ckeditor/ckeditor5-utils';
13
+ /**
14
+ * The list item group view class.
15
+ */
16
+ export default class ListItemGroupView extends View {
17
+ /**
18
+ * The visible label of the group.
19
+ *
20
+ * @observable
21
+ * @default ''
22
+ */
23
+ label: string;
24
+ /**
25
+ * Label of the group view. Its text is configurable using the {@link #label label attribute}.
26
+ *
27
+ * If a custom label view is not passed in `ListItemGroupView` constructor, the label is an instance
28
+ * of {@link module:ui/label/labelview~LabelView}.
29
+ */
30
+ readonly labelView: LabelView;
31
+ /**
32
+ * Collection of the child list items inside this group.
33
+ */
34
+ readonly items: ListView['items'];
35
+ /**
36
+ * Collection of the child elements of the group.
37
+ */
38
+ readonly children: ViewCollection;
39
+ /**
40
+ * Controls whether the item view is visible. Visible by default, list items are hidden
41
+ * using a CSS class.
42
+ *
43
+ * @observable
44
+ * @default true
45
+ */
46
+ isVisible: boolean;
47
+ /**
48
+ * Creates an instance of the list item group view class.
49
+ *
50
+ * @param locale The {@link module:core/editor/editor~Editor#locale} instance.
51
+ * @param labelView The instance of the group's label. If not provided, an instance of
52
+ * {@link module:ui/label/labelview~LabelView} is used.
53
+ */
54
+ constructor(locale?: Locale, labelView?: LabelView);
55
+ /**
56
+ * Focuses the list item (which is not a separator).
57
+ */
58
+ focus(): void;
59
+ }
@@ -1,75 +1,67 @@
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/list/listitemgroupview
7
- */
8
- import View from '../view';
9
- import ListView from './listview';
10
- import { uid } from '@ckeditor/ckeditor5-utils';
11
- /**
12
- * The list item group view class.
13
- */
14
- export default class ListItemGroupView extends View {
15
- /**
16
- * @inheritDoc
17
- */
18
- constructor(locale) {
19
- super(locale);
20
- const bind = this.bindTemplate;
21
- const groupLabelId = `ck-editor__label_${uid()}`;
22
- const nestedList = new ListView(locale);
23
- this.children = this.createCollection();
24
- this.children.addMany([this._createLabel(groupLabelId), nestedList]);
25
- this.set({
26
- label: '',
27
- isVisible: true
28
- });
29
- nestedList.set({
30
- role: 'group',
31
- ariaLabelledBy: groupLabelId
32
- });
33
- // Disable focus tracking and accessible navigation in the child list.
34
- nestedList.focusTracker.destroy();
35
- nestedList.keystrokes.destroy();
36
- this.items = nestedList.items;
37
- this.setTemplate({
38
- tag: 'li',
39
- attributes: {
40
- role: 'presentation',
41
- class: [
42
- 'ck',
43
- 'ck-list__group',
44
- bind.if('isVisible', 'ck-hidden', value => !value)
45
- ]
46
- },
47
- children: this.children
48
- });
49
- }
50
- /**
51
- * Creates a label for the group.
52
- */
53
- _createLabel(groupLabelId) {
54
- const labelView = new View(this.locale);
55
- const bind = this.bindTemplate;
56
- labelView.setTemplate({
57
- tag: 'span',
58
- attributes: {
59
- id: groupLabelId
60
- },
61
- children: [
62
- { text: bind.to('label') }
63
- ]
64
- });
65
- return labelView;
66
- }
67
- /**
68
- * Focuses the list item.
69
- */
70
- focus() {
71
- if (this.items.first) {
72
- this.items.first.focus();
73
- }
74
- }
75
- }
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/list/listitemgroupview
7
+ */
8
+ import View from '../view';
9
+ import ListView from './listview';
10
+ import LabelView from '../label/labelview';
11
+ import ListSeparatorView from './listseparatorview';
12
+ /**
13
+ * The list item group view class.
14
+ */
15
+ export default class ListItemGroupView extends View {
16
+ /**
17
+ * Creates an instance of the list item group view class.
18
+ *
19
+ * @param locale The {@link module:core/editor/editor~Editor#locale} instance.
20
+ * @param labelView The instance of the group's label. If not provided, an instance of
21
+ * {@link module:ui/label/labelview~LabelView} is used.
22
+ */
23
+ constructor(locale, labelView = new LabelView()) {
24
+ super(locale);
25
+ const bind = this.bindTemplate;
26
+ const nestedList = new ListView(locale);
27
+ this.set({
28
+ label: '',
29
+ isVisible: true
30
+ });
31
+ this.labelView = labelView;
32
+ this.labelView.bind('text').to(this, 'label');
33
+ this.children = this.createCollection();
34
+ this.children.addMany([this.labelView, nestedList]);
35
+ nestedList.set({
36
+ role: 'group',
37
+ ariaLabelledBy: labelView.id
38
+ });
39
+ // Disable focus tracking and accessible navigation in the child list.
40
+ nestedList.focusTracker.destroy();
41
+ nestedList.keystrokes.destroy();
42
+ this.items = nestedList.items;
43
+ this.setTemplate({
44
+ tag: 'li',
45
+ attributes: {
46
+ role: 'presentation',
47
+ class: [
48
+ 'ck',
49
+ 'ck-list__group',
50
+ bind.if('isVisible', 'ck-hidden', value => !value)
51
+ ]
52
+ },
53
+ children: this.children
54
+ });
55
+ }
56
+ /**
57
+ * Focuses the list item (which is not a separator).
58
+ */
59
+ focus() {
60
+ if (this.items) {
61
+ const firstListItem = this.items.find(item => !(item instanceof ListSeparatorView));
62
+ if (firstListItem) {
63
+ firstListItem.focus();
64
+ }
65
+ }
66
+ }
67
+ }
@@ -1,36 +1,36 @@
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/list/listitemview
7
- */
8
- import View from '../view';
9
- import type { FocusableView } from '../focuscycler';
10
- import type ViewCollection from '../viewcollection';
11
- import type { Locale } from '@ckeditor/ckeditor5-utils';
12
- /**
13
- * The list item view class.
14
- */
15
- export default class ListItemView extends View {
16
- /**
17
- * Collection of the child views inside of the list item {@link #element}.
18
- */
19
- readonly children: ViewCollection<FocusableView>;
20
- /**
21
- * Controls whether the item view is visible. Visible by default, list items are hidden
22
- * using a CSS class.
23
- *
24
- * @observable
25
- * @default true
26
- */
27
- isVisible: boolean;
28
- /**
29
- * @inheritDoc
30
- */
31
- constructor(locale?: Locale);
32
- /**
33
- * Focuses the list item.
34
- */
35
- focus(): void;
36
- }
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/list/listitemview
7
+ */
8
+ import View from '../view';
9
+ import type { FocusableView } from '../focuscycler';
10
+ import type ViewCollection from '../viewcollection';
11
+ import type { Locale } from '@ckeditor/ckeditor5-utils';
12
+ /**
13
+ * The list item view class.
14
+ */
15
+ export default class ListItemView extends View {
16
+ /**
17
+ * Collection of the child views inside of the list item {@link #element}.
18
+ */
19
+ readonly children: ViewCollection<FocusableView>;
20
+ /**
21
+ * Controls whether the item view is visible. Visible by default, list items are hidden
22
+ * using a CSS class.
23
+ *
24
+ * @observable
25
+ * @default true
26
+ */
27
+ isVisible: boolean;
28
+ /**
29
+ * @inheritDoc
30
+ */
31
+ constructor(locale?: Locale);
32
+ /**
33
+ * Focuses the list item.
34
+ */
35
+ focus(): void;
36
+ }
@@ -1,42 +1,42 @@
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/list/listitemview
7
- */
8
- import View from '../view';
9
- /**
10
- * The list item view class.
11
- */
12
- export default class ListItemView extends View {
13
- /**
14
- * @inheritDoc
15
- */
16
- constructor(locale) {
17
- super(locale);
18
- const bind = this.bindTemplate;
19
- this.set('isVisible', true);
20
- this.children = this.createCollection();
21
- this.setTemplate({
22
- tag: 'li',
23
- attributes: {
24
- class: [
25
- 'ck',
26
- 'ck-list__item',
27
- bind.if('isVisible', 'ck-hidden', value => !value)
28
- ],
29
- role: 'presentation'
30
- },
31
- children: this.children
32
- });
33
- }
34
- /**
35
- * Focuses the list item.
36
- */
37
- focus() {
38
- if (this.children.first) {
39
- this.children.first.focus();
40
- }
41
- }
42
- }
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/list/listitemview
7
+ */
8
+ import View from '../view';
9
+ /**
10
+ * The list item view class.
11
+ */
12
+ export default class ListItemView extends View {
13
+ /**
14
+ * @inheritDoc
15
+ */
16
+ constructor(locale) {
17
+ super(locale);
18
+ const bind = this.bindTemplate;
19
+ this.set('isVisible', true);
20
+ this.children = this.createCollection();
21
+ this.setTemplate({
22
+ tag: 'li',
23
+ attributes: {
24
+ class: [
25
+ 'ck',
26
+ 'ck-list__item',
27
+ bind.if('isVisible', 'ck-hidden', value => !value)
28
+ ],
29
+ role: 'presentation'
30
+ },
31
+ children: this.children
32
+ });
33
+ }
34
+ /**
35
+ * Focuses the list item.
36
+ */
37
+ focus() {
38
+ if (this.children.first) {
39
+ this.children.first.focus();
40
+ }
41
+ }
42
+ }