@acorex/cdk 22.1.8 → 22.2.0-next.1

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 (90) 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 +223 -108
  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 +15 -13
  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 +37 -14
  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 +21 -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-scrollbar.mjs +903 -0
  35. package/fesm2022/acorex-cdk-overlay-scrollbar.mjs.map +1 -0
  36. package/fesm2022/acorex-cdk-overlay.mjs +259 -25
  37. package/fesm2022/acorex-cdk-overlay.mjs.map +1 -1
  38. package/fesm2022/acorex-cdk-pan-view.mjs +3 -3
  39. package/fesm2022/acorex-cdk-pan-view.mjs.map +1 -1
  40. package/fesm2022/acorex-cdk-qrcode.mjs.map +1 -1
  41. package/fesm2022/acorex-cdk-resizable.mjs +483 -200
  42. package/fesm2022/acorex-cdk-resizable.mjs.map +1 -1
  43. package/fesm2022/acorex-cdk-selection.mjs +10 -10
  44. package/fesm2022/acorex-cdk-selection.mjs.map +1 -1
  45. package/fesm2022/acorex-cdk-shimmer.mjs +220 -0
  46. package/fesm2022/acorex-cdk-shimmer.mjs.map +1 -0
  47. package/fesm2022/acorex-cdk-sliding-item.mjs +3 -3
  48. package/fesm2022/acorex-cdk-sliding-item.mjs.map +1 -1
  49. package/fesm2022/acorex-cdk-sticky.mjs +3 -3
  50. package/fesm2022/acorex-cdk-sticky.mjs.map +1 -1
  51. package/fesm2022/acorex-cdk-text-editor.mjs +942 -0
  52. package/fesm2022/acorex-cdk-text-editor.mjs.map +1 -0
  53. package/fesm2022/acorex-cdk-uploader.mjs +9 -9
  54. package/fesm2022/acorex-cdk-uploader.mjs.map +1 -1
  55. package/fesm2022/acorex-cdk-viewport-guard.mjs +616 -0
  56. package/fesm2022/acorex-cdk-viewport-guard.mjs.map +1 -0
  57. package/fesm2022/acorex-cdk-virtual-scroll.mjs +10 -10
  58. package/fesm2022/acorex-cdk-virtual-scroll.mjs.map +1 -1
  59. package/fesm2022/acorex-cdk-wysiwyg.mjs +694 -37
  60. package/fesm2022/acorex-cdk-wysiwyg.mjs.map +1 -1
  61. package/fesm2022/acorex-cdk-z-index.mjs +3 -3
  62. package/fesm2022/acorex-cdk-z-index.mjs.map +1 -1
  63. package/fesm2022/acorex-cdk.mjs.map +1 -1
  64. package/overlay-scrollbar/README.md +54 -0
  65. package/package.json +33 -7
  66. package/shimmer/README.md +11 -0
  67. package/text-editor/README.md +5 -0
  68. package/types/acorex-cdk-auto-follow-scroll.d.ts +72 -0
  69. package/types/acorex-cdk-carousel.d.ts +2 -0
  70. package/types/acorex-cdk-clipboard.d.ts +1 -1
  71. package/types/acorex-cdk-common.d.ts +46 -19
  72. package/types/acorex-cdk-drag-drop.d.ts +43 -17
  73. package/types/acorex-cdk-full-screen.d.ts +18 -43
  74. package/types/acorex-cdk-gesture.d.ts +11 -1
  75. package/types/acorex-cdk-highlight.d.ts +1 -28
  76. package/types/acorex-cdk-horizontal-scroll.d.ts +3 -0
  77. package/types/acorex-cdk-list-navigation.d.ts +5 -0
  78. package/types/acorex-cdk-outline.d.ts +20 -0
  79. package/types/acorex-cdk-overlay-scrollbar.d.ts +155 -0
  80. package/types/acorex-cdk-overlay.d.ts +60 -4
  81. package/types/acorex-cdk-resizable.d.ts +80 -38
  82. package/types/acorex-cdk-shimmer.d.ts +68 -0
  83. package/types/acorex-cdk-text-editor.d.ts +156 -0
  84. package/types/acorex-cdk-uploader.d.ts +1 -1
  85. package/types/acorex-cdk-viewport-guard.d.ts +99 -0
  86. package/types/acorex-cdk-wysiwyg.d.ts +121 -14
  87. package/wysiwyg/README.md +3 -1
  88. package/fesm2022/acorex-cdk-double-click.mjs +0 -178
  89. package/fesm2022/acorex-cdk-double-click.mjs.map +0 -1
  90. 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;
