Improve API for check boxes
This commit is contained in:
44
demo/90-check-boxes.ts
Normal file
44
demo/90-check-boxes.ts
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
// Simple example to add check boxes to a document
|
||||||
|
import * as fs from "fs";
|
||||||
|
import { Document, Packer, Paragraph, TextRun, CheckBox } from "docx";
|
||||||
|
|
||||||
|
const doc = new Document({
|
||||||
|
sections: [
|
||||||
|
{
|
||||||
|
properties: {},
|
||||||
|
children: [
|
||||||
|
new Paragraph({
|
||||||
|
children: [
|
||||||
|
new TextRun("Hello World"),
|
||||||
|
new TextRun({ break: 1 }),
|
||||||
|
new CheckBox(),
|
||||||
|
new TextRun({ break: 1 }),
|
||||||
|
new CheckBox({ checked: true }),
|
||||||
|
new TextRun({ break: 1 }),
|
||||||
|
new CheckBox({ checked: true, checkedState: { value: "2611" } }),
|
||||||
|
new TextRun({ break: 1 }),
|
||||||
|
new CheckBox({ checked: true, checkedState: { value: "2611", font: "MS Gothic" } }),
|
||||||
|
new TextRun({ break: 1 }),
|
||||||
|
new CheckBox({
|
||||||
|
checked: true,
|
||||||
|
checkedState: { value: "2611", font: "MS Gothic" },
|
||||||
|
uncheckedState: { value: "2610", font: "MS Gothic" },
|
||||||
|
}),
|
||||||
|
new TextRun({ break: 1 }),
|
||||||
|
new CheckBox({
|
||||||
|
checked: true,
|
||||||
|
checkedState: { value: "2611", font: "MS Gothic" },
|
||||||
|
uncheckedState: { value: "2610", font: "MS Gothic" },
|
||||||
|
}),
|
||||||
|
new TextRun({ text: "Are you ok?", break: 1 }),
|
||||||
|
new CheckBox({ checked: true, alias: "Are you ok?" }),
|
||||||
|
],
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
Packer.toBuffer(doc).then((buffer) => {
|
||||||
|
fs.writeFileSync("My Document.docx", buffer);
|
||||||
|
});
|
@ -16,6 +16,7 @@ export interface ICheckboxSymbolProperties {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface ICheckboxSymbolOptions {
|
export interface ICheckboxSymbolOptions {
|
||||||
|
readonly alias?: string;
|
||||||
readonly checked?: boolean;
|
readonly checked?: boolean;
|
||||||
readonly checkedState?: ICheckboxSymbolProperties;
|
readonly checkedState?: ICheckboxSymbolProperties;
|
||||||
readonly uncheckedState?: ICheckboxSymbolProperties;
|
readonly uncheckedState?: ICheckboxSymbolProperties;
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import { describe, expect, it } from "vitest";
|
import { describe, expect, it } from "vitest";
|
||||||
import { Formatter } from "@export/formatter";
|
import { Formatter } from "@export/formatter";
|
||||||
import { CheckBox } from ".";
|
|
||||||
|
import { CheckBox } from "./checkbox";
|
||||||
|
|
||||||
describe("CheckBox", () => {
|
describe("CheckBox", () => {
|
||||||
describe("#constructor()", () => {
|
describe("#constructor()", () => {
|
||||||
@ -66,7 +67,8 @@ describe("CheckBox", () => {
|
|||||||
["2713", "Segoe UI Symbol", "2713", "Segoe UI Symbol"],
|
["2713", "Segoe UI Symbol", "2713", "Segoe UI Symbol"],
|
||||||
[undefined, undefined, "2612", "MS Gothic"],
|
[undefined, undefined, "2612", "MS Gothic"],
|
||||||
])("should create a CheckBox with proper root and custom values", (inputChar, inputFont, actualChar, actualFont) => {
|
])("should create a CheckBox with proper root and custom values", (inputChar, inputFont, actualChar, actualFont) => {
|
||||||
const checkBox = new CheckBox("Custom Checkbox", {
|
const checkBox = new CheckBox({
|
||||||
|
alias: "Custom Checkbox",
|
||||||
checked: true,
|
checked: true,
|
||||||
checkedState: {
|
checkedState: {
|
||||||
value: inputChar,
|
value: inputChar,
|
||||||
@ -141,7 +143,7 @@ describe("CheckBox", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("should create a CheckBox with proper root, custom state, and no alias", () => {
|
it("should create a CheckBox with proper root, custom state, and no alias", () => {
|
||||||
const checkBox = new CheckBox(undefined, {
|
const checkBox = new CheckBox({
|
||||||
checked: false,
|
checked: false,
|
||||||
checkedState: {
|
checkedState: {
|
||||||
value: "2713",
|
value: "2713",
|
||||||
|
@ -9,10 +9,10 @@ export class CheckBox extends XmlComponent {
|
|||||||
private readonly DEFAULT_UNCHECKED_SYMBOL: string = "2610";
|
private readonly DEFAULT_UNCHECKED_SYMBOL: string = "2610";
|
||||||
private readonly DEFAULT_CHECKED_SYMBOL: string = "2612";
|
private readonly DEFAULT_CHECKED_SYMBOL: string = "2612";
|
||||||
private readonly DEFAULT_FONT: string = "MS Gothic";
|
private readonly DEFAULT_FONT: string = "MS Gothic";
|
||||||
public constructor(alias?: string, options?: ICheckboxSymbolOptions) {
|
public constructor(options?: ICheckboxSymbolOptions) {
|
||||||
super("w:sdt");
|
super("w:sdt");
|
||||||
|
|
||||||
const properties = new StructuredDocumentTagProperties(alias);
|
const properties = new StructuredDocumentTagProperties(options?.alias);
|
||||||
properties.addChildElement(new CheckBoxUtil(options));
|
properties.addChildElement(new CheckBoxUtil(options));
|
||||||
this.root.push(properties);
|
this.root.push(properties);
|
||||||
|
|
||||||
|
@ -4,7 +4,8 @@ import { StringValueElement, XmlComponent } from "@file/xml-components";
|
|||||||
export class StructuredDocumentTagProperties extends XmlComponent {
|
export class StructuredDocumentTagProperties extends XmlComponent {
|
||||||
public constructor(alias?: string) {
|
public constructor(alias?: string) {
|
||||||
super("w:sdtPr");
|
super("w:sdtPr");
|
||||||
if (typeof alias === "string") {
|
|
||||||
|
if (alias) {
|
||||||
this.root.push(new StringValueElement("w:alias", alias));
|
this.root.push(new StringValueElement("w:alias", alias));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user