@@ -62,6 +62,73 @@ describe('@api Table ', function () {
6262
6363 expect ( table . toString ( ) ) . toEqual ( expected . join ( '\n' ) ) ;
6464 } ) ;
65+
66+ it ( 'supports complex layouts' , ( ) => {
67+ let table = new Table ( { style : { border : [ ] , head : [ ] } } ) ;
68+ table . push (
69+ [ { content : 'TOP' , colSpan : 9 , hAlign : 'center' } ] ,
70+ [
71+ { content : 'TL' , rowSpan : 4 , vAlign : 'center' } ,
72+ { content : 'A1' , rowSpan : 3 } ,
73+ 'B1' ,
74+ 'C1' ,
75+ { content : 'D1' , rowSpan : 3 , vAlign : 'center' } ,
76+ 'E1' ,
77+ 'F1' ,
78+ { content : 'G1' , rowSpan : 3 } ,
79+ { content : 'TR' , rowSpan : 4 , vAlign : 'center' } ,
80+ ] ,
81+ [ { rowSpan : 2 , content : 'B2' } , 'C2' , { rowSpan : 2 , colSpan : 2 , content : 'E2' } ] ,
82+ [ 'C3' ] ,
83+ [ { content : 'A2' , colSpan : 7 , hAlign : 'center' } ] ,
84+ [ { content : 'CLEAR' , colSpan : 9 , hAlign : 'center' } ] ,
85+ [
86+ { content : 'BL' , rowSpan : 4 , vAlign : 'center' } ,
87+ { content : 'A3' , colSpan : 7 , hAlign : 'center' } ,
88+ { content : 'BR' , rowSpan : 4 , vAlign : 'center' } ,
89+ ] ,
90+ [
91+ { content : 'A4' , colSpan : 3 , hAlign : 'center' } ,
92+ { content : 'D2' , rowSpan : 2 , vAlign : 'center' } ,
93+ { content : 'E3' , colSpan : 2 , hAlign : 'center' } ,
94+ { content : 'G2' , rowSpan : 3 , vAlign : 'center' } ,
95+ ] ,
96+ [
97+ { content : 'A5' , rowSpan : 2 , vAlign : 'center' } ,
98+ { content : 'B3' , colSpan : 2 , hAlign : 'center' } ,
99+ { content : 'E4' , rowSpan : 2 , vAlign : 'center' } ,
100+ { content : 'F3' , rowSpan : 2 , vAlign : 'center' } ,
101+ ] ,
102+ [ 'B4' , { content : 'C4' , colSpan : 2 , hAlign : 'center' } ] ,
103+ [ { content : 'BOTTOM' , colSpan : 9 , hAlign : 'center' } ]
104+ ) ;
105+ let expected = [
106+ '┌────────────────────────────────────────────┐' ,
107+ '│ TOP │' ,
108+ '├────┬────┬────┬────┬────┬────┬────┬────┬────┤' ,
109+ '│ │ A1 │ B1 │ C1 │ │ E1 │ F1 │ G1 │ │' ,
110+ '│ │ ├────┼────┤ ├────┴────┤ │ │' ,
111+ '│ │ │ B2 │ C2 │ D1 │ E2 │ │ │' ,
112+ '│ TL │ │ ├────┤ │ │ │ TR │' ,
113+ '│ │ │ │ C3 │ │ │ │ │' ,
114+ '│ ├────┴────┴────┴────┴─────────┴────┤ │' ,
115+ '│ │ A2 │ │' ,
116+ '├────┴──────────────────────────────────┴────┤' ,
117+ '│ CLEAR │' ,
118+ '├────┬──────────────────────────────────┬────┤' ,
119+ '│ │ A3 │ │' ,
120+ '│ ├──────────────┬────┬─────────┬────┤ │' ,
121+ '│ │ A4 │ │ E3 │ │ │' ,
122+ '│ BL ├────┬─────────┤ D2 ├────┬────┤ │ BR │' ,
123+ '│ │ │ B3 │ │ │ │ G2 │ │' ,
124+ '│ │ A5 ├────┬────┴────┤ E4 │ F3 │ │ │' ,
125+ '│ │ │ B4 │ C4 │ │ │ │ │' ,
126+ '├────┴────┴────┴─────────┴────┴────┴────┴────┤' ,
127+ '│ BOTTOM │' ,
128+ '└────────────────────────────────────────────┘' ,
129+ ] ;
130+ expect ( table . toString ( ) ) . toEqual ( expected . join ( '\n' ) ) ;
131+ } ) ;
65132} ) ;
66133
67134/*
0 commit comments