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 {
|
||||
readonly alias?: string;
|
||||
readonly checked?: boolean;
|
||||
readonly checkedState?: ICheckboxSymbolProperties;
|
||||
readonly uncheckedState?: ICheckboxSymbolProperties;
|
||||
|
@ -1,6 +1,7 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { Formatter } from "@export/formatter";
|
||||
import { CheckBox } from ".";
|
||||
|
||||
import { CheckBox } from "./checkbox";
|
||||
|
||||
describe("CheckBox", () => {
|
||||
describe("#constructor()", () => {
|
||||
@ -66,7 +67,8 @@ describe("CheckBox", () => {
|
||||
["2713", "Segoe UI Symbol", "2713", "Segoe UI Symbol"],
|
||||
[undefined, undefined, "2612", "MS Gothic"],
|
||||
])("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,
|
||||
checkedState: {
|
||||
value: inputChar,
|
||||
@ -141,7 +143,7 @@ describe("CheckBox", () => {
|
||||
});
|
||||
|
||||
it("should create a CheckBox with proper root, custom state, and no alias", () => {
|
||||
const checkBox = new CheckBox(undefined, {
|
||||
const checkBox = new CheckBox({
|
||||
checked: false,
|
||||
checkedState: {
|
||||
value: "2713",
|
||||
|
@ -9,10 +9,10 @@ export class CheckBox extends XmlComponent {
|
||||
private readonly DEFAULT_UNCHECKED_SYMBOL: string = "2610";
|
||||
private readonly DEFAULT_CHECKED_SYMBOL: string = "2612";
|
||||
private readonly DEFAULT_FONT: string = "MS Gothic";
|
||||
public constructor(alias?: string, options?: ICheckboxSymbolOptions) {
|
||||
public constructor(options?: ICheckboxSymbolOptions) {
|
||||
super("w:sdt");
|
||||
|
||||
const properties = new StructuredDocumentTagProperties(alias);
|
||||
const properties = new StructuredDocumentTagProperties(options?.alias);
|
||||
properties.addChildElement(new CheckBoxUtil(options));
|
||||
this.root.push(properties);
|
||||
|
||||
|
@ -4,7 +4,8 @@ import { StringValueElement, XmlComponent } from "@file/xml-components";
|
||||
export class StructuredDocumentTagProperties extends XmlComponent {
|
||||
public constructor(alias?: string) {
|
||||
super("w:sdtPr");
|
||||
if (typeof alias === "string") {
|
||||
|
||||
if (alias) {
|
||||
this.root.push(new StringValueElement("w:alias", alias));
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user