diff --git a/frontend/src/index.ts b/frontend/src/index.ts
index 3b1d87e9..2300e825 100644
--- a/frontend/src/index.ts
+++ b/frontend/src/index.ts
@@ -1,4 +1,5 @@
import type { TemplateResult } from "lit";
+import { render } from "lit";
import { state, query } from "lit/decorators.js";
import { ifDefined } from "lit/directives/if-defined.js";
import { msg, localized } from "@lit/localize";
@@ -491,6 +492,9 @@ export class App extends LiteElement {
};
}
+ /**
+ * Show global toast alert
+ */
onNotify(event: NotifyEvent) {
event.stopPropagation();
@@ -502,7 +506,8 @@ export class App extends LiteElement {
duration = 5000,
} = event.detail;
- const alert = Object.assign(document.createElement("sl-alert"), {
+ const container = document.createElement("sl-alert");
+ const alert = Object.assign(container, {
type: type,
closable: true,
duration: duration,
@@ -512,16 +517,16 @@ export class App extends LiteElement {
// "--sl-panel-border-width: 0px",
"--sl-spacing-large: var(--sl-spacing-medium)",
].join(";"),
- innerHTML: `
-
-
- ${title ? `${title}` : ""}
- ${message ? `${message}
` : ""}
-
-
- `,
});
+ render(
+ html`
+
+ ${title ? html`${title}` : ""}
+ ${message ? html`
${message}
` : ""}
+ `,
+ container
+ );
document.body.append(alert);
alert.toast();
}
diff --git a/frontend/src/pages/archive/crawl-templates-detail.ts b/frontend/src/pages/archive/crawl-templates-detail.ts
index e2e19769..38036ff3 100644
--- a/frontend/src/pages/archive/crawl-templates-detail.ts
+++ b/frontend/src/pages/archive/crawl-templates-detail.ts
@@ -415,11 +415,14 @@ export class CrawlTemplatesDetail extends LiteElement {
this.notify({
message: msg(
- str`Started crawl from ${
- this.crawlTemplate!.name
- }.
View crawl`
+ html`Started crawl from ${this.crawlTemplate!.name}.
+
+ View crawl`
),
type: "success",
icon: "check2-circle",
diff --git a/frontend/src/pages/archive/crawl-templates-list.ts b/frontend/src/pages/archive/crawl-templates-list.ts
index abd5a9d5..2676600c 100644
--- a/frontend/src/pages/archive/crawl-templates-list.ts
+++ b/frontend/src/pages/archive/crawl-templates-list.ts
@@ -47,7 +47,6 @@ export class CrawlTemplatesList extends LiteElement {
message: msg("Sorry, couldn't retrieve crawl templates at this time."),
type: "danger",
icon: "exclamation-octagon",
- duration: 10000,
});
}
}
@@ -379,7 +378,7 @@ export class CrawlTemplatesList extends LiteElement {
);
this.notify({
- message: msg(str`Deleted ${template.name}.`),
+ message: msg(html`Deleted ${template.name}.`),
type: "success",
icon: "check2-circle",
});
@@ -415,7 +414,13 @@ export class CrawlTemplatesList extends LiteElement {
this.notify({
message: msg(
- str`Started crawl from ${template.name}.
View crawl`
+ html`Started crawl from ${template.name}.
+ View crawl`
),
type: "success",
icon: "check2-circle",
diff --git a/frontend/src/pages/archive/crawl-templates-new.ts b/frontend/src/pages/archive/crawl-templates-new.ts
index d9d52f6b..7c3b3982 100644
--- a/frontend/src/pages/archive/crawl-templates-new.ts
+++ b/frontend/src/pages/archive/crawl-templates-new.ts
@@ -543,7 +543,14 @@ export class CrawlTemplatesNew extends LiteElement {
this.notify({
message: data.run_now_job
? msg(
- str`Crawl running with new template.
View crawl`
+ html`Crawl running with new template.
+ View crawl`
)
: msg("Crawl template created."),
type: "success",
diff --git a/frontend/src/pages/archive/crawl-templates.ts b/frontend/src/pages/archive/crawl-templates.ts
index e804756e..14c887b7 100644
--- a/frontend/src/pages/archive/crawl-templates.ts
+++ b/frontend/src/pages/archive/crawl-templates.ts
@@ -46,7 +46,6 @@ export class CrawlTemplatesList extends LiteElement {
message: msg("Sorry, couldn't retrieve crawl templates at this time."),
type: "danger",
icon: "exclamation-octagon",
- duration: 10000,
});
}
}
@@ -119,7 +118,7 @@ export class CrawlTemplatesList extends LiteElement {
);
this.notify({
- message: msg(str`Deleted ${template.name}.`),
+ message: msg(html`Deleted ${template.name}.`),
type: "success",
icon: "check2-circle",
});
@@ -155,7 +154,13 @@ export class CrawlTemplatesList extends LiteElement {
this.notify({
message: msg(
- str`Started crawl from ${template.name}.
View crawl`
+ html`Started crawl from ${template.name}.
+ View crawl`
),
type: "success",
icon: "check2-circle",
diff --git a/frontend/src/pages/archive/crawls-list.ts b/frontend/src/pages/archive/crawls-list.ts
index 8eef4044..cae3e582 100644
--- a/frontend/src/pages/archive/crawls-list.ts
+++ b/frontend/src/pages/archive/crawls-list.ts
@@ -242,7 +242,17 @@ export class CrawlsList extends LiteElement {
title=${crawl.configName || crawl.cid}
>
-
${crawl.configName || crawl.cid}
+
Look!`
+ * ```
+ *
+ * Note: In order for `this` methods to work, you'll
+ * need to bind `this` or use a fat arrow function.
+ * For example:
+ * ```ts
+ * message: html``
+ * ```
+ * Or:
+ * ```ts
+ * message: html``
+ * ```
**/
- message: string;
+ message: string | TemplateResult;
/** Notification title */
title?: string;
/** Shoelace icon name */
@@ -50,7 +64,17 @@ export default class LiteElement extends LitElement {
* ```
* @param event Click event
*/
- navLink(event: Event): void {
+ navLink(event: MouseEvent, href?: string): void {
+ // Detect keypress for opening in a new tab
+ if (
+ event.ctrlKey ||
+ event.shiftKey ||
+ event.metaKey ||
+ (event.button && event.button == 1)
+ ) {
+ return;
+ }
+
event.preventDefault();
const evt: NavigateEvent = new CustomEvent("navigate", {