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``; + 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` - + `; @@ -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(); +}