@shival99/z-ui 2.0.51 → 2.0.52

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.
Files changed (38) hide show
  1. package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs +1 -1
  2. package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs.map +1 -1
  3. package/fesm2022/shival99-z-ui-components-z-calendar.mjs +1 -1
  4. package/fesm2022/shival99-z-ui-components-z-calendar.mjs.map +1 -1
  5. package/fesm2022/shival99-z-ui-components-z-dropdown-menu.mjs +1 -1
  6. package/fesm2022/shival99-z-ui-components-z-dropdown-menu.mjs.map +1 -1
  7. package/fesm2022/shival99-z-ui-components-z-editor.mjs +1 -1
  8. package/fesm2022/shival99-z-ui-components-z-editor.mjs.map +1 -1
  9. package/fesm2022/shival99-z-ui-components-z-filter.mjs +1 -1
  10. package/fesm2022/shival99-z-ui-components-z-filter.mjs.map +1 -1
  11. package/fesm2022/shival99-z-ui-components-z-input.mjs +1 -1
  12. package/fesm2022/shival99-z-ui-components-z-input.mjs.map +1 -1
  13. package/fesm2022/shival99-z-ui-components-z-kanban.mjs +1 -1
  14. package/fesm2022/shival99-z-ui-components-z-kanban.mjs.map +1 -1
  15. package/fesm2022/shival99-z-ui-components-z-media-player.mjs +1 -1
  16. package/fesm2022/shival99-z-ui-components-z-media-player.mjs.map +1 -1
  17. package/fesm2022/shival99-z-ui-components-z-menu.mjs +2 -2
  18. package/fesm2022/shival99-z-ui-components-z-menu.mjs.map +1 -1
  19. package/fesm2022/shival99-z-ui-components-z-pagination.mjs +1 -1
  20. package/fesm2022/shival99-z-ui-components-z-pagination.mjs.map +1 -1
  21. package/fesm2022/shival99-z-ui-components-z-popover.mjs +320 -34
  22. package/fesm2022/shival99-z-ui-components-z-popover.mjs.map +1 -1
  23. package/fesm2022/shival99-z-ui-components-z-select.mjs +27 -12
  24. package/fesm2022/shival99-z-ui-components-z-select.mjs.map +1 -1
  25. package/fesm2022/shival99-z-ui-components-z-table.mjs +4 -4
  26. package/fesm2022/shival99-z-ui-components-z-table.mjs.map +1 -1
  27. package/fesm2022/shival99-z-ui-components-z-tabs.mjs +1 -1
  28. package/fesm2022/shival99-z-ui-components-z-tabs.mjs.map +1 -1
  29. package/fesm2022/shival99-z-ui-utils.mjs +15 -1
  30. package/fesm2022/shival99-z-ui-utils.mjs.map +1 -1
  31. package/package.json +1 -1
  32. package/types/shival99-z-ui-components-z-autocomplete.d.ts +1 -1
  33. package/types/shival99-z-ui-components-z-calendar.d.ts +4 -4
  34. package/types/shival99-z-ui-components-z-editor.d.ts +1 -1
  35. package/types/shival99-z-ui-components-z-popover.d.ts +33 -3
  36. package/types/shival99-z-ui-components-z-select.d.ts +4 -5
  37. package/types/shival99-z-ui-components-z-table.d.ts +3 -3
  38. package/types/shival99-z-ui-utils.d.ts +2 -1
@@ -5,8 +5,8 @@ import * as i0 from '@angular/core';
5
5
  import { signal, computed, ChangeDetectionStrategy, Component, inject, Renderer2, DestroyRef, PLATFORM_ID, viewChild, output, input, ElementRef, Directive } from '@angular/core';
6
6
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
7
7
  import { ZOverlayContainerService } from '@shival99/z-ui/services';
8
- import { zMergeClasses, zTransform } from '@shival99/z-ui/utils';
9
- import { Subject, switchMap, of, timer, map, filter } from 'rxjs';
8
+ import { zMergeClasses, zIsMobileViewport, zTransform } from '@shival99/z-ui/utils';
9
+ import { Subject, switchMap, of, timer, map, filter, fromEvent, throttleTime } from 'rxjs';
10
10
  import { cva } from 'class-variance-authority';
11
11
 
12
12
  const zPopoverVariants = cva([
@@ -184,6 +184,96 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImpor
184
184
  }]
185
185
  }] });
186
186
 