@@ -32,6 +32,11 @@ declare class AXListNavigationDirective {
32
32
  private parentNavigationHandler;
33
33
  focusOnIndex(index: number): void;
34
34
  navigateTo(e: AXListNavigationItemDirective): void;
35
+ /**
36
+ * Highlights a list option on pointer hover without moving focus.
37
+ * Use when focus must stay on an external trigger (e.g. searchable lookup input).
38
+ */
39
+ highlightItem(item: AXListNavigationItemDirective): void;
35
40
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXListNavigationDirective, never>;
36
41
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXListNavigationDirective, "[axListNavigation]", ["axListNavigation"], { "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; }, { "onNavigationChanged": "onNavigationChanged"; "onKeypress": "onKeypress"; }, ["childElem"], never, true, never>;
37
42
  }
@@ -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>;
@@ -0,0 +1,155 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { InjectionToken, EnvironmentProviders } from '@angular/core';
3
+
4
+ /** Default delay (ms) before the overlay scrollbar fades out after scroll. */
5
+ declare const AX_OVERLAY_SCROLLBAR_DEFAULT_HIDE_DELAY_MS = 800;
6
+ /** Default pixels scrolled per navigation arrow click. */
7
+ declare const AX_OVERLAY_SCROLLBAR_DEFAULT_NAV_SCROLL_STEP_PX = 40;
8
+ /**
9
+ * Visual tokens for overlay scrollbars (`--ax-comp-overlay-scrollbar-*`).
10
+ * Values are applied to `:root` when using {@link provideOverlayScrollbar}, and inherited by scroll hosts.
11
+ */
12
+ interface AXOverlayScrollbarDesignTokens {
13
+ size?: string;
14
+ thumbRadius?: string;
15
+ trackRadius?: string;
16
+ trackColor?: string;
17
+ thumbColor?: string;
18
+ thumbActiveColor?: string;
19
+ thumbHoverColor?: string;
20
+ trackActiveColor?: string;
21
+ thumbBorderWidth?: string;
22
+ thumbBorderColor?: string;
23
+ trackBorderWidth?: string;
24
+ trackBorderColor?: string;
25
+ fadeDuration?: string;
26
+ }
27
+ /** Application-wide defaults for {@link AXOverlayScrollbarDirective}. */
28
+ interface AXOverlayScrollbarConfig {
29
+ /** Milliseconds before the scrollbar rail fades out after scrolling stops. */
30
+ hideDelay: number;
31
+ /** When true, shows up/down arrow buttons on the scrollbar rail. */
32
+ navigationButtons: boolean;
33
+ /** Pixels to scroll per navigation arrow click. */
34
+ navScrollStep: number;
35
+ /** Optional global design tokens (CSS custom properties). */
36
+ designTokens?: AXOverlayScrollbarDesignTokens;
37
+ }
38
+ declare const AXOverlayScrollbarDefaultConfig: AXOverlayScrollbarConfig;
39
+ type AXPartialOverlayScrollbarConfig = Partial<AXOverlayScrollbarConfig> & {
40
+ designTokens?: Partial<AXOverlayScrollbarDesignTokens>;
41
+ };
42
+ declare const AX_OVERLAY_SCROLLBAR_CONFIG: InjectionToken<AXOverlayScrollbarConfig>;
43
+ /** Merges partial config with {@link AXOverlayScrollbarDefaultConfig}. */
44
+ declare function overlayScrollbarConfig(config?: AXPartialOverlayScrollbarConfig): AXOverlayScrollbarConfig;
45
+ /** Sets overlay scrollbar CSS variables on the given element. */
46
+ declare function applyOverlayScrollbarDesignTokens(element: HTMLElement, tokens?: AXOverlayScrollbarDesignTokens): void;
47
+ /**
48
+ * Registers global overlay scrollbar defaults for the application.
49
+ *
50
+ * @example
51
+ * ```ts
52
+ * export const appConfig: ApplicationConfig = {
53
+ * providers: [
54
+ * provideOverlayScrollbar({
55
+ * hideDelay: 1200,
56
+ * navigationButtons: true,
57
+ * navScrollStep: 48,
58
+ * designTokens: {
59
+ * size: '8px',
60
+ * thumbColor: 'var(--ax-sys-scroller-thumb-color)',
61
+ * },
62
+ * }),
63
+ * ],
64
+ * };
65
+ * ```
66
+ */
67
+ declare function provideOverlayScrollbar(config?: AXPartialOverlayScrollbarConfig): EnvironmentProviders;
68
+
69
+ declare function clampOverlayScrollbarWidth(px: number): number;
70
+ /**
71
+ * Custom overlay scrollbar: native scrollbars are hidden; a positioned thumb reflects scroll position.
72
+ * Styles are injected once by this directive.
73
+ */
74
+ declare class AXOverlayScrollbarDirective {
75
+ private readonly host;
76
+ private readonly destroyRef;
77
+ private readonly platformId;
78
+ private readonly document;
79
+ private readonly appConfig;
80
+ private rootEl;
81
+ private railEl;
82
+ private trackEl;
83
+ private navUpEl;
84
+ private navDownEl;
85
+ private thumbEl;
86
+ private resizeObserver;
87
+ private designTokenMutationObserver;
88
+ private designTokenSyncFrame;
89
+ private thumbDragPointerId;
90
+ private pointerOverRail;
91
+ private trackPressReleaseListener;
92
+ private unbindRailInteraction;
93
+ /** Thumb size derived from layout; position updates on scroll without re-measuring scrollHeight. */
94
+ private thumbLayout;
95
+ readonly hideDelay: _angular_core.InputSignal<number>;
96
+ /**
97
+ * When true, shows browser-style up/down arrow buttons on the rail.
98
+ * Styling follows track/thumb CSS tokens.
99
+ */
100
+ readonly navigationButtons: _angular_core.InputSignal<boolean>;
101
+ /** Pixels to scroll per arrow click. */
102
+ readonly navScrollStep: _angular_core.InputSignal<number>;
103
+ private hideTimer;
104
+ constructor();
105
+ /** Host and rail are siblings under the root; mirror CSS variables when the host style/class changes. */
106
+ private observeHostDesignTokenChanges;
107
+ private queueDesignTokenSync;
108
+ /** Rail lives on a wrapper so it stays fixed while the host scrolls. */
109
+ private ensureScrollRoot;
110
+ private mountCustomScrollbar;
111
+ private ensureRailStructure;
112
+ private createNavButton;
113
+ private resolveNavScrollStepPx;
114
+ private scrollByNavStep;
115
+ private bindRailInteraction;
116
+ private unmountCustomScrollbar;
117
+ private remeasureCustomThumb;
118
+ private syncThumbPosition;
119
+ /** Move thumb (and scroll position) to the pointer Y on the track. */
120
+ private jumpScrollToTrackPointer;
121
+ private onThumbPointerDown;
122
+ private showScrollbar;
123
+ private bumpVisibility;
124
+ private deactivateThumb;
125
+ private setScrollbarEngaged;
126
+ private setTrackPressed;
127
+ private isPointerOverThumbVisual;
128
+ private beginTrackPressed;
129
+ private clearTrackPressed;
130
+ private syncEngagedAfterScroll;
131
+ private scheduleHide;
132
+ private clearHideTimer;
133
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXOverlayScrollbarDirective, never>;
134
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXOverlayScrollbarDirective, "[axOverlayScrollbar]", ["axOverlayScrollbar"], { "hideDelay": { "alias": "hideDelay"; "required": false; "isSignal": true; }; "navigationButtons": { "alias": "navigationButtons"; "required": false; "isSignal": true; }; "navScrollStep": { "alias": "navScrollStep"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
135
+ }
136
+
137
+ /** CSS custom properties for overlay scrollbar styling (set on the scroll host or in CSS). */
138
+ declare const AX_OVERLAY_SCROLLBAR_CSS_VARS: {
139
+ readonly size: "--ax-comp-overlay-scrollbar-size";
140
+ readonly thumbRadius: "--ax-comp-overlay-scrollbar-thumb-radius";
141
+ readonly trackRadius: "--ax-comp-overlay-scrollbar-track-radius";
142
+ readonly trackColor: "--ax-comp-overlay-scrollbar-track-color";
143
+ readonly thumbColor: "--ax-comp-overlay-scrollbar-thumb-color";
144
+ readonly thumbActiveColor: "--ax-comp-overlay-scrollbar-thumb-active-color";
145
+ readonly thumbHoverColor: "--ax-comp-overlay-scrollbar-thumb-hover-color";
146
+ readonly trackActiveColor: "--ax-comp-overlay-scrollbar-track-active-color";
147
+ readonly thumbBorderWidth: "--ax-comp-overlay-scrollbar-thumb-border-width";
148
+ readonly thumbBorderColor: "--ax-comp-overlay-scrollbar-thumb-border-color";
149
+ readonly trackBorderWidth: "--ax-comp-overlay-scrollbar-track-border-width";
150
+ readonly trackBorderColor: "--ax-comp-overlay-scrollbar-track-border-color";
151
+ readonly fadeDuration: "--ax-comp-overlay-scrollbar-fade-duration";
152
+ };
153
+
154
+ export { AXOverlayScrollbarDefaultConfig, AXOverlayScrollbarDirective, AX_OVERLAY_SCROLLBAR_CONFIG, AX_OVERLAY_SCROLLBAR_CSS_VARS, AX_OVERLAY_SCROLLBAR_DEFAULT_HIDE_DELAY_MS, AX_OVERLAY_SCROLLBAR_DEFAULT_NAV_SCROLL_STEP_PX, applyOverlayScrollbarDesignTokens, clampOverlayScrollbarWidth, overlayScrollbarConfig, provideOverlayScrollbar };
155
+ export type { AXOverlayScrollbarConfig, AXOverlayScrollbarDesignTokens, AXPartialOverlayScrollbarConfig };