@acorex/cdk 21.0.0-next.5 → 21.0.0-next.51
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/accordion/index.d.ts +1 -0
- package/common/index.d.ts +9 -7
- package/drag-drop/index.d.ts +57 -44
- package/drawer/index.d.ts +12 -9
- package/fesm2022/acorex-cdk-accordion.mjs +55 -70
- package/fesm2022/acorex-cdk-accordion.mjs.map +1 -1
- package/fesm2022/acorex-cdk-carousel.mjs +14 -11
- package/fesm2022/acorex-cdk-carousel.mjs.map +1 -1
- package/fesm2022/acorex-cdk-clipboard.mjs +7 -7
- package/fesm2022/acorex-cdk-clipboard.mjs.map +1 -1
- package/fesm2022/acorex-cdk-common.mjs +174 -119
- package/fesm2022/acorex-cdk-common.mjs.map +1 -1
- package/fesm2022/acorex-cdk-dom.mjs +4 -4
- package/fesm2022/acorex-cdk-dom.mjs.map +1 -1
- package/fesm2022/acorex-cdk-drag-drop.mjs +279 -88
- package/fesm2022/acorex-cdk-drag-drop.mjs.map +1 -1
- package/fesm2022/acorex-cdk-drawer.mjs +44 -33
- package/fesm2022/acorex-cdk-drawer.mjs.map +1 -1
- package/fesm2022/acorex-cdk-focus-trap.mjs +3 -3
- package/fesm2022/acorex-cdk-focus-trap.mjs.map +1 -1
- package/fesm2022/acorex-cdk-input-mask.mjs +68 -63
- package/fesm2022/acorex-cdk-input-mask.mjs.map +1 -1
- package/fesm2022/acorex-cdk-list-navigation.mjs +41 -23
- package/fesm2022/acorex-cdk-list-navigation.mjs.map +1 -1
- package/fesm2022/acorex-cdk-outline.mjs +8 -8
- package/fesm2022/acorex-cdk-outline.mjs.map +1 -1
- package/fesm2022/acorex-cdk-overlay.mjs +3 -3
- package/fesm2022/acorex-cdk-overlay.mjs.map +1 -1
- package/fesm2022/acorex-cdk-pan-view.mjs +4 -4
- package/fesm2022/acorex-cdk-pan-view.mjs.map +1 -1
- package/fesm2022/acorex-cdk-qrcode.mjs.map +1 -1
- package/fesm2022/acorex-cdk-resizable.mjs +167 -119
- package/fesm2022/acorex-cdk-resizable.mjs.map +1 -1
- package/fesm2022/acorex-cdk-selection.mjs +12 -12
- package/fesm2022/acorex-cdk-selection.mjs.map +1 -1
- package/fesm2022/acorex-cdk-sliding-item.mjs +3 -3
- package/fesm2022/acorex-cdk-sliding-item.mjs.map +1 -1
- package/fesm2022/acorex-cdk-sticky.mjs +3 -3
- package/fesm2022/acorex-cdk-sticky.mjs.map +1 -1
- package/fesm2022/acorex-cdk-uploader.mjs +746 -0
- package/fesm2022/acorex-cdk-uploader.mjs.map +1 -0
- package/fesm2022/acorex-cdk-virtual-scroll.mjs +11 -11
- package/fesm2022/acorex-cdk-virtual-scroll.mjs.map +1 -1
- package/fesm2022/acorex-cdk-wysiwyg.mjs +5 -1
- package/fesm2022/acorex-cdk-wysiwyg.mjs.map +1 -1
- package/fesm2022/acorex-cdk.mjs.map +1 -1
- package/input-mask/index.d.ts +1 -0
- package/list-navigation/index.d.ts +1 -0
- package/package.json +6 -2
- package/resizable/index.d.ts +19 -7
- package/uploader/README.md +3 -0
- package/uploader/index.d.ts +378 -0
- package/wysiwyg/index.d.ts +1 -0
|
@@ -9,10 +9,10 @@ class AXDragHandleDirective {
|
|
|
9
9
|
this.el = inject(ElementRef);
|
|
10
10
|
this.element = signal(this.el.nativeElement, ...(ngDevMode ? [{ debugName: "element" }] : []));
|
|
11
11
|
}
|
|
12
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
13
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.
|
|
12
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXDragHandleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
13
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: AXDragHandleDirective, isStandalone: true, selector: "[axDragHandle]", ngImport: i0 }); }
|
|
14
14
|
}
|
|
15
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXDragHandleDirective, decorators: [{
|
|
16
16
|
type: Directive,
|
|
17
17
|
args: [{
|
|
18
18
|
selector: '[axDragHandle]',
|
|
@@ -38,6 +38,8 @@ class AXDropListDirective extends NXComponent {
|
|
|
38
38
|
this._platformId = inject(PLATFORM_ID);
|
|
39
39
|
this._hostEl = inject(ElementRef);
|
|
40
40
|
// --- Public API: Inputs and Outputs ---
|
|
41
|
+
/** Boolean input matching the directive selector name for conditional application. */
|
|
42
|
+
this.axDropList = input(true, ...(ngDevMode ? [{ debugName: "axDropList", transform: (value) => value === '' || value === true }] : [{ transform: (value) => value === '' || value === true }]));
|
|
41
43
|
/** Whether sorting within this list is disabled. */
|
|
42
44
|
this.sortingDisabled = input(false, ...(ngDevMode ? [{ debugName: "sortingDisabled" }] : []));
|
|
43
45
|
/** The group this drop list belongs to. Dragging is only allowed between lists of the same group. */
|
|
@@ -63,16 +65,24 @@ class AXDropListDirective extends NXComponent {
|
|
|
63
65
|
this._listGap = signal(0, ...(ngDevMode ? [{ debugName: "_listGap" }] : []));
|
|
64
66
|
/** A signal-based alias for the orientation input for internal use. */
|
|
65
67
|
this._orientation = this.dropListOrientation;
|
|
68
|
+
/** DOM placeholder element for inter-list drags */
|
|
69
|
+
this._placeholderElement = null;
|
|
66
70
|
}
|
|
67
71
|
ngOnInit() {
|
|
68
72
|
if (isPlatformBrowser(this._platformId)) {
|
|
69
73
|
this.element.dataset['axDropList'] = 'true';
|
|
70
74
|
this.element.classList.add('ax-drop-list-sorting-transition');
|
|
75
|
+
// Store reference to this directive instance on the element for drag directive access
|
|
76
|
+
this.element['__axContext__'] = this;
|
|
71
77
|
}
|
|
72
78
|
}
|
|
73
79
|
ngAfterContentInit() {
|
|
74
80
|
this._cdr.detectChanges();
|
|
75
81
|
}
|
|
82
|
+
ngOnDestroy() {
|
|
83
|
+
// Clean up placeholder element if directive destroyed during drag
|
|
84
|
+
this._removePlaceholderElement();
|
|
85
|
+
}
|
|
76
86
|
// --- Public Methods (for internal library use) ---
|
|
77
87
|
/** Checks if the given drag item is the one currently active in this list. */
|
|
78
88
|
isDragActiveForThisList(dragItem) {
|
|
@@ -83,7 +93,7 @@ class AXDropListDirective extends NXComponent {
|
|
|
83
93
|
* @param dragItem The item that is being dragged.
|
|
84
94
|
*/
|
|
85
95
|
prepareSort(dragItem) {
|
|
86
|
-
if (this.sortingDisabled() || this._activeDragItem() || dragItem.dragDisabled())
|
|
96
|
+
if (!this.axDropList() || this.sortingDisabled() || this._activeDragItem() || dragItem.dragDisabled())
|
|
87
97
|
return;
|
|
88
98
|
this._activeDragItem.set(dragItem);
|
|
89
99
|
this.element.classList.add('ax-drop-list-sorting-active');
|
|
@@ -100,8 +110,10 @@ class AXDropListDirective extends NXComponent {
|
|
|
100
110
|
* @param dragItem The item entering this list.
|
|
101
111
|
*/
|
|
102
112
|
enter(dragItem) {
|
|
103
|
-
if (this.sortingDisabled() || this.isDragActiveForThisList(dragItem))
|
|
113
|
+
if (!this.axDropList() || this.sortingDisabled() || this.isDragActiveForThisList(dragItem))
|
|
104
114
|
return;
|
|
115
|
+
// Clean up any existing placeholder from previous list
|
|
116
|
+
this._removePlaceholderElement();
|
|
105
117
|
this._activeDragItem.set(dragItem);
|
|
106
118
|
this.element.classList.add('ax-drop-list-sorting-active');
|
|
107
119
|
requestAnimationFrame(() => this._zone.run(() => this._cacheGeometry()));
|
|
@@ -112,7 +124,10 @@ class AXDropListDirective extends NXComponent {
|
|
|
112
124
|
* @param dragItem The item being dragged.
|
|
113
125
|
*/
|
|
114
126
|
sort(event, dragItem) {
|
|
115
|
-
if (!this.
|
|
127
|
+
if (!this.axDropList() ||
|
|
128
|
+
!this.isDragActiveForThisList(dragItem) ||
|
|
129
|
+
this.sortingDisabled() ||
|
|
130
|
+
!this._listInitialRect())
|
|
116
131
|
return;
|
|
117
132
|
const pointerPosition = this._orientation() === 'vertical' ? event.clientY : event.clientX;
|
|
118
133
|
const newPlaceholderIndex = this._calculatePlaceholderIndex(pointerPosition);
|
|
@@ -128,7 +143,7 @@ class AXDropListDirective extends NXComponent {
|
|
|
128
143
|
* @param sourceList The list where the drag originated.
|
|
129
144
|
*/
|
|
130
145
|
finalizeSort(event, droppedItem, sourceList) {
|
|
131
|
-
if (!this.isDragActiveForThisList(droppedItem) || this.sortingDisabled()) {
|
|
146
|
+
if (!this.axDropList() || !this.isDragActiveForThisList(droppedItem) || this.sortingDisabled()) {
|
|
132
147
|
this.resetSortStateAndStyles(sourceList);
|
|
133
148
|
return;
|
|
134
149
|
}
|
|
@@ -262,38 +277,77 @@ class AXDropListDirective extends NXComponent {
|
|
|
262
277
|
}
|
|
263
278
|
return potentialPlaceholderIndex;
|
|
264
279
|
}
|
|
265
|
-
/** Applies
|
|
280
|
+
/** Applies visual shifts - uses placeholder for inter-list, transforms for intra-list. */
|
|
266
281
|
_applyVisualShifts() {
|
|
267
282
|
const activeItem = this._activeDragItem();
|
|
268
283
|
const originalIndex = this._cachedItems().findIndex((d) => d.item === activeItem);
|
|
269
284
|
const isIntraListDrag = originalIndex > -1;
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
draggedItemSize = getItemSpace(this._cachedItems()[originalIndex]);
|
|
277
|
-
}
|
|
278
|
-
else if (activeItem) {
|
|
279
|
-
const rect = activeItem.elementRect();
|
|
280
|
-
if (rect) {
|
|
281
|
-
const style = window.getComputedStyle(activeItem.element());
|
|
282
|
-
draggedItemSize =
|
|
283
|
-
this._orientation() === 'vertical'
|
|
284
|
-
? rect.height + parseFloat(style.marginTop) + parseFloat(style.marginBottom)
|
|
285
|
-
: rect.width + parseFloat(style.marginLeft) + parseFloat(style.marginRight);
|
|
286
|
-
}
|
|
285
|
+
const placeholderIndex = this._placeholderIndex();
|
|
286
|
+
// Check if this is an "onto-node" drop list (no items, just a drop target)
|
|
287
|
+
const isOntoNodeList = this.element.dataset['dropType'] === 'onto-node';
|
|
288
|
+
if (!isIntraListDrag && activeItem && !isOntoNodeList && this._cachedItems().length > 0) {
|
|
289
|
+
// --- INTER-LIST DRAG: Use DOM placeholder for reorder lists with items ---
|
|
290
|
+
this._updatePlaceholderElement(activeItem, placeholderIndex);
|
|
287
291
|
}
|
|
288
|
-
|
|
289
|
-
// ---
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
292
|
+
else {
|
|
293
|
+
// --- INTRA-LIST DRAG: Use transforms (works well for same-list reordering) ---
|
|
294
|
+
this._removePlaceholderElement();
|
|
295
|
+
const getItemSpace = (itemData) => this._orientation() === 'vertical'
|
|
296
|
+
? itemData.height + itemData.margins.top + itemData.margins.bottom
|
|
297
|
+
: itemData.width + itemData.margins.left + itemData.margins.right;
|
|
298
|
+
const draggedItemSize = isIntraListDrag ? getItemSpace(this._cachedItems()[originalIndex]) : 0;
|
|
299
|
+
this._cachedItems().forEach((data, index) => {
|
|
300
|
+
if (data.item.dragDisabled()) {
|
|
301
|
+
this._renderer.removeStyle(data.element, 'transform');
|
|
302
|
+
return;
|
|
303
|
+
}
|
|
304
|
+
const transform = this._calculateTransform(index, originalIndex, draggedItemSize, getItemSpace);
|
|
305
|
+
this._renderer.setStyle(data.element, 'transform', transform ? `${this._orientation() === 'vertical' ? 'translateY' : 'translateX'}(${transform}px)` : '');
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
/** Creates or moves the placeholder element for inter-list drags */
|
|
310
|
+
_updatePlaceholderElement(activeItem, targetIndex) {
|
|
311
|
+
const rect = activeItem.elementRect();
|
|
312
|
+
if (!rect)
|
|
313
|
+
return;
|
|
314
|
+
// Create placeholder as a clone of the dragged element
|
|
315
|
+
if (!this._placeholderElement) {
|
|
316
|
+
// Clone the entire dragged element
|
|
317
|
+
const sourceElement = activeItem.element();
|
|
318
|
+
this._placeholderElement = sourceElement.cloneNode(true);
|
|
319
|
+
// Mark it as a placeholder
|
|
320
|
+
this._renderer.addClass(this._placeholderElement, 'ax-drop-placeholder');
|
|
321
|
+
this._renderer.addClass(this._placeholderElement, 'ax-drag-placeholder');
|
|
322
|
+
// Prevent interaction with cloned content
|
|
323
|
+
this._renderer.setStyle(this._placeholderElement, 'pointerEvents', 'none');
|
|
324
|
+
// Add faded styling to indicate it's a placeholder
|
|
325
|
+
this._renderer.setStyle(this._placeholderElement, 'opacity', '0.4');
|
|
326
|
+
this._renderer.setStyle(this._placeholderElement, 'transition', 'all 200ms ease');
|
|
327
|
+
}
|
|
328
|
+
// Insert/move placeholder at target index
|
|
329
|
+
const items = this._cachedItems();
|
|
330
|
+
if (targetIndex >= 0 && targetIndex < items.length) {
|
|
331
|
+
const targetItem = items[targetIndex];
|
|
332
|
+
if (targetItem && targetItem.element) {
|
|
333
|
+
this._renderer.insertBefore(this.element, this._placeholderElement, targetItem.element);
|
|
293
334
|
}
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
335
|
+
else {
|
|
336
|
+
// Fallback: append at end if target item invalid
|
|
337
|
+
this._renderer.appendChild(this.element, this._placeholderElement);
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
else {
|
|
341
|
+
// Insert at end
|
|
342
|
+
this._renderer.appendChild(this.element, this._placeholderElement);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
/** Removes the placeholder element if it exists */
|
|
346
|
+
_removePlaceholderElement() {
|
|
347
|
+
if (this._placeholderElement) {
|
|
348
|
+
this._renderer.removeChild(this.element, this._placeholderElement);
|
|
349
|
+
this._placeholderElement = null;
|
|
350
|
+
}
|
|
297
351
|
}
|
|
298
352
|
/**
|
|
299
353
|
* Calculates the required transform in pixels for a single item.
|
|
@@ -359,6 +413,7 @@ class AXDropListDirective extends NXComponent {
|
|
|
359
413
|
/** Removes all `transform` styles from the items in this list. */
|
|
360
414
|
_resetAllTransforms() {
|
|
361
415
|
this._cachedItems().forEach((data) => this._renderer.setStyle(data.element, 'transform', ''));
|
|
416
|
+
this._removePlaceholderElement(); // Clean up inter-list placeholder
|
|
362
417
|
}
|
|
363
418
|
/** Resets the internal state of the directive to its initial values. */
|
|
364
419
|
resetSortState() {
|
|
@@ -369,17 +424,21 @@ class AXDropListDirective extends NXComponent {
|
|
|
369
424
|
this._listInitialRect.set(null);
|
|
370
425
|
this._listGap.set(0);
|
|
371
426
|
}
|
|
372
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
373
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "20.3.
|
|
427
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXDropListDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
428
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "20.3.15", type: AXDropListDirective, isStandalone: true, selector: "[axDropList]", inputs: { axDropList: { classPropertyName: "axDropList", publicName: "axDropList", isSignal: true, isRequired: false, transformFunction: null }, sortingDisabled: { classPropertyName: "sortingDisabled", publicName: "sortingDisabled", isSignal: true, isRequired: false, transformFunction: null }, dropListGroup: { classPropertyName: "dropListGroup", publicName: "dropListGroup", isSignal: true, isRequired: false, transformFunction: null }, dropListOrientation: { classPropertyName: "dropListOrientation", publicName: "dropListOrientation", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dropListDropped: "dropListDropped" }, queries: [{ propertyName: "_draggableItems", predicate: AXDragDirective, isSignal: true }], exportAs: ["axDropList"], usesInheritance: true, ngImport: i0 }); }
|
|
374
429
|
}
|
|
375
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
430
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXDropListDirective, decorators: [{
|
|
376
431
|
type: Directive,
|
|
377
432
|
args: [{
|
|
378
433
|
selector: '[axDropList]',
|
|
379
434
|
exportAs: 'axDropList',
|
|
380
435
|
}]
|
|
381
|
-
}] });
|
|
436
|
+
}], propDecorators: { axDropList: [{ type: i0.Input, args: [{ isSignal: true, alias: "axDropList", required: false }] }], sortingDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "sortingDisabled", required: false }] }], dropListGroup: [{ type: i0.Input, args: [{ isSignal: true, alias: "dropListGroup", required: false }] }], dropListOrientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "dropListOrientation", required: false }] }], dropListDropped: [{ type: i0.Output, args: ["dropListDropped"] }], _draggableItems: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => AXDragDirective), { ...{ descendants: false }, isSignal: true }] }] } });
|
|
382
437
|
|
|
438
|
+
// Zone detection constants for nested drop lists (tree nodes)
|
|
439
|
+
const ZONE_TOP_THRESHOLD = 0.3; // Top 30% triggers reorder BEFORE
|
|
440
|
+
const ZONE_BOTTOM_THRESHOLD = 0.7; // Bottom 30% triggers reorder AFTER
|
|
441
|
+
// Middle 40% (between thresholds) triggers drop INTO
|
|
383
442
|
class AXDragDirective {
|
|
384
443
|
constructor() {
|
|
385
444
|
this.zone = inject(NgZone);
|
|
@@ -390,6 +449,7 @@ class AXDragDirective {
|
|
|
390
449
|
this.viewContainerRef = inject(ViewContainerRef);
|
|
391
450
|
this.el = inject(ElementRef);
|
|
392
451
|
this.handleDirective = contentChild(AXDragHandleDirective, ...(ngDevMode ? [{ debugName: "handleDirective" }] : []));
|
|
452
|
+
this.axDrag = input(true, ...(ngDevMode ? [{ debugName: "axDrag", transform: (value) => value === '' || value === true }] : [{ transform: (value) => value === '' || value === true }]));
|
|
393
453
|
this.dragData = input(...(ngDevMode ? [undefined, { debugName: "dragData" }] : []));
|
|
394
454
|
this.dragDisabled = input(false, ...(ngDevMode ? [{ debugName: "dragDisabled" }] : []));
|
|
395
455
|
this.dragTransition = input(true, ...(ngDevMode ? [{ debugName: "dragTransition" }] : []));
|
|
@@ -412,13 +472,14 @@ class AXDragDirective {
|
|
|
412
472
|
this.dragStartTime = signal(0, ...(ngDevMode ? [{ debugName: "dragStartTime" }] : []));
|
|
413
473
|
this.isDragging = signal(false, ...(ngDevMode ? [{ debugName: "isDragging" }] : []));
|
|
414
474
|
this.elementOpacity = signal('1', ...(ngDevMode ? [{ debugName: "elementOpacity" }] : []));
|
|
415
|
-
this.isDelayStarted = signal(false, ...(ngDevMode ? [{ debugName: "isDelayStarted" }] : []));
|
|
416
475
|
this.movedAfterDelay = signal(false, ...(ngDevMode ? [{ debugName: "movedAfterDelay" }] : []));
|
|
417
476
|
this.activePointerId = signal(null, ...(ngDevMode ? [{ debugName: "activePointerId" }] : []));
|
|
418
477
|
this.prevDropZone = signal(null, ...(ngDevMode ? [{ debugName: "prevDropZone" }] : []));
|
|
419
478
|
this.dragStartOffset = signal({ x: 0, y: 0 }, ...(ngDevMode ? [{ debugName: "dragStartOffset" }] : []));
|
|
420
479
|
this.clonePointerOffset = signal({ x: 0, y: 0 }, ...(ngDevMode ? [{ debugName: "clonePointerOffset" }] : []));
|
|
421
480
|
this.clonedElementViewRef = signal(null, ...(ngDevMode ? [{ debugName: "clonedElementViewRef" }] : []));
|
|
481
|
+
this.rafId = null;
|
|
482
|
+
this.pendingPointerEvent = null;
|
|
422
483
|
this._parentDropList = inject(AXDropListDirective, { optional: true, skipSelf: true, host: false });
|
|
423
484
|
this._currentDropList = signal(null, ...(ngDevMode ? [{ debugName: "_currentDropList" }] : []));
|
|
424
485
|
this.createCloneElement = computed(() => this.dragElementClone() || !!this._parentDropList, ...(ngDevMode ? [{ debugName: "createCloneElement" }] : []));
|
|
@@ -449,6 +510,7 @@ class AXDragDirective {
|
|
|
449
510
|
this.boundHandlePointerUp = this.handlePointerUp.bind(this);
|
|
450
511
|
this.boundHandlePointerDown = this.handlePointerDown.bind(this);
|
|
451
512
|
this.boundHandlePointerMove = this.handlePointerMove.bind(this);
|
|
513
|
+
this.listenersAttached = signal(null, ...(ngDevMode ? [{ debugName: "listenersAttached" }] : []));
|
|
452
514
|
this.#dragDisabledEffect = effect(() => {
|
|
453
515
|
if (this.dragCursor() === 'none') {
|
|
454
516
|
return;
|
|
@@ -462,14 +524,30 @@ class AXDragDirective {
|
|
|
462
524
|
this.renderer.removeStyle(this.handle(), 'touch-action');
|
|
463
525
|
}
|
|
464
526
|
}, ...(ngDevMode ? [{ debugName: "#dragDisabledEffect" }] : []));
|
|
527
|
+
this.#handleChangeEffect = effect(() => {
|
|
528
|
+
if (!isPlatformBrowser(this.platformId))
|
|
529
|
+
return;
|
|
530
|
+
const currentHandle = this.handle();
|
|
531
|
+
const previousHandle = this.listenersAttached();
|
|
532
|
+
// Remove listeners from previous handle if it changed
|
|
533
|
+
if (previousHandle && previousHandle !== currentHandle) {
|
|
534
|
+
previousHandle.removeEventListener('dblclick', this.boundHandleDblClick);
|
|
535
|
+
previousHandle.removeEventListener('pointerdown', this.boundHandlePointerDown);
|
|
536
|
+
}
|
|
537
|
+
// Attach listeners to new handle
|
|
538
|
+
if (currentHandle && currentHandle !== previousHandle) {
|
|
539
|
+
this.zone.runOutsideAngular(() => {
|
|
540
|
+
currentHandle.addEventListener('dblclick', this.boundHandleDblClick);
|
|
541
|
+
currentHandle.addEventListener('pointerdown', this.boundHandlePointerDown, { passive: false });
|
|
542
|
+
});
|
|
543
|
+
this.listenersAttached.set(currentHandle);
|
|
544
|
+
}
|
|
545
|
+
}, ...(ngDevMode ? [{ debugName: "#handleChangeEffect" }] : []));
|
|
465
546
|
}
|
|
466
547
|
#dragDisabledEffect;
|
|
548
|
+
#handleChangeEffect;
|
|
467
549
|
ngOnInit() {
|
|
468
550
|
if (isPlatformBrowser(this.platformId)) {
|
|
469
|
-
this.zone.runOutsideAngular(() => {
|
|
470
|
-
this.handle().addEventListener('dblclick', this.boundHandleDblClick);
|
|
471
|
-
this.handle().addEventListener('pointerdown', this.boundHandlePointerDown, { passive: false });
|
|
472
|
-
});
|
|
473
551
|
if (this._parentDropList) {
|
|
474
552
|
this.setElementTransition(this.element());
|
|
475
553
|
}
|
|
@@ -479,8 +557,11 @@ class AXDragDirective {
|
|
|
479
557
|
}
|
|
480
558
|
ngOnDestroy() {
|
|
481
559
|
if (isPlatformBrowser(this.platformId)) {
|
|
482
|
-
|
|
483
|
-
|
|
560
|
+
const handle = this.listenersAttached();
|
|
561
|
+
if (handle) {
|
|
562
|
+
handle.removeEventListener('dblclick', this.boundHandleDblClick);
|
|
563
|
+
handle.removeEventListener('pointerdown', this.boundHandlePointerDown);
|
|
564
|
+
}
|
|
484
565
|
this.removeDocumentListeners();
|
|
485
566
|
if (this.createCloneElement()) {
|
|
486
567
|
this.removeCloneElement();
|
|
@@ -501,7 +582,7 @@ class AXDragDirective {
|
|
|
501
582
|
handlePointerDown(e) {
|
|
502
583
|
if (!isPlatformBrowser(this.platformId))
|
|
503
584
|
return;
|
|
504
|
-
if (this.dragDisabled() || e.button !== 0 || this._parentDropList?.sortingDisabled())
|
|
585
|
+
if (!this.axDrag() || this.dragDisabled() || e.button !== 0 || this._parentDropList?.sortingDisabled())
|
|
505
586
|
return;
|
|
506
587
|
this.isDragging.set(true);
|
|
507
588
|
this.movedAfterDelay.set(false);
|
|
@@ -523,42 +604,54 @@ class AXDragDirective {
|
|
|
523
604
|
this.setPosition(0, 0);
|
|
524
605
|
}
|
|
525
606
|
handlePointerMove(e) {
|
|
526
|
-
if (this.
|
|
527
|
-
!this.isDragging() ||
|
|
528
|
-
this.isDelayStarted() ||
|
|
529
|
-
!isPlatformBrowser(this.platformId) ||
|
|
530
|
-
e.pointerId !== this.activePointerId()) {
|
|
607
|
+
if (!this.isDragging() || !isPlatformBrowser(this.platformId) || e.pointerId !== this.activePointerId()) {
|
|
531
608
|
return;
|
|
532
609
|
}
|
|
533
610
|
e.preventDefault();
|
|
534
611
|
if (!this.isMoving()) {
|
|
535
612
|
const delay = this.dragStartDelay() ?? 0;
|
|
613
|
+
// FIX: Delay logic was inverted
|
|
536
614
|
if (Date.now() - this.dragStartTime() < delay) {
|
|
537
|
-
|
|
538
|
-
return;
|
|
615
|
+
return; // Still waiting for delay
|
|
539
616
|
}
|
|
540
617
|
this.isMoving.set(true);
|
|
541
618
|
this.handle().setPointerCapture(e.pointerId);
|
|
542
619
|
this.startDrag(e);
|
|
543
620
|
}
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
621
|
+
// Run position updates outside Angular zone for better performance
|
|
622
|
+
this.zone.runOutsideAngular(() => {
|
|
623
|
+
if (this.createCloneElement()) {
|
|
624
|
+
const newCloneX = e.clientX - this.clonePointerOffset().x;
|
|
625
|
+
const newCloneY = e.clientY - this.clonePointerOffset().y;
|
|
626
|
+
this.setClonePosition(newCloneX, newCloneY);
|
|
627
|
+
}
|
|
628
|
+
else {
|
|
629
|
+
const newX = e.clientX - this.dragStartOffset().x;
|
|
630
|
+
const newY = e.clientY - this.dragStartOffset().y;
|
|
631
|
+
this.setPosition(newX, newY);
|
|
632
|
+
}
|
|
633
|
+
});
|
|
634
|
+
// Throttle drop list interactions using requestAnimationFrame
|
|
554
635
|
if (this._parentDropList) {
|
|
555
|
-
this.
|
|
636
|
+
this.pendingPointerEvent = e;
|
|
637
|
+
if (this.rafId === null) {
|
|
638
|
+
this.rafId = requestAnimationFrame(() => {
|
|
639
|
+
if (this.pendingPointerEvent) {
|
|
640
|
+
this.handleDropListInteractions(this.pendingPointerEvent);
|
|
641
|
+
this.pendingPointerEvent = null;
|
|
642
|
+
}
|
|
643
|
+
this.rafId = null;
|
|
644
|
+
});
|
|
645
|
+
}
|
|
556
646
|
}
|
|
557
647
|
else {
|
|
558
648
|
this.dropZoneHoverHandler(e);
|
|
559
649
|
}
|
|
560
650
|
}
|
|
561
651
|
startDrag(e) {
|
|
652
|
+
// Add CDK-style classes
|
|
653
|
+
this.renderer.addClass(this.element(), 'ax-dragging');
|
|
654
|
+
this.renderer.addClass(this.element(), 'ax-drag-placeholder');
|
|
562
655
|
if (this._parentDropList) {
|
|
563
656
|
this._currentDropList.set(this._parentDropList);
|
|
564
657
|
this._parentDropList.prepareSort(this);
|
|
@@ -572,7 +665,11 @@ class AXDragDirective {
|
|
|
572
665
|
x: e.clientX - elementRect.left,
|
|
573
666
|
y: e.clientY - elementRect.top,
|
|
574
667
|
});
|
|
575
|
-
this.createCloneElementHandler(this.element());
|
|
668
|
+
const clone = this.createCloneElementHandler(this.element());
|
|
669
|
+
if (clone) {
|
|
670
|
+
this.renderer.addClass(clone, 'ax-drag-preview');
|
|
671
|
+
this.renderer.addClass(clone, 'ax-dragging');
|
|
672
|
+
}
|
|
576
673
|
}
|
|
577
674
|
}
|
|
578
675
|
handlePointerUp(e) {
|
|
@@ -585,6 +682,9 @@ class AXDragDirective {
|
|
|
585
682
|
const wasMoving = this.isMoving();
|
|
586
683
|
this.isMoving.set(false);
|
|
587
684
|
this.isDragging.set(false);
|
|
685
|
+
// Remove CDK-style classes
|
|
686
|
+
this.renderer.removeClass(this.element(), 'ax-dragging');
|
|
687
|
+
this.renderer.removeClass(this.element(), 'ax-drag-placeholder');
|
|
588
688
|
if (!wasMoving) {
|
|
589
689
|
this.activePointerId.set(null);
|
|
590
690
|
this.removeDocumentListeners();
|
|
@@ -610,6 +710,12 @@ class AXDragDirective {
|
|
|
610
710
|
else {
|
|
611
711
|
this.dropZoneDropHandler(e);
|
|
612
712
|
}
|
|
713
|
+
// Cancel any pending RAF callbacks
|
|
714
|
+
if (this.rafId !== null) {
|
|
715
|
+
cancelAnimationFrame(this.rafId);
|
|
716
|
+
this.rafId = null;
|
|
717
|
+
}
|
|
718
|
+
this.pendingPointerEvent = null;
|
|
613
719
|
this.activePointerId.set(null);
|
|
614
720
|
this.removeDocumentListeners();
|
|
615
721
|
this._currentDropList.set(null);
|
|
@@ -633,9 +739,21 @@ class AXDragDirective {
|
|
|
633
739
|
const listUnderPointer = this.getDropListFromPoint(e.clientX, e.clientY);
|
|
634
740
|
const previousList = this._currentDropList();
|
|
635
741
|
let targetList = null;
|
|
636
|
-
|
|
742
|
+
const canDrop = listUnderPointer && this.canDropInList(listUnderPointer);
|
|
743
|
+
if (canDrop) {
|
|
637
744
|
targetList = listUnderPointer;
|
|
638
745
|
}
|
|
746
|
+
// Update cursor based on whether drop is allowed
|
|
747
|
+
if (listUnderPointer) {
|
|
748
|
+
const cloneEl = this.clonedElement();
|
|
749
|
+
const cursor = canDrop ? 'move' : 'not-allowed';
|
|
750
|
+
if (cloneEl) {
|
|
751
|
+
this.renderer.setStyle(cloneEl, 'cursor', cursor);
|
|
752
|
+
}
|
|
753
|
+
else {
|
|
754
|
+
this.renderer.setStyle(this.element(), 'cursor', cursor);
|
|
755
|
+
}
|
|
756
|
+
}
|
|
639
757
|
if (targetList !== previousList) {
|
|
640
758
|
if (previousList) {
|
|
641
759
|
previousList.cancelSortPreview();
|
|
@@ -659,7 +777,40 @@ class AXDragDirective {
|
|
|
659
777
|
}
|
|
660
778
|
const dragGroup = this._parentDropList.dropListGroup();
|
|
661
779
|
const targetGroup = list.dropListGroup();
|
|
662
|
-
|
|
780
|
+
if (!dragGroup || dragGroup !== targetGroup) {
|
|
781
|
+
return false;
|
|
782
|
+
}
|
|
783
|
+
// Check for circular reference (tree-specific validation)
|
|
784
|
+
const draggedNode = this.dragData();
|
|
785
|
+
const targetNodeId = list.element.getAttribute('data-node-id');
|
|
786
|
+
if (draggedNode && this.isCircularReference(targetNodeId, draggedNode)) {
|
|
787
|
+
return false;
|
|
788
|
+
}
|
|
789
|
+
return true;
|
|
790
|
+
}
|
|
791
|
+
isCircularReference(targetNodeId, draggedNode) {
|
|
792
|
+
if (!draggedNode || typeof draggedNode !== 'object') {
|
|
793
|
+
return false;
|
|
794
|
+
}
|
|
795
|
+
const node = draggedNode;
|
|
796
|
+
// Check if dropping into itself
|
|
797
|
+
if (targetNodeId === node.id) {
|
|
798
|
+
return true;
|
|
799
|
+
}
|
|
800
|
+
// Check if targetNodeId is in draggedNode's descendants
|
|
801
|
+
if (!node.children || !Array.isArray(node.children)) {
|
|
802
|
+
return false;
|
|
803
|
+
}
|
|
804
|
+
for (const child of node.children) {
|
|
805
|
+
const childNode = child;
|
|
806
|
+
if (childNode.id === targetNodeId) {
|
|
807
|
+
return true;
|
|
808
|
+
}
|
|
809
|
+
if (this.isCircularReference(targetNodeId, child)) {
|
|
810
|
+
return true;
|
|
811
|
+
}
|
|
812
|
+
}
|
|
813
|
+
return false;
|
|
663
814
|
}
|
|
664
815
|
dropZoneHoverHandler(e) {
|
|
665
816
|
const dropZones = this.getDropZonesFromPoint(e.clientX, e.clientY);
|
|
@@ -695,10 +846,37 @@ class AXDragDirective {
|
|
|
695
846
|
.map((el) => el['__axContext__']);
|
|
696
847
|
}
|
|
697
848
|
getDropListFromPoint(x, y) {
|
|
698
|
-
const
|
|
849
|
+
const dropListElements = this.document
|
|
699
850
|
.elementsFromPoint(x, y)
|
|
700
|
-
.
|
|
701
|
-
|
|
851
|
+
.filter((el) => el instanceof HTMLElement && el.dataset['axDropList'] === 'true');
|
|
852
|
+
if (dropListElements.length === 0) {
|
|
853
|
+
return null;
|
|
854
|
+
}
|
|
855
|
+
// If only one drop list, use it
|
|
856
|
+
if (dropListElements.length === 1) {
|
|
857
|
+
return dropListElements[0]['__axContext__'];
|
|
858
|
+
}
|
|
859
|
+
// Multiple drop lists detected (nested scenario like tree2)
|
|
860
|
+
// Prioritize based on pointer position and drop type
|
|
861
|
+
const ontoNodeList = dropListElements.find((el) => el.dataset['dropType'] === 'onto-node');
|
|
862
|
+
const reorderList = dropListElements.find((el) => el.dataset['dropType'] !== 'onto-node');
|
|
863
|
+
// If no special handling needed, return first
|
|
864
|
+
if (!ontoNodeList || !reorderList) {
|
|
865
|
+
return dropListElements[0]['__axContext__'];
|
|
866
|
+
}
|
|
867
|
+
// Calculate pointer position relative to the "onto-node" element
|
|
868
|
+
const ontoNodeRect = ontoNodeList.getBoundingClientRect();
|
|
869
|
+
const relativeY = y - ontoNodeRect.top;
|
|
870
|
+
const heightRatio = relativeY / ontoNodeRect.height;
|
|
871
|
+
// Smart zone detection based on pointer position
|
|
872
|
+
if (heightRatio < ZONE_TOP_THRESHOLD || heightRatio > ZONE_BOTTOM_THRESHOLD) {
|
|
873
|
+
// Top or bottom zone: reorder (drop BEFORE/AFTER node)
|
|
874
|
+
return reorderList['__axContext__'];
|
|
875
|
+
}
|
|
876
|
+
else {
|
|
877
|
+
// Center zone: onto-node (drop INTO node as child)
|
|
878
|
+
return ontoNodeList['__axContext__'];
|
|
879
|
+
}
|
|
702
880
|
}
|
|
703
881
|
dropZoneValidation(dropZone) {
|
|
704
882
|
if (!dropZone)
|
|
@@ -739,9 +917,14 @@ class AXDragDirective {
|
|
|
739
917
|
constrainedY = this.currentAxis().y;
|
|
740
918
|
if (this.dragLockAxis() === 'y')
|
|
741
919
|
constrainedX = this.currentAxis().x;
|
|
742
|
-
|
|
920
|
+
// Direct DOM manipulation without triggering change detection
|
|
743
921
|
this.renderer.setStyle(this.element(), 'translate', `${constrainedX}px ${constrainedY}px`);
|
|
744
|
-
|
|
922
|
+
// Only update signal and emit if position actually changed significantly (throttle)
|
|
923
|
+
const current = this.currentAxis();
|
|
924
|
+
if (Math.abs(current.x - constrainedX) > 0.5 || Math.abs(current.y - constrainedY) > 0.5) {
|
|
925
|
+
this.currentAxis.set({ x: constrainedX, y: constrainedY });
|
|
926
|
+
this.dragPositionChanged.emit({ x: constrainedX, y: constrainedY });
|
|
927
|
+
}
|
|
745
928
|
}
|
|
746
929
|
setClonePosition(x, y) {
|
|
747
930
|
let constrainedX = x;
|
|
@@ -758,9 +941,14 @@ class AXDragDirective {
|
|
|
758
941
|
constrainedY = this.currentCloneAxis().y;
|
|
759
942
|
if (this.dragLockAxis() === 'y')
|
|
760
943
|
constrainedX = this.currentCloneAxis().x;
|
|
761
|
-
|
|
944
|
+
// Direct DOM manipulation without triggering change detection
|
|
762
945
|
this.renderer.setStyle(cloneEl, 'translate', `${constrainedX}px ${constrainedY}px`);
|
|
763
|
-
|
|
946
|
+
// Only update signal and emit if position actually changed significantly (throttle)
|
|
947
|
+
const current = this.currentCloneAxis();
|
|
948
|
+
if (Math.abs(current.x - constrainedX) > 0.5 || Math.abs(current.y - constrainedY) > 0.5) {
|
|
949
|
+
this.currentCloneAxis.set({ x: constrainedX, y: constrainedY });
|
|
950
|
+
this.dragPositionChanged.emit({ x: constrainedX, y: constrainedY });
|
|
951
|
+
}
|
|
764
952
|
}
|
|
765
953
|
createCloneElementHandler(originalElement) {
|
|
766
954
|
if (!isPlatformBrowser(this.platformId)) {
|
|
@@ -819,8 +1007,8 @@ class AXDragDirective {
|
|
|
819
1007
|
try {
|
|
820
1008
|
target.style.setProperty(propName, computedStyles.getPropertyValue(propName), computedStyles.getPropertyPriority(propName));
|
|
821
1009
|
}
|
|
822
|
-
catch
|
|
823
|
-
|
|
1010
|
+
catch {
|
|
1011
|
+
// Some CSS properties cannot be set directly, skip silently
|
|
824
1012
|
}
|
|
825
1013
|
}
|
|
826
1014
|
}
|
|
@@ -950,6 +1138,9 @@ class AXDragDirective {
|
|
|
950
1138
|
return;
|
|
951
1139
|
const clone = this.clonedElement();
|
|
952
1140
|
if (clone?.parentNode) {
|
|
1141
|
+
// Remove classes before removing element
|
|
1142
|
+
this.renderer.removeClass(clone, 'ax-drag-preview');
|
|
1143
|
+
this.renderer.removeClass(clone, 'ax-dragging');
|
|
953
1144
|
this.renderer.removeChild(clone.parentNode, clone);
|
|
954
1145
|
}
|
|
955
1146
|
this.clonedElement.set(null);
|
|
@@ -977,15 +1168,15 @@ class AXDragDirective {
|
|
|
977
1168
|
this.document.removeEventListener('pointercancel', this.boundHandlePointerUp);
|
|
978
1169
|
});
|
|
979
1170
|
}
|
|
980
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
981
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "20.3.
|
|
1171
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXDragDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1172
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "20.3.15", type: AXDragDirective, isStandalone: true, selector: "[axDrag]", inputs: { axDrag: { classPropertyName: "axDrag", publicName: "axDrag", isSignal: true, isRequired: false, transformFunction: null }, dragData: { classPropertyName: "dragData", publicName: "dragData", isSignal: true, isRequired: false, transformFunction: null }, dragDisabled: { classPropertyName: "dragDisabled", publicName: "dragDisabled", isSignal: true, isRequired: false, transformFunction: null }, dragTransition: { classPropertyName: "dragTransition", publicName: "dragTransition", isSignal: true, isRequired: false, transformFunction: null }, dragElementClone: { classPropertyName: "dragElementClone", publicName: "dragElementClone", isSignal: true, isRequired: false, transformFunction: null }, dropZoneGroup: { classPropertyName: "dropZoneGroup", publicName: "dropZoneGroup", isSignal: true, isRequired: false, transformFunction: null }, dragStartDelay: { classPropertyName: "dragStartDelay", publicName: "dragStartDelay", isSignal: true, isRequired: false, transformFunction: null }, dragResetOnDblClick: { classPropertyName: "dragResetOnDblClick", publicName: "dragResetOnDblClick", isSignal: true, isRequired: false, transformFunction: null }, dragLockAxis: { classPropertyName: "dragLockAxis", publicName: "dragLockAxis", isSignal: true, isRequired: false, transformFunction: null }, dragClonedTemplate: { classPropertyName: "dragClonedTemplate", publicName: "dragClonedTemplate", isSignal: true, isRequired: false, transformFunction: null }, dragCursor: { classPropertyName: "dragCursor", publicName: "dragCursor", isSignal: true, isRequired: false, transformFunction: null }, dragBoundary: { classPropertyName: "dragBoundary", publicName: "dragBoundary", isSignal: true, isRequired: false, transformFunction: null }, dragTransitionDuration: { classPropertyName: "dragTransitionDuration", publicName: "dragTransitionDuration", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dragPositionChanged: "dragPositionChanged" }, queries: [{ propertyName: "handleDirective", first: true, predicate: AXDragHandleDirective, descendants: true, isSignal: true }], ngImport: i0 }); }
|
|
982
1173
|
}
|
|
983
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
1174
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXDragDirective, decorators: [{
|
|
984
1175
|
type: Directive,
|
|
985
1176
|
args: [{
|
|
986
1177
|
selector: '[axDrag]',
|
|
987
1178
|
}]
|
|
988
|
-
}] });
|
|
1179
|
+
}], propDecorators: { handleDirective: [{ type: i0.ContentChild, args: [i0.forwardRef(() => AXDragHandleDirective), { isSignal: true }] }], axDrag: [{ type: i0.Input, args: [{ isSignal: true, alias: "axDrag", required: false }] }], dragData: [{ type: i0.Input, args: [{ isSignal: true, alias: "dragData", required: false }] }], dragDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "dragDisabled", required: false }] }], dragTransition: [{ type: i0.Input, args: [{ isSignal: true, alias: "dragTransition", required: false }] }], dragElementClone: [{ type: i0.Input, args: [{ isSignal: true, alias: "dragElementClone", required: false }] }], dropZoneGroup: [{ type: i0.Input, args: [{ isSignal: true, alias: "dropZoneGroup", required: false }] }], dragStartDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "dragStartDelay", required: false }] }], dragResetOnDblClick: [{ type: i0.Input, args: [{ isSignal: true, alias: "dragResetOnDblClick", required: false }] }], dragLockAxis: [{ type: i0.Input, args: [{ isSignal: true, alias: "dragLockAxis", required: false }] }], dragClonedTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "dragClonedTemplate", required: false }] }], dragCursor: [{ type: i0.Input, args: [{ isSignal: true, alias: "dragCursor", required: false }] }], dragBoundary: [{ type: i0.Input, args: [{ isSignal: true, alias: "dragBoundary", required: false }] }], dragTransitionDuration: [{ type: i0.Input, args: [{ isSignal: true, alias: "dragTransitionDuration", required: false }] }], dragPositionChanged: [{ type: i0.Output, args: ["dragPositionChanged"] }] } });
|
|
989
1180
|
|
|
990
1181
|
class AXDropZoneDirective extends NXComponent {
|
|
991
1182
|
constructor() {
|
|
@@ -999,24 +1190,24 @@ class AXDropZoneDirective extends NXComponent {
|
|
|
999
1190
|
ngOnInit() {
|
|
1000
1191
|
this.element().dataset['axDropZone'] = 'true';
|
|
1001
1192
|
}
|
|
1002
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
1003
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.
|
|
1193
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXDropZoneDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1194
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.15", type: AXDropZoneDirective, isStandalone: true, selector: "[axDropZone]", inputs: { dropZoneGroup: { classPropertyName: "dropZoneGroup", publicName: "dropZoneGroup", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onElementDrop: "onElementDrop", onElementHover: "onElementHover" }, exportAs: ["axDropZone"], usesInheritance: true, ngImport: i0 }); }
|
|
1004
1195
|
}
|
|
1005
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
1196
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXDropZoneDirective, decorators: [{
|
|
1006
1197
|
type: Directive,
|
|
1007
1198
|
args: [{
|
|
1008
1199
|
selector: '[axDropZone]',
|
|
1009
1200
|
exportAs: 'axDropZone',
|
|
1010
1201
|
}]
|
|
1011
|
-
}] });
|
|
1202
|
+
}], propDecorators: { dropZoneGroup: [{ type: i0.Input, args: [{ isSignal: true, alias: "dropZoneGroup", required: false }] }], onElementDrop: [{ type: i0.Output, args: ["onElementDrop"] }], onElementHover: [{ type: i0.Output, args: ["onElementHover"] }] } });
|
|
1012
1203
|
|
|
1013
|
-
const COMPONENT = [AXDragDirective, AXDragHandleDirective, AXDropZoneDirective];
|
|
1204
|
+
const COMPONENT = [AXDragDirective, AXDragHandleDirective, AXDropListDirective, AXDropZoneDirective];
|
|
1014
1205
|
class AXDragDropModule {
|
|
1015
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
1016
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.
|
|
1017
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.
|
|
1206
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXDragDropModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
1207
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: AXDragDropModule, imports: [AXDragDirective, AXDragHandleDirective, AXDropListDirective, AXDropZoneDirective], exports: [AXDragDirective, AXDragHandleDirective, AXDropListDirective, AXDropZoneDirective] }); }
|
|
1208
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXDragDropModule }); }
|
|
1018
1209
|
}
|
|
1019
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
1210
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXDragDropModule, decorators: [{
|
|
1020
1211
|
type: NgModule,
|
|
1021
1212
|
args: [{
|
|
1022
1213
|
imports: [...COMPONENT],
|