@ckeditor/ckeditor5-table 47.2.0-alpha.7 → 47.3.0-alpha.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 (332) hide show
  1. package/LICENSE.md +4 -4
  2. package/build/table.js +2 -2
  3. package/build/translations/af.js +1 -1
  4. package/build/translations/ar.js +1 -1
  5. package/build/translations/ast.js +1 -1
  6. package/build/translations/az.js +1 -1
  7. package/build/translations/be.js +1 -1
  8. package/build/translations/bg.js +1 -1
  9. package/build/translations/bn.js +1 -1
  10. package/build/translations/bs.js +1 -1
  11. package/build/translations/ca.js +1 -1
  12. package/build/translations/cs.js +1 -1
  13. package/build/translations/da.js +1 -1
  14. package/build/translations/de-ch.js +1 -1
  15. package/build/translations/de.js +1 -1
  16. package/build/translations/el.js +1 -1
  17. package/build/translations/en-au.js +1 -1
  18. package/build/translations/en-gb.js +1 -1
  19. package/build/translations/eo.js +1 -1
  20. package/build/translations/es-co.js +1 -1
  21. package/build/translations/es.js +1 -1
  22. package/build/translations/et.js +1 -1
  23. package/build/translations/eu.js +1 -1
  24. package/build/translations/fa.js +1 -1
  25. package/build/translations/fi.js +1 -1
  26. package/build/translations/fr.js +1 -1
  27. package/build/translations/gl.js +1 -1
  28. package/build/translations/gu.js +1 -1
  29. package/build/translations/he.js +1 -1
  30. package/build/translations/hi.js +1 -1
  31. package/build/translations/hr.js +1 -1
  32. package/build/translations/hu.js +1 -1
  33. package/build/translations/hy.js +1 -1
  34. package/build/translations/id.js +1 -1
  35. package/build/translations/it.js +1 -1
  36. package/build/translations/ja.js +1 -1
  37. package/build/translations/jv.js +1 -1
  38. package/build/translations/kk.js +1 -1
  39. package/build/translations/km.js +1 -1
  40. package/build/translations/kn.js +1 -1
  41. package/build/translations/ko.js +1 -1
  42. package/build/translations/ku.js +1 -1
  43. package/build/translations/lt.js +1 -1
  44. package/build/translations/lv.js +1 -1
  45. package/build/translations/ms.js +1 -1
  46. package/build/translations/nb.js +1 -1
  47. package/build/translations/ne.js +1 -1
  48. package/build/translations/nl.js +1 -1
  49. package/build/translations/no.js +1 -1
  50. package/build/translations/oc.js +1 -1
  51. package/build/translations/pl.js +1 -1
  52. package/build/translations/pt-br.js +1 -1
  53. package/build/translations/pt.js +1 -1
  54. package/build/translations/ro.js +1 -1
  55. package/build/translations/ru.js +1 -1
  56. package/build/translations/si.js +1 -1
  57. package/build/translations/sk.js +1 -1
  58. package/build/translations/sl.js +1 -1
  59. package/build/translations/sq.js +1 -1
  60. package/build/translations/sr-latn.js +1 -1
  61. package/build/translations/sr.js +1 -1
  62. package/build/translations/sv.js +1 -1
  63. package/build/translations/th.js +1 -1
  64. package/build/translations/ti.js +1 -1
  65. package/build/translations/tk.js +1 -1
  66. package/build/translations/tr.js +1 -1
  67. package/build/translations/tt.js +1 -1
  68. package/build/translations/ug.js +1 -1
  69. package/build/translations/uk.js +1 -1
  70. package/build/translations/ur.js +1 -1
  71. package/build/translations/uz.js +1 -1
  72. package/build/translations/vi.js +1 -1
  73. package/build/translations/zh-cn.js +1 -1
  74. package/build/translations/zh.js +1 -1
  75. package/dist/index-content.css +32 -3
  76. package/dist/index-editor.css +181 -88
  77. package/dist/index.css +302 -160
  78. package/dist/index.css.map +1 -1
  79. package/dist/index.js +11215 -8546
  80. package/dist/index.js.map +1 -1
  81. package/dist/translations/af.js +1 -1
  82. package/dist/translations/af.umd.js +1 -1
  83. package/dist/translations/ar.js +1 -1
  84. package/dist/translations/ar.umd.js +1 -1
  85. package/dist/translations/ast.js +1 -1
  86. package/dist/translations/ast.umd.js +1 -1
  87. package/dist/translations/az.js +1 -1
  88. package/dist/translations/az.umd.js +1 -1
  89. package/dist/translations/be.js +1 -1
  90. package/dist/translations/be.umd.js +1 -1
  91. package/dist/translations/bg.js +1 -1
  92. package/dist/translations/bg.umd.js +1 -1
  93. package/dist/translations/bn.js +1 -1
  94. package/dist/translations/bn.umd.js +1 -1
  95. package/dist/translations/bs.js +1 -1
  96. package/dist/translations/bs.umd.js +1 -1
  97. package/dist/translations/ca.js +1 -1
  98. package/dist/translations/ca.umd.js +1 -1
  99. package/dist/translations/cs.js +1 -1
  100. package/dist/translations/cs.umd.js +1 -1
  101. package/dist/translations/da.js +1 -1
  102. package/dist/translations/da.umd.js +1 -1
  103. package/dist/translations/de-ch.js +1 -1
  104. package/dist/translations/de-ch.umd.js +1 -1
  105. package/dist/translations/de.js +1 -1
  106. package/dist/translations/de.umd.js +1 -1
  107. package/dist/translations/el.js +1 -1
  108. package/dist/translations/el.umd.js +1 -1
  109. package/dist/translations/en-au.js +1 -1
  110. package/dist/translations/en-au.umd.js +1 -1
  111. package/dist/translations/en-gb.js +1 -1
  112. package/dist/translations/en-gb.umd.js +1 -1
  113. package/dist/translations/en.js +1 -1
  114. package/dist/translations/en.umd.js +1 -1
  115. package/dist/translations/eo.js +1 -1
  116. package/dist/translations/eo.umd.js +1 -1
  117. package/dist/translations/es-co.js +1 -1
  118. package/dist/translations/es-co.umd.js +1 -1
  119. package/dist/translations/es.js +1 -1
  120. package/dist/translations/es.umd.js +1 -1
  121. package/dist/translations/et.js +1 -1
  122. package/dist/translations/et.umd.js +1 -1
  123. package/dist/translations/eu.js +1 -1
  124. package/dist/translations/eu.umd.js +1 -1
  125. package/dist/translations/fa.js +1 -1
  126. package/dist/translations/fa.umd.js +1 -1
  127. package/dist/translations/fi.js +1 -1
  128. package/dist/translations/fi.umd.js +1 -1
  129. package/dist/translations/fr.js +1 -1
  130. package/dist/translations/fr.umd.js +1 -1
  131. package/dist/translations/gl.js +1 -1
  132. package/dist/translations/gl.umd.js +1 -1
  133. package/dist/translations/gu.js +1 -1
  134. package/dist/translations/gu.umd.js +1 -1
  135. package/dist/translations/he.js +1 -1
  136. package/dist/translations/he.umd.js +1 -1
  137. package/dist/translations/hi.js +1 -1
  138. package/dist/translations/hi.umd.js +1 -1
  139. package/dist/translations/hr.js +1 -1
  140. package/dist/translations/hr.umd.js +1 -1
  141. package/dist/translations/hu.js +1 -1
  142. package/dist/translations/hu.umd.js +1 -1
  143. package/dist/translations/hy.js +1 -1
  144. package/dist/translations/hy.umd.js +1 -1
  145. package/dist/translations/id.js +1 -1
  146. package/dist/translations/id.umd.js +1 -1
  147. package/dist/translations/it.js +1 -1
  148. package/dist/translations/it.umd.js +1 -1
  149. package/dist/translations/ja.js +1 -1
  150. package/dist/translations/ja.umd.js +1 -1
  151. package/dist/translations/jv.js +1 -1
  152. package/dist/translations/jv.umd.js +1 -1
  153. package/dist/translations/kk.js +1 -1
  154. package/dist/translations/kk.umd.js +1 -1
  155. package/dist/translations/km.js +1 -1
  156. package/dist/translations/km.umd.js +1 -1
  157. package/dist/translations/kn.js +1 -1
  158. package/dist/translations/kn.umd.js +1 -1
  159. package/dist/translations/ko.js +1 -1
  160. package/dist/translations/ko.umd.js +1 -1
  161. package/dist/translations/ku.js +1 -1
  162. package/dist/translations/ku.umd.js +1 -1
  163. package/dist/translations/lt.js +1 -1
  164. package/dist/translations/lt.umd.js +1 -1
  165. package/dist/translations/lv.js +1 -1
  166. package/dist/translations/lv.umd.js +1 -1
  167. package/dist/translations/ms.js +1 -1
  168. package/dist/translations/ms.umd.js +1 -1
  169. package/dist/translations/nb.js +1 -1
  170. package/dist/translations/nb.umd.js +1 -1
  171. package/dist/translations/ne.js +1 -1
  172. package/dist/translations/ne.umd.js +1 -1
  173. package/dist/translations/nl.js +1 -1
  174. package/dist/translations/nl.umd.js +1 -1
  175. package/dist/translations/no.js +1 -1
  176. package/dist/translations/no.umd.js +1 -1
  177. package/dist/translations/oc.js +1 -1
  178. package/dist/translations/oc.umd.js +1 -1
  179. package/dist/translations/pl.js +1 -1
  180. package/dist/translations/pl.umd.js +1 -1
  181. package/dist/translations/pt-br.js +1 -1
  182. package/dist/translations/pt-br.umd.js +1 -1
  183. package/dist/translations/pt.js +1 -1
  184. package/dist/translations/pt.umd.js +1 -1
  185. package/dist/translations/ro.js +1 -1
  186. package/dist/translations/ro.umd.js +1 -1
  187. package/dist/translations/ru.js +1 -1
  188. package/dist/translations/ru.umd.js +1 -1
  189. package/dist/translations/si.js +1 -1
  190. package/dist/translations/si.umd.js +1 -1
  191. package/dist/translations/sk.js +1 -1
  192. package/dist/translations/sk.umd.js +1 -1
  193. package/dist/translations/sl.js +1 -1
  194. package/dist/translations/sl.umd.js +1 -1
  195. package/dist/translations/sq.js +1 -1
  196. package/dist/translations/sq.umd.js +1 -1
  197. package/dist/translations/sr-latn.js +1 -1
  198. package/dist/translations/sr-latn.umd.js +1 -1
  199. package/dist/translations/sr.js +1 -1
  200. package/dist/translations/sr.umd.js +1 -1
  201. package/dist/translations/sv.js +1 -1
  202. package/dist/translations/sv.umd.js +1 -1
  203. package/dist/translations/th.js +1 -1
  204. package/dist/translations/th.umd.js +1 -1
  205. package/dist/translations/ti.js +1 -1
  206. package/dist/translations/ti.umd.js +1 -1
  207. package/dist/translations/tk.js +1 -1
  208. package/dist/translations/tk.umd.js +1 -1
  209. package/dist/translations/tr.js +1 -1
  210. package/dist/translations/tr.umd.js +1 -1
  211. package/dist/translations/tt.js +1 -1
  212. package/dist/translations/tt.umd.js +1 -1
  213. package/dist/translations/ug.js +1 -1
  214. package/dist/translations/ug.umd.js +1 -1
  215. package/dist/translations/uk.js +1 -1
  216. package/dist/translations/uk.umd.js +1 -1
  217. package/dist/translations/ur.js +1 -1
  218. package/dist/translations/ur.umd.js +1 -1
  219. package/dist/translations/uz.js +1 -1
  220. package/dist/translations/uz.umd.js +1 -1
  221. package/dist/translations/vi.js +1 -1
  222. package/dist/translations/vi.umd.js +1 -1
  223. package/dist/translations/zh-cn.js +1 -1
  224. package/dist/translations/zh-cn.umd.js +1 -1
  225. package/dist/translations/zh.js +1 -1
  226. package/dist/translations/zh.umd.js +1 -1
  227. package/lang/contexts.json +6 -0
  228. package/lang/translations/af.po +24 -0
  229. package/lang/translations/ar.po +24 -0
  230. package/lang/translations/ast.po +24 -0
  231. package/lang/translations/az.po +24 -0
  232. package/lang/translations/be.po +24 -0
  233. package/lang/translations/bg.po +24 -0
  234. package/lang/translations/bn.po +24 -0
  235. package/lang/translations/bs.po +24 -0
  236. package/lang/translations/ca.po +24 -0
  237. package/lang/translations/cs.po +24 -0
  238. package/lang/translations/da.po +24 -0
  239. package/lang/translations/de-ch.po +24 -0
  240. package/lang/translations/de.po +24 -0
  241. package/lang/translations/el.po +24 -0
  242. package/lang/translations/en-au.po +24 -0
  243. package/lang/translations/en-gb.po +24 -0
  244. package/lang/translations/en.po +24 -0
  245. package/lang/translations/eo.po +24 -0
  246. package/lang/translations/es-co.po +24 -0
  247. package/lang/translations/es.po +24 -0
  248. package/lang/translations/et.po +24 -0
  249. package/lang/translations/eu.po +24 -0
  250. package/lang/translations/fa.po +24 -0
  251. package/lang/translations/fi.po +24 -0
  252. package/lang/translations/fr.po +24 -0
  253. package/lang/translations/gl.po +24 -0
  254. package/lang/translations/gu.po +24 -0
  255. package/lang/translations/he.po +24 -0
  256. package/lang/translations/hi.po +24 -0
  257. package/lang/translations/hr.po +24 -0
  258. package/lang/translations/hu.po +24 -0
  259. package/lang/translations/hy.po +24 -0
  260. package/lang/translations/id.po +24 -0
  261. package/lang/translations/it.po +24 -0
  262. package/lang/translations/ja.po +24 -0
  263. package/lang/translations/jv.po +24 -0
  264. package/lang/translations/kk.po +24 -0
  265. package/lang/translations/km.po +24 -0
  266. package/lang/translations/kn.po +24 -0
  267. package/lang/translations/ko.po +24 -0
  268. package/lang/translations/ku.po +24 -0
  269. package/lang/translations/lt.po +24 -0
  270. package/lang/translations/lv.po +24 -0
  271. package/lang/translations/ms.po +24 -0
  272. package/lang/translations/nb.po +24 -0
  273. package/lang/translations/ne.po +24 -0
  274. package/lang/translations/nl.po +24 -0
  275. package/lang/translations/no.po +24 -0
  276. package/lang/translations/oc.po +24 -0
  277. package/lang/translations/pl.po +24 -0
  278. package/lang/translations/pt-br.po +24 -0
  279. package/lang/translations/pt.po +24 -0
  280. package/lang/translations/ro.po +24 -0
  281. package/lang/translations/ru.po +24 -0
  282. package/lang/translations/si.po +24 -0
  283. package/lang/translations/sk.po +24 -0
  284. package/lang/translations/sl.po +24 -0
  285. package/lang/translations/sq.po +24 -0
  286. package/lang/translations/sr-latn.po +24 -0
  287. package/lang/translations/sr.po +24 -0
  288. package/lang/translations/sv.po +24 -0
  289. package/lang/translations/th.po +24 -0
  290. package/lang/translations/ti.po +24 -0
  291. package/lang/translations/tk.po +24 -0
  292. package/lang/translations/tr.po +24 -0
  293. package/lang/translations/tt.po +24 -0
  294. package/lang/translations/ug.po +24 -0
  295. package/lang/translations/uk.po +24 -0
  296. package/lang/translations/ur.po +24 -0
  297. package/lang/translations/uz.po +24 -0
  298. package/lang/translations/vi.po +24 -0
  299. package/lang/translations/zh-cn.po +24 -0
  300. package/lang/translations/zh.po +24 -0
  301. package/package.json +9 -9
  302. package/src/augmentation.d.ts +21 -0
  303. package/src/converters/downcast.d.ts +26 -1
  304. package/src/converters/downcast.js +129 -3
  305. package/src/converters/tableproperties.d.ts +46 -2
  306. package/src/converters/tableproperties.js +218 -1
  307. package/src/converters/upcasttable.js +147 -36
  308. package/src/index.d.ts +5 -1
  309. package/src/index.js +5 -0
  310. package/src/plaintableoutput.js +0 -91
  311. package/src/tablecellproperties/tablecellpropertiesediting.js +7 -4
  312. package/src/tablecellproperties/tablecellpropertiesuiexperimental.d.ts +128 -0
  313. package/src/tablecellproperties/tablecellpropertiesuiexperimental.js +386 -0
  314. package/src/tablecellproperties/ui/tablecellpropertiesviewexperimental.d.ts +237 -0
  315. package/src/tablecellproperties/ui/tablecellpropertiesviewexperimental.js +633 -0
  316. package/src/tableconfig.d.ts +187 -10
  317. package/src/tableediting.d.ts +5 -0
  318. package/src/tableediting.js +28 -1
  319. package/src/tablelayout/tablelayoutediting.js +8 -2
  320. package/src/tableproperties/tablepropertiesediting.js +255 -8
  321. package/src/tableproperties/tablepropertiesuiexperimental.d.ts +136 -0
  322. package/src/tableproperties/tablepropertiesuiexperimental.js +375 -0
  323. package/src/tableproperties/ui/tablepropertiesviewexperimental.d.ts +216 -0
  324. package/src/tableproperties/ui/tablepropertiesviewexperimental.js +544 -0
  325. package/src/utils/structure.d.ts +5 -1
  326. package/src/utils/structure.js +10 -0
  327. package/src/utils/ui/table-propertiesexperimental.d.ts +215 -0
  328. package/src/utils/ui/table-propertiesexperimental.js +391 -0
  329. package/theme/formrow-experimental.css +15 -0
  330. package/theme/table.css +2 -2
  331. package/theme/tableform-experimental.css +61 -0
  332. package/theme/tableproperties-experimental.css +78 -0
