@ckeditor/ckeditor5-table 47.2.0 → 47.3.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +4 -4
- package/build/table.js +2 -2
- package/build/translations/af.js +1 -1
- package/build/translations/ar.js +1 -1
- package/build/translations/ast.js +1 -1
- package/build/translations/az.js +1 -1
- package/build/translations/be.js +1 -1
- package/build/translations/bg.js +1 -1
- package/build/translations/bn.js +1 -1
- package/build/translations/bs.js +1 -1
- package/build/translations/ca.js +1 -1
- package/build/translations/cs.js +1 -1
- package/build/translations/da.js +1 -1
- package/build/translations/de-ch.js +1 -1
- package/build/translations/de.js +1 -1
- package/build/translations/el.js +1 -1
- package/build/translations/en-au.js +1 -1
- package/build/translations/en-gb.js +1 -1
- package/build/translations/eo.js +1 -1
- package/build/translations/es-co.js +1 -1
- package/build/translations/es.js +1 -1
- package/build/translations/et.js +1 -1
- package/build/translations/eu.js +1 -1
- package/build/translations/fa.js +1 -1
- package/build/translations/fi.js +1 -1
- package/build/translations/fr.js +1 -1
- package/build/translations/gl.js +1 -1
- package/build/translations/gu.js +1 -1
- package/build/translations/he.js +1 -1
- package/build/translations/hi.js +1 -1
- package/build/translations/hr.js +1 -1
- package/build/translations/hu.js +1 -1
- package/build/translations/hy.js +1 -1
- package/build/translations/id.js +1 -1
- package/build/translations/it.js +1 -1
- package/build/translations/ja.js +1 -1
- package/build/translations/jv.js +1 -1
- package/build/translations/kk.js +1 -1
- package/build/translations/km.js +1 -1
- package/build/translations/kn.js +1 -1
- package/build/translations/ko.js +1 -1
- package/build/translations/ku.js +1 -1
- package/build/translations/lt.js +1 -1
- package/build/translations/lv.js +1 -1
- package/build/translations/ms.js +1 -1
- package/build/translations/nb.js +1 -1
- package/build/translations/ne.js +1 -1
- package/build/translations/nl.js +1 -1
- package/build/translations/no.js +1 -1
- package/build/translations/oc.js +1 -1
- package/build/translations/pl.js +1 -1
- package/build/translations/pt-br.js +1 -1
- package/build/translations/pt.js +1 -1
- package/build/translations/ro.js +1 -1
- package/build/translations/ru.js +1 -1
- package/build/translations/si.js +1 -1
- package/build/translations/sk.js +1 -1
- package/build/translations/sl.js +1 -1
- package/build/translations/sq.js +1 -1
- package/build/translations/sr-latn.js +1 -1
- package/build/translations/sr.js +1 -1
- package/build/translations/sv.js +1 -1
- package/build/translations/th.js +1 -1
- package/build/translations/ti.js +1 -1
- package/build/translations/tk.js +1 -1
- package/build/translations/tr.js +1 -1
- package/build/translations/tt.js +1 -1
- package/build/translations/ug.js +1 -1
- package/build/translations/uk.js +1 -1
- package/build/translations/ur.js +1 -1
- package/build/translations/uz.js +1 -1
- package/build/translations/vi.js +1 -1
- package/build/translations/zh-cn.js +1 -1
- package/build/translations/zh.js +1 -1
- package/dist/index-content.css +32 -3
- package/dist/index-editor.css +189 -88
- package/dist/index.css +310 -160
- package/dist/index.css.map +1 -1
- package/dist/index.js +11215 -8546
- package/dist/index.js.map +1 -1
- package/dist/translations/af.js +1 -1
- package/dist/translations/af.umd.js +1 -1
- package/dist/translations/ar.js +1 -1
- package/dist/translations/ar.umd.js +1 -1
- package/dist/translations/ast.js +1 -1
- package/dist/translations/ast.umd.js +1 -1
- package/dist/translations/az.js +1 -1
- package/dist/translations/az.umd.js +1 -1
- package/dist/translations/be.js +1 -1
- package/dist/translations/be.umd.js +1 -1
- package/dist/translations/bg.js +1 -1
- package/dist/translations/bg.umd.js +1 -1
- package/dist/translations/bn.js +1 -1
- package/dist/translations/bn.umd.js +1 -1
- package/dist/translations/bs.js +1 -1
- package/dist/translations/bs.umd.js +1 -1
- package/dist/translations/ca.js +1 -1
- package/dist/translations/ca.umd.js +1 -1
- package/dist/translations/cs.js +1 -1
- package/dist/translations/cs.umd.js +1 -1
- package/dist/translations/da.js +1 -1
- package/dist/translations/da.umd.js +1 -1
- package/dist/translations/de-ch.js +1 -1
- package/dist/translations/de-ch.umd.js +1 -1
- package/dist/translations/de.js +1 -1
- package/dist/translations/de.umd.js +1 -1
- package/dist/translations/el.js +1 -1
- package/dist/translations/el.umd.js +1 -1
- package/dist/translations/en-au.js +1 -1
- package/dist/translations/en-au.umd.js +1 -1
- package/dist/translations/en-gb.js +1 -1
- package/dist/translations/en-gb.umd.js +1 -1
- package/dist/translations/en.js +1 -1
- package/dist/translations/en.umd.js +1 -1
- package/dist/translations/eo.js +1 -1
- package/dist/translations/eo.umd.js +1 -1
- package/dist/translations/es-co.js +1 -1
- package/dist/translations/es-co.umd.js +1 -1
- package/dist/translations/es.js +1 -1
- package/dist/translations/es.umd.js +1 -1
- package/dist/translations/et.js +1 -1
- package/dist/translations/et.umd.js +1 -1
- package/dist/translations/eu.js +1 -1
- package/dist/translations/eu.umd.js +1 -1
- package/dist/translations/fa.js +1 -1
- package/dist/translations/fa.umd.js +1 -1
- package/dist/translations/fi.js +1 -1
- package/dist/translations/fi.umd.js +1 -1
- package/dist/translations/fr.js +1 -1
- package/dist/translations/fr.umd.js +1 -1
- package/dist/translations/gl.js +1 -1
- package/dist/translations/gl.umd.js +1 -1
- package/dist/translations/gu.js +1 -1
- package/dist/translations/gu.umd.js +1 -1
- package/dist/translations/he.js +1 -1
- package/dist/translations/he.umd.js +1 -1
- package/dist/translations/hi.js +1 -1
- package/dist/translations/hi.umd.js +1 -1
- package/dist/translations/hr.js +1 -1
- package/dist/translations/hr.umd.js +1 -1
- package/dist/translations/hu.js +1 -1
- package/dist/translations/hu.umd.js +1 -1
- package/dist/translations/hy.js +1 -1
- package/dist/translations/hy.umd.js +1 -1
- package/dist/translations/id.js +1 -1
- package/dist/translations/id.umd.js +1 -1
- package/dist/translations/it.js +1 -1
- package/dist/translations/it.umd.js +1 -1
- package/dist/translations/ja.js +1 -1
- package/dist/translations/ja.umd.js +1 -1
- package/dist/translations/jv.js +1 -1
- package/dist/translations/jv.umd.js +1 -1
- package/dist/translations/kk.js +1 -1
- package/dist/translations/kk.umd.js +1 -1
- package/dist/translations/km.js +1 -1
- package/dist/translations/km.umd.js +1 -1
- package/dist/translations/kn.js +1 -1
- package/dist/translations/kn.umd.js +1 -1
- package/dist/translations/ko.js +1 -1
- package/dist/translations/ko.umd.js +1 -1
- package/dist/translations/ku.js +1 -1
- package/dist/translations/ku.umd.js +1 -1
- package/dist/translations/lt.js +1 -1
- package/dist/translations/lt.umd.js +1 -1
- package/dist/translations/lv.js +1 -1
- package/dist/translations/lv.umd.js +1 -1
- package/dist/translations/ms.js +1 -1
- package/dist/translations/ms.umd.js +1 -1
- package/dist/translations/nb.js +1 -1
- package/dist/translations/nb.umd.js +1 -1
- package/dist/translations/ne.js +1 -1
- package/dist/translations/ne.umd.js +1 -1
- package/dist/translations/nl.js +1 -1
- package/dist/translations/nl.umd.js +1 -1
- package/dist/translations/no.js +1 -1
- package/dist/translations/no.umd.js +1 -1
- package/dist/translations/oc.js +1 -1
- package/dist/translations/oc.umd.js +1 -1
- package/dist/translations/pl.js +1 -1
- package/dist/translations/pl.umd.js +1 -1
- package/dist/translations/pt-br.js +1 -1
- package/dist/translations/pt-br.umd.js +1 -1
- package/dist/translations/pt.js +1 -1
- package/dist/translations/pt.umd.js +1 -1
- package/dist/translations/ro.js +1 -1
- package/dist/translations/ro.umd.js +1 -1
- package/dist/translations/ru.js +1 -1
- package/dist/translations/ru.umd.js +1 -1
- package/dist/translations/si.js +1 -1
- package/dist/translations/si.umd.js +1 -1
- package/dist/translations/sk.js +1 -1
- package/dist/translations/sk.umd.js +1 -1
- package/dist/translations/sl.js +1 -1
- package/dist/translations/sl.umd.js +1 -1
- package/dist/translations/sq.js +1 -1
- package/dist/translations/sq.umd.js +1 -1
- package/dist/translations/sr-latn.js +1 -1
- package/dist/translations/sr-latn.umd.js +1 -1
- package/dist/translations/sr.js +1 -1
- package/dist/translations/sr.umd.js +1 -1
- package/dist/translations/sv.js +1 -1
- package/dist/translations/sv.umd.js +1 -1
- package/dist/translations/th.js +1 -1
- package/dist/translations/th.umd.js +1 -1
- package/dist/translations/ti.js +1 -1
- package/dist/translations/ti.umd.js +1 -1
- package/dist/translations/tk.js +1 -1
- package/dist/translations/tk.umd.js +1 -1
- package/dist/translations/tr.js +1 -1
- package/dist/translations/tr.umd.js +1 -1
- package/dist/translations/tt.js +1 -1
- package/dist/translations/tt.umd.js +1 -1
- package/dist/translations/ug.js +1 -1
- package/dist/translations/ug.umd.js +1 -1
- package/dist/translations/uk.js +1 -1
- package/dist/translations/uk.umd.js +1 -1
- package/dist/translations/ur.js +1 -1
- package/dist/translations/ur.umd.js +1 -1
- package/dist/translations/uz.js +1 -1
- package/dist/translations/uz.umd.js +1 -1
- package/dist/translations/vi.js +1 -1
- package/dist/translations/vi.umd.js +1 -1
- package/dist/translations/zh-cn.js +1 -1
- package/dist/translations/zh-cn.umd.js +1 -1
- package/dist/translations/zh.js +1 -1
- package/dist/translations/zh.umd.js +1 -1
- package/lang/contexts.json +6 -0
- package/lang/translations/af.po +24 -0
- package/lang/translations/ar.po +24 -0
- package/lang/translations/ast.po +24 -0
- package/lang/translations/az.po +24 -0
- package/lang/translations/be.po +24 -0
- package/lang/translations/bg.po +24 -0
- package/lang/translations/bn.po +24 -0
- package/lang/translations/bs.po +24 -0
- package/lang/translations/ca.po +24 -0
- package/lang/translations/cs.po +24 -0
- package/lang/translations/da.po +24 -0
- package/lang/translations/de-ch.po +24 -0
- package/lang/translations/de.po +24 -0
- package/lang/translations/el.po +24 -0
- package/lang/translations/en-au.po +24 -0
- package/lang/translations/en-gb.po +24 -0
- package/lang/translations/en.po +24 -0
- package/lang/translations/eo.po +24 -0
- package/lang/translations/es-co.po +24 -0
- package/lang/translations/es.po +24 -0
- package/lang/translations/et.po +24 -0
- package/lang/translations/eu.po +24 -0
- package/lang/translations/fa.po +24 -0
- package/lang/translations/fi.po +24 -0
- package/lang/translations/fr.po +24 -0
- package/lang/translations/gl.po +24 -0
- package/lang/translations/gu.po +24 -0
- package/lang/translations/he.po +24 -0
- package/lang/translations/hi.po +24 -0
- package/lang/translations/hr.po +24 -0
- package/lang/translations/hu.po +24 -0
- package/lang/translations/hy.po +24 -0
- package/lang/translations/id.po +24 -0
- package/lang/translations/it.po +24 -0
- package/lang/translations/ja.po +24 -0
- package/lang/translations/jv.po +24 -0
- package/lang/translations/kk.po +24 -0
- package/lang/translations/km.po +24 -0
- package/lang/translations/kn.po +24 -0
- package/lang/translations/ko.po +24 -0
- package/lang/translations/ku.po +24 -0
- package/lang/translations/lt.po +24 -0
- package/lang/translations/lv.po +24 -0
- package/lang/translations/ms.po +24 -0
- package/lang/translations/nb.po +24 -0
- package/lang/translations/ne.po +24 -0
- package/lang/translations/nl.po +24 -0
- package/lang/translations/no.po +24 -0
- package/lang/translations/oc.po +24 -0
- package/lang/translations/pl.po +24 -0
- package/lang/translations/pt-br.po +24 -0
- package/lang/translations/pt.po +24 -0
- package/lang/translations/ro.po +24 -0
- package/lang/translations/ru.po +24 -0
- package/lang/translations/si.po +24 -0
- package/lang/translations/sk.po +24 -0
- package/lang/translations/sl.po +24 -0
- package/lang/translations/sq.po +24 -0
- package/lang/translations/sr-latn.po +24 -0
- package/lang/translations/sr.po +24 -0
- package/lang/translations/sv.po +24 -0
- package/lang/translations/th.po +24 -0
- package/lang/translations/ti.po +24 -0
- package/lang/translations/tk.po +24 -0
- package/lang/translations/tr.po +24 -0
- package/lang/translations/tt.po +24 -0
- package/lang/translations/ug.po +24 -0
- package/lang/translations/uk.po +24 -0
- package/lang/translations/ur.po +24 -0
- package/lang/translations/uz.po +24 -0
- package/lang/translations/vi.po +24 -0
- package/lang/translations/zh-cn.po +24 -0
- package/lang/translations/zh.po +24 -0
- package/package.json +9 -9
- package/src/augmentation.d.ts +21 -0
- package/src/converters/downcast.d.ts +26 -1
- package/src/converters/downcast.js +129 -3
- package/src/converters/tableproperties.d.ts +46 -2
- package/src/converters/tableproperties.js +218 -1
- package/src/converters/upcasttable.js +147 -36
- package/src/index.d.ts +5 -1
- package/src/index.js +5 -0
- package/src/plaintableoutput.js +0 -91
- package/src/tablecellproperties/tablecellpropertiesediting.js +7 -4
- package/src/tablecellproperties/tablecellpropertiesuiexperimental.d.ts +128 -0
- package/src/tablecellproperties/tablecellpropertiesuiexperimental.js +386 -0
- package/src/tablecellproperties/ui/tablecellpropertiesviewexperimental.d.ts +237 -0
- package/src/tablecellproperties/ui/tablecellpropertiesviewexperimental.js +633 -0
- package/src/tableconfig.d.ts +187 -10
- package/src/tableediting.d.ts +5 -0
- package/src/tableediting.js +28 -1
- package/src/tablelayout/tablelayoutediting.js +8 -2
- package/src/tableproperties/tablepropertiesediting.js +255 -8
- package/src/tableproperties/tablepropertiesuiexperimental.d.ts +136 -0
- package/src/tableproperties/tablepropertiesuiexperimental.js +375 -0
- package/src/tableproperties/ui/tablepropertiesviewexperimental.d.ts +216 -0
- package/src/tableproperties/ui/tablepropertiesviewexperimental.js +544 -0
- package/src/utils/structure.d.ts +5 -1
- package/src/utils/structure.js +10 -0
- package/src/utils/ui/table-propertiesexperimental.d.ts +215 -0
- package/src/utils/ui/table-propertiesexperimental.js +391 -0
- package/theme/formrow-experimental.css +15 -0
- package/theme/table.css +2 -2
- package/theme/tableform-experimental.css +73 -0
- package/theme/tableproperties-experimental.css +78 -0
|
@@ -0,0 +1,386 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @module table/tablecellproperties/tablecellpropertiesuiexperimental
|
|
7
|
+
*/
|
|
8
|
+
/* istanbul ignore file -- @preserve */
|
|
9
|
+
import { Plugin } from 'ckeditor5/src/core.js';
|
|
10
|
+
import { IconTableCellProperties } from 'ckeditor5/src/icons.js';
|
|
11
|
+
import { ButtonView, clickOutsideHandler, ContextualBalloon, getLocalizedColorOptions, normalizeColorOptions } from 'ckeditor5/src/ui.js';
|
|
12
|
+
import { TableCellPropertiesViewExperimental } from './ui/tablecellpropertiesviewexperimental.js';
|
|
13
|
+
import { colorFieldValidator, getLocalizedColorErrorText, getLocalizedLengthErrorText, defaultColors, lengthFieldValidator, lineWidthFieldValidator } from '../utils/ui/table-properties.js';
|
|
14
|
+
import { debounce } from 'es-toolkit/compat';
|
|
15
|
+
import { getSelectionAffectedTableWidget, getTableWidgetAncestor } from '../utils/ui/widget.js';
|
|
16
|
+
import { getBalloonCellPositionData, repositionContextualBalloon } from '../utils/ui/contextualballoon.js';
|
|
17
|
+
import { getNormalizedDefaultCellProperties, getNormalizedDefaultProperties } from '../utils/table-properties.js';
|
|
18
|
+
const ERROR_TEXT_TIMEOUT = 500;
|
|
19
|
+
// Map of view properties and related commands.
|
|
20
|
+
const propertyToCommandMap = {
|
|
21
|
+
borderStyle: 'tableCellBorderStyle',
|
|
22
|
+
borderColor: 'tableCellBorderColor',
|
|
23
|
+
borderWidth: 'tableCellBorderWidth',
|
|
24
|
+
height: 'tableCellHeight',
|
|
25
|
+
width: 'tableCellWidth',
|
|
26
|
+
padding: 'tableCellPadding',
|
|
27
|
+
backgroundColor: 'tableCellBackgroundColor',
|
|
28
|
+
horizontalAlignment: 'tableCellHorizontalAlignment',
|
|
29
|
+
verticalAlignment: 'tableCellVerticalAlignment'
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* The table cell properties UI plugin. It introduces the `'tableCellProperties'` button
|
|
33
|
+
* that opens a form allowing to specify the visual styling of a table cell.
|
|
34
|
+
*
|
|
35
|
+
* It uses the {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon contextual balloon plugin}.
|
|
36
|
+
*/
|
|
37
|
+
export class TableCellPropertiesUIExperimental extends Plugin {
|
|
38
|
+
/**
|
|
39
|
+
* The default table cell properties.
|
|
40
|
+
*/
|
|
41
|
+
_defaultContentTableCellProperties;
|
|
42
|
+
/**
|
|
43
|
+
* The default layout table cell properties.
|
|
44
|
+
*/
|
|
45
|
+
_defaultLayoutTableCellProperties;
|
|
46
|
+
/**
|
|
47
|
+
* The contextual balloon plugin instance.
|
|
48
|
+
*/
|
|
49
|
+
_balloon;
|
|
50
|
+
/**
|
|
51
|
+
* The cell properties form view displayed inside the balloon.
|
|
52
|
+
*/
|
|
53
|
+
view;
|
|
54
|
+
/**
|
|
55
|
+
* The cell properties form view displayed inside the balloon (content table).
|
|
56
|
+
*/
|
|
57
|
+
_viewWithContentTableDefaults;
|
|
58
|
+
/**
|
|
59
|
+
* The cell properties form view displayed inside the balloon (layout table).
|
|
60
|
+
*/
|
|
61
|
+
_viewWithLayoutTableDefaults;
|
|
62
|
+
/**
|
|
63
|
+
* The batch used to undo all changes made by the form (which are live, as the user types)
|
|
64
|
+
* when "Cancel" was pressed. Each time the view is shown, a new batch is created.
|
|
65
|
+
*/
|
|
66
|
+
_undoStepBatch;
|
|
67
|
+
/**
|
|
68
|
+
* Flag used to indicate whether view is ready to execute update commands
|
|
69
|
+
* (it finished loading initial data).
|
|
70
|
+
*/
|
|
71
|
+
_isReady;
|
|
72
|
+
/**
|
|
73
|
+
* @inheritDoc
|
|
74
|
+
*/
|
|
75
|
+
static get requires() {
|
|
76
|
+
return [ContextualBalloon];
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* @inheritDoc
|
|
80
|
+
*/
|
|
81
|
+
static get pluginName() {
|
|
82
|
+
return 'TableCellPropertiesUIExperimental';
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* @inheritDoc
|
|
86
|
+
*/
|
|
87
|
+
static get isOfficialPlugin() {
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* @inheritDoc
|
|
92
|
+
*/
|
|
93
|
+
constructor(editor) {
|
|
94
|
+
super(editor);
|
|
95
|
+
editor.config.define('table.tableCellProperties', {
|
|
96
|
+
borderColors: defaultColors,
|
|
97
|
+
backgroundColors: defaultColors
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* @inheritDoc
|
|
102
|
+
*/
|
|
103
|
+
init() {
|
|
104
|
+
const editor = this.editor;
|
|
105
|
+
const t = editor.t;
|
|
106
|
+
this._defaultContentTableCellProperties = getNormalizedDefaultCellProperties(editor.config.get('table.tableCellProperties.defaultProperties'), {
|
|
107
|
+
includeVerticalAlignmentProperty: true,
|
|
108
|
+
includeHorizontalAlignmentProperty: true,
|
|
109
|
+
includePaddingProperty: true,
|
|
110
|
+
isRightToLeftContent: editor.locale.contentLanguageDirection === 'rtl'
|
|
111
|
+
});
|
|
112
|
+
this._defaultLayoutTableCellProperties = getNormalizedDefaultProperties(undefined, {
|
|
113
|
+
includeVerticalAlignmentProperty: true,
|
|
114
|
+
includeHorizontalAlignmentProperty: true,
|
|
115
|
+
isRightToLeftContent: editor.locale.contentLanguageDirection === 'rtl'
|
|
116
|
+
});
|
|
117
|
+
this._balloon = editor.plugins.get(ContextualBalloon);
|
|
118
|
+
this.view = null;
|
|
119
|
+
this._isReady = false;
|
|
120
|
+
editor.ui.componentFactory.add('tableCellProperties', locale => {
|
|
121
|
+
const view = new ButtonView(locale);
|
|
122
|
+
view.set({
|
|
123
|
+
label: t('Cell properties'),
|
|
124
|
+
icon: IconTableCellProperties,
|
|
125
|
+
tooltip: true
|
|
126
|
+
});
|
|
127
|
+
this.listenTo(view, 'execute', () => this._showView());
|
|
128
|
+
const commands = Object.values(propertyToCommandMap)
|
|
129
|
+
.map(commandName => editor.commands.get(commandName));
|
|
130
|
+
view.bind('isEnabled').toMany(commands, 'isEnabled', (...areEnabled) => (areEnabled.some(isCommandEnabled => isCommandEnabled)));
|
|
131
|
+
return view;
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* @inheritDoc
|
|
136
|
+
*/
|
|
137
|
+
destroy() {
|
|
138
|
+
super.destroy();
|
|
139
|
+
// Destroy created UI components as they are not automatically destroyed.
|
|
140
|
+
// See https://github.com/ckeditor/ckeditor5/issues/1341.
|
|
141
|
+
if (this.view) {
|
|
142
|
+
this.view.destroy();
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Creates the {@link module:table/tablecellproperties/ui/tablecellpropertiesview~TableCellPropertiesView} instance.
|
|
147
|
+
*
|
|
148
|
+
* @returns The cell properties form view instance.
|
|
149
|
+
*/
|
|
150
|
+
_createPropertiesView(defaultTableCellProperties) {
|
|
151
|
+
const editor = this.editor;
|
|
152
|
+
const config = editor.config.get('table.tableCellProperties');
|
|
153
|
+
const borderColorsConfig = normalizeColorOptions(config.borderColors);
|
|
154
|
+
const localizedBorderColors = getLocalizedColorOptions(editor.locale, borderColorsConfig);
|
|
155
|
+
const backgroundColorsConfig = normalizeColorOptions(config.backgroundColors);
|
|
156
|
+
const localizedBackgroundColors = getLocalizedColorOptions(editor.locale, backgroundColorsConfig);
|
|
157
|
+
const hasColorPicker = config.colorPicker !== false;
|
|
158
|
+
const view = new TableCellPropertiesViewExperimental(editor.locale, {
|
|
159
|
+
borderColors: localizedBorderColors,
|
|
160
|
+
backgroundColors: localizedBackgroundColors,
|
|
161
|
+
defaultTableCellProperties,
|
|
162
|
+
colorPickerConfig: hasColorPicker ? (config.colorPicker || {}) : false
|
|
163
|
+
});
|
|
164
|
+
const t = editor.t;
|
|
165
|
+
// Render the view so its #element is available for the clickOutsideHandler.
|
|
166
|
+
view.render();
|
|
167
|
+
this.listenTo(view, 'submit', () => {
|
|
168
|
+
this._hideView();
|
|
169
|
+
});
|
|
170
|
+
this.listenTo(view, 'cancel', () => {
|
|
171
|
+
// https://github.com/ckeditor/ckeditor5/issues/6180
|
|
172
|
+
if (this._undoStepBatch.operations.length) {
|
|
173
|
+
editor.execute('undo', this._undoStepBatch);
|
|
174
|
+
}
|
|
175
|
+
this._hideView();
|
|
176
|
+
});
|
|
177
|
+
// Close the balloon on Esc key press.
|
|
178
|
+
view.keystrokes.set('Esc', (data, cancel) => {
|
|
179
|
+
this._hideView();
|
|
180
|
+
cancel();
|
|
181
|
+
});
|
|
182
|
+
// Close on click outside of balloon panel element.
|
|
183
|
+
clickOutsideHandler({
|
|
184
|
+
emitter: view,
|
|
185
|
+
activator: () => this._isViewInBalloon,
|
|
186
|
+
contextElements: [this._balloon.view.element],
|
|
187
|
+
callback: () => this._hideView()
|
|
188
|
+
});
|
|
189
|
+
const colorErrorText = getLocalizedColorErrorText(t);
|
|
190
|
+
const lengthErrorText = getLocalizedLengthErrorText(t);
|
|
191
|
+
// Create the "UI -> editor data" binding.
|
|
192
|
+
// These listeners update the editor data (via table commands) when any observable
|
|
193
|
+
// property of the view has changed. They also validate the value and display errors in the UI
|
|
194
|
+
// when necessary. This makes the view live, which means the changes are
|
|
195
|
+
// visible in the editing as soon as the user types or changes fields' values.
|
|
196
|
+
view.on('change:borderStyle', this._getPropertyChangeCallback('tableCellBorderStyle'));
|
|
197
|
+
view.on('change:borderColor', this._getValidatedPropertyChangeCallback({
|
|
198
|
+
viewField: view.borderColorInput,
|
|
199
|
+
commandName: 'tableCellBorderColor',
|
|
200
|
+
errorText: colorErrorText,
|
|
201
|
+
validator: colorFieldValidator
|
|
202
|
+
}));
|
|
203
|
+
view.on('change:borderWidth', this._getValidatedPropertyChangeCallback({
|
|
204
|
+
viewField: view.borderWidthInput,
|
|
205
|
+
commandName: 'tableCellBorderWidth',
|
|
206
|
+
errorText: lengthErrorText,
|
|
207
|
+
validator: lineWidthFieldValidator
|
|
208
|
+
}));
|
|
209
|
+
view.on('change:padding', this._getValidatedPropertyChangeCallback({
|
|
210
|
+
viewField: view.paddingInput,
|
|
211
|
+
commandName: 'tableCellPadding',
|
|
212
|
+
errorText: lengthErrorText,
|
|
213
|
+
validator: lengthFieldValidator
|
|
214
|
+
}));
|
|
215
|
+
view.on('change:width', this._getValidatedPropertyChangeCallback({
|
|
216
|
+
viewField: view.widthInput,
|
|
217
|
+
commandName: 'tableCellWidth',
|
|
218
|
+
errorText: lengthErrorText,
|
|
219
|
+
validator: lengthFieldValidator
|
|
220
|
+
}));
|
|
221
|
+
view.on('change:height', this._getValidatedPropertyChangeCallback({
|
|
222
|
+
viewField: view.heightInput,
|
|
223
|
+
commandName: 'tableCellHeight',
|
|
224
|
+
errorText: lengthErrorText,
|
|
225
|
+
validator: lengthFieldValidator
|
|
226
|
+
}));
|
|
227
|
+
view.on('change:backgroundColor', this._getValidatedPropertyChangeCallback({
|
|
228
|
+
viewField: view.backgroundInput,
|
|
229
|
+
commandName: 'tableCellBackgroundColor',
|
|
230
|
+
errorText: colorErrorText,
|
|
231
|
+
validator: colorFieldValidator
|
|
232
|
+
}));
|
|
233
|
+
view.on('change:horizontalAlignment', this._getPropertyChangeCallback('tableCellHorizontalAlignment'));
|
|
234
|
+
view.on('change:verticalAlignment', this._getPropertyChangeCallback('tableCellVerticalAlignment'));
|
|
235
|
+
return view;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* In this method the "editor data -> UI" binding is happening.
|
|
239
|
+
*
|
|
240
|
+
* When executed, this method obtains selected cell property values from various table commands
|
|
241
|
+
* and passes them to the {@link #view}.
|
|
242
|
+
*
|
|
243
|
+
* This way, the UI stays up–to–date with the editor data.
|
|
244
|
+
*/
|
|
245
|
+
_fillViewFormFromCommandValues() {
|
|
246
|
+
const commands = this.editor.commands;
|
|
247
|
+
const borderStyleCommand = commands.get('tableCellBorderStyle');
|
|
248
|
+
Object.entries(propertyToCommandMap)
|
|
249
|
+
.map(([property, commandName]) => {
|
|
250
|
+
const propertyKey = property;
|
|
251
|
+
const defaultValue = this.view === this._viewWithContentTableDefaults ?
|
|
252
|
+
this._defaultContentTableCellProperties[propertyKey] || '' :
|
|
253
|
+
this._defaultLayoutTableCellProperties[propertyKey] || '';
|
|
254
|
+
return [
|
|
255
|
+
property,
|
|
256
|
+
commands.get(commandName).value || defaultValue
|
|
257
|
+
];
|
|
258
|
+
})
|
|
259
|
+
.forEach(([property, value]) => {
|
|
260
|
+
// Do not set the `border-color` and `border-width` fields if `border-style:none`.
|
|
261
|
+
if ((property === 'borderColor' || property === 'borderWidth') && borderStyleCommand.value === 'none') {
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
this.view.set(property, value);
|
|
265
|
+
});
|
|
266
|
+
this._isReady = true;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Shows the {@link #view} in the {@link #_balloon}.
|
|
270
|
+
*
|
|
271
|
+
* **Note**: Each time a view is shown, a new {@link #_undoStepBatch} is created. It contains
|
|
272
|
+
* all changes made to the document when the view is visible, allowing a single undo step
|
|
273
|
+
* for all of them.
|
|
274
|
+
*/
|
|
275
|
+
_showView() {
|
|
276
|
+
const editor = this.editor;
|
|
277
|
+
const viewTable = getSelectionAffectedTableWidget(editor.editing.view.document.selection);
|
|
278
|
+
const modelTable = viewTable && editor.editing.mapper.toModelElement(viewTable);
|
|
279
|
+
const useDefaults = !modelTable || modelTable.getAttribute('tableType') !== 'layout';
|
|
280
|
+
if (useDefaults && !this._viewWithContentTableDefaults) {
|
|
281
|
+
this._viewWithContentTableDefaults = this._createPropertiesView(this._defaultContentTableCellProperties);
|
|
282
|
+
}
|
|
283
|
+
else if (!useDefaults && !this._viewWithLayoutTableDefaults) {
|
|
284
|
+
this._viewWithLayoutTableDefaults = this._createPropertiesView(this._defaultLayoutTableCellProperties);
|
|
285
|
+
}
|
|
286
|
+
this.view = useDefaults ? this._viewWithContentTableDefaults : this._viewWithLayoutTableDefaults;
|
|
287
|
+
this.listenTo(editor.ui, 'update', () => {
|
|
288
|
+
this._updateView();
|
|
289
|
+
});
|
|
290
|
+
// Update the view with the model values.
|
|
291
|
+
this._fillViewFormFromCommandValues();
|
|
292
|
+
this._balloon.add({
|
|
293
|
+
view: this.view,
|
|
294
|
+
position: getBalloonCellPositionData(editor)
|
|
295
|
+
});
|
|
296
|
+
// Create a new batch. Clicking "Cancel" will undo this batch.
|
|
297
|
+
this._undoStepBatch = editor.model.createBatch();
|
|
298
|
+
// Basic a11y.
|
|
299
|
+
this.view.focus();
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Removes the {@link #view} from the {@link #_balloon}.
|
|
303
|
+
*/
|
|
304
|
+
_hideView() {
|
|
305
|
+
const editor = this.editor;
|
|
306
|
+
this.stopListening(editor.ui, 'update');
|
|
307
|
+
this._isReady = false;
|
|
308
|
+
// Blur any input element before removing it from DOM to prevent issues in some browsers.
|
|
309
|
+
// See https://github.com/ckeditor/ckeditor5/issues/1501.
|
|
310
|
+
this.view.saveButtonView.focus();
|
|
311
|
+
this._balloon.remove(this.view);
|
|
312
|
+
// Make sure the focus is not lost in the process by putting it directly
|
|
313
|
+
// into the editing view.
|
|
314
|
+
this.editor.editing.view.focus();
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Repositions the {@link #_balloon} or hides the {@link #view} if a table cell is no longer selected.
|
|
318
|
+
*/
|
|
319
|
+
_updateView() {
|
|
320
|
+
const editor = this.editor;
|
|
321
|
+
const viewDocument = editor.editing.view.document;
|
|
322
|
+
if (!getTableWidgetAncestor(viewDocument.selection)) {
|
|
323
|
+
this._hideView();
|
|
324
|
+
}
|
|
325
|
+
else if (this._isViewVisible) {
|
|
326
|
+
repositionContextualBalloon(editor, 'cell');
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Returns `true` when the {@link #view} is visible in the {@link #_balloon}.
|
|
331
|
+
*/
|
|
332
|
+
get _isViewVisible() {
|
|
333
|
+
return !!this.view && this._balloon.visibleView === this.view;
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Returns `true` when the {@link #view} is in the {@link #_balloon}.
|
|
337
|
+
*/
|
|
338
|
+
get _isViewInBalloon() {
|
|
339
|
+
return !!this.view && this._balloon.hasView(this.view);
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* Creates a callback that when executed upon the {@link #view view's} property change
|
|
343
|
+
* executes a related editor command with the new property value.
|
|
344
|
+
*
|
|
345
|
+
* @param commandName The default value of the command.
|
|
346
|
+
*/
|
|
347
|
+
_getPropertyChangeCallback(commandName) {
|
|
348
|
+
return (evt, propertyName, newValue) => {
|
|
349
|
+
if (!this._isReady) {
|
|
350
|
+
return;
|
|
351
|
+
}
|
|
352
|
+
this.editor.execute(commandName, {
|
|
353
|
+
value: newValue,
|
|
354
|
+
batch: this._undoStepBatch
|
|
355
|
+
});
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Creates a callback that when executed upon the {@link #view view's} property change:
|
|
360
|
+
* * Executes a related editor command with the new property value if the value is valid,
|
|
361
|
+
* * Or sets the error text next to the invalid field, if the value did not pass the validation.
|
|
362
|
+
*/
|
|
363
|
+
_getValidatedPropertyChangeCallback(options) {
|
|
364
|
+
const { commandName, viewField, validator, errorText } = options;
|
|
365
|
+
const setErrorTextDebounced = debounce(() => {
|
|
366
|
+
viewField.errorText = errorText;
|
|
367
|
+
}, ERROR_TEXT_TIMEOUT);
|
|
368
|
+
return (evt, propertyName, newValue) => {
|
|
369
|
+
setErrorTextDebounced.cancel();
|
|
370
|
+
// Do not execute the command on initial call (opening the table properties view).
|
|
371
|
+
if (!this._isReady) {
|
|
372
|
+
return;
|
|
373
|
+
}
|
|
374
|
+
if (validator(newValue)) {
|
|
375
|
+
this.editor.execute(commandName, {
|
|
376
|
+
value: newValue,
|
|
377
|
+
batch: this._undoStepBatch
|
|
378
|
+
});
|
|
379
|
+
viewField.errorText = null;
|
|
380
|
+
}
|
|
381
|
+
else {
|
|
382
|
+
setErrorTextDebounced();
|
|
383
|
+
}
|
|
384
|
+
};
|
|
385
|
+
}
|
|
386
|
+
}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @module table/tablecellproperties/ui/tablecellpropertiesviewexperimental
|
|
7
|
+
*/
|
|
8
|
+
import { ButtonView, FocusCycler, LabeledFieldView, ToolbarView, View, ViewCollection, type FocusableView, type NormalizedColorOption, type ColorPickerConfig } from 'ckeditor5/src/ui.js';
|
|
9
|
+
import { KeystrokeHandler, FocusTracker, type Locale } from 'ckeditor5/src/utils.js';
|
|
10
|
+
import { type ColorInputView } from '../../ui/colorinputview.js';
|
|
11
|
+
import type { TableCellPropertiesOptions } from '../../tableconfig.js';
|
|
12
|
+
import '@ckeditor/ckeditor5-ui/theme/components/form/form.css';
|
|
13
|
+
import '../../../theme/formrow.css';
|
|
14
|
+
import '../../../theme/tableform.css';
|
|
15
|
+
import '../../../theme/tablecellproperties.css';
|
|
16
|
+
export interface TableCellPropertiesViewOptionsExperimental {
|
|
17
|
+
borderColors: Array<NormalizedColorOption>;
|
|
18
|
+
backgroundColors: Array<NormalizedColorOption>;
|
|
19
|
+
defaultTableCellProperties: TableCellPropertiesOptions;
|
|
20
|
+
colorPickerConfig: false | ColorPickerConfig;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* The class representing a table cell properties form, allowing users to customize
|
|
24
|
+
* certain style aspects of a table cell, for instance, border, padding, text alignment, etc..
|
|
25
|
+
*/
|
|
26
|
+
export declare class TableCellPropertiesViewExperimental extends View {
|
|
27
|
+
/**
|
|
28
|
+
* The value of the cell border style.
|
|
29
|
+
*
|
|
30
|
+
* @observable
|
|
31
|
+
* @default ''
|
|
32
|
+
*/
|
|
33
|
+
borderStyle: string;
|
|
34
|
+
/**
|
|
35
|
+
* The value of the cell border width style.
|
|
36
|
+
*
|
|
37
|
+
* @observable
|
|
38
|
+
* @default ''
|
|
39
|
+
*/
|
|
40
|
+
borderWidth: string;
|
|
41
|
+
/**
|
|
42
|
+
* The value of the cell border color style.
|
|
43
|
+
*
|
|
44
|
+
* @observable
|
|
45
|
+
* @default ''
|
|
46
|
+
*/
|
|
47
|
+
borderColor: string;
|
|
48
|
+
/**
|
|
49
|
+
* The value of the cell padding style.
|
|
50
|
+
*
|
|
51
|
+
* @observable
|
|
52
|
+
* @default ''
|
|
53
|
+
*/
|
|
54
|
+
padding: string;
|
|
55
|
+
/**
|
|
56
|
+
* The value of the cell background color style.
|
|
57
|
+
*
|
|
58
|
+
* @observable
|
|
59
|
+
* @default ''
|
|
60
|
+
*/
|
|
61
|
+
backgroundColor: string;
|
|
62
|
+
/**
|
|
63
|
+
* The value of the table cell width style.
|
|
64
|
+
*
|
|
65
|
+
* @observable
|
|
66
|
+
* @default ''
|
|
67
|
+
*/
|
|
68
|
+
width: string;
|
|
69
|
+
/**
|
|
70
|
+
* The value of the table cell height style.
|
|
71
|
+
*
|
|
72
|
+
* @observable
|
|
73
|
+
* @default ''
|
|
74
|
+
*/
|
|
75
|
+
height: string;
|
|
76
|
+
/**
|
|
77
|
+
* The value of the horizontal text alignment style.
|
|
78
|
+
*
|
|
79
|
+
* @observable
|
|
80
|
+
* @default ''
|
|
81
|
+
*/
|
|
82
|
+
horizontalAlignment: string;
|
|
83
|
+
/**
|
|
84
|
+
* The value of the vertical text alignment style.
|
|
85
|
+
*
|
|
86
|
+
* @observable
|
|
87
|
+
* @default ''
|
|
88
|
+
*/
|
|
89
|
+
verticalAlignment: string;
|
|
90
|
+
/**
|
|
91
|
+
* Options passed to the view. See {@link #constructor} to learn more.
|
|
92
|
+
*/
|
|
93
|
+
readonly options: TableCellPropertiesViewOptionsExperimental;
|
|
94
|
+
/**
|
|
95
|
+
* Tracks information about the DOM focus in the form.
|
|
96
|
+
*/
|
|
97
|
+
readonly focusTracker: FocusTracker;
|
|
98
|
+
/**
|
|
99
|
+
* An instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}.
|
|
100
|
+
*/
|
|
101
|
+
readonly keystrokes: KeystrokeHandler;
|
|
102
|
+
/**
|
|
103
|
+
* A collection of child views in the form.
|
|
104
|
+
*/
|
|
105
|
+
readonly children: ViewCollection;
|
|
106
|
+
/**
|
|
107
|
+
* A dropdown that allows selecting the style of the table cell border.
|
|
108
|
+
*/
|
|
109
|
+
readonly borderStyleDropdown: LabeledFieldView<FocusableView>;
|
|
110
|
+
/**
|
|
111
|
+
* An input that allows specifying the width of the table cell border.
|
|
112
|
+
*/
|
|
113
|
+
readonly borderWidthInput: LabeledFieldView<FocusableView>;
|
|
114
|
+
/**
|
|
115
|
+
* An input that allows specifying the color of the table cell border.
|
|
116
|
+
*/
|
|
117
|
+
readonly borderColorInput: LabeledFieldView<ColorInputView>;
|
|
118
|
+
/**
|
|
119
|
+
* An input that allows specifying the table cell background color.
|
|
120
|
+
*/
|
|
121
|
+
readonly backgroundInput: LabeledFieldView<ColorInputView>;
|
|
122
|
+
/**
|
|
123
|
+
* An input that allows specifying the table cell padding.
|
|
124
|
+
*/
|
|
125
|
+
readonly paddingInput: LabeledFieldView;
|
|
126
|
+
/**
|
|
127
|
+
* An input that allows specifying the table cell width.
|
|
128
|
+
*/
|
|
129
|
+
readonly widthInput: LabeledFieldView<FocusableView>;
|
|
130
|
+
/**
|
|
131
|
+
* An input that allows specifying the table cell height.
|
|
132
|
+
*/
|
|
133
|
+
readonly heightInput: LabeledFieldView<FocusableView>;
|
|
134
|
+
/**
|
|
135
|
+
* A toolbar with buttons that allow changing the horizontal text alignment in a table cell.
|
|
136
|
+
*/
|
|
137
|
+
readonly horizontalAlignmentToolbar: ToolbarView;
|
|
138
|
+
/**
|
|
139
|
+
* A toolbar with buttons that allow changing the vertical text alignment in a table cell.
|
|
140
|
+
*/
|
|
141
|
+
readonly verticalAlignmentToolbar: ToolbarView;
|
|
142
|
+
/**
|
|
143
|
+
* The "Save" button view.
|
|
144
|
+
*/
|
|
145
|
+
saveButtonView: ButtonView;
|
|
146
|
+
/**
|
|
147
|
+
* The "Cancel" button view.
|
|
148
|
+
*/
|
|
149
|
+
cancelButtonView: ButtonView;
|
|
150
|
+
/**
|
|
151
|
+
* The "Back" button view.
|
|
152
|
+
*/
|
|
153
|
+
backButtonView: ButtonView;
|
|
154
|
+
/**
|
|
155
|
+
* A collection of views that can be focused in the form.
|
|
156
|
+
*/
|
|
157
|
+
protected readonly _focusables: ViewCollection<FocusableView>;
|
|
158
|
+
/**
|
|
159
|
+
* Helps cycling over {@link #_focusables} in the form.
|
|
160
|
+
*/
|
|
161
|
+
protected readonly _focusCycler: FocusCycler;
|
|
162
|
+
/**
|
|
163
|
+
* @param locale The {@link module:core/editor/editor~Editor#locale} instance.
|
|
164
|
+
* @param options Additional configuration of the view.
|
|
165
|
+
* @param options.borderColors A configuration of the border color palette used by the
|
|
166
|
+
* {@link module:table/tablecellproperties/ui/tablecellpropertiesview~TableCellPropertiesView#borderColorInput}.
|
|
167
|
+
* @param options.backgroundColors A configuration of the background color palette used by the
|
|
168
|
+
* {@link module:table/tablecellproperties/ui/tablecellpropertiesview~TableCellPropertiesView#backgroundInput}.
|
|
169
|
+
* @param options.defaultTableCellProperties The default table cell properties.
|
|
170
|
+
*/
|
|
171
|
+
constructor(locale: Locale, options: TableCellPropertiesViewOptionsExperimental);
|
|
172
|
+
/**
|
|
173
|
+
* @inheritDoc
|
|
174
|
+
*/
|
|
175
|
+
render(): void;
|
|
176
|
+
/**
|
|
177
|
+
* @inheritDoc
|
|
178
|
+
*/
|
|
179
|
+
destroy(): void;
|
|
180
|
+
/**
|
|
181
|
+
* Focuses the fist focusable field in the form.
|
|
182
|
+
*/
|
|
183
|
+
focus(): void;
|
|
184
|
+
/**
|
|
185
|
+
* Creates the following form fields:
|
|
186
|
+
*
|
|
187
|
+
* * {@link #borderStyleDropdown},
|
|
188
|
+
* * {@link #borderWidthInput},
|
|
189
|
+
* * {@link #borderColorInput}.
|
|
190
|
+
*/
|
|
191
|
+
private _createBorderFields;
|
|
192
|
+
/**
|
|
193
|
+
* Creates the following form fields:
|
|
194
|
+
*
|
|
195
|
+
* * {@link #backgroundInput}.
|
|
196
|
+
*/
|
|
197
|
+
private _createBackgroundFields;
|
|
198
|
+
/**
|
|
199
|
+
* Creates the following form fields:
|
|
200
|
+
*
|
|
201
|
+
* * {@link #widthInput}.
|
|
202
|
+
* * {@link #heightInput}.
|
|
203
|
+
*/
|
|
204
|
+
private _createDimensionFields;
|
|
205
|
+
/**
|
|
206
|
+
* Creates the following form fields:
|
|
207
|
+
*
|
|
208
|
+
* * {@link #paddingInput}.
|
|
209
|
+
*/
|
|
210
|
+
private _createPaddingField;
|
|
211
|
+
/**
|
|
212
|
+
* Creates the following form fields:
|
|
213
|
+
*
|
|
214
|
+
* * {@link #horizontalAlignmentToolbar},
|
|
215
|
+
* * {@link #verticalAlignmentToolbar}.
|
|
216
|
+
*/
|
|
217
|
+
private _createAlignmentFields;
|
|
218
|
+
/**
|
|
219
|
+
* Creates the following form controls:
|
|
220
|
+
*
|
|
221
|
+
* * {@link #saveButtonView},
|
|
222
|
+
* * {@link #cancelButtonView}.
|
|
223
|
+
*/
|
|
224
|
+
private _createActionButtons;
|
|
225
|
+
/**
|
|
226
|
+
* Creates a back button view that cancels the form.
|
|
227
|
+
*/
|
|
228
|
+
private _createBackButton;
|
|
229
|
+
/**
|
|
230
|
+
* Provides localized labels for {@link #horizontalAlignmentToolbar} buttons.
|
|
231
|
+
*/
|
|
232
|
+
private get _horizontalAlignmentLabels();
|
|
233
|
+
/**
|
|
234
|
+
* Provides localized labels for {@link #verticalAlignmentToolbar} buttons.
|
|
235
|
+
*/
|
|
236
|
+
private get _verticalAlignmentLabels();
|
|
237
|
+
}
|