diff --git a/demo/2-declaritive-styles.ts b/demo/2-declaritive-styles.ts index 352edca043..d1dae03cbe 100644 --- a/demo/2-declaritive-styles.ts +++ b/demo/2-declaritive-styles.ts @@ -222,6 +222,15 @@ const doc = new Document({ new TextRun({ text: "Underline and Strike", }), + new TextRun({ + text: " Override Underline ", + underline: { + type: UnderlineType.NONE, + }, + }), + new TextRun({ + text: "Strike and Underline", + }), ], }), new Paragraph({ diff --git a/src/file/paragraph/run/run-components/text.spec.ts b/src/file/paragraph/run/run-components/text.spec.ts index fd4bbd01b0..3556623e15 100644 --- a/src/file/paragraph/run/run-components/text.spec.ts +++ b/src/file/paragraph/run/run-components/text.spec.ts @@ -1,6 +1,7 @@ import { expect } from "chai"; import { Formatter } from "@export/formatter"; +import { SpaceType } from "@file/shared"; import { Text } from "./text"; @@ -13,5 +14,27 @@ describe("Text", () => { "w:t": [{ _attr: { "xml:space": "preserve" } }, " this is\n text"], }); }); + + it("adds the passed in text to the component with options", () => { + const t = new Text({ + text: " this is\n text", + space: SpaceType.PRESERVE, + }); + const f = new Formatter().format(t); + expect(f).to.deep.equal({ + "w:t": [{ _attr: { "xml:space": "preserve" } }, " this is\n text"], + }); + }); + + it("adds the passed in text to the component with options and sets default space type", () => { + const t = new Text({ + text: " this is\n text", + space: SpaceType.DEFAULT, + }); + const f = new Formatter().format(t); + expect(f).to.deep.equal({ + "w:t": [{ _attr: { "xml:space": "default" } }, " this is\n text"], + }); + }); }); }); diff --git a/src/file/paragraph/run/run-components/text.ts b/src/file/paragraph/run/run-components/text.ts index 94b71073c9..725eb27fa6 100644 --- a/src/file/paragraph/run/run-components/text.ts +++ b/src/file/paragraph/run/run-components/text.ts @@ -3,11 +3,31 @@ import { XmlComponent } from "@file/xml-components"; import { TextAttributes } from "../text-attributes"; -export class Text extends XmlComponent { - public constructor(text: string) { - super("w:t"); - this.root.push(new TextAttributes({ space: SpaceType.PRESERVE })); +// +// +// +// +// +// +// - this.root.push(text); +interface ITextOptions { + readonly space?: SpaceType; + readonly text?: string; +} + +export class Text extends XmlComponent { + public constructor(options: string | ITextOptions) { + super("w:t"); + + if (typeof options === "string") { + this.root.push(new TextAttributes({ space: SpaceType.PRESERVE })); + this.root.push(options); + return; + } else { + this.root.push(new TextAttributes({ space: options.space ?? SpaceType.DEFAULT })); + this.root.push(options.text); + return; + } } } diff --git a/src/file/paragraph/run/underline.ts b/src/file/paragraph/run/underline.ts index a84dbdc0e4..731e9e52e4 100644 --- a/src/file/paragraph/run/underline.ts +++ b/src/file/paragraph/run/underline.ts @@ -19,6 +19,7 @@ export enum UnderlineType { WAVE = "wave", WAVYHEAVY = "wavyHeavy", WAVYDOUBLE = "wavyDouble", + NONE = "none", } export class Underline extends XmlComponent {