@acorex/cdk 22.0.0-next.9 → 22.0.1-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 (42) hide show
  1. package/fesm2022/acorex-cdk-carousel.mjs +22 -4
  2. package/fesm2022/acorex-cdk-carousel.mjs.map +1 -1
  3. package/fesm2022/acorex-cdk-common.mjs +238 -25
  4. package/fesm2022/acorex-cdk-common.mjs.map +1 -1
  5. package/fesm2022/acorex-cdk-drag-drop.mjs +182 -51
  6. package/fesm2022/acorex-cdk-drag-drop.mjs.map +1 -1
  7. package/fesm2022/acorex-cdk-full-screen.mjs +24 -145
  8. package/fesm2022/acorex-cdk-full-screen.mjs.map +1 -1
  9. package/fesm2022/acorex-cdk-gesture.mjs +202 -0
  10. package/fesm2022/acorex-cdk-gesture.mjs.map +1 -0
  11. package/fesm2022/acorex-cdk-highlight.mjs +108 -0
  12. package/fesm2022/acorex-cdk-highlight.mjs.map +1 -0
  13. package/fesm2022/acorex-cdk-horizontal-scroll.mjs +192 -30
  14. package/fesm2022/acorex-cdk-horizontal-scroll.mjs.map +1 -1
  15. package/fesm2022/acorex-cdk-input-mask.mjs +12 -4
  16. package/fesm2022/acorex-cdk-input-mask.mjs.map +1 -1
  17. package/fesm2022/acorex-cdk-outline.mjs +49 -12
  18. package/fesm2022/acorex-cdk-outline.mjs.map +1 -1
  19. package/fesm2022/acorex-cdk-overlay.mjs +123 -17
  20. package/fesm2022/acorex-cdk-overlay.mjs.map +1 -1
  21. package/fesm2022/acorex-cdk-shimmer.mjs +220 -0
  22. package/fesm2022/acorex-cdk-shimmer.mjs.map +1 -0
  23. package/fesm2022/acorex-cdk-sliding-item.mjs +70 -60
  24. package/fesm2022/acorex-cdk-sliding-item.mjs.map +1 -1
  25. package/gesture/README.md +3 -0
  26. package/horizontal-scroll/README.md +1 -1
  27. package/package.json +16 -7
  28. package/shimmer/README.md +11 -0
  29. package/sliding-item/README.md +4 -2
  30. package/types/acorex-cdk-carousel.d.ts +2 -0
  31. package/types/acorex-cdk-common.d.ts +95 -62
  32. package/types/acorex-cdk-drag-drop.d.ts +28 -3
  33. package/types/acorex-cdk-full-screen.d.ts +18 -43
  34. package/types/acorex-cdk-gesture.d.ts +132 -0
  35. package/types/acorex-cdk-highlight.d.ts +54 -0
  36. package/types/acorex-cdk-horizontal-scroll.d.ts +44 -11
  37. package/types/acorex-cdk-overlay.d.ts +35 -3
  38. package/types/acorex-cdk-shimmer.d.ts +68 -0
  39. package/types/acorex-cdk-sliding-item.d.ts +22 -4
  40. package/fesm2022/acorex-cdk-double-click.mjs +0 -178
  41. package/fesm2022/acorex-cdk-double-click.mjs.map +0 -1
  42. package/types/acorex-cdk-double-click.d.ts +0 -66
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { ChangeDetectorRef, ViewContainerRef, EventEmitter, OnDestroy, AfterViewInit, InjectionToken } from '@angular/core';
3
- import { AXUnsubscriber } from '@acorex/core/utils';
4
3
  import { AXValidationSummary, AXValidationRuleOptions } from '@acorex/core/validation';
4
+ import { AXUnsubscriber } from '@acorex/core/utils';
5
5
  import { ControlValueAccessor } from '@angular/forms';
6
6
  import { DataSource, CollectionViewer } from '@angular/cdk/collections';
7
7
  import { Subject, Observable } from 'rxjs';
@@ -44,6 +44,11 @@ declare abstract class NXComponent {
44
44
  #private;
45
45
  protected isRendered: i0.Signal<boolean>;
46
46
  get nativeElement(): HTMLElement;
47
+ /**
48
+ * Gets the host HTML element of the component.
49
+ * Same contract as classic editors so `ax-label` / `ax-form-field` can associate the field.
50
+ */
51
+ getHostElement<T = HTMLElement>(): T;
47
52
  static ɵfac: i0.ɵɵFactoryDeclaration<NXComponent, never>;
48
53
  static ɵprov: i0.ɵɵInjectableDeclaration<NXComponent>;
49
54
  }