187
+ const Z_POPOVER_MOBILE_VIEWPORT_MARGIN = 10;
188
+ function isMobilePopoverViewport() {
189
+ return zIsMobileViewport();
190
+ }
191
+ function getPopoverOverlaySize(widthConfig = {}) {
192
+ return widthConfig;
193
+ }
194
+ function getPopoverRenderPosition(position, _mobile = isMobilePopoverViewport()) {
195
+ return position;
196
+ }
197
+ function getMobilePopoverFallbackPositions(position) {
198
+ return getPopoverFallbackPositions(position, 0).map(pos => ({
199
+ ...pos,
200
+ offsetX: 0,
201
+ offsetY: 0,
202
+ }));
203
+ }
204
+ function clampPopoverPosition(value, min, max) {
205
+ return Math.min(Math.max(value, min), max);
206
+ }
207
+ function getAlignedX(position, triggerRect, overlayRect) {
208
+ if (position === 'left' || position.startsWith('left-')) {
209
+ return triggerRect.left - overlayRect.width;
210
+ }
211
+ if (position === 'right' || position.startsWith('right-')) {
212
+ return triggerRect.right;
213
+ }
214
+ if (position.endsWith('-right')) {
215
+ return triggerRect.right - overlayRect.width;
216
+ }
217
+ if (position === 'top' || position === 'bottom') {
218
+ return triggerRect.left + triggerRect.width / 2 - overlayRect.width / 2;
219
+ }
220
+ return triggerRect.left;
221
+ }
222
+ function getAlignedY(position, triggerRect, overlayRect) {
223
+ if (position === 'top' || position.startsWith('top-')) {
224
+ return triggerRect.top - overlayRect.height;
225
+ }
226
+ if (position === 'bottom' || position.startsWith('bottom-')) {
227
+ return triggerRect.bottom;
228
+ }
229
+ if (position.endsWith('-bottom')) {
230
+ return triggerRect.bottom - overlayRect.height;
231
+ }
232
+ if (position === 'left' || position === 'right') {
233
+ return triggerRect.top + triggerRect.height / 2 - overlayRect.height / 2;
234
+ }
235
+ return triggerRect.top;
236
+ }
237
+ function getMobilePopoverPaneStyles(config) {
238
+ const { position, triggerRect, overlayRect, offset, viewportWidth } = config;
239
+ const viewportMargin = config.viewportMargin ?? Z_POPOVER_MOBILE_VIEWPORT_MARGIN;
240
+ const maxLeft = Math.max(viewportMargin, viewportWidth - overlayRect.width - viewportMargin);
241
+ let left = getAlignedX(position, triggerRect, overlayRect);
242
+ let top = getAlignedY(position, triggerRect, overlayRect);
243
+ if (position === 'top' || position.startsWith('top-')) {
244
+ top -= offset;
245
+ }
246
+ if (position === 'bottom' || position.startsWith('bottom-')) {
247
+ top += offset;
248
+ }
249
+ if (position === 'left' || position.startsWith('left-')) {
250
+ left -= offset;
251
+ }
252
+ if (position === 'right' || position.startsWith('right-')) {
253
+ left += offset;
254
+ }
255
+ left = clampPopoverPosition(left, viewportMargin, maxLeft);
256
+ return {
257
+ top: `${top}px`,
258
+ left: `${left}px`,
259
+ right: '',
260
+ bottom: '',
261
+ transform: 'none',
262
+ };
263
+ }
264
+ function getPopoverPushEnabled(_mobile = isMobilePopoverViewport()) {
265
+ return false;
266
+ }
267
+ function isPopoverTriggerVisibleInViewport(config) {
268
+ const { triggerRect, viewportWidth, viewportHeight } = config;
269
+ if (triggerRect.width <= 0 || triggerRect.height <= 0) {
270
+ return false;
271
+ }
272
+ return (triggerRect.bottom > 0 &&
273
+ triggerRect.top < viewportHeight &&
274
+ triggerRect.right > 0 &&
275
+ triggerRect.left < viewportWidth);
276
+ }
187
277
  function createPopoverPosition(position, offset) {
188
278
  const positions = {
189
279
  top: {
@@ -292,12 +382,16 @@ function getPopoverFallbackPositions(position, offset) {
292
382
  return orderedPositions.map(pos => createPopoverPosition(pos, offset));
293
383
  }
294
384
  function createPopoverPositionStrategy(overlayPositionBuilder, origin, position, offset) {
385
+ const mobile = isMobilePopoverViewport();
386
+ const positions = mobile
387
+ ? getMobilePopoverFallbackPositions(position)
388
+ : getPopoverFallbackPositions(position, offset);
295
389
  return overlayPositionBuilder
296
390
  .flexibleConnectedTo(origin)
297
- .withPositions(getPopoverFallbackPositions(position, offset))
391
+ .withPositions(positions)
298
392
  .withFlexibleDimensions(false)
299
- .withPush(true)
300
- .withViewportMargin(8);
393
+ .withPush(getPopoverPushEnabled(mobile))
394
+ .withViewportMargin(10);
301
395
  }
302
396
  function getActualPopoverPosition(change) {
303
397
  const { originX, originY, overlayX, overlayY } = change.connectionPair;
@@ -367,6 +461,7 @@ class ZPopoverComponent {
367
461
  zManualClose = input(false, { ...(ngDevMode ? { debugName: "zManualClose" } : {}), transform: zTransform });
368
462
  zOutsideClickClose = input(false, { ...(ngDevMode ? { debugName: "zOutsideClickClose" } : {}), transform: zTransform });
369
463
  zScrollClose = input(false, { ...(ngDevMode ? { debugName: "zScrollClose" } : {}), transform: zTransform });
464
+ zSticky = input(false, { ...(ngDevMode ? { debugName: "zSticky" } : {}), transform: zTransform });
370
465
  zShowArrow = input(false, { ...(ngDevMode ? { debugName: "zShowArrow" } : {}), transform: zTransform });
371
466
  _overlayRef = null;
372
467
  _componentRef = null;
@@ -374,8 +469,10 @@ class ZPopoverComponent {
374
469
  _listenerCleanups = [];
375
470
  _positionSubscription = null;
376
471
  _scrollSubscription = null;
472
+ _viewportResizeSubscription = null;
377
473
  _resizeObserver = null;
378
474
  _hideTimeout = null;
475
+ _positionFrame = null;
379
476
  _isVisible = signal(false, ...(ngDevMode ? [{ debugName: "_isVisible" }] : []));
380
477
  ngOnInit() {
381
478
  if (!isPlatformBrowser(this._platformId)) {
@@ -445,26 +542,36 @@ class ZPopoverComponent {
445
542
  if (!this._isVisible()) {
446
543
  return;
447
544
  }
448
- this._overlayRef?.updatePosition();
545
+ this._updatePositionNow();
449
546
  }
450
547
  _createOverlay() {
451
548
  const positionStrategy = createPopoverPositionStrategy(this._overlayPositionBuilder, this._trigger(), this.zPosition(), this.zOffset());
452
- const scrollStrategy = this.zScrollClose()
453
- ? this._overlay.scrollStrategies.close()
454
- : this._overlay.scrollStrategies.reposition({ scrollThrottle: 10, autoClose: false });
455
549
  return this._overlay.create({
456
550
  positionStrategy,
457
- scrollStrategy,
551
+ scrollStrategy: this._createScrollStrategy(),
458
552
  hasBackdrop: false,
553
+ ...getPopoverOverlaySize(),
459
554
  });
460
555
  }
556
+ _createScrollStrategy() {
557
+ if (this.zScrollClose()) {
558
+ return this._overlay.scrollStrategies.close();
559
+ }
560
+ if (isMobilePopoverViewport() && this.zSticky()) {
561
+ return this._overlay.scrollStrategies.noop();
562
+ }
563
+ return this._overlay.scrollStrategies.reposition({ scrollThrottle: 10, autoClose: false });
564
+ }
461
565
  _disposeOverlay() {
462
566
  this._positionSubscription?.unsubscribe();
463
567
  this._positionSubscription = null;
464
568
  this._scrollSubscription?.unsubscribe();
465
569
  this._scrollSubscription = null;
570
+ this._viewportResizeSubscription?.unsubscribe();
571
+ this._viewportResizeSubscription = null;
466
572
  this._resizeObserver?.disconnect();
467
573
  this._resizeObserver = null;
574
+ this._cancelScheduledPositionUpdate();
468
575
  this._overlayRef?.dispose();
469
576
  this._overlayRef = null;
470
577
  this._componentRef = null;
@@ -542,7 +649,11 @@ class ZPopoverComponent {
542
649
  }
543
650
  ticking = true;
544
651
  requestAnimationFrame(() => {
545
- this._overlayRef?.updatePosition();
652
+ if (this.zSticky() && !this._isTriggerVisibleInViewport()) {
653
+ ticking = false;
654
+ return;
655
+ }
656
+ this._updatePositionNow();
546
657
  ticking = false;
547
658
  });
548
659
  };
@@ -553,6 +664,17 @@ class ZPopoverComponent {
553
664
  },
554
665
  };
555
666
  }
667
+ _setupViewportResizeReposition() {
668
+ this._viewportResizeSubscription?.unsubscribe();
669
+ this._viewportResizeSubscription = fromEvent(window, 'resize')
670
+ .pipe(throttleTime(60), takeUntilDestroyed(this._destroyRef))
671
+ .subscribe(() => {
672
+ if (!this._overlayRef?.hasAttached()) {
673
+ return;
674
+ }
675
+ this._updatePositionNow();
676
+ });
677
+ }
556
678
  _showPopover() {
557
679
  const content = this.zContent();
558
680
  if (!content || this._componentRef) {
@@ -565,11 +687,13 @@ class ZPopoverComponent {
565
687
  this._setupScrollClose();
566
688
  const positionStrategy = createPopoverPositionStrategy(this._overlayPositionBuilder, this._trigger(), this.zPosition(), this.zOffset());
567
689
  this._overlayRef.updatePositionStrategy(positionStrategy);
690
+ this._overlayRef.updateSize(getPopoverOverlaySize());
568
691
  const portal = new ComponentPortal(ZPopoverContentComponent);
569
692
  this._componentRef = this._overlayRef.attach(portal);
693
+ const renderPosition = getPopoverRenderPosition(this.zPosition());
570
694
  this._componentRef.instance.setProps({
571
695
  content,
572
- position: this.zPosition(),
696
+ position: renderPosition,
573
697
  customClass: this.zClass(),
574
698
  onClose: () => this.hide(),
575
699
  showArrow: this.zShowArrow(),
@@ -577,11 +701,14 @@ class ZPopoverComponent {
577
701
  this._positionSubscription = positionStrategy.positionChanges.subscribe(change => {
578
702
  const actualPosition = getActualPopoverPosition(change);
579
703
  this._componentRef?.instance.position.set(actualPosition);
704
+ this._applyMobilePopoverPosition(actualPosition);
580
705
  });
581
706
  if (this.zTrigger() === 'hover') {
582
707
  this._setupPopoverHover();
583
708
  }
584
709
  this._setupResizeObserver();
710
+ this._setupViewportResizeReposition();
711
+ this._updatePositionAfterContentSettles();
585
712
  this._isVisible.set(true);
586
713
  ZPopoverComponent._openPopovers.add(this);
587
714
  this.zShow.emit();
@@ -609,15 +736,77 @@ class ZPopoverComponent {
609
736
  this._resizeObserver?.disconnect();
610
737
  this._resizeObserver = new ResizeObserver(() => {
611
738
  if (this._overlayRef && this._isVisible()) {
612
- this._overlayRef.updatePosition();
739
+ this._schedulePositionUpdate();
613
740
  }
614
741
  });
615
742
  this._resizeObserver.observe(this._trigger().nativeElement);
743
+ const overlayElement = this._overlayRef?.overlayElement;
744
+ if (overlayElement) {
745
+ this._resizeObserver.observe(overlayElement);
746
+ }
616
747
  const wrapper = this._trigger().nativeElement.parentElement?.parentElement;
617
748
  if (wrapper && wrapper !== document.body) {
618
749
  this._resizeObserver.observe(wrapper);
619
750
  }
620
751
  }
752
+ _updatePositionAfterContentSettles() {
753
+ this._schedulePositionUpdate();
754
+ }
755
+ _schedulePositionUpdate() {
756
+ if (this._positionFrame !== null) {
757
+ return;
758
+ }
759
+ this._positionFrame = requestAnimationFrame(() => {
760
+ this._positionFrame = null;
761
+ this._updatePositionNow();
762
+ });
763
+ }
764
+ _cancelScheduledPositionUpdate() {
765
+ if (this._positionFrame === null) {
766
+ return;
767
+ }
768
+ cancelAnimationFrame(this._positionFrame);
769
+ this._positionFrame = null;
770
+ }
771
+ _updatePositionNow() {
772
+ if (!this._overlayRef?.hasAttached()) {
773
+ return;
774
+ }
775
+ if (isMobilePopoverViewport() && this.zSticky() && !this._isTriggerVisibleInViewport()) {
776
+ return;
777
+ }
778
+ this._overlayRef.updatePosition();
779
+ this._applyMobilePopoverPosition(this._componentRef?.instance.position() ?? this.zPosition());
780
+ }
781
+ _applyMobilePopoverPosition(position) {
782
+ if (!isMobilePopoverViewport() || !this._overlayRef?.hasAttached()) {
783
+ return;
784
+ }
785
+ const { overlayElement } = this._overlayRef;
786
+ const { visualViewport } = window;
787
+ const styles = getMobilePopoverPaneStyles({
788
+ position,
789
+ triggerRect: this._trigger().nativeElement.getBoundingClientRect(),
790
+ overlayRect: overlayElement.getBoundingClientRect(),
791
+ offset: this.zOffset(),
792
+ viewportWidth: visualViewport?.width ?? window.innerWidth,
793
+ viewportHeight: visualViewport?.height ?? window.innerHeight,
794
+ });
795
+ this._setOverlayPaneStyles(styles);
796
+ }
797
+ _isTriggerVisibleInViewport() {
798
+ const { visualViewport } = window;
799
+ return isPopoverTriggerVisibleInViewport({
800
+ triggerRect: this._trigger().nativeElement.getBoundingClientRect(),
801
+ viewportWidth: visualViewport?.width ?? window.innerWidth,
802
+ viewportHeight: visualViewport?.height ?? window.innerHeight,
803
+ });
804
+ }
805
+ _setOverlayPaneStyles(styles) {
806
+ for (const key of ['top', 'left', 'right', 'bottom', 'transform']) {
807
+ this._renderer.setStyle(this._overlayRef?.overlayElement, key, styles[key]);
808
+ }
809
+ }
621
810
  _setupPopoverHover() {
622
811
  const overlayElement = this._overlayRef?.overlayElement;
623
812
  if (!overlayElement) {
@@ -662,7 +851,7 @@ class ZPopoverComponent {
662
851
  this._listenerCleanups = [];
663
852
  }
664
853
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: ZPopoverComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
665
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.0.9", type: ZPopoverComponent, isStandalone: true, selector: "z-popover", inputs: { zContent: { classPropertyName: "zContent", publicName: "zContent", isSignal: true, isRequired: false, transformFunction: null }, zPosition: { classPropertyName: "zPosition", publicName: "zPosition", isSignal: true, isRequired: false, transformFunction: null }, zTrigger: { classPropertyName: "zTrigger", publicName: "zTrigger", isSignal: true, isRequired: false, transformFunction: null }, zClass: { classPropertyName: "zClass", publicName: "zClass", isSignal: true, isRequired: false, transformFunction: null }, zShowDelay: { classPropertyName: "zShowDelay", publicName: "zShowDelay", isSignal: true, isRequired: false, transformFunction: null }, zHideDelay: { classPropertyName: "zHideDelay", publicName: "zHideDelay", isSignal: true, isRequired: false, transformFunction: null }, zDisabled: { classPropertyName: "zDisabled", publicName: "zDisabled", isSignal: true, isRequired: false, transformFunction: null }, zOffset: { classPropertyName: "zOffset", publicName: "zOffset", isSignal: true, isRequired: false, transformFunction: null }, zManualClose: { classPropertyName: "zManualClose", publicName: "zManualClose", isSignal: true, isRequired: false, transformFunction: null }, zOutsideClickClose: { classPropertyName: "zOutsideClickClose", publicName: "zOutsideClickClose", isSignal: true, isRequired: false, transformFunction: null }, zScrollClose: { classPropertyName: "zScrollClose", publicName: "zScrollClose", isSignal: true, isRequired: false, transformFunction: null }, zShowArrow: { classPropertyName: "zShowArrow", publicName: "zShowArrow", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { zShow: "zShow", zHide: "zHide", zControl: "zControl", zOutsideClick: "zOutsideClick" }, host: { classAttribute: "inline-block" }, viewQueries: [{ propertyName: "_trigger", first: true, predicate: ["trigger"], descendants: true, isSignal: true }], ngImport: i0, template: `
854
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.0.9", type: ZPopoverComponent, isStandalone: true, selector: "z-popover", inputs: { zContent: { classPropertyName: "zContent", publicName: "zContent", isSignal: true, isRequired: false, transformFunction: null }, zPosition: { classPropertyName: "zPosition", publicName: "zPosition", isSignal: true, isRequired: false, transformFunction: null }, zTrigger: { classPropertyName: "zTrigger", publicName: "zTrigger", isSignal: true, isRequired: false, transformFunction: null }, zClass: { classPropertyName: "zClass", publicName: "zClass", isSignal: true, isRequired: false, transformFunction: null }, zShowDelay: { classPropertyName: "zShowDelay", publicName: "zShowDelay", isSignal: true, isRequired: false, transformFunction: null }, zHideDelay: { classPropertyName: "zHideDelay", publicName: "zHideDelay", isSignal: true, isRequired: false, transformFunction: null }, zDisabled: { classPropertyName: "zDisabled", publicName: "zDisabled", isSignal: true, isRequired: false, transformFunction: null }, zOffset: { classPropertyName: "zOffset", publicName: "zOffset", isSignal: true, isRequired: false, transformFunction: null }, zManualClose: { classPropertyName: "zManualClose", publicName: "zManualClose", isSignal: true, isRequired: false, transformFunction: null }, zOutsideClickClose: { classPropertyName: "zOutsideClickClose", publicName: "zOutsideClickClose", isSignal: true, isRequired: false, transformFunction: null }, zScrollClose: { classPropertyName: "zScrollClose", publicName: "zScrollClose", isSignal: true, isRequired: false, transformFunction: null }, zSticky: { classPropertyName: "zSticky", publicName: "zSticky", isSignal: true, isRequired: false, transformFunction: null }, zShowArrow: { classPropertyName: "zShowArrow", publicName: "zShowArrow", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { zShow: "zShow", zHide: "zHide", zControl: "zControl", zOutsideClick: "zOutsideClick" }, host: { classAttribute: "inline-block" }, viewQueries: [{ propertyName: "_trigger", first: true, predicate: ["trigger"], descendants: true, isSignal: true }], ngImport: i0, template: `
666
855
  <span #trigger class="z-popover-trigger inline-block">
667
856
  <ng-content />
668
857
  </span>
@@ -683,7 +872,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImpor
683
872
  class: 'inline-block',
684
873
  },
685
874
  }]
686
- }], propDecorators: { _trigger: [{ type: i0.ViewChild, args: ['trigger', { isSignal: true }] }], zShow: [{ type: i0.Output, args: ["zShow"] }], zHide: [{ type: i0.Output, args: ["zHide"] }], zControl: [{ type: i0.Output, args: ["zControl"] }], zOutsideClick: [{ type: i0.Output, args: ["zOutsideClick"] }], zContent: [{ type: i0.Input, args: [{ isSignal: true, alias: "zContent", required: false }] }], zPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "zPosition", required: false }] }], zTrigger: [{ type: i0.Input, args: [{ isSignal: true, alias: "zTrigger", required: false }] }], zClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "zClass", required: false }] }], zShowDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "zShowDelay", required: false }] }], zHideDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "zHideDelay", required: false }] }], zDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "zDisabled", required: false }] }], zOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "zOffset", required: false }] }], zManualClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "zManualClose", required: false }] }], zOutsideClickClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "zOutsideClickClose", required: false }] }], zScrollClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "zScrollClose", required: false }] }], zShowArrow: [{ type: i0.Input, args: [{ isSignal: true, alias: "zShowArrow", required: false }] }] } });
875
+ }], propDecorators: { _trigger: [{ type: i0.ViewChild, args: ['trigger', { isSignal: true }] }], zShow: [{ type: i0.Output, args: ["zShow"] }], zHide: [{ type: i0.Output, args: ["zHide"] }], zControl: [{ type: i0.Output, args: ["zControl"] }], zOutsideClick: [{ type: i0.Output, args: ["zOutsideClick"] }], zContent: [{ type: i0.Input, args: [{ isSignal: true, alias: "zContent", required: false }] }], zPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "zPosition", required: false }] }], zTrigger: [{ type: i0.Input, args: [{ isSignal: true, alias: "zTrigger", required: false }] }], zClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "zClass", required: false }] }], zShowDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "zShowDelay", required: false }] }], zHideDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "zHideDelay", required: false }] }], zDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "zDisabled", required: false }] }], zOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "zOffset", required: false }] }], zManualClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "zManualClose", required: false }] }], zOutsideClickClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "zOutsideClickClose", required: false }] }], zScrollClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "zScrollClose", required: false }] }], zSticky: [{ type: i0.Input, args: [{ isSignal: true, alias: "zSticky", required: false }] }], zShowArrow: [{ type: i0.Input, args: [{ isSignal: true, alias: "zShowArrow", required: false }] }] } });
687
876
 
