mirror of
https://github.com/zadam/trilium.git
synced 2025-10-26 07:46:30 +01:00
feat(in_app_help): support folder icons
This commit is contained in:
41
src/services/in_app_help.spec.ts
Normal file
41
src/services/in_app_help.spec.ts
Normal file
@@ -0,0 +1,41 @@
|
||||
import { describe, expect, expectTypeOf, it } from "vitest";
|
||||
import { parseNoteMeta } from "./in_app_help.js";
|
||||
import type NoteMeta from "./meta/note_meta.js";
|
||||
|
||||
describe("In-app help", () => {
|
||||
|
||||
it("preserves custom folder icon", () => {
|
||||
const meta: NoteMeta = {
|
||||
"isClone": false,
|
||||
"noteId": "yoAe4jV2yzbd",
|
||||
"notePath": [
|
||||
"OkOZllzB3fqN",
|
||||
"yoAe4jV2yzbd"
|
||||
],
|
||||
"title": "Features",
|
||||
"notePosition": 40,
|
||||
"prefix": null,
|
||||
"isExpanded": false,
|
||||
"type": "text",
|
||||
"mime": "text/html",
|
||||
"attributes": [
|
||||
{
|
||||
"type": "label",
|
||||
"name": "iconClass",
|
||||
"value": "bx bx-star",
|
||||
"isInheritable": false,
|
||||
"position": 10
|
||||
}
|
||||
],
|
||||
"format": "html",
|
||||
"attachments": [],
|
||||
"dirFileName": "Features",
|
||||
"children": []
|
||||
};
|
||||
|
||||
const item = parseNoteMeta(meta, "/");
|
||||
const icon = item.attributes?.find((a) => a.name === "iconClass");
|
||||
expect(icon?.value).toBe("bx bx-star");
|
||||
});
|
||||
|
||||
});
|
||||
@@ -33,7 +33,7 @@ function parseNoteMetaFile(noteMetaFile: NoteMetaFile): HiddenSubtreeItem[] {
|
||||
return parsedMetaRoot.children ?? [];
|
||||
}
|
||||
|
||||
function parseNoteMeta(noteMeta: NoteMeta, docNameRoot: string): HiddenSubtreeItem {
|
||||
export function parseNoteMeta(noteMeta: NoteMeta, docNameRoot: string): HiddenSubtreeItem {
|
||||
let iconClass: string = "bx bx-file";
|
||||
const item: HiddenSubtreeItem = {
|
||||
id: `_help_${noteMeta.noteId}`,
|
||||
@@ -42,6 +42,12 @@ function parseNoteMeta(noteMeta: NoteMeta, docNameRoot: string): HiddenSubtreeIt
|
||||
attributes: []
|
||||
};
|
||||
|
||||
// Handle folder notes
|
||||
if (!noteMeta.dataFileName) {
|
||||
iconClass = "bx bx-folder";
|
||||
item.type = "book";
|
||||
}
|
||||
|
||||
// Handle attributes
|
||||
for (const attribute of noteMeta.attributes ?? []) {
|
||||
if (attribute.name === "iconClass") {
|
||||
@@ -58,12 +64,6 @@ function parseNoteMeta(noteMeta: NoteMeta, docNameRoot: string): HiddenSubtreeIt
|
||||
}
|
||||
}
|
||||
|
||||
// Handle folder notes
|
||||
if (!noteMeta.dataFileName) {
|
||||
iconClass = "bx bx-folder";
|
||||
item.type = "book";
|
||||
}
|
||||
|
||||
// Handle text notes
|
||||
if (noteMeta.type === "text" && noteMeta.dataFileName) {
|
||||
const docPath = `${docNameRoot}/${path.basename(noteMeta.dataFileName, ".html")}`
|
||||
|
||||
@@ -20,7 +20,7 @@ export default interface NoteMeta {
|
||||
mime?: string;
|
||||
/** 'html' or 'markdown', applicable to text notes only */
|
||||
format?: "html" | "markdown";
|
||||
dataFileName: string;
|
||||
dataFileName?: string;
|
||||
dirFileName?: string;
|
||||
/** this file should not be imported (e.g., HTML navigation) */
|
||||
noImport?: boolean;
|
||||
|
||||
Reference in New Issue
Block a user