UNPKG

10.1 kBTypeScriptView Raw
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 table/tableconfig
7 */
8import type { ToolbarConfigItem } from 'ckeditor5/src/core';
9import type { ColorOption } from 'ckeditor5/src/ui';
10/**
11 * The configuration of the table feature. Used by the table feature in the `@ckeditor/ckeditor5-table` package.
12 *
13 * ```ts
14 * ClassicEditor
15 * .create( editorElement, {
16 * table: ... // Table feature options.
17 * } )
18 * .then( ... )
19 * .catch( ... );
20 * ```
21 *
22 * See {@link module:core/editor/editorconfig~EditorConfig all editor options}.
23 */
24export interface TableConfig {
25 /**
26 * Number of rows and columns to render by default as table heading when inserting new tables.
27 *
28 * You can configure it like this:
29 *
30 * ```ts
31 * const tableConfig = {
32 * defaultHeadings: {
33 * rows: 1,
34 * columns: 1
35 * }
36 * };
37 * ```
38 *
39 * Both rows and columns properties are optional defaulting to 0 (no heading).
40 */
41 defaultHeadings?: {
42 rows?: number;
43 columns?: number;
44 };
45 /**
46 * Items to be placed in the table content toolbar.
47 * The {@link module:table/tabletoolbar~TableToolbar} plugin is required to make this toolbar work.
48 *
49 * Assuming that you use the {@link module:table/tableui~TableUI} feature, the following toolbar items will be available
50 * in {@link module:ui/componentfactory~ComponentFactory}:
51 *
52 * * `'tableRow'`,
53 * * `'tableColumn'`,
54 * * `'mergeTableCells'`.
55 *
56 * You can thus configure the toolbar like this:
57 *
58 * ```ts
59 * const tableConfig = {
60 * contentToolbar: [ 'tableRow', 'tableColumn', 'mergeTableCells' ]
61 * };
62 * ```
63 *
64 * Of course, the same buttons can also be used in the
65 * {@link module:core/editor/editorconfig~EditorConfig#toolbar main editor toolbar}.
66 *
67 * Read more about configuring the toolbar in {@link module:core/editor/editorconfig~EditorConfig#toolbar}.
68 */
69 contentToolbar?: Array<ToolbarConfigItem>;
70 /**
71 * Items to be placed in the table toolbar.
72 * The {@link module:table/tabletoolbar~TableToolbar} plugin is required to make this toolbar work.
73 *
74 * You can thus configure the toolbar like this:
75 *
76 * ```ts
77 * const tableConfig = {
78 * tableToolbar: [ 'blockQuote' ]
79 * };
80 * ```
81 *
82 * Of course, the same buttons can also be used in the
83 * {@link module:core/editor/editorconfig~EditorConfig#toolbar main editor toolbar}.
84 *
85 * Read more about configuring the toolbar in {@link module:core/editor/editorconfig~EditorConfig#toolbar}.
86 */
87 tableToolbar?: Array<ToolbarConfigItem>;
88 /**
89 * The configuration of the table properties user interface (balloon). It allows to define:
90 *
91 * * The color palette for the table border color style field (`tableProperties.borderColors`),
92 * * The color palette for the table background style field (`tableProperties.backgroundColors`).
93 *
94 * ```ts
95 * const tableConfig = {
96 * tableProperties: {
97 * borderColors: [
98 * {
99 * color: 'hsl(0, 0%, 90%)',
100 * label: 'Light grey'
101 * },
102 * // ...
103 * ],
104 * backgroundColors: [
105 * {
106 * color: 'hsl(120, 75%, 60%)',
107 * label: 'Green'
108 * },
109 * // ...
110 * ]
111 * }
112 * };
113 * ```
114 *
115 * * The default styles for tables (`tableProperties.defaultProperties`):
116 *
117 * ```
118 * const tableConfig = {
119 * tableProperties: {
120 * defaultProperties: {
121 * borderStyle: 'dashed',
122 * borderColor: 'hsl(0, 0%, 90%)',
123 * borderWidth: '3px',
124 * alignment: 'left'
125 * }
126 * }
127 * }
128 * ```
129 *
130 * {@link module:table/tableconfig~TablePropertiesOptions Read more about the supported properties.}
131 *
132 * **Note**: The `borderColors` and `backgroundColors` options do not impact the data loaded into the editor,
133 * i.e. they do not limit or filter the colors in the data. They are used only in the user interface
134 * allowing users to pick colors in a more convenient way. The `defaultProperties` option does impact the data.
135 * Default values will not be kept in the editor model.
136 *
137 * The default color palettes for the table background and the table border are the same
138 * ({@link module:table/utils/ui/table-properties#defaultColors check out their content}).
139 *
140 * Both color palette configurations must follow the
141 * {@link module:table/tableconfig~TableColorConfig table color configuration format}.
142 *
143 * Read more about configuring the table feature in {@link module:table/tableconfig~TableConfig}.
144 */
145 tableProperties?: TablePropertiesConfig;
146 /**
147 * The configuration of the table cell properties user interface (balloon). It allows to define:
148 *
149 * * The color palette for the cell border color style field (`tableCellProperties.borderColors`),
150 * * The color palette for the cell background style field (`tableCellProperties.backgroundColors`).
151 *
152 * ```ts
153 * const tableConfig = {
154 * tableCellProperties: {
155 * borderColors: [
156 * {
157 * color: 'hsl(0, 0%, 90%)',
158 * label: 'Light grey'
159 * },
160 * // ...
161 * ],
162 * backgroundColors: [
163 * {
164 * color: 'hsl(120, 75%, 60%)',
165 * label: 'Green'
166 * },
167 * // ...
168 * ]
169 * }
170 * };
171 * ```
172 *
173 * * The default styles for table cells (`tableCellProperties.defaultProperties`):
174 *
175 * ```ts
176 * const tableConfig = {
177 * tableCellProperties: {
178 * defaultProperties: {
179 * horizontalAlignment: 'right',
180 * verticalAlignment: 'bottom',
181 * padding: '5px'
182 * }
183 * }
184 * }
185 * ```
186 *
187 * {@link module:table/tableconfig~TablePropertiesOptions Read more about the supported properties.}
188 *
189 * **Note**: The `borderColors` and `backgroundColors` options do not impact the data loaded into the editor,
190 * i.e. they do not limit or filter the colors in the data. They are used only in the user interface
191 * allowing users to pick colors in a more convenient way. The `defaultProperties` option does impact the data.
192 * Default values will not be kept in the editor model.
193 *
194 * The default color palettes for the cell background and the cell border are the same
195 * ({@link module:table/utils/ui/table-properties#defaultColors check out their content}).
196 *
197 * Both color palette configurations must follow the
198 * {@link module:table/tableconfig~TableColorConfig table color configuration format}.
199 *
200 * Read more about configuring the table feature in {@link module:table/tableconfig~TableConfig}.
201 */
202 tableCellProperties?: TableCellPropertiesConfig;
203}
204/**
205 * The configuration of the table properties user interface (balloon).
206 */
207export interface TablePropertiesConfig {
208 borderColors?: TableColorConfig;
209 backgroundColors?: TableColorConfig;
210 defaultProperties?: TablePropertiesOptions;
211}
212/**
213 * The configuration of the table default properties feature.
214 */
215export interface TablePropertiesOptions {
216 /**
217 * The default `width` of the table.
218 */
219 width?: string;
220 /**
221 * The default `height` of the table.
222 */
223 height?: string;
224 /**
225 * The default `background-color` of the table.
226 */
227 backgroundColor?: string;
228 /**
229 * The default `border-color` of the table.
230 */
231 borderColor?: string;
232 /**
233 * The default `border-width` of the table.
234 */
235 borderWidth?: string;
236 /**
237 * The default `border-style` of the table.
238 *
239 * @default 'none'
240 */
241 borderStyle?: string;
242 /**
243 * The default `alignment` of the table.
244 *
245 * @default 'center'
246 */
247 alignment?: string;
248}
249/**
250 * The configuration of the table cell properties user interface (balloon).
251 */
252export interface TableCellPropertiesConfig {
253 borderColors?: TableColorConfig;
254 backgroundColors?: TableColorConfig;
255 defaultProperties?: TableCellPropertiesOptions;
256}
257/**
258 * An array of color definitions (either strings or objects).
259 *
260 * ```ts
261 * const colors = [
262 * {
263 * color: 'hsl(0, 0%, 60%)',
264 * label: 'Grey'
265 * },
266 * 'hsl(0, 0%, 80%)',
267 * {
268 * color: 'hsl(0, 0%, 90%)',
269 * label: 'Light grey'
270 * },
271 * {
272 * color: 'hsl(0, 0%, 100%)',
273 * label: 'White',
274 * hasBorder: true
275 * },
276 * '#FF0000'
277 * ]
278 * ```
279 *
280 * Usually used as a configuration parameter, for instance in
281 * {@link module:table/tableconfig~TableConfig#tableProperties `config.table.tableProperties`}
282 * or {@link module:table/tableconfig~TableConfig#tableCellProperties `config.table.tableCellProperties`}.
283 */
284export type TableColorConfig = Array<ColorOption>;
285/**
286 * The configuration of the table cell default properties feature.
287 */
288export interface TableCellPropertiesOptions {
289 /**
290 * The default `width` of the table cell.
291 */
292 width?: string;
293 /**
294 * The default `height` of the table cell.
295 */
296 height?: string;
297 /**
298 * The default `padding` of the table cell.
299 */
300 padding?: string;
301 /**
302 * The default `background-color` of the table cell.
303 */
304 backgroundColor?: string;
305 /**
306 * The default `border-color` of the table cell.
307 */
308 borderColor?: string;
309 /**
310 * The default `border-width` of the table cell.
311 */
312 borderWidth?: string;
313 /**
314 * The default `border-style` of the table cell.
315 *
316 * @default 'none'
317 */
318 borderStyle?: string;
319 /**
320 * The default `horizontalAlignment` of the table cell.
321 *
322 * @default 'center'
323 */
324 horizontalAlignment?: string;
325 /**
326 * The default `verticalAlignment` of the table cell.
327 *
328 * @default 'middle'
329 */
330 verticalAlignment?: string;
331}