* #2388 - Check for undefined rather than falsey * Add default tab stop * Add back tab stop positions * Add test for default tab stop
This commit is contained in:
@ -18,6 +18,7 @@ const receiptTabStops = [
|
|||||||
const twoTabStops = [{ type: TabStopType.RIGHT, position: TabStopPosition.MAX }];
|
const twoTabStops = [{ type: TabStopType.RIGHT, position: TabStopPosition.MAX }];
|
||||||
|
|
||||||
const doc = new Document({
|
const doc = new Document({
|
||||||
|
defaultTabStop: 0,
|
||||||
sections: [
|
sections: [
|
||||||
{
|
{
|
||||||
properties: {},
|
properties: {},
|
||||||
|
@ -39,6 +39,7 @@ export interface IPropertiesOptions {
|
|||||||
readonly compatibility?: ICompatibilityOptions;
|
readonly compatibility?: ICompatibilityOptions;
|
||||||
readonly customProperties?: readonly ICustomPropertyOptions[];
|
readonly customProperties?: readonly ICustomPropertyOptions[];
|
||||||
readonly evenAndOddHeaderAndFooters?: boolean;
|
readonly evenAndOddHeaderAndFooters?: boolean;
|
||||||
|
readonly defaultTabStop?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
// <xs:element name="coreProperties" type="CT_CoreProperties"/>
|
// <xs:element name="coreProperties" type="CT_CoreProperties"/>
|
||||||
|
@ -77,6 +77,7 @@ export class File {
|
|||||||
evenAndOddHeaders: options.evenAndOddHeaderAndFooters ? true : false,
|
evenAndOddHeaders: options.evenAndOddHeaderAndFooters ? true : false,
|
||||||
trackRevisions: options.features?.trackRevisions,
|
trackRevisions: options.features?.trackRevisions,
|
||||||
updateFields: options.features?.updateFields,
|
updateFields: options.features?.updateFields,
|
||||||
|
defaultTabStop: options.defaultTabStop,
|
||||||
});
|
});
|
||||||
|
|
||||||
this.media = new Media();
|
this.media = new Media();
|
||||||
|
@ -157,9 +157,9 @@ export class ParagraphProperties extends IgnoreIfEmptyXmlComponent {
|
|||||||
* Ensure there is only one w:tabs tag with multiple w:tab
|
* Ensure there is only one w:tabs tag with multiple w:tab
|
||||||
*/
|
*/
|
||||||
const tabDefinitions: readonly TabStopDefinition[] = [
|
const tabDefinitions: readonly TabStopDefinition[] = [
|
||||||
...(options.rightTabStop ? [{ type: TabStopType.RIGHT, position: options.rightTabStop }] : []),
|
...(options.rightTabStop !== undefined ? [{ type: TabStopType.RIGHT, position: options.rightTabStop }] : []),
|
||||||
...(options.tabStops ? options.tabStops : []),
|
...(options.tabStops ? options.tabStops : []),
|
||||||
...(options.leftTabStop ? [{ type: TabStopType.LEFT, position: options.leftTabStop }] : []),
|
...(options.leftTabStop !== undefined ? [{ type: TabStopType.LEFT, position: options.leftTabStop }] : []),
|
||||||
];
|
];
|
||||||
|
|
||||||
if (tabDefinitions.length > 0) {
|
if (tabDefinitions.length > 0) {
|
||||||
|
@ -112,6 +112,23 @@ describe("Settings", () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("should add defaultTabStop setting with version", () => {
|
||||||
|
const settings = new Settings({
|
||||||
|
defaultTabStop: 100,
|
||||||
|
});
|
||||||
|
|
||||||
|
const tree = new Formatter().format(settings);
|
||||||
|
expect(Object.keys(tree)).has.length(1);
|
||||||
|
expect(tree["w:settings"]).to.be.an("array");
|
||||||
|
expect(tree["w:settings"]).to.deep.include({
|
||||||
|
"w:defaultTabStop": {
|
||||||
|
_attr: {
|
||||||
|
"w:val": 100,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
// TODO: Remove when deprecating compatibilityModeVersion
|
// TODO: Remove when deprecating compatibilityModeVersion
|
||||||
it("should add compatibility setting with legacy version", () => {
|
it("should add compatibility setting with legacy version", () => {
|
||||||
const settings = new Settings({
|
const settings = new Settings({
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { OnOffElement, XmlAttributeComponent, XmlComponent } from "@file/xml-components";
|
import { NumberValueElement, OnOffElement, XmlAttributeComponent, XmlComponent } from "@file/xml-components";
|
||||||
|
|
||||||
import { Compatibility, ICompatibilityOptions } from "./compatibility";
|
import { Compatibility, ICompatibilityOptions } from "./compatibility";
|
||||||
|
|
||||||
@ -152,6 +152,7 @@ export interface ISettingsOptions {
|
|||||||
readonly trackRevisions?: boolean;
|
readonly trackRevisions?: boolean;
|
||||||
readonly updateFields?: boolean;
|
readonly updateFields?: boolean;
|
||||||
readonly compatibility?: ICompatibilityOptions;
|
readonly compatibility?: ICompatibilityOptions;
|
||||||
|
readonly defaultTabStop?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class Settings extends XmlComponent {
|
export class Settings extends XmlComponent {
|
||||||
@ -198,6 +199,11 @@ export class Settings extends XmlComponent {
|
|||||||
this.root.push(new OnOffElement("w:updateFields", options.updateFields));
|
this.root.push(new OnOffElement("w:updateFields", options.updateFields));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// https://c-rex.net/samples/ooxml/e1/Part4/OOXML_P4_DOCX_defaultTabStop_topic_ID0EIXSX.html
|
||||||
|
if (options.defaultTabStop !== undefined) {
|
||||||
|
this.root.push(new NumberValueElement("w:defaultTabStop", options.defaultTabStop));
|
||||||
|
}
|
||||||
|
|
||||||
this.root.push(
|
this.root.push(
|
||||||
new Compatibility({
|
new Compatibility({
|
||||||
...(options.compatibility ?? {}),
|
...(options.compatibility ?? {}),
|
||||||
|
Reference in New Issue
Block a user