@naniteninja/dashboard-components-lib 2.4.5 → 2.4.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts CHANGED
@@ -1860,6 +1860,10 @@ interface ISwipeableTabsHost {
1860
1860
  mainSwiperInstance: Swiper__default;
1861
1861
  _activeIndex: number;
1862
1862
  activeIndex: number;
1863
+ mainSwiperGestureActive: boolean;
1864
+ mainSwiperLastGestureAt: number;
1865
+ activeIndexBeforeLastEmit: number;
1866
+ lastActiveIndexEmitAt: number;
1863
1867
  enableGrouping: boolean;
1864
1868
  enableDragAndDrop: boolean;
1865
1869
  enableTabBarScrollDrag: boolean;
@@ -1982,6 +1986,7 @@ interface ISwipeableTabsHost {
1982
1986
  mergeNewItemsAfterRestore(storedRule: StoredRule): void;
1983
1987
  updateDisplayItems(): void;
1984
1988
  saveState(): void;
1989
+ schedulePortalStabilize?(): void;
1985
1990
  }
1986
1991
 
1987
1992
  declare class SwipeableTabsResizeService {
@@ -2183,6 +2188,30 @@ declare class SwipeableTabsHostState {
2183
2188
  expandedItemLeft: number;
2184
2189
  expandedItemRef: ILibClientMatchOverview | null;
2185
2190
  _activeIndex: number;
2191
+ /**
2192
+ * The main swiper's `slideChange` is only honoured while the user is actually dragging it (or
2193
+ * shortly after they let go / pressed an arrow key). Swiper also fires `slideChange` on its own
2194
+ * after `update()` recomputes the active slide from the translate — and `update()` runs on every
2195
+ * DOM mutation because the swiper is created with `observer: true`. On the client dashboard the
2196
+ * content swiper sits squashed behind a 55px belt, so those recomputations could land on a
2197
+ * neighbouring slide and drag the expanded prospect along with them, one tab at a time, with
2198
+ * nobody touching anything. Without a gesture there is nothing to follow.
2199
+ */
2200
+ mainSwiperGestureActive: boolean;
2201
+ mainSwiperLastGestureAt: number;
2202
+ /**
2203
+ * What `_activeIndex` was right before this component last announced a new index, and when.
2204
+ *
2205
+ * Hosts feed `activeIndexChange` back into `[activeIndex]`, sometimes after a delay and via
2206
+ * config objects that get rebuilt on every data refresh. A rebuild that happens between our emit
2207
+ * and the host catching up pushes the *old* index straight back in, which used to re-expand the
2208
+ * previous prospect and then flip forward again when the host finally caught up. An incoming
2209
+ * value that equals the index we just moved away from, within a short window, is that echo and
2210
+ * is ignored — a genuine host request to go back to it inside that window cannot be told apart,
2211
+ * and is not something a person can do within 1.5 seconds of tapping a different tab.
2212
+ */
2213
+ activeIndexBeforeLastEmit: number;
2214
+ lastActiveIndexEmitAt: number;
2186
2215
  }
2187
2216
 
2188
2217
  declare class SwipeableTabsStateService {
@@ -3292,6 +3321,20 @@ declare class ClientViewportSlidesService {
3292
3321
  handleProfileEdgeDrag(event: 'left' | 'right' | Event): void;
3293
3322
  handleHandoffSwipeNext(): void;
3294
3323
  handleHandoffSwipePrev(): void;
3324
+ /**
3325
+ * A different prospect tab was chosen.
3326
+ *
3327
+ * The state moves immediately: config index, expanded flags, the host's `activeIndexChange`.
3328
+ * Only the slide-out / slide-in of the content panel is timed. This used to all sit inside the
3329
+ * 150ms slide-out delay, which left the host holding the previous index while data refreshes
3330
+ * kept rebuilding its config — each rebuild pushed that previous index back into the belt and
3331
+ * re-expanded the prospect the user had just left, until the delayed emit flipped it forward
3332
+ * again. With the host told at once there is no window for that.
3333
+ *
3334
+ * The matches are no longer re-emitted here. Flipping `isExpanded` in place is all the belt and
3335
+ * the spider chart read; pushing a fresh array through `clientMatches$` on every tab change only
3336
+ * made every subscriber — including the belt itself — re-run its refresh logic for no new data.
3337
+ */
3295
3338
  onChatHeadChange(index: number, profileSwiperEl?: ElementRef, previousProspectIndex?: number): number;
3296
3339
  onSwipeStart(event: MouseEvent | TouchEvent): {
3297
3340
  touchStartX: number;
@@ -3323,6 +3366,8 @@ declare class ClientViewportStateService {
3323
3366
  destroy(): void;
3324
3367
  initialize(): void;
3325
3368
  handleConfigChange(): void;
3369
+ /** The Chat Handoff panel shows the active prospect's conversation; call after the matches change. */
3370
+ refreshHandoffForActiveProspect(): void;
3326
3371
  handleClientHomeConfigChange(): void;
3327
3372
  initPageRouting(): void;
3328
3373
  applyActivePageInput(): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@naniteninja/dashboard-components-lib",
3
- "version": "2.4.5",
3
+ "version": "2.4.6",
4
4
  "author": "naniteninja",
5
5
  "repository": {
6
6
  "type": "git"