@acorex/cdk 22.1.8 → 22.2.0-next.0

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 (81) hide show
  1. package/auto-follow-scroll/README.md +9 -0
  2. package/fesm2022/acorex-cdk-accordion.mjs +19 -19
  3. package/fesm2022/acorex-cdk-accordion.mjs.map +1 -1
  4. package/fesm2022/acorex-cdk-auto-follow-scroll.mjs +187 -0
  5. package/fesm2022/acorex-cdk-auto-follow-scroll.mjs.map +1 -0
  6. package/fesm2022/acorex-cdk-carousel.mjs +25 -7
  7. package/fesm2022/acorex-cdk-carousel.mjs.map +1 -1
  8. package/fesm2022/acorex-cdk-clipboard.mjs +6 -6
  9. package/fesm2022/acorex-cdk-clipboard.mjs.map +1 -1
  10. package/fesm2022/acorex-cdk-common.mjs +146 -92
  11. package/fesm2022/acorex-cdk-common.mjs.map +1 -1
  12. package/fesm2022/acorex-cdk-dom.mjs +3 -3
  13. package/fesm2022/acorex-cdk-dom.mjs.map +1 -1
  14. package/fesm2022/acorex-cdk-drag-drop.mjs +158 -68
  15. package/fesm2022/acorex-cdk-drag-drop.mjs.map +1 -1
  16. package/fesm2022/acorex-cdk-drawer.mjs +11 -11
  17. package/fesm2022/acorex-cdk-drawer.mjs.map +1 -1
  18. package/fesm2022/acorex-cdk-focus-trap.mjs +3 -3
  19. package/fesm2022/acorex-cdk-focus-trap.mjs.map +1 -1
  20. package/fesm2022/acorex-cdk-full-screen.mjs +26 -147
  21. package/fesm2022/acorex-cdk-full-screen.mjs.map +1 -1
  22. package/fesm2022/acorex-cdk-gesture.mjs +30 -4
  23. package/fesm2022/acorex-cdk-gesture.mjs.map +1 -1
  24. package/fesm2022/acorex-cdk-highlight.mjs +8 -78
  25. package/fesm2022/acorex-cdk-highlight.mjs.map +1 -1
  26. package/fesm2022/acorex-cdk-horizontal-scroll.mjs +27 -10
  27. package/fesm2022/acorex-cdk-horizontal-scroll.mjs.map +1 -1
  28. package/fesm2022/acorex-cdk-input-mask.mjs +3 -3
  29. package/fesm2022/acorex-cdk-input-mask.mjs.map +1 -1
  30. package/fesm2022/acorex-cdk-list-navigation.mjs +10 -10
  31. package/fesm2022/acorex-cdk-list-navigation.mjs.map +1 -1
  32. package/fesm2022/acorex-cdk-outline.mjs +277 -74
  33. package/fesm2022/acorex-cdk-outline.mjs.map +1 -1
  34. package/fesm2022/acorex-cdk-overlay.mjs +224 -21
  35. package/fesm2022/acorex-cdk-overlay.mjs.map +1 -1
  36. package/fesm2022/acorex-cdk-pan-view.mjs +3 -3
  37. package/fesm2022/acorex-cdk-pan-view.mjs.map +1 -1
  38. package/fesm2022/acorex-cdk-qrcode.mjs.map +1 -1
  39. package/fesm2022/acorex-cdk-resizable.mjs +483 -200
  40. package/fesm2022/acorex-cdk-resizable.mjs.map +1 -1
  41. package/fesm2022/acorex-cdk-selection.mjs +10 -10
  42. package/fesm2022/acorex-cdk-selection.mjs.map +1 -1
  43. package/fesm2022/acorex-cdk-shimmer.mjs +220 -0
  44. package/fesm2022/acorex-cdk-shimmer.mjs.map +1 -0
  45. package/fesm2022/acorex-cdk-sliding-item.mjs +3 -3
  46. package/fesm2022/acorex-cdk-sliding-item.mjs.map +1 -1
  47. package/fesm2022/acorex-cdk-sticky.mjs +3 -3
  48. package/fesm2022/acorex-cdk-sticky.mjs.map +1 -1
  49. package/fesm2022/acorex-cdk-uploader.mjs +9 -9
  50. package/fesm2022/acorex-cdk-uploader.mjs.map +1 -1
  51. package/fesm2022/acorex-cdk-viewport-guard.mjs +616 -0
  52. package/fesm2022/acorex-cdk-viewport-guard.mjs.map +1 -0
  53. package/fesm2022/acorex-cdk-virtual-scroll.mjs +10 -10
  54. package/fesm2022/acorex-cdk-virtual-scroll.mjs.map +1 -1
  55. package/fesm2022/acorex-cdk-wysiwyg.mjs +689 -37
  56. package/fesm2022/acorex-cdk-wysiwyg.mjs.map +1 -1
  57. package/fesm2022/acorex-cdk-z-index.mjs +3 -3
  58. package/fesm2022/acorex-cdk-z-index.mjs.map +1 -1
  59. package/fesm2022/acorex-cdk.mjs.map +1 -1
  60. package/package.json +23 -7
  61. package/shimmer/README.md +11 -0
  62. package/types/acorex-cdk-auto-follow-scroll.d.ts +72 -0
  63. package/types/acorex-cdk-carousel.d.ts +2 -0
  64. package/types/acorex-cdk-clipboard.d.ts +1 -1
  65. package/types/acorex-cdk-common.d.ts +36 -19
  66. package/types/acorex-cdk-drag-drop.d.ts +43 -17
  67. package/types/acorex-cdk-full-screen.d.ts +18 -43
  68. package/types/acorex-cdk-gesture.d.ts +11 -1
  69. package/types/acorex-cdk-highlight.d.ts +1 -28
  70. package/types/acorex-cdk-horizontal-scroll.d.ts +3 -0
  71. package/types/acorex-cdk-outline.d.ts +20 -0
  72. package/types/acorex-cdk-overlay.d.ts +60 -4
  73. package/types/acorex-cdk-resizable.d.ts +80 -38
  74. package/types/acorex-cdk-shimmer.d.ts +68 -0
  75. package/types/acorex-cdk-uploader.d.ts +1 -1
  76. package/types/acorex-cdk-viewport-guard.d.ts +99 -0
  77. package/types/acorex-cdk-wysiwyg.d.ts +118 -14
  78. package/wysiwyg/README.md +3 -1
  79. package/fesm2022/acorex-cdk-double-click.mjs +0 -178
  80. package/fesm2022/acorex-cdk-double-click.mjs.map +0 -1
  81. package/types/acorex-cdk-double-click.d.ts +0 -66
