add multi-page notepad and memos toolbox tool
All checks were successful
Deploy Sokko G / deploy (push) Successful in 16s

This commit is contained in:
Shinuwa 2026-08-25 12:03:11 +02:00
parent fcabbe8029
commit 6125336338
33 changed files with 3787 additions and 138 deletions

View file

@ -130,6 +130,12 @@ export function validateSiteContent(site) {
"toolboxes.storageHelp.title",
"toolboxes.storageHelp.text",
"toolboxes.modules.notepad.placeholder",
"toolboxes.modules.notepad.pagesMenuLabel",
"toolboxes.modules.notepad.pagesToggleLabel",
"toolboxes.modules.notepad.pagesToggleText",
"toolboxes.modules.notepad.addPageLabel",
"toolboxes.modules.notepad.renamePageLabel",
"toolboxes.modules.notepad.deletePageLabel",
"toolboxes.modules.notepad.toolbarLabel",
"toolboxes.modules.notepad.textFormatLabel",
"toolboxes.modules.notepad.boldTitle",
@ -167,6 +173,28 @@ export function validateSiteContent(site) {
"toolboxes.modules.notepad.exportSuccess",
"toolboxes.modules.notepad.importError",
"toolboxes.modules.notepad.exportInfo",
"toolboxes.modules.memos.defaultText",
"toolboxes.modules.memos.placeholder",
"toolboxes.modules.memos.addButton",
"toolboxes.modules.memos.emptyLabel",
"toolboxes.modules.memos.editLabel",
"toolboxes.modules.memos.deleteTitle",
"toolboxes.modules.memos.colorLabel",
"toolboxes.modules.memos.reorderTitle",
"toolboxes.modules.memos.tickerLabel",
"toolboxes.modules.memos.hideTickerTitle",
"toolboxes.modules.memos.showTickerTitle",
"toolboxes.modules.memos.importPlaceholder",
"toolboxes.modules.memos.importOpenButton",
"toolboxes.modules.memos.exportOpenButton",
"toolboxes.modules.memos.importModalTitle",
"toolboxes.modules.memos.exportModalTitle",
"toolboxes.modules.memos.importButton",
"toolboxes.modules.memos.exportButton",
"toolboxes.modules.memos.importSuccess",
"toolboxes.modules.memos.exportSuccess",
"toolboxes.modules.memos.importError",
"toolboxes.modules.memos.exportInfo",
"toolboxes.modules.checklist.itemPlaceholder",
"toolboxes.modules.checklist.sectionPlaceholder",
"toolboxes.modules.checklist.quantityLabel",
@ -621,7 +649,7 @@ export function validateSiteContent(site) {
});
const libraryToolDocs = valueAt(site, "library.toolDocs");
["notepad", "checklist", "counters", "images", "imageAnnotation", "links", "calculator", "table", "goalTree", "timer", "calendar", "taskPlanner", "combos", "equipmentPlanner"].forEach((toolType) => {
["memos", "notepad", "checklist", "counters", "images", "imageAnnotation", "links", "calculator", "table", "goalTree", "timer", "calendar", "taskPlanner", "combos", "equipmentPlanner"].forEach((toolType) => {
const docs = libraryToolDocs?.[toolType];
assert.equal(typeof docs, "object", `library.toolDocs.${toolType} must be an object`);
assert.ok(Array.isArray(docs.controls), `library.toolDocs.${toolType}.controls must be an array`);
@ -772,9 +800,8 @@ export function validateSiteContent(site) {
const toolboxCreationTemplate = valueAt(site, "toolboxes.creationTemplate");
assert.equal(typeof toolboxCreationTemplate, "object", "toolboxes.creationTemplate must be an object");
assertNonEmptyString({ toolboxCreationTemplate }, "toolboxCreationTemplate.notepad.title");
assertNonEmptyString({ toolboxCreationTemplate }, "toolboxCreationTemplate.notepad.text");
assertNonEmptyString({ toolboxCreationTemplate }, "toolboxCreationTemplate.notepad.html");
assertNonEmptyString({ toolboxCreationTemplate }, "toolboxCreationTemplate.memos.title");
assertNonEmptyString({ toolboxCreationTemplate }, "toolboxCreationTemplate.memos.text");
assertNonEmptyString({ toolboxCreationTemplate }, "toolboxCreationTemplate.links.moduleTitle");
assertNonEmptyString({ toolboxCreationTemplate }, "toolboxCreationTemplate.links.title");
@ -834,7 +861,7 @@ export function validateLibraryData(payload) {
assert.deepEqual(new Set(twoColumnIds), moduleIds, "library.toolbox.moduleOrder.two must contain every module exactly once");
assert.equal(twoColumnIds.length, moduleIds.size, "library.toolbox.moduleOrder.two must not contain duplicate modules");
["notepad", "checklist", "images", "links", "counters", "combos", "calculator", "table", "goalTree", "timer", "calendar", "taskPlanner", "equipmentPlanner", "imageAnnotation"].forEach((type) => {
["memos", "notepad", "checklist", "images", "links", "counters", "combos", "calculator", "table", "goalTree", "timer", "calendar", "taskPlanner", "equipmentPlanner", "imageAnnotation"].forEach((type) => {
assert.ok(payload.toolbox.modules.some((module) => module.type === type), `library must include a ${type} example`);
});