@acorex/cdk 22.1.0-next.30 → 22.1.0-next.32
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.
- package/fesm2022/acorex-cdk-accordion.mjs +19 -19
- package/fesm2022/acorex-cdk-carousel.mjs +25 -7
- package/fesm2022/acorex-cdk-carousel.mjs.map +1 -1
- package/fesm2022/acorex-cdk-clipboard.mjs +6 -6
- package/fesm2022/acorex-cdk-common.mjs +169 -93
- package/fesm2022/acorex-cdk-common.mjs.map +1 -1
- package/fesm2022/acorex-cdk-dom.mjs +3 -3
- package/fesm2022/acorex-cdk-drag-drop.mjs +210 -68
- package/fesm2022/acorex-cdk-drag-drop.mjs.map +1 -1
- package/fesm2022/acorex-cdk-drawer.mjs +10 -10
- package/fesm2022/acorex-cdk-focus-trap.mjs +3 -3
- package/fesm2022/acorex-cdk-full-screen.mjs +26 -147
- package/fesm2022/acorex-cdk-full-screen.mjs.map +1 -1
- package/fesm2022/acorex-cdk-gesture.mjs +202 -0
- package/fesm2022/acorex-cdk-gesture.mjs.map +1 -0
- package/fesm2022/acorex-cdk-highlight.mjs +108 -0
- package/fesm2022/acorex-cdk-highlight.mjs.map +1 -0
- package/fesm2022/acorex-cdk-horizontal-scroll.mjs +150 -125
- package/fesm2022/acorex-cdk-horizontal-scroll.mjs.map +1 -1
- package/fesm2022/acorex-cdk-input-mask.mjs +3 -3
- package/fesm2022/acorex-cdk-list-navigation.mjs +10 -10
- package/fesm2022/acorex-cdk-outline.mjs +277 -74
- package/fesm2022/acorex-cdk-outline.mjs.map +1 -1
- package/fesm2022/acorex-cdk-overlay.mjs +192 -18
- package/fesm2022/acorex-cdk-overlay.mjs.map +1 -1
- package/fesm2022/acorex-cdk-pan-view.mjs +3 -3
- package/fesm2022/acorex-cdk-resizable.mjs +3 -3
- package/fesm2022/acorex-cdk-selection.mjs +10 -10
- package/fesm2022/acorex-cdk-shimmer.mjs +220 -0
- package/fesm2022/acorex-cdk-shimmer.mjs.map +1 -0
- package/fesm2022/acorex-cdk-sliding-item.mjs +72 -62
- package/fesm2022/acorex-cdk-sliding-item.mjs.map +1 -1
- package/fesm2022/acorex-cdk-sticky.mjs +3 -3
- package/fesm2022/acorex-cdk-uploader.mjs +9 -9
- package/fesm2022/acorex-cdk-virtual-scroll.mjs +10 -10
- package/fesm2022/acorex-cdk-z-index.mjs +3 -3
- package/gesture/README.md +3 -0
- package/horizontal-scroll/README.md +1 -1
- package/package.json +16 -7
- package/shimmer/README.md +11 -0
- package/sliding-item/README.md +4 -2
- package/types/acorex-cdk-carousel.d.ts +2 -0
- package/types/acorex-cdk-clipboard.d.ts +1 -1
- package/types/acorex-cdk-common.d.ts +36 -19
- package/types/acorex-cdk-drag-drop.d.ts +31 -4
- package/types/acorex-cdk-full-screen.d.ts +18 -43
- package/types/acorex-cdk-gesture.d.ts +132 -0
- package/types/acorex-cdk-highlight.d.ts +54 -0
- package/types/acorex-cdk-horizontal-scroll.d.ts +39 -28
- package/types/acorex-cdk-outline.d.ts +20 -0
- package/types/acorex-cdk-overlay.d.ts +47 -4
- package/types/acorex-cdk-shimmer.d.ts +68 -0
- package/types/acorex-cdk-sliding-item.d.ts +22 -4
- package/types/acorex-cdk-uploader.d.ts +1 -1
- package/fesm2022/acorex-cdk-double-click.mjs +0 -178
- package/fesm2022/acorex-cdk-double-click.mjs.map +0 -1
- package/types/acorex-cdk-double-click.d.ts +0 -66
|
@@ -1,66 +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 and
|
|
6
|
-
*
|
|
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 and
|
|
24
|
+
* Disables wheel-to-horizontal conversion and pan scrolling when true.
|
|
20
25
|
*/
|
|
21
26
|
disabled: _angular_core.InputSignal<boolean>;
|
|
22
27
|
/**
|
|
23
|
-
* Horizontal
|
|
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
|
|
40
|
+
private targetScrollPosition;
|
|
29
41
|
private scrollPosition;
|
|
30
42
|
private lastFrameTime;
|
|
31
|
-
private
|
|
32
|
-
private
|
|
33
|
-
private
|
|
34
|
-
private pointerStartScrollLeft;
|
|
35
|
-
private pointerAxis;
|
|
36
|
-
private lastPointerX;
|
|
37
|
-
private lastPointerTime;
|
|
38
|
-
private pointerVelocityX;
|
|
43
|
+
private isPanning;
|
|
44
|
+
private ignorePan;
|
|
45
|
+
private panStartScrollPosition;
|
|
39
46
|
private suppressClickListener;
|
|
40
47
|
private suppressClickTimer;
|
|
41
|
-
private
|
|
48
|
+
private _isRtl;
|
|
42
49
|
private readonly interactiveSelector;
|
|
43
50
|
private readonly wheelListener;
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
private readonly pointerUpListener;
|
|
51
|
+
protected touchAction(): string | null;
|
|
52
|
+
constructor();
|
|
47
53
|
ngOnDestroy(): void;
|
|
48
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;
|
|
49
63
|
private handleWheel;
|
|
50
|
-
private
|
|
51
|
-
private
|
|
52
|
-
private
|
|
53
|
-
private
|
|
64
|
+
private handlePanStart;
|
|
65
|
+
private handlePanMove;
|
|
66
|
+
private handlePanEnd;
|
|
67
|
+
private clearPanStyles;
|
|
54
68
|
private suppressClick;
|
|
55
69
|
private clearClickSuppression;
|
|
56
70
|
private syncScrollState;
|
|
57
71
|
private startAnimation;
|
|
58
|
-
private applyScrollPosition;
|
|
59
72
|
private stopAnimation;
|
|
60
|
-
private canScrollHorizontally;
|
|
61
|
-
private getMaxScrollLeft;
|
|
62
73
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXHorizontalScrollDirective, never>;
|
|
63
|
-
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,
|
|
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: {}; }]>;
|
|
64
75
|
}
|
|
65
76
|
|
|
66
77
|
export { AXHorizontalScrollDirective };
|
|
@@ -27,6 +27,8 @@ declare class AXOutlineContainerDirective implements OnDestroy, AfterViewInit {
|
|
|
27
27
|
scrollableElementId: _angular_core.InputSignal<string>;
|
|
28
28
|
private scrollTop;
|
|
29
29
|
private outlineItems;
|
|
30
|
+
private lastScrollSpyIndex;
|
|
31
|
+
private heldActiveIndex;
|
|
30
32
|
private scrollableElement;
|
|
31
33
|
private mutationSubject;
|
|
32
34
|
private readonly MUTATION_DEBOUNCE_TIME;
|
|
@@ -34,7 +36,25 @@ declare class AXOutlineContainerDirective implements OnDestroy, AfterViewInit {
|
|
|
34
36
|
outlineItems$: BehaviorSubject<outlineItemType[]>;
|
|
35
37
|
ngOnDestroy(): void;
|
|
36
38
|
ngAfterViewInit(): void;
|
|
39
|
+
scrollToItem(id: string): void;
|
|
40
|
+
private resolveScrollEventTarget;
|
|
41
|
+
private readScrollTop;
|
|
42
|
+
private handleInContentOutlineLinkClick;
|
|
43
|
+
private scrollToItemFromHash;
|
|
44
|
+
private releaseHeldActiveIndex;
|
|
45
|
+
private stopOngoingSmoothScroll;
|
|
46
|
+
private getOutlineIdFromHref;
|
|
47
|
+
private syncLocationHash;
|
|
37
48
|
private scrollChanged;
|
|
49
|
+
private bindUserScrollIntent;
|
|
50
|
+
private resolveActiveIndex;
|
|
51
|
+
/**
|
|
52
|
+
* Maps scroll position to the active outline item. Sections with little content often
|
|
53
|
+
* have overlapping activation thresholds; each section gets a minimum scroll slot so
|
|
54
|
+
* short blocks are not skipped while scrolling.
|
|
55
|
+
*/
|
|
56
|
+
private resolveByScrollSlots;
|
|
57
|
+
private applyActiveIndex;
|
|
38
58
|
private setOutlineItems;
|
|
39
59
|
refreshOutlineItems(): void;
|
|
40
60
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXOutlineContainerDirective, never>;
|
|
@@ -4,6 +4,40 @@ import { AXZToken } from '@acorex/core/z-index';
|
|
|
4
4
|
import * as i0 from '@angular/core';
|
|
5
5
|
import { ElementRef, EmbeddedViewRef, ComponentRef } from '@angular/core';
|
|
6
6
|
|
|
7
|
+
declare const AX_OVERLAY_DEFAULT_ENTER_ANIMATION: string[];
|
|
8
|
+
declare const AX_OVERLAY_DEFAULT_LEAVE_ANIMATION: string[];
|
|
9
|
+
type AXOverlayAnimation = boolean | string[] | {
|
|
10
|
+
enter?: string[];
|
|
11
|
+
leave?: string[];
|
|
12
|
+
};
|
|
13
|
+
interface AXOverlayResolvedAnimation {
|
|
14
|
+
enter: string[];
|
|
15
|
+
leave: string[];
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Resolves overlay animation classes.
|
|
19
|
+
* - omitted: no animation (opt-in at the overlay layer)
|
|
20
|
+
* - `true`: default fade in/out
|
|
21
|
+
* - `false` or `[]`: no animation
|
|
22
|
+
* - `string[]`: custom enter classes only
|
|
23
|
+
* - `{ enter, leave }`: omitted keys fall back to the default fade classes
|
|
24
|
+
*/
|
|
25
|
+
declare function resolveOverlayAnimation(animation?: AXOverlayAnimation): AXOverlayResolvedAnimation;
|
|
26
|
+
/** Prefers the content/pane so transforms are not applied to the full-screen container. */
|
|
27
|
+
declare function getOverlayAnimationTarget(container: HTMLElement): HTMLElement;
|
|
28
|
+
declare function applyOverlayAnimationClasses(element: HTMLElement, classes: string[]): void;
|
|
29
|
+
declare function removeOverlayAnimationClasses(element: HTMLElement, classes: string[]): void;
|
|
30
|
+
declare function prefersReducedMotion(documentRef: Document): boolean;
|
|
31
|
+
declare function parseCssTimeList(value: string): number[];
|
|
32
|
+
/** Maps theme duration utility classes to milliseconds (see tailwind-base). */
|
|
33
|
+
declare function getAnimationDurationFromClasses(classes: string[]): number;
|
|
34
|
+
declare function getOverlayAnimationTimeout(element: HTMLElement, documentRef: Document, fallbackMs?: number): number;
|
|
35
|
+
declare function playOverlayLeaveAnimation(element: HTMLElement, enter: string[], leave: string[], documentRef: Document): Promise<void>;
|
|
36
|
+
declare function waitForOverlayAnimationEnd(element: HTMLElement, documentRef: Document, options?: {
|
|
37
|
+
fallbackMs?: number;
|
|
38
|
+
animationName?: string;
|
|
39
|
+
}): Promise<void>;
|
|
40
|
+
|
|
7
41
|
type AXOverlayVisualContextScope = 'full' | 'theme';
|
|
8
42
|
interface AXOverlayVisualContext {
|
|
9
43
|
appearance?: string;
|
|
@@ -29,7 +63,7 @@ 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
|
|
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;
|
|
@@ -62,12 +96,20 @@ interface AXOverlayOptions extends AXComponentOptions {
|
|
|
62
96
|
anchorOptions?: AXOverlayAnchorOptions;
|
|
63
97
|
/** Custom CSS class for the overlay panel */
|
|
64
98
|
panelClass?: string | string[];
|
|
99
|
+
/**
|
|
100
|
+
* Enter/leave animation applied to overlay content (`.ax-overlay-content` or `.ax-overlay-pane`),
|
|
101
|
+
* not the full-screen container. Omitted: no animation. `true`: default fade in/out.
|
|
102
|
+
* `false` or `[]`: disabled. A class array is enter-only. `{ enter, leave }` configures both.
|
|
103
|
+
*/
|
|
104
|
+
animation?: AXOverlayAnimation;
|
|
65
105
|
/** Whether to close when clicking outside */
|
|
66
106
|
closeOnOutsideClick?: boolean;
|
|
67
107
|
/** Whether to close when pressing Escape */
|
|
68
108
|
closeOnEscape?: boolean;
|
|
69
109
|
/** Width of the overlay container (e.g., 'auto', '200px', '100%') */
|
|
70
110
|
width?: string;
|
|
111
|
+
/** Dispose this overlay when Angular starts a navigation. Default: true. */
|
|
112
|
+
closeOnNavigation?: boolean;
|
|
71
113
|
/** Callback when the overlay is disposed (e.g., due to scroll) */
|
|
72
114
|
onDispose?: () => void;
|
|
73
115
|
/** Whether to use centered container (default: true). Set to false for positioned overlays like toasts */
|
|
@@ -127,6 +169,7 @@ declare class AXOverlayService {
|
|
|
127
169
|
private document;
|
|
128
170
|
private zIndexService;
|
|
129
171
|
private _platform;
|
|
172
|
+
private router;
|
|
130
173
|
/**
|
|
131
174
|
* Creates an overlay with optional anchor-based positioning.
|
|
132
175
|
* @param content - Component or template to display
|
|
@@ -160,8 +203,8 @@ declare class AXOverlayService {
|
|
|
160
203
|
private positionOverlay;
|
|
161
204
|
private applyOverlayVisualContext;
|
|
162
205
|
static ɵfac: i0.ɵɵFactoryDeclaration<AXOverlayService, never>;
|
|
163
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<
|
|
206
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<any>;
|
|
164
207
|
}
|
|
165
208
|
|
|
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 };
|
|
209
|
+
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 };
|
|
210
|
+
export type { AXOverlayAnchorOptions, AXOverlayAnimation, AXOverlayOptions, AXOverlayRef, AXOverlayResolvedAnimation, AXOverlayVisualContext, AXOverlayVisualContextScope };
|
|
@@ -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 };
|
|
@@ -1,18 +1,36 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
+
import * as i1 from '@acorex/cdk/gesture';
|
|
2
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Enables horizontal sliding on the host via the hosted AXGestureDirective pan events.
|
|
6
|
+
*
|
|
7
|
+
* Do not put `axGesture` on the same element; this directive already hosts it.
|
|
8
|
+
*/
|
|
3
9
|
declare class AXSlidingItemDirective {
|
|
4
10
|
#private;
|
|
5
|
-
private hostElement;
|
|
6
|
-
private
|
|
7
|
-
private
|
|
11
|
+
private readonly hostElement;
|
|
12
|
+
private readonly gesture;
|
|
13
|
+
private readonly destroyRef;
|
|
8
14
|
currentX: _angular_core.WritableSignal<number>;
|
|
9
15
|
stopPoint: _angular_core.WritableSignal<number>;
|
|
10
16
|
disableSlidingRight: _angular_core.WritableSignal<boolean>;
|
|
11
17
|
disableSlidingLeft: _angular_core.WritableSignal<boolean>;
|
|
18
|
+
protected readonly cursor: _angular_core.WritableSignal<string>;
|
|
19
|
+
private originX;
|
|
20
|
+
constructor();
|
|
21
|
+
private handlePanStart;
|
|
22
|
+
private handlePanMove;
|
|
23
|
+
private handlePanEnd;
|
|
12
24
|
private dismiss;
|
|
25
|
+
/**
|
|
26
|
+
* Sets the position of the sliding element.
|
|
27
|
+
*
|
|
28
|
+
* @param pos - The horizontal position in pixels to set the element to
|
|
29
|
+
* @returns void - No return value. The element's transform is updated to the specified position.
|
|
30
|
+
*/
|
|
13
31
|
setPosition(pos: number): void;
|
|
14
32
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXSlidingItemDirective, never>;
|
|
15
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXSlidingItemDirective, "[axSlidingItem]", never, {}, {}, never, never, true,
|
|
33
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXSlidingItemDirective, "[axSlidingItem]", never, {}, {}, never, never, true, [{ directive: typeof i1.AXGestureDirective; inputs: {}; outputs: {}; }]>;
|
|
16
34
|
}
|
|
17
35
|
|
|
18
36
|
export { AXSlidingItemDirective };
|
|
@@ -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<
|
|
384
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
385
385
|
}
|
|
386
386
|
|
|
387
387
|
export { AXUploadRequest, AXUploaderBrowseDirective, AXUploaderService, AXUploaderZoneDirective };
|
|
@@ -1,178 +0,0 @@
|
|
|
1
|
-
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, ElementRef, input, output, Directive } from '@angular/core';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Directive to detect single-click and double-click events on the host element.
|
|
6
|
-
* Supports both desktop (click-based detection) and mobile (touchend) events.
|
|
7
|
-
* Prevents native click event propagation and emits separate single-click and double-click events.
|
|
8
|
-
* Can be disabled to allow native DOM behavior (click and dblclick events).
|
|
9
|
-
*
|
|
10
|
-
* Usage:
|
|
11
|
-
* <button
|
|
12
|
-
* axDoubleClick
|
|
13
|
-
* [duration]="300"
|
|
14
|
-
* [disabled]="false"
|
|
15
|
-
* (onClick)="onSingleClick($event)"
|
|
16
|
-
* (onDblClick)="onDoubleClick($event)"
|
|
17
|
-
* >Click me</button>
|
|
18
|
-
*/
|
|
19
|
-
class AXDoubleClickDirective {
|
|
20
|
-
constructor() {
|
|
21
|
-
this.elementRef = inject(ElementRef);
|
|
22
|
-
/**
|
|
23
|
-
* Input to configure the duration in milliseconds for detecting double-clicks.
|
|
24
|
-
* Defaults to 250ms.
|
|
25
|
-
* Two clicks/taps within this duration are considered a double-click.
|
|
26
|
-
*/
|
|
27
|
-
this.duration = input(250, /* @ts-ignore */
|
|
28
|
-
...(ngDevMode ? [{ debugName: "duration" }] : /* istanbul ignore next */ []));
|
|
29
|
-
/**
|
|
30
|
-
* Input to disable the directive's custom click handling.
|
|
31
|
-
* When true, native click and dblclick events will fire normally (DOM default behavior).
|
|
32
|
-
* When false (default), the directive prevents default and emits custom single/double-click events.
|
|
33
|
-
* Defaults to false.
|
|
34
|
-
*/
|
|
35
|
-
this.disabled = input(false, /* @ts-ignore */
|
|
36
|
-
...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
37
|
-
/**
|
|
38
|
-
* Output event emitted when a single-click is detected.
|
|
39
|
-
* Emits after the configured duration milliseconds if no second click occurs.
|
|
40
|
-
* Emits the MouseEvent.
|
|
41
|
-
*/
|
|
42
|
-
this.onClick = output();
|
|
43
|
-
/**
|
|
44
|
-
* Output event emitted when a double-click is detected.
|
|
45
|
-
* Emits when two clicks occur within the configured duration milliseconds.
|
|
46
|
-
* Emits the Event (MouseEvent for desktop, TouchEvent for mobile).
|
|
47
|
-
*/
|
|
48
|
-
this.onDblClick = output();
|
|
49
|
-
this.lastClick = 0;
|
|
50
|
-
this.lastTap = 0;
|
|
51
|
-
this.clickTimeout = null;
|
|
52
|
-
this.pendingClickEvent = null;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Handles click events and detects both single-clicks and double-clicks.
|
|
56
|
-
* Prevents native click propagation and emits appropriate events.
|
|
57
|
-
* When disabled is true, emits click immediately, still detects double-clicks, and allows native DOM behavior (no preventDefault).
|
|
58
|
-
*/
|
|
59
|
-
handleClick(event) {
|
|
60
|
-
const duration = this.duration();
|
|
61
|
-
const currentTime = new Date().getTime();
|
|
62
|
-
const clickGap = currentTime - this.lastClick;
|
|
63
|
-
// If disabled, emit click immediately and still track for double-click, but don't prevent default
|
|
64
|
-
if (this.disabled()) {
|
|
65
|
-
// Emit single click immediately
|
|
66
|
-
this.onClick.emit(event);
|
|
67
|
-
// Still track for double-click detection
|
|
68
|
-
if (clickGap > 0 && clickGap < duration) {
|
|
69
|
-
// Double-click detected - emit double-click
|
|
70
|
-
if (this.clickTimeout) {
|
|
71
|
-
clearTimeout(this.clickTimeout);
|
|
72
|
-
this.clickTimeout = null;
|
|
73
|
-
}
|
|
74
|
-
if (this.pendingClickEvent) {
|
|
75
|
-
this.pendingClickEvent = null;
|
|
76
|
-
}
|
|
77
|
-
this.onDblClick.emit(event);
|
|
78
|
-
this.lastClick = 0;
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
// First click - store it and wait to see if a second click comes
|
|
82
|
-
this.lastClick = currentTime;
|
|
83
|
-
this.pendingClickEvent = event;
|
|
84
|
-
if (this.clickTimeout) {
|
|
85
|
-
clearTimeout(this.clickTimeout);
|
|
86
|
-
}
|
|
87
|
-
// Set timeout to emit double-click if second click occurs within duration
|
|
88
|
-
// Note: We already emitted single-click, so we just track for double-click here
|
|
89
|
-
this.clickTimeout = setTimeout(() => {
|
|
90
|
-
// No double-click detected within duration, reset state
|
|
91
|
-
this.pendingClickEvent = null;
|
|
92
|
-
this.lastClick = 0;
|
|
93
|
-
this.clickTimeout = null;
|
|
94
|
-
}, duration);
|
|
95
|
-
}
|
|
96
|
-
// Don't prevent default - allow native click and dblclick to fire
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
// When enabled, prevent the native click event from propagating
|
|
100
|
-
event.preventDefault();
|
|
101
|
-
event.stopPropagation();
|
|
102
|
-
event.stopImmediatePropagation();
|
|
103
|
-
if (clickGap > 0 && clickGap < duration) {
|
|
104
|
-
// Double-click detected - clear pending single click and emit double-click
|
|
105
|
-
if (this.clickTimeout) {
|
|
106
|
-
clearTimeout(this.clickTimeout);
|
|
107
|
-
this.clickTimeout = null;
|
|
108
|
-
}
|
|
109
|
-
if (this.pendingClickEvent) {
|
|
110
|
-
this.pendingClickEvent = null;
|
|
111
|
-
}
|
|
112
|
-
this.onDblClick.emit(event);
|
|
113
|
-
this.lastClick = 0;
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
// First click - store it and wait to see if a second click comes
|
|
117
|
-
this.lastClick = currentTime;
|
|
118
|
-
this.pendingClickEvent = event;
|
|
119
|
-
if (this.clickTimeout) {
|
|
120
|
-
clearTimeout(this.clickTimeout);
|
|
121
|
-
}
|
|
122
|
-
// Set timeout to emit single-click if no second click occurs
|
|
123
|
-
this.clickTimeout = setTimeout(() => {
|
|
124
|
-
// No double-click detected, emit single-click
|
|
125
|
-
if (this.pendingClickEvent) {
|
|
126
|
-
this.onClick.emit(this.pendingClickEvent);
|
|
127
|
-
this.pendingClickEvent = null;
|
|
128
|
-
}
|
|
129
|
-
this.lastClick = 0;
|
|
130
|
-
this.clickTimeout = null;
|
|
131
|
-
}, duration);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Handles touchend events (mobile) to detect double-tap.
|
|
136
|
-
* When disabled is true, allows native touch behavior.
|
|
137
|
-
*/
|
|
138
|
-
onTouchEnd(event) {
|
|
139
|
-
// If disabled, let native events fire normally
|
|
140
|
-
if (this.disabled()) {
|
|
141
|
-
return;
|
|
142
|
-
}
|
|
143
|
-
const duration = this.duration();
|
|
144
|
-
const currentTime = new Date().getTime();
|
|
145
|
-
const tapGap = currentTime - this.lastTap;
|
|
146
|
-
if (tapGap > 0 && tapGap < duration) {
|
|
147
|
-
// Detected a double-tap
|
|
148
|
-
this.onDblClick.emit(event);
|
|
149
|
-
event.preventDefault(); // Prevent further default actions
|
|
150
|
-
}
|
|
151
|
-
this.lastTap = currentTime;
|
|
152
|
-
}
|
|
153
|
-
ngOnDestroy() {
|
|
154
|
-
if (this.clickTimeout) {
|
|
155
|
-
clearTimeout(this.clickTimeout);
|
|
156
|
-
this.clickTimeout = null;
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXDoubleClickDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
160
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.8", type: AXDoubleClickDirective, isStandalone: true, selector: "[axDoubleClick]", inputs: { duration: { classPropertyName: "duration", publicName: "duration", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onClick: "onClick", onDblClick: "onDblClick" }, host: { listeners: { "click": "handleClick($event)", "touchend": "onTouchEnd($event)" } }, ngImport: i0 }); }
|
|
161
|
-
}
|
|
162
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXDoubleClickDirective, decorators: [{
|
|
163
|
-
type: Directive,
|
|
164
|
-
args: [{
|
|
165
|
-
selector: '[axDoubleClick]',
|
|
166
|
-
host: {
|
|
167
|
-
'(click)': 'handleClick($event)',
|
|
168
|
-
'(touchend)': 'onTouchEnd($event)',
|
|
169
|
-
},
|
|
170
|
-
}]
|
|
171
|
-
}], propDecorators: { duration: [{ type: i0.Input, args: [{ isSignal: true, alias: "duration", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], onClick: [{ type: i0.Output, args: ["onClick"] }], onDblClick: [{ type: i0.Output, args: ["onDblClick"] }] } });
|
|
172
|
-
|
|
173
|
-
/**
|
|
174
|
-
* Generated bundle index. Do not edit.
|
|
175
|
-
*/
|
|
176
|
-
|
|
177
|
-
export { AXDoubleClickDirective };
|
|
178
|
-
//# sourceMappingURL=acorex-cdk-double-click.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-cdk-double-click.mjs","sources":["../../../../packages/cdk/double-click/src/lib/double-click.directive.ts","../../../../packages/cdk/double-click/src/acorex-cdk-double-click.ts"],"sourcesContent":["import { Directive, ElementRef, inject, input, OnDestroy, output } from '@angular/core';\n\n/**\n * Directive to detect single-click and double-click events on the host element.\n * Supports both desktop (click-based detection) and mobile (touchend) events.\n * Prevents native click event propagation and emits separate single-click and double-click events.\n * Can be disabled to allow native DOM behavior (click and dblclick events).\n *\n * Usage:\n * <button\n * axDoubleClick\n * [duration]=\"300\"\n * [disabled]=\"false\"\n * (onClick)=\"onSingleClick($event)\"\n * (onDblClick)=\"onDoubleClick($event)\"\n * >Click me</button>\n */\n@Directive({\n selector: '[axDoubleClick]',\n host: {\n '(click)': 'handleClick($event)',\n '(touchend)': 'onTouchEnd($event)',\n },\n})\nexport class AXDoubleClickDirective implements OnDestroy {\n private elementRef = inject(ElementRef);\n\n /**\n * Input to configure the duration in milliseconds for detecting double-clicks.\n * Defaults to 250ms.\n * Two clicks/taps within this duration are considered a double-click.\n */\n public duration = input<number>(250);\n\n /**\n * Input to disable the directive's custom click handling.\n * When true, native click and dblclick events will fire normally (DOM default behavior).\n * When false (default), the directive prevents default and emits custom single/double-click events.\n * Defaults to false.\n */\n public disabled = input<boolean>(false);\n\n /**\n * Output event emitted when a single-click is detected.\n * Emits after the configured duration milliseconds if no second click occurs.\n * Emits the MouseEvent.\n */\n public onClick = output<MouseEvent>();\n\n /**\n * Output event emitted when a double-click is detected.\n * Emits when two clicks occur within the configured duration milliseconds.\n * Emits the Event (MouseEvent for desktop, TouchEvent for mobile).\n */\n public onDblClick = output<Event>();\n\n private lastClick = 0;\n private lastTap = 0;\n private clickTimeout: ReturnType<typeof setTimeout> | null = null;\n private pendingClickEvent: MouseEvent | null = null;\n\n /**\n * Handles click events and detects both single-clicks and double-clicks.\n * Prevents native click propagation and emits appropriate events.\n * When disabled is true, emits click immediately, still detects double-clicks, and allows native DOM behavior (no preventDefault).\n */\n handleClick(event: MouseEvent): void {\n const duration = this.duration();\n const currentTime = new Date().getTime();\n const clickGap = currentTime - this.lastClick;\n\n // If disabled, emit click immediately and still track for double-click, but don't prevent default\n if (this.disabled()) {\n // Emit single click immediately\n this.onClick.emit(event);\n\n // Still track for double-click detection\n if (clickGap > 0 && clickGap < duration) {\n // Double-click detected - emit double-click\n if (this.clickTimeout) {\n clearTimeout(this.clickTimeout);\n this.clickTimeout = null;\n }\n if (this.pendingClickEvent) {\n this.pendingClickEvent = null;\n }\n this.onDblClick.emit(event);\n this.lastClick = 0;\n } else {\n // First click - store it and wait to see if a second click comes\n this.lastClick = currentTime;\n this.pendingClickEvent = event;\n\n if (this.clickTimeout) {\n clearTimeout(this.clickTimeout);\n }\n\n // Set timeout to emit double-click if second click occurs within duration\n // Note: We already emitted single-click, so we just track for double-click here\n this.clickTimeout = setTimeout(() => {\n // No double-click detected within duration, reset state\n this.pendingClickEvent = null;\n this.lastClick = 0;\n this.clickTimeout = null;\n }, duration);\n }\n\n // Don't prevent default - allow native click and dblclick to fire\n return;\n }\n\n // When enabled, prevent the native click event from propagating\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n\n if (clickGap > 0 && clickGap < duration) {\n // Double-click detected - clear pending single click and emit double-click\n if (this.clickTimeout) {\n clearTimeout(this.clickTimeout);\n this.clickTimeout = null;\n }\n if (this.pendingClickEvent) {\n this.pendingClickEvent = null;\n }\n this.onDblClick.emit(event);\n this.lastClick = 0;\n } else {\n // First click - store it and wait to see if a second click comes\n this.lastClick = currentTime;\n this.pendingClickEvent = event;\n\n if (this.clickTimeout) {\n clearTimeout(this.clickTimeout);\n }\n\n // Set timeout to emit single-click if no second click occurs\n this.clickTimeout = setTimeout(() => {\n // No double-click detected, emit single-click\n if (this.pendingClickEvent) {\n this.onClick.emit(this.pendingClickEvent);\n this.pendingClickEvent = null;\n }\n this.lastClick = 0;\n this.clickTimeout = null;\n }, duration);\n }\n }\n\n /**\n * Handles touchend events (mobile) to detect double-tap.\n * When disabled is true, allows native touch behavior.\n */\n onTouchEnd(event: TouchEvent): void {\n // If disabled, let native events fire normally\n if (this.disabled()) {\n return;\n }\n\n const duration = this.duration();\n const currentTime = new Date().getTime();\n const tapGap = currentTime - this.lastTap;\n\n if (tapGap > 0 && tapGap < duration) {\n // Detected a double-tap\n this.onDblClick.emit(event);\n event.preventDefault(); // Prevent further default actions\n }\n this.lastTap = currentTime;\n }\n\n ngOnDestroy(): void {\n if (this.clickTimeout) {\n clearTimeout(this.clickTimeout);\n this.clickTimeout = null;\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { OnDestroy } from '@angular/core';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Directive to detect single-click and double-click events on the host element.
|
|
6
|
-
* Supports both desktop (click-based detection) and mobile (touchend) events.
|
|
7
|
-
* Prevents native click event propagation and emits separate single-click and double-click events.
|
|
8
|
-
* Can be disabled to allow native DOM behavior (click and dblclick events).
|
|
9
|
-
*
|
|
10
|
-
* Usage:
|
|
11
|
-
* <button
|
|
12
|
-
* axDoubleClick
|
|
13
|
-
* [duration]="300"
|
|
14
|
-
* [disabled]="false"
|
|
15
|
-
* (onClick)="onSingleClick($event)"
|
|
16
|
-
* (onDblClick)="onDoubleClick($event)"
|
|
17
|
-
* >Click me</button>
|
|
18
|
-
*/
|
|
19
|
-
declare class AXDoubleClickDirective implements OnDestroy {
|
|
20
|
-
private elementRef;
|
|
21
|
-
/**
|
|
22
|
-
* Input to configure the duration in milliseconds for detecting double-clicks.
|
|
23
|
-
* Defaults to 250ms.
|
|
24
|
-
* Two clicks/taps within this duration are considered a double-click.
|
|
25
|
-
*/
|
|
26
|
-
duration: _angular_core.InputSignal<number>;
|
|
27
|
-
/**
|
|
28
|
-
* Input to disable the directive's custom click handling.
|
|
29
|
-
* When true, native click and dblclick events will fire normally (DOM default behavior).
|
|
30
|
-
* When false (default), the directive prevents default and emits custom single/double-click events.
|
|
31
|
-
* Defaults to false.
|
|
32
|
-
*/
|
|
33
|
-
disabled: _angular_core.InputSignal<boolean>;
|
|
34
|
-
/**
|
|
35
|
-
* Output event emitted when a single-click is detected.
|
|
36
|
-
* Emits after the configured duration milliseconds if no second click occurs.
|
|
37
|
-
* Emits the MouseEvent.
|
|
38
|
-
*/
|
|
39
|
-
onClick: _angular_core.OutputEmitterRef<MouseEvent>;
|
|
40
|
-
/**
|
|
41
|
-
* Output event emitted when a double-click is detected.
|
|
42
|
-
* Emits when two clicks occur within the configured duration milliseconds.
|
|
43
|
-
* Emits the Event (MouseEvent for desktop, TouchEvent for mobile).
|
|
44
|
-
*/
|
|
45
|
-
onDblClick: _angular_core.OutputEmitterRef<Event>;
|
|
46
|
-
private lastClick;
|
|
47
|
-
private lastTap;
|
|
48
|
-
private clickTimeout;
|
|
49
|
-
private pendingClickEvent;
|
|
50
|
-
/**
|
|
51
|
-
* Handles click events and detects both single-clicks and double-clicks.
|
|
52
|
-
* Prevents native click propagation and emits appropriate events.
|
|
53
|
-
* When disabled is true, emits click immediately, still detects double-clicks, and allows native DOM behavior (no preventDefault).
|
|
54
|
-
*/
|
|
55
|
-
handleClick(event: MouseEvent): void;
|
|
56
|
-
/**
|
|
57
|
-
* Handles touchend events (mobile) to detect double-tap.
|
|
58
|
-
* When disabled is true, allows native touch behavior.
|
|
59
|
-
*/
|
|
60
|
-
onTouchEnd(event: TouchEvent): void;
|
|
61
|
-
ngOnDestroy(): void;
|
|
62
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXDoubleClickDirective, never>;
|
|
63
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXDoubleClickDirective, "[axDoubleClick]", never, { "duration": { "alias": "duration"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "onClick": "onClick"; "onDblClick": "onDblClick"; }, never, never, true, never>;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
export { AXDoubleClickDirective };
|