688
877
  class ZPopoverDirective {
689
878
  static _openPopovers = new Set();
@@ -701,6 +890,7 @@ class ZPopoverDirective {
701
890
  zManualClose = input(false, { ...(ngDevMode ? { debugName: "zManualClose" } : {}), transform: zTransform });
702
891
  zOutsideClickClose = input(false, { ...(ngDevMode ? { debugName: "zOutsideClickClose" } : {}), transform: zTransform });
703
892
  zScrollClose = input(false, { ...(ngDevMode ? { debugName: "zScrollClose" } : {}), transform: zTransform });
893
+ zSticky = input(false, { ...(ngDevMode ? { debugName: "zSticky" } : {}), transform: zTransform });
704
894
  zShowArrow = input(false, { ...(ngDevMode ? { debugName: "zShowArrow" } : {}), transform: zTransform });
705
895
  zShow = output();
706
896
  zHide = output();
@@ -723,8 +913,10 @@ class ZPopoverDirective {
723
913
  _listenerCleanups = [];
724
914
  _positionSubscription = null;
725
915
  _scrollSubscription = null;
916
+ _viewportResizeSubscription = null;
726
917
  _resizeObserver = null;
727
918
  _hideTimeout = null;
919
+ _positionFrame = null;
728
920
  _isDestroyed = signal(false, ...(ngDevMode ? [{ debugName: "_isDestroyed" }] : []));
729
921
  _isVisible = signal(false, ...(ngDevMode ? [{ debugName: "_isVisible" }] : []));
730
922
  ngOnInit() {
@@ -803,35 +995,37 @@ class ZPopoverDirective {
803
995
  if (!this._isVisible()) {
804
996
  return;
805
997
  }
806
- this._overlayRef?.updatePosition();
807
- const widthConfig = this._getWidthConfig();
808
- if (widthConfig.width) {
809
- this._overlayRef?.updateSize({ width: widthConfig.width, minWidth: widthConfig.minWidth });
810
- }
998
+ this._updatePositionNow();
811
999
  }
812
1000
  _createOverlay() {
813
1001
  const positionStrategy = createPopoverPositionStrategy(this._overlayPositionBuilder, this._getTriggerElement(), this.zPosition(), this.zOffset());
814
1002
  const widthConfig = this._getWidthConfig();
815
- const scrollStrategy = this.zScrollClose()
816
- ? this._overlay.scrollStrategies.close()
817
- : this._overlay.scrollStrategies.reposition();
818
1003
  return this._overlay.create({
819
1004
  positionStrategy,
820
- scrollStrategy,
1005
+ scrollStrategy: this._createScrollStrategy(),
821
1006
  hasBackdrop: false,
822
1007
  ...widthConfig,
823
1008
  });
824
1009
  }
1010
+ _createScrollStrategy() {
1011
+ if (this.zScrollClose()) {
1012
+ return this._overlay.scrollStrategies.close();
1013
+ }
1014
+ if (isMobilePopoverViewport() && this.zSticky()) {
1015
+ return this._overlay.scrollStrategies.noop();
1016
+ }
1017
+ return this._overlay.scrollStrategies.reposition();
1018
+ }
825
1019
  _getWidthConfig() {
826
1020
  const width = this.zPopoverWidth();
827
1021
  if (width === 'auto') {
828
- return {};
1022
+ return getPopoverOverlaySize();
829
1023
  }
830
1024
  if (width === 'trigger') {
831
1025
  const triggerWidth = this._getTriggerElement().getBoundingClientRect().width;
832
- return { width: `${triggerWidth}px`, minWidth: `${triggerWidth}px` };
1026
+ return getPopoverOverlaySize({ width: `${triggerWidth}px`, minWidth: `${triggerWidth}px` });
833
1027
  }
834
- return { width, minWidth: width };
1028
+ return getPopoverOverlaySize({ width, minWidth: width });
835
1029
  }
836
1030
  _getTriggerElement() {
837
1031
  const triggerRef = this.zTriggerRef();
@@ -845,8 +1039,11 @@ class ZPopoverDirective {
845
1039
  this._positionSubscription = null;
846
1040
  this._scrollSubscription?.unsubscribe();
847
1041
  this._scrollSubscription = null;
1042
+ this._viewportResizeSubscription?.unsubscribe();
1043
+ this._viewportResizeSubscription = null;
848
1044
  this._resizeObserver?.disconnect();
849
1045
  this._resizeObserver = null;
1046
+ this._cancelScheduledPositionUpdate();
850
1047
  this._overlayRef?.dispose();
851
1048
  this._overlayRef = null;
852
1049
  this._componentRef = null;
@@ -936,7 +1133,11 @@ class ZPopoverDirective {
936
1133
  }
937
1134
  ticking = true;
938
1135
  requestAnimationFrame(() => {
939
- this._overlayRef?.updatePosition();
1136
+ if (this.zSticky() && !this._isTriggerVisibleInViewport()) {
1137
+ ticking = false;
1138
+ return;
1139
+ }
1140
+ this._updatePositionNow();
940
1141
  ticking = false;
941
1142
  });
942
1143
  };
@@ -947,6 +1148,21 @@ class ZPopoverDirective {
947
1148
  },
948
1149
  };
949
1150
  }
1151
+ _setupViewportResizeReposition() {
1152
+ this._viewportResizeSubscription?.unsubscribe();
1153
+ this._viewportResizeSubscription = fromEvent(window, 'resize')
1154
+ .pipe(throttleTime(60), takeUntilDestroyed(this._destroyRef))
1155
+ .subscribe(() => {
1156
+ if (!this._overlayRef?.hasAttached()) {
1157
+ return;
1158
+ }
1159
+ const widthConfig = this._getWidthConfig();
1160
+ if (widthConfig.width) {
1161
+ this._overlayRef.updateSize(widthConfig);
1162
+ }
1163
+ this._updatePositionNow();
1164
+ });
1165
+ }
950
1166
  _delay(show, delay) {
951
1167
  this._delaySubject.next({ show, delay });
952
1168
  }
@@ -976,13 +1192,14 @@ class ZPopoverDirective {
976
1192
  this._overlayRef.updatePositionStrategy(positionStrategy);
977
1193
  const widthConfig = this._getWidthConfig();
978
1194
  if (widthConfig.width) {
979
- this._overlayRef.updateSize({ width: widthConfig.width, minWidth: widthConfig.minWidth });
1195
+ this._overlayRef.updateSize(widthConfig);
980
1196
  }
981
1197
  const portal = new ComponentPortal(ZPopoverContentComponent);
982
1198
  this._componentRef = this._overlayRef.attach(portal);
1199
+ const renderPosition = getPopoverRenderPosition(this.zPosition());
983
1200
  this._componentRef.instance.setProps({
984
1201
  content,
985
- position: this.zPosition(),
1202
+ position: renderPosition,
986
1203
  customClass: this.zClass(),
987
1204
  onClose: () => this.hide(),
988
1205
  showArrow: this.zShowArrow(),
@@ -991,11 +1208,14 @@ class ZPopoverDirective {
991
1208
  const actualPosition = getActualPopoverPosition(change);
992
1209
  this._componentRef?.instance.position.set(actualPosition);
993
1210
  this.zPositionChange.emit(actualPosition);
1211
+ this._applyMobilePopoverPosition(actualPosition);
994
1212
  });
995
1213
  if (this._trigger() === 'hover') {
996
1214
  this._setupPopoverHover();
997
1215
  }
998
1216
  this._setupResizeObserver();
1217
+ this._setupViewportResizeReposition();
1218
+ this._updatePositionAfterContentSettles();
999
1219
  this._isVisible.set(true);
1000
1220
  ZPopoverDirective._openPopovers.add(this);
1001
1221
  this._renderer.addClass(this._elementRef.nativeElement, 'z-popover-open');
@@ -1025,15 +1245,19 @@ class ZPopoverDirective {
1025
1245
  this._resizeObserver?.disconnect();
1026
1246
  this._resizeObserver = new ResizeObserver(() => {
1027
1247
  if (this._overlayRef && this._isVisible()) {
1028
- this._overlayRef.updatePosition();
1029
1248
  const widthConfig = this._getWidthConfig();
1030
1249
  if (widthConfig.width) {
1031
- this._overlayRef.updateSize({ width: widthConfig.width, minWidth: widthConfig.minWidth });
1250
+ this._overlayRef.updateSize(widthConfig);
1032
1251
  }
1252
+ this._schedulePositionUpdate();
1033
1253
  }
1034
1254
  });
1035
1255
  const originElement = this._getTriggerElement();
1036
1256
  this._resizeObserver.observe(originElement);
1257
+ const overlayElement = this._overlayRef?.overlayElement;
1258
+ if (overlayElement) {
1259
+ this._resizeObserver.observe(overlayElement);
1260
+ }
1037
1261
  if (originElement !== this._elementRef.nativeElement) {
1038
1262
  this._resizeObserver.observe(this._elementRef.nativeElement);
1039
1263
  }
@@ -1042,6 +1266,68 @@ class ZPopoverDirective {
1042
1266
  this._resizeObserver.observe(wrapper);
1043
1267
  }
1044
1268
  }
1269
+ _updatePositionAfterContentSettles() {
1270
+ this._schedulePositionUpdate();
1271
+ }
1272
+ _schedulePositionUpdate() {
1273
+ if (this._positionFrame !== null) {
1274
+ return;
1275
+ }
1276
+ this._positionFrame = requestAnimationFrame(() => {
1277
+ this._positionFrame = null;
1278
+ this._updatePositionNow();
1279
+ });
1280
+ }
1281
+ _cancelScheduledPositionUpdate() {
1282
+ if (this._positionFrame === null) {
1283
+ return;
1284
+ }
1285
+ cancelAnimationFrame(this._positionFrame);
1286
+ this._positionFrame = null;
1287
+ }
1288
+ _updatePositionNow() {
1289
+ if (!this._overlayRef?.hasAttached()) {
1290
+ return;
1291
+ }
1292
+ if (isMobilePopoverViewport() && this.zSticky() && !this._isTriggerVisibleInViewport()) {
1293
+ return;
1294
+ }
1295
+ const widthConfig = this._getWidthConfig();
1296
+ if (widthConfig.width) {
1297
+ this._overlayRef.updateSize(widthConfig);
1298
+ }
1299
+ this._overlayRef.updatePosition();
1300
+ this._applyMobilePopoverPosition(this._componentRef?.instance.position() ?? this.zPosition());
1301
+ }
1302
+ _applyMobilePopoverPosition(position) {
1303
+ if (!isMobilePopoverViewport() || !this._overlayRef?.hasAttached()) {
1304
+ return;
1305
+ }
1306
+ const { overlayElement } = this._overlayRef;
1307
+ const { visualViewport } = window;
1308
+ const styles = getMobilePopoverPaneStyles({
1309
+ position,
1310
+ triggerRect: this._getTriggerElement().getBoundingClientRect(),
1311
+ overlayRect: overlayElement.getBoundingClientRect(),
1312
+ offset: this.zOffset(),
1313
+ viewportWidth: visualViewport?.width ?? window.innerWidth,
1314
+ viewportHeight: visualViewport?.height ?? window.innerHeight,
1315
+ });
1316
+ this._setOverlayPaneStyles(styles);
1317
+ }
1318
+ _isTriggerVisibleInViewport() {
1319
+ const { visualViewport } = window;
1320
+ return isPopoverTriggerVisibleInViewport({
1321
+ triggerRect: this._getTriggerElement().getBoundingClientRect(),
1322
+ viewportWidth: visualViewport?.width ?? window.innerWidth,
1323
+ viewportHeight: visualViewport?.height ?? window.innerHeight,
1324
+ });
1325
+ }
1326
+ _setOverlayPaneStyles(styles) {
1327
+ for (const key of ['top', 'left', 'right', 'bottom', 'transform']) {
1328
+ this._renderer.setStyle(this._overlayRef?.overlayElement, key, styles[key]);
1329
+ }
1330
+ }
1045
1331
  _setupPopoverHover() {
1046
1332
  const overlayElement = this._overlayRef?.overlayElement;
1047
1333
  if (!overlayElement) {
@@ -1088,7 +1374,7 @@ class ZPopoverDirective {
1088
1374
  this._listenerCleanups = [];
1089
1375
  }
1090
1376
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: ZPopoverDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1091
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.0.9", type: ZPopoverDirective, isStandalone: true, selector: "[z-popover]", inputs: { zContent: { classPropertyName: "zContent", publicName: "zPopoverContent", isSignal: true, isRequired: false, transformFunction: null }, zPosition: { classPropertyName: "zPosition", publicName: "zPosition", isSignal: true, isRequired: false, transformFunction: null }, zTrigger: { classPropertyName: "zTrigger", publicName: "zTrigger", isSignal: true, isRequired: false, transformFunction: null }, zPopoverTrigger: { classPropertyName: "zPopoverTrigger", publicName: "zPopoverTrigger", isSignal: true, isRequired: false, transformFunction: null }, zClass: { classPropertyName: "zClass", publicName: "zClass", isSignal: true, isRequired: false, transformFunction: null }, zShowDelay: { classPropertyName: "zShowDelay", publicName: "zShowDelay", isSignal: true, isRequired: false, transformFunction: null }, zHideDelay: { classPropertyName: "zHideDelay", publicName: "zHideDelay", isSignal: true, isRequired: false, transformFunction: null }, zDisabled: { classPropertyName: "zDisabled", publicName: "zDisabled", isSignal: true, isRequired: false, transformFunction: null }, zOffset: { classPropertyName: "zOffset", publicName: "zOffset", isSignal: true, isRequired: false, transformFunction: null }, zPopoverWidth: { classPropertyName: "zPopoverWidth", publicName: "zPopoverWidth", isSignal: true, isRequired: false, transformFunction: null }, zTriggerRef: { classPropertyName: "zTriggerRef", publicName: "zTriggerRef", isSignal: true, isRequired: false, transformFunction: null }, zManualClose: { classPropertyName: "zManualClose", publicName: "zManualClose", isSignal: true, isRequired: false, transformFunction: null }, zOutsideClickClose: { classPropertyName: "zOutsideClickClose", publicName: "zOutsideClickClose", isSignal: true, isRequired: false, transformFunction: null }, zScrollClose: { classPropertyName: "zScrollClose", publicName: "zScrollClose", isSignal: true, isRequired: false, transformFunction: null }, zShowArrow: { classPropertyName: "zShowArrow", publicName: "zShowArrow", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { zShow: "zShow", zHide: "zHide", zHideStart: "zHideStart", zControl: "zControl", zPositionChange: "zPositionChange", zOutsideClick: "zOutsideClick" }, exportAs: ["zPopover"], ngImport: i0 });
1377
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.0.9", type: ZPopoverDirective, isStandalone: true, selector: "[z-popover]", inputs: { zContent: { classPropertyName: "zContent", publicName: "zPopoverContent", isSignal: true, isRequired: false, transformFunction: null }, zPosition: { classPropertyName: "zPosition", publicName: "zPosition", isSignal: true, isRequired: false, transformFunction: null }, zTrigger: { classPropertyName: "zTrigger", publicName: "zTrigger", isSignal: true, isRequired: false, transformFunction: null }, zPopoverTrigger: { classPropertyName: "zPopoverTrigger", publicName: "zPopoverTrigger", isSignal: true, isRequired: false, transformFunction: null }, zClass: { classPropertyName: "zClass", publicName: "zClass", isSignal: true, isRequired: false, transformFunction: null }, zShowDelay: { classPropertyName: "zShowDelay", publicName: "zShowDelay", isSignal: true, isRequired: false, transformFunction: null }, zHideDelay: { classPropertyName: "zHideDelay", publicName: "zHideDelay", isSignal: true, isRequired: false, transformFunction: null }, zDisabled: { classPropertyName: "zDisabled", publicName: "zDisabled", isSignal: true, isRequired: false, transformFunction: null }, zOffset: { classPropertyName: "zOffset", publicName: "zOffset", isSignal: true, isRequired: false, transformFunction: null }, zPopoverWidth: { classPropertyName: "zPopoverWidth", publicName: "zPopoverWidth", isSignal: true, isRequired: false, transformFunction: null }, zTriggerRef: { classPropertyName: "zTriggerRef", publicName: "zTriggerRef", isSignal: true, isRequired: false, transformFunction: null }, zManualClose: { classPropertyName: "zManualClose", publicName: "zManualClose", isSignal: true, isRequired: false, transformFunction: null }, zOutsideClickClose: { classPropertyName: "zOutsideClickClose", publicName: "zOutsideClickClose", isSignal: true, isRequired: false, transformFunction: null }, zScrollClose: { classPropertyName: "zScrollClose", publicName: "zScrollClose", isSignal: true, isRequired: false, transformFunction: null }, zSticky: { classPropertyName: "zSticky", publicName: "zSticky", isSignal: true, isRequired: false, transformFunction: null }, zShowArrow: { classPropertyName: "zShowArrow", publicName: "zShowArrow", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { zShow: "zShow", zHide: "zHide", zHideStart: "zHideStart", zControl: "zControl", zPositionChange: "zPositionChange", zOutsideClick: "zOutsideClick" }, exportAs: ["zPopover"], ngImport: i0 });
1092
1378
  }
1093
1379
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: ZPopoverDirective, decorators: [{
1094
1380
  type: Directive,
@@ -1097,7 +1383,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImpor
1097
1383
  standalone: true,
1098
1384
  exportAs: 'zPopover',
1099
1385
  }]
1100
- }], propDecorators: { zContent: [{ type: i0.Input, args: [{ isSignal: true, alias: "zPopoverContent", required: false }] }], zPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "zPosition", required: false }] }], zTrigger: [{ type: i0.Input, args: [{ isSignal: true, alias: "zTrigger", required: false }] }], zPopoverTrigger: [{ type: i0.Input, args: [{ isSignal: true, alias: "zPopoverTrigger", required: false }] }], zClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "zClass", required: false }] }], zShowDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "zShowDelay", required: false }] }], zHideDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "zHideDelay", required: false }] }], zDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "zDisabled", required: false }] }], zOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "zOffset", required: false }] }], zPopoverWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "zPopoverWidth", required: false }] }], zTriggerRef: [{ type: i0.Input, args: [{ isSignal: true, alias: "zTriggerRef", required: false }] }], zManualClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "zManualClose", required: false }] }], zOutsideClickClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "zOutsideClickClose", required: false }] }], zScrollClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "zScrollClose", required: false }] }], zShowArrow: [{ type: i0.Input, args: [{ isSignal: true, alias: "zShowArrow", required: false }] }], zShow: [{ type: i0.Output, args: ["zShow"] }], zHide: [{ type: i0.Output, args: ["zHide"] }], zHideStart: [{ type: i0.Output, args: ["zHideStart"] }], zControl: [{ type: i0.Output, args: ["zControl"] }], zPositionChange: [{ type: i0.Output, args: ["zPositionChange"] }], zOutsideClick: [{ type: i0.Output, args: ["zOutsideClick"] }] } });
1386
+ }], propDecorators: { zContent: [{ type: i0.Input, args: [{ isSignal: true, alias: "zPopoverContent", required: false }] }], zPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "zPosition", required: false }] }], zTrigger: [{ type: i0.Input, args: [{ isSignal: true, alias: "zTrigger", required: false }] }], zPopoverTrigger: [{ type: i0.Input, args: [{ isSignal: true, alias: "zPopoverTrigger", required: false }] }], zClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "zClass", required: false }] }], zShowDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "zShowDelay", required: false }] }], zHideDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "zHideDelay", required: false }] }], zDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "zDisabled", required: false }] }], zOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "zOffset", required: false }] }], zPopoverWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "zPopoverWidth", required: false }] }], zTriggerRef: [{ type: i0.Input, args: [{ isSignal: true, alias: "zTriggerRef", required: false }] }], zManualClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "zManualClose", required: false }] }], zOutsideClickClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "zOutsideClickClose", required: false }] }], zScrollClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "zScrollClose", required: false }] }], zSticky: [{ type: i0.Input, args: [{ isSignal: true, alias: "zSticky", required: false }] }], zShowArrow: [{ type: i0.Input, args: [{ isSignal: true, alias: "zShowArrow", required: false }] }], zShow: [{ type: i0.Output, args: ["zShow"] }], zHide: [{ type: i0.Output, args: ["zHide"] }], zHideStart: [{ type: i0.Output, args: ["zHideStart"] }], zControl: [{ type: i0.Output, args: ["zControl"] }], zPositionChange: [{ type: i0.Output, args: ["zPositionChange"] }], zOutsideClick: [{ type: i0.Output, args: ["zOutsideClick"] }] } });
1101
1387
 
1102
1388
  /**
1103
1389
  * Generated bundle index. Do not edit.