Member Junction
    Preparing search index...

    <mj-workspace-tab-strip> — browser-style draft tabs, presentation over MJWorkspaceTabStore.

    Dumb by design: it renders the tabs it is handed and emits intent. The store holds the state machine; the host owns what a tab's payload means. That split keeps it app-agnostic.

    Browser-tab behavior lives HERE so every consumer inherits it:

    • pinned new-tab button; the tab LIST scrolls horizontally behind it on overflow;
    • tabs size to their text up to --mj-tab-max, then ellipsize; the inline unsaved-dot pushes the label;
    • the tab body keeps the default arrow cursor (like browser tabs);
    • the full label shows via the reusable mjTip tooltip when a tab is truncated (delayed, non-interactive);
    • drag-reorder via CDK, emitted as intent for the host to apply to its store.

    Appearance and keyboard behaviour are NOT owned here. The look comes from the global .mj-tabs* chrome in tabs.scss, and the ARIA tabs keyboard contract from mjTabList — both shared with mj-tabstrip, so the two strips cannot drift apart visually or behaviourally even though they keep different state models.

    Implements

    • AfterViewInit
    Index

    Constructors

    Properties

    ActiveId: string | null = null
    AllowReorder: boolean = true

    Whether tabs can be drag-reordered at all. The escape hatch for hosts where even long-press dragging is wrong (a kiosk surface, a read-only review screen) — reorder simply isn't offered and every touch gesture belongs to scrolling.

    DragStartDelay: { mouse: number; touch: number } = ...

    Per-pointer-type drag threshold, resolving the touch conflict between REORDER and SCROLL: an overflowing tab list scrolls by horizontal swipe, and a swipe starts on a tab — with an immediate drag threshold, CDK claims that touch and the list becomes unscrollable on phones. A hold-to-drag delay is the platform idiom for exactly this (iOS home screen, mobile browser tabs): a moving finger within the delay window is a SCROLL and CDK lets it through natively; a still finger past it is a DRAG. Mouse stays immediate — pointer users scroll with the wheel or scrollbar, so there is no gesture to disambiguate and a delay would just feel laggy.

    NewTabLabel: string = 'New'
    NewTabRequested: EventEmitter<void> = ...
    ShowNewTab: boolean = true
    TabClosed: EventEmitter<string> = ...
    TabReordered: EventEmitter<MJTabReorder> = ...
    Tabs: MJWorkspaceTab<unknown>[] = []
    TabSelected: EventEmitter<string> = ...

    Methods