diff --git a/apps/client/src/widgets/note_type.ts b/apps/client/src/widgets/note_type.ts deleted file mode 100644 index 4231ac979..000000000 --- a/apps/client/src/widgets/note_type.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { Dropdown } from "bootstrap"; -import { NOTE_TYPES } from "../services/note_types.js"; -import { t } from "../services/i18n.js"; -import dialogService from "../services/dialog.js"; -import mimeTypesService from "../services/mime_types.js"; -import NoteContextAwareWidget from "./note_context_aware_widget.js"; -import server from "../services/server.js"; -import type { EventData } from "../components/app_context.js"; -import type { NoteType } from "../entities/fnote.js"; -import type FNote from "../entities/fnote.js"; - -const NOT_SELECTABLE_NOTE_TYPES = NOTE_TYPES.filter((nt) => nt.reserved || nt.static).map((nt) => nt.type); - -export default class NoteTypeWidget extends NoteContextAwareWidget { - - private dropdown!: Dropdown; - private $noteTypeDropdown!: JQuery; - private $noteTypeButton!: JQuery; - private $noteTypeDesc!: JQuery; - - doRender() { - this.$widget = $(TPL); - - this.dropdown = Dropdown.getOrCreateInstance(this.$widget.find("[data-bs-toggle='dropdown']")[0]); - - this.$widget.on("show.bs.dropdown", () => this.renderDropdown()); - - this.$noteTypeDropdown = this.$widget.find(".note-type-dropdown"); - this.$noteTypeButton = this.$widget.find(".note-type-button"); - - this.$widget.on("click", ".dropdown-item", () => this.dropdown.toggle()); - } - - async refreshWithNote(note: FNote) { - this.$noteTypeButton.prop("disabled", () => NOT_SELECTABLE_NOTE_TYPES.includes(note.type)); - - this.$noteTypeDesc.text(await this.findTypeTitle(note.type, note.mime)); - - this.dropdown.hide(); - } - -} diff --git a/apps/client/src/widgets/ribbon/BasicPropertiesTab.tsx b/apps/client/src/widgets/ribbon/BasicPropertiesTab.tsx index dc16ba17b..fe10d1fde 100644 --- a/apps/client/src/widgets/ribbon/BasicPropertiesTab.tsx +++ b/apps/client/src/widgets/ribbon/BasicPropertiesTab.tsx @@ -21,6 +21,7 @@ function NoteTypeWidget() { const noteTypes = useMemo(() => NOTE_TYPES.filter((nt) => !nt.reserved && !nt.static), []); const [ codeNotesMimeTypes ] = useTriliumOption("codeNotesMimeTypes"); const mimeTypes = useMemo(() => mime_types.getMimeTypes().filter(mimeType => mimeType.enabled), [ codeNotesMimeTypes ]); + const notSelectableNoteTypes = useMemo(() => NOTE_TYPES.filter((nt) => nt.reserved || nt.static).map((nt) => nt.type), []); const { note } = useNoteContext(); const currentNoteType = useNoteProperty(note, "type") ?? undefined; @@ -50,6 +51,7 @@ function NoteTypeWidget() { {findTypeTitle(currentNoteType, currentNoteMime)}} + disabled={notSelectableNoteTypes.includes(currentNoteType ?? "text")} > {noteTypes.map(({ isNew, isBeta, type, mime, title }) => { const badges: FormListBadge[] = []; @@ -99,7 +101,7 @@ function NoteTypeWidget() { ) } -function findTypeTitle(type?: NoteType, mime?: string) { +function findTypeTitle(type?: NoteType, mime?: string | null) { if (type === "code") { const mimeTypes = mime_types.getMimeTypes(); const found = mimeTypes.find((mt) => mt.mime === mime); diff --git a/packages/commons/src/lib/rows.ts b/packages/commons/src/lib/rows.ts index 8bf64b275..9bb9d11d5 100644 --- a/packages/commons/src/lib/rows.ts +++ b/packages/commons/src/lib/rows.ts @@ -119,7 +119,8 @@ export const ALLOWED_NOTE_TYPES = [ "book", "webView", "code", - "mindMap" + "mindMap", + "aiChat" ] as const; export type NoteType = (typeof ALLOWED_NOTE_TYPES)[number];