mirror of
https://github.com/zadam/trilium.git
synced 2025-12-04 22:44:25 +01:00
refactor(suggestion): improve naming
This commit is contained in:
parent
4e5c26371e
commit
8ee59e9daa
@ -57,10 +57,10 @@ export enum SuggestionAction {
|
|||||||
Command = "command",
|
Command = "command",
|
||||||
}
|
}
|
||||||
|
|
||||||
export enum CreateMode {
|
export enum SuggestionMode {
|
||||||
None = "none",
|
SuggestNothing = "nothing",
|
||||||
CreateOnly = "create-only",
|
SuggestCreateOnly = "create-only",
|
||||||
CreateAndLink = "create-and-link"
|
SuggestCreateAndLink = "create-and-link"
|
||||||
}
|
}
|
||||||
|
|
||||||
// NOTE: Previously marked for deduplication with a server-side type,
|
// NOTE: Previously marked for deduplication with a server-side type,
|
||||||
@ -86,7 +86,7 @@ export interface Suggestion {
|
|||||||
export interface Options {
|
export interface Options {
|
||||||
container?: HTMLElement | null;
|
container?: HTMLElement | null;
|
||||||
fastSearch?: boolean;
|
fastSearch?: boolean;
|
||||||
createMode?: CreateMode;
|
suggestionMode?: SuggestionMode;
|
||||||
allowJumpToSearchNotes?: boolean;
|
allowJumpToSearchNotes?: boolean;
|
||||||
allowExternalLinks?: boolean;
|
allowExternalLinks?: boolean;
|
||||||
/** If set, hides the right-side button corresponding to go to selected note. */
|
/** If set, hides the right-side button corresponding to go to selected note. */
|
||||||
@ -99,7 +99,7 @@ export interface Options {
|
|||||||
|
|
||||||
async function autocompleteSourceForCKEditor(
|
async function autocompleteSourceForCKEditor(
|
||||||
queryText: string,
|
queryText: string,
|
||||||
createMode: CreateMode
|
suggestionMode: SuggestionMode
|
||||||
): Promise<MentionFeedObjectItem[]> {
|
): Promise<MentionFeedObjectItem[]> {
|
||||||
// Wrap the callback-based autocompleteSource in a Promise for async/await
|
// Wrap the callback-based autocompleteSource in a Promise for async/await
|
||||||
const rows = await new Promise<Suggestion[]>((resolve) => {
|
const rows = await new Promise<Suggestion[]>((resolve) => {
|
||||||
@ -107,7 +107,7 @@ async function autocompleteSourceForCKEditor(
|
|||||||
queryText,
|
queryText,
|
||||||
(suggestions) => resolve(suggestions),
|
(suggestions) => resolve(suggestions),
|
||||||
{
|
{
|
||||||
createMode,
|
suggestionMode,
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
@ -179,8 +179,8 @@ async function autocompleteSource(
|
|||||||
|
|
||||||
// --- Create Note suggestions ---
|
// --- Create Note suggestions ---
|
||||||
if (trimmedTerm.length >= 1) {
|
if (trimmedTerm.length >= 1) {
|
||||||
switch (options.createMode) {
|
switch (options.suggestionMode) {
|
||||||
case CreateMode.CreateOnly: {
|
case SuggestionMode.SuggestCreateOnly: {
|
||||||
results = [
|
results = [
|
||||||
{
|
{
|
||||||
action: SuggestionAction.CreateNote,
|
action: SuggestionAction.CreateNote,
|
||||||
@ -199,7 +199,7 @@ async function autocompleteSource(
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case CreateMode.CreateAndLink: {
|
case SuggestionMode.SuggestCreateAndLink: {
|
||||||
results = [
|
results = [
|
||||||
{
|
{
|
||||||
action: SuggestionAction.CreateAndLinkNote,
|
action: SuggestionAction.CreateAndLinkNote,
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import server from "../../services/server.js";
|
|||||||
import froca from "../../services/froca.js";
|
import froca from "../../services/froca.js";
|
||||||
import linkService from "../../services/link.js";
|
import linkService from "../../services/link.js";
|
||||||
import attributeAutocompleteService from "../../services/attribute_autocomplete.js";
|
import attributeAutocompleteService from "../../services/attribute_autocomplete.js";
|
||||||
import noteAutocompleteService, { CreateMode } from "../../services/note_autocomplete.js";
|
import noteAutocompleteService, { SuggestionMode } from "../../services/note_autocomplete.js";
|
||||||
import promotedAttributeDefinitionParser from "../../services/promoted_attribute_definition_parser.js";
|
import promotedAttributeDefinitionParser from "../../services/promoted_attribute_definition_parser.js";
|
||||||
import NoteContextAwareWidget from "../note_context_aware_widget.js";
|
import NoteContextAwareWidget from "../note_context_aware_widget.js";
|
||||||
import SpacedUpdate from "../../services/spaced_update.js";
|
import SpacedUpdate from "../../services/spaced_update.js";
|
||||||
@ -429,7 +429,7 @@ export default class AttributeDetailWidget extends NoteContextAwareWidget {
|
|||||||
this.$rowTargetNote = this.$widget.find(".attr-row-target-note");
|
this.$rowTargetNote = this.$widget.find(".attr-row-target-note");
|
||||||
this.$inputTargetNote = this.$widget.find(".attr-input-target-note");
|
this.$inputTargetNote = this.$widget.find(".attr-input-target-note");
|
||||||
|
|
||||||
noteAutocompleteService.initNoteAutocomplete(this.$inputTargetNote, { createMode: CreateMode.CreateAndLink }).on("autocomplete:noteselected", (event, suggestion, dataset) => {
|
noteAutocompleteService.initNoteAutocomplete(this.$inputTargetNote, { suggestionMode: SuggestionMode.SuggestCreateAndLink }).on("autocomplete:noteselected", (event, suggestion, dataset) => {
|
||||||
if (!suggestion.notePath) {
|
if (!suggestion.notePath) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,7 +15,7 @@ import FormTextArea from "../../react/FormTextArea";
|
|||||||
import FNote from "../../../entities/fnote";
|
import FNote from "../../../entities/fnote";
|
||||||
import NoteAutocomplete from "../../react/NoteAutocomplete";
|
import NoteAutocomplete from "../../react/NoteAutocomplete";
|
||||||
import toast from "../../../services/toast";
|
import toast from "../../../services/toast";
|
||||||
import { CreateMode } from "../../../services/note_autocomplete";
|
import { SuggestionMode } from "../../../services/note_autocomplete";
|
||||||
|
|
||||||
export interface BoardViewData {
|
export interface BoardViewData {
|
||||||
columns?: BoardColumnData[];
|
columns?: BoardColumnData[];
|
||||||
@ -299,7 +299,7 @@ export function TitleEditor({ currentValue, placeholder, save, dismiss, mode, is
|
|||||||
noteId={currentValue ?? ""}
|
noteId={currentValue ?? ""}
|
||||||
opts={{
|
opts={{
|
||||||
hideAllButtons: true,
|
hideAllButtons: true,
|
||||||
createMode: CreateMode.CreateAndLink
|
suggestionMode: SuggestionMode.SuggestCreateAndLink
|
||||||
}}
|
}}
|
||||||
onKeyDown={(e) => {
|
onKeyDown={(e) => {
|
||||||
if (e.key === "Escape") {
|
if (e.key === "Escape") {
|
||||||
|
|||||||
@ -6,7 +6,7 @@ import Icon from "../../react/Icon.jsx";
|
|||||||
import { useEffect, useRef, useState } from "preact/hooks";
|
import { useEffect, useRef, useState } from "preact/hooks";
|
||||||
import froca from "../../../services/froca.js";
|
import froca from "../../../services/froca.js";
|
||||||
import NoteAutocomplete from "../../react/NoteAutocomplete.jsx";
|
import NoteAutocomplete from "../../react/NoteAutocomplete.jsx";
|
||||||
import { CreateMode } from "../../../services/note_autocomplete.js";
|
import { SuggestionMode } from "../../../services/note_autocomplete.js";
|
||||||
|
|
||||||
type ColumnType = LabelType | "relation";
|
type ColumnType = LabelType | "relation";
|
||||||
|
|
||||||
@ -228,7 +228,7 @@ function RelationEditor({ cell, success }: EditorOpts) {
|
|||||||
inputRef={inputRef}
|
inputRef={inputRef}
|
||||||
noteId={cell.getValue()}
|
noteId={cell.getValue()}
|
||||||
opts={{
|
opts={{
|
||||||
createMode: CreateMode.CreateAndLink,
|
suggestionMode: SuggestionMode.SuggestCreateAndLink,
|
||||||
hideAllButtons: true
|
hideAllButtons: true
|
||||||
}}
|
}}
|
||||||
noteIdChanged={success}
|
noteIdChanged={success}
|
||||||
|
|||||||
@ -5,7 +5,7 @@ import FormRadioGroup from "../react/FormRadioGroup";
|
|||||||
import NoteAutocomplete from "../react/NoteAutocomplete";
|
import NoteAutocomplete from "../react/NoteAutocomplete";
|
||||||
import { useRef, useState, useEffect } from "preact/hooks";
|
import { useRef, useState, useEffect } from "preact/hooks";
|
||||||
import tree from "../../services/tree";
|
import tree from "../../services/tree";
|
||||||
import note_autocomplete, { CreateMode, Suggestion } from "../../services/note_autocomplete";
|
import note_autocomplete, { SuggestionMode, Suggestion } from "../../services/note_autocomplete";
|
||||||
import { logError } from "../../services/ws";
|
import { logError } from "../../services/ws";
|
||||||
import FormGroup from "../react/FormGroup.js";
|
import FormGroup from "../react/FormGroup.js";
|
||||||
import { refToJQuerySelector } from "../react/react_utils";
|
import { refToJQuerySelector } from "../react/react_utils";
|
||||||
@ -133,7 +133,7 @@ export default function AddLinkDialog() {
|
|||||||
onChange={setSuggestion}
|
onChange={setSuggestion}
|
||||||
opts={{
|
opts={{
|
||||||
allowExternalLinks: true,
|
allowExternalLinks: true,
|
||||||
createMode: CreateMode.CreateAndLink,
|
suggestionMode: SuggestionMode.SuggestCreateAndLink,
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
|
|||||||
@ -5,7 +5,7 @@ import FormRadioGroup from "../react/FormRadioGroup";
|
|||||||
import Modal from "../react/Modal";
|
import Modal from "../react/Modal";
|
||||||
import NoteAutocomplete from "../react/NoteAutocomplete";
|
import NoteAutocomplete from "../react/NoteAutocomplete";
|
||||||
import Button from "../react/Button";
|
import Button from "../react/Button";
|
||||||
import { CreateMode, Suggestion, triggerRecentNotes } from "../../services/note_autocomplete.js";
|
import { SuggestionMode, Suggestion, triggerRecentNotes } from "../../services/note_autocomplete.js";
|
||||||
import tree from "../../services/tree";
|
import tree from "../../services/tree";
|
||||||
import froca from "../../services/froca";
|
import froca from "../../services/froca";
|
||||||
import { useTriliumEvent } from "../react/hooks";
|
import { useTriliumEvent } from "../react/hooks";
|
||||||
@ -50,7 +50,7 @@ export default function IncludeNoteDialog() {
|
|||||||
inputRef={autoCompleteRef}
|
inputRef={autoCompleteRef}
|
||||||
opts={{
|
opts={{
|
||||||
hideGoToSelectedNoteButton: true,
|
hideGoToSelectedNoteButton: true,
|
||||||
createMode: CreateMode.CreateOnly,
|
suggestionMode: SuggestionMode.SuggestCreateOnly,
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import Button from "../react/Button";
|
|||||||
import NoteAutocomplete from "../react/NoteAutocomplete";
|
import NoteAutocomplete from "../react/NoteAutocomplete";
|
||||||
import { t } from "../../services/i18n";
|
import { t } from "../../services/i18n";
|
||||||
import { useRef, useState } from "preact/hooks";
|
import { useRef, useState } from "preact/hooks";
|
||||||
import note_autocomplete, { CreateMode, Suggestion } from "../../services/note_autocomplete.js";
|
import note_autocomplete, { SuggestionMode, Suggestion } from "../../services/note_autocomplete.js";
|
||||||
import appContext from "../../components/app_context";
|
import appContext from "../../components/app_context";
|
||||||
import commandRegistry from "../../services/command_registry";
|
import commandRegistry from "../../services/command_registry";
|
||||||
import { refToJQuerySelector } from "../react/react_utils";
|
import { refToJQuerySelector } from "../react/react_utils";
|
||||||
@ -135,7 +135,7 @@ export default function JumpToNoteDialogComponent() {
|
|||||||
container={containerRef}
|
container={containerRef}
|
||||||
text={initialText}
|
text={initialText}
|
||||||
opts={{
|
opts={{
|
||||||
createMode: CreateMode.CreateOnly,
|
suggestionMode: SuggestionMode.SuggestCreateOnly,
|
||||||
hideGoToSelectedNoteButton: true,
|
hideGoToSelectedNoteButton: true,
|
||||||
allowJumpToSearchNotes: true,
|
allowJumpToSearchNotes: true,
|
||||||
isCommandPalette: true
|
isCommandPalette: true
|
||||||
|
|||||||
@ -7,7 +7,7 @@ import { useEffect, useState } from "preact/hooks";
|
|||||||
import note_types from "../../services/note_types";
|
import note_types from "../../services/note_types";
|
||||||
import { MenuCommandItem, MenuItem } from "../../menus/context_menu";
|
import { MenuCommandItem, MenuItem } from "../../menus/context_menu";
|
||||||
import { TreeCommandNames } from "../../menus/tree_context_menu";
|
import { TreeCommandNames } from "../../menus/tree_context_menu";
|
||||||
import { CreateMode, Suggestion } from "../../services/note_autocomplete.js";
|
import { SuggestionMode, Suggestion } from "../../services/note_autocomplete.js";
|
||||||
import Badge from "../react/Badge";
|
import Badge from "../react/Badge";
|
||||||
import { useTriliumEvent } from "../react/hooks";
|
import { useTriliumEvent } from "../react/hooks";
|
||||||
|
|
||||||
@ -86,7 +86,7 @@ export default function NoteTypeChooserDialogComponent() {
|
|||||||
onChange={setParentNote}
|
onChange={setParentNote}
|
||||||
placeholder={t("note_type_chooser.search_placeholder")}
|
placeholder={t("note_type_chooser.search_placeholder")}
|
||||||
opts={{
|
opts={{
|
||||||
createMode: CreateMode.None,
|
suggestionMode: SuggestionMode.SuggestNothing,
|
||||||
hideGoToSelectedNoteButton: true,
|
hideGoToSelectedNoteButton: true,
|
||||||
allowJumpToSearchNotes: false,
|
allowJumpToSearchNotes: false,
|
||||||
}}
|
}}
|
||||||
|
|||||||
@ -5,7 +5,7 @@ import BasicWidget from "../basic_widget.js";
|
|||||||
import toastService from "../../services/toast.js";
|
import toastService from "../../services/toast.js";
|
||||||
import appContext from "../../components/app_context.js";
|
import appContext from "../../components/app_context.js";
|
||||||
import server from "../../services/server.js";
|
import server from "../../services/server.js";
|
||||||
import noteAutocompleteService, { CreateMode } from "../../services/note_autocomplete.js";
|
import noteAutocompleteService, { SuggestionMode } from "../../services/note_autocomplete.js";
|
||||||
|
|
||||||
import { TPL, addMessageToChat, showSources, hideSources, showLoadingIndicator, hideLoadingIndicator } from "./ui.js";
|
import { TPL, addMessageToChat, showSources, hideSources, showLoadingIndicator, hideLoadingIndicator } from "./ui.js";
|
||||||
import { formatMarkdown } from "./utils.js";
|
import { formatMarkdown } from "./utils.js";
|
||||||
@ -163,7 +163,7 @@ export default class LlmChatPanel extends BasicWidget {
|
|||||||
const mentionSetup: MentionFeed[] = [
|
const mentionSetup: MentionFeed[] = [
|
||||||
{
|
{
|
||||||
marker: "@",
|
marker: "@",
|
||||||
feed: (queryText: string) => noteAutocompleteService.autocompleteSourceForCKEditor(queryText, CreateMode.CreateAndLink),
|
feed: (queryText: string) => noteAutocompleteService.autocompleteSourceForCKEditor(queryText, SuggestionMode.SuggestCreateAndLink),
|
||||||
itemRenderer: (item) => {
|
itemRenderer: (item) => {
|
||||||
const suggestion = item as Suggestion;
|
const suggestion = item as Suggestion;
|
||||||
const itemElement = document.createElement("button");
|
const itemElement = document.createElement("button");
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import { MutableRef, useEffect, useImperativeHandle, useMemo, useRef, useState }
|
|||||||
import { AttributeEditor as CKEditorAttributeEditor, MentionFeed, ModelElement, ModelNode, ModelPosition } from "@triliumnext/ckeditor5";
|
import { AttributeEditor as CKEditorAttributeEditor, MentionFeed, ModelElement, ModelNode, ModelPosition } from "@triliumnext/ckeditor5";
|
||||||
import { t } from "../../../services/i18n";
|
import { t } from "../../../services/i18n";
|
||||||
import server from "../../../services/server";
|
import server from "../../../services/server";
|
||||||
import note_autocomplete, { CreateMode, Suggestion } from "../../../services/note_autocomplete.js";
|
import note_autocomplete, { SuggestionMode, Suggestion } from "../../../services/note_autocomplete.js";
|
||||||
import CKEditor, { CKEditorApi } from "../../react/CKEditor";
|
import CKEditor, { CKEditorApi } from "../../react/CKEditor";
|
||||||
import { useLegacyImperativeHandlers, useLegacyWidget, useTooltip, useTriliumEvent, useTriliumOption } from "../../react/hooks";
|
import { useLegacyImperativeHandlers, useLegacyWidget, useTooltip, useTriliumEvent, useTriliumOption } from "../../react/hooks";
|
||||||
import FAttribute from "../../../entities/fattribute";
|
import FAttribute from "../../../entities/fattribute";
|
||||||
@ -34,7 +34,7 @@ const HELP_TEXT = `
|
|||||||
const mentionSetup: MentionFeed[] = [
|
const mentionSetup: MentionFeed[] = [
|
||||||
{
|
{
|
||||||
marker: "@",
|
marker: "@",
|
||||||
feed: (queryText) => note_autocomplete.autocompleteSourceForCKEditor(queryText, CreateMode.CreateAndLink),
|
feed: (queryText) => note_autocomplete.autocompleteSourceForCKEditor(queryText, SuggestionMode.SuggestCreateAndLink),
|
||||||
itemRenderer: (_item) => {
|
itemRenderer: (_item) => {
|
||||||
const item = _item as Suggestion;
|
const item = _item as Suggestion;
|
||||||
const itemElement = document.createElement("button");
|
const itemElement = document.createElement("button");
|
||||||
|
|||||||
@ -4,7 +4,7 @@ import FormGroup from "../react/FormGroup";
|
|||||||
import NoteAutocomplete from "../react/NoteAutocomplete";
|
import NoteAutocomplete from "../react/NoteAutocomplete";
|
||||||
import "./Empty.css";
|
import "./Empty.css";
|
||||||
import { ParentComponent, refToJQuerySelector } from "../react/react_utils";
|
import { ParentComponent, refToJQuerySelector } from "../react/react_utils";
|
||||||
import note_autocomplete, { CreateMode } from "../../services/note_autocomplete";
|
import note_autocomplete, { SuggestionMode } from "../../services/note_autocomplete";
|
||||||
import appContext from "../../components/app_context";
|
import appContext from "../../components/app_context";
|
||||||
import FNote from "../../entities/fnote";
|
import FNote from "../../entities/fnote";
|
||||||
import search from "../../services/search";
|
import search from "../../services/search";
|
||||||
@ -38,7 +38,7 @@ function NoteSearch() {
|
|||||||
inputRef={autocompleteRef}
|
inputRef={autocompleteRef}
|
||||||
opts={{
|
opts={{
|
||||||
hideGoToSelectedNoteButton: true,
|
hideGoToSelectedNoteButton: true,
|
||||||
createMode: CreateMode.CreateOnly,
|
suggestionMode: SuggestionMode.SuggestCreateOnly,
|
||||||
allowJumpToSearchNotes: true,
|
allowJumpToSearchNotes: true,
|
||||||
}}
|
}}
|
||||||
onChange={suggestion => {
|
onChange={suggestion => {
|
||||||
|
|||||||
@ -7,7 +7,7 @@ import emojiDefinitionsUrl from "@triliumnext/ckeditor5/src/emoji_definitions/en
|
|||||||
import { copyTextWithToast } from "../../../services/clipboard_ext.js";
|
import { copyTextWithToast } from "../../../services/clipboard_ext.js";
|
||||||
import { t } from "../../../services/i18n.js";
|
import { t } from "../../../services/i18n.js";
|
||||||
import { getMermaidConfig } from "../../../services/mermaid.js";
|
import { getMermaidConfig } from "../../../services/mermaid.js";
|
||||||
import noteAutocompleteService, { CreateMode, type Suggestion } from "../../../services/note_autocomplete.js";
|
import noteAutocompleteService, { SuggestionMode, type Suggestion } from "../../../services/note_autocomplete.js";
|
||||||
import mimeTypesService from "../../../services/mime_types.js";
|
import mimeTypesService from "../../../services/mime_types.js";
|
||||||
import { normalizeMimeTypeForCKEditor } from "@triliumnext/commons";
|
import { normalizeMimeTypeForCKEditor } from "@triliumnext/commons";
|
||||||
import { buildToolbarConfig } from "./toolbar.js";
|
import { buildToolbarConfig } from "./toolbar.js";
|
||||||
@ -181,7 +181,7 @@ export async function buildConfig(opts: BuildEditorOptions): Promise<EditorConfi
|
|||||||
feeds: [
|
feeds: [
|
||||||
{
|
{
|
||||||
marker: "@",
|
marker: "@",
|
||||||
feed: (queryText: string) => noteAutocompleteService.autocompleteSourceForCKEditor(queryText, CreateMode.CreateAndLink),
|
feed: (queryText: string) => noteAutocompleteService.autocompleteSourceForCKEditor(queryText, SuggestionMode.SuggestCreateAndLink),
|
||||||
itemRenderer: (item) => {
|
itemRenderer: (item) => {
|
||||||
const itemElement = document.createElement("button");
|
const itemElement = document.createElement("button");
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user