@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
@@ -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 };
@@ -1,6 +1,26 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { AfterViewInit, OnDestroy } from '@angular/core';
3
3
 
4
+ type AXResizeHandle = 'start' | 'end' | 'top' | 'bottom' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end';
5
+ interface AXResizeSize {
6
+ width: number;
7
+ height: number;
8
+ }
9
+ /**
10
+ * Resize event payload. `value` / `oldValue` remain the host width so existing
11
+ * width-only listeners (`AXValueChangedEvent<number>`) keep compiling. Use `size`
12
+ * / `oldSize` when both axes matter.
13
+ */
14
+ interface AXResizeChangedEvent {
15
+ component: unknown;
16
+ htmlElement?: HTMLElement;
17
+ isUserInteraction?: boolean;
18
+ name?: string;
19
+ value?: number;
20
+ oldValue?: number;
21
+ size: AXResizeSize;
22
+ oldSize: AXResizeSize;
23
+ }
4
24
  declare class AXResizableDirective implements AfterViewInit, OnDestroy {
5
25
  private readonly el;
6
26
  private readonly platformService;
@@ -9,67 +29,89 @@ declare class AXResizableDirective implements AfterViewInit, OnDestroy {
9
29
  private readonly platformID;
10
30
  private readonly isBrowser;
11
31
  private hostElement;
12
- private resizeHandle?;
13
- private isResizing;
32
+ private readonly resizeHandles;
33
+ private readonly isResizing;
34
+ private activeHandle;
14
35
  private initialElementWidth;
15
- private startMoveWidth;
16
- private subscriptions;
17
- private readonly boundMouseDown;
18
- private readonly boundMouseMove;
19
- private readonly boundMouseUp;
20
- private readonly boundMouseEnter;
21
- private readonly boundMouseLeave;
36
+ private initialElementHeight;
37
+ private startX;
38
+ private startY;
39
+ private startWidth;
40
+ private startHeight;
41
+ private startRatio;
42
+ private readonly subscriptions;
43
+ private resizeObserver?;
44
+ private readonly boundPointerDown;
45
+ private readonly boundPointerMove;
46
+ private readonly boundPointerUp;
47
+ private readonly boundPointerEnter;
48
+ private readonly boundPointerLeave;
22
49
  private readonly boundDoubleClick;
23
- private readonly resizeObserver;
50
+ private readonly isRTL;
24
51
  /** Define if directive is active or not */
25
52
  axResizable: _angular_core.ModelSignal<boolean>;
53
+ /** Logical handles to render. Defaults to the inline-end edge. */
54
+ handles: _angular_core.ModelSignal<AXResizeHandle[]>;
26
55
  /** Minimum width for the resizable element. */
27
56
  minWidth: _angular_core.ModelSignal<number>;
28
57
  /** Maximum width for the resizable element. Defaults to parent width if not provided. */
29
58
  maxWidth: _angular_core.ModelSignal<number>;
30
- /** Behavior on double-click: 'reset' or 'maximize'. */
59
+ /** Minimum height for the resizable element. */
60
+ minHeight: _angular_core.ModelSignal<number>;
61
+ /** Maximum height for the resizable element. Defaults to parent height if not provided. */
62
+ maxHeight: _angular_core.ModelSignal<number>;
63
+ /** Behavior on double-click: 'reset', 'maximize', or 'fit'. */
31
64
  dblClickAction: _angular_core.ModelSignal<"reset" | "maximize" | "fit">;
32
65
  /** Define initial width for the element. */
33
66
  width: _angular_core.ModelSignal<number>;
34
67
  /** Define reset width for the element. */
35
68
  defaultWidth: _angular_core.ModelSignal<number>;
69
+ /** Define initial height for the element. */
70
+ height: _angular_core.ModelSignal<number>;
71
+ /** Define reset height for the element. */
72
+ defaultHeight: _angular_core.ModelSignal<number>;
73
+ /** Lock the element's aspect ratio from the size captured at pointer-down. */
74
+ lockAspectRatio: _angular_core.ModelSignal<boolean>;
36
75
  /** Event emitted when resizing starts. */
37
- onResizingStarted: _angular_core.OutputEmitterRef<AXValueChangedEvent<number>>;
76
+ onResizingStarted: _angular_core.OutputEmitterRef<AXResizeChangedEvent>;
38
77
  /** Event emitted when resizing ends. */
39
- onResizingEnded: _angular_core.OutputEmitterRef<AXValueChangedEvent<number>>;
78
+ onResizingEnded: _angular_core.OutputEmitterRef<AXResizeChangedEvent>;
40
79
  /** Event emitted on double-click. */
41
- onResizingDblClick: _angular_core.OutputEmitterRef<AXValueChangedEvent<number>>;
80
+ onResizingDblClick: _angular_core.OutputEmitterRef<AXResizeChangedEvent>;
42
81
  constructor();
43
82
  ngAfterViewInit(): void;
44
83
  ngOnDestroy(): void;
45
- private setupResizableState;
46
- private applyWidthFromModel;
47
- private applyElementWidth;
48
- private createResizeHandle;
84
+ private reconcileHandles;
85
+ private createHandle;
86
+ private attachHandleListeners;
87
+ private destroyHandle;
88
+ private destroyAllHandles;
49
89
  private applyHandleStyles;
50
- private updateHandlePosition;
51
- private attachEventListeners;
52
- private cleanupEventListeners;
53
- private isRTL;
54
- private onMouseDown;
55
- private onMouseMove;
56
- private onMouseUp;
57
- private onMouseEnter;
58
- private onMouseLeave;
90
+ private updateAllHandlePositions;
91
+ private positionHandle;
92
+ private applyInlineSide;
93
+ private applySizeFromModel;
94
+ private applySize;
95
+ private onPointerDown;
96
+ private onPointerMove;
97
+ private onPointerUp;
98
+ private onPointerEnter;
99
+ private onPointerLeave;
59
100
  private onDoubleClick;
60
- private resetToInitialWidth;
61
- private maximizeToMaxWidth;
101
+ private computeSize;
102
+ private clampSize;
103
+ private resetToInitialSize;
104
+ private maximizeToMaxSize;
62
105
  private fitToContent;
106
+ private getCurrentSize;
107
+ private createResizeEvent;
108
+ private getHandleType;
109
+ private getCursorForHandle;
110
+ private getActiveCursor;
111
+ private stopResizing;
63
112
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXResizableDirective, never>;
64
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXResizableDirective, "[axResizable]", never, { "axResizable": { "alias": "axResizable"; "required": false; "isSignal": true; }; "minWidth": { "alias": "minWidth"; "required": false; "isSignal": true; }; "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; "dblClickAction": { "alias": "dblClickAction"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "defaultWidth": { "alias": "defaultWidth"; "required": false; "isSignal": true; }; }, { "axResizable": "axResizableChange"; "minWidth": "minWidthChange"; "maxWidth": "maxWidthChange"; "dblClickAction": "dblClickActionChange"; "width": "widthChange"; "defaultWidth": "defaultWidthChange"; "onResizingStarted": "onResizingStarted"; "onResizingEnded": "onResizingEnded"; "onResizingDblClick": "onResizingDblClick"; }, never, never, true, never>;
65
- }
66
- interface AXValueChangedEvent<T> {
67
- component: unknown;
68
- htmlElement?: HTMLElement;
69
- isUserInteraction?: boolean;
70
- name?: string;
71
- value?: T;
72
- oldValue?: T;
113
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXResizableDirective, "[axResizable]", never, { "axResizable": { "alias": "axResizable"; "required": false; "isSignal": true; }; "handles": { "alias": "handles"; "required": false; "isSignal": true; }; "minWidth": { "alias": "minWidth"; "required": false; "isSignal": true; }; "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; "minHeight": { "alias": "minHeight"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "dblClickAction": { "alias": "dblClickAction"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "defaultWidth": { "alias": "defaultWidth"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "defaultHeight": { "alias": "defaultHeight"; "required": false; "isSignal": true; }; "lockAspectRatio": { "alias": "lockAspectRatio"; "required": false; "isSignal": true; }; }, { "axResizable": "axResizableChange"; "handles": "handlesChange"; "minWidth": "minWidthChange"; "maxWidth": "maxWidthChange"; "minHeight": "minHeightChange"; "maxHeight": "maxHeightChange"; "dblClickAction": "dblClickActionChange"; "width": "widthChange"; "defaultWidth": "defaultWidthChange"; "height": "heightChange"; "defaultHeight": "defaultHeightChange"; "lockAspectRatio": "lockAspectRatioChange"; "onResizingStarted": "onResizingStarted"; "onResizingEnded": "onResizingEnded"; "onResizingDblClick": "onResizingDblClick"; }, never, never, true, never>;
73
114
  }
74
115
 
75
116
  export { AXResizableDirective };
117
+ export type { AXResizeChangedEvent, AXResizeHandle, AXResizeSize };
@@ -0,0 +1,68 @@
1
+ import * as _angular_core from '@angular/core';
2
+
3
+ /**
4
+ * Applies the shimmer text effect to a host element.
5
+ */
6
+ declare class AXShimmerDirective {
7
+ #private;
8
+ private readonly hostElement;
9
+ private readonly destroyRef;
10
+ private readonly platformId;
11
+ private readonly refresh;
12
+ /**
13
+ * Plays the shimmer animation once instead of looping.
14
+ *
15
+ * @defaultValue false
16
+ */
17
+ once: _angular_core.InputSignal<boolean>;
18
+ /**
19
+ * Reverses the shimmer sweep direction.
20
+ *
21
+ * @defaultValue false
22
+ */
23
+ reverse: _angular_core.InputSignal<boolean>;
24
+ /**
25
+ * Disables the shimmer effect and renders normal text.
26
+ *
27
+ * @defaultValue false
28
+ */
29
+ disabled: _angular_core.InputSignal<boolean>;
30
+ /**
31
+ * Duration of one shimmer sweep in milliseconds.
32
+ *
33
+ * @defaultValue 2000
34
+ */
35
+ duration: _angular_core.InputSignal<number>;
36
+ /**
37
+ * Width of the highlight band. Numbers use the spacing scale; strings accept any CSS length.
38
+ */
39
+ spread: _angular_core.InputSignal<string | number>;
40
+ /**
41
+ * Tilt of the highlight band in degrees.
42
+ *
43
+ * @defaultValue 20
44
+ */
45
+ angle: _angular_core.InputSignal<number>;
46
+ /**
47
+ * Explicit highlight color. Accepts ACoreX semantic colors (`primary`, `danger`, …) or any CSS color value.
48
+ * Falls back to a tint derived from currentColor when omitted.
49
+ */
50
+ color: _angular_core.InputSignal<string>;
51
+ constructor();
52
+ private get element();
53
+ private resolveSpread;
54
+ private isSemanticColor;
55
+ private resolveHighlightColor;
56
+ private isDarkMode;
57
+ private isRtl;
58
+ private prefersReducedMotion;
59
+ private buildBackgroundImage;
60
+ private applyShimmerStyles;
61
+ private clearShimmerStyles;
62
+ private restartShimmerAnimation;
63
+ private cancelShimmerAnimation;
64
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXShimmerDirective, never>;
65
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXShimmerDirective, "[axShimmer]", never, { "once": { "alias": "once"; "required": false; "isSignal": true; }; "reverse": { "alias": "reverse"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "duration": { "alias": "duration"; "required": false; "isSignal": true; }; "spread": { "alias": "spread"; "required": false; "isSignal": true; }; "angle": { "alias": "angle"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
66
+ }
67
+
68
+ export { AXShimmerDirective };
@@ -0,0 +1,156 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import * as _tiptap_core from '@tiptap/core';
3
+ import { Content, Extensions, Editor, JSONContent } from '@tiptap/core';
4
+
5
+ type AXTextEditorTiptapEditor = Editor;
6
+ type AXTextEditorTiptapContent = Content;
7
+ type AXTextEditorTiptapJSON = JSONContent;
8
+ type AXTextEditorTiptapChain = ReturnType<Editor['chain']>;
9
+ type AXTextEditorHeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
10
+ type AXTextEditorTextAlign = 'left' | 'center' | 'right' | 'justify';
11
+ type AXTextEditorTextDirection = 'rtl' | 'ltr';
12
+ type AXTextEditorFontSizeToken = 'small' | 'large' | 'huge';
13
+ declare const AX_TEXT_EDITOR_FONT_SIZE_TOKEN_VALUES: Record<AXTextEditorFontSizeToken, string>;
14
+ type AXTextEditorCommandAttrs = Record<string, unknown>;
15
+ declare const AX_TEXT_EDITOR_ZOOM_PRESETS: readonly [40, 50, 75, 90, 100, 125, 150, 175, 200];
16
+ declare const AX_TEXT_EDITOR_ZOOM_MIN = 40;
17
+ declare const AX_TEXT_EDITOR_ZOOM_MAX = 200;
18
+ declare const AX_TEXT_EDITOR_FONT_SIZES: readonly [8, 9, 10, 11, 12, 14, 16, 18, 20, 24, 28, 32, 36, 48, 72];
19
+ type AXTextEditorFontSize = (typeof AX_TEXT_EDITOR_FONT_SIZES)[number];
20
+ declare const AX_TEXT_EDITOR_DEFAULT_TEXT_COLORS: string[];
21
+ declare const AX_TEXT_EDITOR_DEFAULT_BACKGROUND_COLORS: string[];
22
+ interface AXTextEditorRecentColor {
23
+ color: string;
24
+ kind: 'text' | 'background';
25
+ }
26
+ type AXTextEditorCommandType = 'undo' | 'redo' | 'bold' | 'italic' | 'underline' | 'strike' | 'heading' | 'paragraph' | 'align' | 'direction' | 'color' | 'highlight' | 'fontSize' | 'bulletList' | 'orderedList' | 'superscript' | 'subscript' | 'link' | 'unlink' | 'blockquote' | 'code' | 'codeBlock' | 'horizontalRule' | 'image' | 'video' | 'insertTable' | 'addColumnBefore' | 'addColumnAfter' | 'deleteColumn' | 'addRowBefore' | 'addRowAfter' | 'deleteRow' | 'toggleHeaderRow' | 'deleteTable';
27
+ interface AXTextEditorFeatures {
28
+ table?: boolean;
29
+ image?: boolean;
30
+ video?: boolean;
31
+ superscript?: boolean;
32
+ subscript?: boolean;
33
+ keepSelection?: boolean;
34
+ placeholder?: boolean;
35
+ }
36
+ declare const AX_DEFAULT_TEXT_EDITOR_FEATURES: AXTextEditorFeatures;
37
+ interface AXTextEditorLoadExtensionsOptions {
38
+ placeholder?: string | (() => string);
39
+ features?: AXTextEditorFeatures;
40
+ headingLevels?: AXTextEditorHeadingLevel[];
41
+ extensions?: Extensions;
42
+ }
43
+ interface AXTextEditorState {
44
+ bold: boolean;
45
+ italic: boolean;
46
+ underline: boolean;
47
+ strike: boolean;
48
+ code: boolean;
49
+ codeBlock: boolean;
50
+ headingLevel: AXTextEditorHeadingLevel | null;
51
+ bulletList: boolean;
52
+ orderedList: boolean;
53
+ blockquote: boolean;
54
+ superscript: boolean;
55
+ subscript: boolean;
56
+ textAlign: AXTextEditorTextAlign | null;
57
+ textColor: string | null;
58
+ highlightColor: string | null;
59
+ linkHref: string | null;
60
+ fontSize: string | null;
61
+ textDirection: AXTextEditorTextDirection | null;
62
+ table: boolean;
63
+ canUndo: boolean;
64
+ canRedo: boolean;
65
+ isEmpty: boolean;
66
+ isFocused: boolean;
67
+ }
68
+ declare const AX_EMPTY_TEXT_EDITOR_STATE: AXTextEditorState;
69
+ interface AXTextEditorInitOptions {
70
+ content?: AXTextEditorTiptapContent;
71
+ editable?: boolean;
72
+ placeholder?: string | (() => string);
73
+ features?: AXTextEditorFeatures;
74
+ headingLevels?: AXTextEditorHeadingLevel[];
75
+ extensions?: Extensions;
76
+ editorProps?: _tiptap_core.EditorOptions['editorProps'];
77
+ /** @deprecated Use `editable: false` instead. */
78
+ readOnly?: boolean;
79
+ onUpdate?: (editor: AXTextEditorTiptapEditor) => void;
80
+ onFocus?: (editor: AXTextEditorTiptapEditor, event?: FocusEvent) => void;
81
+ onBlur?: (editor: AXTextEditorTiptapEditor, event?: FocusEvent) => void;
82
+ onSelectionUpdate?: (editor: AXTextEditorTiptapEditor) => void;
83
+ onTransaction?: (editor: AXTextEditorTiptapEditor) => void;
84
+ }
85
+ declare module '@tiptap/core' {
86
+ interface Commands<ReturnType> {
87
+ superscript: {
88
+ toggleSuperscript: () => ReturnType;
89
+ };
90
+ subscript: {
91
+ toggleSubscript: () => ReturnType;
92
+ };
93
+ axTextEditorFontSize: {
94
+ setFontSize: (size: string | null) => ReturnType;
95
+ };
96
+ axTextEditorVideo: {
97
+ setVideo: (options: {
98
+ src: string;
99
+ }) => ReturnType;
100
+ };
101
+ }
102
+ }
103
+
104
+ declare class AXTextEditor {
105
+ readonly editor: _angular_core.WritableSignal<_tiptap_core.Editor>;
106
+ readonly state: _angular_core.WritableSignal<AXTextEditorState>;
107
+ readonly ready: _angular_core.WritableSignal<boolean>;
108
+ readonly version: _angular_core.WritableSignal<number>;
109
+ private readonly platformId;
110
+ private destroyed;
111
+ private applyingContent;
112
+ init(container: HTMLElement | string, options?: AXTextEditorInitOptions): Promise<void>;
113
+ destroy(): void;
114
+ refresh(): void;
115
+ setContent(value: AXTextEditorTiptapContent | null | undefined, emit?: boolean): void;
116
+ getHTML(): string;
117
+ getJSON(): AXTextEditorTiptapJSON | null;
118
+ getText(options?: {
119
+ blockSeparator?: string;
120
+ }): string;
121
+ isEmpty(): boolean;
122
+ isFocused(): boolean;
123
+ isEditable(): boolean;
124
+ setEditable(editable: boolean): void;
125
+ focus(): void;
126
+ blur(): void;
127
+ chain(): AXTextEditorTiptapChain | null;
128
+ get commands(): AXTextEditorTiptapEditor['commands'] | undefined;
129
+ isActive(command: AXTextEditorCommandType, attrs?: AXTextEditorCommandAttrs): boolean;
130
+ can(command: AXTextEditorCommandType, attrs?: AXTextEditorCommandAttrs): boolean;
131
+ run(command: AXTextEditorCommandType, attrs?: AXTextEditorCommandAttrs): boolean;
132
+ private commandsApi;
133
+ private getCommandsApi;
134
+ insertContent(value: AXTextEditorTiptapContent): boolean;
135
+ clearContent(): boolean;
136
+ insertImage(src: string, alt?: string): void;
137
+ insertVideo(src: string): void;
138
+ setLink(href: string): void;
139
+ unsetLink(): void;
140
+ clearFormatting(): void;
141
+ toggleHeading(level: AXTextEditorHeadingLevel): void;
142
+ setTextAlign(align: AXTextEditorTextAlign): void;
143
+ setTextDirection(direction: AXTextEditorTextDirection): void;
144
+ private refreshState;
145
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXTextEditor, never>;
146
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
147
+ }
148
+
149
+ declare function isTextEditorCommandActive(editor: AXTextEditorTiptapEditor, command: AXTextEditorCommandType, attrs?: AXTextEditorCommandAttrs): boolean;
150
+ declare function canRunTextEditorCommand(editor: AXTextEditorTiptapEditor, command: AXTextEditorCommandType, attrs?: AXTextEditorCommandAttrs): boolean;
151
+ declare function runTextEditorCommand(editor: AXTextEditorTiptapEditor, command: AXTextEditorCommandType, attrs?: AXTextEditorCommandAttrs): boolean;
152
+
153
+ declare function createTextEditorExtensions(placeholderOrOptions?: string | (() => string) | AXTextEditorLoadExtensionsOptions): Promise<_tiptap_core.AnyExtension[]>;
154
+
155
+ export { AXTextEditor, AX_DEFAULT_TEXT_EDITOR_FEATURES, AX_EMPTY_TEXT_EDITOR_STATE, AX_TEXT_EDITOR_DEFAULT_BACKGROUND_COLORS, AX_TEXT_EDITOR_DEFAULT_TEXT_COLORS, AX_TEXT_EDITOR_FONT_SIZES, AX_TEXT_EDITOR_FONT_SIZE_TOKEN_VALUES, AX_TEXT_EDITOR_ZOOM_MAX, AX_TEXT_EDITOR_ZOOM_MIN, AX_TEXT_EDITOR_ZOOM_PRESETS, canRunTextEditorCommand, createTextEditorExtensions, isTextEditorCommandActive, runTextEditorCommand };
156
+ export type { AXTextEditorCommandAttrs, AXTextEditorCommandType, AXTextEditorFeatures, AXTextEditorFontSize, AXTextEditorFontSizeToken, AXTextEditorHeadingLevel, AXTextEditorInitOptions, AXTextEditorLoadExtensionsOptions, AXTextEditorRecentColor, AXTextEditorState, AXTextEditorTextAlign, AXTextEditorTextDirection, AXTextEditorTiptapChain, AXTextEditorTiptapContent, AXTextEditorTiptapEditor, AXTextEditorTiptapJSON };
@@ -381,7 +381,7 @@ declare class AXUploaderService {
381
381
  private bindEvents;
382
382
  private applyFileTypeValidation;
383
383
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXUploaderService, never>;
384
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXUploaderService>;
384
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
385
385
  }
386
386
 
387
387
  export { AXUploadRequest, AXUploaderBrowseDirective, AXUploaderService, AXUploaderZoneDirective };
@@ -0,0 +1,99 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { TemplateRef } from '@angular/core';
3
+
4
+ type AXScreenOrientation = 'portrait' | 'landscape';
5
+ /** Optional copy. Empty fields fall back to the translated defaults. */
6
+ interface AXViewportGuardMessage {
7
+ kicker?: string | null;
8
+ title?: string | null;
9
+ message?: string | null;
10
+ hint?: string | null;
11
+ }
12
+ /** Resolved warning passed into a custom template as `let-message`. */
13
+ interface AXViewportGuardTemplateData {
14
+ kind: 'size' | 'orientation';
15
+ orientation: AXScreenOrientation | null;
16
+ kicker: string;
17
+ title: string;
18
+ message: string;
19
+ hint: string;
20
+ }
21
+ /** Context of `axViewportGuardTemplate`. `$implicit` and `message` are the same data. */
22
+ interface AXViewportGuardTemplateContext {
23
+ $implicit: AXViewportGuardTemplateData;
24
+ message: AXViewportGuardTemplateData;
25
+ }
26
+
27
+ /**
28
+ * Hides the host when the viewport is smaller than the given size.
29
+ *
30
+ * ```html
31
+ * <div axMinViewport="1024" [minHeight]="640" [message]="copy" [template]="warning"></div>
32
+ * ```
33
+ */
34
+ declare class AXMinViewportDirective {
35
+ /** Minimum viewport width in CSS pixels. */
36
+ readonly minWidth: _angular_core.InputSignalWithTransform<number, unknown>;
37
+ /** Minimum viewport height in CSS pixels. Omitted heights are ignored. */
38
+ readonly minHeight: _angular_core.InputSignalWithTransform<number, unknown>;
39
+ /** Replaces any part of the default translated warning. */
40
+ readonly message: _angular_core.InputSignal<AXViewportGuardMessage>;
41
+ /** Custom warning. `let-message` receives the resolved copy. */
42
+ readonly template: _angular_core.InputSignal<TemplateRef<AXViewportGuardTemplateContext>>;
43
+ private readonly presenter;
44
+ private readonly projectedTemplate;
45
+ constructor();
46
+ private request;
47
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMinViewportDirective, never>;
48
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXMinViewportDirective, "[axMinViewport]", ["axMinViewport"], { "minWidth": { "alias": "axMinViewport"; "required": false; "isSignal": true; }; "minHeight": { "alias": "minHeight"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "template": { "alias": "template"; "required": false; "isSignal": true; }; }, {}, ["projectedTemplate"], never, true, never>;
49
+ }
50
+
51
+ /**
52
+ * On a phone, hides the host when the device is not in the required orientation.
53
+ *
54
+ * ```html
55
+ * <div axOrientationLock="landscape" [message]="copy" [template]="warning"></div>
56
+ * ```
57
+ */
58
+ declare class AXOrientationLockDirective {
59
+ /** Orientation that keeps the page visible. */
60
+ readonly orientation: _angular_core.InputSignal<AXScreenOrientation>;
61
+ /**
62
+ * Limits the guard to phones. Set to false to apply it on every device.
63
+ *
64
+ * @defaultValue true
65
+ */
66
+ readonly phonesOnly: _angular_core.InputSignalWithTransform<boolean, unknown>;
67
+ /** Replaces any part of the default translated warning. */
68
+ readonly message: _angular_core.InputSignal<AXViewportGuardMessage>;
69
+ /** Custom warning. `let-message` receives the resolved copy. */
70
+ readonly template: _angular_core.InputSignal<TemplateRef<AXViewportGuardTemplateContext>>;
71
+ private readonly presenter;
72
+ private readonly projectedTemplate;
73
+ constructor();
74
+ private request;
75
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXOrientationLockDirective, never>;
76
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXOrientationLockDirective, "[axOrientationLock]", ["axOrientationLock"], { "orientation": { "alias": "axOrientationLock"; "required": true; "isSignal": true; }; "phonesOnly": { "alias": "phonesOnly"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "template": { "alias": "template"; "required": false; "isSignal": true; }; }, {}, ["projectedTemplate"], never, true, never>;
77
+ }
78
+
79
+ /**
80
+ * Types an `ng-template` whose `let-message` is the resolved guard copy.
81
+ *
82
+ * ```html
83
+ * <ng-template #warning axViewportGuardTemplate let-message>
84
+ * <h2>{{ message.title }}</h2>
85
+ * <p>{{ message.message }}</p>
86
+ * </ng-template>
87
+ *
88
+ * <div axMinViewport="1024" [template]="warning"></div>
89
+ * ```
90
+ */
91
+ declare class AXViewportGuardTemplateDirective {
92
+ readonly template: TemplateRef<any>;
93
+ static ngTemplateContextGuard(_directive: AXViewportGuardTemplateDirective, _context: unknown): _context is AXViewportGuardTemplateContext;
94
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXViewportGuardTemplateDirective, never>;
95
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXViewportGuardTemplateDirective, "ng-template[axViewportGuardTemplate]", never, {}, {}, never, never, true, never>;
96
+ }
97
+
98
+ export { AXMinViewportDirective, AXOrientationLockDirective, AXViewportGuardTemplateDirective };
99
+ export type { AXScreenOrientation, AXViewportGuardMessage, AXViewportGuardTemplateContext, AXViewportGuardTemplateData };