diff --git a/frontend/src/components/ui/tab-list.ts b/frontend/src/components/ui/tab-list.ts
index 8c9c9f55..ce37368c 100644
--- a/frontend/src/components/ui/tab-list.ts
+++ b/frontend/src/components/ui/tab-list.ts
@@ -5,8 +5,6 @@ import { ifDefined } from "lit/directives/if-defined.js";
import { TailwindElement } from "@/classes/TailwindElement";
const DEFAULT_PANEL_ID = "default-panel";
-// postcss-lit-disable-next-line
-export const TWO_COL_SCREEN_MIN_CSS = css`64.5rem`;
const tabTagName = "btrix-tab-list-tab" as const;
@@ -58,12 +56,6 @@ export class TabList extends TailwindElement {
--track-width: 4px;
}
- @media only screen and (min-width: ${TWO_COL_SCREEN_MIN_CSS}) {
- .navWrapper {
- overflow: initial;
- }
- }
-
.header {
grid-area: header;
font-size: var(--sl-font-size-large);
@@ -94,12 +86,6 @@ export class TabList extends TailwindElement {
margin-left: var(--track-width);
}
- @media only screen and (min-width: ${TWO_COL_SCREEN_MIN_CSS}) {
- .tablist {
- flex-direction: column;
- }
- }
-
.track {
display: none;
position: absolute;
@@ -118,13 +104,6 @@ export class TabList extends TailwindElement {
border-radius: var(--track-width);
background-color: var(--sl-color-primary-500);
}
-
- @media only screen and (min-width: ${TWO_COL_SCREEN_MIN_CSS}) {
- .show-indicator .track,
- .show-indicator .indicator {
- display: block;
- }
- }
`;
// ID of active tab
@@ -178,7 +157,9 @@ export class TabList extends TailwindElement {
}
render() {
- return html`
${this.renderNav()}
`;
+ return html`
+ ${this.renderNav()}
+
`;
}
renderNav() {
@@ -193,11 +174,14 @@ export class TabList extends TailwindElement {
? "hide-indicator"
: "show-indicator"} -mx-3 overflow-x-hidden px-3"
>
-
diff --git a/frontend/src/features/crawl-workflows/workflow-editor.ts b/frontend/src/features/crawl-workflows/workflow-editor.ts
index 174e570a..c9661854 100644
--- a/frontend/src/features/crawl-workflows/workflow-editor.ts
+++ b/frontend/src/features/crawl-workflows/workflow-editor.ts
@@ -59,9 +59,11 @@ import { panel } from "@/layouts/panel";
import infoTextStrings from "@/strings/crawl-workflows/infoText";
import scopeTypeLabels from "@/strings/crawl-workflows/scopeType";
import sectionStrings from "@/strings/crawl-workflows/section";
+import { AnalyticsTrackEvent } from "@/trackEvents";
import { ScopeType, type Seed, type WorkflowParams } from "@/types/crawler";
import type { UnderlyingFunction } from "@/types/utils";
import { NewWorkflowOnlyScopeType } from "@/types/workflow";
+import { track } from "@/utils/analytics";
import { isApiError } from "@/utils/api";
import { DEPTH_SUPPORTED_SCOPES, isPageScopeType } from "@/utils/crawler";
import {
@@ -69,6 +71,7 @@ import {
humanizeNextDate,
humanizeSchedule,
} from "@/utils/cron";
+import { makeCurrentTargetHandler, stopProp } from "@/utils/events";
import { formValidator, maxLengthValidator } from "@/utils/form";
import localize from "@/utils/localize";
import { isArchivingDisabled } from "@/utils/orgs";
@@ -234,6 +237,7 @@ export class WorkflowEditor extends BtrixElement {
threshold: 0.2, // stricter; default is 0.6
});
+ private readonly handleCurrentTarget = makeCurrentTargetHandler(this);
private readonly checkFormValidity = formValidator(this);
private readonly validateNameMax = maxLengthValidator(50);
private readonly validateDescriptionMax = maxLengthValidator(350);
@@ -405,7 +409,10 @@ export class WorkflowEditor extends BtrixElement {
};
return html`
-
+
${STEPS.map(button)}
`;
@@ -436,13 +443,17 @@ export class WorkflowEditor extends BtrixElement {
activeTab: name,
});
}}
- @sl-show=${() => {
+ @sl-show=${this.handleCurrentTarget(() => {
this.pauseObserve();
this.updateProgressState({
activeTab: name,
});
- }}
- @sl-hide=${(e: SlHideEvent) => {
+
+ track(AnalyticsTrackEvent.ExpandWorkflowFormSection, {
+ section: name,
+ });
+ })}
+ @sl-hide=${this.handleCurrentTarget((e: SlHideEvent) => {
const el = e.currentTarget as SlDetails;
// Check if there's any invalid elements before hiding
@@ -461,12 +472,19 @@ export class WorkflowEditor extends BtrixElement {
invalidEl.focus();
invalidEl.checkValidity();
}
- }}
- @sl-after-show=${this.resumeObserve}
- @sl-after-hide=${this.resumeObserve}
+ })}
+ @sl-after-show=${this.handleCurrentTarget(this.resumeObserve)}
+ @sl-after-hide=${this.handleCurrentTarget(this.resumeObserve)}
>
-
+
@@ -477,6 +495,10 @@ export class WorkflowEditor extends BtrixElement {
console.log("Only current target!"))}
+ * >
+ *
+ * ```
+ */
+export function makeCurrentTargetHandler(t: EventTarget) {
+ const currentTargetHandler: (
+ handler: (event: T) => void,
+ ) => (event: T) => void = (handler) => (e) => {
+ if (e.target === e.currentTarget) {
+ handler.bind(t)(e);
+ }
+ };
+
+ return currentTargetHandler;
+}
+
+/**
+ * Stop propgation shorthand.
+ *
+ * @example Usage:
+ * ```
+ *
+ *
+ * ```
+ */
+export function stopProp(e: Event) {
+ e.stopPropagation();
+}