Add OutlineLevel Paragraph property

This commit is contained in:
fmuscolino
2019-01-15 15:39:48 +01:00
parent 383c6d769f
commit b0ee0305fb
5 changed files with 61 additions and 1 deletions

View File

@ -1,2 +1,3 @@
export * from "./hyperlink";
export * from "./bookmark";
export * from "./outline-level";

View File

@ -0,0 +1,23 @@
import { assert } from "chai";
import { Utility } from "tests/utility";
import { OutlineLevel } from "./outline-level";
describe("ParagraphOutlineLevel", () => {
let outlineLevel: OutlineLevel;
describe("#constructor()", () => {
it("should create an outlineLevel with given value", () => {
outlineLevel = new OutlineLevel("0");
const newJson = Utility.jsonify(outlineLevel);
assert.equal(newJson.root[0].root.val, "0");
});
it("should create an outlineLevel with blank val", () => {
outlineLevel = new OutlineLevel("");
const newJson = Utility.jsonify(outlineLevel);
assert.equal(newJson.root[0].root.val, "");
});
});
});

View File

@ -0,0 +1,17 @@
// http://officeopenxml.com/WPparagraph.php
import { Attributes, XmlComponent } from "file/xml-components";
export class OutlineLevel extends XmlComponent {
public readonly level: string;
constructor(level: string) {
super("w:outlineLvl");
this.level = level;
this.root.push(
new Attributes({
val: level,
}),
);
}
}

View File

@ -666,4 +666,18 @@ describe("Paragraph", () => {
});
});
});
describe("#outlineLevel", () => {
it("should set paragraph outline level to the given value", () => {
paragraph.outlineLevel("0");
const tree = new Formatter().format(paragraph);
expect(tree).to.deep.equal({
"w:p": [
{
"w:pPr": [{ "w:outlineLvl": [{ _attr: { "w:val": "0" } }] }],
},
],
});
});
});
});

View File

@ -14,7 +14,7 @@ import { ContextualSpacing, ISpacingProperties, Spacing } from "./formatting/spa
import { Style } from "./formatting/style";
import { CenterTabStop, LeaderType, LeftTabStop, MaxRightTabStop, RightTabStop } from "./formatting/tab-stop";
import { NumberProperties } from "./formatting/unordered-list";
import { Bookmark, Hyperlink } from "./links";
import { Bookmark, Hyperlink, OutlineLevel } from "./links";
import { ParagraphProperties } from "./properties";
import { PictureRun, Run, SequentialIdentifier, TextRun } from "./run";
@ -245,4 +245,9 @@ export class Paragraph extends XmlComponent {
this.root.push(new SequentialIdentifier(identifier));
return this;
}
public outlineLevel(level: string): Paragraph {
this.properties.push(new OutlineLevel(level));
return this;
}
}