From 18760387db8438a8bbbbf19258ac4df87502f499 Mon Sep 17 00:00:00 2001 From: fmuscolino Date: Tue, 5 Feb 2019 15:47:09 +0100 Subject: [PATCH] Table pagination: add cantSplit and tblHeader row properties --- .../table/table-row/table-row-properties.ts | 36 ++++++++++++++++++- src/file/table/table-row/table-row.ts | 12 +++++++ 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/src/file/table/table-row/table-row-properties.ts b/src/file/table/table-row/table-row-properties.ts index 7d96ea9810..f3e3a168ce 100644 --- a/src/file/table/table-row/table-row-properties.ts +++ b/src/file/table/table-row/table-row-properties.ts @@ -1,7 +1,41 @@ -import { XmlComponent } from "file/xml-components"; +import { XmlAttributeComponent, XmlComponent } from "file/xml-components"; export class TableRowProperties extends XmlComponent { constructor() { super("w:trPr"); } + + public setCantSplit(): TableRowProperties { + this.root.push(new CantSplit()); + + return this; + } + + public setTableHeader(): TableRowProperties { + this.root.push(new TableHeader()); + + return this; + } +} + +class CantSplitAttributes extends XmlAttributeComponent<{ readonly val: boolean }> { + protected readonly xmlKeys = { val: "w:val" }; +} + +export class CantSplit extends XmlComponent { + constructor() { + super("w:cantSplit"); + this.root.push(new CantSplitAttributes({ val: true })); + } +} + +class TableHeaderAttributes extends XmlAttributeComponent<{ readonly val: boolean }> { + protected readonly xmlKeys = { val: "w:val" }; +} + +export class TableHeader extends XmlComponent { + constructor() { + super("w:tblHeader"); + this.root.push(new TableHeaderAttributes({ val: true })); + } } diff --git a/src/file/table/table-row/table-row.ts b/src/file/table/table-row/table-row.ts index 3a08197cf7..b7c4e38fa2 100644 --- a/src/file/table/table-row/table-row.ts +++ b/src/file/table/table-row/table-row.ts @@ -37,4 +37,16 @@ export class TableRow extends XmlComponent { return this.addGridSpan(startIndex, cellSpan); } + + public setCantSplit(): TableRow { + this.properties.setCantSplit(); + + return this; + } + + public setTableHeader(): TableRow { + this.properties.setTableHeader(); + + return this; + } }