mn-angular-lib 1.0.129 → 1.0.130

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mn-angular-lib",
3
- "version": "1.0.129",
3
+ "version": "1.0.130",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^21.1.3",
6
6
  "@angular/core": "^21.1.3"
@@ -2621,10 +2621,24 @@ declare class MnMultiSelect implements OnInit {
2621
2621
  private readonly lang;
2622
2622
  private readonly destroyRef;
2623
2623
  private readonly renderer;
2624
+ private readonly cdr;
2624
2625
  /** Reference to the trigger element for positioning the dropdown */
2625
2626
  triggerRef: ElementRef<HTMLElement>;
2626
2627
  /** The panel element currently moved into `document.body`, if any. */
2627
2628
  private movedPanel;
2629
+ /**
2630
+ * Watches the trigger while the panel is open. The panel lives in `document.body`,
2631
+ * so it survives its own trigger being hidden by an ancestor — e.g. a wizard step
2632
+ * or a tab that is switched away with `display: none` instead of being destroyed.
2633
+ * When the trigger stops being visible the panel must go with it.
2634
+ */
2635
+ private visibilityObserver;
2636
+ /**
2637
+ * Capture-phase scroll listener installed while open. `window:scroll` only fires for
2638
+ * the document scroller, so scrolling an inner container (a modal body, a scrollable
2639
+ * card) used to leave the portalled panel floating at its stale coordinates.
2640
+ */
2641
+ private scrollCapture;
2628
2642
  /**
2629
2643
  * The dropdown panel element, queried while it is rendered by the `@if` block.
2630
2644
  * The setter relocates the panel to `document.body` so that its `position: fixed`
@@ -2657,10 +2671,25 @@ declare class MnMultiSelect implements OnInit {
2657
2671
  registerOnTouched(fn: () => void): void;
2658
2672
  setDisabledState(isDisabled: boolean): void;
2659
2673
  toggle(): void;
2660
- /** Calculates the fixed position for the dropdown based on the trigger element */
2661
- private updateDropdownPosition;
2662
2674
  /** Closes the dropdown on Escape for keyboard accessibility. */
2663
2675
  onEscape(): void;
2676
+ /** Closes the dropdown when the page or a scrollable parent is scrolled */
2677
+ onWindowScrollOrResize(): void;
2678
+ /**
2679
+ * The single close path. Every trigger (outside click, Escape, scroll, resize, the
2680
+ * trigger being hidden) funnels through here so the open-only listeners are always
2681
+ * torn down with the panel and never leak.
2682
+ */
2683
+ private close;
2684
+ /** Calculates the fixed position for the dropdown based on the trigger element */
2685
+ private updateDropdownPosition;
2686
+ /**
2687
+ * Starts the open-only watchers: an `IntersectionObserver` on the trigger (closes the
2688
+ * panel as soon as the trigger stops being rendered/visible) and a capture-phase
2689
+ * `scroll` listener (closes it when any ancestor scroller moves under it). Scrolls
2690
+ * that originate inside the panel's own option list are ignored.
2691
+ */
2692
+ private startWatchingTrigger;
2664
2693
  /**
2665
2694
  * Move the dropdown panel to `document.body` when it appears, and detach it when
2666
2695
  * the query clears. Appending to the body root makes the panel immune to ancestor
@@ -2668,8 +2697,8 @@ declare class MnMultiSelect implements OnInit {
2668
2697
  * and the panel stays under its trigger. Idempotent and safe to call with `null`.
2669
2698
  */
2670
2699
  private relocateDropdown;
2671
- /** Closes the dropdown when the page or a scrollable parent is scrolled */
2672
- onWindowScrollOrResize(): void;
2700
+ /** Tears down the watchers installed by `startWatchingTrigger`. Idempotent. */
2701
+ private stopWatchingTrigger;
2673
2702
  toggleOption(option: MnMultiSelectOption): void;
2674
2703
  removeOption(option: MnMultiSelectOption, event: Event): void;
2675
2704
  isSelected(option: MnMultiSelectOption): boolean;
@@ -5306,6 +5335,13 @@ declare class MnWizardBodyComponent implements OnInit, AfterViewInit, OnDestroy
5306
5335
  modalRef: MnModalRef<WizardResult>;
5307
5336
  formBodies: QueryList<MnFormBodyComponent>;
5308
5337
  stepWrappers: QueryList<ElementRef<HTMLElement>>;
5338
+ /**
5339
+ * The step body's scroll container. Every step renders into this one element
5340
+ * (inactive steps are hidden, not destroyed), so its scroll offset is shared —
5341
+ * without an explicit reset, arriving on a new step lands you wherever the
5342
+ * previous step was scrolled to. See {@link setCurrentStep}.
5343
+ */
5344
+ stepScroller?: ElementRef<HTMLElement>;
5309
5345
  currentStepId: ModalStepId;
5310
5346
  /**
5311
5347
  * Title of the currently active step, mirrored into a signal so the modal