@@ -87,66 +92,6 @@ declare abstract class NXLookComponent {
87
92
  static ɵcmp: i0.ɵɵComponentDeclaration<NXLookComponent, "ng-component", never, { "look": { "alias": "look"; "required": false; "isSignal": true; }; }, { "look": "lookChange"; }, never, never, true, never>;
88
93
  }
89
94
 
90
- declare abstract class NXValueComponent {
91
- readonly: i0.ModelSignal<boolean>;
92
- name: i0.ModelSignal<string>;
93
- value: i0.ModelSignal<unknown>;
94
- onValueChanged: i0.OutputEmitterRef<void>;
95
- static ɵfac: i0.ɵɵFactoryDeclaration<NXValueComponent, never>;
96
- static ɵcmp: i0.ɵɵComponentDeclaration<NXValueComponent, "ng-component", never, { "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "readonly": "readonlyChange"; "name": "nameChange"; "value": "valueChange"; "onValueChanged": "onValueChanged"; }, never, never, true, never>;
97
- }
98
-
99
- /**
100
- * A token that specifies the direction of component.
101
- */
102
- type AXDirection = 'vertical' | 'horizontal';
103
-
104
- /**
105
- * A token that specifies the orientation of component.
106
- */
107
- type AXOrientation = 'vertical' | 'horizontal';
108
-
109
- type AXPlacement = 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'end' | 'end-top' | 'end-bottom' | 'start' | 'start-top' | 'start-bottom';
110
- type AXPlacementType = AXConnectedPosition | AXConnectedPosition[] | AXPlacement | AXPlacement[];
111
- declare function convertToPlacement(value: AXPlacementType): AXConnectedPosition[];
112
- interface AXConnectedPosition {
113
- originX: 'start' | 'center' | 'end';
114
- originY: 'top' | 'center' | 'bottom';
115
- overlayX: 'start' | 'center' | 'end';
116
- overlayY: 'top' | 'center' | 'bottom';
117
- weight?: number;
118
- offsetX?: number;
119
- offsetY?: number;
120
- }
121
- declare const AX_PLACEMENT_TOP: AXConnectedPosition;
122
- declare const AX_PLACEMENT_TOP_START: AXConnectedPosition;
123
- declare const AX_PLACEMENT_TOP_END: AXConnectedPosition;
124
- declare const AX_PLACEMENT_BOTTOM: AXConnectedPosition;
125
- declare const AX_PLACEMENT_BOTTOM_START: AXConnectedPosition;
126
- declare const AX_PLACEMENT_BOTTOM_END: AXConnectedPosition;
127
- declare const AX_PLACEMENT_START: AXConnectedPosition;
128
- declare const AX_PLACEMENT_START_TOP: AXConnectedPosition;
129
- declare const AX_PLACEMENT_START_BOTTOM: AXConnectedPosition;
130
- declare const AX_PLACEMENT_END: AXConnectedPosition;
131
- declare const AX_PLACEMENT_END_TOP: AXConnectedPosition;
132
- declare const AX_PLACEMENT_END_BOTTOM: AXConnectedPosition;
133
- declare const AX_PLACEMENT_MAP: {
134
- [key: string]: {
135
- origin: AXConnectedPosition;
136
- alts?: AXConnectedPosition[];
137
- };
138
- };
139
-
140
- interface AXRange<T> {
141
- from: T;
142
- end: T;
143
- }
144
-
145
- /**
146
- * A token that specifies the selection mode of component.
147
- */
148
- type AXSelectionMode = 'single' | 'multiple' | 'none';
149
-
150
95
  /**
151
96
  * Contains native event
152
97
  * @category Events
@@ -569,6 +514,77 @@ declare abstract class AXAutocompleteParentComponent<T> extends MXValueComponent
569
514
  static ɵprov: i0.ɵɵInjectableDeclaration<AXAutocompleteParentComponent<any>>;
570
515
  }
571
516
 
517
+ /**
518
+ * Signal-based value editor with the same `ax-validation-rule` / `ax-form` contract as the classic value mixins.
519
+ */
520
+ declare abstract class NXValueComponent extends NXComponent {
521
+ #private;
522
+ readonly validationRulesChange: EventEmitter<AXFormValidationRule[]>;
523
+ get isRequired(): boolean;
524
+ get state(): AXComponentState;
525
+ protected registerValidation(): void;
526
+ addValidationRule(rule: AXFormValidationRule): void;
527
+ removeValidationRule(ruleToRemove: AXFormValidationRule): void;
528
+ removeValidationRuleByType(type: string): void;
529
+ validate(): Promise<AXValidationSummary>;
530
+ setState(state: AXComponentState, ...args: unknown[]): void;
531
+ resetErrors(): void;
532
+ commitValue(value: unknown, _isUserInteraction?: boolean): void;
533
+ static ɵfac: i0.ɵɵFactoryDeclaration<NXValueComponent, never>;
534
+ static ɵprov: i0.ɵɵInjectableDeclaration<NXValueComponent>;
535
+ }
536
+
537
+ /**
538
+ * A token that specifies the direction of component.
539
+ */
540
+ type AXDirection = 'vertical' | 'horizontal';
541
+
542
+ /**
543
+ * A token that specifies the orientation of component.
544
+ */
545
+ type AXOrientation = 'vertical' | 'horizontal';
546
+
547
+ type AXPlacement = 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'end' | 'end-top' | 'end-bottom' | 'start' | 'start-top' | 'start-bottom';
548
+ type AXPlacementType = AXConnectedPosition | AXConnectedPosition[] | AXPlacement | AXPlacement[];
549
+ declare function convertToPlacement(value: AXPlacementType): AXConnectedPosition[];
550
+ interface AXConnectedPosition {
551
+ originX: 'start' | 'center' | 'end';
552
+ originY: 'top' | 'center' | 'bottom';
553
+ overlayX: 'start' | 'center' | 'end';
554
+ overlayY: 'top' | 'center' | 'bottom';
555
+ weight?: number;
556
+ offsetX?: number;
557
+ offsetY?: number;
558
+ }
559
+ declare const AX_PLACEMENT_TOP: AXConnectedPosition;
560
+ declare const AX_PLACEMENT_TOP_START: AXConnectedPosition;
561
+ declare const AX_PLACEMENT_TOP_END: AXConnectedPosition;
562
+ declare const AX_PLACEMENT_BOTTOM: AXConnectedPosition;
563
+ declare const AX_PLACEMENT_BOTTOM_START: AXConnectedPosition;
564
+ declare const AX_PLACEMENT_BOTTOM_END: AXConnectedPosition;
565
+ declare const AX_PLACEMENT_START: AXConnectedPosition;
566
+ declare const AX_PLACEMENT_START_TOP: AXConnectedPosition;
567
+ declare const AX_PLACEMENT_START_BOTTOM: AXConnectedPosition;
568
+ declare const AX_PLACEMENT_END: AXConnectedPosition;
569
+ declare const AX_PLACEMENT_END_TOP: AXConnectedPosition;
570
+ declare const AX_PLACEMENT_END_BOTTOM: AXConnectedPosition;
571
+ declare const AX_PLACEMENT_MAP: {
572
+ [key: string]: {
573
+ origin: AXConnectedPosition;
574
+ alts?: AXConnectedPosition[];
575
+ };
576
+ };
577
+
578
+ interface AXRange<T> {
579
+ from: T;
580
+ end: T;
581
+ }
582
+
583
+ /**
584
+ * A token that specifies the selection mode of component.
585
+ */
586
+ type AXSelectionMode = 'single' | 'multiple' | 'none';
587
+
572
588
  type AXDataSourceOperator = {
573
589
  type: 'equal' | 'isNull' | 'isEmpty' | 'lt' | 'lte' | 'gt' | 'gte' | 'startsWith' | 'endsWith' | 'contains' | 'in';
574
590
  negative?: boolean;
@@ -1165,5 +1181,22 @@ declare class AXHotkeysService {
1165
1181
  static ɵprov: i0.ɵɵInjectableDeclaration<AXHotkeysService>;
1166
1182
  }
1167
1183
 
1168
- export { AXAutoFocusDirective, AXAutocompleteParentComponent, AXButtonClickEvent, AXClearableComponent, AXClickEvent, AXClosableComponent, AXCommonModule, AXComponent, AXComponentCloseEvent, AXComponentClosedPromise, AXComponentClosing, AXComponentResult, AXDataSource, AXDomService, AXEvent, AXFocusEvent, AXFocusableComponent, AXHotkeyDirective, AXHotkeysService, AXHtmlEvent, AXInfiniteScrollerDirective, AXInvertedColorDirective, AXItemClickEvent, AXItemSelectedEvent, AXListDataSource, AXNgModelDelayedValueChangedDirective, AXOptionChangedEvent, AXPagedComponent, AXRangeChangedEvent, AXResponsiveDirective, AXRippleDirective, AXSearchableComponent, AXSelectionValueChangedEvent, AXValuableComponent, AXValueChangedEvent, AX_LOCATIONS, AX_PLACEMENT_BOTTOM, AX_PLACEMENT_BOTTOM_END, AX_PLACEMENT_BOTTOM_START, AX_PLACEMENT_END, AX_PLACEMENT_END_BOTTOM, AX_PLACEMENT_END_TOP, AX_PLACEMENT_MAP, AX_PLACEMENT_START, AX_PLACEMENT_START_BOTTOM, AX_PLACEMENT_START_TOP, AX_PLACEMENT_TOP, AX_PLACEMENT_TOP_END, AX_PLACEMENT_TOP_START, AX_SELECTION_DATA_TOKEN, AX_STYLE_COLOR_TYPES, AX_STYLE_LOOK_TYPES, MXBaseComponent, MXButtonBaseComponent, MXColorComponent, MXColorLookComponent, MXInputBaseValueComponent, MXInteractiveComponent, MXLookComponent, MXLookableComponent, MXSelectionBridgeService, MXSelectionValueComponent, MXValueComponent, NXButtonComponent, NXClickEvent, NXColorComponent, NXComponent, NXEvent, NXInteractiveComponent, NXLookComponent, NXNativeEvent, NXValueComponent, TAB_META_KEY, applyDataSourceQuery, convertArrayToDataSource, convertToPlacement };
1184
+ /**
1185
+ * Scrolls `element` into view inside `container` using nearest-edge behavior.
1186
+ * Only adjusts the container's own scrollTop — never the document — so overlay
1187
+ * dismissal on document scroll is not triggered.
1188
+ */
1189
+ declare function scrollNearestIntoView(container: HTMLElement, element: HTMLElement, topInset?: number): void;
1190
+ /**
1191
+ * Scrolls an option into view inside a scrollable container using nearest-edge behavior.
1192
+ * Uses bounding rects relative to the container so it works even when offsetParent differs.
1193
+ */
1194
+ declare function scrollOptionWithinContainer(container: HTMLElement, option: HTMLElement): void;
1195
+ /**
1196
+ * Retries `fn` on successive animation frames until it returns true or `attempts` is exhausted.
1197
+ * Used when the target element appears only after an overlay has been positioned and laid out.
1198
+ */
1199
+ declare function retryFrames(fn: () => boolean, attempts?: number): void;
1200
+
1201
+ export { AXAutoFocusDirective, AXAutocompleteParentComponent, AXButtonClickEvent, AXClearableComponent, AXClickEvent, AXClosableComponent, AXCommonModule, AXComponent, AXComponentCloseEvent, AXComponentClosedPromise, AXComponentClosing, AXComponentResult, AXDataSource, AXDomService, AXEvent, AXFocusEvent, AXFocusableComponent, AXHotkeyDirective, AXHotkeysService, AXHtmlEvent, AXInfiniteScrollerDirective, AXInvertedColorDirective, AXItemClickEvent, AXItemSelectedEvent, AXListDataSource, AXNgModelDelayedValueChangedDirective, AXOptionChangedEvent, AXPagedComponent, AXRangeChangedEvent, AXResponsiveDirective, AXRippleDirective, AXSearchableComponent, AXSelectionValueChangedEvent, AXValuableComponent, AXValueChangedEvent, AX_LOCATIONS, AX_PLACEMENT_BOTTOM, AX_PLACEMENT_BOTTOM_END, AX_PLACEMENT_BOTTOM_START, AX_PLACEMENT_END, AX_PLACEMENT_END_BOTTOM, AX_PLACEMENT_END_TOP, AX_PLACEMENT_MAP, AX_PLACEMENT_START, AX_PLACEMENT_START_BOTTOM, AX_PLACEMENT_START_TOP, AX_PLACEMENT_TOP, AX_PLACEMENT_TOP_END, AX_PLACEMENT_TOP_START, AX_SELECTION_DATA_TOKEN, AX_STYLE_COLOR_TYPES, AX_STYLE_LOOK_TYPES, MXBaseComponent, MXButtonBaseComponent, MXColorComponent, MXColorLookComponent, MXInputBaseValueComponent, MXInteractiveComponent, MXLookComponent, MXLookableComponent, MXSelectionBridgeService, MXSelectionValueComponent, MXValueComponent, NXButtonComponent, NXClickEvent, NXColorComponent, NXComponent, NXEvent, NXInteractiveComponent, NXLookComponent, NXNativeEvent, NXValueComponent, TAB_META_KEY, applyDataSourceQuery, convertArrayToDataSource, convertToPlacement, retryFrames, scrollNearestIntoView, scrollOptionWithinContainer };
1169
1202
  export type { AXAnimationEasing, AXComponentState, AXConnectedPosition, AXDataListFetchCallbackResult, AXDataListFetchDataCallback, AXDataListItems, AXDataListQuery, AXDataSourceByKeyCallback, AXDataSourceCallbackResult, AXDataSourceChangedEvent, AXDataSourceConfig, AXDataSourceFilterOption, AXDataSourceItemExpandedEvent, AXDataSourceLoadCallback, AXDataSourceOperator, AXDataSourceQuery, AXDataSourceSortOption, AXDirection, AXExpandToggleIcons, AXFilterLogic, AXFormValidationRule, AXHotKeyAction, AXLocation, AXOrientation, AXPagedComponentInterface, AXPlacement, AXPlacementType, AXRange, AXScrollPosition, AXSelectionMode, AXSizeType, AXSortOrder, AXStyleColorClassType, AXStyleColorType, AXStyleInteractiveLookClassType, AXStyleLookClassType, AXStyleLookType, AXStyleSizeType, AXSurfaceType, DisabledCallback, MXComponentOptionChanged, MXComponentOptionChanging, MXComponentSetOption, NormalizedItem };
@@ -29,6 +29,12 @@ declare class AXDragDirective implements OnInit, OnDestroy {
29
29
  dragCursor: _angular_core.InputSignal<"move" | "grab" | "none">;
30
30
  dragBoundary: _angular_core.InputSignal<string | HTMLElement | ElementRef<HTMLElement>>;
31
31
  dragTransitionDuration: _angular_core.InputSignal<number>;
32
+ readonly isDragDisabled: _angular_core.WritableSignal<boolean>;
33
+ readonly lockAxis: _angular_core.WritableSignal<"x" | "y">;
34
+ readonly dragBoundaryOverride: _angular_core.WritableSignal<string | HTMLElement | ElementRef<HTMLElement>>;
35
+ readonly startDelay: _angular_core.WritableSignal<number>;
36
+ readonly dragTouchAction: _angular_core.WritableSignal<"none" | "pan-x" | "pan-y">;
37
+ readonly dragCursorOverride: _angular_core.WritableSignal<"move" | "grab" | "none">;
32
38
  dragPositionChanged: _angular_core.OutputEmitterRef<AXPositionType>;
33
39
  isMoving: _angular_core.WritableSignal<boolean>;
34
40
  clonedElement: _angular_core.WritableSignal<HTMLElement>;
@@ -43,10 +49,14 @@ declare class AXDragDirective implements OnInit, OnDestroy {
43
49
  private activePointerId;
44
50
  private prevDropZone;
45
51
  private dragStartOffset;
52
+ private pointerDownPosition;
46
53
  private clonePointerOffset;
47
54
  private clonedElementViewRef;
48
55
  private rafId;
49
56
  private pendingPointerEvent;
57
+ private savedBodyCursor;
58
+ private holdDelayTimer;
59
+ private holdDelayReady;
50
60
  private _parentDropList;
51
61
  private _currentDropList;
52
62
  readonly createCloneElement: _angular_core.Signal<boolean>;
@@ -61,11 +71,18 @@ declare class AXDragDirective implements OnInit, OnDestroy {
61
71
  private listenersAttached;
62
72
  ngOnInit(): void;
63
73
  ngOnDestroy(): void;
74
+ private resolveDropCursor;
75
+ private setActiveDragCursor;
76
+ private clearActiveDragCursor;
77
+ private clearHoldDelayTimer;
78
+ private scheduleHoldDelayFeedback;
79
+ private setElementDropCursor;
64
80
  private setElementTransition;
65
81
  private removeElementTransition;
66
82
  private handlePointerDown;
67
83
  private handleDblClick;
68
84
  private handlePointerMove;
85
+ private abortDragSequence;
69
86
  private startDrag;
70
87
  private handlePointerUp;
71
88
  private preventClicking;
@@ -131,6 +148,8 @@ declare class AXDropListDirective extends NXComponent implements OnInit, AfterCo
131
148
  dropListOrientation: _angular_core.InputSignal<"horizontal" | "vertical">;
132
149
  /** Emits when an item is dropped into the list. */
133
150
  dropListDropped: _angular_core.OutputEmitterRef<AXDropListDroppedEvent>;
151
+ /** Emits when the sort preview transforms change during an active drag. */
152
+ sortPreviewChanged: _angular_core.OutputEmitterRef<void>;
134
153
  /** The `axDrag` directives that are direct children of this list. */
135
154
  readonly _draggableItems: _angular_core.Signal<readonly AXDragDirective[]>;
136
155
  /** The native element of the drop list. */
@@ -145,8 +164,12 @@ declare class AXDropListDirective extends NXComponent implements OnInit, AfterCo
145
164
  private readonly _listInitialRect;
146
165
  /** The detected `gap` of the list for the current orientation. */
147
166
  private readonly _listGap;
148
- /** A signal-based alias for the orientation input for internal use. */
149
- private readonly _orientation;
167
+ /** Whether the list is in RTL direction (cached at drag start). */
168
+ private readonly _isRtl;
169
+ /** Internal orientation state; can be overridden programmatically by host components. */
170
+ readonly orientation: _angular_core.WritableSignal<"horizontal" | "vertical">;
171
+ /** Internal sorting-disabled state; can be overridden programmatically by host components. */
172
+ readonly isSortingDisabled: _angular_core.WritableSignal<boolean>;
150
173
  /** DOM placeholder element for inter-list drags */
151
174
  private _placeholderElement;
152
175
  ngOnInit(): void;
@@ -154,6 +177,8 @@ declare class AXDropListDirective extends NXComponent implements OnInit, AfterCo
154
177
  ngOnDestroy(): void;
155
178
  /** Checks if the given drag item is the one currently active in this list. */
156
179
  isDragActiveForThisList(dragItem: AXDragDirective): boolean;
180
+ /** Whether the list is horizontal and in RTL direction. */
181
+ private isHorizontalRtl;
157
182
  /**
158
183
  * Prepares the list for sorting when a drag operation starts from within this list.
159
184
  * @param dragItem The item that is being dragged.
@@ -214,7 +239,7 @@ declare class AXDropListDirective extends NXComponent implements OnInit, AfterCo
214
239
  /** Resets the internal state of the directive to its initial values. */
215
240
  resetSortState(): void;
216
241
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXDropListDirective, never>;
217
- 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>;
242
+ 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>;
218
243
  }
219
244
 
220
245
  interface AXDropZoneDropEvent extends NXNativeEvent<AXDropZoneDirective, MouseEvent> {
@@ -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 };
@@ -0,0 +1,132 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { OnDestroy, OutputEmitterRef } from '@angular/core';
3
+
4
+ /**
5
+ * Hammer.js event payload emitted by AXGestureDirective outputs.
6
+ */
7
+ interface AXGestureEvent {
8
+ type: string;
9
+ deltaX: number;
10
+ deltaY: number;
11
+ deltaTime: number;
12
+ distance: number;
13
+ angle: number;
14
+ velocity: number;
15
+ velocityX: number;
16
+ velocityY: number;
17
+ direction: number;
18
+ offsetDirection: number;
19
+ scale: number;
20
+ rotation: number;
21
+ center: {
22
+ x: number;
23
+ y: number;
24
+ };
25
+ srcEvent: Event;
26
+ target: HTMLElement;
27
+ pointerType: string;
28
+ eventType: number;
29
+ isFirst: boolean;
30
+ isFinal: boolean;
31
+ preventDefault: () => void;
32
+ }
33
+ /**
34
+ * Hammer.js constructor options passed through to the manager.
35
+ */
36
+ interface AXGestureOptions {
37
+ touchAction?: string;
38
+ enable?: boolean;
39
+ cssProps?: Record<string, string | number>;
40
+ domEvents?: boolean;
41
+ inputTarget?: EventTarget;
42
+ }
43
+ /**
44
+ * Allowed pan and swipe directions. Maps to Hammer.DIRECTION_* constants.
45
+ */
46
+ type AXGestureDirection = 'all' | 'horizontal' | 'vertical';
47
+ /**
48
+ * Public surface of the Hammer manager exposed via AXGestureDirective.manager.
49
+ */
50
+ interface AXGestureManager {
51
+ get: (name: string) => {
52
+ set: (options: object) => unknown;
53
+ } | null;
54
+ on: (events: string, handler: (ev: AXGestureEvent) => void) => void;
55
+ off: (events: string, handler: (ev: AXGestureEvent) => void) => void;
56
+ destroy: () => void;
57
+ }
58
+
59
+ /**
60
+ * Attaches Hammer.js gesture recognition to the host element.
61
+ *
62
+ * Usage:
63
+ * <div axGesture [direction]="'all'" (tap)="onTap($event)" (pan)="onPan($event)"></div>
64
+ */
65
+ declare class AXGestureDirective implements OnDestroy {
66
+ #private;
67
+ private readonly el;
68
+ private readonly zone;
69
+ private readonly platformId;
70
+ /**
71
+ * Extra Hammer.js options forwarded to the manager constructor.
72
+ */
73
+ options: _angular_core.InputSignal<AXGestureOptions>;
74
+ /**
75
+ * Pan and swipe direction. Defaults to horizontal, matching Hammer.js.
76
+ */
77
+ direction: _angular_core.InputSignal<AXGestureDirection>;
78
+ /** Internal direction state; can be overridden programmatically by host directives. */
79
+ readonly gestureDirection: _angular_core.WritableSignal<AXGestureDirection>;
80
+ /**
81
+ * Enables the multi-touch pinch recognizer. Disabled by default.
82
+ */
83
+ enablePinch: _angular_core.InputSignal<boolean>;
84
+ /**
85
+ * Enables the multi-touch rotate recognizer. Disabled by default.
86
+ */
87
+ enableRotate: _angular_core.InputSignal<boolean>;
88
+ /**
89
+ * Stops gesture recognition when true.
90
+ */
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>;
97
+ tap: OutputEmitterRef<AXGestureEvent>;
98
+ doubletap: OutputEmitterRef<AXGestureEvent>;
99
+ press: OutputEmitterRef<AXGestureEvent>;
100
+ pan: OutputEmitterRef<AXGestureEvent>;
101
+ panstart: OutputEmitterRef<AXGestureEvent>;
102
+ panmove: OutputEmitterRef<AXGestureEvent>;
103
+ panend: OutputEmitterRef<AXGestureEvent>;
104
+ swipe: OutputEmitterRef<AXGestureEvent>;
105
+ pinch: OutputEmitterRef<AXGestureEvent>;
106
+ rotate: OutputEmitterRef<AXGestureEvent>;
107
+ private hammer;
108
+ private hammerLib;
109
+ private setupId;
110
+ private ready;
111
+ private readonly emitters;
112
+ /**
113
+ * The underlying Hammer manager, or null when not initialized.
114
+ */
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;
121
+ ngOnDestroy(): void;
122
+ private setup;
123
+ private loadHammer;
124
+ private toHammerDirection;
125
+ private teardown;
126
+ private readonly onHammerEvent;
127
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXGestureDirective, 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>;
129
+ }
130
+
131
+ export { AXGestureDirective };
132
+ export type { AXGestureDirection, AXGestureEvent, AXGestureManager, AXGestureOptions };
@@ -0,0 +1,54 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { PipeTransform } from '@angular/core';
3
+ import { AXHighlightOptions, AXHighlightSegment } from '@acorex/core/utils';
4
+
5
+ /**
6
+ * Directive that highlights text within the host element or its descendants.
7
+ *
8
+ * Usage:
9
+ * ```html
10
+ * <div [axHighlight]="query()">...</div>
11
+ * <table [axHighlight]="query()" highlightSelector="tbody td">...</table>
12
+ * ```
13
+ */
14
+ declare class AXHighlightDirective {
15
+ private readonly host;
16
+ private readonly destroyRef;
17
+ private readonly highlightService;
18
+ /**
19
+ * Text or list of texts to search and highlight.
20
+ */
21
+ readonly axHighlight: _angular_core.InputSignal<string | readonly string[]>;
22
+ /**
23
+ * Optional CSS selector scoped to the host element.
24
+ * When omitted, highlighting is applied to the host element itself.
25
+ */
26
+ readonly highlightSelector: _angular_core.InputSignal<string>;
27
+ /**
28
+ * Optional highlight behavior configuration.
29
+ */
30
+ readonly highlightOptions: _angular_core.InputSignal<AXHighlightOptions>;
31
+ /**
32
+ * When true, highlighting is disabled and any existing highlights are cleared.
33
+ */
34
+ readonly highlightDisabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
35
+ /**
36
+ * Emits the number of matches highlighted after each render cycle.
37
+ */
38
+ readonly matchCount: _angular_core.OutputEmitterRef<number>;
39
+ constructor();
40
+ private resolveTarget;
41
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXHighlightDirective, never>;
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>;
43
+ }
44
+
45
+ /**
46
+ * Pure pipe that splits text into highlight segments for template rendering.
47
+ */
48
+ declare class AXHighlightTextPipe implements PipeTransform {
49
+ transform(text: string | null | undefined, query: string | readonly string[] | null | undefined, options?: AXHighlightOptions): AXHighlightSegment[];
50
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXHighlightTextPipe, never>;
51
+ static ɵpipe: _angular_core.ɵɵPipeDeclaration<AXHighlightTextPipe, "axHighlightText", true>;
52
+ }
53
+
54
+ export { AXHighlightDirective, AXHighlightTextPipe };
@@ -1,44 +1,77 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { OnDestroy } from '@angular/core';
3
+ import * as i1 from '@acorex/cdk/gesture';
3
4
 
4
5
  /**
5
- * Converts vertical mouse-wheel scrolling into horizontal scrolling on the host element.
6
- * Applies only when the host can scroll horizontally.
6
+ * Converts vertical mouse-wheel scrolling and pan gestures into scrolling on the host element.
7
+ * Supports horizontal and vertical orientations. Pan is provided by the hosted AXGestureDirective.
7
8
  *
8
9
  * Usage:
9
10
  * <div axHorizontalScroll [speed]="150" class="overflow-x-auto">
10
11
  * ...
11
12
  * </div>
13
+ *
14
+ * Do not put `axGesture` on the same element; this directive already hosts it.
12
15
  */
13
16
  declare class AXHorizontalScrollDirective implements OnDestroy {
14
17
  #private;
15
- private elementRef;
16
- private platformId;
17
- private zone;
18
+ private readonly elementRef;
19
+ private readonly platformId;
20
+ private readonly zone;
21
+ private readonly gesture;
22
+ private readonly destroyRef;
18
23
  /**
19
- * Disables wheel-to-horizontal conversion when true.
24
+ * Disables wheel-to-horizontal conversion and pan scrolling when true.
20
25
  */
21
26
  disabled: _angular_core.InputSignal<boolean>;
22
27
  /**
23
- * Horizontal scroll animation duration in milliseconds.
28
+ * Scroll axis. Horizontal converts wheel + pan; vertical uses pan only.
29
+ * @defaultValue 'horizontal'
30
+ */
31
+ orientation: _angular_core.InputSignal<"horizontal" | "vertical">;
32
+ /** Internal orientation state; can be overridden programmatically by host components. */
33
+ readonly scrollOrientation: _angular_core.WritableSignal<"horizontal" | "vertical">;
34
+ /**
35
+ * Scroll animation duration in milliseconds.
24
36
  * Lower values scroll faster; `0` applies the scroll instantly.
25
37
  */
26
38
  speed: _angular_core.InputSignal<number>;
27
39
  private animationFrameId;
28
- private targetScrollLeft;
40
+ private targetScrollPosition;
29
41
  private scrollPosition;
30
42
  private lastFrameTime;
43
+ private isPanning;
44
+ private ignorePan;
45
+ private panStartScrollPosition;
46
+ private suppressClickListener;
47
+ private suppressClickTimer;
48
+ private _isRtl;
49
+ private readonly interactiveSelector;
31
50
  private readonly wheelListener;
51
+ protected touchAction(): string | null;
52
+ constructor();
32
53
  ngOnDestroy(): void;
33
54
  private get nativeElement();
55
+ private isHorizontal;
56
+ private get rtlSign();
57
+ private refreshRtlState;
58
+ private getCurrentScrollPosition;
59
+ private getMaxScrollPosition;
60
+ private canScroll;
61
+ private applyScrollPosition;
62
+ private isDragInProgress;
34
63
  private handleWheel;
64
+ private handlePanStart;
65
+ private handlePanMove;
66
+ private handlePanEnd;
67
+ private clearPanStyles;
68
+ private suppressClick;
69
+ private clearClickSuppression;
35
70
  private syncScrollState;
36
71
  private startAnimation;
37
- private applyScrollPosition;
38
72
  private stopAnimation;
39
- private canScrollHorizontally;
40
73
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXHorizontalScrollDirective, never>;
41
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXHorizontalScrollDirective, "[axHorizontalScroll]", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "speed": { "alias": "speed"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
74
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXHorizontalScrollDirective, "[axHorizontalScroll]", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "speed": { "alias": "speed"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.AXGestureDirective; inputs: {}; outputs: {}; }]>;
42
75
  }
43
76
 
44
77
  export { AXHorizontalScrollDirective };