chore(client/ts): port web_view

This commit is contained in:
Elian Doran 2025-02-17 21:22:58 +02:00
parent 237f2ead73
commit fd47412d51
No known key found for this signature in database

View File

@ -1,18 +1,20 @@
import { t } from "../../services/i18n.js";
import TypeWidget from "./type_widget.js";
import attributeService from "../../services/attributes.js";
import type FNote from "../../entities/fnote.js";
import type { EventData } from "../../components/app_context.js";
const TPL = `
<div class="note-detail-web-view note-detail-printable" style="height: 100%">
<div class="note-detail-web-view-help alert alert-warning" style="margin: 50px; padding: 20px 20px 0px 20px;">
<h4>${t("web_view.web_view")}</h4>
<p>${t("web_view.embed_websites")}</p>
<p>${t("web_view.create_label")}</p>
<h4>${t("web_view.disclaimer")}</h4>
<p>${t("web_view.experimental_note")}</p>
</div>
@ -20,6 +22,10 @@ const TPL = `
</div>`;
export default class WebViewTypeWidget extends TypeWidget {
private $noteDetailWebViewHelp!: JQuery<HTMLElement>;
private $noteDetailWebViewContent!: JQuery<HTMLElement>;
static getType() {
return "webView";
}
@ -34,11 +40,15 @@ export default class WebViewTypeWidget extends TypeWidget {
super.doRender();
}
async doRefresh(note) {
async doRefresh(note: FNote) {
this.$widget.show();
this.$noteDetailWebViewHelp.hide();
this.$noteDetailWebViewContent.hide();
if (!this.note) {
return;
}
const webViewSrc = this.note.getLabelValue("webViewSrc");
if (webViewSrc) {
@ -54,17 +64,19 @@ export default class WebViewTypeWidget extends TypeWidget {
}
cleanup() {
this.$noteDetailWebViewContent.removeAttribute("src");
this.$noteDetailWebViewContent.removeAttr("src");
}
setDimensions() {
const $parent = this.$widget;
this.$noteDetailWebViewContent.height($parent.height()).width($parent.width());
this.$noteDetailWebViewContent
.height($parent.height() ?? 0)
.width($parent.width() ?? 0);
}
entitiesReloadedEvent({ loadResults }) {
if (loadResults.getAttributeRows().find((attr) => attr.name === "webViewSrc" && attributeService.isAffecting(attr, this.noteContext.note))) {
entitiesReloadedEvent({ loadResults }: EventData<"entitiesReloaded">) {
if (loadResults.getAttributeRows().find((attr) => attr.name === "webViewSrc" && attributeService.isAffecting(attr, this.noteContext?.note))) {
this.refresh();
}
}