From 675a5e96e6850987ed61455974eddbe691b383a8 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Mon, 24 Feb 2025 13:50:08 +0200 Subject: [PATCH] chore(client/ts): port search_string --- src/public/app/components/app_context.ts | 2 ++ .../search_options/abstract_search_option.ts | 2 +- .../{search_string.js => search_string.ts} | 20 +++++++++++-------- 3 files changed, 15 insertions(+), 9 deletions(-) rename src/public/app/widgets/search_options/{search_string.js => search_string.ts} (88%) diff --git a/src/public/app/components/app_context.ts b/src/public/app/components/app_context.ts index 25bdb1daa..a6f69af64 100644 --- a/src/public/app/components/app_context.ts +++ b/src/public/app/components/app_context.ts @@ -369,6 +369,8 @@ class AppContext extends Component { layout?: Layout; noteTreeWidget?: NoteTreeWidget; + lastSearchString?: string; + constructor(isMainWindow: boolean) { super(); diff --git a/src/public/app/widgets/search_options/abstract_search_option.ts b/src/public/app/widgets/search_options/abstract_search_option.ts index 1fad95a39..42632b24b 100644 --- a/src/public/app/widgets/search_options/abstract_search_option.ts +++ b/src/public/app/widgets/search_options/abstract_search_option.ts @@ -10,7 +10,7 @@ import type { AttributeType } from "../../entities/fattribute.js"; export default abstract class AbstractSearchOption extends Component { private attribute: FAttribute; - private note: FNote; + protected note: FNote; constructor(attribute: FAttribute, note: FNote) { super(); diff --git a/src/public/app/widgets/search_options/search_string.js b/src/public/app/widgets/search_options/search_string.ts similarity index 88% rename from src/public/app/widgets/search_options/search_string.js rename to src/public/app/widgets/search_options/search_string.ts index 6c841888b..56b4a0f16 100644 --- a/src/public/app/widgets/search_options/search_string.js +++ b/src/public/app/widgets/search_options/search_string.ts @@ -2,7 +2,7 @@ import AbstractSearchOption from "./abstract_search_option.js"; import SpacedUpdate from "../../services/spaced_update.js"; import server from "../../services/server.js"; import shortcutService from "../../services/shortcuts.js"; -import appContext from "../../components/app_context.js"; +import appContext, { type EventData } from "../../components/app_context.js"; import { t } from "../../services/i18n.js"; import { Tooltip } from "bootstrap"; @@ -29,12 +29,16 @@ const TPL = ` - + `; export default class SearchString extends AbstractSearchOption { + + private $searchString!: JQuery; + private spacedUpdate!: SpacedUpdate; + static get optionName() { return "searchString"; } @@ -42,7 +46,7 @@ export default class SearchString extends AbstractSearchOption { return "label"; } - static async create(noteId) { + static async create(noteId: string) { await AbstractSearchOption.setAttribute(noteId, "label", "searchString"); } @@ -61,7 +65,7 @@ export default class SearchString extends AbstractSearchOption { }); this.spacedUpdate = new SpacedUpdate(async () => { - const searchString = this.$searchString.val(); + const searchString = String(this.$searchString.val()); appContext.lastSearchString = searchString; await this.setAttribute("label", "searchString", searchString); @@ -73,13 +77,13 @@ export default class SearchString extends AbstractSearchOption { } }, 1000); - this.$searchString.val(this.note.getLabelValue("searchString")); + this.$searchString.val(this.note.getLabelValue("searchString") ?? ""); return $option; } - showSearchErrorEvent({ error }) { - let tooltip = new Tooltip(this.$searchString, { + showSearchErrorEvent({ error }: EventData<"showSearchError">) { + let tooltip = new Tooltip(this.$searchString[0], { trigger: "manual", title: `${t("search_string.error", { error })}`, placement: "bottom" @@ -92,7 +96,7 @@ export default class SearchString extends AbstractSearchOption { focusOnSearchDefinitionEvent() { this.$searchString - .val(this.$searchString.val().trim() || appContext.lastSearchString) + .val(String(this.$searchString.val()).trim() ?? appContext.lastSearchString) .focus() .select(); this.spacedUpdate.scheduleUpdate();