diff --git a/src/file/document/body/body.spec.ts b/src/file/document/body/body.spec.ts index 63f7cf03ba..b0b6836cef 100644 --- a/src/file/document/body/body.spec.ts +++ b/src/file/document/body/body.spec.ts @@ -43,13 +43,13 @@ describe("Body", () => { }, }, }, - { "w:cols": { _attr: { "w:space": 708, "w:sep": false, "w:num": 1 } } }, - { "w:docGrid": { _attr: { "w:linePitch": 360 } } }, { "w:pgNumType": { _attr: {}, }, }, + { "w:cols": { _attr: { "w:space": 708, "w:sep": false, "w:num": 1 } } }, + { "w:docGrid": { _attr: { "w:linePitch": 360 } } }, ], }, ], diff --git a/src/file/document/body/section-properties/section-properties.spec.ts b/src/file/document/body/section-properties/section-properties.spec.ts index 3472772411..38bdfe5a4e 100644 --- a/src/file/document/body/section-properties/section-properties.spec.ts +++ b/src/file/document/body/section-properties/section-properties.spec.ts @@ -61,8 +61,10 @@ describe("SectionProperties", () => { expect(Object.keys(tree)).to.deep.equal(["w:sectPr"]); expect(tree["w:sectPr"]).to.be.an.instanceof(Array); - expect(tree["w:sectPr"][0]).to.deep.equal({ "w:pgSz": { _attr: { "w:h": 16838, "w:w": 11906, "w:orient": "portrait" } } }); - expect(tree["w:sectPr"][1]).to.deep.equal({ + expect(tree["w:sectPr"][0]).to.deep.equal({ "w:headerReference": { _attr: { "r:id": "rId100", "w:type": "default" } } }); + expect(tree["w:sectPr"][1]).to.deep.equal({ "w:footerReference": { _attr: { "r:id": "rId200", "w:type": "even" } } }); + expect(tree["w:sectPr"][2]).to.deep.equal({ "w:pgSz": { _attr: { "w:h": 16838, "w:w": 11906, "w:orient": "portrait" } } }); + expect(tree["w:sectPr"][3]).to.deep.equal({ "w:pgMar": { _attr: { "w:bottom": 1440, @@ -77,11 +79,11 @@ describe("SectionProperties", () => { }, }); - expect(tree["w:sectPr"][2]).to.deep.equal({ "w:cols": { _attr: { "w:space": 708, "w:sep": true, "w:num": 1 } } }); - expect(tree["w:sectPr"][3]).to.deep.equal({ "w:docGrid": { _attr: { "w:linePitch": 360 } } }); - expect(tree["w:sectPr"][4]).to.deep.equal({ "w:headerReference": { _attr: { "r:id": "rId100", "w:type": "default" } } }); - expect(tree["w:sectPr"][5]).to.deep.equal({ "w:footerReference": { _attr: { "r:id": "rId200", "w:type": "even" } } }); - expect(tree["w:sectPr"][6]).to.deep.equal({ "w:pgNumType": { _attr: { "w:fmt": "cardinalText", "w:start": 10 } } }); + expect(tree["w:sectPr"][4]).to.deep.equal({ "w:pgNumType": { _attr: { "w:fmt": "cardinalText", "w:start": 10 } } }); + expect(tree["w:sectPr"][5]).to.deep.equal({ "w:cols": { _attr: { "w:space": 708, "w:sep": true, "w:num": 1 } } }); + expect(tree["w:sectPr"][6]).to.deep.equal({ "w:vAlign": { _attr: { "w:val": "top" } } }); + expect(tree["w:sectPr"][7]).to.deep.equal({ "w:titlePg": { _attr: { "w:val": "1" } } }); + expect(tree["w:sectPr"][8]).to.deep.equal({ "w:docGrid": { _attr: { "w:linePitch": 360 } } }); }); it("should create section properties with no options", () => { @@ -104,8 +106,8 @@ describe("SectionProperties", () => { }, }, }); - expect(tree["w:sectPr"][2]).to.deep.equal({ "w:cols": { _attr: { "w:space": 708, "w:sep": false, "w:num": 1 } } }); - expect(tree["w:sectPr"][3]).to.deep.equal({ "w:docGrid": { _attr: { "w:linePitch": 360 } } }); + expect(tree["w:sectPr"][3]).to.deep.equal({ "w:cols": { _attr: { "w:space": 708, "w:sep": false, "w:num": 1 } } }); + expect(tree["w:sectPr"][4]).to.deep.equal({ "w:docGrid": { _attr: { "w:linePitch": 360 } } }); }); it("should create section properties with changed options", () => { diff --git a/src/file/document/body/section-properties/section-properties.ts b/src/file/document/body/section-properties/section-properties.ts index fd5a061218..9000ef96c8 100644 --- a/src/file/document/body/section-properties/section-properties.ts +++ b/src/file/document/body/section-properties/section-properties.ts @@ -89,20 +89,16 @@ export class SectionProperties extends XmlComponent { }: ISectionPropertiesOptions = {}) { super("w:sectPr"); - this.root.push(new PageSize(width, height, orientation)); - this.root.push(new PageMargin(top, right, bottom, left, header, footer, gutter, mirror)); - this.root.push(new Columns(space, count, separate)); - this.root.push(new DocumentGrid(linePitch)); - this.addHeaders(headerWrapperGroup); this.addFooters(footerWrapperGroup); - this.root.push(new PageNumberType(pageNumberStart, pageNumberFormatType, pageNumberSeparator)); - - if (lineNumberCountBy || lineNumberStart || lineNumberRestart || lineNumberDistance) { - this.root.push(new LineNumberType(lineNumberCountBy, lineNumberStart, lineNumberRestart, lineNumberDistance)); + if (type) { + this.root.push(new Type(type)); } + this.root.push(new PageSize(width, height, orientation)); + this.root.push(new PageMargin(top, right, bottom, left, header, footer, gutter, mirror)); + if (pageBorders || pageBorderTop || pageBorderRight || pageBorderBottom || pageBorderLeft) { this.root.push( new PageBorders({ @@ -115,17 +111,23 @@ export class SectionProperties extends XmlComponent { ); } - if (titlePage) { - this.root.push(new TitlePage()); + if (lineNumberCountBy || lineNumberStart || lineNumberRestart || lineNumberDistance) { + this.root.push(new LineNumberType(lineNumberCountBy, lineNumberStart, lineNumberRestart, lineNumberDistance)); } + this.root.push(new PageNumberType(pageNumberStart, pageNumberFormatType, pageNumberSeparator)); + + this.root.push(new Columns(space, count, separate)); + if (verticalAlign) { this.root.push(new SectionVerticalAlign(verticalAlign)); } - if (type) { - this.root.push(new Type(type)); + if (titlePage) { + this.root.push(new TitlePage()); } + + this.root.push(new DocumentGrid(linePitch)); } private addHeaders(headers: IHeaderFooterGroup): void { diff --git a/src/file/file.spec.ts b/src/file/file.spec.ts index 808407c6d9..5636b83716 100644 --- a/src/file/file.spec.ts +++ b/src/file/file.spec.ts @@ -25,8 +25,8 @@ describe("File", () => { const tree = new Formatter().format(doc.Document.View.Body); - expect(tree["w:body"][0]["w:sectPr"][4]["w:headerReference"]._attr["w:type"]).to.equal("default"); - expect(tree["w:body"][0]["w:sectPr"][5]["w:footerReference"]._attr["w:type"]).to.equal("default"); + expect(tree["w:body"][0]["w:sectPr"][0]["w:headerReference"]._attr["w:type"]).to.equal("default"); + expect(tree["w:body"][0]["w:sectPr"][1]["w:footerReference"]._attr["w:type"]).to.equal("default"); }); it("should create with first headers and footers", () => { @@ -45,8 +45,8 @@ describe("File", () => { }); const tree = new Formatter().format(doc.Document.View.Body); - expect(tree["w:body"][0]["w:sectPr"][4]["w:headerReference"]._attr["w:type"]).to.equal("first"); - expect(tree["w:body"][0]["w:sectPr"][5]["w:footerReference"]._attr["w:type"]).to.equal("first"); + expect(tree["w:body"][0]["w:sectPr"][0]["w:headerReference"]._attr["w:type"]).to.equal("first"); + expect(tree["w:body"][0]["w:sectPr"][1]["w:footerReference"]._attr["w:type"]).to.equal("first"); }); it("should create with correct headers", () => { @@ -70,13 +70,13 @@ describe("File", () => { const tree = new Formatter().format(doc.Document.View.Body); - expect(tree["w:body"][0]["w:sectPr"][4]["w:headerReference"]._attr["w:type"]).to.equal("default"); - expect(tree["w:body"][0]["w:sectPr"][5]["w:headerReference"]._attr["w:type"]).to.equal("first"); - expect(tree["w:body"][0]["w:sectPr"][6]["w:headerReference"]._attr["w:type"]).to.equal("even"); + expect(tree["w:body"][0]["w:sectPr"][0]["w:headerReference"]._attr["w:type"]).to.equal("default"); + expect(tree["w:body"][0]["w:sectPr"][1]["w:headerReference"]._attr["w:type"]).to.equal("first"); + expect(tree["w:body"][0]["w:sectPr"][2]["w:headerReference"]._attr["w:type"]).to.equal("even"); - expect(tree["w:body"][0]["w:sectPr"][7]["w:footerReference"]._attr["w:type"]).to.equal("default"); - expect(tree["w:body"][0]["w:sectPr"][8]["w:footerReference"]._attr["w:type"]).to.equal("first"); - expect(tree["w:body"][0]["w:sectPr"][9]["w:footerReference"]._attr["w:type"]).to.equal("even"); + expect(tree["w:body"][0]["w:sectPr"][3]["w:footerReference"]._attr["w:type"]).to.equal("default"); + expect(tree["w:body"][0]["w:sectPr"][4]["w:footerReference"]._attr["w:type"]).to.equal("first"); + expect(tree["w:body"][0]["w:sectPr"][5]["w:footerReference"]._attr["w:type"]).to.equal("even"); }); it("should add child", () => { @@ -135,6 +135,11 @@ describe("File", () => { }, }, }, + { + "w:pgNumType": { + _attr: {}, + }, + }, { "w:cols": { _attr: { @@ -151,11 +156,6 @@ describe("File", () => { }, }, }, - { - "w:pgNumType": { - _attr: {}, - }, - }, ], }, ], diff --git a/src/file/table/table-cell/table-cell.spec.ts b/src/file/table/table-cell/table-cell.spec.ts index f320cfed6e..3ea123fb5b 100644 --- a/src/file/table/table-cell/table-cell.spec.ts +++ b/src/file/table/table-cell/table-cell.spec.ts @@ -568,15 +568,6 @@ describe("TableCell", () => { }, }, }, - { - "w:bottom": { - _attr: { - "w:color": "blue", - "w:sz": 3, - "w:val": "double", - }, - }, - }, { "w:left": { _attr: { @@ -586,6 +577,15 @@ describe("TableCell", () => { }, }, }, + { + "w:bottom": { + _attr: { + "w:color": "blue", + "w:sz": 3, + "w:val": "double", + }, + }, + }, { "w:right": { _attr: { diff --git a/src/file/table/table-cell/table-cell.ts b/src/file/table/table-cell/table-cell.ts index 7a1bd8b458..672b5d2f94 100644 --- a/src/file/table/table-cell/table-cell.ts +++ b/src/file/table/table-cell/table-cell.ts @@ -77,12 +77,12 @@ export class TableCell extends XmlComponent { if (options.borders.top) { properties.Borders.addTopBorder(options.borders.top.style, options.borders.top.size, options.borders.top.color); } - if (options.borders.bottom) { - properties.Borders.addBottomBorder(options.borders.bottom.style, options.borders.bottom.size, options.borders.bottom.color); - } if (options.borders.left) { properties.Borders.addLeftBorder(options.borders.left.style, options.borders.left.size, options.borders.left.color); } + if (options.borders.bottom) { + properties.Borders.addBottomBorder(options.borders.bottom.style, options.borders.bottom.size, options.borders.bottom.color); + } if (options.borders.right) { properties.Borders.addRightBorder(options.borders.right.style, options.borders.right.size, options.borders.right.color); }