File tree 3 files changed +52
-0
lines changed
3 files changed +52
-0
lines changed Original file line number Diff line number Diff line change @@ -119,6 +119,24 @@ describe('table plugin', () => {
119
119
. should ( 'have.length' , 3 )
120
120
. each ( td => cy . wrap ( td ) . should ( 'have.css' , 'text-align' , 'center' ) )
121
121
} )
122
+
123
+ it ( 'Creates table and add multilines' , function ( ) {
124
+ const multilinesContent = 'Line 1\nLine 2\nLine 3'
125
+
126
+ cy . getActionEntry ( 'table' ) . click ( )
127
+ cy . getContent ( )
128
+ . find ( 'table:nth-of-type(1) tr:nth-child(2) td:nth-child(1)' )
129
+ . click ( )
130
+
131
+ cy . getContent ( )
132
+ . type ( multilinesContent )
133
+
134
+ cy . getContent ( )
135
+ . find ( 'table:nth-of-type(1) tr:nth-child(2) td:nth-child(1) .content' )
136
+ . then ( ( $el ) => {
137
+ expect ( $el . get ( 0 ) . innerHTML ) . to . equal ( multilinesContent . replace ( / \n / g, '<br>' ) )
138
+ } )
139
+ } )
122
140
} )
123
141
124
142
describe ( 'Table extension integrated in the editor' , ( ) => {
Original file line number Diff line number Diff line change @@ -299,6 +299,7 @@ describe('Workspace', function() {
299
299
checkContent ( )
300
300
} )
301
301
} )
302
+
302
303
} )
303
304
304
305
const openSidebar = filename => {
Original file line number Diff line number Diff line change 1
1
import { TableCell } from '@tiptap/extension-table-cell'
2
+ import { Plugin } from '@tiptap/pm/state'
3
+ import { Fragment } from '@tiptap/pm/model'
2
4
3
5
export default TableCell . extend ( {
4
6
content : 'inline*' ,
@@ -30,4 +32,35 @@ export default TableCell.extend({
30
32
} ,
31
33
}
32
34
} ,
35
+
36
+ addProseMirrorPlugins ( ) {
37
+ return [
38
+ new Plugin ( {
39
+ props : {
40
+ // Special-treat empty lines in pasted content to prevent jumping out of cell
41
+ handlePaste : ( view , event , slice ) => {
42
+ if ( slice . content . childCount > 1 ) {
43
+ const state = view . state
44
+ const childCount = slice . content . childCount
45
+ const childNodes = [ ]
46
+ for ( let i = 0 ; i < childCount ; i ++ ) {
47
+ if ( i === 0 ) {
48
+ childNodes . push ( state . schema . text ( '\n' ) )
49
+ }
50
+
51
+ // Ignore empty children (i.e. empty lines)
52
+ if ( ! slice . content . child ( i ) . firstChild ) {
53
+ continue
54
+ }
55
+
56
+ childNodes . push ( state . schema . text ( slice . content . child ( i ) . textContent , slice . content . child ( i ) . firstChild . marks ) )
57
+ }
58
+ const newNode = view . state . schema . node ( 'paragraph' , [ ] , childNodes )
59
+ slice . content = Fragment . empty . addToStart ( newNode )
60
+ }
61
+ } ,
62
+ } ,
63
+ } ) ,
64
+ ]
65
+ } ,
33
66
} )
You can’t perform that action at this time.
0 commit comments