@@ -1,12 +1,31 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { OnInit, OnDestroy, TemplateRef, ElementRef, AfterContentInit } from '@angular/core';
2
+ import { InjectionToken, OnInit, OnDestroy, TemplateRef, ElementRef, AfterContentInit } from '@angular/core';
3
3
  import { NXComponent, NXNativeEvent } from '@acorex/cdk/common';
4
4
 
5
+ declare class AXDragHandleDirective {
6
+ private el;
7
+ private parent;
8
+ readonly element: _angular_core.WritableSignal<any>;
9
+ constructor();
10
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXDragHandleDirective, never>;
11
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXDragHandleDirective, "[axDragHandle]", never, {}, {}, never, never, true, never>;
12
+ }
13
+
14
+ /**
15
+ * Parent drag instance that nested `axDragHandle` directives register with.
16
+ * Provided by `AXDragDirective` so handles work inside dynamically created content.
17
+ */
18
+ declare const AX_DRAG_PARENT: InjectionToken<AXDragParent>;
19
+ interface AXDragParent {
20
+ registerHandle(handle: AXDragHandleDirective | HTMLElement): void;
21
+ unregisterHandle(handle: AXDragHandleDirective | HTMLElement): void;
22
+ }
23
+
5
24
  type AXPositionType = {
6
25
  x: number;
7
26
  y: number;
8
27
  };