@@ -23,7 +23,7 @@ import type { ColorOption, ColorPickerConfig } from 'ckeditor5/src/ui.js';
23
23
  */
24
24
  export interface TableConfig {
25
25
  /**
26
- * Number of rows and columns to render by table heading when inserting new tables.
26
+ * Number of rows and columns to render by the table heading when inserting new tables.
27
27
  *
28
28
  * You can configure it like this:
29
29
  *
@@ -36,7 +36,7 @@ export interface TableConfig {
36
36
  * };
37
37
  * ```
38
38
  *
39
- * Both rows and columns properties are optional defaulting to 0 (no heading).
39
+ * Both rows and columns properties are optional, defaulting to 0 (no heading).
40
40
  */
41
41
  defaultHeadings?: {
42
42
  rows?: number;
@@ -86,7 +86,7 @@ export interface TableConfig {
86
86
  */
87
87
  tableToolbar?: Array<ToolbarConfigItem>;
88
88
  /**
89
- * The configuration of the table properties user interface (balloon). It allows to define:
89
+ * The configuration of the table properties user interface (balloon). It allows us to define:
90
90
  *
91
91
  * * The color palette for the table border color style field (`tableProperties.borderColors`),
92
92
  * * The color palette for the table background style field (`tableProperties.backgroundColors`).
@@ -130,9 +130,9 @@ export interface TableConfig {
130
130
  * {@link module:table/tableconfig~TablePropertiesOptions Read more about the supported properties.}
131
131
  *
132
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.
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 more conveniently. The `defaultProperties` option does impact the data.
135
+ * The editor model will not keep the default values.
136
136
  *
137
137
  * The default color palettes for the table background and the table border are the same
138
138
  * ({@link module:table/utils/ui/table-properties#defaultColors check out their content}).
@@ -144,7 +144,7 @@ export interface TableConfig {
144
144
  */
145
145
  tableProperties?: TablePropertiesConfig;
146
146
  /**
147
- * The configuration of the table cell properties user interface (balloon). It allows to define:
147
+ * The configuration of the table cell properties user interface (balloon). It allows us to define:
148
148
  *
149
149
  * * The color palette for the cell border color style field (`tableCellProperties.borderColors`),
150
150
  * * The color palette for the cell background style field (`tableCellProperties.backgroundColors`).
@@ -187,11 +187,11 @@ export interface TableConfig {
187
187
  * {@link module:table/tableconfig~TablePropertiesOptions Read more about the supported properties.}
188
188
  *
189
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
190
+ * i.e., they do not limit or filter the colors in the data. They are used only in the user interface,
191
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.
192
+ * The editor model will not keep the default values.
193
193
  *
194
- * The default color palettes for the cell background and the cell border are the same
194
+ * The default color palettes for the cell background and the cell border are identical
195
195
  * ({@link module:table/utils/ui/table-properties#defaultColors check out their content}).
196
196
  *
197
197
  * Both color palette configurations must follow the
@@ -225,9 +225,99 @@ export interface TableConfig {
225
225
  * The configuration of the table properties user interface (balloon).
226
226
  */
227
227
  export interface TablePropertiesConfig {
228
+ /**
229
+ * The color palette for the table border color picker.
230
+ *
231
+ * ```ts
232
+ * const tableConfig = {
233
+ * tableProperties: {
234
+ * borderColors: [
235
+ * {
236
+ * color: 'hsl(0, 0%, 0%)',
237
+ * label: 'Black'
238
+ * },
239
+ * {
240
+ * color: 'hsl(0, 0%, 100%)',
241
+ * label: 'White',
242
+ * hasBorder: true
243
+ * }
244
+ * ]
245
+ * }
246
+ * };
247
+ * ```
248
+ *
249
+ * **Note**: This configuration only affects the UI. It does not limit or filter the colors in the data.
250
+ *
251
+ * Defaults to {@link module:table/utils/ui/table-properties#defaultColors}.
252
+ *
253
+ * @see {@link module:table/tableconfig~TableColorConfig}
254
+ */
228
255
  borderColors?: TableColorConfig;
256
+ /**
257
+ * The color palette for the table background color picker.
258
+ *
259
+ * ```ts
260
+ * const tableConfig = {
261
+ * tableProperties: {
262
+ * backgroundColors: [
263
+ * {
264
+ * color: 'hsl(0, 0%, 100%)',
265
+ * label: 'White',
266
+ * hasBorder: true
267
+ * },
268
+ * {
269
+ * color: 'hsl(120, 75%, 60%)',
270
+ * label: 'Green'
271
+ * }
272
+ * ]
273
+ * }
274
+ * };
275
+ * ```
276
+ *
277
+ * **Note**: This configuration only affects the UI. It does not limit or filter the colors in the data.
278
+ *
279
+ * Defaults to {@link module:table/utils/ui/table-properties#defaultColors}.
280
+ *
281
+ * @see {@link module:table/tableconfig~TableColorConfig}
282
+ */
229
283
  backgroundColors?: TableColorConfig;
284
+ /**
285
+ * Default styles for newly created tables.
286
+ *
287
+ * ```ts
288
+ * const tableConfig = {
289
+ * tableProperties: {
290
+ * defaultProperties: {
291
+ * borderStyle: 'dashed',
292
+ * borderColor: 'hsl(0, 0%, 90%)',
293
+ * borderWidth: '3px',
294
+ * alignment: 'left',
295
+ * width: '550px',
296
+ * height: '450px'
297
+ * }
298
+ * }
299
+ * }
300
+ * ```
301
+ *
302
+ * **Note**: The model does not store the default values. The editor will only keep values that differ from the defaults.
303
+ *
304
+ * See {@link module:table/tableconfig~TablePropertiesOptions} for the full list of properties.
305
+ */
230
306
  defaultProperties?: TablePropertiesOptions;
307
+ /**
308
+ * Configuration of the table alignment behavior in the editor output.
309
+ *
310
+ * ```ts
311
+ * const tableConfig = {
312
+ * tableProperties: {
313
+ * alignment: {
314
+ * useInlineStyles: false // Use CSS classes instead of inline styles
315
+ * }
316
+ * }
317
+ * };
318
+ * ```
319
+ */
320
+ alignment?: TableAlignmentConfig;
231
321
  /**
232
322
  * Configuration of the color picker in the table properties balloon.
233
323
  *
@@ -276,8 +366,84 @@ export interface TablePropertiesOptions {
276
366
  * The configuration of the table cell properties user interface (balloon).
277
367
  */
278
368
  export interface TableCellPropertiesConfig {
369
+ /**
370
+ * The color palette for the table cell border color picker.
371
+ *
372
+ * ```ts
373
+ * const tableConfig = {
374
+ * tableCellProperties: {
375
+ * borderColors: [
376
+ * {
377
+ * color: 'hsl(0, 0%, 0%)',
378
+ * label: 'Black'
379
+ * },
380
+ * {
381
+ * color: 'hsl(0, 0%, 100%)',
382
+ * label: 'White',
383
+ * hasBorder: true
384
+ * }
385
+ * ]
386
+ * }
387
+ * };
388
+ * ```
389
+ *
390
+ * **Note**: This configuration only affects the UI. It does not limit or filter the colors in the data.
391
+ *
392
+ * Defaults to {@link module:table/utils/ui/table-properties#defaultColors}.
393
+ *
394
+ * @see {@link module:table/tableconfig~TableColorConfig}
395
+ */
279
396
  borderColors?: TableColorConfig;
397
+ /**
398
+ * The color palette for the table cell background color picker.
399
+ *
400
+ * ```ts
401
+ * const tableConfig = {
402
+ * tableCellProperties: {
403
+ * backgroundColors: [
404
+ * {
405
+ * color: 'hsl(0, 0%, 100%)',
406
+ * label: 'White',
407
+ * hasBorder: true
408
+ * },
409
+ * {
410
+ * color: 'hsl(120, 75%, 60%)',
411
+ * label: 'Green'
412
+ * }
413
+ * ]
414
+ * }
415
+ * };
416
+ * ```
417
+ *
418
+ * **Note**: This configuration only affects the UI. It does not limit or filter the colors in the data.
419
+ *
420
+ * Defaults to {@link module:table/utils/ui/table-properties#defaultColors}.
421
+ *
422
+ * @see {@link module:table/tableconfig~TableColorConfig}
423
+ */
280
424
  backgroundColors?: TableColorConfig;
425
+ /**
426
+ * Default styles for newly created table cells.
427
+ *
428
+ * ```ts
429
+ * const tableConfig = {
430
+ * tableCellProperties: {
431
+ * defaultProperties: {
432
+ * borderStyle: 'dashed',
433
+ * borderColor: 'hsl(0, 0%, 90%)',
434
+ * borderWidth: '3px',
435
+ * horizontalAlignment: 'center',
436
+ * verticalAlignment: 'middle',
437
+ * padding: '10px'
438
+ * }
439
+ * }
440
+ * }
441
+ * ```
442
+ *
443
+ * **Note**: The model does not store the default values. The editor will only keep values that differ from the defaults.
444
+ *
445
+ * See {@link module:table/tableconfig~TableCellPropertiesOptions} for the full list of properties.
446
+ */
281
447
  defaultProperties?: TableCellPropertiesOptions;
282
448
  /**
283
449
  * Configuration of the color picker in the table cell properties balloon.
@@ -433,3 +599,14 @@ export interface TableCaptionConfig {
433
599
  * The type of the table.
434
600
  */
435
601
  export type TableType = 'content' | 'layout';
602
+ export interface TableAlignmentConfig {
603
+ /**
604
+ * Whether to use inline styles for table alignment in the editor output.
605
+ *
606
+ * * When `true` (default), the alignment is rendered as inline styles.
607
+ * * When `false`, the alignment is rendered as CSS classes.
608
+ *
609
+ * @default true
610
+ */
611
+ useInlineStyles?: boolean;
612
+ }
@@ -41,6 +41,11 @@ export declare class TableEditing extends Plugin {
41
41
  * Registers downcast handler for the additional table slot.
42
42
  */
43
43
  registerAdditionalSlot(slotHandler: TableConversionAdditionalSlot): void;
44
+ /**
45
+ * Adds converters for plain table output. These converters are used either when the `PlainTableOutput` plugin is loaded
46
+ * or when content is processed by the clipboard pipeline, ensuring that pasted tables are not wrapped in a <figure> element.
47
+ */
48
+ private _addPlainTableOutputConverters;
44
49
  }
45
50
  /**
46
51
  * By default, only the `tableRow` elements from the `table` model are downcast inside the `<table>` and
@@ -7,7 +7,7 @@
7
7
  */
8
8
  import { Plugin } from 'ckeditor5/src/core.js';
9
9
  import { upcastTable, ensureParagraphInTableCell, skipEmptyTableRow, upcastTableFigure } from './converters/upcasttable.js';
10
- import { convertParagraphInTableCell, downcastCell, downcastRow, downcastTable } from './converters/downcast.js';
10
+ import { convertParagraphInTableCell, downcastCell, downcastRow, downcastTable, downcastTableBorderAndBackgroundAttributes, convertPlainTable, convertPlainTableCaption } from './converters/downcast.js';
11
11
  import { InsertTableCommand } from './commands/inserttablecommand.js';
12
12
  import { InsertRowCommand } from './commands/insertrowcommand.js';
13
13
  import { InsertColumnCommand } from './commands/insertcolumncommand.js';
@@ -148,6 +148,8 @@ export class TableEditing extends Plugin {
148
148
  model: { key: 'rowspan', value: upcastCellSpan('rowspan') },
149
149
  view: 'rowspan'
150
150
  });
151
+ // Plain table output converters (also used in the clipboard pipeline).
152
+ this._addPlainTableOutputConverters();
151
153
  // Define the config.
152
154
  editor.config.define('table.defaultHeadings.rows', 0);
153
155
  editor.config.define('table.defaultHeadings.columns', 0);
@@ -183,6 +185,31 @@ export class TableEditing extends Plugin {
183
185
  registerAdditionalSlot(slotHandler) {
184
186
  this._additionalSlots.push(slotHandler);
185
187
  }
188
+ /**
189
+ * Adds converters for plain table output. These converters are used either when the `PlainTableOutput` plugin is loaded
190
+ * or when content is processed by the clipboard pipeline, ensuring that pasted tables are not wrapped in a <figure> element.
191
+ */
192
+ _addPlainTableOutputConverters() {
193
+ const editor = this.editor;
194
+ // Override default table data downcast converter.
195
+ editor.conversion.for('dataDowncast').elementToStructure({
196
+ model: 'table',
197
+ view: convertPlainTable(editor),
198
+ converterPriority: 'high'
199
+ });
200
+ // Make sure table <caption> is downcasted into <caption> in the data pipeline when necessary.
201
+ if (editor.plugins.has('TableCaption')) {
202
+ editor.conversion.for('dataDowncast').elementToElement({
203
+ model: 'caption',
204
+ view: convertPlainTableCaption(editor),
205
+ converterPriority: 'high'
206
+ });
207
+ }
208
+ // Handle border-style, border-color, border-width and background-color table attributes.
209
+ if (editor.plugins.has('TableProperties')) {
210
+ downcastTableBorderAndBackgroundAttributes(editor);
211
+ }
212
+ }
186
213
  }
187
214
  /**
188
215
  * Returns fixed colspan and rowspan attrbutes values.
@@ -80,7 +80,7 @@ export class TableLayoutEditing extends Plugin {
80
80
  const { editor } = this;
81
81
  const { conversion } = editor;
82
82
  const preferredExternalTableType = editor.config.get('table.tableLayout.preferredExternalTableType');
83
- conversion.for('upcast').add(upcastLayoutTable(preferredExternalTableType));
83
+ conversion.for('upcast').add(upcastLayoutTable(editor, preferredExternalTableType));
84
84
  conversion.for('dataDowncast').add(dataDowncastLayoutTable());
85
85
  conversion.for('editingDowncast').attributeToAttribute({
86
86
  model: {
@@ -176,9 +176,10 @@ export class TableLayoutEditing extends Plugin {
176
176
  *
177
177
  * This conversion helper overrides the default table converter to meet table layout conditions.
178
178
  *
179
+ * @param editor Editor instance.
179
180
  * @returns Conversion helper.
180
181
  */
181
- function upcastLayoutTable(preferredExternalTableType) {
182
+ function upcastLayoutTable(editor, preferredExternalTableType) {
182
183
  return (dispatcher) => {
183
184
  dispatcher.on('element:table', (evt, data, conversionApi) => {
184
185
  const viewTable = data.viewItem;
@@ -197,6 +198,11 @@ function upcastLayoutTable(preferredExternalTableType) {
197
198
  conversionApi.consumable.consume(viewTable, { name: true });
198
199
  conversionApi.consumable.consume(viewTable, { attributes: ['role'] });
199
200
  conversionApi.consumable.consume(viewTable, { classes: ['layout-table'] });
201
+ // Layout tables have no border, so it's equitable to consume the border="0" attribute.
202
+ if (editor.config.get('experimentalFlags.upcastTableBorderZeroAttributes') &&
203
+ viewTable.getAttribute('border') === '0') {
204
+ conversionApi.consumable.consume(viewTable, { attributes: ['border'] });
205
+ }
200
206
  // Get all rows from the table and convert them.
201
207
  // While looping over the children of `<table>` we can be sure that first will be `<tbody>`
202
208
  // and optionally `<thead>` and `<tfoot>`, and in these elements are the table rows found.