From cf11be7f35dd85a36ccceac145647f85ae79d2c3 Mon Sep 17 00:00:00 2001 From: Panagiotis Papadopoulos Date: Wed, 12 Feb 2025 08:28:29 +0100 Subject: [PATCH 01/24] chore(ts): get rid of bootstrap related ts-ignores --- src/public/app/services/utils.ts | 9 +++------ src/public/app/widgets/editability_select.ts | 5 ++--- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/public/app/services/utils.ts b/src/public/app/services/utils.ts index 7accea1fb..f07f55258 100644 --- a/src/public/app/services/utils.ts +++ b/src/public/app/services/utils.ts @@ -1,4 +1,5 @@ import dayjs from "dayjs"; +import { Modal } from "bootstrap"; function reloadFrontendApp(reason?: string) { if (reason) { @@ -244,9 +245,7 @@ function getMimeTypeClass(mime: string) { function closeActiveDialog() { if (glob.activeDialog) { - // TODO: Fix once we use proper ES imports. - //@ts-ignore - bootstrap.Modal.getOrCreateInstance(glob.activeDialog[0]).hide(); + Modal.getOrCreateInstance(glob.activeDialog[0]).hide(); glob.activeDialog = null; } } @@ -288,9 +287,7 @@ async function openDialog($dialog: JQuery, closeActDialog = true) { } saveFocusedElement(); - // TODO: Fix once we use proper ES imports. - //@ts-ignore - bootstrap.Modal.getOrCreateInstance($dialog[0]).show(); + Modal.getOrCreateInstance($dialog[0]).show(); $dialog.on("hidden.bs.modal", () => { const $autocompleteEl = $(".aa-input"); diff --git a/src/public/app/widgets/editability_select.ts b/src/public/app/widgets/editability_select.ts index d9a8898cf..14fe8fdd5 100644 --- a/src/public/app/widgets/editability_select.ts +++ b/src/public/app/widgets/editability_select.ts @@ -3,6 +3,7 @@ import NoteContextAwareWidget from "./note_context_aware_widget.js"; import { t } from "../services/i18n.js"; import type FNote from "../entities/fnote.js"; import type { EventData } from "../components/app_context.js"; +import { Dropdown } from "bootstrap"; type Editability = "auto" | "readOnly" | "autoReadOnlyDisabled"; @@ -65,9 +66,7 @@ export default class EditabilitySelectWidget extends NoteContextAwareWidget { doRender() { this.$widget = $(TPL); - // TODO: Remove once bootstrap is added to webpack. - //@ts-ignore - this.dropdown = bootstrap.Dropdown.getOrCreateInstance(this.$widget.find("[data-bs-toggle='dropdown']")); + this.dropdown = Dropdown.getOrCreateInstance(this.$widget.find("[data-bs-toggle='dropdown']")[0]); this.$editabilityActiveDesc = this.$widget.find(".editability-active-desc"); From cc1a01955aed87e4c9bdfa3a89d4d9f0fb289e6e Mon Sep 17 00:00:00 2001 From: Panagiotis Papadopoulos Date: Wed, 12 Feb 2025 08:38:55 +0100 Subject: [PATCH 02/24] chore(ts): get rid of bootstrap related ts-ignores --- src/public/app/widgets/dialogs/confirm.ts | 7 +++---- src/public/app/widgets/dialogs/password_not_set.ts | 4 ++-- src/public/app/widgets/dialogs/prompt.ts | 7 +++---- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/public/app/widgets/dialogs/confirm.ts b/src/public/app/widgets/dialogs/confirm.ts index b29f0f848..70de19647 100644 --- a/src/public/app/widgets/dialogs/confirm.ts +++ b/src/public/app/widgets/dialogs/confirm.ts @@ -1,5 +1,6 @@ import BasicWidget from "../basic_widget.js"; import { t } from "../../services/i18n.js"; +import { Modal } from "bootstrap"; const DELETE_NOTE_BUTTON_CLASS = "confirm-dialog-delete-note"; @@ -49,7 +50,7 @@ export interface ConfirmWithTitleOptions { export default class ConfirmDialog extends BasicWidget { private resolve: ConfirmDialogCallback | null; - private modal!: bootstrap.Modal; + private modal!: Modal; private $originallyFocused!: JQuery | null; private $confirmContent!: JQuery; private $okButton!: JQuery; @@ -65,9 +66,7 @@ export default class ConfirmDialog extends BasicWidget { doRender() { this.$widget = $(TPL); - // TODO: Fix once we use proper ES imports. - //@ts-ignore - this.modal = bootstrap.Modal.getOrCreateInstance(this.$widget); + this.modal = Modal.getOrCreateInstance(this.$widget[0]); this.$confirmContent = this.$widget.find(".confirm-dialog-content"); this.$okButton = this.$widget.find(".confirm-dialog-ok-button"); this.$cancelButton = this.$widget.find(".confirm-dialog-cancel-button"); diff --git a/src/public/app/widgets/dialogs/password_not_set.ts b/src/public/app/widgets/dialogs/password_not_set.ts index be608a4c2..c5e30712a 100644 --- a/src/public/app/widgets/dialogs/password_not_set.ts +++ b/src/public/app/widgets/dialogs/password_not_set.ts @@ -1,6 +1,7 @@ import { t } from "../../services/i18n.js"; import utils from "../../services/utils.js"; import BasicWidget from "../basic_widget.js"; +import { Modal } from "bootstrap"; const TPL = `