9
- declare class AXDragDirective implements OnInit, OnDestroy {
28
+ declare class AXDragDirective implements OnInit, OnDestroy, AXDragParent {
10
29
  #private;
11
30
  private zone;
12
31
  private document;
@@ -15,7 +34,7 @@ declare class AXDragDirective implements OnInit, OnDestroy {
15
34
  private platformId;
16
35
  private viewContainerRef;
17
36
  private el;
18
- private handleDirective;
37
+ private registeredHandleElements;
19
38
  axDrag: _angular_core.InputSignalWithTransform<boolean, string | boolean>;
20
39
  dragData: _angular_core.InputSignal<unknown>;
21
40
  dragDisabled: _angular_core.InputSignal<boolean>;
@@ -26,7 +45,7 @@ declare class AXDragDirective implements OnInit, OnDestroy {
26
45
  dragResetOnDblClick: _angular_core.InputSignal<boolean>;
27
46
  dragLockAxis: _angular_core.InputSignal<"x" | "y">;
28
47
  dragClonedTemplate: _angular_core.InputSignal<TemplateRef<unknown>>;
29
- dragCursor: _angular_core.InputSignal<"move" | "grab" | "none">;
48
+ dragCursor: _angular_core.InputSignal<"move" | "grab" | "grab-on-drag" | "none">;
30
49
  dragBoundary: _angular_core.InputSignal<string | HTMLElement | ElementRef<HTMLElement>>;
31
50
  dragTransitionDuration: _angular_core.InputSignal<number>;
32
51
  readonly isDragDisabled: _angular_core.WritableSignal<boolean>;
@@ -34,7 +53,7 @@ declare class AXDragDirective implements OnInit, OnDestroy {
34
53
  readonly dragBoundaryOverride: _angular_core.WritableSignal<string | HTMLElement | ElementRef<HTMLElement>>;
35
54
  readonly startDelay: _angular_core.WritableSignal<number>;
36
55
  readonly dragTouchAction: _angular_core.WritableSignal<"none" | "pan-x" | "pan-y">;
37
- readonly dragCursorOverride: _angular_core.WritableSignal<"move" | "grab" | "none">;
56
+ readonly dragCursorOverride: _angular_core.WritableSignal<"move" | "grab" | "grab-on-drag" | "none">;
38
57
  dragPositionChanged: _angular_core.OutputEmitterRef<AXPositionType>;
39
58
  isMoving: _angular_core.WritableSignal<boolean>;
40
59
  clonedElement: _angular_core.WritableSignal<HTMLElement>;
@@ -63,14 +82,21 @@ declare class AXDragDirective implements OnInit, OnDestroy {
63
82
  private boundaryElement;
64
83
  readonly elementRect: _angular_core.Signal<DOMRect>;
65
84
  private boundaryRect;
85
+ private handleElements;
66
86
  private handle;
67
87
  private boundHandleDblClick;
68
88
  private boundHandlePointerUp;
69
89
  private boundHandlePointerDown;
70
90
  private boundHandlePointerMove;
71
- private listenersAttached;
91
+ private attachedHandleElements;
92
+ private styledHandleElements;
93
+ private activeHandleElement;
94
+ registerHandle(handle: AXDragHandleDirective | HTMLElement): void;
95
+ unregisterHandle(handle: AXDragHandleDirective | HTMLElement): void;
96
+ private resolveHandleElement;
72
97
  ngOnInit(): void;
73
98
  ngOnDestroy(): void;
99
+ private usesGrabDragCursor;
74
100
  private resolveDropCursor;
75
101
  private setActiveDragCursor;
76
102
  private clearActiveDragCursor;
@@ -83,6 +109,7 @@ declare class AXDragDirective implements OnInit, OnDestroy {
83
109
  private handleDblClick;
84
110
  private handlePointerMove;
85
111
  private abortDragSequence;
112
+ private resetHandleCursorAfterDrag;
86
113
  private startDrag;
87
114
  private handlePointerUp;
88
115
  private preventClicking;
@@ -104,14 +131,7 @@ declare class AXDragDirective implements OnInit, OnDestroy {
104
131
  private addDocumentListeners;
105
132
  private removeDocumentListeners;
106
133
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXDragDirective, never>;
107
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXDragDirective, "[axDrag]", never, { "axDrag": { "alias": "axDrag"; "required": false; "isSignal": true; }; "dragData": { "alias": "dragData"; "required": false; "isSignal": true; }; "dragDisabled": { "alias": "dragDisabled"; "required": false; "isSignal": true; }; "dragTransition": { "alias": "dragTransition"; "required": false; "isSignal": true; }; "dragElementClone": { "alias": "dragElementClone"; "required": false; "isSignal": true; }; "dropZoneGroup": { "alias": "dropZoneGroup"; "required": false; "isSignal": true; }; "dragStartDelay": { "alias": "dragStartDelay"; "required": false; "isSignal": true; }; "dragResetOnDblClick": { "alias": "dragResetOnDblClick"; "required": false; "isSignal": true; }; "dragLockAxis": { "alias": "dragLockAxis"; "required": false; "isSignal": true; }; "dragClonedTemplate": { "alias": "dragClonedTemplate"; "required": false; "isSignal": true; }; "dragCursor": { "alias": "dragCursor"; "required": false; "isSignal": true; }; "dragBoundary": { "alias": "dragBoundary"; "required": false; "isSignal": true; }; "dragTransitionDuration": { "alias": "dragTransitionDuration"; "required": false; "isSignal": true; }; }, { "dragPositionChanged": "dragPositionChanged"; }, ["handleDirective"], never, true, never>;
108
- }
109
-
110
- declare class AXDragHandleDirective {
111
- private el;
112
- readonly element: _angular_core.WritableSignal<HTMLElement>;
113
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXDragHandleDirective, never>;
114
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXDragHandleDirective, "[axDragHandle]", never, {}, {}, never, never, true, never>;
134
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXDragDirective, "[axDrag]", never, { "axDrag": { "alias": "axDrag"; "required": false; "isSignal": true; }; "dragData": { "alias": "dragData"; "required": false; "isSignal": true; }; "dragDisabled": { "alias": "dragDisabled"; "required": false; "isSignal": true; }; "dragTransition": { "alias": "dragTransition"; "required": false; "isSignal": true; }; "dragElementClone": { "alias": "dragElementClone"; "required": false; "isSignal": true; }; "dropZoneGroup": { "alias": "dropZoneGroup"; "required": false; "isSignal": true; }; "dragStartDelay": { "alias": "dragStartDelay"; "required": false; "isSignal": true; }; "dragResetOnDblClick": { "alias": "dragResetOnDblClick"; "required": false; "isSignal": true; }; "dragLockAxis": { "alias": "dragLockAxis"; "required": false; "isSignal": true; }; "dragClonedTemplate": { "alias": "dragClonedTemplate"; "required": false; "isSignal": true; }; "dragCursor": { "alias": "dragCursor"; "required": false; "isSignal": true; }; "dragBoundary": { "alias": "dragBoundary"; "required": false; "isSignal": true; }; "dragTransitionDuration": { "alias": "dragTransitionDuration"; "required": false; "isSignal": true; }; }, { "dragPositionChanged": "dragPositionChanged"; }, never, never, true, never>;
115
135
  }
116
136
 
117
137
  /** Event object emitted when an item is dropped into a drop list. */
@@ -148,6 +168,8 @@ declare class AXDropListDirective extends NXComponent implements OnInit, AfterCo
148
168
  dropListOrientation: _angular_core.InputSignal<"horizontal" | "vertical">;
149
169
  /** Emits when an item is dropped into the list. */
150
170
  dropListDropped: _angular_core.OutputEmitterRef<AXDropListDroppedEvent>;
171
+ /** Emits when the sort preview transforms change during an active drag. */
172
+ sortPreviewChanged: _angular_core.OutputEmitterRef<void>;
151
173
  /** The `axDrag` directives that are direct children of this list. */
152
174
  readonly _draggableItems: _angular_core.Signal<readonly AXDragDirective[]>;
153
175
  /** The native element of the drop list. */
@@ -162,6 +184,8 @@ declare class AXDropListDirective extends NXComponent implements OnInit, AfterCo
162
184
  private readonly _listInitialRect;
163
185
  /** The detected `gap` of the list for the current orientation. */
164
186
  private readonly _listGap;
187
+ /** Whether the list is in RTL direction (cached at drag start). */
188
+ private readonly _isRtl;
165
189
  /** Internal orientation state; can be overridden programmatically by host components. */
166
190
  readonly orientation: _angular_core.WritableSignal<"horizontal" | "vertical">;
167
191
  /** Internal sorting-disabled state; can be overridden programmatically by host components. */
@@ -173,6 +197,8 @@ declare class AXDropListDirective extends NXComponent implements OnInit, AfterCo
173
197
  ngOnDestroy(): void;
174
198
  /** Checks if the given drag item is the one currently active in this list. */
175
199
  isDragActiveForThisList(dragItem: AXDragDirective): boolean;
200
+ /** Whether the list is horizontal and in RTL direction. */
201
+ private isHorizontalRtl;
176
202
  /**
177
203
  * Prepares the list for sorting when a drag operation starts from within this list.
178
204
  * @param dragItem The item that is being dragged.
@@ -233,7 +259,7 @@ declare class AXDropListDirective extends NXComponent implements OnInit, AfterCo
233
259
  /** Resets the internal state of the directive to its initial values. */
234
260
  resetSortState(): void;
235
261
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXDropListDirective, never>;
236
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXDropListDirective, "[axDropList]", ["axDropList"], { "axDropList": { "alias": "axDropList"; "required": false; "isSignal": true; }; "sortingDisabled": { "alias": "sortingDisabled"; "required": false; "isSignal": true; }; "dropListGroup": { "alias": "dropListGroup"; "required": false; "isSignal": true; }; "dropListOrientation": { "alias": "dropListOrientation"; "required": false; "isSignal": true; }; }, { "dropListDropped": "dropListDropped"; }, ["_draggableItems"], never, true, never>;
262
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXDropListDirective, "[axDropList]", ["axDropList"], { "axDropList": { "alias": "axDropList"; "required": false; "isSignal": true; }; "sortingDisabled": { "alias": "sortingDisabled"; "required": false; "isSignal": true; }; "dropListGroup": { "alias": "dropListGroup"; "required": false; "isSignal": true; }; "dropListOrientation": { "alias": "dropListOrientation"; "required": false; "isSignal": true; }; }, { "dropListDropped": "dropListDropped"; "sortPreviewChanged": "sortPreviewChanged"; }, ["_draggableItems"], never, true, never>;
237
263
  }
238
264
 
239
265
  interface AXDropZoneDropEvent extends NXNativeEvent<AXDropZoneDirective, MouseEvent> {
@@ -275,5 +301,5 @@ declare function moveItemInArray<T = any>(array: T[], fromIndex: number, toIndex
275
301
  */
276
302
  declare function transferArrayItem<T = any>(currentArray: T[], targetArray: T[], currentIndex: number, targetIndex: number): void;
277
303
 
278
- export { AXDragDirective, AXDragDropModule, AXDragHandleDirective, AXDropListDirective, AXDropZoneDirective, moveItemInArray, transferArrayItem };
279
- export type { AXDropListDroppedEvent, AXDropZoneDropEvent, AXDropZoneHoverEvent };
304
+ export { AXDragDirective, AXDragDropModule, AXDragHandleDirective, AXDropListDirective, AXDropZoneDirective, AX_DRAG_PARENT, moveItemInArray, transferArrayItem };
305
+ export type { AXDragParent, AXDropListDroppedEvent, AXDropZoneDropEvent, AXDropZoneHoverEvent };
@@ -1,69 +1,44 @@
1
- import * as i0 from '@angular/core';
1
+ import * as _angular_core from '@angular/core';
2
+ import { OnDestroy } from '@angular/core';
3
+ import { AXFullScreenMode } from '@acorex/core/full-screen';
2
4
 
3
5
  /**
4
- * Fullscreen directive that provides CSS-based fullscreen functionality
6
+ * Fullscreen directive with overlay and browser modes.
5
7
  * Usage: <element axFullscreen #fullscreen="axFullscreen"></element>
6
8
  * Then: fullscreen.toggle() or fullscreen.enter() or fullscreen.exit()
7
9
  */
8
- declare class AXFullScreenDirective {
10
+ declare class AXFullScreenDirective implements OnDestroy {
9
11
  /**
10
- * Current fullscreen state
12
+ * Fullscreen implementation mode.
13
+ * @defaultValue 'overlay'
11
14
  */
12
- private readonly isFullscreenState;
15
+ readonly mode: _angular_core.InputSignal<AXFullScreenMode>;
13
16
  /**
14
- * Original element styles to restore
17
+ * Fullscreen change event for this host element.
15
18
  */
16
- private originalStyles;
17
- /**
18
- * Original parent element reference
19
- */
20
- private originalParent;
21
- /**
22
- * Fullscreen container element
23
- */
24
- private fullscreenContainer;
25
- /**
26
- * Fullscreen change event
27
- */
28
- readonly fullscreenChange: i0.OutputEmitterRef<boolean>;
29
- /**
30
- * Z-index token for this fullscreen instance
31
- */
32
- private zToken;
33
- private readonly renderer;
19
+ readonly fullscreenChange: _angular_core.OutputEmitterRef<boolean>;
34
20
  private readonly elementRef;
35
- private readonly zIndexService;
21
+ private readonly fullScreenService;
36
22
  constructor();
37
23
  /**
38
- * Toggle fullscreen state
24
+ * Toggle fullscreen state.
39
25
  */
40
26
  toggle(): void;
41
27
  /**
42
- * Enter fullscreen mode using CSS
28
+ * Enter fullscreen mode.
43
29
  */
44
30
  enter(): void;
45
31
  /**
46
- * Exit fullscreen mode
32
+ * Exit fullscreen mode.
47
33
  */
48
34
  exit(): void;
49
35
  /**
50
- * Check if currently in fullscreen mode
36
+ * Check if this host is currently in fullscreen mode.
51
37
  */
52
38
  isFullscreen(): boolean;
53
- /**
54
- * Store original element styles
55
- */
56
- private storeOriginalStyles;
57
- /**
58
- * Restore original element styles
59
- */
60
- private restoreOriginalStyles;
61
- /**
62
- * Convert camelCase to kebab-case for CSS properties
63
- */
64
- private camelToKebabCase;
65
- static ɵfac: i0.ɵɵFactoryDeclaration<AXFullScreenDirective, never>;
66
- static ɵdir: i0.ɵɵDirectiveDeclaration<AXFullScreenDirective, "[axFullscreen]", ["axFullscreen"], {}, { "fullscreenChange": "fullscreenChange"; }, never, never, true, never>;
39
+ ngOnDestroy(): void;
40
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXFullScreenDirective, never>;
41
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXFullScreenDirective, "[axFullscreen]", ["axFullscreen"], { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, { "fullscreenChange": "fullscreenChange"; }, never, never, true, never>;
67
42
  }
68
43
 
69
44
  export { AXFullScreenDirective };
@@ -89,6 +89,11 @@ declare class AXGestureDirective implements OnDestroy {
89
89
  * Stops gesture recognition when true.
90
90
  */
91
91
  disabled: _angular_core.InputSignal<boolean>;
92
+ /**
93
+ * Maximum interval in milliseconds between taps for double-tap recognition.
94
+ * Maps to Hammer.js tap recognizer `interval`. Defaults to Hammer's built-in value (300ms).
95
+ */
96
+ tapInterval: _angular_core.InputSignal<number>;
92
97
  tap: OutputEmitterRef<AXGestureEvent>;
93
98
  doubletap: OutputEmitterRef<AXGestureEvent>;
94
99
  press: OutputEmitterRef<AXGestureEvent>;
@@ -108,6 +113,11 @@ declare class AXGestureDirective implements OnDestroy {
108
113
  * The underlying Hammer manager, or null when not initialized.
109
114
  */
110
115
  get manager(): AXGestureManager | null;
116
+ /**
117
+ * Suppresses native click propagation when Hammer.js is active so tap/doubletap
118
+ * outputs are the single source of click handling.
119
+ */
120
+ protected onHostClick(event: MouseEvent): void;
111
121
  ngOnDestroy(): void;
112
122
  private setup;
113
123
  private loadHammer;
@@ -115,7 +125,7 @@ declare class AXGestureDirective implements OnDestroy {
115
125
  private teardown;
116
126
  private readonly onHammerEvent;
117
127
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXGestureDirective, never>;
118
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXGestureDirective, "[axGesture]", ["axGesture"], { "options": { "alias": "options"; "required": false; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "enablePinch": { "alias": "enablePinch"; "required": false; "isSignal": true; }; "enableRotate": { "alias": "enableRotate"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "tap": "tap"; "doubletap": "doubletap"; "press": "press"; "pan": "pan"; "panstart": "panstart"; "panmove": "panmove"; "panend": "panend"; "swipe": "swipe"; "pinch": "pinch"; "rotate": "rotate"; }, never, never, true, never>;
128
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXGestureDirective, "[axGesture]", ["axGesture"], { "options": { "alias": "options"; "required": false; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "enablePinch": { "alias": "enablePinch"; "required": false; "isSignal": true; }; "enableRotate": { "alias": "enableRotate"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "tapInterval": { "alias": "tapInterval"; "required": false; "isSignal": true; }; }, { "tap": "tap"; "doubletap": "doubletap"; "press": "press"; "pan": "pan"; "panstart": "panstart"; "panmove": "panmove"; "panend": "panend"; "swipe": "swipe"; "pinch": "pinch"; "rotate": "rotate"; }, never, never, true, never>;
119
129
  }
120
130
 
121
131
  export { AXGestureDirective };
@@ -1,7 +1,6 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { PipeTransform } from '@angular/core';
3
3
  import { AXHighlightOptions, AXHighlightSegment } from '@acorex/core/utils';
4
- import { SafeHtml } from '@angular/platform-browser';
5
4
 
6
5
  /**
7
6
  * Directive that highlights text within the host element or its descendants.
@@ -43,32 +42,6 @@ declare class AXHighlightDirective {
43
42
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXHighlightDirective, "[axHighlight]", never, { "axHighlight": { "alias": "axHighlight"; "required": false; "isSignal": true; }; "highlightSelector": { "alias": "highlightSelector"; "required": false; "isSignal": true; }; "highlightOptions": { "alias": "highlightOptions"; "required": false; "isSignal": true; }; "highlightDisabled": { "alias": "highlightDisabled"; "required": false; "isSignal": true; }; }, { "matchCount": "matchCount"; }, never, never, true, never>;
44
43
  }
45
44
 
46
- /**
47
- * Renders text with search-term matches wrapped in `.ax-highlight` spans.
48
- *
49
- * Uses a single innerHTML string so Angular control-flow whitespace cannot insert
50
- * gaps between highlighted and non-highlighted characters.
51
- *
52
- * Does not use the `ax-highlight-text` class on the host — that class is reserved for
53
- * {@link AXHighlightService} DOM wrappers.
54
- */
55
- declare class AXHighlightTextComponent {
56
- #private;
57
- private readonly sanitizer;
58
- /** The full text to render. */
59
- readonly text: _angular_core.InputSignal<string>;
60
- /** The search term or terms to highlight within the text. */
61
- readonly query: _angular_core.InputSignal<string | readonly string[]>;
62
- /** When true, highlighting is disabled and plain text is shown. */
63
- readonly highlightDisabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
64
- /** Optional highlight behavior configuration. */
65
- readonly highlightOptions: _angular_core.InputSignal<AXHighlightOptions>;
66
- protected readonly segments: _angular_core.Signal<AXHighlightSegment[]>;
67
- protected readonly highlightedHtml: _angular_core.Signal<SafeHtml>;
68
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXHighlightTextComponent, never>;
69
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXHighlightTextComponent, "ax-highlight-text", never, { "text": { "alias": "text"; "required": false; "isSignal": true; }; "query": { "alias": "query"; "required": false; "isSignal": true; }; "highlightDisabled": { "alias": "highlightDisabled"; "required": false; "isSignal": true; }; "highlightOptions": { "alias": "highlightOptions"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
70
- }
71
-
72
45
  /**
73
46
  * Pure pipe that splits text into highlight segments for template rendering.
74
47
  */
@@ -78,4 +51,4 @@ declare class AXHighlightTextPipe implements PipeTransform {
78
51
  static ɵpipe: _angular_core.ɵɵPipeDeclaration<AXHighlightTextPipe, "axHighlightText", true>;
79
52
  }
80
53
 
81
- export { AXHighlightDirective, AXHighlightTextComponent, AXHighlightTextPipe };
54
+ export { AXHighlightDirective, AXHighlightTextPipe };
@@ -45,6 +45,7 @@ declare class AXHorizontalScrollDirective implements OnDestroy {
45
45
  private panStartScrollPosition;
46
46
  private suppressClickListener;
47
47
  private suppressClickTimer;
48
+ private _isRtl;
48
49
  private readonly interactiveSelector;
49
50
  private readonly wheelListener;
50
51
  protected touchAction(): string | null;
@@ -52,6 +53,8 @@ declare class AXHorizontalScrollDirective implements OnDestroy {
52
53
  ngOnDestroy(): void;
53
54
  private get nativeElement();
54
55
  private isHorizontal;
56
+ private get rtlSign();
57
+ private refreshRtlState;
55
58
  private getCurrentScrollPosition;
56
59
  private getMaxScrollPosition;
57
60
  private canScroll;
@@ -27,6 +27,8 @@ declare class AXOutlineContainerDirective implements OnDestroy, AfterViewInit {
27
27
  scrollableElementId: _angular_core.InputSignal<string>;
28
28
  private scrollTop;
29
29
  private outlineItems;
30
+ private lastScrollSpyIndex;
31
+ private heldActiveIndex;
30
32
  private scrollableElement;
31
33
  private mutationSubject;
32
34
  private readonly MUTATION_DEBOUNCE_TIME;
@@ -34,7 +36,25 @@ declare class AXOutlineContainerDirective implements OnDestroy, AfterViewInit {
34
36
  outlineItems$: BehaviorSubject<outlineItemType[]>;
35
37
  ngOnDestroy(): void;
36
38
  ngAfterViewInit(): void;
39
+ scrollToItem(id: string): void;
40
+ private resolveScrollEventTarget;
41
+ private readScrollTop;
42
+ private handleInContentOutlineLinkClick;
43
+ private scrollToItemFromHash;
44
+ private releaseHeldActiveIndex;
45
+ private stopOngoingSmoothScroll;
46
+ private getOutlineIdFromHref;
47
+ private syncLocationHash;
37
48
  private scrollChanged;
49
+ private bindUserScrollIntent;
50
+ private resolveActiveIndex;
51
+ /**
52
+ * Maps scroll position to the active outline item. Sections with little content often
53
+ * have overlapping activation thresholds; each section gets a minimum scroll slot so
54
+ * short blocks are not skipped while scrolling.
55
+ */
56
+ private resolveByScrollSlots;
57
+ private applyActiveIndex;
38
58
  private setOutlineItems;
39
59
  refreshOutlineItems(): void;
40
60
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXOutlineContainerDirective, never>;
@@ -4,6 +4,40 @@ import { AXZToken } from '@acorex/core/z-index';
4
4
  import * as i0 from '@angular/core';
5
5
  import { ElementRef, EmbeddedViewRef, ComponentRef } from '@angular/core';
6
6
 
7
+ declare const AX_OVERLAY_DEFAULT_ENTER_ANIMATION: string[];
8
+ declare const AX_OVERLAY_DEFAULT_LEAVE_ANIMATION: string[];
9
+ type AXOverlayAnimation = boolean | string[] | {
10
+ enter?: string[];
11
+ leave?: string[];
12
+ };
13
+ interface AXOverlayResolvedAnimation {
14
+ enter: string[];
15
+ leave: string[];
16
+ }
17
+ /**
18
+ * Resolves overlay animation classes.
19
+ * - omitted: no animation (opt-in at the overlay layer)
20
+ * - `true`: default fade in/out
21
+ * - `false` or `[]`: no animation
22
+ * - `string[]`: custom enter classes only
23
+ * - `{ enter, leave }`: omitted keys fall back to the default fade classes
24
+ */
25
+ declare function resolveOverlayAnimation(animation?: AXOverlayAnimation): AXOverlayResolvedAnimation;
26
+ /** Prefers the content/pane so transforms are not applied to the full-screen container. */
27
+ declare function getOverlayAnimationTarget(container: HTMLElement): HTMLElement;
28
+ declare function applyOverlayAnimationClasses(element: HTMLElement, classes: string[]): void;
29
+ declare function removeOverlayAnimationClasses(element: HTMLElement, classes: string[]): void;
30
+ declare function prefersReducedMotion(documentRef: Document): boolean;
31
+ declare function parseCssTimeList(value: string): number[];
32
+ /** Maps theme duration utility classes to milliseconds (see tailwind-base). */
33
+ declare function getAnimationDurationFromClasses(classes: string[]): number;
34
+ declare function getOverlayAnimationTimeout(element: HTMLElement, documentRef: Document, fallbackMs?: number): number;
35
+ declare function playOverlayLeaveAnimation(element: HTMLElement, enter: string[], leave: string[], documentRef: Document): Promise<void>;
36
+ declare function waitForOverlayAnimationEnd(element: HTMLElement, documentRef: Document, options?: {
37
+ fallbackMs?: number;
38
+ animationName?: string;
39
+ }): Promise<void>;
40
+
7
41
  type AXOverlayVisualContextScope = 'full' | 'theme';
8
42
  interface AXOverlayVisualContext {
9
43
  appearance?: string;
@@ -29,10 +63,12 @@ interface AXOverlayRef<T> {
29
63
  instance: EmbeddedViewRef<T> | ComponentRef<T>;
30
64
  /** Updates the overlay position relative to the anchor */
31
65
  updatePosition: () => void;
32
- /** Destroys the overlay and removes it from the DOM */
66
+ /** Destroys the overlay. DOM removal waits for a leave animation when one is configured. */
33
67
  dispose: () => void;
34
68
  /** The overlay container element */
35
69
  overlayElement: HTMLElement | null;
70
+ /** The backdrop element if one was created */
71
+ backdropElement: HTMLElement | null;
36
72
  /** The z-index token for this overlay */
37
73
  zToken: AXZToken | null;
38
74
  /** Brings this overlay to the front of all other overlays */
@@ -62,12 +98,20 @@ interface AXOverlayOptions extends AXComponentOptions {
62
98
  anchorOptions?: AXOverlayAnchorOptions;
63
99
  /** Custom CSS class for the overlay panel */
64
100
  panelClass?: string | string[];
101
+ /**
102
+ * Enter/leave animation applied to overlay content (`.ax-overlay-content` or `.ax-overlay-pane`),
103
+ * not the full-screen container. Omitted: no animation. `true`: default fade in/out.
104
+ * `false` or `[]`: disabled. A class array is enter-only. `{ enter, leave }` configures both.
105
+ */
106
+ animation?: AXOverlayAnimation;
65
107
  /** Whether to close when clicking outside */
66
108
  closeOnOutsideClick?: boolean;
67
109
  /** Whether to close when pressing Escape */
68
110
  closeOnEscape?: boolean;
69
111
  /** Width of the overlay container (e.g., 'auto', '200px', '100%') */
70
112
  width?: string;
113
+ /** Dispose this overlay when Angular starts a navigation. Default: true. */
114
+ closeOnNavigation?: boolean;
71
115
  /** Callback when the overlay is disposed (e.g., due to scroll) */
72
116
  onDispose?: () => void;
73
117
  /** Whether to use centered container (default: true). Set to false for positioned overlays like toasts */
@@ -127,6 +171,7 @@ declare class AXOverlayService {
127
171
  private document;
128
172
  private zIndexService;
129
173
  private _platform;
174
+ private router;
130
175
  /**
131
176
  * Creates an overlay with optional anchor-based positioning.
132
177
  * @param content - Component or template to display
@@ -134,6 +179,17 @@ declare class AXOverlayService {
134
179
  * @returns Promise<AXOverlayRef> - Reference to the created overlay
135
180
  */
136
181
  create<T = unknown>(content: AXComponentContent<T>, options?: AXOverlayOptions): Promise<AXOverlayRef<T>>;
182
+ /**
183
+ * Mobile action sheets need a hit-testable scrim even when the caller did not
184
+ * ask for a backdrop. An explicit `backdrop.enabled: false` opts out.
185
+ */
186
+ private needsActionSheetBackdrop;
187
+ /**
188
+ * Fills in the action-sheet scrim when the caller did not configure a backdrop.
189
+ * Outside-click closing stays with the popover (`clickOut`); this layer only
190
+ * intercepts hits so the page behind the sheet cannot be clicked.
191
+ */
192
+ private withActionSheetBackdrop;
137
193
  /**
138
194
  * Creates a backdrop element.
139
195
  */
@@ -160,8 +216,8 @@ declare class AXOverlayService {
160
216
  private positionOverlay;
161
217
  private applyOverlayVisualContext;
162
218
  static ɵfac: i0.ɵɵFactoryDeclaration<AXOverlayService, never>;
163
- static ɵprov: i0.ɵɵInjectableDeclaration<AXOverlayService>;
219
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
164
220
  }
165
221
 
166
- export { APPEARANCE_CLASSES, AXOverlayService, CONTRAST_CLASSES, MANAGED_OVERLAY_VISUAL_CLASSES, SIZE_CLASSES, THEME_CLASSES, applyVisualContext, calculateAnchorPosition, clampToViewport, findBestPosition, fitsInViewport, resolveContextElement, resolveVisualContext };
167
- export type { AXOverlayAnchorOptions, AXOverlayOptions, AXOverlayRef, AXOverlayVisualContext, AXOverlayVisualContextScope };
222
+ export { APPEARANCE_CLASSES, AXOverlayService, AX_OVERLAY_DEFAULT_ENTER_ANIMATION, AX_OVERLAY_DEFAULT_LEAVE_ANIMATION, CONTRAST_CLASSES, MANAGED_OVERLAY_VISUAL_CLASSES, SIZE_CLASSES, THEME_CLASSES, applyOverlayAnimationClasses, applyVisualContext, calculateAnchorPosition, clampToViewport, findBestPosition, fitsInViewport, getAnimationDurationFromClasses, getOverlayAnimationTarget, getOverlayAnimationTimeout, parseCssTimeList, playOverlayLeaveAnimation, prefersReducedMotion, removeOverlayAnimationClasses, resolveContextElement, resolveOverlayAnimation, resolveVisualContext, waitForOverlayAnimationEnd };
223
+ export type { AXOverlayAnchorOptions, AXOverlayAnimation, AXOverlayOptions, AXOverlayRef, AXOverlayResolvedAnimation, AXOverlayVisualContext, AXOverlayVisualContextScope };